Commit 6ec9bb36 authored by 远方不远's avatar 远方不远
parents c7ddc679 6a0464e2
......@@ -17,6 +17,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
......@@ -81,10 +82,18 @@ public class BusinessFileController extends BaseController {
try {
//获取文件名
String filename = file.getOriginalFilename();
//TODO 校验是否上传同名文件
String businessFileName = request.getHeader("FilePath");
// 上传文件路径
String filePath = RuoYiConfig.getUploadPath() + businessFileName + "/";
//校验是否上传同名文件
File newFile = new File(filePath);
// 获取当前目录下的文件和文件夹
File[] files = newFile.listFiles();
for (File allFile : files) {
if(filename.equals(allFile.getName())) return error("文件已存在");
}
// 上传并返回文件全路径
String fileName = FileUploadUtils.upload(filePath, file);
String url = serverConfig.getUrl() + fileName;
......
......@@ -114,4 +114,16 @@ public class RegionalEconomicDataController {
return economicService.regionalCompare(dto);
}
/***
*@Description: 地区经济-对比
*@Param:
*@return: com.dsk.acc.security.common.msg.RestResponse
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/regional/multipleCompare")
public AjaxResult regionalMultipleCompare(@RequestBody OpRegionalEconomicRegionalCompareDto compareDto) {
return economicService.regionalMultipleCompare(compareDto);
}
}
......@@ -6,7 +6,7 @@ import javax.validation.constraints.NotNull;
/**
* @ClassName OpRegionalEconomicDataV1Dto
* @Description 专项债-项目类别统计
* @Description 地区经济
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
......
package com.dsk.common.dtos;
import lombok.Data;
import java.util.List;
/**
* @ClassName OpRegionalEconomicRegionalCompareDto
* @Description 地区经济-对比
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicRegionalCompareDto {
/**
* 年份
*/
private Integer year;
private List<OpRegionalEconomicDataStatisticsRegionalDto> compareList;
}
......@@ -343,6 +343,11 @@ ul, li {
}
}
}
.el-table__fixed{
tr:nth-child(2n){
background-color: #F8FBFF;
}
}
}
}
......
......@@ -13,10 +13,11 @@ export default {
data() {
return {
loading: false, // 是否加载中
navHeight: 68, // iframe距离顶部距离px
iframeHight: window.innerHeight, // iframe高度
scrollTop: 0, // 滚动条距离内部页面顶部距离
// domain: 'https://pre-plug.jiansheku.com',
domain: 'http://192.168.60.30:3300',
domain: 'https://pre-plug.jiansheku.com',
// domain: 'http://192.168.60.30:3300',
ak: 'aec7b3ff2y2q8x6t49a7e2c463ce21912' // 需要携带的sdkId
}
},
......@@ -28,7 +29,7 @@ export default {
this.src = `${this.domain}/enterprise/${this.$route.params.id}?ak=${this.ak}`
}
if(this.$route.name=='Personnel'){ //人员详情
this.src = `${this.domain}/personnel/${this.$route.params.id}.html?ak=${this.ak}&referrer=true`
this.src = `${this.domain}/personnel/${this.$route.params.id}.html?ak=${this.ak}`
}
}
},
......@@ -53,7 +54,7 @@ export default {
}
// 点击栏目名及子标签动态设置滚动高度
if (data.scrollHeight) {
window.scrollTo(sc, parseInt(data.scrollHeight) + 83)
window.scrollTo(sc, parseInt(data.scrollHeight) + _this.navHeight + 15)
}
// 点击下拉子标签动态设置滚动高度
if (data.clientHeight) {
......@@ -69,7 +70,7 @@ export default {
// 准备传值
this.$nextTick(() => {
const ifa = this.$refs.companyIframe
ifa.contentWindow.postMessage({ 'scrollTop': this.scrollTop }, '*')
ifa.contentWindow.postMessage({ 'scrollTop': this.scrollTop, 'navHeight': this.navHeight }, '*')
})
}
}
......
......@@ -61,12 +61,12 @@ export default {
},
created() {
this.dataQuery=this.$route.query;
location({provinceId:'500000'}).then(res => {
this.province=res.data.currentProvince.regionName;
location({}).then(res => {
this.province=res.data.province;
if(!this.dataQuery.provinceId){
this.dataQuery.provinceId=res.data.currentProvince.id
this.dataQuery.provinceId=res.data.provinceId
this.dataQuery.province=this.province;
this.provinceId.push(res.data.currentProvince.id)
this.provinceId.push(res.data.provinceId)
}else {
this.provinceId.push(this.dataQuery.provinceId)
}
......
......@@ -13,7 +13,7 @@
border
:summary-method="getSummaries"
show-summary
height="360"
height="400"
fit
@sort-change="sortChange"
highlight-current-row
......@@ -170,13 +170,15 @@ export default {
orient: 'horizontal',
bottom: 0,
data: data,
itemHeight:8,
itemWidth:12,
pageButtonPosition: 'end',
},
series: [
{
type: 'pie',
radius: '55%',
center: ['50%', '40%'],
center: ['50%', '50%'],
data: data,
emphasis: {
itemStyle: {
......@@ -318,6 +320,11 @@ export default {
}
.table-item{
margin-top: 22px;
::v-deep .el-table{
td.el-table__cell{
border-bottom: 0;
}
}
}
}
</style>
......@@ -6,7 +6,7 @@
<span class="common-title">全国经济大全</span>
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item prop="year">
<el-select v-model="queryParams.year" filterable class="form-content-width" placeholder="请选择年度" @change="handleSearch">
<el-select v-model="queryParams.year" filterable class="form-content-width" placeholder="请选择" @change="handleSearch">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.year" :value="item.year" />
</el-select>
</el-form-item>
......@@ -316,6 +316,9 @@
.el-form{
margin-left: 24px;
}
.form-content-width{
width: 110px;
}
::v-deep .el-cascader{
.el-cascader__tags{
flex-wrap: inherit;
......@@ -366,18 +369,12 @@
.el-table__fixed-header-wrapper th{
background: #F0F3FA;
}
td.el-table__cell{
border-bottom: 0;
}
.caret-wrapper{
width: 10px;
/*<!--position: absolute;-->*/
/*<!--right: 12px;-->*/
/*<!--top: -3px;-->*/
}
/*.sort-caret{*/
/*position: initial;*/
/*}*/
/*.ascending{*/
/*margin-bottom: 3px;*/
/*}*/
}
}
}
......
......@@ -377,7 +377,7 @@ export default {
let option ={
legend: {
x:'right',
padding:[0,120,0,0],
padding:[0,30,0,0],
},
tooltip: {
trigger: 'axis',
......
......@@ -162,7 +162,7 @@
</el-table-column>
<el-table-column prop="city" label="区域" :formatter="formatStatus" width="150">
<template slot-scope="scope">
<router-link :to="{path:'/macro/economies',query:{id:scope.row.id,provinceId:scope.row.provinceId}}" tag="a" class="a-link">
<router-link :to="{path:'/macro/economies',query:{provinceId:scope.row.provinceId}}" tag="a" class="a-link">
{{ scope.row.province}}{{scope.row.city ? '-': ''}}{{ scope.row.city}}{{scope.row.area ? '-': ''}}{{ scope.row.area}}
</router-link>
<!--<span v-else>-</span>-->
......
......@@ -146,6 +146,7 @@
//添加客户
submitForm(formName) {
this.queryParam.userId = this.$store.state.user.userId
this.queryParam.investmentAmount = parseFloat(this.queryParam.investmentAmount)
this.$refs[formName].validate((valid) => {
if (valid) {
addProject(this.queryParam).then(result=>{
......
......@@ -4,7 +4,7 @@
<div class="cardtitles" v-if="showtype != 'projectgjdt'">跟进记录</div>
<div style="height: 24px" v-if="showtype == 'projectgjdt'"></div>
<div class="records">
<div class="writeIn">
<div class="writeIn" v-if="isDisabled == false">
<div class="default" v-if="isEdit == false" @click="getEdit">
<img src="@/assets/images/project/add_3.png">
<div>新建一条跟进记录,如:周五上午预约客户上门拜访</div>
......@@ -44,7 +44,7 @@
</el-input>
</div>
<div class="times"><img src="@/assets/images/project/ico_4.png">
<el-date-picker class="w128"
<el-date-picker class="w128" value-format="yyyy-MM-dd"
v-model="addParam.nextVisitTime"
type="date"
placeholder="下次拜访时间">
......@@ -91,7 +91,7 @@
<div class="rec_time">
<i class="el-icon-time"></i>
<div>{{item.creatTime}}</div>
<div class="operate">
<div class="operate" v-if="isDisabled == false">
<!--<img src="@/assets/images/edit.png">第一期不做编辑-->
<img @click="delRecord(item.id)" src="@/assets/images/delete.png">
</div>
......@@ -145,6 +145,7 @@
default: 0
},
datas:[],//数据源
isDisabled:false,
},
name: 'gjjl',
data(){
......@@ -171,11 +172,13 @@
projectId:this.detailId ? this.detailId : parseInt(this.$route.query.id),//项目详情id
userId:this.$store.state.user.userId,//当前用户id
projectList:[],//关联项目
isDisabled:this.isDisabled,
}
},
computed: {
},
created(){
console.log(this.isDisabled)
//获取拜访方式
getDictType('visit_mode_type').then(result=>{
this.bffslist = result.code == 200 ? result.data:[]
......@@ -183,6 +186,7 @@
this.showtype = this.types
//客户管理跟进动态
if(this.showtype == 'gjdt'){
this.isDisabled = false
getUserList().then(result=>{
this.glqylist = result.data
})
......@@ -194,6 +198,7 @@
}
//项目管理跟进动态
if(this.showtype == 'projectgjdt'){
this.isDisabled = false
this.projectId = null//项目id暂时清空,必须手选id
relateProject(this.userId).then(res=>{
this.projectList = res.data
......
......@@ -3,7 +3,7 @@
<el-card class="box-card noborder">
<div class="cardtitles">工作待办</div>
<div class="records">
<div class="writeIn">
<div class="writeIn" v-if="isDisabled == false">
<div class="default" v-if="isEdit == false" @click="getEdit">
<img src="@/assets/images/project/add_3.png">
<div>新建一条工作代办,如:周五上午预约客户上门拜访</div>
......@@ -15,15 +15,17 @@
</div>
<div class="wr_bot">
<div class="times"><img src="@/assets/images/project/ico_4.png">
<el-date-picker
<el-date-picker value-format="yyyy-MM-dd"
v-model="queryParam.finishTime"
type="date"
placeholder="完成时间">
</el-date-picker>
</div>
<el-input v-model="queryParam.target" placeholder="拜访对象" style="width: 100px;">
<i slot="prefix" class="el-input__icon"><img src="@/assets/images/project/ico_2.png"></i>
</el-input>
<div class="sels">
<img src="@/assets/images/project/ico_2.png">
<el-input v-model="queryParam.target" placeholder="拜访对象" style="width: 100px;">
</el-input>
</div>
<div class="btn btn_primary h32 wc" @click="add" :disabled="queryParam.task == ''" :class="{'btn_disabled':queryParam.task == ''}">完成</div>
</div>
</div>
......@@ -34,11 +36,11 @@
<div class="task_con"><span>发起时间:{{item.createTime}}</span><span v-if="item.target">关联客户:<font class="wordprimary">{{item.target}}</font></span><span v-if="item.finishTime">完成时间:{{item.finishTime}}</span></div>
<div class="select" :class="{'on':item.state == 2}">
<div class="select-popper">
<span class="color_text">
<span>
{{item.state == 2?"已完成":"未完成"}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select placeholder="请选择" v-model="item.state" class="select-multiple" @change="changes(item.id,$event)">
<el-select v-if="isDisabled == false" placeholder="请选择" v-model="item.state" class="select-multiple" @change="changes(item.id,$event)">
<el-option label="未完成" value="1"></el-option>
<el-option label="已完成" value="2"></el-option>
</el-select>
......@@ -73,7 +75,8 @@
detailId: { //从企业详情跳转过来ID
type: Number,
default: 0
}
},
isDisabled:false,
},
data(){
return{
......@@ -94,6 +97,7 @@
},
datalist:[],
yqnum:0,//已逾期数量
isDisabled:this.isDisabled,
}
},
created(){
......@@ -109,6 +113,9 @@
if(result.code == 200){
this.$message.success("添加成功!")
this.getList()
this.queryParam.target = ''
this.queryParam.task = ''
this.queryParam.finishTime = ''
}else{
this.$message.error(result.msg)
}
......@@ -162,4 +169,7 @@
width: 100px;
margin-right: 12px;
}
.times .el-input__icon >img{
width: 16px;
}
</style>
......@@ -8,7 +8,7 @@
<div class="con">
<span>总投资额(万元) :</span>
<div class="inputxt" id="inputxt1">
<div class="flex" v-if="nowedit == 1">
<div class="flex" v-if="nowedit == 1 && isDisabled == false">
<el-input placeholder="待添加" v-model="investmentAmount" @input="number"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px" @click="changes({'investmentAmount':investmentAmount})">确定</div>
......@@ -21,7 +21,7 @@
<div class="con i">
<span>资金来源 :</span>
<div class="inputxt" id="inputxt2">
<div class="flex" v-if="nowedit == 2">
<div class="flex" v-if="nowedit == 2 && isDisabled == false">
<el-input placeholder="待添加" v-model="amountSource"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" @click="changes({'amountSource':amountSource})" style="width: 56px">确定</div>
......@@ -36,7 +36,7 @@
<div class="con">
<span>建设性质 :</span>
<div class="inputxt" id="inputxt3">
<div class="flex" v-if="nowedit == 3">
<div class="flex" v-if="nowedit == 3 && isDisabled == false">
<el-input placeholder="待添加" v-model="buildProperty"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" @click="changes({'buildProperty':buildProperty})" style="width: 56px">确定</div>
......@@ -50,7 +50,7 @@
<span>计划招标 :</span>
<div class="inputime">
<div class="flex" style="">
<el-date-picker class="timeinput"
<el-date-picker class="timeinput" v-if="isDisabled == false"
v-model="planBidTime"
type="date"
value-format="yyyy-MM-dd"
......@@ -66,7 +66,7 @@
<span>计划开工 :</span>
<div class="inputime">
<div class="flex" style="opacity: 0;height: 0">
<el-date-picker class="timeinput"
<el-date-picker class="timeinput" v-if="isDisabled == false"
v-model="planStartTime"
type="date"
value-format="yyyy-MM-dd"
......@@ -80,7 +80,7 @@
<span>计划竣工 :</span>
<div class="inputime">
<div class="flex" style="opacity: 0;height: 0">
<el-date-picker class="timeinput"
<el-date-picker class="timeinput" v-if="isDisabled == false"
v-model="planCompleteTime"
type="date"
value-format="yyyy-MM-dd"
......@@ -96,7 +96,7 @@
<el-card class="box-card noborder">
<div class="cardtitles">项目概况与建设规模</div>
<div class="baseinfo" >
<el-input id="inputxt9" v-model="projectDetails" @focus="nowedit = 9" class="textarea" type="textarea" placeholder="请输入项目概况与建设规模详细信息" maxlength="500" :show-word-limit="true" ></el-input>
<el-input id="inputxt9" :disabled="isDisabled" v-model="projectDetails" @focus="nowedit = 9" class="textarea" type="textarea" placeholder="请输入项目概况与建设规模详细信息" maxlength="500" :show-word-limit="true" ></el-input>
<div class="flex btns" v-if="nowedit == 9">
<div class="flex">
<div class="btnsmall btn_primary h28" @click="changes({'projectDetails':projectDetails})" style="width: 56px">确定</div>
......@@ -112,7 +112,7 @@
<div class="con">
<span>评标办法 :</span>
<div class="inputxt" id="inputxt4">
<div class="flex" v-if="nowedit == 4">
<div class="flex" v-if="nowedit == 4 && isDisabled == false">
<el-input placeholder="待添加" v-model="evaluationBidWay"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" @click="changes({'evaluationBidWay':evaluationBidWay})" style="width: 56px">确定</div>
......@@ -126,7 +126,7 @@
<span>开标时间 :</span>
<div class="inputime">
<div class="flex" style="opacity: 0;height: 0">
<el-date-picker class="timeinput"
<el-date-picker class="timeinput" v-if="isDisabled == false"
v-model="bidOpenTime"
type="date"
value-format="yyyy-MM-dd"
......@@ -141,7 +141,7 @@
<div class="con">
<span>保证金缴纳 :</span>
<div class="inputxt" id="inputxt5">
<div class="flex" v-if="nowedit == 5">
<div class="flex" v-if="nowedit == 5 && isDisabled == false">
<el-input placeholder="待添加" v-model="earnestMoneyPay"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" @click="changes({'earnestMoneyPay':earnestMoneyPay})" style="width: 56px">确定</div>
......@@ -154,7 +154,7 @@
<div class="con i">
<span>保证金金额(万元) :</span>
<div class="inputxt" id="inputxt6">
<div class="flex" v-if="nowedit == 6">
<div class="flex" v-if="nowedit == 6 && isDisabled == false">
<el-input placeholder="待添加" v-model="earnestMoney"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" @click="changes({'earnestMoney':earnestMoney})" style="width: 56px">确定</div>
......@@ -169,7 +169,7 @@
<div class="con">
<span>开标地点 :</span>
<div class="inputxt" id="inputxt7">
<div class="flex" v-if="nowedit == 7">
<div class="flex" v-if="nowedit == 7 && isDisabled == false">
<el-input placeholder="待添加" v-model="bidOpenPlace"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" @click="changes({'bidOpenPlace':bidOpenPlace})" style="width: 56px">确定</div>
......@@ -182,7 +182,7 @@
<div class="con i">
<span>评标委员会 :</span>
<div class="inputxt" id="inputxt8">
<div class="flex" v-if="nowedit == 8">
<div class="flex" v-if="nowedit == 8 && isDisabled == false">
<el-input placeholder="待添加" v-model="evaluationBidCouncil"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" @click="changes({'evaluationBidCouncil':evaluationBidCouncil})" style="width: 56px">确定</div>
......@@ -207,7 +207,8 @@
detailId: { //从企业详情跳转过来ID
type: Number,
default: 0
}
},
isDisabled:false,
},
data(){
return{
......@@ -226,12 +227,15 @@
earnestMoney: '',//保证金金额
earnestMoneyPay: '',//保证金缴纳
evaluationBidCouncil: '',//评标委员会
isDisabled:this.isDisabled,
}
},
watch:{
},
mounted(){
document.addEventListener('mouseup',(e) => {
if(this.isDisabled == true)
return false
let j = 0
for(var i=1;i<=9;i++){
let isSelf = document.getElementById('inputxt'+i).contains(event.target) // 这个是自己的区域
......@@ -242,38 +246,39 @@
}
}
if(j == 9){
// let param = {}
// switch (i) {
// case 1:
// param = {'investmentAmount':this.investmentAmount}
// break;
// case 2 :
// param = {'amountSource':this.amountSource}
// break;
// case 3 :
// param = {'buildProperty':this.buildProperty}
// break;
// case 4 :
// param = {'evaluationBidWay':this.evaluationBidWay}
// break;
// case 5 :
// param = {'earnestMoneyPay':this.earnestMoneyPay}
// break;
// case 6 :
// param = {'earnestMoney':this.earnestMoney}
// break;
// case 7 :
// param = {'bidOpenPlace':this.bidOpenPlace}
// break;
// case 8 :
// param = {'evaluationBidCouncil':this.evaluationBidCouncil}
// break;
// case 9 :
// param = {'projectDetails':this.projectDetails}
// break;
// }
// this.changes(param)
if(this.nowedit !=-1){
let param = {}
switch (this.nowedit) {
case 1:
param = {'investmentAmount':this.investmentAmount}
break;
case 2 :
param = {'amountSource':this.amountSource}
break;
case 3 :
param = {'buildProperty':this.buildProperty}
break;
case 4 :
param = {'evaluationBidWay':this.evaluationBidWay}
break;
case 5 :
param = {'earnestMoneyPay':this.earnestMoneyPay}
break;
case 6 :
param = {'earnestMoney':this.earnestMoney}
break;
case 7 :
param = {'bidOpenPlace':this.bidOpenPlace}
break;
case 8 :
param = {'evaluationBidCouncil':this.evaluationBidCouncil}
break;
case 9 :
param = {'projectDetails':this.projectDetails}
break;
}
this.changes(param)
}
this.nowedit = -1
}
})
......@@ -303,6 +308,8 @@
this.nowedit = -1
let param = str
param.id = this.id
if(this.isDisabled == true)
return false
editXMNR(param).then(result=>{
if(result.code == 200)
this.$message.success('修改成功!')
......@@ -314,7 +321,7 @@
},
//输入数字
number(value){
this.investmentAmount = this.investmentAmount == ""||this.investmentAmount == null? value.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1'):null//输入6位小数
this.investmentAmount = value.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1')//输入6位小数
},
}
}
......
......@@ -14,13 +14,16 @@
<img src="@/assets/images/project/empty.png">
<div class="p1">暂无数据展示</div>
<div class="p2">抱歉,你还未添加相关数据,快去添加吧</div>
<div class="btn btn_primary h36 w102" @click="opennew">新增联系人</div>
<div class="btn btn_primary h36 w102" @click="opennew" v-if="isDisabled==false">新增联系人</div>
</div>
</template>
<el-table-column
prop="name"
label="姓名"
width="113">
<template slot-scope="scope">
{{scope.row.name || '--'}}
</template>
</el-table-column>
<el-table-column
prop="name"
......@@ -38,20 +41,32 @@
label="角色"
sortable
width="146">
<template slot-scope="scope">
{{scope.row.role || '--'}}
</template>
</el-table-column>
<el-table-column
prop="office"
label="公司/机关">
label="关联企业">
<template slot-scope="scope">
{{scope.row.office || '--'}}
</template>
</el-table-column>
<el-table-column
prop="position"
label="职位"
width="125">
<template slot-scope="scope">
{{scope.row.position || '--'}}
</template>
</el-table-column>
<el-table-column
prop="phone"
label="联系方式"
width="175">
<template slot-scope="scope">
{{scope.row.phone || '--'}}
</template>
</el-table-column>
<el-table-column
prop="accendant"
......@@ -86,18 +101,24 @@
<el-form-item label="联系人姓名:" class="row">
<el-input type="text" v-model="queryParam.name" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="联系人性别:" class="row">
<el-radio-group v-model="queryParam.sex">
<el-radio label=1></el-radio>
<el-radio label=0></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="联系人角色:" class="row">
<el-input type="text" v-model="queryParam.role" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="联系人职位:" class="row">
<el-input type="text" v-model="queryParam.position" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="联系人公司/机关:" class="row">
<el-form-item label="关联企业:" class="row">
<el-input type="text" v-model="queryParam.office" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="内部维护人:" class="row">
<el-input type="text" v-model="queryParam.accendant" placeholder="请输入"></el-input>
<el-form-item label="联系人职位:" class="row">
<el-input type="text" v-model="queryParam.position" placeholder="请输入"></el-input>
</el-form-item>
<!--<el-form-item label="内部维护人:" class="row">-->
<!--<el-input type="text" v-model="queryParam.accendant" placeholder="请输入"></el-input>-->
<!--</el-form-item>-->
<el-form-item label="联系方式:" class="row">
<el-input type="text" v-model="queryParam.phone" placeholder="请输入"></el-input>
</el-form-item>
......@@ -120,7 +141,8 @@
detailId: { //从企业详情跳转过来ID
type: Number,
default: 0
}
},
isDisabled:false,
},
data(){
return{
......@@ -140,6 +162,7 @@
total:0,
projectname:this.$route.query.projectname,
queryParam:[],
isDisabled:this.isDisabled,
}
},
created(){
......@@ -148,6 +171,7 @@
methods:{
getDetail(item){
this.dialogVisible = true
item.sex = item.sex.toString()
this.queryParam = item
this.isnew = false
},
......@@ -158,8 +182,10 @@
})
},
save(){
let param = JSON.parse(JSON.stringify(this.queryParam))
param.sex = parseInt(param.sex)
if(this.isnew == false){
editLXR(this.queryParam).then(result=>{
editLXR(param).then(result=>{
if(result.code == 200){
this.$message.success('保存成功!')
this.getList()
......@@ -168,7 +194,7 @@
})
}
if(this.isnew == true){
addLXR(this.queryParam).then(result=>{
addLXR(param).then(result=>{
if(result.code == 200){
this.$message.success('新增成功!')
this.getList()
......@@ -192,11 +218,12 @@
this.queryParam = {
businessId:this.id,
name:"",
sex:"1",
role:"",
office:"",
position:"",
phone:"",
accendant:"",
// accendant:"",
}
},
}
......
......@@ -4,14 +4,14 @@
<el-card class="box-card noborder">
<div class="cardtitles">相关企业</div>
<div class="searchbtns">
<el-select class="select" placeholder="企业类型" clearable="true" v-model="searchParam.companyType" @change="handleCurrentChange(1)">
<el-select class="select" placeholder="企业类型" clearable v-model="searchParam.companyType" @change="handleCurrentChange(1)">
<el-option v-for="(item,index) in companytype" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
<div class="searchInput">
<el-input type="text" placeholder="输入关键词查询" v-model="searchParam.companyName"></el-input>
<el-input type="text" placeholder="输入关键词查询" clearable v-model="searchParam.companyName"></el-input>
<div class="btn" @click="handleCurrentChange(1)">搜索</div>
</div>
<div class="btn btn_primary h32 b3" @click="opennew"><div class="img img1"></div>添加相关企业</div>
<div class="btn btn_primary h32 b3" @click="opennew" v-if="isDisabled == false"><div class="img img1"></div>添加相关企业</div>
</div>
<div class="document tables">
<el-table
......@@ -23,7 +23,7 @@
<img src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或添加相关企业,重新搜索</div>
<!--<div class="btn btn_primary h36 w102" @click="opennew">新增相关企业</div>-->
<div class="btn btn_primary h36 w102" @click="opennew" v-if="isDisabled==false">新增相关企业</div>
</div>
</template>
<el-table-column
......@@ -36,13 +36,13 @@
</el-table-column>
<el-table-column
prop="depth"
sortable
label="对接深度/竞争力度"
>
</el-table-column>
<el-table-column
prop="companyRole"
label="企业角色"
sortable
width="">
</el-table-column>
<el-table-column
......@@ -50,7 +50,7 @@
label="负责人"
width="">
</el-table-column>
<el-table-column
<el-table-column v-if="isDisabled == false"
prop="name"
label=""
align="right"
......@@ -143,7 +143,8 @@
detailId: { //从企业详情跳转过来ID
type: Number,
default: 0
}
},
isDisabled:false,
},
data(){
return{
......@@ -179,6 +180,7 @@
companyName:'',
},
ondel:-1,
isDisabled:this.isDisabled,
}
},
created(){
......@@ -266,6 +268,9 @@
</script>
<style lang="scss" scoped>
.searchInput .el-input{
width: 68%;
}
.w102{
width: 102px;
}
......
......@@ -8,7 +8,7 @@
<div class="con">
<span>项目级别 :</span>
<div class="inputxt" id="inputxt1">
<div class="flex" v-if="nowedit == 1">
<div class="flex" v-if="nowedit == 1 && isDisabled == false" >
<el-input placeholder="待添加" v-model="xmsldata.projectLevel"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL({projectLevel:xmsldata.projectLevel})">确定</div>
......@@ -26,7 +26,7 @@
{{xmjd}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="xmjd" class="select-multiple" placeholder="请选择" @change="editXMSL({projectStage:xmjd})">
<el-select v-if="isDisabled==false" v-model="xmjd" class="select-multiple" placeholder="请选择" @change="editXMSL({projectStage:xmjd})">
<el-option v-for="(item,index) in projectStage" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</div>
......@@ -38,9 +38,9 @@
<div class="flex tipinput">
<div class="tips" v-for="(item,index) in tipslit">{{item}}<img @click="deltip(item)" src="@/assets/images/project/del.png"></div>
<div style="position: relative">
<el-input placeholder="待添加" v-model="tipsvalue" @input="getValue" :style="spanWidth"></el-input><span class="spanText">{{ tipsvalue }}</span>
<el-input placeholder="待添加" :disabled="isDisabled" v-model="tipsvalue" @input="getValue" :style="spanWidth"></el-input><span class="spanText">{{ tipsvalue }}</span>
</div>
<div class="addbtn" @click="addtips"></div>
<div class="addbtn" v-if="isDisabled == false" @click="addtips"></div>
</div>
</div>
</div>
......@@ -53,7 +53,7 @@
<div class="con">
<span>主管单位 :</span>
<div class="inputxt" id="inputxt2">
<div class="flex" v-if="nowedit == 2">
<div class="flex" v-if="nowedit == 2 && isDisabled == false">
<el-input placeholder="待添加" v-model="xmsldata.supervisorUnit"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL({supervisorUnit:xmsldata.supervisorUnit})">确定</div>
......@@ -66,7 +66,7 @@
<div class="con i">
<span>建设单位 :</span>
<div class="inputxt" id="inputxt3" :style="{width:rig1}">
<div class="flex" v-if="nowedit == 3">
<div class="flex" v-if="nowedit == 3 && isDisabled == false">
<el-input placeholder="待添加" v-model="xmsldata.constructionUnit"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL({constructionUnit:xmsldata.constructionUnit})">确定</div>
......@@ -82,7 +82,7 @@
<div class="con">
<span>主管单位负责人 :</span>
<div class="inputxt" id="inputxt4">
<div class="flex" v-if="nowedit == 4">
<div class="flex" v-if="nowedit == 4 && isDisabled == false">
<el-input placeholder="待添加" v-model="xmsldata.supervisorPrincipal"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL({supervisorPrincipal:xmsldata.supervisorPrincipal})">确定</div>
......@@ -95,7 +95,7 @@
<div class="con i">
<span>建设单位负责人 :</span>
<div class="inputxt" id="inputxt5">
<div class="flex" v-if="nowedit == 5">
<div class="flex" v-if="nowedit == 5 && isDisabled == false">
<el-input placeholder="待添加" v-model="xmsldata.constructionPrincipal"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL({constructionPrincipal:xmsldata.constructionPrincipal})">确定</div>
......@@ -110,7 +110,7 @@
<div class="con">
<span>主管单位联系电话 :</span>
<div class="inputxt" id="inputxt6">
<div class="flex" v-if="nowedit == 6">
<div class="flex" v-if="nowedit == 6 && isDisabled == false">
<el-input placeholder="待添加" v-model="xmsldata.supervisorPhone"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" @click="isphone(1,xmsldata.supervisorPhone)" style="width: 56px">确定</div>
......@@ -123,7 +123,7 @@
<div class="con i">
<span>建设单位联系电话 :</span>
<div class="inputxt" id="inputxt7">
<div class="flex" v-if="nowedit == 7">
<div class="flex" v-if="nowedit == 7 && isDisabled == false">
<el-input placeholder="待添加" v-model="xmsldata.constructionPhone"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" @click="isphone(2,xmsldata.constructionPhone)" style="width: 56px">确定</div>
......@@ -177,7 +177,6 @@
export default {
name: 'xmsl',
props:{
datas:'',
detailId: { //从企业详情跳转过来ID
type: Number,
default: 0
......@@ -191,9 +190,10 @@
xmjd:'待添加',
projectStage:[],//项目阶段
id: this.detailId ? this.detailId : this.$route.query.id,
xmsldata:this.datas,
xmsldata:[],
spanWidth:'width: 70px',
rig1:'184px',
isDisabled:false,
}
},
created(){
......@@ -205,6 +205,8 @@
},
mounted(){
document.addEventListener('mouseup',(e) => {
if(this.isDisabled == true)
return false
let j = 0
for(var i=1;i<=7;i++){
let isSelf = document.getElementById('inputxt'+i).contains(event.target) // 这个是自己的区域
......@@ -215,6 +217,33 @@
}
}
if(j == 7){
if(this.nowedit != -1){
let param = {}
switch (this.nowedit) {
case 1:
param = {'projectLevel':this.xmsldata.projectLevel}
break;
case 2 :
param = {'supervisorUnit':this.xmsldata.supervisorUnit}
break;
case 3 :
param = {'constructionUnit':this.xmsldata.constructionUnit}
break;
case 4 :
param = {'supervisorPrincipal':this.xmsldata.supervisorPrincipal}
break;
case 5 :
param = {'constructionPrincipal':this.xmsldata.constructionPrincipal}
break;
case 6 :
param = {'supervisorPhone':this.xmsldata.supervisorPhone}
break;
case 7 :
param = {'constructionPhone':this.xmsldata.constructionPhone}
break;
}
this.editXMSL(param)
}
this.nowedit = -1
}
})
......@@ -232,6 +261,9 @@
});
},
editXMSL(param){
this.nowedit = -1
if(this.isDisabled == true)
return false
if(param.projectStage){//修改项目阶段
this.$emit('Refreshs',param)
this.xmjd = param.projectStage
......@@ -240,13 +272,14 @@
params.id = this.id
editXMNR(JSON.stringify(params)).then(res=>{
if (res.code == 200){
this.$message.success('修改成功!')
if(!param.projectStage){
this.$message.success('修改成功!')
}
}else{
this.$message.error(res.msg)
this.getXMSL()
}
})
this.nowedit = -1
}
},
//验证电话号码
......@@ -307,8 +340,7 @@
this.xmjd = result.data.projectStage
this.tipslit = result.data.labelList
this.xmsldata = result.data
this.isDisabled = result.data.isFounder == 1 ? false:true
const spanStyle = document.querySelector(".rig1");
this.$nextTick(() => { // 如果不用$nextTick的话页面并不会更新,它是在下次dom更新后再渲染到页面上
this.rig1 =
......
......@@ -6,7 +6,7 @@
<div class="searchbtns">
<!--<div class="searchbtns" v-if="fileDatas.rows != null && fileDatas.rows.length>0">-->
<div class="searchInput">
<el-input type="text" v-model="param.keyword" placeholder="输入关键词查询"></el-input>
<el-input type="text" v-model="param.keyword" clearable placeholder="输入关键词查询"></el-input>
<div class="btn" @click="handleCurrentChange(1)">搜索</div>
</div>
<div class="btn btn_primary h32 b2" @click="getUP"><div class="img img2"></div>上传</div>
......@@ -51,9 +51,9 @@
<template slot="empty">
<div class="empty">
<img src="@/assets/images/project/empty.png">
<div class="p1">暂无数据展示</div>
<div class="p2">抱歉,你还未添加相关数据,快去上传吧</div>
<div class="btn btn_primary h36 w102" @click="getUP">上传文档</div>
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或筛选条件,重新搜索</div>
<div v-if="isDisabled==false" class="btn btn_primary h36 w102" @click="getUP">上传文档</div>
</div>
</template>
<el-table-column
......@@ -89,7 +89,7 @@
<template slot-scope="scope">
<div class="hoverbtn">
<div class="xz" @click="downnlod(scope.row)">下载</div>
<div class="sc" @click="del(scope.row.filePath)">删除</div>
<div class="sc" v-if="isDisabled == false" @click="del(scope.row.filePath)">删除</div>
</div>
</template>
</el-table-column>
......@@ -128,7 +128,8 @@
detailId: { //从企业详情跳转过来ID
type: Number,
default: 0
}
},
isDisabled:false,
},
data(){
return{
......@@ -150,6 +151,7 @@
fileDatas:[],
filename:'',
ondel:"",
isDisabled:this.isDisabled,
}
},
created(){
......@@ -192,6 +194,8 @@
}
},
getUP(){
if(this.isDisabled==true)
return false
this.isupload=true
this.$nextTick(() => {
this.$refs.uploadFile.$children[0].$refs.input.webkitdirectory = true
......@@ -345,4 +349,7 @@
}
}
}
.searchInput .el-input{
width: 68%;
}
</style>
......@@ -29,7 +29,7 @@
</div>
</div>
</div>
<div class="contets row">
<div class="contets row" readonly>
<div class="det-con">
<span>项目类型:</span>
<div class="select-popper" >
......@@ -37,7 +37,7 @@
{{xmlx}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="xmlx" class="select-multiple" placeholder="请选择" @change="editXMSL({projectType:xmlx})">
<el-select v-if="isDisabled == false" v-model="xmlx" class="select-multiple" placeholder="请选择" @change="editXMSL({projectType:xmlx})">
<el-option v-for="(item,index) in projectType" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</div>
......@@ -50,7 +50,7 @@
{{xmlb}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="xmlb" class="select-multiple" placeholder="请选择" @change="editXMSL({projectCategory:xmlb})">
<el-select v-if="isDisabled==false" v-model="xmlb" class="select-multiple" placeholder="请选择" @change="editXMSL({projectCategory:xmlb})">
<el-option v-for="(item,index) in projectCategory" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</div>
......@@ -59,7 +59,7 @@
<div class="det-con con" id="inputxt">
<span>投资估算(万元):</span>
<div class="inputxt i" :class="{'nomar':nowedit != 3}">
<div class="flex" v-if="nowedit == 3">
<div class="flex" v-if="nowedit == 3 && isDisabled == false">
<el-input v-model="ProjectData.investmentAmount" placeholder="待添加" @input="number"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL({investmentAmount:ProjectData.investmentAmount})">确定</div>
......@@ -77,7 +77,7 @@
{{addresstxt}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-cascader class="cascader-region select-location" v-model="ProjectData.address"
<el-cascader :disabled="isDisabled" class="cascader-region select-location" v-model="ProjectData.address"
ref="myCascader" :props="props"
:options="addressList"
@change="handleChange"></el-cascader>
......@@ -107,19 +107,19 @@
</div>
</el-card>
<!--项目速览-->
<xmsl v-if="thistag == 'xmsl'" :key="keys" @Refreshs="getsl" :datas="ProjectData" :detailId="detailId"></xmsl>
<xmsl v-if="thistag == 'xmsl'" :key="keys" @Refreshs="getsl" :detailId="detailId"></xmsl>
<!--建设内容-->
<jsnr v-if="thistag == 'jsnr'" :detailId="detailId"></jsnr>
<jsnr v-if="thistag == 'jsnr'" :isDisabled='isDisabled' :detailId="detailId"></jsnr>
<!--联系人-->
<lxr v-if="thistag == 'lxr'" :detailId="detailId"></lxr>
<lxr v-if="thistag == 'lxr'" :isDisabled='isDisabled' :detailId="detailId"></lxr>
<!--跟进记录-->
<gjjl v-if="thistag == 'gjjl'" types="gjjl" :detailId="detailId"></gjjl>
<gjjl v-if="thistag == 'gjjl'" :isDisabled='isDisabled' types="gjjl" :detailId="detailId"></gjjl>
<!--工作待办-->
<gzdb v-if="thistag == 'gzdb'" :detailId="detailId"></gzdb>
<gzdb v-if="thistag == 'gzdb'" :isDisabled='isDisabled' :detailId="detailId"></gzdb>
<!--资料文档-->
<zlwd v-if="thistag == 'zlwd'" :detailId="detailId"></zlwd>
<zlwd v-if="thistag == 'zlwd'" :isDisabled='isDisabled' :detailId="detailId"></zlwd>
<!--相关企业-->
<xgqy v-if="thistag == 'xgqy'" :detailId="detailId"></xgqy>
<xgqy v-if="thistag == 'xgqy'" :isDisabled='isDisabled' :detailId="detailId"></xgqy>
</div>
</div>
</template>
......@@ -175,6 +175,7 @@
props:{ checkStrictly: true, expandTrigger: 'hover' },
id:'',
ProjectData:{},
isDisabled:false,
keys:1,
}
},
......@@ -202,9 +203,14 @@
this.choose(data.projectStage)
},
handleALL(event){
if(this.isDisabled == true)
return false
var one = document.getElementById("inputxt");
if(one){
if(!one.contains(event.target)){
if(this.nowedit != -1){
this.editXMSL({investmentAmount:this.ProjectData.investmentAmount})
}
this.nowedit = -1
}else{
this.nowedit = 3
......@@ -215,6 +221,7 @@
getXMSL(this.id).then(result=>{
this.ProjectData = result.code==200?result.data:{}
this.$route.query.projectname = result.data.projectName
this.isDisabled = result.data.isFounder == 1 ? false:true
this.xmlx = result.data.projectType==""||result.data.projectType==null?"请选择":result.data.projectType
this.xmlb = result.data.projectCategory==""||result.data.projectCategory==null?"请选择":result.data.projectCategory
this.thisindex = result.data.projectStage
......@@ -249,6 +256,8 @@
this.ProjectData.isPrivate = isPrivate
},
editXMSL(param){
if(this.isDisabled == true)
return false
let params = param
params.id = this.id
editXMNR(JSON.stringify(params)).then(res=>{
......@@ -294,6 +303,8 @@
this.lastindex = value
},
choose(value){
if(this.isDisabled == true)
return false
this.thisindex = value
this.editXMSL({projectStage:value})
let _this = this
......
......@@ -99,7 +99,9 @@
<div class="titles">项目明细
<div class="dc">
<div class="total">{{total}}</div>
<div class="btn-export"><img src="@/assets/images/EXCEL.png">导出EXCEL</div>
<el-tooltip class="item" effect="dark" content="功能正在开发中" placement="top">
<div class="btn-export"><img src="@/assets/images/EXCEL.png">导出EXCEL</div>
</el-tooltip>
</div>
</div>
<div class="tables" v-if="total == 0">
......@@ -452,6 +454,9 @@ export default {
}
</script>
<style lang="scss" scoped>
.btn_primary{
margin-top: 16px;
}
.jabph_popper_box{
left: 110px;
}
......
......@@ -79,4 +79,13 @@ public interface EconomicService {
*/
AjaxResult regionalCompare(OpRegionalEconomicDataStatisticsRegionalDto dto);
/***
*@Description: 地区经济-对比
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult regionalMultipleCompare (OpRegionalEconomicRegionalCompareDto dto);
}
package com.dsk.system.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.dsk.common.core.domain.entity.BusinessContacts;
import com.dsk.common.core.domain.model.LoginUser;
import com.dsk.common.exception.base.BaseException;
import com.dsk.common.utils.CheckUtils;
import com.dsk.common.utils.DateUtils;
import com.dsk.common.utils.SecurityUtils;
import com.dsk.system.mapper.BusinessContactsMapper;
import com.dsk.system.service.IBusinessContactsService;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -59,6 +62,10 @@ public class BusinessContactsServiceImpl implements IBusinessContactsService
public int insertBusinessContacts(BusinessContacts businessContacts)
{
if(!CheckUtils.isPhone(businessContacts.getPhone())) throw new BaseException("500","请输入正确的电话号码");
LoginUser loginUser = SecurityUtils.getLoginUser();
if (ObjectUtil.isEmpty(loginUser)) throw new BaseException("请登录");
//维护人员为当前登录用户
businessContacts.setAccendant(loginUser.getUsername());
return businessContactsMapper.insertBusinessContacts(businessContacts);
}
......
......@@ -51,16 +51,17 @@ public class CustomerServiceImpl implements ICustomerService {
@Override
public List<CustomerListVo> selectList(CustomerSearchDto dto) {
dto.setUserId(SecurityUtils.getUserId());
List<CustomerListVo> vos = baseMapper.selectList(dto);
vos.parallelStream().forEach(vo -> {
//合作项目
vo.setCooperationProject(businessInfoService.selectCountByStatusAndCustomerId(2, vo.getCustomerId()));
//跟进项目
vo.setFollowProject(businessInfoService.selectCountByStatusAndCustomerId(1, vo.getCustomerId()));
//储备项目
vo.setReserveProject(businessInfoService.selectCountByStatusAndCustomerId(0, vo.getCustomerId()));
});
return vos;
// List<CustomerListVo> vos = baseMapper.selectList(dto);
// vos.parallelStream().forEach(vo -> {
// //合作项目
// vo.setCooperationProject(businessInfoService.selectCountByStatusAndCustomerId(2, vo.getCustomerId()));
// //跟进项目
// vo.setFollowProject(businessInfoService.selectCountByStatusAndCustomerId(1, vo.getCustomerId()));
// //储备项目
// vo.setReserveProject(businessInfoService.selectCountByStatusAndCustomerId(0, vo.getCustomerId()));
// });
// return vos;
return baseMapper.selectList(dto);
}
@Override
......
......@@ -70,4 +70,10 @@ public class EconomicServiceImpl implements EconomicService {
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult regionalMultipleCompare(OpRegionalEconomicRegionalCompareDto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/economic/regional/multipleCompare", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
}
......@@ -92,7 +92,7 @@
i.district_name districtName,
i.investment_amount investmentAmount,
i.construction_unit ownerCompany,
MAX(f.create_time) followTime,
MAX(f.creat_time) followTime,
u.nick_name nickName,
GROUP_CONCAT(DISTINCT l.label) label
FROM business_info i
......
......@@ -10,7 +10,7 @@
ct.performance_characteristic, ct.other_ms_characteistic, ct.create_id, ct.create_time, ct.update_id, ct.update_time
</sql>
<select id="selectList" resultType="com.dsk.system.domain.customer.vo.CustomerListVo">
<select id="selectList1" resultType="com.dsk.system.domain.customer.vo.CustomerListVo">
select
u.nick_name followUser,
<include refid="Base_Bean"></include>
......@@ -21,6 +21,26 @@
<if test="dto.companyName != null and dto.companyName != '' "> and ct.company_name like concat('%',#{dto.companyName},'%')</if>
</select>
<select id="selectList" resultType="com.dsk.system.domain.customer.vo.CustomerListVo">
select
u.nick_name followUser, bi1.num reserveProject, bi2.num followProject, bi3.num cooperationProject,
<include refid="Base_Bean"></include>
from customer ct
join customer_user ctu on ct.customer_id = ctu.customer_id
join sys_user u on ctu.user_id = u.user_id
left join (
select count(status) num,customer_id from business_info where `status` = 0 group by customer_id
) bi1 on bi1.customer_id = ct.customer_id
left join (
select count(status) num,customer_id from business_info where `status` = 1 group by customer_id
) bi2 on bi2.customer_id = ct.customer_id
left join (
select count(status) num,customer_id from business_info where `status` = 2 group by customer_id
) bi3 on bi3.customer_id = ct.customer_id
where ctu.user_id = #{dto.userId}
<if test="dto.companyName != null and dto.companyName != '' "> and ct.company_name like concat('%',#{dto.companyName},'%')</if>
</select>
<select id="selectUserList" resultType="com.dsk.system.domain.customer.Customer">
select
ct.customer_id, ct.company_name
......
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