Commit a5ae1bfd authored by MyName's avatar MyName
parents 10c340f3 e6040194
......@@ -39,8 +39,9 @@ public class BusinessInfoController extends BaseController
* 项目批量导入
*/
@PostMapping("/upload")
public AjaxResult batchUpload(@RequestParam(value="file",required = false) MultipartFile file, HttpServletRequest request, HttpServletResponse response){
return businessInfoService.batchUpload(file,response);
// public AjaxResult batchUpload(@RequestPart("file") MultipartFile file, HttpServletRequest request, HttpServletResponse response){
public AjaxResult batchUpload(@RequestPart("file") MultipartFile file){
return businessInfoService.batchUpload(file);
}
/**
......
......@@ -105,4 +105,16 @@ public class EnterpriseController {
return enterpriseService.financial(vo);
}
@ApiOperation(value = "城投平台企业查询(openApi)")
@PostMapping(value = "uipSerach")
public TableDataInfo uipSerach(@RequestBody @Valid EnterpriseUipSearchBody vo) throws Exception {
return enterpriseService.uipSerach(vo);
}
@ApiOperation(value = "城投平台企业查询选项(openApi)")
@PostMapping(value = "uipGroupData")
public R financial() throws Exception {
return enterpriseService.uipGroupData();
}
}
......@@ -2,6 +2,7 @@ package com.dsk.web.controller.search.macroMarket;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.OpRegionalEconomicDataV1Dto;
import com.dsk.common.dtos.OpRegionalEconomicDataV1PageDto;
import com.dsk.system.service.EconomicService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......@@ -29,7 +30,7 @@ public class RegionalEconomicDataController {
*@date: 2023/5/18 10:29
*/
@PostMapping("/national/nationalPage")
public AjaxResult nationalPage(@RequestBody OpRegionalEconomicDataV1Dto dto) {
public AjaxResult nationalPage(@RequestBody OpRegionalEconomicDataV1PageDto dto) {
return economicService.nationalPage(dto);
}
......
......@@ -118,6 +118,78 @@ public class BusinessInfo extends BaseEntity
@Excel(name = "项目状态")
private Integer status;
/** 评标办法 */
@Excel(name = "评标办法")
private String evaluationBidWay;
/** 开标时间 */
@Excel(name = "开标时间")
private String bidOpenTime;
/** 开标地点 */
@Excel(name = "开标地点")
private String bidOpenPlace;
/** 保证金缴纳 */
@Excel(name = "保证金缴纳")
private String earnestMoneyPay;
/** 保证金金额 */
@Excel(name = "保证金金额")
private String earnestMoney;
/** 评标委员会 */
@Excel(name = "评标委员会")
private String evaluationBidCouncil;
public String getEvaluationBidWay() {
return evaluationBidWay;
}
public void setEvaluationBidWay(String evaluationBidWay) {
this.evaluationBidWay = evaluationBidWay;
}
public String getBidOpenTime() {
return bidOpenTime;
}
public void setBidOpenTime(String bidOpenTime) {
this.bidOpenTime = bidOpenTime;
}
public String getBidOpenPlace() {
return bidOpenPlace;
}
public void setBidOpenPlace(String bidOpenPlace) {
this.bidOpenPlace = bidOpenPlace;
}
public String getEarnestMoneyPay() {
return earnestMoneyPay;
}
public void setEarnestMoneyPay(String earnestMoneyPay) {
this.earnestMoneyPay = earnestMoneyPay;
}
public String getEarnestMoney() {
return earnestMoney;
}
public void setEarnestMoney(String earnestMoney) {
this.earnestMoney = earnestMoney;
}
public String getEvaluationBidCouncil() {
return evaluationBidCouncil;
}
public void setEvaluationBidCouncil(String evaluationBidCouncil) {
this.evaluationBidCouncil = evaluationBidCouncil;
}
public Integer getStatus() {
return status;
}
......@@ -359,7 +431,12 @@ public class BusinessInfo extends BaseEntity
.append("createTime", getCreateTime())
.append("updateTime", getUpdateTime())
.append("customerId", getCustomerId())
.append("status", getStatus())
.append("evaluationBidWay", getEvaluationBidWay())
.append("bidOpenTime", getBidOpenTime())
.append("bidOpenPlace", getBidOpenPlace())
.append("earnestMoneyPay", getEarnestMoneyPay())
.append("earnestMoney", getEarnestMoney())
.append("evaluationBidCouncil", getEvaluationBidCouncil())
.toString();
}
}
package com.dsk.common.core.domain.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class EnterpriseUipSearchBody extends BasePage {
/**
* 查询关键字
*/
private String keys;
/*
* 1金额倒序,2金额正序,3时间倒序,4时间正序
*/
@NotNull(message = "排序条件不能为空")
private Integer sort;
/**
* 省份
*/
private List<Integer> provinceIds;
/**
* 市份
*/
private List<Integer> cityIds;
/**
* 县
*/
private List<Integer> areaIds;
/**
* 城投业务类型
*/
private List<String> uipBusinessType;
/**
* 主体信用等级
*/
private List<String> bratingSubjectLevel;
/**
* 股东背景
*/
private List<String> shareholderBg;
/**
* 股权关系
*/
private List<String> equityRelationship;
}
package com.dsk.common.dtos;
import com.dsk.common.core.domain.model.BasePage;
import lombok.Data;
/**
......@@ -11,27 +10,40 @@ import lombok.Data;
* @Version
*/
@Data
public class OpRegionalEconomicDataV1Dto extends BasePage {
public class OpRegionalEconomicDataV1Dto {
/**
* id
*/
private Integer id;
/**
* 年份
*/
private Integer year;
/**
* 省
* 省Id
*/
private String provinceId;
private Integer provinceId;
/**
* 市
* 市Id
*/
private String cityId;
private Integer cityId;
/**
* 区Id
*/
private Integer areaId;
/**
*
* 城市类型 1:直辖市
*/
private String areaId;
private Integer cityType;
/**
* 全国宏观经济:1 / 辖区经济:2 / 地区对比:3
* 城市类型 1:直辖市
*/
private Integer type;
private Integer provinceType;
}
package com.dsk.common.dtos;
import com.dsk.common.core.domain.model.BasePage;
import lombok.Data;
import java.util.List;
/**
* @ClassName OpRegionalEconomicDataV1PageDto
* @Description 专项债-项目类别统计
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicDataV1PageDto extends BasePage {
/**
* 年份
*/
private Integer year;
/**
* 省
*/
private List<String> provinceIds;
/**
* 市
*/
private List<String> cityIds;
/**
* 区
*/
private List<String> areaIds;
/**
* 全国宏观经济:1 / 辖区经济:2 / 地区对比:3
*/
private Integer type;
/**
* 排序字段 默认gdp
*/
private String field = "gdp";
/**
* 排序 (降序desc 升序asc)
*/
private String order = "desc";
}
import request from "@/utils/request";
// 获取查询下拉选项
export function getOption() {
return request({
url: '/getInfo',
method: 'get'
})
}
// 获取列表数据
export function getList(data) {
return request({
url: '/getInfo',
method: 'get'
})
}
......@@ -125,7 +125,7 @@ export const constantRoutes = [
path: '/macro/financing/details/:id(\\d+)',
component: () => import('@/views/macro/financing/details'),
name: 'financingDetails',
meta: { title: '区域专项债详情', icon: 'user' }
meta: { title: '区域专项债详情'}
}
]
},
......
......@@ -33,9 +33,9 @@
</el-date-picker>
</template>
<!-- 输入框 -->
<template v-if="form.type==3">
<template v-if="form.type==3">
<div class="cooperate-name">
<el-input v-model="form.value" placeholder="请输入关键词"></el-input>
<el-input v-model="form.value" :placeholder="form.placeholder"></el-input>
<span @click="changeSelect">搜索</span>
</div>
</template>
......
......@@ -15,9 +15,9 @@
<template slot="title">
<span>{{item.title}}</span>
</template>
<el-menu-item :index="index+'-'+idx" v-for="(it, idx) in item.children" :key="idx" @click="handleItem(it)">{{it.title}}</el-menu-item>
<el-menu-item :index="index+'-'+idx" v-for="(it, idx) in item.children" :key="idx" @click="handleItem(it)" :disabled="it.disabled">{{it.title}}</el-menu-item>
</el-submenu>
<el-menu-item :index="index.toString()" @click="handleItem(item)" v-else>{{item.title}}</el-menu-item>
<el-menu-item :index="index.toString()" @click="handleItem(item)" :disabled="item.disabled" v-else>{{item.title}}</el-menu-item>
</template>
</el-menu>
</div>
......@@ -50,13 +50,13 @@ export default {
]},
{title: '财务简析', pathName: 'financial'},
{title: '项目商机', pathName: '', children: [
{title: '土地交易', pathName: ''},
{title: '拟建项目', pathName: ''},
{title: '专项债项目', pathName: ''},
{title: '招标计划', pathName: ''},
{title: '招标公告', pathName: ''},
{title: '标讯Pro', pathName: ''},
{title: '行政许可', pathName: ''}
{title: '土地交易', pathName: 'landtransaction'},
{title: '拟建项目', pathName: 'proposed'},
{title: '专项债项目', pathName: 'bond'},
{title: '招标计划', pathName: 'biddingplan'},
{title: '招标公告', pathName: 'announcement'},
{title: '标讯Pro', pathName: 'tencent'},
{title: '行政许可', pathName: 'administrative'}
]},
{title: '业务往来', pathName: '', children: [
{title: '客户', pathName: ''},
......@@ -80,7 +80,7 @@ export default {
{title: '开庭公告', pathName: 'openacourtsessionNotice'},
{title: '信用中国', pathName: ''}
]},
{title: '商务信息', pathName: 'business'},
// {title: '商务信息', pathName: 'business'},
{title: '招标偏好', pathName: 'preference'},
{title: '合作情况', pathName: 'cooperate'},
{title: '决策链条', pathName: 'decisionMaking'},
......
......@@ -24,6 +24,7 @@
:label="item.label"
:prop="item.prop"
:width="item.width"
:min-width="item.minWidth"
align="left"
:fixed="item.fixed"
:sortable="item.sortable"
......
<!-- 表格组件 -->
<template>
<div class="infoTable-container">
<el-form v-if="Object.keys(obj).length > 0" class="infoTable-form" label-position="left">
<template v-for="(item, index) in list">
<el-form-item :style="item.span?{width: `${100/(24/item.span)}%`}:{}" :label="item.name" :label-width="labelWidth?labelWidth+'px':'130px'" :key="index" :class="[
{ 'infoTable-form-view': item.style },
{ 'infoTable-form-item': !item.style },
{ 'infoTable-form-row': item.rowstyle }
]">
<div>
<template v-if="item.slot === true">
<slot :name="item.prop" :data="obj"></slot>
</template>
<span v-else> {{ obj[item.prop] ?obj[item.prop] !==""?item.formatter?item.formatter(obj[item.prop]):obj[item.prop]:'--' :'--' }}</span>
</div>
</el-form-item>
</template>
</el-form>
<div v-else class="no-data">
<div class="no-data-box" v-if="show">
<img :src="noData" alt="暂时没有找到相关数据" />
<span>暂时没有找到相关数据</span>
</div>
</div>
</div>
</template>
<script>
export default {
name: "InfoTable",
components: {
},
props: {
list: {
type: Array,
default: () => [],
},
obj: {
type: Object,
default: () => { }
},
labelWidth: {
type: Number,
default: null
}
},
data() {
return {
show:false,
// 当前移入单元格内容
noData: require("@/assets/images/detail/noData.png")
};
},
created() {
},
mounted(){
this.show = true;
},
methods: {
},
};
</script>
<style lang="scss" scoped>
.infoTable-container {
.infoTable-form {
display: flex;
flex-wrap: wrap;
border-left: 1px solid #e5e9f5;
border-top: 1px solid #e5e9f5;
border-collapse: collapse;
.infoTable-form-item {
width: 50%;
flex: auto;
margin-bottom: 0px;
border-right: 1px solid #e5e9f5;
border-bottom: 1px solid #e5e9f5;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-size: 12px;
}
.infoTable-form-view {
width: 100%;
flex: auto;
margin-bottom: 0px;
border-right: 1px solid #e5e9f5;
border-bottom: 1px solid #e5e9f5;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-size: 12px;
}
.infoTable-form-row {
width: 33%;
flex: auto;
margin-bottom: 0px;
border-right: 1px solid #e5e9f5;
border-bottom: 1px solid #e5e9f5;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-size: 12px;
}
::v-deep .el-form-item__label {
height: 100%;
background-color: #F0F3FA;
padding: 8px 12px 8px 12px;
font-size: 12px;
font-weight: normal;
color: rgba(35,35,35,0.8);
display: flex;
align-items: center;
line-height: normal;
}
::v-deep .el-form-item__content {
padding-left: 12px;
font-size: 12px;
color: #232323;
}
::v-deep .el-form-item__content {
border-left: 1px solid #e5e9f5;
height: 100%;
display: flex;
align-items: center;
}
::v-deep .el-col {
border-bottom: 1px solid #e5e9f5;
}
}
.no-data {
font-size: 14px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: #999999;
text-shadow: 0px 0px 10px rgba(0, 37, 106, 0.10000000149011612);
max-width: 1200px;
height: 328px;
display: flex;
justify-content: center;
align-items: center;
background: #ffffff;
border-radius: 0px 0px 0px 0px;
opacity: 1;
border: 1px solid #eeeeee;
.no-data-box {
display: flex;
flex-direction: column;
align-items: center;
img {
width: 64px;
height: 79px;
margin-bottom: 16px;
}
}
}
::v-deep .el-form-item__content {
line-height: 22px;
padding: 6px 4px;
}
}
</style>
......@@ -193,6 +193,7 @@ export default {
.financial-header{
background: #FFFFFF;
padding: 24px 16px;
border-radius: 4px;
.header-box {
justify-content: space-between;
flex-wrap: wrap;
......@@ -269,6 +270,7 @@ export default {
background: #FFFFFF;
padding: 24px 16px;
margin-top: 12px;
border-radius: 4px;
.zcqk-list{
margin-top: 4px;
overflow: hidden;
......@@ -335,6 +337,7 @@ export default {
background: #FFFFFF;
padding: 24px 16px;
margin-top: 12px;
border-radius: 4px;
.zwqk-box{
padding-top: 20px;
justify-content: normal;
......
......@@ -7,14 +7,23 @@
</div>
<div class="part-right">
<div id="partBox" v-if="companyId">
<Overview v-if="currentPath.pathName=='overview'" />
<!-- 企业概览 -->
<Overview v-if="currentPath.pathName=='overview'" :company-id="companyId" />
<Businfo v-if="currentPath.pathName=='businfo'" :company-id="companyId" />
<Holderinfo v-if="currentPath.pathName=='holderinfo'" :company-id="companyId" />
<Execuinfo v-if="currentPath.pathName=='execuinfo'" :company-id="companyId" />
<Overseas v-if="currentPath.pathName=='overseas'" :company-id="companyId" />
<Branch v-if="currentPath.pathName=='branch'" :company-id="companyId" />
<Financial v-if="currentPath.pathName=='financial'" :company-id="companyId" />
<Business v-if="currentPath.pathName=='business'" />
<!-- <Business v-if="currentPath.pathName=='business'" /> 商务信息 -->
<!-- 项目商机 -->
<Landtransaction v-if="currentPath.pathName=='landtransaction'" :company-id="companyId" />
<Proposed v-if="currentPath.pathName=='proposed'" :company-id="companyId" />
<Bond v-if="currentPath.pathName=='bond'" :company-id="companyId" />
<Biddingplan v-if="currentPath.pathName=='biddingplan'" :company-id="companyId" />
<Announcement v-if="currentPath.pathName=='announcement'" :company-id="companyId" />
<Tencent v-if="currentPath.pathName=='tencent'" :company-id="companyId" />
<Administrative v-if="currentPath.pathName=='administrative'" :company-id="companyId" />
<!-- 投诚分析 -->
<LandAcquisition v-if="currentPath.pathName=='landAcquisition'" />
<RegionalEconomies v-if="currentPath.pathName=='regionalEconomies'" />
......@@ -53,7 +62,14 @@ import Execuinfo from "./overview/execuinfo" //企业概览-高管信息
import Overseas from "./overview/overseas" //企业概览-对外投资
import Branch from "./overview/branch" //企业概览-分支机构
import Financial from "./financial" //财务简析
import Business from "./business" //商务信息
//import Business from "./business" //商务信息
import Landtransaction from "./opport/landtransaction" //项目商机-土地交易
import Proposed from "./opport/proposed" //项目商机-拟建项目
import Bond from "./opport/bond" //项目商机-专项债项目
import Biddingplan from "./opport/biddingplan" //项目商机-招标计划
import Announcement from "./opport/announcement" //项目商机-招标公告
import Tencent from "./opport/tencent" //项目商机-标讯Pro
import Administrative from "./opport/administrative" //项目商机-行政许可
import LandAcquisition from "./urbanLnvestment/landAcquisition" //投诚分析-城投拿地
import RegionalEconomies from "./urbanLnvestment/regionalEconomies" //投诚分析-区域经济
import SameRegion from "./urbanLnvestment/sameRegion" //投诚分析-同地区城投
......@@ -80,7 +96,14 @@ export default {
Overseas,
Branch,
Financial,
Business,
// Business,
Landtransaction,
Proposed,
Bond,
Biddingplan,
Announcement,
Tencent,
Administrative,
LandAcquisition,
RegionalEconomies,
SameRegion,
......
......@@ -14,6 +14,12 @@ export default {
},
methods: {
// 设置下拉选项数据源
setFormData(fieldName, list) {
this.formData.forEach(item => {
item.fieldName == fieldName ? item.options = list : ''
})
},
formParams(){
let condtion = {}
let reqData = {}
......
<template>
<div class="detail-container">
<head-form
title="行政许可"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
@handle-search="handleSearch"
/>
<tables
:indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="porjectName" slot-scope="scope">
<span :class="[isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.porjectName)?'cell-span':'']" :style="{'-webkit-line-clamp': 5}">
{{ scope.row.porjectName }}
<span v-if="isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.porjectName)" @click="changeShowAll(scope.index, 0)">...<span style="color: #0081FF;">展开</span></span>
</span>
</template>
</tables>
</div>
</template>
<script>
import mixin from '../mixins/mixin'
import { getList } from '@/api/detail/party-a/opport'
export default {
name: 'Administrative',
props: ['companyId'],
mixins: [mixin],
components: {
},
data() {
return {
queryParams: {
companyId: this.companyId,
pageNum: 1,
pageSize: 10
},
forData: [
{label: '许可决定日期', prop: 'use', width: '100'},
{label: '决定文书号', prop: 'type', width: '200'},
{label: '许可编号', prop: 'type', width: '80'},
{label: '决定文书名称', prop: 'type', width: '190'},
{label: '许可内容', prop: 'porjectName', width: '300', slot: true},
{label: '有效期自', prop: 'type', width: '100'},
{label: '有效期至', prop: 'type', width: '100'},
{label: '行政许可类别', prop: 'type', width: '100'},
{label: '许可机关', prop: 'type', width: '180'},
{label: '行政许可机关统一社会信用代码', prop: 'type', width: '200'},
{label: '数据来源单位', prop: 'type', width: '110'},
{label: '数据来源单位统一社会信用代码', prop: 'type', width: '200'},
{label: '来源', prop: 'type', width: '80'}
],
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入关键词查询', options: []},
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
showList:[]
}
},
computed: {
},
created() {
this.handleQuery()
},
methods: {
handleQuery(params) {
this.tableLoading = true
let param = params?params:this.queryParams
getList(param).then((res) => {
this.tableLoading = false
this.tableData = [
{
projectId: '1',
porjectName:'滨州医学院口腔医学大楼铝合金门窗供货及安装滨州医学院口腔医学大楼铝合金门窗供货及安装滨州医学院口腔医学大楼铝合金门窗供货及安装滨州医学院口腔医学大楼铝合金门窗供货及安装滨州医学院口腔医学大楼铝合金门窗供货及安装滨州医学院口腔医学大楼铝合金门窗供货及安装滨州医学院口腔医学大楼铝合金门窗供货及安装滨州医学院口腔医学大楼铝合金门窗供货及安装滨州医学院口腔医学大楼铝合金门窗供货及安装滨州医学院口腔医学大楼铝合金门窗供货及安装2',
use:'城镇住宅用地',
type:'房地产业',
way:'挂牌出让',
state:'重庆',
money:'11234万元',
scale:'222平米',
unit:'江苏省住房和城乡建设厅',
date:'2015-08-06',
}
]
this.tableDataTotal = 100
})
},
changeShowAll(row, column) {
this.showList.push({
row: row,
column: column
})
},
isOverHiddenFlag(data, showList, row, column, value) {
if(value && String(value).length > this.getLenth(data)) {
return !showList.some(item => item.row==row&&item.column==column)
}else {
return false
}
},
getLenth(data) {
return Math.floor(data / 12) * 5
}
}
}
</script>
<style lang="scss" scoped>
.detail-container{
background: #ffffff;
border-radius: 4px;
padding: 16px;
.cell-span {
display: inline-block;
position: relative;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 4;
cursor: pointer;
>span {
display: inline-block;
width: 37px;
position: absolute;
right: 0;
bottom: 0;
background-color: #fff;
z-index: 1;
}
}
}
</style>
<template>
<div class="detail-container">
<head-form
title="招标公告"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<tables
:indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="porjectName" slot-scope="scope">
<router-link to="" tag="a" class="a-link">{{ scope.row.porjectName }}</router-link>
</template>
</tables>
</div>
</template>
<script>
import mixin from '../mixins/mixin'
import {getList, getOption} from '@/api/detail/party-a/opport'
export default {
name: 'Announcement',
props: ['companyId'],
mixins: [mixin],
components: {
},
data() {
return {
queryParams: {
companyId: this.companyId,
pageNum: 1,
pageSize: 10
},
forData: [
{label: '项目名称', prop: 'porjectName', minWidth: '300', slot: true},
{label: '发布日期', prop: 'use', sortable: true, width: '120'},
{label: '预算金额(万元)', prop: 'type', sortable: true, width: '140'},
{label: '项目地区', prop: 'way', width: '120'},
{label: '项目类别', prop: 'state', width: '90'},
{label: '招采单位联系人', prop: 'money', width: '110'},
{label: '招采单位联系方式', prop: 'money', width: '130'},
{label: '代理单位', prop: 'money', width: '170'},
{label: '代理单位联系人', prop: 'money', width: '110'},
{label: '代理单位联系方式', prop: 'money', width: '130'},
{label: '报名截止日期', prop: 'money', width: '100'}
],
formData: [
{ type: 1, fieldName: 'projectStage', value: '', placeholder: '项目地区', options: []},
{ type: 1, fieldName: 'projectType', value: '', placeholder: '项目类型', options: []},
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
showList:[],
}
},
computed: {
},
created() {
this.handleOption()
this.handleQuery()
},
methods: {
handleOption(){
getOption().then((res) => {
this.setFormData('projectStage', [
{ name: '类别1', value: '1' },
{ name: '类别2', value: '2' },
{ name: '类别3', value: '3' },
{ name: '类别4', value: '4' }
])
this.setFormData('projectType', [
{ name: '类别1', value: '1' },
{ name: '类别2', value: '2' },
{ name: '类别3', value: '3' },
{ name: '类别4', value: '4' }
])
})
},
handleQuery(params) {
this.tableLoading = true
let param = params?params:this.queryParams
getList(param).then((res) => {
this.tableLoading = false
this.tableData = [
{
projectId: '1',
porjectName:'滨州医学院口腔医学大楼铝合金门窗供货及安装',
use:'城镇住宅用地',
type:'房地产业',
way:'挂牌出让',
state:'重庆',
money:'11234万元',
scale:'222平米',
unit:'江苏省住房和城乡建设厅',
date:'2015-08-06',
}
]
this.tableDataTotal = 100
})
}
}
}
</script>
<style lang="scss" scoped>
.detail-container{
background: #ffffff;
border-radius: 4px;
padding: 16px;
}
</style>
<template>
<div class="app-container detail-container">
biddingplan
</div>
</template>
<script>
import mixin from '../mixins/mixin'
export default {
name: 'Biddingplan',
props: ['companyId'],
mixins: [mixin],
data() {
return {
}
},
created() {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.detail-container{
margin: 0;
padding: 16px;
background: #FFFFFF;
}
</style>
<template>
<div class="detail-container">
<head-form
title="专项债项目"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<tables
:indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="porjectName" slot-scope="scope">
<router-link to="" tag="a" class="a-link">{{ scope.row.porjectName }}</router-link>
</template>
</tables>
</div>
</template>
<script>
import mixin from '../mixins/mixin'
import { getList } from '@/api/detail/party-a/opport'
export default {
name: 'Bond',
props: ['companyId'],
mixins: [mixin],
components: {
},
data() {
return {
queryParams: {
companyId: this.companyId,
pageNum: 1,
pageSize: 10
},
forData: [
{label: '项目名称', prop: 'porjectName', minWidth: '300', slot: true},
{label: '项目总投资(亿元)', prop: 'use', sortable: true, width: '150'},
{label: '项目资本金(亿元)', prop: 'type', sortable: true, width: '150'},
{label: '项目收益倍数(倍)', prop: 'way', sortable: true, width: '150'},
{label: '专项债金额(亿元)', prop: 'state', sortable: true, width: '150'},
{label: '专项债用作资本金(亿元)', prop: 'money', sortable: true, width: '200'}
],
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: []},
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
showList:[],
}
},
computed: {
},
created() {
this.handleQuery()
},
methods: {
handleQuery(params) {
this.tableLoading = true
let param = params?params:this.queryParams
getList(param).then((res) => {
this.tableLoading = false
this.tableData = [
{
projectId: '1',
porjectName:'滨州医学院口腔医学大楼铝合金门窗供货及安装',
use:'城镇住宅用地',
type:'房地产业',
way:'挂牌出让',
state:'重庆',
money:'11234万元',
scale:'222平米',
unit:'江苏省住房和城乡建设厅',
date:'2015-08-06',
}
]
this.tableDataTotal = 100
})
}
}
}
</script>
<style lang="scss" scoped>
.detail-container{
background: #ffffff;
border-radius: 4px;
padding: 16px;
}
</style>
<template>
<div class="detail-container">
<head-form
title="土地交易"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<tables
:indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="porjectName" slot-scope="scope">
<router-link to="" tag="a" class="a-link">{{ scope.row.porjectName }}</router-link>
</template>
</tables>
</div>
</template>
<script>
import mixin from '../mixins/mixin'
import { getOption, getList } from '@/api/detail/party-a/opport'
export default {
name: 'Landtransaction',
props: ['companyId'],
mixins: [mixin],
components: {
},
data() {
return {
queryParams: {
companyId: this.companyId,
pageNum: 1,
pageSize: 10
},
forData: [
{label: '项目名称', prop: 'porjectName', minWidth: '300', slot: true},
{label: '土地用途', prop: 'use', width: '130'},
{label: '行业分类', prop: 'type', width: '100'},
{label: '供地方式', prop: 'way', width: '100'},
{label: '土地坐落', prop: 'state', width: '130'},
{label: '成交金额(万元)', prop: 'money', sortable: true, width: '140'},
{label: '总面积(㎡)', prop: 'scale', sortable: true, width: '130'},
{label: '批准单位', prop: 'unit', width: '130'},
{label: '签订日期', prop: 'date', width: '130'}
],
formData: [
{ type: 1, fieldName: 'penalizeReasonType', value: '', placeholder: '土地用途', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: []},
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
showList:[],
}
},
computed: {
},
created() {
this.handleOption()
this.handleQuery()
},
methods: {
handleOption(){
getOption().then((res) => {
this.setFormData('penalizeReasonType', [
{ name: '类别1', value: '1' },
{ name: '类别2', value: '2' },
{ name: '类别3', value: '3' },
{ name: '类别4', value: '4' }
])
})
},
handleQuery(params) {
this.tableLoading = true
let param = params?params:this.queryParams
getList(param).then((res) => {
this.tableLoading = false
this.tableData = [
{
projectId: '1',
porjectName:'滨州医学院口腔医学大楼铝合金门窗供货及安装',
use:'城镇住宅用地',
type:'房地产业',
way:'挂牌出让',
state:'重庆',
money:'11234万元',
scale:'222平米',
unit:'江苏省住房和城乡建设厅',
date:'2015-08-06',
}
]
this.tableDataTotal = 100
})
}
}
}
</script>
<style lang="scss" scoped>
.detail-container{
background: #ffffff;
border-radius: 4px;
padding: 16px;
}
</style>
<template>
<div class="detail-container">
<head-form
title="拟建项目"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<tables
:indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="porjectName" slot-scope="scope">
<router-link to="" tag="a" class="a-link">{{ scope.row.porjectName }}</router-link>
</template>
</tables>
</div>
</template>
<script>
import mixin from '../mixins/mixin'
import { getList } from '@/api/detail/party-a/opport'
export default {
name: 'Proposed',
props: ['companyId'],
mixins: [mixin],
components: {
},
data() {
return {
queryParams: {
companyId: this.companyId,
pageNum: 1,
pageSize: 10
},
forData: [
{label: '项目名称', prop: 'porjectName', minWidth: '300', slot: true},
{label: '成交金额(万元)', prop: 'use', sortable: true, width: '150'},
{label: '项目类别', prop: 'type', width: '100'},
{label: '计划开工日期', prop: 'way', sortable: true, width: '130'},
{label: '计划完工日期', prop: 'state', sortable: true, width: '130'},
{label: '审批结果', prop: 'money', width: '100'},
{label: '是否为民间推介项目', prop: 'scale', width: '150'}
],
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: []},
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
showList:[],
}
},
computed: {
},
created() {
this.handleQuery()
},
methods: {
handleQuery(params) {
this.tableLoading = true
let param = params?params:this.queryParams
getList(param).then((res) => {
this.tableLoading = false
this.tableData = [
{
projectId: '1',
porjectName:'滨州医学院口腔医学大楼铝合金门窗供货及安装',
use:'城镇住宅用地',
type:'房地产业',
way:'挂牌出让',
state:'重庆',
money:'11234万元',
scale:'222平米',
unit:'江苏省住房和城乡建设厅',
date:'2015-08-06',
}
]
this.tableDataTotal = 100
})
}
}
}
</script>
<style lang="scss" scoped>
.detail-container{
background: #ffffff;
border-radius: 4px;
padding: 16px;
}
</style>
<template>
<div class="app-container detail-container">
tencent
</div>
</template>
<script>
import mixin from '../mixins/mixin'
export default {
name: 'Tencent',
props: ['companyId'],
mixins: [mixin],
data() {
return {
}
},
created() {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.detail-container{
margin: 0;
padding: 16px;
background: #FFFFFF;
}
</style>
......@@ -18,7 +18,7 @@
@handle-current-change="handleCurrentChange"
>
<template slot="inReason" slot-scope="scope">
<div>{{scope.row.inReason}}</div>
<router-link to="" tag="a" class="a-link">{{scope.row.inReason}}</router-link>
<div class="tags" v-if="scope.row.tag">
<span class="tag style1">{{scope.row.tag}}</span>
<span class="tag style1">{{scope.row.tag}}</span>
......@@ -87,6 +87,7 @@ export default {
margin: 0;
padding: 16px;
background: #FFFFFF;
border-radius: 4px;
.tags{
.tag{
display: inline-block;
......
......@@ -5,66 +5,10 @@
<el-tab-pane label="工商变更" name="second"></el-tab-pane>
</el-tabs>
<div class="businfo-box" v-if="activeName=='first'">
<p>
<label class="label">企业名称</label>
<span>{{forInfo.companyName || '--'}}</span>
<label class="label">社会信用代码</label>
<span>{{forInfo.companyName || '--'}}</span>
</p>
<p>
<label class="label">法定代表人</label>
<span>{{forInfo.companyName || '--'}}</span>
<label class="label">登记状态</label>
<span>{{forInfo.companyName || '--'}}</span>
</p>
<p>
<label class="label">成立日期</label>
<span>{{forInfo.companyName || '--'}}</span>
<label class="label">注册资本</label>
<span>{{forInfo.companyName || '--'}}</span>
</p>
<p>
<label class="label">实缴资本</label>
<span>{{forInfo.companyName || '--'}}</span>
<label class="label">核准日期</label>
<span>{{forInfo.companyName || '--'}}</span>
</p>
<p>
<label class="label">组织机构代码</label>
<span>{{forInfo.companyName || '--'}}</span>
<label class="label">工商注册号</label>
<span>{{forInfo.companyName || '--'}}</span>
</p>
<p>
<label class="label">纳税人识别号</label>
<span>{{forInfo.companyName || '--'}}</span>
<label class="label">企业类型</label>
<span>{{forInfo.companyName || '--'}}</span>
</p>
<p>
<label class="label">营业期限</label>
<span>{{forInfo.companyName || '--'}}</span>
<label class="label">纳税人资质</label>
<span>{{forInfo.companyName || '--'}}</span>
</p>
<p>
<label class="label">所属地区</label>
<span>{{forInfo.companyName || '--'}}</span>
<label class="label">登记机关</label>
<span>{{forInfo.companyName || '--'}}</span>
</p>
<p>
<label class="label">人员规模</label>
<span>{{forInfo.companyName || '--'}}</span>
<label class="label">参保人数</label>
<span>{{forInfo.companyName || '--'}}</span>
</p>
<p>
<label class="label">经营范围</label>
<span class="span-one">{{forInfo.companyName || '--'}}</span>
</p>
</div>
<info-table class="info-tab" :list="defaultList" :obj="forInfo" :labelWidth="labelWidth" v-if="activeName=='first'">
</info-table>
<tables
:tableLoading="tableLoading"
:tableData="tableData"
......@@ -78,9 +22,13 @@
<script>
import mixin from '../mixins/mixin'
import InfoTable from '../component/infoTable'
export default {
name: 'Businfo',
props: ['companyId'],
components: {
InfoTable
},
mixins: [mixin],
data() {
return {
......@@ -90,7 +38,29 @@ export default {
pageNum: 1,
pageSize: 10
},
forInfo: {},
labelWidth: 250,
forInfo: {projectType: 'aaa', projectPurposes: '222', projectInvestmentAmounts: '222'},
defaultList: [
{ name: '企业名称', prop: 'projectTypes' },
{ name: '社会信用代码', prop: 'projectPurposes' },
{ name: '法定代表人', prop: 'projectInvestmentAmounts' },
{ name: '登记状态', prop: 'projectInvestmentAmounts' },
{ name: '成立日期', prop: 'projectInvestmentAmounts' },
{ name: '注册资本', prop: 'projectInvestmentAmounts' },
{ name: '实缴资本', prop: 'projectInvestmentAmounts' },
{ name: '核准日期', prop: 'projectInvestmentAmounts' },
{ name: '组织机构代码', prop: 'projectInvestmentAmounts' },
{ name: '工商注册号', prop: 'projectInvestmentAmounts' },
{ name: '纳税人识别号', prop: 'projectInvestmentAmounts' },
{ name: '企业类型', prop: 'projectInvestmentAmounts' },
{ name: '营业期限', prop: 'projectInvestmentAmounts' },
{ name: '纳税人资质', prop: 'projectInvestmentAmounts' },
{ name: '所属地区', prop: 'projectInvestmentAmounts' },
{ name: '登记机关', prop: 'projectInvestmentAmounts' },
{ name: '人员规模', prop: 'projectInvestmentAmounts' },
{ name: '参保人数', prop: 'projectInvestmentAmounts' },
{ name: '经营范围', prop: 'projectInvestmentAmounts', style: true }
],
forData: [
{label: '变更日期', prop: 'inReason', width: '90', slot: true},
{label: '变更事项', prop: 'inDate'},
......@@ -129,6 +99,7 @@ export default {
margin: 0;
padding: 16px;
background: #FFFFFF;
border-radius: 4px;
.detail-tab{
margin: 0 0 0 -16px;
::v-deep .el-tabs__nav-wrap::after{
......@@ -144,35 +115,5 @@ export default {
}
}
}
.businfo-box {
border-top: 1px solid #E6E9F0;
p {
display: flex;
align-items: center;
margin: 0;
border-left: 1px solid #E6E9F0;
border-bottom: 1px solid #E6E9F0;
.label {
width: 10%;
font-weight: 400;
line-height: 40px;
font-size: 12px;
height: 40px;
background: #F0F3FA;
padding-left: 12px;
}
span {
width: 40%;
color: #000;
height: 40px;
line-height: 40px;
padding-left: 12px;
font-size: 12px;
}
.span-one {
width: 90%;
}
}
}
}
</style>
......@@ -231,6 +231,7 @@ export default {
padding: 24px 16px;
background: #FFFFFF;
overflow: hidden;
border-radius: 4px;
.zbph-item{
justify-content: space-around;
padding-top: 26px;
......@@ -296,6 +297,7 @@ export default {
width: calc(50% - 8px);
padding: 24px 16px;
background: #FFFFFF;
border-radius: 4px;
.table-item{
margin-top:15px;
.ywwl-ico{
......
......@@ -178,6 +178,7 @@ export default {
margin: 0;
padding: 24px 16px;
background: #FFFFFF;
border-radius: 4px;
.selfTab{
margin: 24px 0 0 -12px;
::v-deep .el-tabs__nav-wrap::after{
......
......@@ -540,6 +540,7 @@ export default {
margin: 0;
padding: 24px 16px;
background: #FFFFFF;
border-radius: 4px;
.company-swiper{
position: relative;
.swiper-info{
......
......@@ -74,6 +74,7 @@ export default {
margin: 0;
padding: 24px 16px;
background: #FFFFFF;
border-radius: 4px;
.part-swiper{
position: relative;
margin-top: 16px;
......
......@@ -92,6 +92,7 @@ export default {
margin: 0;
padding: 24px 16px;
background: #FFFFFF;
border-radius: 4px;
.selfTab{
margin: 24px 0 0 -12px;
::v-deep .el-tabs__nav-wrap::after{
......
......@@ -151,6 +151,7 @@ export default {
margin: 0;
padding: 24px 16px;
background: #FFFFFF;
border-radius: 4px;
.clue-box{
width: 100%;
justify-content: space-between;
......
......@@ -49,6 +49,7 @@ export default {
margin: 0;
padding: 24px 16px;
background: #FFFFFF;
border-radius: 4px;
.table-item{
margin-top: 16px;
::v-deep .el-table--border .el-table__cell{
......
......@@ -60,6 +60,7 @@ export default {
padding: 24px 16px;
background: #FFFFFF;
overflow: hidden;
border-radius: 4px;
.common-title{
margin-bottom: 10px;
}
......
......@@ -65,5 +65,6 @@ export default {
margin: 0;
padding: 16px;
background: #FFFFFF;
border-radius: 4px;
}
</style>
......@@ -20,7 +20,7 @@
@handle-current-change="handleCurrentChange"
>
<template slot="inReason" slot-scope="scope">
<div>{{scope.row.inReason}}</div>
<router-link to="" tag="a" class="a-link">{{scope.row.inReason}}</router-link>
<div class="tags" v-if="scope.row.tag">
<span class="tag style1">{{scope.row.tag}}</span>
<span class="tag style1">{{scope.row.tag}}</span>
......@@ -88,6 +88,7 @@ export default {
margin: 0;
padding: 16px;
background: #FFFFFF;
border-radius: 4px;
.detail-tab{
margin: -34px 0 0 -16px;
::v-deep .el-tabs__nav-wrap::after{
......
......@@ -30,7 +30,7 @@
</el-popover></div>
</template>
<template slot="inReason" slot-scope="scope">
<div>{{scope.row.inReason}}</div>
<router-link to="" tag="a" class="a-link">{{scope.row.inReason}}</router-link>
<div class="tags" v-if="scope.row.tag">
<span class="tag style1">{{scope.row.tag}}</span>
<span class="tag style1">{{scope.row.tag}}</span>
......@@ -111,6 +111,7 @@ export default {
margin: 0;
padding: 16px;
background: #FFFFFF;
border-radius: 4px;
.tab-header{
img{
margin-bottom: -3px;
......
This diff is collapsed.
<template>
<div class="login">
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
<h3 class="title">若依后台管理系统</h3>
<h3 class="title"><img src="../assets/images/title_icon.png"/>欢迎登录系统</h3>
<el-form-item prop="username">
<el-input
v-model="loginForm.username"
type="text"
auto-complete="off"
placeholder="账号"
placeholder="请输入登录账号"
>
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
<img class="img" slot="prefix" src="../assets/images/user.png"/>
</el-input>
</el-form-item>
<el-form-item prop="password">
......@@ -17,33 +17,33 @@
v-model="loginForm.password"
type="password"
auto-complete="off"
placeholder="密码"
placeholder="请输入账号密码"
@keyup.enter.native="handleLogin"
>
<svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
<img class="img" slot="prefix" src="../assets/images/password.png"/>
</el-input>
</el-form-item>
<el-form-item prop="code" v-if="captchaEnabled">
<el-input
v-model="loginForm.code"
auto-complete="off"
placeholder="验证码"
style="width: 63%"
placeholder="请输入验证码"
style="width: 56%;float: left;"
@keyup.enter.native="handleLogin"
>
<svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
<img class="img" slot="prefix" src="../assets/images/validCode.png"/>
</el-input>
<div class="login-code">
<img :src="codeUrl" @click="getCode" class="login-code-img"/>
</div>
</el-form-item>
<el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox>
<el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 48px;">记住密码</el-checkbox>
<el-form-item style="width:100%;">
<el-button
:loading="loading"
size="medium"
type="primary"
style="width:100%;"
style="width:100%;height: 48px;border-radius: 4px;font-size: 16px;"
@click.native.prevent="handleLogin"
>
<span v-if="!loading">登 录</span>
......@@ -54,10 +54,6 @@
</div>
</el-form-item>
</el-form>
<!-- 底部 -->
<div class="el-login-footer">
<span>Copyright © 2018-2023 ruoyi.vip All Rights Reserved.</span>
</div>
</div>
</template>
......@@ -161,30 +157,53 @@ export default {
justify-content: center;
align-items: center;
height: 100%;
background-image: url("../assets/images/login_background.jpg");
background-image: url("../assets/images/login_bg.png");
background-size: cover;
}
.title {
margin: 0px auto 30px auto;
text-align: center;
color: #707070;
padding: 46px 0 32px 48px;
border-bottom: 1px solid #F0F0F0;
font-size: 22px;
color: #232323;
margin: 0 0 32px 0;
img{
width: 17px;
height: 17px;
margin-bottom: 3px;
}
}
.login-form {
border-radius: 6px;
background: #ffffff;
width: 400px;
padding: 25px 25px 5px 25px;
width: 420px;
/*padding: 25px 25px 5px 25px;*/
.el-form-item{
padding: 0 48px;
margin-bottom:24px;
}
.el-input {
height: 38px;
width: 324px;
height: 48px;
background: #F2F4F9;
input {
height: 38px;
height: 48px;
background: #F2F4F9;
font-size: 14px;
}
.el-input__inner{
padding-left: 73px;
}
}
.el-input__prefix{
border-right: 1px solid #D8D8D8;
height: 24px;
margin: 12px 0;
}
.input-icon {
height: 39px;
width: 14px;
margin-left: 2px;
.img {
height: 24px;
width: 24px;
margin: 0 14px 0 12px;
}
}
.login-tip {
......@@ -195,7 +214,8 @@ export default {
.login-code {
width: 33%;
height: 38px;
float: right;
float: left;
margin-left: 16px;
img {
cursor: pointer;
vertical-align: middle;
......@@ -214,6 +234,6 @@ export default {
letter-spacing: 1px;
}
.login-code-img {
height: 38px;
height: 48px;
}
</style>
......@@ -164,16 +164,30 @@ export default {
padding: 16px;
.search{
::v-deep .el-cascader{
width: 130px;
width: 180px;
margin-right: 12px;
height: 32px;
.el-input{
width: 100%;
height: 32px;
.el-input__inner{
height: 32px !important;
}
}
.el-cascader__tags{
flex-wrap: inherit;
.el-tag{
max-width: 100px;
margin: 5px 0 2px 6px;
}
}
}
::v-deep .el-input{
width: 250px;
height: 32px;
.el-input__inner{
height: 32px;
}
.el-input-group__append{
width: 59px;
background: #F5F5F5;
......
......@@ -268,6 +268,14 @@
.el-form{
margin-left: 24px;
}
::v-deep .el-cascader{
.el-cascader__tags{
flex-wrap: inherit;
.el-tag{
max-width: 130px;
}
}
}
}
}
.content{
......
......@@ -139,7 +139,7 @@ export default {
},
],
glData:['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],
glData1:[103,156,132,186,203,143,189,301,211,195,132,176],
glData1:[503,156,132,186,203,143,189,301,211,195,132,176],
tableData1:[
{
area:'1月',
......@@ -263,6 +263,7 @@ export default {
},
initChart1() {
let myChart = echarts.init(document.getElementById("gl-echarts"))
let dataList=this.glData1;
let option = {
tooltip: {
trigger: 'axis', //坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用
......@@ -287,17 +288,41 @@ export default {
series: [
{
data: this.glData1,
markPoint:{
data:[
{type:'max',name:'最大值'},
]
},
// markPoint:{
// data:[
// {type:'max',name:'最大值'},
// {type:'min',name:'最小值'},
// ]
// },
type: 'bar',
barWidth: 20,
itemStyle: {
normal: {
barBorderRadius: [4, 4, 0, 0],
color: '#2ECFCF',
// color: '#2ECFCF',
color: function (params) {
var colorList = [] //定义一个存储颜色的数组
//更改前二位柱形颜色
//定义一个变量 保存柱形图数据 因为sort方法排序会改变原数组 使用JSON方法深拷贝 将原数值暂存
let companyValue1 = JSON.parse(JSON.stringify(dataList))
let arr = dataList.sort((a, b) => {
return b - a
})
//将原数组数据赋值回去 保持数据不变
dataList = JSON.parse(JSON.stringify(companyValue1))
//遍历数据 将原数组和排序后的数组比较
dataList.map(i => {
if (i == arr[0]) {
colorList.push('#F39F35')
} else if (i == arr[1]) {
colorList.push('#6675A5')
}else{
colorList.push('#2ECFCF')
}
})
//返回一个存储着颜色的数组根据数据index顺序渲染到页面
return colorList[params.dataIndex]
}
},
}
}
......
......@@ -107,13 +107,13 @@ public class EnterpriseProjectService {
public TableDataInfo bidPlanPage(Object body) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBodyLocal("/operate/enterpriseProject/bidPlanPage", BeanUtil.beanToMap(body, false, false));
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseProject/bidPlanPage", BeanUtil.beanToMap(body, false, false));
return dskOpenApiUtil.responsePage(map);
}
public R bidPlanDetail(Object body) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBodyLocal("/operate/enterpriseProject/bidPlanDetail", BeanUtil.beanToMap(body, false, false));
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseProject/bidPlanDetail", BeanUtil.beanToMap(body, false, false));
Map data = MapUtils.getMap(map, "data", null);
String contentId = MapUtils.getString(data, "contentId");
if (ObjectUtil.isEmpty(contentId)) {
......
......@@ -2,16 +2,24 @@ package com.dsk.system.dskService;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.json.JSONUtil;
import com.dsk.acc.openapi.client.util.CommonUtils;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.domain.model.*;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.system.domain.customer.vo.CustomerStatusListVo;
import com.dsk.system.service.ICustomerService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
......@@ -29,6 +37,9 @@ public class EnterpriseService {
@Autowired
private DskOpenApiUtil dskOpenApiUtil;
@Autowired
ICustomerService iCustomerService;
public R infoHeader(EnterpriseInfoHeaderBody body) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/api/jsk/enterprise/infoHeader", BeanUtil.beanToMap(body, false, false));
return BeanUtil.toBean(map, R.class);
......@@ -136,4 +147,45 @@ public class EnterpriseService {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterprise/getUipId", params);
return BeanUtil.toBean(map, R.class);
}
public TableDataInfo uipSerach(EnterpriseUipSearchBody body) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterprise/uipSerach", BeanUtil.beanToMap(body, false, false));
Integer code = MapUtils.getInteger(map, "code", 300);
if (200 != code) throw new RuntimeException();
Map data = MapUtils.getMap(map, "data", null);
List<Object> list = CommonUtils.assertAsArray(MapUtils.getObject(data, "list", ""));
if (CollectionUtils.isEmpty(list)) {
return new TableDataInfo(list, 0);
}
ArrayList<String> uipIds = new ArrayList<>();
for (Object dataMap : list) {
uipIds.add(MapUtils.getString(CommonUtils.assertAsMap(dataMap), "uipId"));
}
List<CustomerStatusListVo> claimStatusList = iCustomerService.selectStatusList(uipIds);
//按照城投企业id合并两个list
for (Object companyObj : list) {
Map<String, Object> companyMap = CommonUtils.assertAsMap(companyObj);
String uipId = MapUtils.getString(companyMap, "uipId");
if (CollectionUtils.isEmpty(claimStatusList)) {
companyMap.put("claimStatus", 0);
}
for (CustomerStatusListVo vo : claimStatusList) {
if (uipId.equals(vo.getUipId())) {
companyMap.put("claimStatus", 1);
}
}
}
return new TableDataInfo(list, MapUtils.getInteger(data, "totalCount", 0));
}
public R uipGroupData() throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterprise/uipGroupData", null);
return BeanUtil.toBean(map, R.class);
}
}
......@@ -90,7 +90,13 @@ public interface BusinessInfoMapper extends BaseMapper<BusinessInfo>
*/
BusinessBrowseVo selectTotal(Integer business);
/**
* 查询项目名称是否存在
* @param projectName
* @param userId
* @return
*/
int isRepetitionProjectName(@Param("projectName") String projectName,@Param("userId") Integer userId);
int selectCountByStatusAndCustomerId(@Param("status") Integer status,@Param("customerId") String customerId);
......
......@@ -2,6 +2,7 @@ package com.dsk.system.service;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.OpRegionalEconomicDataV1Dto;
import com.dsk.common.dtos.OpRegionalEconomicDataV1PageDto;
/**
* @ClassName EconomicService
......@@ -19,7 +20,7 @@ public interface EconomicService {
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult nationalPage(OpRegionalEconomicDataV1Dto dto);
AjaxResult nationalPage(OpRegionalEconomicDataV1PageDto dto);
/***
*@Description: 全国经济大全详情
......
......@@ -61,7 +61,7 @@ public interface IBusinessInfoService
/**
* 项目批量导入
*/
AjaxResult batchUpload(MultipartFile file, HttpServletResponse response);
AjaxResult batchUpload(MultipartFile file);
/**
* 新增项目详情
......
......@@ -6,6 +6,7 @@ import java.util.stream.Collectors;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsk.common.constant.HttpStatus;
import com.dsk.common.core.domain.AjaxResult;
......@@ -13,6 +14,7 @@ import com.dsk.common.core.domain.entity.BusinessInfo;
import com.dsk.common.core.domain.entity.BusinessLabel;
import com.dsk.common.core.domain.entity.BusinessRelateCompany;
import com.dsk.common.core.domain.entity.BusinessUser;
import com.dsk.common.exception.base.BaseException;
import com.dsk.common.utils.DateUtils;
import com.dsk.common.utils.SecurityUtils;
import com.dsk.system.domain.BusinessExcelDto;
......@@ -28,6 +30,7 @@ import com.dsk.system.mapper.BusinessRelateCompanyMapper;
import com.dsk.system.mapper.BusinessUserMapper;
import com.dsk.system.service.IBusinessInfoService;
import lombok.extern.slf4j.Slf4j;
import lombok.val;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
......@@ -79,6 +82,11 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
*/
@Override
public List<BusinessListVo> selectBusinessInfoList(BusinessListDto dto) {
if (dto.getUserId() == null) {
Long deptId = SecurityUtils.getLoginUser().getDeptId();
if (deptId == null) throw new BaseException("请登录");
dto.setDeptId(deptId.intValue());
}
return businessInfoMapper.selectBusinessInfoList(dto);
}
......@@ -87,7 +95,7 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
BusinessBrowseVo businessBrowseVo = new BusinessBrowseVo();
//查询项目基本信息
BusinessInfo businessInfo = businessInfoMapper.selectBusinessInfoById(businessId);
BeanUtil.copyProperties(businessInfo,businessBrowseVo);
BeanUtil.copyProperties(businessInfo, businessBrowseVo);
//查询项目标签
businessBrowseVo.setLabelList(businessLabelMapper.selectBusinessLabelList(new BusinessLabel(businessId)).stream().map(p -> p.getLabel()).collect(Collectors.toList()));
//查询关键企业
......@@ -106,34 +114,37 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
}
@Override
public AjaxResult batchUpload(MultipartFile file, HttpServletResponse response) {
int row=3;//起始行数
int rowSuccess=0;//成功条数
Integer errorCount=0;//失败条数
public AjaxResult batchUpload(MultipartFile file) {
//获取当前登录用户id
Long userId = SecurityUtils.getLoginUser().getUserId();
// Long userId = 103L;
if (userId == null) return AjaxResult.error("请登录");
int row = 3;//起始行数
int rowSuccess = 0;//成功条数
Integer errorCount = 0;//失败条数
List<String> result = new LinkedList();//导入结果汇总
List<BusinessExcelDto> businessInfoList = readBusinessInfoExcel.getExcelInfo(file);
for (BusinessExcelDto businessInfo : businessInfoList) {
//查询已有的项目名称
Integer count = businessInfoMapper.selectCount(Wrappers.<BusinessInfo>lambdaQuery().eq(BusinessInfo::getProjectName, businessInfo.getProjectName()));
Integer count = businessInfoMapper.isRepetitionProjectName(businessInfo.getProjectName(), userId.intValue());
row++;
if(count > 0){
if (count > 0) {
//如果存在,跳过该项目,不保存
result.add("第"+row+"行的"+businessInfo.getProjectName()+"的项目已存在,跳过该项目,保存下一条");
result.add("第" + row + "行的" + businessInfo.getProjectName() + "的项目已存在,跳过该项目,保存下一条");
errorCount++;
}else {
} else {
//保存到数据库
BusinessAddDto businessAddDto = new BusinessAddDto();
BeanUtil.copyProperties(businessInfo,businessAddDto);
//获取当前登录用户id
businessAddDto.setUserId(SecurityUtils.getLoginUser().getUserId().intValue());
BeanUtil.copyProperties(businessInfo, businessAddDto);
businessAddDto.setUserId(userId.intValue());
businessAddDto.setCompanyId(0);
AjaxResult add = insertBusinessInfo(businessAddDto);
if(add.get("code").equals(HttpStatus.SUCCESS))rowSuccess++;
if (add.get("code").equals(HttpStatus.SUCCESS)) rowSuccess++;
}
}
result.add("导入项目成功条数"+rowSuccess);
result.add("导入项目失败条件"+errorCount);
return errorCount == businessInfoList.size() ? AjaxResult.error(String.join("\n",result),response) : AjaxResult.success(String.join("\n",result),response);
result.add("导入项目成功条数" + rowSuccess);
result.add("导入项目失败条数" + errorCount);
return errorCount == businessInfoList.size() ? AjaxResult.error(String.join(",", result)) : AjaxResult.success(String.join(",", result));
}
/**
......@@ -146,8 +157,8 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
@Transactional
public AjaxResult insertBusinessInfo(BusinessAddDto dto) {
//新增前查询是否已存在
BusinessInfo selectOne = businessInfoMapper.selectOne(Wrappers.<BusinessInfo>lambdaQuery().eq(BusinessInfo::getProjectName, dto.getProjectName()));
if(ObjectUtil.isNotEmpty(selectOne)) return AjaxResult.error("项目名称已存在");
int count = businessInfoMapper.isRepetitionProjectName(dto.getProjectName(), dto.getUserId());
if (count > 0) return AjaxResult.error("项目名称已存在");
//新增项目主信息
BusinessInfo businessInfo = new BusinessInfo();
BeanUtil.copyProperties(dto, businessInfo);
......@@ -174,8 +185,7 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
*/
@Override
@Transactional
public int updateBusinessInfo(BusinessInfo businessInfo)
{
public int updateBusinessInfo(BusinessInfo businessInfo) {
businessInfo.setUpdateTime(DateUtils.getNowDate());
return businessInfoMapper.updateBusinessInfo(businessInfo);
}
......
......@@ -3,6 +3,7 @@ package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.OpRegionalEconomicDataV1Dto;
import com.dsk.common.dtos.OpRegionalEconomicDataV1PageDto;
import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.system.service.EconomicService;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -25,8 +26,8 @@ public class EconomicServiceImpl implements EconomicService {
private DskOpenApiUtil dskOpenApiUtil;
@Override
public AjaxResult nationalPage(OpRegionalEconomicDataV1Dto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/api/economic/national/nationalPage", BeanUtil.beanToMap(dto, false, false));
public AjaxResult nationalPage(OpRegionalEconomicDataV1PageDto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/economic/national/nationalPage", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
......@@ -34,25 +35,25 @@ public class EconomicServiceImpl implements EconomicService {
public AjaxResult details(Integer id) {
Map<String, Object> bodyMap = new HashMap<>(1);
bodyMap.put("id", id);
Map<String, Object> map = dskOpenApiUtil.requestBody("/api/economic/details", bodyMap);
Map<String, Object> map = dskOpenApiUtil.requestBody("/economic/details", bodyMap);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult statisticsRegional(OpRegionalEconomicDataV1Dto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/api/economic/statistics/regional", BeanUtil.beanToMap(dto, false, false));
Map<String, Object> map = dskOpenApiUtil.requestBody("/economic/statistics/regional", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult regionalList(OpRegionalEconomicDataV1Dto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/api/economic/regional/list", BeanUtil.beanToMap(dto, false, false));
Map<String, Object> map = dskOpenApiUtil.requestBody("/economic/regional/list", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult regionalComparison(OpRegionalEconomicDataV1Dto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/api/economic/xx", BeanUtil.beanToMap(dto, false, false));
Map<String, Object> map = dskOpenApiUtil.requestBody("/economic/xx", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
......
......@@ -108,7 +108,8 @@ public class ReadBusinessInfoExcel {
// List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
ArrayList<BusinessExcelDto> list = new ArrayList<>();
//循环Excel行数
for (int r = 1; r < totalRows; r++) {
//
for (int r = 3; r < totalRows; r++) {
Row row = sheet.getRow(r);
if (row == null) {
continue;
......@@ -116,7 +117,7 @@ public class ReadBusinessInfoExcel {
//循环Excel的列
// Map<String, Object> map = new HashMap<String, Object>();
BusinessExcelDto businessExcelDto = new BusinessExcelDto();
for (int c = 3; c < this.totalCells; c++) {
for (int c = 0; c < this.totalCells; c++) {
Cell cell = row.getCell(c);
if (null != cell) {
if (c == 0) {
......@@ -147,6 +148,7 @@ public class ReadBusinessInfoExcel {
//添加到list
list.add(businessExcelDto);
}
log.info("项目批量导入Excel数据,{}",list);
return list;
}
......
......@@ -5,7 +5,6 @@ import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.ComposeQueryDto;
import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.system.service.RegionalEnterprisesService;
import com.dsk.system.service.SpecialPurposeBondsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -26,7 +25,7 @@ public class RegionalEnterprisesServiceImpl implements RegionalEnterprisesServic
@Override
public AjaxResult page(ComposeQueryDto compose) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/api/jsk/search/enterprisePage", BeanUtil.beanToMap(compose, false, false));
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/page", BeanUtil.beanToMap(compose, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
}
......@@ -28,7 +28,7 @@ public class SpecialPurposeBondsServiceImpl implements SpecialPurposeBondsServic
@Override
public AjaxResult page(SpecialPurposeBondsPageDto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/api/specialPurposeBonds/projects/page", BeanUtil.beanToMap(dto, false, false));
Map<String, Object> map = dskOpenApiUtil.requestBody("/specialPurposeBonds/projects/page", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
......@@ -36,19 +36,19 @@ public class SpecialPurposeBondsServiceImpl implements SpecialPurposeBondsServic
public AjaxResult details(String id) {
Map<String, Object> bodyMap = new HashMap<>(1);
bodyMap.put("id", id);
Map<String, Object> map = dskOpenApiUtil.requestBody("/api/specialPurposeBonds/details", bodyMap);
Map<String, Object> map = dskOpenApiUtil.requestBody("/specialPurposeBonds/details", bodyMap);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult bondStatistics(SpecialPurposeBondsDto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/api/specialPurposeBonds/bond/statistics", BeanUtil.beanToMap(dto, false, false));
Map<String, Object> map = dskOpenApiUtil.requestBody("/specialPurposeBonds/bond/statistics", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult bondPage(SpecialBondInformationPageDto pageDto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/api/specialPurposeBonds/bond/page", BeanUtil.beanToMap(pageDto, false, false));
Map<String, Object> map = dskOpenApiUtil.requestBody("/specialPurposeBonds/bond/page", BeanUtil.beanToMap(pageDto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
}
......@@ -26,7 +26,7 @@ public class UrbanInvestmentPlatformServiceImpl implements UrbanInvestmentPlatfo
@Override
public AjaxResult page(UrbanInvestmentPlatformDto pageDto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/api/urbanInvestment/page", BeanUtil.beanToMap(pageDto, false, false));
Map<String, Object> map = dskOpenApiUtil.requestBody("/urbanInvestment/page", BeanUtil.beanToMap(pageDto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
......@@ -34,13 +34,13 @@ public class UrbanInvestmentPlatformServiceImpl implements UrbanInvestmentPlatfo
public AjaxResult details(String id) {
Map<String, Object> bodyMap = new HashMap<>(1);
bodyMap.put("id", id);
Map<String, Object> map = dskOpenApiUtil.requestBody("/api/urbanInvestment/details", bodyMap);
Map<String, Object> map = dskOpenApiUtil.requestBody("/urbanInvestment/details", bodyMap);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult statistics(UrbanInvestmentPlatformDto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/api/urbanInvestment/statistics", BeanUtil.beanToMap(dto, false, false));
Map<String, Object> map = dskOpenApiUtil.requestBody("/urbanInvestment/statistics", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
}
......@@ -29,7 +29,12 @@
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<result property="status" column="status"/>
<result property="customerId" column="customer_id"/>
<result property="evaluationBidWay" column="evaluation_bid_way"/>
<result property="bidOpenTime" column="bid_open_time"/>
<result property="bidOpenPlace" column="bid_open_place"/>
<result property="earnestMoneyPay" column="earnest_money_pay"/>
<result property="earnestMoney" column="earnest_money"/>
<result property="evaluationBidCouncil" column="evaluation_bid_council"/>
</resultMap>
<sql id="selectBusinessInfoVo">
......@@ -57,7 +62,13 @@
create_time,
update_time,
status,
customer_id
customer_id,
evaluation_bid_way,
bid_open_time,
bid_open_place,
earnest_money_pay,
earnest_money,
evaluation_bid_council
from business_info
</sql>
......@@ -240,7 +251,12 @@
<if test="createTime != null">create_time,</if>
<if test="updateTime != null">update_time,</if>
<if test="status != null">status,</if>
<if test="customerId != null">customer_id,</if>
<if test="evaluationBidWay != null">evaluation_bid_way,</if>
<if test="bidOpenTime != null">bid_open_time,</if>
<if test="bidOpenPlace != null">bid_open_place,</if>
<if test="earnestMoneyPay != null">earnest_money_pay,</if>
<if test="earnestMoney != null">earnest_money,</if>
<if test="evaluationBidCouncil != null">evaluation_bid_council,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="projectName != null">#{projectName},</if>
......@@ -267,6 +283,12 @@
<if test="updateTime != null">#{updateTime},</if>
<if test="status != null">#{status},</if>
<if test="customerId != null">#{customerId},</if>
<if test="evaluationBidWay != null">#{evaluationBidWay},</if>
<if test="bidOpenTime != null">#{bidOpenTime},</if>
<if test="bidOpenPlace != null">#{bidOpenPlace},</if>
<if test="earnestMoneyPay != null">#{earnestMoneyPay},</if>
<if test="earnestMoney != null">#{earnestMoney},</if>
<if test="evaluationBidCouncil != null">#{evaluationBidCouncil},</if>
</trim>
</insert>
......@@ -297,6 +319,12 @@
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="status != null">status = #{status},</if>
<if test="customerId != null">customer_id = #{customerId},</if>
<if test="evaluationBidWay != null">evaluation_bid_way = #{evaluationBidWay},</if>
<if test="bidOpenTime != null">bid_open_time = #{bidOpenTime},</if>
<if test="bidOpenPlace != null">bid_open_place = #{bidOpenPlace},</if>
<if test="earnestMoneyPay != null">earnest_money_pay = #{earnestMoneyPay},</if>
<if test="earnestMoney != null">earnest_money = #{earnestMoney},</if>
<if test="evaluationBidCouncil != null">evaluation_bid_council = #{evaluationBidCouncil},</if>
</trim>
where id = #{id}
</update>
......@@ -340,8 +368,21 @@
plan_start_time,
plan_complete_time,
build_property,
project_details
project_details,
evaluation_bid_way,
bid_open_time,
bid_open_place,
earnest_money_pay,
earnest_money,
evaluation_bid_council
from business_info
where id = #{id}
</select>
<select id="isRepetitionProjectName" resultType="java.lang.Integer">
select count(i.id)
from business_info i
inner join business_user u on u.business_id = i.id
where i.project_name = #{projectName}
and u.user_id = #{userId}
</select>
</mapper>
......@@ -43,7 +43,7 @@
from customer ct
join customer_user ctu on ct.customer_id = ctu.customer_id
where ctu.user_id = #{userId} and ct.uip_id in
<foreach collection="uipIds" item="uipId" open="(" separator="," close=",">
<foreach collection="uipIds" item="uipId" open="(" separator="," close=")">
#{uipId}
</foreach>
</select>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment