Commit e1bf9236 authored by danfuman's avatar danfuman
parents 3a2e0c80 648c0e1d
......@@ -33,8 +33,8 @@ public class EnterpriseController {
return enterpriseService.infoHeader(body);
}
@ApiOperation(value = "企业统计信息")
@PostMapping(value = "statistic(建设库)")
@ApiOperation(value = "企业统计信息(建设库)")
@PostMapping(value = "statistic")
public R statistic(@RequestBody @Valid EnterpriseStatisticBody vo) throws Exception {
return enterpriseService.statistic(vo);
}
......
......@@ -12,6 +12,11 @@ import lombok.Data;
@Data
public class SpecialPurposeBondsDto {
/**
* 省Id
*/
private Integer provinceId;
/**
* 项目类型
*/
......
......@@ -12,4 +12,8 @@ import lombok.Data;
*/
@Data
public class SpecialPurposeBondsPageDto extends BasePage {
/**
* 省Id
*/
private Integer provinceId;
}
......@@ -27,5 +27,21 @@ let regionWebList= function regionWebList(param) {
method: 'get',
})
}
// 查甲方选项
let uipGroupData= function uipGroupData(param) {
return request({
url: '/enterprise/uipGroupData',
method: 'post',
})
}
// 查甲方列表
let uipSerach= function uipSerach(param) {
return request({
url: '/enterprise/uipSerach',
method: 'post',
data: param
})
}
export default {aptitudeCode,personCert,searchDic,regionWebList}
\ No newline at end of file
export default {aptitudeCode,personCert,searchDic,regionWebList,uipGroupData,uipSerach}
\ No newline at end of file
......@@ -10,6 +10,11 @@
>span{
opacity: 0.4;
&:last-child{opacity:0.8}
&.on:hover{
color: #0081FF;
opacity: 1;
cursor: pointer;
}
}
}
.overflows{
......@@ -71,6 +76,8 @@
.con{
>span{
opacity: 0.8;
float: left;
margin-top: 3px;
}
.inputxt{
display: inline-block;
......
......@@ -416,7 +416,7 @@ select {
}
.toolbar-right-download {
padding: 8px 21px;
padding: 6px 18px;
margin: 0px;
cursor: pointer;
font-weight: 400;
......@@ -425,6 +425,8 @@ select {
border-radius: 5px 5px 5px 5px;
border: 1px solid #D9D9D9;
text-align: center;
font-size:14px;
font-weight: 400;
}
.toolbar-right-download .el-icon-arrow-down{
margin-left: 8px;
......@@ -692,3 +694,24 @@ select {
.select-list .el-radio__input {
display: none;
}
.checkbox{
display: flex;
align-items: center;
}
.checkbox .checkbox-titel{
font-size: 14px;
font-weight: 400;
color: rgba(35, 35, 35, 0.8);
margin-right:24px;
}
.checkbox .checkbox-content{
display: flex;
align-items: center;
}
.checkbox .el-checkbox__label{
padding-left: 8px;
color: #232323;
}
.checkbox .checkbox-content .checkbox-content-qx{
margin-right: 30px;
}
\ No newline at end of file
......@@ -72,7 +72,8 @@ export default {
data: params,
headers: { 'Authorization': 'Bearer ' + getToken() }
}).then(res => {
const blob = new Blob([res.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
console.log(res)
const blob = new Blob([res.data], { type: 'application/octet-stream/pdf/doc/xlsx/xls/docx' })
this.saveAs(blob, decodeURI(res.headers['download-filename']))
})
},
......
......@@ -20,7 +20,7 @@
<div class="btn" @click="handleCurrentChange(1)">搜索</div>
</div>
<div class="dc">
<div class="total">126</div>
<div class="total">{{tableData.total}}</div>
<div class="btn-export" @click="pldrs"><img src="@/assets/images/project/import.png">批量导入</div>
<div class="btn btn_primary h32 p10" @click="opennew"><div class="img img1"></div>添加客户</div>
</div>
......@@ -47,8 +47,8 @@
<div class="ps1">
<div class="wordprimary ps2" @click="toDetail(scope.row.companyId,'')">{{scope.row.companyName}}</div>
<div class="ps3">
<div @click="toDetail(scope.row.companyId,1)">写跟进<img src="@/assets/images/project/edit_1.png"></div>
<div @click="toDetail(scope.row.companyId,2)">编辑信息<img src="@/assets/images/project/edit_2.png"></div>
<div @click="toDetail(scope.row,'gjjl')">写跟进<img src="@/assets/images/project/edit_1.png"></div>
<div @click="toDetail(scope.row,'preference')">编辑信息<img src="@/assets/images/project/edit_2.png"></div>
</div>
</div>
</template>
......@@ -99,7 +99,7 @@
label="注册资本金(万元)"
width="140">
<template slot-scope="scope">
{{scope.row.registerCapitalStr || '--'}}
{{scope.row.registerCapital || '--'}}
</template>
</el-table-column>
<el-table-column
......@@ -227,7 +227,7 @@
</el-dialog>
</el-card>
</div>
<batchimport v-if="pldr" :importtype="types" @cancels="importCancel" @getdatas="handleCurrentChange(1)"></batchimport>
<batchimport v-if="pldr" :importtype="types" @cancels="cancelimport" @getdatas="handleCurrentChange(1)"></batchimport>
</div>
</template>
......@@ -304,7 +304,7 @@ export default {
pldrs(){
this.pldr = true
},
importCancel(){
cancelimport(){
this.pldr = false
},
//获取客户列表
......@@ -314,12 +314,11 @@ export default {
})
},
//跳转到客户详情
toDetail(id,type){
if(type == 1){//跟进
}else if(type == 2){//编辑信息
}
toDetail(row,type){
let customerId = row.customerId
let companyId = row.companyId
let path = type
this.$router.push({path:'/party/party-a',query:{customerId:customerId,companyId:companyId,path:path}})
},
//翻页
handleCurrentChange(val) {
......
......@@ -13,8 +13,8 @@
</div>
</div>
</div>
<!-- 企业专项债 -->
<!-- <debtProject v-if="personnelHerf=='debtProject'" /> -->
<!-- 查业主单位 -->
<Owner v-if="personnelHerf=='Owner'" />
<!-- 查企业 -->
<SearchEnterprise v-if="personnelHerf=='SearchEnterprise'" />
......@@ -25,28 +25,29 @@
</template>
<script>
import SearchEnterprise from "./components/SearchEnterprise/index.vue";
import Owner from "./components/Owner/index.vue";
import "@/assets/styles/public.css";
export default {
name: 'enterpriseData',
components: { SearchEnterprise },
components: { SearchEnterprise,Owner },
data() {
return {
// tablist
personnelList: [{
key: '1',
status: false,
key: 'Owner',
status: true,
value: '查业主单位',
},
{
key: 'SearchEnterprise',
status: true,
status: false,
value: '查建筑企业',
},
],
personnelHerf:'SearchEnterprise'
personnelHerf:'Owner'
}
},
created() {},
......
......@@ -42,7 +42,7 @@
<div class="p3">
<img src="@/assets/images/project/success.png">查询成功
</div>
<div class="p2">成功导入客户信息</div>
<div class="p2">成功导入{{titletext}}信息</div>
<div class="btns">
<div class="btn btn_primary h32" @click="getmsg">查看</div>
</div>
......@@ -79,7 +79,7 @@
console.log(this.importtype )
if(this.importtype == 'project'){//项目管理
this.downloadhref = '/file/projectTemplate.xlsx'
this.titletext = '项目'
this.titletext = '商机'
this.action = process.env.VUE_APP_BASE_API + '/business/info/upload'
}
if(this.importtype == 'custom'){//客户管理
......@@ -101,8 +101,10 @@
onSuccess(res, file, fileList) {
if(res.code == 200 )
this.addsuccess = true
else
this.$message.error({message:res.msg,showClose:true})
else {
this.importCancel()
this.$message.error({ message: res.msg, showClose: true })
}
},
downloadClick() {
......
......@@ -65,7 +65,7 @@
<span v-if="showtype == 'gjdt' && item.companyName != ''">关联企业:{{item.companyName}}</span>
<span v-if="item.position">职位:{{item.position}}</span>
<span v-if="item.createTime">拜访时间:{{item.createTime.slice(0, 10)}}</span>
<span v-if="item.nextVisitTime">下次拜访时间:{{item.createTime.slice(0, 10)}}</span>
<span v-if="item.nextVisitTime">下次拜访时间:{{item.nextVisitTime.slice(0, 10)}}</span>
</div>
</div>
</div>
......@@ -342,8 +342,11 @@
let day = times.getDate()
day = day<10?"0"+day:day
let hour = times.getHours()
hour = hour<10?"0"+hour:hour
let minute = times.getMinutes()
minute = minute<10?"0"+minute:minute
let second = times.getSeconds()
second = second<10?"0"+second:second
return year+'-'+month+'-'+day+' '+hour+":"+minute+":"+second
}
}
......
......@@ -28,7 +28,7 @@
</div>
</div>
</div>
<div class="tasktitle"><strong>我的任务</strong><span @click="getYQ">4条已逾期</span><!--<span class="on">4条已逾期</span>--></div>
<div class="tasktitle"><strong>我的任务</strong><span @click="getYQ">{{yqnum}}条已逾期</span><!--<span class="on">4条已逾期</span>--></div>
<div class="tasklist" v-for="(item,index) in datalist.rows">
<div class="task_name">{{item.task}}</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>
......@@ -39,7 +39,6 @@
<i class="el-icon-caret-bottom"></i>
</span>
<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="1"></el-option>
<el-option label="已完成" value="2"></el-option>
</el-select>
......@@ -94,6 +93,7 @@
state:null,
},
datalist:[],
yqnum:0,//已逾期数量
}
},
created(){
......@@ -117,6 +117,12 @@
getList(){
getGZDB(this.searchPram).then(result=>{
this.datalist = result.code == 200?result:[]
let num = 0
this.datalist.rows.forEach(item=>{
if(item.state == 0)
num++;
})
this.yqnum = num
})
},
handleCurrentChange(val){
......
......@@ -110,7 +110,7 @@
<div class="flex" v-if="nowedit == 6">
<el-input placeholder="待添加" v-model="xmsldata.supervisorPhone"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" @click="isphone(1,$event)" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" @click="isphone(1,xmsldata.supervisorPhone)" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
......@@ -123,7 +123,7 @@
<div class="flex" v-if="nowedit == 7">
<el-input placeholder="待添加" v-model="xmsldata.constructionPhone"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" @click="isphone(2,$event)" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" @click="isphone(2,xmsldata.constructionPhone)" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
......@@ -214,16 +214,16 @@
},
//验证电话号码
isphone(type,value){
var regPartton = /1[3-8]+\d{9}/;
var regPartton = /1[3-9]+\d{9}/;
var regPartton1 = /^(0[0-9]{2,3}[\-]?[2-9][0-9]{6,7}[\-]?[0-9]?)$/;
if (!regPartton.test(value) && !regPartton1.test(value)) {
this.$message.error("请输入正确的电话");
} else {
if (type == 1) {
this.editXMSL({ supervisorPhone: this.xmsldata.supervisorPhone })
this.editXMSL({ supervisorPhone: value })
}
if (type == 2) {
this.editXMSL({ constructionPhone: this.xmsldata.constructionPhone })
this.editXMSL({ constructionPhone: value })
}
}
},
......
......@@ -198,9 +198,7 @@
},
downnlod(row){
let param = {filePath:row.filePath}
// this.$download.saveAs(row.filePath,row.name);
this.$download.exportByPost('/business/file/download',param);
// // this.$download()
// let a = document.createElement("a");
// a.setAttribute("href", row.filePath);
// a.setAttribute("download", row.name);
......
......@@ -3,9 +3,9 @@
<div class="miantitle">
<template v-if="!detailId">
<span>项目管理</span>
<span> / 商机列表</span>
<span class="on" @click="tolist"> / 商机列表</span>
</template>
<span v-else @click="cooperateList">合作情况</span>
<span class="on" v-else @click="cooperateList">合作情况</span>
<span> / 项目详情</span>
</div>
<div class="app-container" v-if="ProjectData">
......@@ -89,11 +89,10 @@
</div>
</div>
<div class="schedule">
<div class="child" v-for="(item,index) in projectStage" @mouseover="hover(item.dictValue)" @mouseleave="hover(-1)" @click="choose(item.dictValue)">
<img v-if="item.dictValue == lastindex" src="@/assets/images/project/pro_2.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">
<span :class="{'now':item.dictValue == thisindex}">{{item.dictLabel}}</span>
<div class="child" v-for="(item,index) in projectStage" @click="choose(item.dictValue)" :class="{'on':item.dictValue == thisindex}">
<div class="left"></div>
<span>{{item.dictLabel}}</span>
<div class="right"></div>
</div>
</div>
......@@ -179,6 +178,7 @@
}
},
created(){
this.thistag = this.$route.query.tag
this.prvinceTree()
this.id = this.detailId ? this.detailId : this.$route.query.id
//项目阶段
......@@ -232,7 +232,8 @@
locks(isPrivate){
isPrivate = isPrivate==0?1:0
this.editXMSL({isPrivate:isPrivate})
this.lock = false
this.islock = false
this.ProjectData.isPrivate = isPrivate
},
editXMSL(param){
let params = param
......@@ -337,7 +338,10 @@
// 跳转到企业详情合作情况
cooperateList(){
this.$emit('close-detail')
}
},
tolist(){
this.$router.push({path:'/project/projectList'})
},
}
}
</script>
......@@ -395,30 +399,54 @@
}
}
.schedule{
display: flex;
padding-bottom: 8px;
width: 100%;
.child{
cursor: pointer;
margin-right: 4px;
color: #4f4f4f;
/*color: rgb(79,79,79);*/
color: rgba(35, 35, 35, 0.80);
position: relative;
width: 137px;
min-width: 137px;
padding: 0 20px;
height: 32px;
line-height: 32px;
text-align: center;
>img{
background: #F3F4F5;
margin-bottom: 8px;
display: inline-block;
.left{
width: 10px;
height: 32px;
background: url("../../../assets/images/project/icol1.png") no-repeat top center #fff;
position: absolute;
left: 0;
top: 0;
}
.right{
position: absolute;
width: 100%;
z-index: 0;
top: 0;
right: 0;
width: 10px;
height: 32px;
background: url("../../../assets/images/project/icor1.png") no-repeat top center #fff;
}
>span{
position: relative;
z-index: 1;
&.now{
&:hover{
background: #E3E6EA;
.left{
background: url("../../../assets/images/project/icol2.png") no-repeat top center #fff;
}
.right{
background: url("../../../assets/images/project/icor2.png") no-repeat top center #fff;
}
}
&.on{
background: #0081FF;
color: #fff;
.left{
background: url("../../../assets/images/project/icol3.png") no-repeat top center #fff;
}
.right{
background: url("../../../assets/images/project/icor3.png") no-repeat top center #fff;
}
}
}
......
......@@ -113,16 +113,16 @@
</div>
<div class="datalist">
<div class="datali" v-for="(item,index) in datalist">
<div class="det-title" @click="toDetail(item.id)">{{item.projectName}}<span v-if="activeName!='first' && item.followTime" class="people"><i>{{item.nickName1}}</i>{{item.nickName}} <font color="#FA8A00">正在跟进</font></span></div>
<div class="det-title" @click="toDetail(item.id,'xmsl')">{{item.projectName}}<span v-if="activeName!='first' && item.followTime" class="people"><i>{{item.nickName1}}</i>{{item.nickName}} <font color="#FA8A00">正在跟进</font></span></div>
<div class="det-tips"><span class="tips tip1" v-if="item.label">{{item.label}}</span><span v-if="item.address" class="tips tip2">{{item.address}}</span></div>
<div class="det-contets">
<div class="det-con">
<span>项目类型:</span>
<span>{{item.projectType}}</span>
<span>{{item.projectType || '--'}}</span>
</div>
<div class="det-con">
<span>投资估算(万元):</span>
<span>{{item.investmentAmount}}</span>
<span>{{item.investmentAmount || '--'}}</span>
</div>
<div class="det-con">
<span>最后跟进时间:</span>
......@@ -130,13 +130,13 @@
</div>
<div class="det-con">
<span>业主单位:</span>
<span class="wordprimary">{{item.ownerCompany}}</span>
<span class="wordprimary">{{item.ownerCompany || '--'}}</span>
</div>
</div>
<el-divider v-if="index != datalist.length-1"></el-divider>
<div class="operates" v-if="activeName=='first'">
<div class="i1"><img src="@/assets/images/follow.png">跟进</div>
<div class="i2"><img src="@/assets/images/edit.png">编辑</div>
<div class="i1"><img src="@/assets/images/follow.png" @click="toDetail(item.id,'gjjl')">跟进</div>
<div class="i2"><img src="@/assets/images/edit.png" @click="toDetail(item.id,'xmsl')">编辑</div>
<div class="i3" @click="deldetail(index)"><img src="@/assets/images/delete.png">删除</div>
</div>
<div class="delform" v-if="activeName=='first' && ondel == index">
......@@ -355,8 +355,8 @@ export default {
this.isshow = false
this.getList(1)
},
toDetail(id){
this.$router.push({ path: '/project/projectList/detail', query: {id:id} });
toDetail(id,tag){
this.$router.push({ path: '/project/projectList/detail', query: {id:id,tag:tag} });
},
handleClick(){
......
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