Commit 9d931208 authored by 远方不远's avatar 远方不远
parents a6889c07 a112ab76
...@@ -16,7 +16,6 @@ import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto; ...@@ -16,7 +16,6 @@ import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto;
import com.dsk.system.domain.customer.dto.CustomerSearchDto; import com.dsk.system.domain.customer.dto.CustomerSearchDto;
import com.dsk.system.service.ICustomerService; import com.dsk.system.service.ICustomerService;
import com.dsk.web.controller.search.service.BusinessOpportunityRadarService; import com.dsk.web.controller.search.service.BusinessOpportunityRadarService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
...@@ -68,6 +67,23 @@ public class CustomerController extends BaseController { ...@@ -68,6 +67,23 @@ public class CustomerController extends BaseController {
@PostMapping() @PostMapping()
@RepeatSubmit @RepeatSubmit
public AjaxResult add(@RequestBody Customer customer) { public AjaxResult add(@RequestBody Customer customer) {
dealWithcustomerData(customer);
return AjaxResult.success(baseService.add(customer));
}
/**
* 认领客户
*/
// @PreAuthorize("@ss.hasPermi('customer:claim')")
@PostMapping("/claim")
@RepeatSubmit
public AjaxResult claim(@RequestBody Customer customer) {
if (ObjectUtils.isEmpty(customer.getUipId())) throw new BeanException("城投uipId不能为空");
dealWithcustomerData(customer);
return AjaxResult.success(baseService.add(customer));
}
private void dealWithcustomerData(Customer customer){
if (ObjectUtils.isEmpty(customer.getCompanyName())) throw new BeanException("企业名称不能为空"); if (ObjectUtils.isEmpty(customer.getCompanyName())) throw new BeanException("企业名称不能为空");
if (ObjectUtils.isEmpty(customer.getCompanyId())) { if (ObjectUtils.isEmpty(customer.getCompanyId())) {
try { try {
...@@ -79,7 +95,6 @@ public class CustomerController extends BaseController { ...@@ -79,7 +95,6 @@ public class CustomerController extends BaseController {
logger.debug("获取企业id错误!error:{}", e.getMessage()); logger.debug("获取企业id错误!error:{}", e.getMessage());
} }
} }
return AjaxResult.success(baseService.add(customer));
} }
/** /**
......
package com.dsk.web.controller.search.macroMarket; package com.dsk.web.controller.search.macroMarket;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.OpRegionalEconomicDataV1Dto; import com.dsk.common.dtos.OpRegionalEconomicDataRegionalListDto;
import com.dsk.common.dtos.OpRegionalEconomicDataStatisticsRegionalDto;
import com.dsk.common.dtos.OpRegionalEconomicDataV1PageDto; import com.dsk.common.dtos.OpRegionalEconomicDataV1PageDto;
import com.dsk.system.service.EconomicService; import com.dsk.system.service.EconomicService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
/** /**
* @ClassName RegionalEconomicDataController * @ClassName RegionalEconomicDataController
...@@ -30,7 +33,7 @@ public class RegionalEconomicDataController { ...@@ -30,7 +33,7 @@ public class RegionalEconomicDataController {
*@date: 2023/5/18 10:29 *@date: 2023/5/18 10:29
*/ */
@PostMapping("/national/nationalPage") @PostMapping("/national/nationalPage")
public AjaxResult nationalPage(@RequestBody OpRegionalEconomicDataV1PageDto dto) { public AjaxResult nationalPage(@RequestBody @Valid OpRegionalEconomicDataV1PageDto dto) {
return economicService.nationalPage(dto); return economicService.nationalPage(dto);
} }
...@@ -55,7 +58,7 @@ public class RegionalEconomicDataController { ...@@ -55,7 +58,7 @@ public class RegionalEconomicDataController {
*@date: 2023/5/18 10:29 *@date: 2023/5/18 10:29
*/ */
@PostMapping("/statistics/regional") @PostMapping("/statistics/regional")
public AjaxResult statisticsRegional(@RequestBody OpRegionalEconomicDataV1Dto dto) { public AjaxResult statisticsRegional(@RequestBody OpRegionalEconomicDataStatisticsRegionalDto dto) {
return economicService.statisticsRegional(dto); return economicService.statisticsRegional(dto);
} }
...@@ -67,7 +70,7 @@ public class RegionalEconomicDataController { ...@@ -67,7 +70,7 @@ public class RegionalEconomicDataController {
*@date: 2023/5/18 10:29 *@date: 2023/5/18 10:29
*/ */
@PostMapping("/regional/list") @PostMapping("/regional/list")
public AjaxResult regionalList(@RequestBody OpRegionalEconomicDataV1Dto dto) { public AjaxResult regionalList(@RequestBody OpRegionalEconomicDataRegionalListDto dto) {
return economicService.regionalList(dto); return economicService.regionalList(dto);
} }
......
package com.dsk.common.dtos;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @ClassName OpRegionalEconomicDataV1Dto
* @Description 专项债-项目类别统计
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicDataRegionalListDto {
/**
* 省Id
*/
@NotNull(message = "provinceId 不能为空")
private Integer provinceId;
/**
* 市Id
*/
private Integer cityId;
/**
* 区Id
*/
private Integer areaId;
}
package com.dsk.common.dtos;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @ClassName OpRegionalEconomicDataV1Dto
* @Description 专项债-项目类别统计
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicDataStatisticsRegionalDto {
/**
* id
*/
@NotNull(message = "id 不能为空")
private Integer id;
/**
* 年份
*/
private Integer year;
/**
* 省Id
*/
private Integer provinceId;
/**
* 市Id
*/
private Integer cityId;
/**
* 区Id
*/
private Integer areaId;
}
...@@ -3,6 +3,7 @@ package com.dsk.common.dtos; ...@@ -3,6 +3,7 @@ package com.dsk.common.dtos;
import com.dsk.common.core.domain.model.BasePage; import com.dsk.common.core.domain.model.BasePage;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List; import java.util.List;
/** /**
...@@ -18,6 +19,7 @@ public class OpRegionalEconomicDataV1PageDto extends BasePage { ...@@ -18,6 +19,7 @@ public class OpRegionalEconomicDataV1PageDto extends BasePage {
/** /**
* 年份 * 年份
*/ */
@NotNull(message = "year 不能为空")
private Integer year; private Integer year;
/** /**
* 省 * 省
......
...@@ -3,6 +3,8 @@ package com.dsk.common.dtos; ...@@ -3,6 +3,8 @@ package com.dsk.common.dtos;
import com.dsk.common.core.domain.model.BasePage; import com.dsk.common.core.domain.model.BasePage;
import lombok.Data; import lombok.Data;
import java.util.List;
/** /**
* @ClassName UrbanInvestmentPlatformDto * @ClassName UrbanInvestmentPlatformDto
...@@ -21,41 +23,41 @@ public class UrbanInvestmentPlatformDto extends BasePage { ...@@ -21,41 +23,41 @@ public class UrbanInvestmentPlatformDto extends BasePage {
/** /**
* 城投业务类型 * 城投业务类型
*/ */
private String uipBusinessType; private List<String> uipBusinessType;
/** /**
* 主体评级 * 主体评级
*/ */
private String bratingSubjectLevel; private List<String> bratingSubjectLevel;
/** /**
* 股东背景 * 股东背景
*/ */
private String shareholderBg; private List<String> shareholderBg;
/** /**
* 股权关系 * 股权关系
*/ */
private String equityRelationship; private List<String> equityRelationship;
/** /**
* 平台重要性 * 平台重要性
*/ */
private String platformImportance; private List<String> platformImportance;
/** /**
* 所属开发区 * 所属开发区
*/ */
private String developmentZone; private List<String> developmentZone;
/** /**
* 省 * 省
*/ */
private Integer provinceId; private List<Integer> provinceIds;
/** /**
* 市 * 市
*/ */
private Integer cityId; private List<Integer> cityIds;
/** /**
* 区 * 区
*/ */
private Integer areaId; private List<Integer> areaIds;
/** /**
* 关键词 * 关键词
......
...@@ -36,8 +36,8 @@ export function getXMSL(param) { ...@@ -36,8 +36,8 @@ export function getXMSL(param) {
method: 'GET', method: 'GET',
}) })
} }
//项目速览修改 //项目内容修改
export function editXMSL(param) { export function editXMNR(param) {
return request({ return request({
url: '/business/info/edit', url: '/business/info/edit',
method: 'POST', method: 'POST',
...@@ -71,3 +71,56 @@ export function addLXR(param) { ...@@ -71,3 +71,56 @@ export function addLXR(param) {
}) })
} }
//跟进记录
export function getGJJL(param) {
return request({
url: '/business/record/list',
method: 'get',
params:param
})
}
//新增跟进记录
export function addGJJL(param) {
return request({
url: '/business/record/add',
method: 'POST',
data:param
})
}
//删除跟进记录
export function delGJJL(param) {
return request({
url: '/business/record/remove/',
method: 'DELETE',
params:param
})
}
//工作待办
export function getGZDB(param) {
return request({
url: '/business/backlog/list',
method: 'GET',
params:param
})
}
//添加工作待办
export function addGZDB(param) {
return request({
url: '/business/backlog/add',
method: 'post',
data:param
})
}
//修改工作待办
export function editGZDB(param) {
return request({
url: '/business/backlog/edit',
method: 'post',
data:param
})
}
This diff is collapsed.
...@@ -530,7 +530,7 @@ ul, li { ...@@ -530,7 +530,7 @@ ul, li {
line-height: 32px; line-height: 32px;
} }
&:hover{ &:hover{
color: #006AD1; color: #f;
border-color: #006AD1; border-color: #006AD1;
} }
} }
......
...@@ -568,6 +568,7 @@ ...@@ -568,6 +568,7 @@
.el-input{ .el-input{
display: inline-block; display: inline-block;
margin-right: 12px; margin-right: 12px;
position: relative;
.el-input__inner{ .el-input__inner{
height: 32px; height: 32px;
padding: 0; padding: 0;
...@@ -580,7 +581,8 @@ ...@@ -580,7 +581,8 @@
.el-input__prefix{ .el-input__prefix{
left: 8px; left: 8px;
top: 3px; top: -2px;
position: absolute;
} }
.el-input__suffix{ .el-input__suffix{
height: 32px; height: 32px;
......
This diff is collapsed.
<template> <template>
<div class="login"> <div class="login">
<div class="content">
<div class="left">
<img class="logo" src="../assets/images/logo1.png" />
<img class="img" src="../assets/images/login/img.png" />
</div>
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form"> <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
<h3 class="title"><img src="../assets/images/title_icon.png"/>欢迎登录系统</h3> <h3 class="title"><img src="../assets/images/title_icon.png"/>欢迎登录系统</h3>
<el-form-item prop="username"> <el-form-item prop="username">
...@@ -55,6 +60,7 @@ ...@@ -55,6 +60,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
</div>
</template> </template>
<script> <script>
...@@ -153,12 +159,32 @@ export default { ...@@ -153,12 +159,32 @@ export default {
<style rel="stylesheet/scss" lang="scss"> <style rel="stylesheet/scss" lang="scss">
.login { .login {
display: flex; /*display: flex;*/
justify-content: center; justify-content: center;
align-items: center; align-items: center;
height: 100%; height: 100%;
background-image: url("../assets/images/login_bg.png"); background-image: url("../assets/images/login_bg.png");
background-size: cover; background-size: cover;
overflow-y: hidden;
.content{
width: 1320px;
margin: 0 auto;
padding-top: 160px;
}
.left{
float: left;
width: 730px;
margin-right: 170px;
}
.logo{
width: 317px;
height: 69px;
margin-bottom: 58px;
}
.img{
width: 730px;
height: 624px;
}
} }
.title { .title {
padding: 46px 0 32px 48px; padding: 46px 0 32px 48px;
...@@ -177,6 +203,8 @@ export default { ...@@ -177,6 +203,8 @@ export default {
border-radius: 6px; border-radius: 6px;
background: #ffffff; background: #ffffff;
width: 420px; width: 420px;
float: right;
margin-top: 70px;
/*padding: 25px 25px 5px 25px;*/ /*padding: 25px 25px 5px 25px;*/
.el-form-item{ .el-form-item{
padding: 0 48px; padding: 0 48px;
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="recordlist"> <div class="recordlist" v-if="showtype=='gjdt'">
<div class="rec_detail" v-for="(item,index) in recordlist.rows"> <div class="rec_detail" v-for="(item,index) in recordlist.rows">
<div class="rec_time"> <div class="rec_time">
...@@ -54,17 +54,39 @@ ...@@ -54,17 +54,39 @@
<div><strong>{{item.nickName}}</strong> <span v-if="item.visitMode">({{item.visitMode}})</span></div> <div><strong>{{item.nickName}}</strong> <span v-if="item.visitMode">({{item.visitMode}})</span></div>
<div><span>{{item.content}}</span></div> <div><span>{{item.content}}</span></div>
<div class="rec_text"> <div class="rec_text">
<span>拜访对象:{{item.name||'--'}}</span> <span v-if="item.name">拜访对象:{{item.name||'--'}}</span>
<span v-if="showtype == 'gjdt'">关联企业:{{item.companyName||'--'}}</span> <span v-if="showtype == 'gjdt' && companyName != ''">关联企业:{{item.companyName}}</span>
<span>职位:{{item.position||'--'}}</span> <span v-if="item.position">职位:{{item.position}}</span>
<span>拜访时间:{{item.createTime && item.createTime.slice(0, 10)}}</span> <span v-if="item.createTime">拜访时间:{{item.createTime.slice(0, 10)}}</span>
<span>下次拜访时间:{{item.nextVisitTime == null?'--': item.createTime.slice(0, 10)}}</span> <span v-if="item.nextVisitTime">下次拜访时间:{{item.createTime.slice(0, 10)}}</span>
</div> </div>
</div> </div>
</div> </div>
</div>
<div class="recordlist" v-if="showtype=='gjjl' && recordlist.total>0">
<div class="rec_detail" v-for="(item,index) in recordlist.rows">
<div class="rec_time">
<i class="el-icon-time"></i>
<div>{{item.creatTime}}</div>
<div class="operate">
<!--<img src="@/assets/images/edit.png">第一期不做编辑-->
<img @click="delRecord(item.id)" src="@/assets/images/delete.png">
</div>
</div>
<div class="rec_con">
<div><strong>{{item.nickName}}</strong> <span v-if="item.visitWay">({{item.visitWay}})</span></div>
<div><span>{{item.recordInfo}}</span></div>
<div class="rec_text">
<span v-if="item.visitPerson">拜访对象:{{item.visitPerson||'--'}}</span>
<span v-if="item.position">职位:{{item.position||'--'}}</span>
<span v-if="item.creatTime">拜访时间:{{item.creatTime}}</span>
<span v-if="item.nextVisitTime">下次拜访时间:{{item.nextVisitTime || '--'}}</span>
</div> </div>
<div class="tables" v-if="recordlist.total>0"> </div>
</div>
</div>
<div class="tables" v-if="recordlist.total>pageSize">
<div class="bottems"> <div class="bottems">
<el-pagination <el-pagination
background background
...@@ -92,6 +114,7 @@ ...@@ -92,6 +114,7 @@
<script> <script>
import "@/assets/styles/project.scss" import "@/assets/styles/project.scss"
import {getFollowList,addFollowRecord,getUserList,delFollowRecord} from '@/api/custom/custom' import {getFollowList,addFollowRecord,getUserList,delFollowRecord} from '@/api/custom/custom'
import {getGJJL,addGJJL,delGJJL} from '@/api/project/project'
import {getEnterprise,getDictType,} from '@/api/main' import {getEnterprise,getDictType,} from '@/api/main'
export default { export default {
props:{ props:{
...@@ -123,6 +146,7 @@ ...@@ -123,6 +146,7 @@
recordlist:[],//列表数据源 recordlist:[],//列表数据源
isdel:false, isdel:false,
delID:'',//删除记录的ID delID:'',//删除记录的ID
projectId:parseInt(this.$route.query.id),//项目详情id
} }
}, },
computed: { computed: {
...@@ -140,6 +164,10 @@ ...@@ -140,6 +164,10 @@
}) })
this.getGJDTlist() this.getGJDTlist()
} }
//项目详情跟进记录
if(this.showtype == 'gjjl'){
this.getGJJL()
}
console.log(this.types) console.log(this.types)
}, },
methods:{ methods:{
...@@ -156,6 +184,26 @@ ...@@ -156,6 +184,26 @@
} }
}) })
} }
if(this.types == 'gjjl'){
let param = {
businessId:this.projectId,
userId:this.$store.state.user.userId,
visitPerson:this.addParam.name,
position:this.addParam.position,
nextVisitTime: this.addParam.nextVisitTime,
recordInfo:this.addParam.content,
visitWay:this.addParam.visitMode,
}
addGJJL(param).then(result=>{
if(result.code == 200){
this.$message.success(result.msg)
this.handleCurrentChange(1)
this.isEdit = false
}else{
this.$message.error(result.msg)
}
})
}
}, },
//删除跟进动态 //删除跟进动态
delRecord(id){ delRecord(id){
...@@ -172,6 +220,15 @@ ...@@ -172,6 +220,15 @@
} }
}) })
} }
if(this.types == 'gjjl') {
delGJJL(this.delID).then(result => {
if (result.code == 200) {
this.handleCurrentChange(1)
this.$message.success('删除成功')
this.isdel = false
}
})
}
}, },
//跟进动态列表 //跟进动态列表
getGJDTlist(){ getGJDTlist(){
...@@ -184,15 +241,27 @@ ...@@ -184,15 +241,27 @@
this.recordlist.rows.forEach(item=>{ this.recordlist.rows.forEach(item=>{
item.createTime = this.gettime(item.createTime) item.createTime = this.gettime(item.createTime)
item.nextVisitTime = this.gettime(item.nextVisitTime) item.nextVisitTime = this.gettime(item.nextVisitTime)
console.log(item.nextVisitTime )
}) })
}) })
}, },
getGJJL(){
let param = {
pageNum:this.pageNum,//页码
pageSize:this.pageSize,
businessId:this.projectId
}
getGJJL(param).then(result=>{
this.recordlist = result.code == 200?result:[]
})
},
handleCurrentChange(val){ handleCurrentChange(val){
this.pageNum = val this.pageNum = val
if(this.showtype == 'gjdt'){ if(this.showtype == 'gjdt'){
this.getGJDTlist() this.getGJDTlist()
} }
if(this.showtype == 'gjjl'){
this.getGJJL()
}
}, },
getEdit(){ getEdit(){
this.isEdit = true; this.isEdit = true;
......
<template> <template>
<div> <div>
<el-card class="box-card noborder"> <el-card class="box-card noborder">
<div class="cardtitles">跟进记录</div> <div class="cardtitles">工作待办</div>
<div class="records"> <div class="records">
<div class="writeIn"> <div class="writeIn">
<div class="default" v-if="isEdit == false" @click="getEdit"> <div class="default" v-if="isEdit == false" @click="getEdit">
...@@ -11,53 +11,52 @@ ...@@ -11,53 +11,52 @@
<div class="writting" v-if="isEdit == true"> <div class="writting" v-if="isEdit == true">
<div class="wri_top"> <div class="wri_top">
<img src="@/assets/images/project/add_3.png"> <img src="@/assets/images/project/add_3.png">
<el-input placeholder="新建一条跟进记录,如:周五上午预约客户上门拜访"></el-input> <el-input v-model="queryParam.task" placeholder="新建一条跟进记录,如:周五上午预约客户上门拜访"></el-input>
</div> </div>
<div class="wr_bot"> <div class="wr_bot">
<div class="times"><img src="@/assets/images/project/ico_4.png"> <div class="times"><img src="@/assets/images/project/ico_4.png">
<el-date-picker <el-date-picker
v-model="value" v-model="queryParam.finishTime"
type="date" type="date"
placeholder="待办时间"> placeholder="完成时间">
</el-date-picker> </el-date-picker>
</div> </div>
<el-input v-model="value" placeholder="拜访对象" style="width: 100px;"> <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> <i slot="prefix" class="el-input__icon"><img src="@/assets/images/project/ico_2.png"></i>
</el-input> </el-input>
<div class="btn btn_primary h32 wc" :class="{'btn_disabled':value == ''}">完成</div> <div class="btn btn_primary h32 wc" @click="add" :disabled="queryParam.task == ''" :class="{'btn_disabled':queryParam.task == ''}">完成</div>
</div> </div>
</div> </div>
</div> </div>
<div class="tasktitle"><strong>我的任务</strong><span>4条已逾期</span><!--<span class="on">4条已逾期</span>--></div> <div class="tasktitle"><strong>我的任务</strong><span @click="getYQ">4条已逾期</span><!--<span class="on">4条已逾期</span>--></div>
<div class="tasklist"> <div class="tasklist" v-for="(item,index) in datalist.rows">
<div class="task_name">周二拜访交通局李主任</div> <div class="task_name">{{item.task}}</div>
<div class="task_con"><span>发起时间:2023-01-24</span><span>关联客户:<font class="wordprimary">重庆市交通局</font></span><span>完成时间:2023-0.-03</span></div> <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':status == 1}"> <div class="select" :class="{'on':item.state == 2}">
<div class="select-popper"> <div class="select-popper">
<span class="color_text"> <span class="color_text">
{{status == 0?"未完成":"已完成"}} {{item.state == 2?"已完成":"未完成"}}
<i class="el-icon-caret-bottom"></i> <i class="el-icon-caret-bottom"></i>
</span> </span>
<el-select placeholder="请选择" v-model="status" class="select-multiple"> <el-select placeholder="请选择" v-model="item.state" class="select-multiple" @change="changes(item.id,$event)">
<el-option label="未完成" value="0"></el-option> <el-option label="未完成" value="0"></el-option>
<el-option label="已完成" value="1"></el-option> <el-option label="未完成" value="1"></el-option>
<el-option label="已完成" value="2"></el-option>
</el-select> </el-select>
</div></div> </div></div>
</div> </div>
<div class="tasklist">
<div class="task_name">周二拜访交通局李主任</div> <div class="tables" v-if="datalist.total>searchPram.pageSize">
<div class="task_con"><span>发起时间:2023-01-24</span><span>关联客户:<font class="wordprimary">重庆市交通局</font></span><span>完成时间:2023-0.-03</span></div> <div class="bottems">
<div class="select" :class="{'on':status == 1}"> <el-pagination
<div class="select-popper"> background
<span class="color_text"> :page-size="searchPram.pageSize"
{{status == 0?"未完成":"已完成"}} :current-page="searchPram.pageNum"
<i class="el-icon-caret-bottom"></i> @current-change="handleCurrentChange"
</span> layout="prev, pager, next"
<el-select placeholder="请选择" v-model="status" class="select-multiple"> :total="datalist.total">
<el-option label="未完成" value="0"></el-option> </el-pagination>
<el-option label="已完成" value="1"></el-option> </div>
</el-select>
</div></div>
</div> </div>
</div> </div>
</el-card> </el-card>
...@@ -67,6 +66,8 @@ ...@@ -67,6 +66,8 @@
<script> <script>
import "@/assets/styles/project.scss" import "@/assets/styles/project.scss"
import "@/assets/styles/public.css" import "@/assets/styles/public.css"
import {addGZDB,getGZDB,editGZDB} from '@/api/project/project'
export default { export default {
name: 'gjjl', name: 'gjjl',
data(){ data(){
...@@ -74,13 +75,67 @@ ...@@ -74,13 +75,67 @@
isEdit:false, isEdit:false,
value:'', value:'',
status:0, status:0,
queryParam:{
businessId:parseInt(this.$route.query.id),//项目详情id
target:'',
task:'',
finishTime:'',
},
searchPram:{
businessId:parseInt(this.$route.query.id),
pageSize:10,
pageNum:1,
state:null,
},
datalist:[],
} }
}, },
created(){
this.getList()
},
methods:{ methods:{
getEdit(){ getEdit(){
this.isEdit = true; this.isEdit = true;
this.value = "" this.value = ""
}, },
add(){
addGZDB(this.queryParam).then(result=>{
if(result.code == 200){
this.$message.success("添加成功!")
this.getList()
}else{
this.$message.error(result.msg)
}
})
},
getList(){
getGZDB(this.searchPram).then(result=>{
this.datalist = result.code == 200?result:[]
})
},
handleCurrentChange(val){
this.searchPram.pageNum = val
this.getList()
},
changes(id,state){
let param={
id:id,
state:state
}
editGZDB(param).then(result=>{
if(result.code == 200){
this.$message.success('修改成功!')
this.getList()
}else{
this.$message.error(result.msg)
}
})
},
getYQ(){
let state = this.searchPram.state
this.searchPram.state = state == 0?null:0
this.handleCurrentChange(1)
},
} }
} }
</script> </script>
......
...@@ -200,7 +200,7 @@ ...@@ -200,7 +200,7 @@
<script> <script>
import "@/assets/styles/project.scss" import "@/assets/styles/project.scss"
import {getJSNR,editXMSL} from '@/api/project/project' import {getJSNR,editXMNR} from '@/api/project/project'
export default { export default {
name: 'jsnr', name: 'jsnr',
data(){ data(){
...@@ -249,7 +249,7 @@ ...@@ -249,7 +249,7 @@
this.nowedit = -1 this.nowedit = -1
let param = str let param = str
param.id = this.id param.id = this.id
editXMSL(param).then(result=>{ editXMNR(param).then(result=>{
if(result.code == 200) if(result.code == 200)
this.$message.success('修改成功') this.$message.success('修改成功')
else{ else{
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<div class="cancels h28" @click="nowedit = -1" style="">取消</div> <div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div> </div>
</div> </div>
<span class="txt" v-else @click="nowedit = 1">待添加</span> <span class="txt" v-else @click="nowedit = 1">{{datas.projectLevel||'待添加'}}</span>
</div> </div>
</div> </div>
<div class="con i"> <div class="con i">
...@@ -138,27 +138,27 @@ ...@@ -138,27 +138,27 @@
<div class="otherdata"> <div class="otherdata">
<div class="det"> <div class="det">
<img src="@/assets/images/project/xgsj_1.png"> <img src="@/assets/images/project/xgsj_1.png">
<div class="i">0</div> <div class="i">{{datas.contactsCount}}</div>
<div class="j">联系人</div> <div class="j">联系人</div>
</div> </div>
<div class="det"> <div class="det">
<img src="@/assets/images/project/xgsj_2.png"> <img src="@/assets/images/project/xgsj_2.png">
<div class="i">0</div> <div class="i">{{datas.followRecordCount}}</div>
<div class="j">跟进记录</div> <div class="j">跟进记录</div>
</div> </div>
<div class="det"> <div class="det">
<img src="@/assets/images/project/xgsj_3.png"> <img src="@/assets/images/project/xgsj_3.png">
<div class="i">0</div> <div class="i">{{datas.backlogCount}}</div>
<div class="j">工作待办</div> <div class="j">工作待办</div>
</div> </div>
<div class="det"> <div class="det">
<img src="@/assets/images/project/xgsj_4.png"> <img src="@/assets/images/project/xgsj_4.png">
<div class="i">0</div> <div class="i">{{datas.fileCount}}</div>
<div class="j">资料文档</div> <div class="j">资料文档</div>
</div> </div>
<div class="det"> <div class="det">
<img src="@/assets/images/project/xgsj_5.png"> <img src="@/assets/images/project/xgsj_5.png">
<div class="i">0</div> <div class="i">{{datas.relateCompanyCount}}</div>
<div class="j">相关企业</div> <div class="j">相关企业</div>
</div> </div>
</div> </div>
...@@ -190,6 +190,8 @@ ...@@ -190,6 +190,8 @@
getDictType('project_stage_type').then(result=>{ getDictType('project_stage_type').then(result=>{
this.projectStage = result.code == 200 ? result.data:[] this.projectStage = result.code == 200 ? result.data:[]
}) })
this.xmjd = this.datas.projectStage
this.tipslit = this.datas.labelList
}, },
methods:{ methods:{
//验证电话号码 //验证电话号码
......
...@@ -5,18 +5,19 @@ ...@@ -5,18 +5,19 @@
<span> / 商机列表</span> <span> / 商机列表</span>
<span> / 项目详情</span> <span> / 项目详情</span>
</div> </div>
<div class="app-container"> <div class="app-container" v-if="ProjectData">
<el-card class="box-card noborder pad16 overflows"> <el-card class="box-card noborder pad16 overflows">
<div class="head baseinfo"> <div class="head baseinfo">
<div class="titles"> <div class="titles">
<img src="@/assets/images/project/headimg.png" class="headimg"> <img src="@/assets/images/project/headimg.png" class="headimg">
<strong class="text">重庆市轨道交通3号线二期工程4标段施工总承包</strong> <strong class="text">{{ProjectData.projectName}}</strong>
<div class="locks"> <div class="locks">
<img v-if="islock == true" src="@/assets/images/project/lock.png"> <img v-if="ProjectData.isPrivate == 0" src="@/assets/images/project/lock.png">
<img v-else src="@/assets/images/project/lockopen.png"> <img v-else src="@/assets/images/project/lockopen.png">
仅自己可见 {{ProjectData.isPrivate == 0?"仅自己可见":"他人可见"}}
<!--<div class="delform">--> <!--<div class="delform">-->
<!--<div class="words">{{islock==true?"是否将项目权限修改为他人可见?":"是否将项目权限修改为仅自己可见?"}}</div>--> <!--<div class="words">{{ProjectData.isPrivate == 0?"是否将项目权限修改为他人可见?":"是否将项目权限修改为仅自己可见?"}}</div>-->
<!--<div>--> <!--<div>-->
<!--<div class="btnsmall btn_primary h28">确定</div>--> <!--<div class="btnsmall btn_primary h28">确定</div>-->
<!--<div class="btnsmall btn_cancel h28">取消</div>--> <!--<div class="btnsmall btn_cancel h28">取消</div>-->
...@@ -32,7 +33,7 @@ ...@@ -32,7 +33,7 @@
{{xmlx}} {{xmlx}}
<i class="el-icon-caret-bottom"></i> <i class="el-icon-caret-bottom"></i>
</span> </span>
<el-select v-model="xmlx" class="select-multiple" placeholder="请选择"> <el-select v-model="xmlx" class="select-multiple" placeholder="请选择" @change="{}">
<el-option v-for="(item,index) in projectType" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option> <el-option v-for="(item,index) in projectType" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select> </el-select>
</div> </div>
...@@ -55,20 +56,20 @@ ...@@ -55,20 +56,20 @@
<span>投资估算(万元):</span> <span>投资估算(万元):</span>
<div class="inputxt i" :class="{'nomar':nowedit != 3}"> <div class="inputxt i" :class="{'nomar':nowedit != 3}">
<div class="flex" v-if="nowedit == 3"> <div class="flex" v-if="nowedit == 3">
<el-input placeholder="待添加" @input="number"></el-input> <el-input v-model="ProjectData.investmentAmount" placeholder="待添加" @input="number"></el-input>
<div class="flex"> <div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div> <div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div> <div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div> </div>
</div> </div>
<span class="txt" v-else @click="nowedit = 3">待添加</span> <span :class="{txt:ProjectData.investmentAmoun==''}" v-else @click="nowedit = 3">{{ProjectData.investmentAmount||'待添加'}}</span>
</div> </div>
</div> </div>
<div class="det-con"> <div class="det-con">
<span>建设地点:</span> <span>建设地点:</span>
<div class="select-popper"> <div class="select-popper">
<span :class="{ color_text:address != 'address'}"> <span :class="{ color_text:address != '待添加'}">
{{address}} {{address}}
<i class="el-icon-caret-bottom"></i> <i class="el-icon-caret-bottom"></i>
</span> </span>
...@@ -80,15 +81,15 @@ ...@@ -80,15 +81,15 @@
</div> </div>
<div class="det-con"> <div class="det-con">
<span>商务团队:</span> <span>商务团队:</span>
<span>李力</span> <span>{{ProjectData.team}}</span>
</div> </div>
</div> </div>
<div class="schedule"> <div class="schedule">
<div class="child" v-for="(item,index) in projectStage" @mouseover="hover(index)" @mouseleave="hover(-1)" @click="choose(index,item.dictValue)"> <div class="child" v-for="(item,index) in projectStage" @mouseover="hover(item.dictValue)" @mouseleave="hover(-1)" @click="choose(item.dictValue)">
<img v-if="index == lastindex" src="@/assets/images/project/pro_2.png"> <img v-if="item.dictValue == lastindex" src="@/assets/images/project/pro_2.png">
<img v-else-if="index == thisindex" src="@/assets/images/project/pro_3.png"> <img v-else-if="item.dictValue == thisindex" src="@/assets/images/project/pro_3.png">
<img v-else src="@/assets/images/project/pro_1.png"> <img v-else src="@/assets/images/project/pro_1.png">
<span :class="{'now':index == thisindex}">{{item.dictLabel}}</span> <span :class="{'now':item.dictValue == thisindex}">{{item.dictLabel}}</span>
</div> </div>
</div> </div>
...@@ -163,7 +164,7 @@ ...@@ -163,7 +164,7 @@
domicile:[], domicile:[],
props:{ checkStrictly: true, expandTrigger: 'hover' }, props:{ checkStrictly: true, expandTrigger: 'hover' },
id:'', id:'',
ProjectData:null, ProjectData:{},
} }
}, },
created(){ created(){
...@@ -183,9 +184,23 @@ ...@@ -183,9 +184,23 @@
}) })
//获取基本信息 //获取基本信息
getXMSL(this.id).then(result=>{ getXMSL(this.id).then(result=>{
this.ProjectData = result.code==200?result.data:[] this.ProjectData = result.code==200?result.data:{}
this.$route.query.projectname = result.data.projectName this.$route.query.projectname = result.data.projectName
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
let list = []
if(result.data.provinceName){
list.push(result.data.provinceName)
}
if(result.data.cityName){
list.push(result.data.cityName)
}
if(result.data.districtName){
list.push(result.data.districtName)
}
this.address = list
console.log(this.ProjectData.team)
}) })
}, },
methods: { methods: {
...@@ -218,11 +233,11 @@ ...@@ -218,11 +233,11 @@
}, },
//进度条悬浮、点击事件 //进度条悬浮、点击事件
hover(index){ hover(value){
this.lastindex = index this.lastindex = value
}, },
choose(index,value){ choose(value){
this.thisindex = index this.thisindex = value
console.log(value) console.log(value)
}, },
//内容组件切换 //内容组件切换
...@@ -236,7 +251,7 @@ ...@@ -236,7 +251,7 @@
}, },
handleChange(value) { handleChange(value) {
// console.log(value); console.log(value);
let str = '' let str = ''
var labelString = this.$refs.myCascader.getCheckedNodes()[0].pathLabels; var labelString = this.$refs.myCascader.getCheckedNodes()[0].pathLabels;
labelString.forEach((item,index)=>{ labelString.forEach((item,index)=>{
......
package com.dsk.system.service; package com.dsk.system.service;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.OpRegionalEconomicDataRegionalListDto;
import com.dsk.common.dtos.OpRegionalEconomicDataStatisticsRegionalDto;
import com.dsk.common.dtos.OpRegionalEconomicDataV1Dto; import com.dsk.common.dtos.OpRegionalEconomicDataV1Dto;
import com.dsk.common.dtos.OpRegionalEconomicDataV1PageDto; import com.dsk.common.dtos.OpRegionalEconomicDataV1PageDto;
...@@ -39,7 +41,7 @@ public interface EconomicService { ...@@ -39,7 +41,7 @@ public interface EconomicService {
*@Author: Dgm *@Author: Dgm
*@date: 2023/5/18 10:25 *@date: 2023/5/18 10:25
*/ */
AjaxResult statisticsRegional(OpRegionalEconomicDataV1Dto dto); AjaxResult statisticsRegional(OpRegionalEconomicDataStatisticsRegionalDto dto);
/*** /***
*@Description: 地区经济-分页列表 *@Description: 地区经济-分页列表
...@@ -48,7 +50,7 @@ public interface EconomicService { ...@@ -48,7 +50,7 @@ public interface EconomicService {
*@Author: Dgm *@Author: Dgm
*@date: 2023/5/18 10:25 *@date: 2023/5/18 10:25
*/ */
AjaxResult regionalList(OpRegionalEconomicDataV1Dto dto); AjaxResult regionalList(OpRegionalEconomicDataRegionalListDto dto);
/*** /***
*@Description: 地区经济-分页列表 *@Description: 地区经济-分页列表
......
...@@ -76,6 +76,7 @@ public class CustomerServiceImpl implements ICustomerService { ...@@ -76,6 +76,7 @@ public class CustomerServiceImpl implements ICustomerService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean add(Customer customer) { public boolean add(Customer customer) {
if (ObjectUtils.isEmpty(customer.getUipId())) {
try { try {
R res = enterpriseService.getUipId(customer.getCompanyName()); R res = enterpriseService.getUipId(customer.getCompanyName());
if (!ObjectUtils.isEmpty(res.getData())) { if (!ObjectUtils.isEmpty(res.getData())) {
...@@ -84,7 +85,7 @@ public class CustomerServiceImpl implements ICustomerService { ...@@ -84,7 +85,7 @@ public class CustomerServiceImpl implements ICustomerService {
} catch (Exception e) { } catch (Exception e) {
log.error("获取城投平台企业id错误!error:{}", e.getMessage()); log.error("获取城投平台企业id错误!error:{}", e.getMessage());
} }
}
Long userId = SecurityUtils.getUserId(); Long userId = SecurityUtils.getUserId();
customer.setCreateId(userId); customer.setCreateId(userId);
customer.setUpdateId(userId); customer.setUpdateId(userId);
......
...@@ -2,6 +2,8 @@ package com.dsk.system.service.impl; ...@@ -2,6 +2,8 @@ package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.OpRegionalEconomicDataRegionalListDto;
import com.dsk.common.dtos.OpRegionalEconomicDataStatisticsRegionalDto;
import com.dsk.common.dtos.OpRegionalEconomicDataV1Dto; import com.dsk.common.dtos.OpRegionalEconomicDataV1Dto;
import com.dsk.common.dtos.OpRegionalEconomicDataV1PageDto; import com.dsk.common.dtos.OpRegionalEconomicDataV1PageDto;
import com.dsk.common.utils.DskOpenApiUtil; import com.dsk.common.utils.DskOpenApiUtil;
...@@ -40,13 +42,13 @@ public class EconomicServiceImpl implements EconomicService { ...@@ -40,13 +42,13 @@ public class EconomicServiceImpl implements EconomicService {
} }
@Override @Override
public AjaxResult statisticsRegional(OpRegionalEconomicDataV1Dto dto) { public AjaxResult statisticsRegional(OpRegionalEconomicDataStatisticsRegionalDto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/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); return BeanUtil.toBean(map, AjaxResult.class);
} }
@Override @Override
public AjaxResult regionalList(OpRegionalEconomicDataV1Dto dto) { public AjaxResult regionalList(OpRegionalEconomicDataRegionalListDto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/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); return BeanUtil.toBean(map, AjaxResult.class);
} }
......
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