Commit 781e85c0 authored by 远方不远's avatar 远方不远
parents bfc60023 fc5b8dd8
......@@ -2,6 +2,7 @@ package com.dsk.web.controller.dsk;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.domain.model.*;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.dskService.EnterpriseBussinessService;
import io.swagger.annotations.ApiOperation;
......@@ -28,67 +29,67 @@ public class EnterpriseBussinessController {
@ApiOperation(value = "客户信息列表(openApi)")
@RequestMapping(value = "/clientPage", method = RequestMethod.POST)
public TableDataInfo clientPage(@RequestBody Map<String, Object> paramMap) throws Exception {
public TableDataInfo clientPage(@RequestBody EnterpriseBussinessClientPageBody paramMap) throws Exception {
return enterpriseBussinessService.clientPage(paramMap);
}
@ApiOperation(value = "客户项目列表(openApi)")
@RequestMapping(value = "/clientProjectPage", method = RequestMethod.POST)
public TableDataInfo clientProjectPage(@RequestBody Map<String, Object> paramMap) throws Exception {
public TableDataInfo clientProjectPage(@RequestBody EnterpriseBussinessClientProjectPageBody paramMap) throws Exception {
return enterpriseBussinessService.clientProjectPage(paramMap);
}
@ApiOperation(value = "投标记录列表(开标记录)(openApi)")
@RequestMapping(value = "/tenderPage",method = RequestMethod.POST)
public TableDataInfo tenderPage(@RequestBody Map<String, Object> paramMap) throws Exception {
public TableDataInfo tenderPage(@RequestBody EnterpriseBussinessTenderPageBody paramMap) throws Exception {
return enterpriseBussinessService.tenderPage(paramMap);
}
@ApiOperation(value = "投标记录详情(开标记录)(openApi)")
@RequestMapping(value = "/tenderDetail",method = RequestMethod.POST)
public R tenderDetail(@RequestBody Map<String, Object> paramMap) throws Exception {
public R tenderDetail(@RequestBody EnterpriseBussinessTenderDetailBody paramMap) throws Exception {
return enterpriseBussinessService.tenderDetail(paramMap);
}
@ApiOperation(value = "供应商列表(openApi)")
@RequestMapping(value = "/supplierPage",method = RequestMethod.POST)
public TableDataInfo supplierPage(@RequestBody Map<String, Object> paramMap) throws Exception {
public TableDataInfo supplierPage(@RequestBody EnterpriseBussinessSupplierPageBody paramMap) throws Exception {
return enterpriseBussinessService.supplierPage(paramMap);
}
@ApiOperation(value = "供应商项目列表(openApi)")
@RequestMapping(value = "/supplierProjectPage",method = RequestMethod.POST)
public TableDataInfo supplierProjectPage(@RequestBody Map<String, Object> paramMap) throws Exception {
public TableDataInfo supplierProjectPage(@RequestBody EnterpriseBussinessSupplierProjectPageBody paramMap) throws Exception {
return enterpriseBussinessService.supplierProjectPage(paramMap);
}
@ApiOperation(value = "中标项目详情(openApi)")
@RequestMapping(value = "/projectDetail", method = RequestMethod.POST)
public R projectDetail(@RequestBody Map<String, Object> paramMap) throws Exception {
public R projectDetail(@RequestBody EnterpriseBussinessProjectDetailBody paramMap) throws Exception {
return enterpriseBussinessService.projectDetail(paramMap);
}
@ApiOperation(value = "招标代理常合作代理机构列表(openApi)")
@RequestMapping(value = "/oftenAgencyPage",method = RequestMethod.POST)
public TableDataInfo oftenAgencyPage(@RequestBody Map<String, Object> paramMap) throws Exception {
public TableDataInfo oftenAgencyPage(@RequestBody EnterpriseBussinessOftenAgencyPageBody paramMap) throws Exception {
return enterpriseBussinessService.oftenAgencyPage(paramMap);
}
@ApiOperation(value = "招标合作明细列表(openApi)")
@RequestMapping(value = "/bidCooperatePage", method = RequestMethod.POST)
public TableDataInfo bidCooperatePage(@RequestBody Map<String, Object> paramMap) throws Exception {
public TableDataInfo bidCooperatePage(@RequestBody EnterpriseBussinessBidCooperatePageBody paramMap) throws Exception {
return enterpriseBussinessService.bidCooperatePage(paramMap);
}
@ApiOperation(value = "历史发包列表(openApi)")
@RequestMapping(value = "/historySendPage", method = RequestMethod.POST)
public TableDataInfo historySendPage(@RequestBody Map<String, Object> paramMap) throws Exception {
public TableDataInfo historySendPage(@RequestBody EnterpriseBussinessHistorySendPageBody paramMap) throws Exception {
return enterpriseBussinessService.historySendPage(paramMap);
}
@ApiOperation(value = "历史发包省份(openApi)")
@RequestMapping(value = "/historySendProvince", method = RequestMethod.POST)
public R historySendProvince(@RequestBody Map<String, Object> paramMap) throws Exception {
public R historySendProvince(@RequestBody EnterpriseBussinessHistorySendProvinceBody paramMap) throws Exception {
return enterpriseBussinessService.historySendProvince(paramMap);
}
......
package com.dsk.common.core.domain.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class EnterpriseBussinessBidCooperatePageBody extends BasePage {
/**
* 企业id
*/
@NotNull(message = "企业id不能为空")
private Integer tendereeId;
/**
* 企业id
*/
@NotNull(message = "企业id不能为空")
private Integer agencyId;
/**
* 查询关键字
*/
private String keys;
}
package com.dsk.common.core.domain.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class EnterpriseBussinessClientPageBody extends BasePage {
/**
* 企业id
*/
@NotNull(message = "企业id不能为空")
private Integer cid;
/**
* 查询关键字
*/
private String keys;
/*
* 排序字段:1金额倒序,2金额正序,3时间倒序,4时间正序,5次数倒序,6次数正序
*/
private Integer sort;
}
package com.dsk.common.core.domain.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class EnterpriseBussinessClientProjectPageBody extends BasePage {
/**
* 企业id
*/
@NotNull(message = "企业id不能为空")
private Integer cid;
/**
* 企业id
*/
@NotNull(message = "企业id不能为空")
private Integer unitId;
/**
* 查询关键字
*/
private String keys;
}
package com.dsk.common.core.domain.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class EnterpriseBussinessHistorySendPageBody extends BasePage {
/**
* 企业id
*/
@NotNull(message = "企业id不能为空")
private Integer cid;
/*
* 排序条件:1金额倒序,2金额正序,3时间倒序,4时间正序,7下浮率倒序,8下浮率正序,9工期倒序,10工期正序
*/
private Integer sort;
/**
* 开始时间(年月日)
*/
private String dateFrom;
/**
* 截止时间(年月日)
*/
private String dateTo;
/**
* 省份id(年月日)
*/
private String provinceId;
/**
* 最小金额
*/
private Double amountMin;
/**
* 最大金额
*/
private Double amountMax;
}
package com.dsk.common.core.domain.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class EnterpriseBussinessHistorySendProvinceBody {
/**
* 企业id
*/
@NotNull(message = "企业id不能为空")
private Integer cid;
}
package com.dsk.common.core.domain.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class EnterpriseBussinessOftenAgencyPageBody extends BasePage {
/**
* 企业id
*/
@NotNull(message = "企业id不能为空")
private Integer cid;
/**
* 查询关键字
*/
private String keys;
/*
* 排序字段:3时间倒序,4时间正序,5次数倒序,6次数正序
*/
private Integer sort;
}
package com.dsk.common.core.domain.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class EnterpriseBussinessProjectDetailBody {
/**
* id
*/
@NotNull(message = "id不能为空")
private Integer id;
}
package com.dsk.common.core.domain.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class EnterpriseBussinessSupplierPageBody extends BasePage {
/**
* 企业id
*/
@NotNull(message = "企业id不能为空")
private Integer cid;
/**
* 查询关键字
*/
private String keys;
/*
* 排序字段:1金额倒序,2金额正序,3时间倒序,4时间正序,5次数倒序,6次数正序
*/
private Integer sort;
}
package com.dsk.common.core.domain.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class EnterpriseBussinessSupplierProjectPageBody extends BasePage {
/**
* 企业id
*/
@NotNull(message = "企业id不能为空")
private Integer cid;
/**
* 企业id
*/
@NotNull(message = "企业id不能为空")
private Integer unitId;
/**
* 查询关键字
*/
private String keys;
}
package com.dsk.common.core.domain.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class EnterpriseBussinessTenderDetailBody {
/**
* id
*/
@NotNull(message = "id不能为空")
private Integer id;
}
package com.dsk.common.core.domain.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class EnterpriseBussinessTenderPageBody extends BasePage {
/**
* 企业id
*/
@NotNull(message = "企业id不能为空")
private Integer cid;
/**
* 查询关键字
*/
private String keys;
}
......@@ -46,6 +46,7 @@
"file-saver": "2.0.5",
"fuse.js": "6.4.3",
"highlight.js": "9.18.5",
"jquery": "^3.7.0",
"js-beautify": "1.13.0",
"js-cookie": "3.0.1",
"js-md5": "^0.7.3",
......
......@@ -86,6 +86,14 @@
border-radius: 2px;
line-height: 28px;
cursor: pointer;
.rig {
position: absolute;
left: 0;
padding: 0;
white-space: nowrap;
visibility: hidden;
height: 0;
}
&:hover{
background: #F3F4F5;
}
......@@ -155,18 +163,26 @@
display: inline-block;
margin-top: 1px;
width: calc(100% - 116px);
.spanText {
position: absolute;
left: 0;
padding: 0;
white-space: nowrap;
visibility: hidden;
height: 0;
}
.el-input{
float: left;
margin-right: 8px;
width: 70px;
min-width: 70px;
width: auto;
margin-bottom: 10px;
.el-input__inner{
width: 70px;
min-width: 70px;
padding: 0 14px;
height: 24px;
background: #F3F4F5;
border-radius: 2px;
padding: 0;
text-indent: 14px;
border: 0;
}
}
......@@ -472,7 +488,7 @@
padding-top: 8px;
padding-right: 0;
.btn{
border-radius: 0;
border-radius: 2px;
width: 80px;
}
}
......@@ -569,6 +585,7 @@
border: 0;
padding: 0;
text-indent: 8px;
float: left;
}
}
.wr_bot{
......@@ -1105,3 +1122,6 @@
}
.none{display: none}
.el-popper[x-placement^=bottom]{
margin-top: 0 !important;
}
......@@ -45,7 +45,7 @@
width="441">
<template slot-scope="scope">
<div class="ps1">
<div class="wordprimary ps2" @click="toDetail(scope.row.companyId,'')">{{scope.row.companyName}}</div>
<div class="wordprimary ps2" @click="toDetail(scope.row,'')">{{scope.row.companyName}}</div>
<div class="ps3">
<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>
......@@ -239,11 +239,13 @@
import prvinceTree from '@/assets/json/provinceTree'
import batchimport from '../../project/projectList/component/batchImport'
import axios from 'axios'
import {encodeStr} from "@/assets/js/common"
export default {
name: 'CustomList',
components:{batchimport},
data() {
return{
encodeStr,
pldr: false,
types:'custom',
searchParam:{
......@@ -318,7 +320,7 @@ export default {
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}})
this.$router.push({path:'/enterprise/'+encodeStr(companyId),query:{customerId:customerId,path:path}})
},
//翻页
handleCurrentChange(val) {
......
......@@ -223,13 +223,19 @@ export default {
type: 'category',
data: ['地方单位', '事业单位', '政府机关', '中央企业', '上市公司', '军队', '民营企业','其他'],
axisTick: {
alignWithLabel: true
alignWithLabel: true,
show: false
}
}
],
yAxis: [
{
type: 'value'
type: 'value',
splitLine : { //网格线
lineStyle: {
type: 'dashed' //设置网格线类型 dotted:虚线 solid:实线
},
}
}
],
series: [
......@@ -267,13 +273,19 @@ export default {
type: 'category',
data: ['AA', 'AA+', 'AA-', 'A', 'A+', 'A', 'A-','其他'],
axisTick: {
alignWithLabel: true
alignWithLabel: true,
show: false
}
}
],
yAxis: [
{
type: 'value'
type: 'value',
splitLine : { //网格线
lineStyle: {
type: 'dashed' //设置网格线类型 dotted:虚线 solid:实线
},
}
}
],
series: [
......@@ -301,10 +313,18 @@ export default {
this.option1 = {
xAxis: {
type: 'category',
data: labels
data: labels,
axisTick: {
show: false
},
},
yAxis: {
type: 'value'
type: 'value',
splitLine : { //网格线
lineStyle: {
type: 'dashed' //设置网格线类型 dotted:虚线 solid:实线
},
}
},
grid:{
left:'8%',
......@@ -349,6 +369,7 @@ export default {
global: false
}
},
symbolSize:8,
}
]
}
......@@ -509,6 +530,7 @@ export default {
&.on{
background: #0081FF;
color: #FFFFFF;
border-color: #0081FF;
}
&:first-child{
border-radius: 2px 0px 0px 2px;
......
......@@ -18,8 +18,8 @@
</div>
<div class="table-item">
<div class="table-title">
<span class="title">指标</span>
<span class="title">
<span class="span-tit">指标</span>
<span class="span-tit">
<span class="address" v-if="value1Flag">{{addressValue1}}<i class="el-icon-circle-close" @click="handleDelete(1)"></i></span>
<el-cascader
v-else
......@@ -31,7 +31,7 @@
@change="handleChange(1)"
placeholder="添加地区"></el-cascader>
</span>
<span class="title">
<span class="span-tit">
<span class="address" v-if="value2Flag">{{addressValue2}}<i class="el-icon-circle-close" @click="handleDelete(2)"></i></span>
<el-cascader
v-else
......@@ -43,7 +43,7 @@
@change="handleChange(2)"
placeholder="添加地区"></el-cascader>
</span>
<span class="title">
<span class="span-tit">
<span class="address" v-if="value3Flag">{{addressValue3}}<i class="el-icon-circle-close" @click="handleDelete(3)"></i></span>
<el-cascader
v-else
......@@ -55,7 +55,7 @@
@change="handleChange(3)"
placeholder="添加地区"></el-cascader>
</span>
<span class="title">
<span class="span-tit">
<span class="address" v-if="value4Flag">{{addressValue4}}<i class="el-icon-circle-close" @click="handleDelete(4)"></i></span>
<el-cascader
v-else
......@@ -67,7 +67,7 @@
@change="handleChange(4)"
placeholder="添加地区"></el-cascader>
</span>
<span class="title">
<span class="span-tit">
<span class="address" v-if="value5Flag">{{addressValue5}}<i class="el-icon-circle-close" @click="handleDelete(5)"></i></span>
<el-cascader
v-else
......@@ -377,39 +377,40 @@ export default {
},
handleVisibleChange(flag,index){
if(!flag){
switch (index) {
case 1:
this.value1Flag=true
break;
case 2:
this.value2Flag=true
break;
case 3:
this.value3Flag=true
break;
case 4:
this.value4Flag=true
break;
case 5:
this.value5Flag=true
break;
}
const params = { year: this.queryParams.year,type:3 }
let code=[];
for (var i in this.regionData) {
code=this.regionData[i].path
}
if(code.length >= 1){
params.provinceId=code[0]
}
if(code.length >= 2){
params.cityId=code[1]
}
if(code.length >= 3){
params.areaId=code[2]
if(this.value1 || this.value2 || this.value3 || this.value4 || this.value5){
switch (index) {
case 1:
this.value1Flag=true
break;
case 2:
this.value2Flag=true
break;
case 3:
this.value3Flag=true
break;
case 4:
this.value4Flag=true
break;
case 5:
this.value5Flag=true
break;
}
const params = { year: this.queryParams.year,type:3 }
let code=[];
for (var i in this.regionData) {
code=this.regionData[i].path
}
if(code.length >= 1){
params.provinceId=code[0]
}
if(code.length >= 2){
params.cityId=code[1]
}
if(code.length >= 3){
params.areaId=code[2]
}
this.getData(params,index)
}
this.getData(params,index)
}
},
handleChange(index) {
......@@ -494,20 +495,33 @@ export default {
switch (index) {
case 1:
this.addressValue1='';
this.value1='';
this.value1Flag=false
break;
case 2:
this.addressValue2='';
this.value2='';
this.value2Flag=false
break;
case 3:
this.addressValue3='';
this.value3='';
this.value3Flag=false
break;
case 4:
this.addressValue4='';
this.value4='';
this.value4Flag=false
break;
case 5:
this.addressValue5='';
this.value5='';
this.value5Flag=false
break;
}
this.tableData.splice(index-1,1,{})
this.$forceUpdate();
},
formatStatus: function(row, column, cellValue) {
if(row.title === '经济'||row.title === '财政'||row.title === '债务'){
......@@ -570,7 +584,7 @@ export default {
/*justify-content:space-around;*/
border: 1px solid #E6EAF1;
border-bottom: 0;
.title{
.span-tit{
display: inline-block;
width: 16.7%;
height: 50px;
......
......@@ -6,7 +6,7 @@
<span class="common-title">全国建筑企业概览</span>
</div>
</div>
<div class="text">截止{{currentdate}},全国共有建筑工程施工总承包资质的企业{{total}}家,其中特级资质企业{{glDetail.tjCount}}家,占比{{glDetail.tjRate}}%;一级资质企业{{glDetail.tjCount}}家,占比{{glDetail.oneRate}}%;二级资质企业{{glDetail.twoCount}}家,占比{{glDetail.twoRate}}%;三级资质企业{{glDetail.threeCount}}家,占比{{glDetail.threeRate}}%</div>
<div class="text">截止{{currentdate}},全国共有{{glDetail.major}}资质的企业{{total}}家,其中特级资质企业{{glDetail.tjCount}}家,占比{{glDetail.tjRate}}%;一级资质企业{{glDetail.tjCount}}家,占比{{glDetail.oneRate}}%;二级资质企业{{glDetail.twoCount}}家,占比{{glDetail.twoRate}}%;三级资质企业{{glDetail.threeCount}}家,占比{{glDetail.threeRate}}%</div>
<div class="main1">
<div style="height: 300px;">
<div class="left">
......
......@@ -305,10 +305,19 @@ export default {
this.option = {
xAxis: {
type: 'category',
data: labels
data: labels,
axisTick: {
show: false
},
},
yAxis: {
type: 'value'
type: 'value',
splitNumber: 5,
splitLine : { //网格线
lineStyle: {
type: 'dashed' //设置网格线类型 dotted:虚线 solid:实线
},
}
},
grid:{
left:'4%',
......@@ -325,7 +334,10 @@ export default {
legend: {
left: '12px',
top:"15px",
data: ['成交金额', '储备项目', '跟进动态']
data: ['成交金额', '储备项目', '跟进动态'],
itemHeight: 8, // 修改icon图形大小
itemGap: 20
},
series: [
{
......@@ -349,7 +361,7 @@ export default {
},
itemStyle: {
normal:{
color:'#0081FF'
color:'#0081FF',
}
},
label:{
......@@ -357,6 +369,7 @@ export default {
show:false
}
},
symbolSize:8,
},
{
name: '储备项目',
......@@ -387,6 +400,7 @@ export default {
show:false
}
},
symbolSize:8,
},
{
name: '跟进动态',
......@@ -417,6 +431,7 @@ export default {
show:false
}
},
symbolSize:8,
},
]
}
......@@ -504,17 +519,23 @@ export default {
.ss{
color: #0CBC6D;
padding-left: 3px;
position: relative;
>img{
width: 8px;
margin-top: -3px;
margin-top: 0px;
position: absolute;
margin-left: 8px;
}
}
.xj{
color: #FF3C3C;
padding-left: 3px;
position: relative;
>img{
width: 8px;
margin-top: -3px;
margin-top: 1px;
position: absolute;
margin-left: 8px;
}
}
}
......@@ -580,12 +601,15 @@ export default {
height: auto;
width: calc(100% - 369px);
.records{
margin-top: -17px;
margin-top: 2px;
height: 627px;
overflow-y: auto;
width: 100%;
padding-right: 47px;
box-sizing: border-box;
.recordlist{
padding-top: 0;
}
}
}
}
......@@ -616,6 +640,7 @@ export default {
&.on{
background: #0081FF;
color: #FFFFFF;
border-color: #0081FF;
}
&:first-child{
border-radius: 2px 0px 0px 2px;
......
......@@ -5,6 +5,7 @@
:visible.sync="isshow"
@close="resetForm('ruleForm')"
>
<div @click = 'handleALL'>
<div class="poptitle">
<img src="@/assets/images/economies/icon.png">
<span>添加项目</span>
......@@ -15,7 +16,7 @@
</el-form-item>
<el-form-item label="业主单位:" class="row" prop="ownerCompany">
<el-input type="text" placeholder="请输入" v-model="queryParam.ownerCompany" @input="getCompany"></el-input>
<div class="resultlist" v-if="showlist">
<div class="resultlist" v-if="showlist" id="box">
<div v-for="(item,index) in companData" @click="selCompany(item)"><span v-html="item.name"></span></div>
</div>
</el-form-item>
......@@ -48,6 +49,7 @@
<div class="btn btn_primary h32" @click="submitForm('ruleForm')">新建商机</div>
</div>
</el-form>
</div>
</el-dialog>
</template>
......@@ -107,6 +109,14 @@
})
},
methods:{
handleALL(event){
var one = document.getElementById("box");
if(one){
if(!one.contains(event.target)){
this.showlist = false
}
}
},
//获取建设库客户
getCompany(value){
if (value.length>=2){
......
......@@ -16,10 +16,10 @@
:headers="headers"
:on-success="onSuccess">
<img class="up_img" src="@/assets/images/project/upload.png">
<div class="up_text">点击选择或将文件(xls,xlsx)拖拽至此上传成员名录</div>
<div class="up_text">点击选择或将文件(xls,xlsx)拖拽至此上传项目表格</div>
<div class="up_tip">导入的文件内容必须依照下载模板的要求填写</div>
<div class="up_tip">上传文件最大为2M,仅支持Excel表格文件(xls,xlsx)</div>
<div class="up_tip">导入已存在的客户将自动跳过</div>
<div class="up_tip">导入已存在的{{titletext}}将自动跳过</div>
</el-upload>
<div class="up_success" v-if="isUpload == true">
<img src="@/assets/images/project/success.png">上传成功
......@@ -42,7 +42,7 @@
<div class="p3">
<img src="@/assets/images/project/success.png">查询成功
</div>
<div class="p2">成功导入{{successCount}}{{titletext}}信息</div>
<div class="p2">导入成功,已为您去掉重复{{titletext}}{{successCount}}</div>
<div class="btns">
<div class="btn btn_primary h32" @click="getmsg">查看</div>
</div>
......@@ -79,12 +79,12 @@
created(){
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'){//客户管理
this.downloadhref = '/file/Template.xlsx'
this.titletext = '客户'
this.titletext = '企业'
this.action = process.env.VUE_APP_BASE_API + "/customer/importData"
}
},
......
......@@ -7,7 +7,7 @@
<div class="row">
<div class="con">
<span>总投资额(万元) :</span>
<div class="inputxt">
<div class="inputxt" id="inputxt1">
<div class="flex" v-if="nowedit == 1">
<el-input placeholder="待添加" v-model="investmentAmount" @input="number"></el-input>
<div class="flex">
......@@ -20,7 +20,7 @@
</div>
<div class="con i">
<span>资金来源 :</span>
<div class="inputxt">
<div class="inputxt" id="inputxt2">
<div class="flex" v-if="nowedit == 2">
<el-input placeholder="待添加" v-model="amountSource"></el-input>
<div class="flex">
......@@ -35,7 +35,7 @@
<div class="row">
<div class="con">
<span>建设性质 :</span>
<div class="inputxt">
<div class="inputxt" id="inputxt3">
<div class="flex" v-if="nowedit == 3">
<el-input placeholder="待添加" v-model="buildProperty"></el-input>
<div class="flex">
......@@ -95,8 +95,8 @@
</el-card>
<el-card class="box-card noborder">
<div class="cardtitles">项目概况与建设规模</div>
<div class="baseinfo">
<el-input v-model="projectDetails" @focus="nowedit = 9" class="textarea" type="textarea" placeholder="请输入项目概况与建设规模详细信息" maxlength="500" :show-word-limit="true" ></el-input>
<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>
<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>
......@@ -111,7 +111,7 @@
<div class="row">
<div class="con">
<span>评标办法 :</span>
<div class="inputxt">
<div class="inputxt" id="inputxt4">
<div class="flex" v-if="nowedit == 4">
<el-input placeholder="待添加" v-model="evaluationBidWay"></el-input>
<div class="flex">
......@@ -140,7 +140,7 @@
<div class="row">
<div class="con">
<span>保证金缴纳 :</span>
<div class="inputxt">
<div class="inputxt" id="inputxt5">
<div class="flex" v-if="nowedit == 5">
<el-input placeholder="待添加" v-model="earnestMoneyPay"></el-input>
<div class="flex">
......@@ -153,7 +153,7 @@
</div>
<div class="con i">
<span>保证金金额(万元) :</span>
<div class="inputxt">
<div class="inputxt" id="inputxt6">
<div class="flex" v-if="nowedit == 6">
<el-input placeholder="待添加" v-model="earnestMoney"></el-input>
<div class="flex">
......@@ -168,7 +168,7 @@
<div class="row">
<div class="con">
<span>开标地点 :</span>
<div class="inputxt">
<div class="inputxt" id="inputxt7">
<div class="flex" v-if="nowedit == 7">
<el-input placeholder="待添加" v-model="bidOpenPlace"></el-input>
<div class="flex">
......@@ -181,7 +181,7 @@
</div>
<div class="con i">
<span>评标委员会 :</span>
<div class="inputxt">
<div class="inputxt" id="inputxt8">
<div class="flex" v-if="nowedit == 8">
<el-input placeholder="待添加" v-model="evaluationBidCouncil"></el-input>
<div class="flex">
......@@ -230,6 +230,22 @@
},
watch:{
},
mounted(){
document.addEventListener('mouseup',(e) => {
let j = 0
for(var i=1;i<=9;i++){
let isSelf = document.getElementById('inputxt'+i).contains(event.target) // 这个是自己的区域
if(isSelf) {
this.nowedit = i
}else {
j++;
}
}
if(j == 9){
this.nowedit = -1
}
})
},
created(){
this.getJSNR()
},
......
......@@ -60,7 +60,7 @@
</el-table-column>
</el-table>
<div class="bottems">
<div class="btn btn_primary h28" @click="opennew"><div class="img img1"></div>新增联系人</div>
<div class="btn btn_primary h28" @click="opennew" v-if="total>0"><div class="img img1"></div>新增联系人</div>
<el-pagination v-if="total>searchParam.pageSize"
background
:page-size="searchParam.pageSize"
......
......@@ -3,7 +3,7 @@
<div>
<el-card class="box-card noborder">
<div class="cardtitles">相关企业</div>
<div class="searchbtns">
<div class="searchbtns" v-if="tableData.total>0">
<el-select class="select" placeholder="企业类型" 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>
......@@ -230,8 +230,10 @@
cancel(type){
if(type == 0)
this.dialogVisible = false
else
else{
this.dialogVisible = true
this.hzhbVisible = false
}
},
totype(value){
this.types = value
......@@ -243,7 +245,8 @@
this.typename = this.typelist[index]
}
})
this.hzhbVisible=true
this.hzhbVisible = true
this.dialogVisible = false
},
//打开新建窗口
opennew(){
......
......@@ -7,7 +7,7 @@
<div class="row">
<div class="con">
<span>项目级别 :</span>
<div class="inputxt">
<div class="inputxt" id="inputxt1">
<div class="flex" v-if="nowedit == 1">
<el-input placeholder="待添加" v-model="xmsldata.projectLevel"></el-input>
<div class="flex">
......@@ -37,7 +37,9 @@
<span style="float: left;margin-top: 2px">项目标签 :</span>
<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>
<el-input placeholder="待添加" v-model="tipsvalue"></el-input>
<div style="position: relative">
<el-input placeholder="待添加" v-model="tipsvalue" @input="getValue" :style="spanWidth"></el-input><span class="spanText">{{ tipsvalue }}</span>
</div>
<div class="addbtn" @click="addtips"></div>
</div>
</div>
......@@ -50,7 +52,7 @@
<div class="row">
<div class="con">
<span>主管单位 :</span>
<div class="inputxt">
<div class="inputxt" id="inputxt2">
<div class="flex" v-if="nowedit == 2">
<el-input placeholder="待添加" v-model="xmsldata.supervisorUnit"></el-input>
<div class="flex">
......@@ -63,7 +65,7 @@
</div>
<div class="con i">
<span>建设单位 :</span>
<div class="inputxt">
<div class="inputxt" id="inputxt3" :style="{width:rig1}">
<div class="flex" v-if="nowedit == 3">
<el-input placeholder="待添加" v-model="xmsldata.constructionUnit"></el-input>
<div class="flex">
......@@ -72,13 +74,14 @@
</div>
</div>
<span :class="{txt:!xmsldata.constructionUnit}" v-else @click="nowedit = 3">{{xmsldata.constructionUnit||'待添加'}}</span>
<span class="rig rig1">{{xmsldata.constructionUnit}}</span>
</div>
</div>
</div>
<div class="row">
<div class="con">
<span>主管单位负责人 :</span>
<div class="inputxt">
<div class="inputxt" id="inputxt4">
<div class="flex" v-if="nowedit == 4">
<el-input placeholder="待添加" v-model="xmsldata.supervisorPrincipal"></el-input>
<div class="flex">
......@@ -91,7 +94,7 @@
</div>
<div class="con i">
<span>建设单位负责人 :</span>
<div class="inputxt">
<div class="inputxt" id="inputxt5">
<div class="flex" v-if="nowedit == 5">
<el-input placeholder="待添加" v-model="xmsldata.constructionPrincipal"></el-input>
<div class="flex">
......@@ -106,7 +109,7 @@
<div class="row">
<div class="con">
<span>主管单位联系电话 :</span>
<div class="inputxt">
<div class="inputxt" id="inputxt6">
<div class="flex" v-if="nowedit == 6">
<el-input placeholder="待添加" v-model="xmsldata.supervisorPhone"></el-input>
<div class="flex">
......@@ -119,7 +122,7 @@
</div>
<div class="con i">
<span>建设单位联系电话 :</span>
<div class="inputxt">
<div class="inputxt" id="inputxt7">
<div class="flex" v-if="nowedit == 7">
<el-input placeholder="待添加" v-model="xmsldata.constructionPhone"></el-input>
<div class="flex">
......@@ -189,6 +192,8 @@
projectStage:[],//项目阶段
id: this.detailId ? this.detailId : this.$route.query.id,
xmsldata:this.datas,
spanWidth:'width: 70px',
rig1:'184px',
}
},
created(){
......@@ -198,7 +203,34 @@
})
this.getXMSL()
},
mounted(){
document.addEventListener('mouseup',(e) => {
let j = 0
for(var i=1;i<=7;i++){
let isSelf = document.getElementById('inputxt'+i).contains(event.target) // 这个是自己的区域
if(isSelf) {
this.nowedit = i
}else {
j++;
}
}
if(j == 7){
this.nowedit = -1
}
})
},
methods:{
getValue(){
const spanStyle = document.querySelector(".spanText");
this.$nextTick(() => { // 如果不用$nextTick的话页面并不会更新,它是在下次dom更新后再渲染到页面上
let wid =
spanStyle.offsetWidth <= 70
? "70px"
: spanStyle.offsetWidth + 28 + "px";
this.spanWidth = 'width:'+wid
});
},
editXMSL(param){
let params = param
params.id = this.id
......@@ -270,6 +302,15 @@
this.xmjd = result.data.projectStage
this.tipslit = result.data.labelList
this.xmsldata = result.data
const spanStyle = document.querySelector(".rig1");
this.$nextTick(() => { // 如果不用$nextTick的话页面并不会更新,它是在下次dom更新后再渲染到页面上
this.rig1 =
spanStyle.offsetWidth <= 184
? "184px"
: spanStyle.offsetWidth + "px";
});
})
},
}
......@@ -280,4 +321,7 @@
.select-popper{
top: 3px;
}
.inputxt .flex{
background: #fff;
}
</style>
......@@ -3,7 +3,7 @@
<div>
<el-card class="box-card noborder">
<div class="cardtitles">资料文档</div>
<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>
<div class="btn" @click="handleCurrentChange(1)">搜索</div>
......@@ -199,12 +199,6 @@
downnlod(row){
let param = {filePath:row.filePath}
this.$download.exportByPost('/business/file/download',param);
// let a = document.createElement("a");
// a.setAttribute("href", row.filePath);
// a.setAttribute("download", row.name);
// document.body.appendChild(a);
// a.click();
},
delQY(){
......
<template>
<div>
<div @click="handleALL">
<div class="miantitle">
<template v-if="!detailId">
<span>项目管理</span>
......@@ -56,7 +56,7 @@
</div>
</span>
</div>
<div class="det-con con" >
<div class="det-con con" id="inputxt">
<span>投资估算(万元):</span>
<div class="inputxt i" :class="{'nomar':nowedit != 3}">
<div class="flex" v-if="nowedit == 3">
......@@ -197,6 +197,16 @@
this.getXMSL()
},
methods: {
handleALL(event){
var one = document.getElementById("inputxt");
if(one){
if(!one.contains(event.target)){
this.nowedit = -1
}else{
this.nowedit = 3
}
}
},
getXMSL(){
getXMSL(this.id).then(result=>{
this.ProjectData = result.code==200?result.data:{}
......
......@@ -114,29 +114,31 @@
<div class="datalist">
<div class="datali" v-for="(item,index) in datalist">
<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-tips">
<span class="tips tip1" v-for="label in item.labels">{{label}}</span>
<span v-if="item.address" class="tips tip2">{{item.address}}</span></div>
<div class="det-contets">
<div class="det-con">
<div class="det-con" v-if="item.projectType">
<span>项目类型:</span>
<span>{{item.projectType || '--'}}</span>
<span>{{item.projectType}}</span>
</div>
<div class="det-con">
<div class="det-con" v-if="item.investmentAmount">
<span>投资估算(万元):</span>
<span>{{item.investmentAmount || '--'}}</span>
<span>{{item.investmentAmount}}</span>
</div>
<div class="det-con">
<div class="det-con" v-if="item.followTime">
<span>最后跟进时间:</span>
<span>{{item.followTime || '--'}}</span>
<span>{{item.followTime}}</span>
</div>
<div class="det-con">
<div class="det-con" v-if="item.ownerCompany ">
<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" @click="toDetail(item.id,'gjjl')">跟进</div>
<div class="i2"><img src="@/assets/images/edit1.png" @click="toDetail(item.id,'xmsl')">编辑</div>
<div class="i1" @click="toDetail(item.id,'gjjl')"><img src="@/assets/images/follow.png">跟进</div>
<div class="i2" @click="toDetail(item.id,'xmsl')"><img src="@/assets/images/edit1.png">编辑</div>
<div class="i3" @click="deldetail(index)"><img src="@/assets/images/delete.png">删除</div>
</div>
<div class="delform" v-if="activeName=='first' && ondel == index">
......@@ -296,6 +298,11 @@ export default {
str += '-' +item.districtName
item.address = str
item.nickName1 = item.nickName?item.nickName.slice(0,1):''
item.labels=[]
if(item.label!=null && item.label !=""){
item.labels = item.label.split(',')
}
})
}
})
......
......@@ -2,6 +2,7 @@ package com.dsk.system.dskService;
import cn.hutool.core.bean.BeanUtil;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.domain.model.*;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.utils.DskOpenApiUtil;
import org.slf4j.Logger;
......@@ -20,67 +21,67 @@ public class EnterpriseBussinessService {
private DskOpenApiUtil dskOpenApiUtil;
public TableDataInfo clientPage(Map<String, Object> body) throws Exception {
public TableDataInfo clientPage(EnterpriseBussinessClientPageBody body) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseBussiness/clientPage", BeanUtil.beanToMap(body, false, false));
return dskOpenApiUtil.responsePage(map);
}
public TableDataInfo clientProjectPage(Map<String, Object> body) throws Exception {
public TableDataInfo clientProjectPage(EnterpriseBussinessClientProjectPageBody body) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseBussiness/clientProjectPage", BeanUtil.beanToMap(body, false, false));
return dskOpenApiUtil.responsePage(map);
}
public TableDataInfo tenderPage(Map<String, Object> body) throws Exception {
public TableDataInfo tenderPage(EnterpriseBussinessTenderPageBody body) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseBussiness/tenderPage", BeanUtil.beanToMap(body, false, false));
return dskOpenApiUtil.responsePage(map);
}
public R tenderDetail(Map<String, Object> body) throws Exception {
public R tenderDetail(EnterpriseBussinessTenderDetailBody body) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseBussiness/tenderDetail", BeanUtil.beanToMap(body, false, false));
return BeanUtil.toBean(map, R.class);
}
public TableDataInfo supplierPage(Map<String, Object> body) throws Exception {
public TableDataInfo supplierPage(EnterpriseBussinessSupplierPageBody body) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseBussiness/supplierPage", BeanUtil.beanToMap(body, false, false));
return dskOpenApiUtil.responsePage(map);
}
public TableDataInfo supplierProjectPage(Map<String, Object> body) throws Exception {
public TableDataInfo supplierProjectPage(EnterpriseBussinessSupplierProjectPageBody body) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseBussiness/supplierProjectPage", BeanUtil.beanToMap(body, false, false));
return dskOpenApiUtil.responsePage(map);
}
public R projectDetail(Map<String, Object> body) throws Exception {
public R projectDetail(EnterpriseBussinessProjectDetailBody body) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseBussiness/projectDetail", BeanUtil.beanToMap(body, false, false));
return BeanUtil.toBean(map, R.class);
}
public TableDataInfo oftenAgencyPage(Map<String, Object> body) throws Exception {
public TableDataInfo oftenAgencyPage(EnterpriseBussinessOftenAgencyPageBody body) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseBussiness/oftenAgencyPage", BeanUtil.beanToMap(body, false, false));
return dskOpenApiUtil.responsePage(map);
}
public TableDataInfo bidCooperatePage(Map<String, Object> body) throws Exception {
public TableDataInfo bidCooperatePage(EnterpriseBussinessBidCooperatePageBody body) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseBussiness/bidCooperatePage", BeanUtil.beanToMap(body, false, false));
return dskOpenApiUtil.responsePage(map);
}
public TableDataInfo historySendPage(Map<String, Object> body) throws Exception {
public TableDataInfo historySendPage(EnterpriseBussinessHistorySendPageBody body) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseBussiness/historySendPage", BeanUtil.beanToMap(body, false, false));
return dskOpenApiUtil.responsePage(map);
}
public R historySendProvince(Map<String, Object> body) throws Exception {
public R historySendProvince(EnterpriseBussinessHistorySendProvinceBody body) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseBussiness/historySendProvince", BeanUtil.beanToMap(body, false, false));
return BeanUtil.toBean(map, R.class);
}
......
......@@ -2,6 +2,7 @@ package com.dsk.system.dskService;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.dsk.acc.openapi.client.util.CommonUtils;
import com.dsk.common.core.domain.R;
......@@ -42,8 +43,31 @@ public class EnterpriseService {
ICustomerService iCustomerService;
public R infoHeader(EnterpriseInfoHeaderBody body) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/api/jsk/enterprise/infoHeader", BeanUtil.beanToMap(body, false, false));
return BeanUtil.toBean(map, R.class);
Map<String, Object> companyMap = dskOpenApiUtil.requestBody("/api/jsk/enterprise/infoHeader", BeanUtil.beanToMap(body, false, false));
Integer companyCode = MapUtils.getInteger(companyMap, "code", 300);
if (200 != companyCode) throw new RuntimeException();
Map companyData = MapUtils.getMap(companyMap, "data", null);
companyData.put("claimStatus", 0);
Map<String, Object> uipMap = dskOpenApiUtil.requestBody("/operate/enterprise/financial", BeanUtil.beanToMap(body, false, false));
Integer uipCode = MapUtils.getInteger(uipMap, "code", 300);
if (200 != uipCode) return R.ok(companyData);
Map uipData = MapUtils.getMap(uipMap, "data", new HashMap<>());
String uipId = MapUtils.getString(uipData, "uipId", null);
if (ObjectUtil.isEmpty(uipId)) {
return R.ok(companyData);
}
ArrayList<String> uipIds = new ArrayList<>();
uipIds.add(uipId);
List<CustomerStatusListVo> claimStatusList = iCustomerService.selectStatusList(uipIds);
if (CollectionUtils.isNotEmpty(claimStatusList)) {
companyMap.put("claimStatus", 1);
}
return R.ok(companyData);
}
public R statistic(EnterpriseStatisticBody body) throws Exception {
......
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