Commit 66c7bc77 authored by liuChang's avatar liuChang

Merge branch 'master' of 192.168.60.201:root/dsk-operate-sys

parents acf38fc8 0a4e2edc
......@@ -77,12 +77,15 @@ public class BusinessFileController extends BaseController {
* @return
*/
@PostMapping("/upload")
public AjaxResult uploadFolder(@RequestPart("file") MultipartFile file, HttpServletRequest request){
public AjaxResult uploadFolder(@RequestPart("file") MultipartFile file, HttpServletRequest request) {
try {
//获取文件名
String filename = file.getOriginalFilename();
//TODO 校验是否上传同名文件
String businessFileName = request.getHeader("FilePath");
// 上传文件路径
String filePath = RuoYiConfig.getUploadPath()+businessFileName+"/";
// 上传并返回文件全路径
// 上传文件路径
String filePath = RuoYiConfig.getUploadPath() + businessFileName + "/";
// 上传并返回文件全路径
String fileName = FileUploadUtils.upload(filePath, file);
String url = serverConfig.getUrl() + fileName;
AjaxResult ajax = AjaxResult.success();
......
......@@ -50,6 +50,8 @@ public class CompanySearchController {
}
compose.getPage().setPage(compose.getPageNum());
compose.getPage().setLimit(compose.getPageSize());
compose.getPage().setField(compose.getField());
compose.getPage().setOrder(compose.getOrder());
return opportunityRadarService.enterprisePage(compose);
}
}
......@@ -74,7 +74,6 @@ public class RegionalEconomicDataController {
public AjaxResult location(@RequestBody OpRegionalLocalDto vo, HttpServletRequest request){
String ip = IpUtil.getIpAddr(request);
vo.setIp(ip);
log.info("location====================================>" +ip);
return economicService.location(vo);
}
......@@ -115,4 +114,16 @@ public class RegionalEconomicDataController {
return economicService.regionalCompare(dto);
}
/***
*@Description: 地区经济-对比
*@Param:
*@return: com.dsk.acc.security.common.msg.RestResponse
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/regional/multipleCompare")
public AjaxResult regionalMultipleCompare(@RequestBody OpRegionalEconomicRegionalCompareDto compareDto) {
return economicService.regionalMultipleCompare(compareDto);
}
}
package com.dsk.common.core.domain.entity;
import java.util.Date;
import com.dsk.common.core.domain.BaseEntity;
import com.dsk.common.utils.CheckUtils;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.dsk.common.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.Pattern;
import java.util.Date;
/**
* 项目联系人对象 business_contacts
......@@ -17,7 +13,7 @@ import javax.validation.constraints.Pattern;
* @author lxl
* @date 2023-05-17
*/
public class BusinessContacts extends BaseEntity
public class BusinessContacts
{
private static final long serialVersionUID = 1L;
......@@ -52,10 +48,21 @@ public class BusinessContacts extends BaseEntity
@Excel(name = "维护人员")
private String accendant;
/** 性别(1.男 2.女 0.未知) */
@Excel(name = "性别")
private Integer sex;
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date creatTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/** 修改时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
public void setId(Integer id)
{
......@@ -129,14 +136,29 @@ public class BusinessContacts extends BaseEntity
{
return accendant;
}
public void setCreatTime(Date creatTime)
{
this.creatTime = creatTime;
public Date getCreateTime() {
return createTime;
}
public Date getCreatTime()
{
return creatTime;
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
@Override
......@@ -150,8 +172,9 @@ public class BusinessContacts extends BaseEntity
.append("position", getPosition())
.append("phone", getPhone())
.append("accendant", getAccendant())
.append("creatTime", getCreatTime())
.append("createTime", getCreateTime())
.append("updateTime", getUpdateTime())
.append("sex", getSex())
.toString();
}
}
package com.dsk.common.core.domain.entity;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableField;
import com.dsk.common.annotation.Excel;
import com.dsk.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.dsk.common.annotation.Excel;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
/**
* 项目详情对象 business_info
*
......
......@@ -34,6 +34,10 @@ public class BasePage {
*/
private Integer pageMaxSize;
private String field;
private String order;
public Integer getPageIndex() {
return pageNum;
......@@ -74,6 +78,22 @@ public class BasePage {
this.pageIndex = pageNum;
}
public String getField() {
return field;
}
public void setField(String field) {
this.field = field;
}
public String getOrder() {
return order;
}
public void setOrder(String order) {
this.order = order;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
......
......@@ -6,7 +6,7 @@ import javax.validation.constraints.NotNull;
/**
* @ClassName OpRegionalEconomicDataV1Dto
* @Description 专项债-项目类别统计
* @Description 地区经济
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
......
package com.dsk.common.dtos;
import lombok.Data;
import java.util.List;
/**
* @ClassName OpRegionalEconomicRegionalCompareDto
* @Description 地区经济-对比
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicRegionalCompareDto {
/**
* 年份
*/
private Integer year;
private List<OpRegionalEconomicDataStatisticsRegionalDto> compareList;
}
......@@ -8,7 +8,8 @@ import java.util.regex.Pattern;
*/
public class CheckUtils {
public static final String REG_Moblie = "^((13[0-9])|(14(0|[5-7]|9))|(15([0-3]|[5-9]))|(16(2|[5-7]))|(17[0-8])|(18[0-9])|(19([0-3]|[5-9])))\\d{8}$";
public static final String REG_Moblie = "^((13[0-9])|(14(0|[5-7]|9))|(15([0-3]|[5-9]))|(16(2|[5-7]))|(17[0-8])|(18[0-9])|(19([0-3]|[5-9])))\\d{8}$";//手机号
public static final String REG_Landline = "(\\(\\d{3,4}\\)|\\d{3,4}-|\\s)?\\d{8}";//座机号
public static final String REG_EMAIL = "[a-zA-Z0-9]+@[a-zA-Z0-9]+\\.[a-zA-Z0-9]+";
......@@ -35,10 +36,42 @@ public class CheckUtils {
if (phone == null){
return false;
}else {
Pattern p = Pattern.compile(REG_Moblie);
Matcher m = p.matcher(phone);
return m.matches();
Pattern mobilePattern = Pattern.compile(REG_Moblie);
Pattern landlinePattern = Pattern.compile(REG_Landline);
Matcher mobileMatcher = mobilePattern.matcher(phone);
Matcher landlineMatcher = landlinePattern.matcher(phone);
return mobileMatcher.matches() || landlineMatcher.matches();
}
}
/**
* Double小数点前的位数
* @param number
* @return
*/
public static int checkIntegerPlaces(Double number) {
String strNumber = Double.toString(Math.abs(number));
int integerPlaces = strNumber.indexOf('.');
if (integerPlaces == -1) {
return strNumber.length();
} else {
return integerPlaces;
}
}
/**
* Double小数点后的位数
* @param number
* @return
*/
public static int checkDecimalPlaces(Double number) {
String strNumber = Double.toString(Math.abs(number));
int decimalPlaces = 0;
int index = strNumber.indexOf('.');
if (index != -1) {
decimalPlaces = strNumber.length() - index - 1;
}
return decimalPlaces;
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -343,6 +343,11 @@ ul, li {
}
}
}
.el-table__fixed{
tr:nth-child(2n){
background-color: #F8FBFF;
}
}
}
}
......
......@@ -512,7 +512,7 @@
.types{
display: flex;
justify-content: space-between;
padding: 8px 0 24px;
padding: 24px 0;
>div{
cursor: pointer;
>i{
......@@ -872,6 +872,10 @@
.el-table--enable-row-hover .el-table__body tr:hover > td.el-table__cell{
background: #F6F9FC;;
}
.el-table__header-wrapper th, th.el-table__cell.is-leaf{
background: #fff;
}
.hoverbtn{
display: none;
>div{
......@@ -968,7 +972,7 @@
position: fixed;
top: 0;
left: 0;
z-index: 2;
z-index: 3;
.upload{
width: 528px;
height: 430px;
......@@ -1073,7 +1077,8 @@
}
}
.success{
width: 240px;
min-width: 240px;
padding: 0 24px;
height: 175px;
background: #FFFFFF;
border-radius: 4px;
......@@ -1163,3 +1168,7 @@
}
}
}
.select-multiple,.select-popper .el-input{
//top: 10px !important;
line-height: 34px !important;
}
......@@ -270,6 +270,9 @@ select {
cursor: pointer;
position: relative;
}
.select-popper .select-active{
color: #0381fa;
}
.content_item .select-popper:hover .select-caret {
color: #0074E5;
......
......@@ -58,7 +58,7 @@ export default {
},
methods: {
async logout() {
this.$confirm('确定注销并退出系统吗?', '提示', {
this.$confirm('确定退出系统吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
......
......@@ -99,7 +99,7 @@ export const constantRoutes = [
path: '/enterprise/:id',
component: () => import('@/views/detail/party-a/index'),
name: 'PartyA',
meta: { title: '甲方详情' },
meta: { title: '甲方详情', icon: 'enterprise' },
}
]
},
......@@ -113,7 +113,7 @@ export const constantRoutes = [
path: '/company/:id',
component: () => import('@/views/detail/party-b/index'),
name: 'Company',
meta: { title: '方详情' }
meta: { title: '方详情' }
}
]
},
......
<template>
<div>
<div @click = 'handleALL'>
<div class="miantitle">
<span>客户管理</span>
<span> / 客户列表</span>
......@@ -202,7 +202,7 @@
<el-form class="popform j" :model="queryParam" :rules="rules" ref="ruleForm" label-width="130px">
<el-form-item label="企业名称:" class="row" prop="companyName">
<el-input type="text" placeholder="请输入" v-model="queryParam.companyName" @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>
......@@ -302,6 +302,14 @@ export default {
this.prvinceTree()
},
methods:{
handleALL(event){
var one = document.getElementById("box");
if(one){
if(!one.contains(event.target)){
this.showlist = false
}
}
},
toct(){
this.$router.push({path:'/macro/urban'})
},
......@@ -463,7 +471,10 @@ export default {
},
//输入数字
number(value){
this.queryParam.registerCapital = value.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1')//输入6位小数
if(value == '')
this.queryParam.registerCapital = value
else
this.queryParam.registerCapital = value.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1')//输入6位小数
}
}
}
......
......@@ -45,7 +45,7 @@
<!-- 输入框 -->
<template v-if="form.type==3">
<div class="cooperate-name">
<el-input @focus="clickFocus('detailFocus'+i)" @blur="clickFocus('detailFocus'+i)" v-model="form.value" :placeholder="form.placeholder"></el-input>
<el-input @focus="clickFocus('detailFocus'+i)" @blur="clickFocus('detailFocus'+i)" v-model="form.value" :placeholder="form.placeholder" :style="form.width?'width:'+form.width+'px':'width:180px'"></el-input>
<span :id="'detailFocus'+i" @click="changeSelect">搜索</span>
</div>
</template>
......@@ -197,7 +197,6 @@ export default {
::v-deep .el-input__inner {
border-right: 0;
border-radius: 2px 0 2px 0;
width: 180px;
}
}
.fromTime{
......
......@@ -28,14 +28,14 @@
prefix-icon="fromTime-icon"
value-format="yyyy-MM-dd"
range-separator="至"
start-placeholder="开始月份"
end-placeholder="结束月份">
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</template>
<!-- 输入框 -->
<template v-if="form.type==3">
<div class="cooperate-name">
<el-input clearable @clear="changeSelect" @focus="clickFocus('focus'+i)" @blur="clickFocus('focus'+i)" v-model="form.value" :placeholder="form.placeholder"></el-input>
<el-input clearable @clear="changeSelect" @focus="clickFocus('focus'+i)" @blur="clickFocus('focus'+i)" v-model="form.value" :placeholder="form.placeholder" :style="form.width?'width:'+form.width+'px':'width:180px'"></el-input>
<span :id="'focus'+i" @click="changeSelect">搜索</span>
</div>
</template>
......@@ -230,7 +230,6 @@ export default {
}
::v-deep .el-input__inner {
border-radius: 2px 0 2px 0;
width: 180px;
border: 1px solid #D9D9D9;
border-right: 0;
}
......
......@@ -2,8 +2,9 @@
<div class="header-container">
<div class="bread-crumb">
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="{ path: '/enterpriseData' }">企业数据</el-breadcrumb-item>
<el-breadcrumb-item :to="{ path: '/enterpriseData?tag=1' }">查企业</el-breadcrumb-item>
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item :to="{ path: fromPath }" v-if="fromName">{{fromName}}</el-breadcrumb-item>
<!-- <el-breadcrumb-item :to="{ path: '/enterpriseData?tag=1' }">查企业</el-breadcrumb-item>-->
<el-breadcrumb-item>{{companyInfo.simpleName || companyInfo.companyName || '--'}}</el-breadcrumb-item>
</el-breadcrumb>
</div>
......@@ -17,7 +18,7 @@
<script>
export default {
name: 'Header',
props: ['companyId', 'companyInfo'],
props: ['companyId', 'companyInfo', 'fromPath', 'fromName'],
data() {
return {
}
......
......@@ -14,7 +14,7 @@
<el-table-column
v-if="isIndex"
label="序号"
width="50"
:width="flexWidth(tableData)"
align="left"
:fixed="indexFixed"
:resizable="false">
......@@ -112,7 +112,6 @@ export default {
},
data() {
return {
}
},
methods:{
......@@ -124,6 +123,14 @@ export default {
},
sortChange(e){
this.$emit('sort-change',e)
},
flexWidth(tableData) {
let currentMax = this.queryParams.pageNum*this.queryParams.pageSize - this.queryParams.pageSize + tableData.length, wdth = 50
// return currentMax.toString().length*25 + 'px'
if(currentMax.toString().length>3){
wdth = wdth + (currentMax.toString().length-3)*10
}
return wdth+'px'
}
}
}
......@@ -136,4 +143,43 @@ export default {
/*::v-deep .el-table__fixed{
height: calc(100% - 16px) !important;
}*/
::v-deep .el-table__row{
&:nth-child(even){
background-color: #F9FCFF;
.more{
background: #F8FBFF;
span{
color: #0081FF;
}
}
}
&:nth-child(odd){
.more{
span{
color: #0081FF;
}
}
}
}
::v-deep .el-table th.el-table__cell.is-leaf,::v-deep .el-table td.el-table__cell {
border-bottom: 1px solid #E6EAF1;
}
::v-deep .el-table--border .el-table__cell {
border-right: 1px solid #E6EAF1;
}
::v-deep .el-table__body tr.hover-row.current-row>td,
::v-deep .el-table__body tr.hover-row.el-table__row--striped.current-row>td,
::v-deep .el-table__body tr.hover-row.el-table__row--striped>td,
::v-deep .el-table__body tr.hover-row>td{
background-color:#DCEBFF !important;
.more{
background: #DCEBFF;
}
}
::v-deep .el-table--enable-row-hover .el-table__body tr:hover > td {
background-color: #DCEBFF;
}
</style>
......@@ -46,7 +46,7 @@
<!-- 弹窗关联项目 -->
<el-drawer
title="添加合作情况"
size="40%"
size="45%"
:visible.sync="drawer"
:direction="direction"
:with-header="false"
......@@ -55,19 +55,19 @@
<div class="addhzqk_top">
<div class="addhzqk_top_t">
<div class="top_t_h1">
<img src="@/assets/images/economies/icon.png" />{{ info.companyName }}
<img src="@/assets/images/economies/icon.png" />{{ companyInfo.companyName }}
</div>
<div class="top_t_close"><i class="el-icon-close" @click="handleClose"></i></div>
</div>
<div class="addhzqk_top_d">
<div class="top_d_item">
法定代表人:<span>{{ info.legalPerson }}</span>
法定代表人:<span>{{ companyInfo.corporatePerson }}</span>
</div>
<div class="top_d_item">
注册资本:<span>{{ info.registerCapital }}万</span>
注册资本:<span>{{ companyInfo.regCapital }}</span>
</div>
<div class="top_d_item">
注册地址:<span>{{ info.registerAddress }}</span>
注册地址:<span>{{ companyInfo.addressDetail }}</span>
</div>
</div>
</div>
......@@ -143,7 +143,7 @@ export default {
components: {
Detail
},
props: ['customerIds'],
props: ['customerIds','companyInfo'],
data() {
return {
ifEmpty:false,
......@@ -161,7 +161,7 @@ export default {
formData: [
{ type: 1, fieldName: 'projectStage', value: '', placeholder: '项目阶段', options: []},
{ type: 1, fieldName: 'status', value: '', placeholder: '项目状态', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入企业名称查询'},
{ type: 3, fieldName: 'projectName', value: '', placeholder: '输入项目名称关键字搜索'},
],
stageOptions:[],
statusOptions:[],
......@@ -352,7 +352,7 @@ export default {
},
//输入数字
number(value){
this.addParam.investmentAmount = value.replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, '$1')//输入2位小数
this.addParam.investmentAmount = value.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1')//输入2位小数
},
//打开详情
clickDetail(id){
......
......@@ -63,7 +63,7 @@ export default {
pageSize: 20
},
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入合作项目/工程名称查询', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入合作项目/工程名称查询', options: [], width: 260},
],
forData: [
{label: '合作项目/工程名称', prop: 'dealTitle', width: '720', slot: true},
......
......@@ -68,7 +68,7 @@ export default {
pageSize: 20
},
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入合作项目/工程名称查询', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入合作项目/工程名称查询', options: [], width: 260},
],
forData: [
{label: '合作项目/工程名称', prop: 'projectAllName', width: '720', fixed: true, slot: true},
......
<template>
<div class="app-container part-container">
<Header :company-id="companyId" :companyInfo="companyInfo" v-if="companyId" />
<Header :company-id="companyId" :companyInfo="companyInfo" :fromPath="fromPath" :fromName="fromName" v-if="companyId" />
<div class="flex-box part-main">
<div class="part-left">
<side-bar @currentPath="showPartPage" :pathName="currentPath.pathName" :partBoxHeight="partBoxHeight" :customerId="customerId" />
......@@ -46,7 +46,7 @@
<!-- 招标偏好 -->
<Preference v-if="currentPath.pathName=='preference'" :customer-ids="customerId" />
<!-- 合作情况 -->
<Cooperate v-if="currentPath.pathName=='cooperate'" :customer-ids="customerId" />
<Cooperate v-if="currentPath.pathName=='cooperate'" :customer-ids="customerId" :companyInfo="companyInfo" />
<!-- 决策链条 -->
<DecisionMaking v-if="currentPath.pathName=='decisionMaking'" :customer-ids="customerId" :companyInfo="companyInfo" />
<!-- 跟进记录 -->
......@@ -147,9 +147,17 @@ export default {
currentPath: {
pathName: 'overview' //默认展示页
},
partBoxHeight: null
partBoxHeight: null,
fromPath: '',
fromName: ''
}
},
beforeRouteEnter(to, from, next) {
next(vm => {
vm.fromPath = from.path
vm.fromName = from.meta.title
})
},
created() {
if (this.$route.params.id) { // 获取companyId
let companyId = this.$route.params.id
......
......@@ -54,7 +54,7 @@ export default {
{label: '专项债用作资本金(亿元)', prop: 'specialBondCapital', sortable: 'custom', descending: '19', ascending: '20', width: '200'}
],
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220},
],
//列表
tableLoading:false,
......
......@@ -60,7 +60,7 @@ export default {
],
formData: [
{ type: 4, fieldName: 'landUse', value: '', placeholder: '土地用途', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: []}
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220}
],
//列表
tableLoading:false,
......
......@@ -60,7 +60,7 @@ export default {
{label: '是否为民间推介项目', prop: 'isProjcet', width: '150', slot: true}
],
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220},
],
//列表
tableLoading:false,
......
......@@ -56,6 +56,7 @@ export default {
},
forData: [
{label: '项目名称', prop: 'projectName', minWidth: '320', slot: true},
{label: '发布日期', prop: 'pubdate', width: '110'},
{label: '金额(万元)', prop: '', children: [
{ label: '建安费暂估', prop: 'projectSafeAmount', width: '88px'},
{ label: '勘察费暂估', prop: 'projectSurveyAmount', width: '88px'},
......@@ -74,8 +75,7 @@ export default {
{label: '分部分项', prop: 'projectSub', width: '130'},
{label: '项目级别', prop: 'projectLevel', width: '130'},
{label: '评标办法', prop: 'bidAssessmentWay', width: '130'},
{label: '项目属地', prop: 'province', width: '130', slot: true},
{label: '发布日期', prop: 'pubdate', width: '130'}
{label: '项目属地', prop: 'province', width: '130', slot: true}
],
formData: [
{ type: 1, fieldName: 'projectType', value: '', placeholder: '项目类别', options: []},
......@@ -131,6 +131,13 @@ export default {
this.tableLoading = false
if(res.code==200){
this.tableData = res.rows
if(this.tableData&&this.tableData.length>0){
this.tableData.forEach(item => {
item.projectSafeAmount ? item.projectSafeAmount = parseFloat(parseFloat(item.projectSafeAmount).toFixed(4)) : ''
item.projectSurveyAmount ? item.projectSurveyAmount = parseFloat(parseFloat(item.projectSurveyAmount).toFixed(4)) : ''
item.projectEnsureAmount ? item.projectEnsureAmount = parseFloat(parseFloat(item.projectEnsureAmount).toFixed(4)) : ''
})
}
}
this.tableDataTotal = res.total
}
......
<template>
<template xmlns="http://www.w3.org/1999/html">
<div class="app-container detail-container">
<el-tabs v-model="activeName" @tab-click="handleClick" class="detail-tab">
<el-tab-pane label="工商信息" name="first"></el-tab-pane>
......@@ -10,6 +10,22 @@
<template slot="provinceCode" slot-scope="scope">
<span>{{showRegion(scope.data.provinceCode)}}</span>
</template>
<template slot="term" slot-scope="scope">
<span v-if="scope.data.termStart&&scope.data.termEnd">{{ scope.data.termStart }} ~ {{ scope.data.termEnd }}</span>
<span v-else-if="scope.data.termStart&&!scope.data.termEnd">{{ scope.data.termStart }}</span>
<span v-else-if="!scope.data.termStart&&scope.data.termEnd">{{ scope.data.termEnd }}</span>
<span v-else>--</span>
</template>
<template slot="actualCapi" slot-scope="scope">
<span>
{{ scope.data.actualCapi?scope.data.actualCapi+'万元人民币':'--' }}
</span>
</template>
<template slot="colleguesNum" slot-scope="scope">
<span>
{{ scope.data.colleguesNum?scope.data.colleguesNum+'人':'--' }}
</span>
</template>
</info-table>
<tables
:tableLoading="tableLoading"
......@@ -53,18 +69,18 @@ export default {
{ name: '登记状态', prop: 'status' },
{ name: '成立日期', prop: 'startDate' },
{ name: '注册资本', prop: 'registCapi' },
{ name: '实缴资本', prop: 'actualCapi' },
{ name: '实缴资本', prop: 'actualCapi', slot: true },
{ name: '核准日期', prop: 'checkDate' },
{ name: '组织机构代码', prop: 'orgNo' },
{ name: '工商注册号', prop: 'regNo' },
{ name: '纳税人识别号', prop: 'creditNo' },
{ name: '企业类型', prop: 'econKind' },
{ name: '营业期限', prop: 'termEnd' },
{ name: '营业期限', prop: 'term', slot: true },
{ name: '纳税人资质', prop: 'qualification' },
{ name: '所属地区', prop: 'provinceCode', slot: true },
{ name: '登记机关', prop: 'belongOrg' },
{ name: '人员规模', prop: 'colleguesNum' },
{ name: '参保人数', prop: 'colleguesNum' },
{ name: '人员规模', prop: 'colleguesNum', slot: true },
{ name: '参保人数', prop: 'colleguesNum', slot: true },
{ name: '经营范围', prop: 'scope', style: true }
],
forData: [
......
......@@ -185,7 +185,7 @@ export default {
this.tableLoading = false
if(res.code==200){
this.dialogVisible=true
this.ifClaim = true
this.ifClaim = 1
}
}else{
this.$message.warning('对不起,当前不能认领')
......@@ -226,7 +226,7 @@ export default {
},
//获取认领状态
getClaimStatus(){
this.ifClaim = this.companyInfo.regCapital
this.ifClaim = this.companyInfo.claimStatus
},
handleWidth(){
if(this.companyInfo.introduction){
......
......@@ -11,7 +11,12 @@
<el-table-column label="序号" width="55" align="left" fixed>
<template slot-scope="scope">{{ holderParams.pageNum * holderParams.pageSize - holderParams.pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column prop="stockName" min-width="140" label="股东名称"></el-table-column>
<el-table-column min-width="140" label="股东名称">
<template slot-scope="scope">
<router-link :to="`/enterprise/${encodeStr(scope.row.stockId)}`" tag="a" class="a-link" v-if="scope.row.stockId&&scope.row.stockName" v-html="scope.row.stockName"></router-link>
<div v-else v-html="scope.row.stockName || '--'"></div>
</template>
</el-table-column>
<el-table-column prop="shouldCapiConv" label="应缴金额"></el-table-column>
<el-table-column prop="stockPercent" label="持股比例"></el-table-column>
<el-table-column prop="" label="法定代表人">
......
......@@ -46,8 +46,8 @@ export default {
{label: '列入日期', prop: 'inDate', width: '95'},
{label: '做出决定机关(移入)', prop: 'department', width: '264'},
{label: '移出经营异常名录原因', prop: 'outReason', width: '320'},
{label: '移日期', prop: 'outDate', width: '95'},
{label: '做出决定机关(移)', prop: 'outDepartment', width: '264'}
{label: '移日期', prop: 'outDate', width: '95'},
{label: '做出决定机关(移)', prop: 'outDepartment', width: '264'}
],
formData: [
{ type: 4, fieldName: 'years', value: '', placeholder: '列入时间', options: []}
......
......@@ -21,7 +21,7 @@
<template slot="punishReason" slot-scope="scope">
<span :class="[isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.punishReason)?'cell-span':'']" :style="{'-webkit-line-clamp': 5}">
<div v-html="scope.row.punishReason"></div>
<span v-if="isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.punishReason)" @click="changeShowAll(scope.index, 0)">...<span style="color: #0081FF;">更多</span></span>
<span v-if="isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.punishReason)" @click="changeShowAll(scope.index, 0)" class="more">...<span>更多</span></span>
</span>
</template>
</tables>
......
......@@ -13,10 +13,11 @@ export default {
data() {
return {
loading: false, // 是否加载中
navHeight: 68, // iframe距离顶部距离px
iframeHight: window.innerHeight, // iframe高度
scrollTop: 0, // 滚动条距离内部页面顶部距离
// domain: 'https://pre-plug.jiansheku.com',
domain: 'http://192.168.60.30:3300',
domain: 'https://pre-plug.jiansheku.com',
// domain: 'http://192.168.60.30:3300',
ak: 'aec7b3ff2y2q8x6t49a7e2c463ce21912' // 需要携带的sdkId
}
},
......@@ -28,7 +29,7 @@ export default {
this.src = `${this.domain}/enterprise/${this.$route.params.id}?ak=${this.ak}`
}
if(this.$route.name=='Personnel'){ //人员详情
this.src = `${this.domain}/personnel/${this.$route.params.id}.html?ak=${this.ak}&referrer=true`
this.src = `${this.domain}/personnel/${this.$route.params.id}.html?ak=${this.ak}`
}
}
},
......@@ -53,7 +54,7 @@ export default {
}
// 点击栏目名及子标签动态设置滚动高度
if (data.scrollHeight) {
window.scrollTo(sc, parseInt(data.scrollHeight) + 83)
window.scrollTo(sc, parseInt(data.scrollHeight) + _this.navHeight + 15)
}
// 点击下拉子标签动态设置滚动高度
if (data.clientHeight) {
......@@ -69,7 +70,7 @@ export default {
// 准备传值
this.$nextTick(() => {
const ifa = this.$refs.companyIframe
ifa.contentWindow.postMessage({ 'scrollTop': this.scrollTop }, '*')
ifa.contentWindow.postMessage({ 'scrollTop': this.scrollTop, 'navHeight': this.navHeight }, '*')
})
}
}
......
......@@ -6,7 +6,7 @@
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item prop="year">
<el-select v-model="queryParams.year" filterable class="form-content-width" placeholder="请选择">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.year" :value="item.year" />
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.year" :value="item.year" @click.native='handleSelect(item.year)'/>
</el-select>
</el-form-item>
</el-form>
......@@ -92,6 +92,7 @@
:prop="item"
:label="item"
width="16.7%"
:formatter="formatStatus"
>
</el-table-column>
</el-table>
......@@ -104,9 +105,7 @@
import { regionalCompare,getYears } from '@/api/macro/macro'
export default {
name: 'comparison',
props:{
dataQuery:{}
},
props:['dataQuery','provinceId'],
data() {
return {
queryParams: {
......@@ -155,6 +154,10 @@ export default {
prop: 'industryTotalValue',
label: '工业总产值(亿元)',
},
{
prop: 'fixedInvestment',
label: '固定资产投资(亿元)',
},
{
prop: 'realEstateInvestment',
label: '房地产开发投资(亿元)',
......@@ -287,17 +290,30 @@ export default {
regionData:[]
}
},
watch: {
provinceId(newValue, oldValue){
console.log(newValue)
}
},
created() {
this.dataRegion();
console.log(this.dataQuery)
// this.getData();
getYears({}).then(res => {
this.yearOptions=res.data.reverse();
this.queryParams.year = this.yearOptions[0].year;
if(this.dataQuery.pId){
const params = { year: this.queryParams.year,type:3,provinceId:this.dataQuery.provinceId }
const params = { year: this.queryParams.year,type:3}
if(this.provinceId.length >= 0){
params.provinceId=this.provinceId[0]
}
if(this.provinceId.length >= 1){
params.cityId=this.provinceId[1]
}
if(this.provinceId.length >= 2){
params.areaId=this.provinceId[2]
}
this.value1Flag=true
this.addressValue1=this.dataQuery.province
this.addressValue1=this.dataQuery.province.join('-')
this.getData(params,1)
}
})
......@@ -318,8 +334,10 @@ export default {
params.id=this.dataQuery.id
}
regionalCompare(params).then(res => {
this.tableData.splice(index-1,1,res.data)
this.$forceUpdate();
if(res.data){
this.tableData.splice(index-1,1,res.data)
this.$forceUpdate();
}
})
},
//地区
......@@ -377,7 +395,7 @@ export default {
},
handleVisibleChange(flag,index){
if(!flag){
if(this.value1 || this.value2 || this.value3 || this.value4 || this.value5){
if((index === 1 && this.value1) || (index === 2 && this.value2) || (index === 3 && this.value3) || (index === 4 && this.value4) || (index === 5 && this.value5)){
switch (index) {
case 1:
this.value1Flag=true
......@@ -523,11 +541,16 @@ export default {
this.$forceUpdate();
},
handleSelect(val){
const params = { year: this.queryParams.year,type:3 }
},
formatStatus: function(row, column, cellValue) {
if(row.title === '经济'||row.title === '财政'||row.title === '债务'){
return cellValue
}else {
return cellValue? cellValue : '-'
// return cellValue? cellValue : '-'
return cellValue
}
},
rowStyle(row){
......
......@@ -24,16 +24,18 @@
<el-table
v-loading="tableLoading"
:data="tableData"
height="440"
border
height="440px"
highlight-current-row
:summary-method="getSummaries"
show-summary
>
<el-table-column label="序号" width="60" align="left">
<template slot-scope="scope">{{ scope.$index + 1 }}</template>
<template slot-scope="scope">{{ scope.$index + 2 }}</template>
</el-table-column>
<el-table-column label="产业类型" prop="projectType"></el-table-column>
<el-table-column :label="oneYear">
<el-table-column prop="money" label="金额(亿元)"> </el-table-column>
<el-table-column prop="money" label="金额(亿元)" sortable> </el-table-column>
<el-table-column prop="rate" label="占比"> </el-table-column>
</el-table-column>
<el-table-column :label="twoYear">
......@@ -51,12 +53,7 @@
import { bidGroupCountByProjectType,bidMoneyGroupByProjectType,getYears } from '@/api/macro/macro'
export default {
name: 'industrialStructure',
props:{
dataQuery: {
type: Object,
default: {}
},
},
props:['dataQuery','provinceId'],
data() {
return {
queryParams: {
......@@ -71,6 +68,11 @@ export default {
twoYear:'',
}
},
watch: {
provinceId(newValue, oldValue){
this.getData()
}
},
created() {
getYears({}).then(res => {
this.yearOptions=res.data.reverse();
......@@ -92,7 +94,16 @@ export default {
endTime=mydate.getFullYear()-1+'-12-31';
this.oneYear=mydate.getFullYear()-1+'年';
this.twoYear=mydate.getFullYear()-2+'年';
let params={startDate:startTime,endDate:endTime,province:this.dataQuery.provinceId}
let params={startDate:startTime,endDate:endTime}
if(this.provinceId.length >= 0){
params.province=this.provinceId[0]
}
if(this.provinceId.length >= 1){
params.city=this.provinceId[1]
}
if(this.provinceId.length >= 2){
params.county=this.provinceId[2]
}
bidMoneyGroupByProjectType(params).then(res => {
let list=res.data[1].type
for (let i=0; i<res.data[0].type.length; i++){
......@@ -170,13 +181,54 @@ export default {
]
}
myChart.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();//图表跟随页面大小变化宽度
});
},
handleMessage(){
this.$message({
message: '功能正在开发中',
type: 'warning'
});
}
},
getSummaries(param){
const { columns, data } = param;
const sums = [];
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '1';
return;
}
if (index === 1) {
sums[index] = '合计';
return;
}
if (index === 3) {
sums[index] = '100';
return;
}
if (index === 5) {
sums[index] = '100';
return;
}
const values = data.map(item => Number(item[column.property]));
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return Number(Number(prev) + Number(curr)).toFixed(3)
} else {
return prev;
}
}, 0);
// if (index === 1) {
// sums[index] = Number(sums[index]).toFixed(0);
// return;
// }
});
console.log(sums)
return sums;
},
}
}
......@@ -211,6 +263,17 @@ export default {
}
.content-right{
width: 50%;
::v-deep .el-table{
display: flex;
flex-direction: column;
.el-table__body-wrapper {
order: 1;
}
.el-table__fixed-footer-wrapper {
z-index: 0;
top: 46px;
}
}
}
}
}
......
......@@ -24,10 +24,14 @@
highlight-current-row
@sort-change="sortChange"
>
<el-table-column prop="province" label="下辖区" width="170" :formatter="formatStatus">
<el-table-column prop="province" label="下辖区" width="170" :formatter="formatStatus" fixed>
<!--<template slot-scope="scope">-->
<!--{{ scope.row.province}}{{scope.row.city ? '-': ''}}{{ scope.row.city}}{{scope.row.area ? '-': ''}}{{ scope.row.area}}-->
<!--</template>-->
<template slot-scope="scope">
{{ scope.row.province}}{{scope.row.city ? '-': ''}}{{ scope.row.city}}{{scope.row.area ? '-': ''}}{{ scope.row.area}}
<router-link :to="{path:'/macro/economies',query:{provinceId:scope.row.provinceId}}" tag="a" class="a-link">{{ scope.row.province}}{{scope.row.city ? '-': ''}}{{ scope.row.city}}{{scope.row.area ? '-': ''}}{{ scope.row.area}}</router-link>
</template>
</el-table-column>
<el-table-column prop="gdp" label="GDP(亿元)" sortable width="120" :formatter="formatStatus"/>
<el-table-column prop="gdpGrowth" label="GDP增速" sortable width="100" :formatter="formatStatus"/>
......@@ -39,8 +43,8 @@
<el-table-column prop="govFundIncome" label="政府性基金收入(亿元)" sortable width="180" :formatter="formatStatus"/>
<el-table-column prop="govDebtBalance" label="地方政府债务余额(亿元)" sortable width="180" :formatter="formatStatus"/>
<el-table-column prop="uipInterestBearingDebt" label="城投平台有息债务(亿元)" sortable width="180" :formatter="formatStatus"/>
<el-table-column prop="fiscalSelfSufficiencyRate" label="财政自给率" sortable width="120":formatter="formatStatus"/>
<el-table-column prop="govDebtRateWild" label="债务率-宽口径" sortable width="130" :formatter="formatStatus"/>
<el-table-column prop="fiscalSelfSufficiencyRate" label="财政自给率(%)" sortable width="120":formatter="formatStatus"/>
<el-table-column prop="govDebtRateWild" label="债务率-宽口径(%)" sortable :formatter="formatStatus"/>
</el-table>
</div>
<div class="pagination-box">
......@@ -55,12 +59,7 @@
import { nationalPage,getYears } from '@/api/macro/macro'
export default {
name: 'localEconomy',
props:{
dataQuery: {
type: Object,
default: {}
},
},
props:['dataQuery','provinceId'],
data() {
return {
queryParams: {
......@@ -72,7 +71,17 @@ export default {
tableLoading: false,
pageIndex: 1,
pageSize: 10,
tableDataTotal: 0
tableDataTotal: 0,
}
},
watch: {
dataQuery: {
handler(newValue, oldValue) {
},
deep: true
},
provinceId(newValue, oldValue){
this.getData()
}
},
created() {
......@@ -91,7 +100,16 @@ export default {
params.order=this.queryParams.order
}
params.provinceIds=[this.dataQuery.provinceId]
if(this.provinceId.length >= 0){
params.provinceIds=[this.provinceId[0]]
}
if(this.provinceId.length >= 1){
params.cityId=[this.provinceId[1]]
}
if(this.provinceId.length >= 2){
params.areaId=[this.provinceId[2]]
}
// params.provinceIds=[this.dataQuery.provinceId]
nationalPage(params).then(res => {
this.tableData = res.data.list
this.tableDataTotal = res.data.totalCount
......
......@@ -22,7 +22,7 @@
<img v-else src="@/assets/images/economies/icon_down.png">
</div>
<div id="echartsZS" style="height: 75px;"></div>
<div class="item-text up" v-if="(recentlyYear.gdpGrowth-nextYearMap.gdpGrowth) > 0">{{nextYearMap.year}}年上升<span>{{recentlyYear.gdpGrowth-nextYearMap.gdpGrowth}}%</span></div>
<div class="item-text up" v-if="(recentlyYear.gdpGrowth-nextYearMap.gdpGrowth) > 0">{{nextYearMap.year}}年上升<span>{{(recentlyYear.gdpGrowth-nextYearMap.gdpGrowth).toFixed(2).toString()}}%</span></div>
<div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{(this.recentlyYear.gdpGrowth-this.nextYearMap.gdpGrowth).toFixed(2).toString().substring(1)}}%</span></div>
</div>
<div class="item">
......@@ -106,12 +106,7 @@
import { regional,regionalList,location } from '@/api/macro/macro'
export default {
name: 'regionalEconomy',
props:{
dataQuery: {
type: Object,
default: {}
},
},
props:['dataQuery','provinceId'],
data() {
return {
tableData: [],
......@@ -286,7 +281,7 @@ export default {
created() {
this.getData()
this.$nextTick(()=>{
// console.log(this.dataQuery)
})
},
computed: {
......@@ -297,6 +292,19 @@ export default {
return this.headers.map(item => {
return this.tableData.reduce((pre, cur, index) => Object.assign(pre, {['value' + index]: cur[item.prop]}), {'title': item.label,});
});
},
// provinceId() {
// return this.dataQuery.provinceId
// }
},
watch: {
dataQuery: {
handler(newValue, oldValue) {
},
deep: true
},
provinceId(newValue, oldValue){
this.getData()
}
},
methods: {
......@@ -305,8 +313,14 @@ export default {
if(this.dataQuery.id){
params.id=this.dataQuery.id
}
if(this.dataQuery.provinceId){
params.provinceId=this.dataQuery.provinceId
if(this.provinceId.length >= 0){
params.provinceId=this.provinceId[0]
}
if(this.provinceId.length >= 1){
params.cityId=this.provinceId[1]
}
if(this.provinceId.length >= 2){
params.areaId=this.provinceId[2]
}
regional(params).then(res => {
this.recentlyYear=res.data[0].recentlyYear;
......@@ -386,6 +400,9 @@ export default {
]
}
myChart.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();//图表跟随页面大小变化宽度
});
},
initChart1(){
let myChartZS = echarts.init(document.getElementById("echartsZS"))
......@@ -445,6 +462,9 @@ export default {
]
}
myChartZS.setOption(option);
window.addEventListener("resize", function () {
myChartZS.resize();//图表跟随页面大小变化宽度
});
},
initChart2(){
let myChartRK = echarts.init(document.getElementById("echartsRK"))
......@@ -504,6 +524,9 @@ export default {
]
}
myChartRK.setOption(option);
window.addEventListener("resize", function () {
myChartRK.resize();//图表跟随页面大小变化宽度
});
},
initChart3(){
let myChartSR = echarts.init(document.getElementById("echartsSR"))
......@@ -563,6 +586,9 @@ export default {
]
}
myChartSR.setOption(option);
window.addEventListener("resize", function () {
myChartSR.resize();//图表跟随页面大小变化宽度
});
},
initChart4(){
let myChartYE = echarts.init(document.getElementById("echartsYE"))
......@@ -622,6 +648,9 @@ export default {
]
}
myChartYE.setOption(option);
window.addEventListener("resize", function () {
myChartYE.resize();//图表跟随页面大小变化宽度
});
},
formatStatus: function(row, column, cellValue) {
if(row.title === '经济'||row.title === '财政'||row.title === '债务'){
......
......@@ -10,13 +10,22 @@
<div class="location">
<span><i class="el-icon-location"></i>{{province}}</span>
<el-cascader ref="address" class="cascader-region" popper-class='cascader-region-addd'
@input="addressListbtn" v-model="address" :options="addressList" :props="props" collapse-tags></el-cascader>
@change="addressListbtn" v-model="address" :options="addressList" :props="props" collapse-tags></el-cascader>
<!--<el-select v-model="provinceId" class="cascader-region">-->
<!--<el-option-->
<!--v-for="(item,index) in addressList"-->
<!--:key="index"-->
<!--:label="item.label"-->
<!--:value="item.id"-->
<!--@click.native="addressListbtn(item.label,item.id)"-->
<!--&gt;</el-option>-->
<!--</el-select>-->
</div>
</div>
<RegionalEconomy v-if="activeName === 'first' && province" :dataQuery="dataQuery"></RegionalEconomy>
<LocalEconomy v-if="activeName === 'second' && province" :dataQuery="dataQuery"></LocalEconomy>
<IndustrialStructure v-if="activeName === 'third' && province" :dataQuery="dataQuery"></IndustrialStructure>
<Comparison v-if="activeName === 'four' && province" :dataQuery="dataQuery"></Comparison>
<RegionalEconomy v-if="activeName === 'first' && province" :dataQuery="dataQuery" :provinceId="provinceId"></RegionalEconomy>
<LocalEconomy v-if="activeName === 'second' && province" :dataQuery="dataQuery" :provinceId="provinceId"></LocalEconomy>
<IndustrialStructure v-if="activeName === 'third' && province" :dataQuery="dataQuery" :provinceId="provinceId"></IndustrialStructure>
<Comparison v-if="activeName === 'four' && province" :dataQuery="dataQuery" :provinceId="provinceId"></Comparison>
</div>
</template>
......@@ -46,17 +55,20 @@ export default {
checkStrictly: true
},
addressList: [],
address:''
address:'',
provinceId:[]
}
},
created() {
this.dataQuery=this.$route.query;
location({provinceId:'500000'}).then(res => {
this.province=res.data.currentProvince.regionName;
this.provinceId=res.data.currentProvince.id;
location({}).then(res => {
this.province=res.data.province;
if(!this.dataQuery.provinceId){
this.dataQuery.provinceId=this.provinceId
this.dataQuery.province=this.province
this.dataQuery.provinceId=res.data.provinceId
this.dataQuery.province=this.province;
this.provinceId.push(res.data.provinceId)
}else {
this.provinceId.push(this.dataQuery.provinceId)
}
})
if(this.dataQuery.activeName){
......@@ -71,7 +83,6 @@ export default {
},
methods: {
handleClick(key,item) {
console.log(item)
if(key === 'four'){
this.activeName='four'
}
......@@ -99,7 +110,7 @@ export default {
"value": dataRegion[i].parentId,
"children": []
});
} else if (dataRegion[i].regionLevel == x + 1 && x + 1 == 2) {
}else if (dataRegion[i].regionLevel == x + 1 && x + 1 == 2) {
for (let j = 0; j < str.length; j++) {
if (str[j].id == dataRegion[i].parentId) {
str[j].children.push({
......@@ -111,7 +122,7 @@ export default {
});
}
}
} else if (dataRegion[i].regionLevel == x + 1 && x + 1 == 3) {
}else if (dataRegion[i].regionLevel == x + 1 && x + 1 == 3) {
for (let j = 0; j < str.length; j++) {
for (let k = 0; k < str[j].children.length; k++) {
if (str[j].children[k].id == dataRegion[i].parentId) {
......@@ -131,9 +142,19 @@ export default {
this.addressList = str;
},
addressListbtn() {
let nodesObj = this.$refs.address.getCheckedNodes();
console.log(nodesObj )
console.log(this.address)
let nodesObj = this.$refs.address.getCheckedNodes()[0];
// console.log(nodesObj)
this.province=nodesObj.pathLabels[nodesObj.pathLabels.length-1];
this.provinceId=nodesObj.path;
this.dataQuery.province=nodesObj.pathLabels;
// this.dataQuery.provinceId=nodesObj.path[nodesObj.path.length-1];
// console.log(this.dataQuery)
// this.province=label;
// this.provinceId=id;
// this.dataQuery.provinceId=id;
// this.dataQuery.province=label;
}
}
}
......
......@@ -18,8 +18,8 @@
placeholder="资质资格"
collapse-tags
clearable></el-cascader>
<el-input placeholder="输入企业名称关键词" v-model="queryParams.ename">
<el-button slot="append" @click="querySubmit()">搜索</el-button>
<el-input placeholder="输入企业名称关键词" v-model="queryParams.ename" clearable @clear="handleSearch()">
<el-button slot="append" @click="handleSearch()">搜索</el-button>
</el-input>
<span class="total">{{tableDataTotal}}</span>
</div>
......@@ -30,7 +30,9 @@
element-loading-text="Loading"
border
fit
@sort-change="sortChange"
highlight-current-row
v-if="tableDataTotal > 0"
>
<el-table-column label="序号" width="50" align="left" fixed>
<template slot-scope="scope">{{ pageIndex * pageSize - pageSize + scope.$index + 1 }}</template>
......@@ -41,22 +43,27 @@
<span v-else v-html="scope.row.name" ></span>
</template>
</el-table-column>
<el-table-column label="注册地址" prop="domicile" width="150"/>
<el-table-column label="资质资格" prop="aptitudeCountNew" sortable width="100"/>
<el-table-column label="专业人员" prop="persionCount" sortable width="100"/>
<el-table-column label="中标业绩" prop="recentlyCount" sortable width="100"/>
<el-table-column label="最大中标金额(万元)" prop="cgfs" sortable width="160"/>
<el-table-column label="中标总金额(万元)" prop="cgfs" sortable width="160"/>
<el-table-column label="四库业绩" prop="skyCount" sortable width="100"/>
<el-table-column label="公路业绩" prop="cgfs" sortable width="100"/>
<el-table-column label="水利业绩" prop="cgfs" sortable width="100"/>
<el-table-column label="常合作业主" prop="cgfs" width="130"/>
<el-table-column label="客户(个)" prop="customerCount" sortable width="100"/>
<el-table-column label="供应商(个)" prop="supplierCount" sortable width="130" />
<el-table-column label="常合作供应商" prop="supplierCount" width="120"/>
<el-table-column label="注册地址" prop="domicile" width="150" :formatter="formatStatus"/>
<el-table-column label="资质资格" prop="aptitudeCountNew" sortable="custom" width="100" :formatter="formatStatus"/>
<el-table-column label="专业人员" prop="persionCount" sortable="custom" width="100" :formatter="formatStatus"/>
<el-table-column label="中标业绩" prop="recentlyCount" sortable="custom" width="100" :formatter="formatStatus"/>
<el-table-column label="最大中标金额(万元)" prop="cgfs" sortable="custom" width="160" :formatter="formatStatus"/>
<el-table-column label="中标总金额(万元)" prop="cgfs" sortable="custom" width="160" :formatter="formatStatus"/>
<el-table-column label="四库业绩" prop="skyCount" sortable="custom" width="100" :formatter="formatStatus"/>
<el-table-column label="公路业绩" prop="cgfs" sortable="custom" width="100" :formatter="formatStatus"/>
<el-table-column label="水利业绩" prop="cgfs" sortable="custom" width="100" :formatter="formatStatus"/>
<el-table-column label="常合作业主" prop="cgfs" width="130" :formatter="formatStatus"/>
<el-table-column label="客户(个)" prop="customerCount" sortable="custom" width="100" :formatter="formatStatus"/>
<el-table-column label="供应商(个)" prop="supplierCount" sortable="custom" width="130" :formatter="formatStatus"/>
<el-table-column label="常合作供应商" prop="gys" width="120" :formatter="formatStatus"/>
</el-table>
<div class="empty" v-if="tableDataTotal === 0">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或筛选条件,重新搜索</div>
</div>
</div>
<div class="pagination-box">
<div class="pagination-box" v-if="tableDataTotal>pageSize">
<el-pagination background :current-page="pageIndex" :page-size="pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
</div>
</div>
......@@ -95,7 +102,7 @@ export default {
tableLoading: false,
pageIndex: 1,
pageSize: 10,
tableDataTotal: 1,
tableDataTotal: null,
aptitudeCodeList:[],
aptitudeType:'',
province:'',
......@@ -175,8 +182,8 @@ export default {
arr.push(codeStr[i][codeStr[i].length - 1])
}
this.aptitudeType=arr.join(',')
console.log(this.aptitudeType)
this.$refs.aptitudeCode.toggleDropDownVisible(false)
this.pageIndex=1;
this.querySubmit()
},
handleClick(){
......@@ -188,7 +195,31 @@ export default {
}
this.pageIndex=1;
this.querySubmit()
}
},
handleSearch(){
this.pageIndex=1;
this.querySubmit()
},
formatStatus: function(row, column, cellValue) {
return cellValue? cellValue : '-'
},
sortChange({ column, prop, order }){
if(prop === 'aptitudeCountNew'){
this.queryParams.field ='aptitudeCountNew'
}else {
this.queryParams.field = prop
}
if(column.order === "ascending"){
this.queryParams.order = 'asc'
}else if(column.order === "descending"){
this.queryParams.order = 'desc'
}else {
this.queryParams.order=''
this.queryParams.field=''
}
this.pageIndex = 1;
this.querySubmit()
},
}
}
</script>
......@@ -281,6 +312,27 @@ export default {
}
.table-item{
margin-top: 14px;
.empty{
margin: 0 auto;
height: 600px;
text-align: center;
border-top: 1px solid #EFEFEF;
.img{
width: 108px;
height: 108px;
margin-bottom: 24px;
margin-top: 150px;
}
.p1{
color: #333333;
font-size: 16px;
}
.p2{
color: #999999;
font-size: 14px;
margin-top: 8px;
}
}
}
}
}
......
......@@ -13,7 +13,7 @@
border
:summary-method="getSummaries"
show-summary
height="360"
height="400"
fit
@sort-change="sortChange"
highlight-current-row
......@@ -170,13 +170,15 @@ export default {
orient: 'horizontal',
bottom: 0,
data: data,
itemHeight:8,
itemWidth:12,
pageButtonPosition: 'end',
},
series: [
{
type: 'pie',
radius: '55%',
center: ['50%', '40%'],
center: ['50%', '50%'],
data: data,
emphasis: {
itemStyle: {
......@@ -318,6 +320,11 @@ export default {
}
.table-item{
margin-top: 22px;
::v-deep .el-table{
td.el-table__cell{
border-bottom: 0;
}
}
}
}
</style>
......@@ -6,7 +6,7 @@
<span class="common-title">全国经济大全</span>
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item prop="year">
<el-select v-model="queryParams.year" filterable class="form-content-width" placeholder="请选择年度" @change="handleSearch">
<el-select v-model="queryParams.year" filterable class="form-content-width" placeholder="请选择" @change="handleSearch">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.year" :value="item.year" />
</el-select>
</el-form-item>
......@@ -37,6 +37,7 @@
border
fit
highlight-current-row
v-if="tableDataTotal > 0"
>
<el-table-column label="序号" width="50" align="left" fixed>
<template slot-scope="scope">{{ pageIndex * pageSize - pageSize + scope.$index + 1 }}</template>
......@@ -55,9 +56,9 @@
<el-table-column label="GDP增速(%)" prop="gdpGrowth" :formatter="formatStatus" sortable="custom" min-width="120" align="right"></el-table-column>
<el-table-column label="人均GDP(元)" prop="gdpPerCapita" :formatter="formatStatus" sortable="custom" width="125" align="right"></el-table-column>
<el-table-column label="人口(万人)" prop="population" :formatter="formatStatus" sortable="custom" width="120" align="right"></el-table-column>
<el-table-column label="一般公共预算收入 (亿元)" prop="gbr" sortable="custom" width="170" align="right"></el-table-column>
<el-table-column label="一般公共预算收入(亿元)" prop="gbr" sortable="custom" width="170" align="right"></el-table-column>
<el-table-column label="一般公共预算收入增速(%)" prop="gbrGrowth" :formatter="formatStatus" sortable="custom" min-width="140" align="right"></el-table-column>
<el-table-column label="一般公共预算收入:税收收入" prop="taxIncome" :formatter="formatStatus" sortable="custom" min-width="140" align="right"></el-table-column>
<el-table-column label="一般公共预算收入:税收收入(亿元)" prop="taxIncome" :formatter="formatStatus" sortable="custom" min-width="140" align="right"></el-table-column>
<el-table-column label="一般公共预算支出(亿元)" prop="gbe" :formatter="formatStatus" sortable="custom" width="140" align="right"></el-table-column>
<el-table-column label="政府性基金收入(亿元)" width="140" prop="govFundIncome" :formatter="formatStatus" sortable="custom" align="right"></el-table-column>
<el-table-column label="政府性基金收入:土地出让收入(亿元)" prop="landTransferIncome" sortable="custom" width="150" align="right"></el-table-column>
......@@ -94,11 +95,16 @@
<el-table-column label="社会消费品零售总额(亿元)" prop="trscg" :formatter="formatStatus" width="160" align="right"></el-table-column>
<el-table-column label="城镇居民人均可支配收入(元)" prop="urbanPcdi" :formatter="formatStatus" width="160" align="right"></el-table-column>
</el-table>
<div class="empty" v-if="tableDataTotal === 0">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或筛选条件,重新搜索</div>
</div>
</div>
<!--<template slot-scope="scope">-->
<!--<router-link to="/purchaserDetail" target="_blank" tag="a" class="a-link">{{ scope.row.zbwj }}</router-link>-->
<!--</template>-->
<div class="pagination-box">
<div class="pagination-box" v-if="tableDataTotal>pageSize">
<el-pagination background :current-page="pageIndex" :page-size="pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
</div>
<economies-detail ref="economiesDetail" />
......@@ -132,7 +138,7 @@
tableLoading: false,
pageIndex: 1,
pageSize: 10,
tableDataTotal: 0,
tableDataTotal: null,
}
},
created() {
......@@ -310,6 +316,9 @@
.el-form{
margin-left: 24px;
}
.form-content-width{
width: 110px;
}
::v-deep .el-cascader{
.el-cascader__tags{
flex-wrap: inherit;
......@@ -324,7 +333,34 @@
background: #ffffff;
padding: 16px;
margin-top: 12px;
/*height: calc(100vh - 300px);*/
.table-item{
position: relative;
.empty{
/*position: absolute;*/
/*top: 50%;*/
/*left: 50%;*/
/*transform: translate(-50%,-50%);*/
margin: 0 auto;
height: 600px;
text-align: center;
border-top: 1px solid #EFEFEF;
.img{
width: 108px;
height: 108px;
margin-bottom: 24px;
margin-top: 150px;
}
.p1{
color: #333333;
font-size: 16px;
}
.p2{
color: #999999;
font-size: 14px;
margin-top: 8px;
}
}
::v-deep .el-table{
th{
font-size: 12px !important;
......@@ -333,18 +369,12 @@
.el-table__fixed-header-wrapper th{
background: #F0F3FA;
}
td.el-table__cell{
border-bottom: 0;
}
.caret-wrapper{
width: 10px;
/*<!--position: absolute;-->*/
/*<!--right: 12px;-->*/
/*<!--top: -3px;-->*/
}
/*.sort-caret{*/
/*position: initial;*/
/*}*/
/*.ascending{*/
/*margin-bottom: 3px;*/
/*}*/
}
}
}
......
......@@ -80,10 +80,10 @@
<span class="common-title">全国招标项目概览</span>
</div>
</div>
<div class="text">通过对{{year}}年全国招标数据进行分析,发现该企业主要集中在{{dataSort[0].label}}({{dataSort[0].count}}个)、{{dataSort[1].label}}({{dataSort[1].count}}个)进行招标。</div>
<div class="text">通过对{{year}}年全国招标数据进行分析,发现该企业主要集中在{{dataSort[0].label}}({{dataSort[0].count}}个)、{{dataSort[1].label}}({{dataSort[1].count}}个)进行招标。</div>
<div class="main1">
<div id="gl-echarts" style="height: 250px"></div>
<p class="tips"><i class="el-icon-info"></i>数据来源大司空建筑大数据平台,统计范围为{{year}}年全国公开的招标项目,未公开的不含在内</p>
<p class="tips"><i class="el-icon-info"></i>数据来源大司空建筑大数据平台,统计范围为{{year}}年全国公开的招标项目,未公开的不含在内</p>
</div>
<div class="main2">
<div class="selectYear">
......
......@@ -299,7 +299,7 @@ export default {
areaGroupByProvince().then(res => {
this.zbData=res.data;
//定义一个变量 保存数据 因为sort方法排序会改变原数组 使用JSON方法深拷贝 将原数值暂存
let dataArr = JSON.parse(JSON.stringify(res.data))
// let dataArr = JSON.parse(JSON.stringify(res.data))
let arr=res.data.sort((old,New)=>{
return New.count - old.count
})
......@@ -309,7 +309,7 @@ export default {
}
this.rankList=data;
//将原数组数据赋值回去 保持数据不变
this.zbData = JSON.parse(JSON.stringify(dataArr))
// this.zbData = JSON.parse(JSON.stringify(dataArr))
this.initChart2()
})
},
......@@ -377,7 +377,7 @@ export default {
let option ={
legend: {
x:'right',
padding:[0,120,0,0],
padding:[0,30,0,0],
},
tooltip: {
trigger: 'axis',
......
......@@ -87,7 +87,7 @@
</div>
</div>
</div>
<el-input class="search-input" placeholder="输入企业名称关键词" v-model="queryParams.keyword">
<el-input class="search-input" placeholder="输入企业名称关键词" v-model="queryParams.keyword" clearable @clear="handleKeyword()">
<template slot="prepend"><i class="el-icon-search"></i></template>
<el-button slot="append" @click="handleKeyword">搜索</el-button>
</el-input>
......@@ -141,6 +141,7 @@
</div>
<div class="table-item">
<el-table
v-if="tableDataTotal > 0"
v-loading="tableLoading"
:data="tableData"
element-loading-text="Loading"
......@@ -161,7 +162,7 @@
</el-table-column>
<el-table-column prop="city" label="区域" :formatter="formatStatus" width="150">
<template slot-scope="scope">
<router-link :to="{path:'/macro/economies',query:{id:scope.row.id,provinceId:scope.row.provinceId}}" tag="a" class="a-link">
<router-link :to="{path:'/macro/economies',query:{provinceId:scope.row.provinceId}}" tag="a" class="a-link">
{{ scope.row.province}}{{scope.row.city ? '-': ''}}{{ scope.row.city}}{{scope.row.area ? '-': ''}}{{ scope.row.area}}
</router-link>
<!--<span v-else>-</span>-->
......@@ -227,8 +228,13 @@
<el-table-column prop="developmentZone" label="所属开发区" :formatter="formatStatus" width="160" />
<!--<el-table-column prop="bl" label="开发区类别" width="160" />-->
</el-table>
<div class="empty" v-if="tableDataTotal === 0">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或筛选条件,重新搜索</div>
</div>
</div>
<div class="pagination-box">
<div class="pagination-box" v-if="tableDataTotal>pageSize">
<el-pagination background :current-page="pageIndex" :page-size="pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
</div>
</div>
......@@ -259,7 +265,7 @@ export default {
tableLoading: false,
pageIndex: 1,
pageSize: 10,
tableDataTotal: 120,
tableDataTotal: null,
selected:[],
xzdjCalss:'',
props: {
......@@ -651,7 +657,7 @@ export default {
}
::v-deep .search-input{
/*::v-deep .el-input{*/
width: 250px;
width: 260px;
height: 32px;
.el-input-group__prepend:first-child{
padding: 0;
......@@ -681,6 +687,27 @@ export default {
}
.table-item{
margin-top: 22px;
.empty{
margin: 0 auto;
height: 550px;
text-align: center;
border-top: 1px solid #EFEFEF;
.img{
width: 108px;
height: 108px;
margin-bottom: 24px;
margin-top: 150px;
}
.p1{
color: #333333;
font-size: 16px;
}
.p2{
color: #999999;
font-size: 14px;
margin-top: 8px;
}
}
}
.companyName{
width: 200px;
......
......@@ -8,7 +8,7 @@
<div @click = 'handleALL'>
<div class="poptitle">
<img src="@/assets/images/economies/icon.png">
<span>添加项目</span>
<span>新建商机</span>
</div>
<el-form class="popform j" :model="queryParam" :rules="rules" ref="ruleForm" label-width="130px">
<el-form-item label="项目名称:" class="row" prop="projectName">
......@@ -146,6 +146,7 @@
//添加客户
submitForm(formName) {
this.queryParam.userId = this.$store.state.user.userId
this.queryParam.investmentAmount = parseFloat(this.queryParam.investmentAmount)
this.$refs[formName].validate((valid) => {
if (valid) {
addProject(this.queryParam).then(result=>{
......@@ -178,7 +179,7 @@
//输入数字
number(value){
this.queryParam.investmentAmount = value.replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, '$1')//输入2位小数
this.queryParam.investmentAmount = value.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1')//输入6位小数
}
}
}
......
......@@ -92,6 +92,7 @@
},
methods:{
getmsg(){
this.importCancel()
this.$emit('getdatas')
},
handleFileListChange(file, fileList) {
......@@ -127,7 +128,8 @@
this.messages = res.msg
}
if(this.importtype == 'custom'){//客户管理
let str = '成功导入客户条数'+res.successCount+',客户去重条数'+res.data?res.data.length:0
let num = res.data?res.data.length:0
let str = '成功导入客户条数'+res.successCount+',客户去重条数'+ num
this.messages = str
}
this.addsuccess = true
......
......@@ -4,7 +4,7 @@
<div class="cardtitles" v-if="showtype != 'projectgjdt'">跟进记录</div>
<div style="height: 24px" v-if="showtype == 'projectgjdt'"></div>
<div class="records">
<div class="writeIn">
<div class="writeIn" v-if="isDisabled == false">
<div class="default" v-if="isEdit == false" @click="getEdit">
<img src="@/assets/images/project/add_3.png">
<div>新建一条跟进记录,如:周五上午预约客户上门拜访</div>
......@@ -15,9 +15,9 @@
<el-input v-model="addParam.content" placeholder="新建一条跟进记录,如:周五上午预约客户上门拜访"></el-input>
</div>
<div class="wr_bot">
<div class="sels" v-model="addParam.visitMode">
<div class="sels">
<img src="@/assets/images/project/ico_1.png">
<el-select class="w128" placeholder="拜访方式">
<el-select class="w128" placeholder="拜访方式" v-model="addParam.visitMode">
<el-option v-for="(item,index) in bffslist" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</div>
......@@ -44,7 +44,7 @@
</el-input>
</div>
<div class="times"><img src="@/assets/images/project/ico_4.png">
<el-date-picker class="w128"
<el-date-picker class="w128" value-format="yyyy-MM-dd"
v-model="addParam.nextVisitTime"
type="date"
placeholder="下次拜访时间">
......@@ -91,7 +91,7 @@
<div class="rec_time">
<i class="el-icon-time"></i>
<div>{{item.creatTime}}</div>
<div class="operate">
<div class="operate" v-if="isDisabled == false">
<!--<img src="@/assets/images/edit.png">第一期不做编辑-->
<img @click="delRecord(item.id)" src="@/assets/images/delete.png">
</div>
......@@ -145,6 +145,7 @@
default: 0
},
datas:[],//数据源
isDisabled:false,
},
name: 'gjjl',
data(){
......@@ -171,11 +172,13 @@
projectId:this.detailId ? this.detailId : parseInt(this.$route.query.id),//项目详情id
userId:this.$store.state.user.userId,//当前用户id
projectList:[],//关联项目
isDisabled:this.isDisabled,
}
},
computed: {
},
created(){
console.log(this.isDisabled)
//获取拜访方式
getDictType('visit_mode_type').then(result=>{
this.bffslist = result.code == 200 ? result.data:[]
......@@ -183,6 +186,7 @@
this.showtype = this.types
//客户管理跟进动态
if(this.showtype == 'gjdt'){
this.isDisabled = false
getUserList().then(result=>{
this.glqylist = result.data
})
......@@ -194,6 +198,7 @@
}
//项目管理跟进动态
if(this.showtype == 'projectgjdt'){
this.isDisabled = false
this.projectId = null//项目id暂时清空,必须手选id
relateProject(this.userId).then(res=>{
this.projectList = res.data
......
......@@ -3,7 +3,7 @@
<el-card class="box-card noborder">
<div class="cardtitles">工作待办</div>
<div class="records">
<div class="writeIn">
<div class="writeIn" v-if="isDisabled == false">
<div class="default" v-if="isEdit == false" @click="getEdit">
<img src="@/assets/images/project/add_3.png">
<div>新建一条工作代办,如:周五上午预约客户上门拜访</div>
......@@ -15,15 +15,17 @@
</div>
<div class="wr_bot">
<div class="times"><img src="@/assets/images/project/ico_4.png">
<el-date-picker
<el-date-picker value-format="yyyy-MM-dd"
v-model="queryParam.finishTime"
type="date"
placeholder="完成时间">
</el-date-picker>
</div>
<el-input v-model="queryParam.target" placeholder="拜访对象" style="width: 100px;">
<i slot="prefix" class="el-input__icon"><img src="@/assets/images/project/ico_2.png"></i>
</el-input>
<div class="sels">
<img src="@/assets/images/project/ico_2.png">
<el-input v-model="queryParam.target" placeholder="拜访对象" style="width: 100px;">
</el-input>
</div>
<div class="btn btn_primary h32 wc" @click="add" :disabled="queryParam.task == ''" :class="{'btn_disabled':queryParam.task == ''}">完成</div>
</div>
</div>
......@@ -34,11 +36,11 @@
<div class="task_con"><span>发起时间:{{item.createTime}}</span><span v-if="item.target">关联客户:<font class="wordprimary">{{item.target}}</font></span><span v-if="item.finishTime">完成时间:{{item.finishTime}}</span></div>
<div class="select" :class="{'on':item.state == 2}">
<div class="select-popper">
<span class="color_text">
<span>
{{item.state == 2?"已完成":"未完成"}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select placeholder="请选择" v-model="item.state" class="select-multiple" @change="changes(item.id,$event)">
<el-select v-if="isDisabled == false" placeholder="请选择" v-model="item.state" class="select-multiple" @change="changes(item.id,$event)">
<el-option label="未完成" value="1"></el-option>
<el-option label="已完成" value="2"></el-option>
</el-select>
......@@ -73,7 +75,8 @@
detailId: { //从企业详情跳转过来ID
type: Number,
default: 0
}
},
isDisabled:false,
},
data(){
return{
......@@ -94,6 +97,7 @@
},
datalist:[],
yqnum:0,//已逾期数量
isDisabled:this.isDisabled,
}
},
created(){
......@@ -109,6 +113,9 @@
if(result.code == 200){
this.$message.success("添加成功!")
this.getList()
this.queryParam.target = ''
this.queryParam.task = ''
this.queryParam.finishTime = ''
}else{
this.$message.error(result.msg)
}
......@@ -162,4 +169,7 @@
width: 100px;
margin-right: 12px;
}
.times .el-input__icon >img{
width: 16px;
}
</style>
......@@ -8,7 +8,7 @@
<div class="con">
<span>总投资额(万元) :</span>
<div class="inputxt" id="inputxt1">
<div class="flex" v-if="nowedit == 1">
<div class="flex" v-if="nowedit == 1 && isDisabled == false">
<el-input placeholder="待添加" v-model="investmentAmount" @input="number"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px" @click="changes({'investmentAmount':investmentAmount})">确定</div>
......@@ -21,7 +21,7 @@
<div class="con i">
<span>资金来源 :</span>
<div class="inputxt" id="inputxt2">
<div class="flex" v-if="nowedit == 2">
<div class="flex" v-if="nowedit == 2 && isDisabled == false">
<el-input placeholder="待添加" v-model="amountSource"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" @click="changes({'amountSource':amountSource})" style="width: 56px">确定</div>
......@@ -36,7 +36,7 @@
<div class="con">
<span>建设性质 :</span>
<div class="inputxt" id="inputxt3">
<div class="flex" v-if="nowedit == 3">
<div class="flex" v-if="nowedit == 3 && isDisabled == false">
<el-input placeholder="待添加" v-model="buildProperty"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" @click="changes({'buildProperty':buildProperty})" style="width: 56px">确定</div>
......@@ -50,7 +50,7 @@
<span>计划招标 :</span>
<div class="inputime">
<div class="flex" style="">
<el-date-picker class="timeinput"
<el-date-picker class="timeinput" v-if="isDisabled == false"
v-model="planBidTime"
type="date"
value-format="yyyy-MM-dd"
......@@ -66,7 +66,7 @@
<span>计划开工 :</span>
<div class="inputime">
<div class="flex" style="opacity: 0;height: 0">
<el-date-picker class="timeinput"
<el-date-picker class="timeinput" v-if="isDisabled == false"
v-model="planStartTime"
type="date"
value-format="yyyy-MM-dd"
......@@ -80,7 +80,7 @@
<span>计划竣工 :</span>
<div class="inputime">
<div class="flex" style="opacity: 0;height: 0">
<el-date-picker class="timeinput"
<el-date-picker class="timeinput" v-if="isDisabled == false"
v-model="planCompleteTime"
type="date"
value-format="yyyy-MM-dd"
......@@ -96,7 +96,7 @@
<el-card class="box-card noborder">
<div class="cardtitles">项目概况与建设规模</div>
<div class="baseinfo" >
<el-input id="inputxt9" v-model="projectDetails" @focus="nowedit = 9" class="textarea" type="textarea" placeholder="请输入项目概况与建设规模详细信息" maxlength="500" :show-word-limit="true" ></el-input>
<el-input id="inputxt9" :disabled="isDisabled" v-model="projectDetails" @focus="nowedit = 9" class="textarea" type="textarea" placeholder="请输入项目概况与建设规模详细信息" maxlength="500" :show-word-limit="true" ></el-input>
<div class="flex btns" v-if="nowedit == 9">
<div class="flex">
<div class="btnsmall btn_primary h28" @click="changes({'projectDetails':projectDetails})" style="width: 56px">确定</div>
......@@ -112,7 +112,7 @@
<div class="con">
<span>评标办法 :</span>
<div class="inputxt" id="inputxt4">
<div class="flex" v-if="nowedit == 4">
<div class="flex" v-if="nowedit == 4 && isDisabled == false">
<el-input placeholder="待添加" v-model="evaluationBidWay"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" @click="changes({'evaluationBidWay':evaluationBidWay})" style="width: 56px">确定</div>
......@@ -126,7 +126,7 @@
<span>开标时间 :</span>
<div class="inputime">
<div class="flex" style="opacity: 0;height: 0">
<el-date-picker class="timeinput"
<el-date-picker class="timeinput" v-if="isDisabled == false"
v-model="bidOpenTime"
type="date"
value-format="yyyy-MM-dd"
......@@ -141,7 +141,7 @@
<div class="con">
<span>保证金缴纳 :</span>
<div class="inputxt" id="inputxt5">
<div class="flex" v-if="nowedit == 5">
<div class="flex" v-if="nowedit == 5 && isDisabled == false">
<el-input placeholder="待添加" v-model="earnestMoneyPay"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" @click="changes({'earnestMoneyPay':earnestMoneyPay})" style="width: 56px">确定</div>
......@@ -154,7 +154,7 @@
<div class="con i">
<span>保证金金额(万元) :</span>
<div class="inputxt" id="inputxt6">
<div class="flex" v-if="nowedit == 6">
<div class="flex" v-if="nowedit == 6 && isDisabled == false">
<el-input placeholder="待添加" v-model="earnestMoney"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" @click="changes({'earnestMoney':earnestMoney})" style="width: 56px">确定</div>
......@@ -169,7 +169,7 @@
<div class="con">
<span>开标地点 :</span>
<div class="inputxt" id="inputxt7">
<div class="flex" v-if="nowedit == 7">
<div class="flex" v-if="nowedit == 7 && isDisabled == false">
<el-input placeholder="待添加" v-model="bidOpenPlace"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" @click="changes({'bidOpenPlace':bidOpenPlace})" style="width: 56px">确定</div>
......@@ -182,7 +182,7 @@
<div class="con i">
<span>评标委员会 :</span>
<div class="inputxt" id="inputxt8">
<div class="flex" v-if="nowedit == 8">
<div class="flex" v-if="nowedit == 8 && isDisabled == false">
<el-input placeholder="待添加" v-model="evaluationBidCouncil"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" @click="changes({'evaluationBidCouncil':evaluationBidCouncil})" style="width: 56px">确定</div>
......@@ -207,7 +207,8 @@
detailId: { //从企业详情跳转过来ID
type: Number,
default: 0
}
},
isDisabled:false,
},
data(){
return{
......@@ -226,12 +227,15 @@
earnestMoney: '',//保证金金额
earnestMoneyPay: '',//保证金缴纳
evaluationBidCouncil: '',//评标委员会
isDisabled:this.isDisabled,
}
},
watch:{
},
mounted(){
document.addEventListener('mouseup',(e) => {
if(this.isDisabled == true)
return false
let j = 0
for(var i=1;i<=9;i++){
let isSelf = document.getElementById('inputxt'+i).contains(event.target) // 这个是自己的区域
......@@ -242,6 +246,39 @@
}
}
if(j == 9){
if(this.nowedit !=-1){
let param = {}
switch (this.nowedit) {
case 1:
param = {'investmentAmount':this.investmentAmount}
break;
case 2 :
param = {'amountSource':this.amountSource}
break;
case 3 :
param = {'buildProperty':this.buildProperty}
break;
case 4 :
param = {'evaluationBidWay':this.evaluationBidWay}
break;
case 5 :
param = {'earnestMoneyPay':this.earnestMoneyPay}
break;
case 6 :
param = {'earnestMoney':this.earnestMoney}
break;
case 7 :
param = {'bidOpenPlace':this.bidOpenPlace}
break;
case 8 :
param = {'evaluationBidCouncil':this.evaluationBidCouncil}
break;
case 9 :
param = {'projectDetails':this.projectDetails}
break;
}
this.changes(param)
}
this.nowedit = -1
}
})
......@@ -271,6 +308,8 @@
this.nowedit = -1
let param = str
param.id = this.id
if(this.isDisabled == true)
return false
editXMNR(param).then(result=>{
if(result.code == 200)
this.$message.success('修改成功!')
......@@ -282,8 +321,7 @@
},
//输入数字
number(value){
console.log(value)
this.investmentAmount = this.investmentAmount == ""||this.investmentAmount == null? value.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1'):null//输入6位小数
this.investmentAmount = value.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1')//输入6位小数
},
}
}
......
......@@ -14,13 +14,16 @@
<img src="@/assets/images/project/empty.png">
<div class="p1">暂无数据展示</div>
<div class="p2">抱歉,你还未添加相关数据,快去添加吧</div>
<div class="btn btn_primary h36 w102" @click="opennew">新增联系人</div>
<div class="btn btn_primary h36 w102" @click="opennew" v-if="isDisabled==false">新增联系人</div>
</div>
</template>
<el-table-column
prop="name"
label="姓名"
width="113">
<template slot-scope="scope">
{{scope.row.name || '--'}}
</template>
</el-table-column>
<el-table-column
prop="name"
......@@ -38,20 +41,32 @@
label="角色"
sortable
width="146">
<template slot-scope="scope">
{{scope.row.role || '--'}}
</template>
</el-table-column>
<el-table-column
prop="office"
label="公司/机关">
label="关联企业">
<template slot-scope="scope">
{{scope.row.office || '--'}}
</template>
</el-table-column>
<el-table-column
prop="position"
label="职位"
width="125">
<template slot-scope="scope">
{{scope.row.position || '--'}}
</template>
</el-table-column>
<el-table-column
prop="phone"
label="联系方式"
width="175">
<template slot-scope="scope">
{{scope.row.phone || '--'}}
</template>
</el-table-column>
<el-table-column
prop="accendant"
......@@ -86,18 +101,24 @@
<el-form-item label="联系人姓名:" class="row">
<el-input type="text" v-model="queryParam.name" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="联系人性别:" class="row">
<el-radio-group v-model="queryParam.sex">
<el-radio label=1></el-radio>
<el-radio label=0></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="联系人角色:" class="row">
<el-input type="text" v-model="queryParam.role" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="联系人职位:" class="row">
<el-input type="text" v-model="queryParam.position" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="联系人公司/机关:" class="row">
<el-form-item label="关联企业:" class="row">
<el-input type="text" v-model="queryParam.office" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="内部维护人:" class="row">
<el-input type="text" v-model="queryParam.accendant" placeholder="请输入"></el-input>
<el-form-item label="联系人职位:" class="row">
<el-input type="text" v-model="queryParam.position" placeholder="请输入"></el-input>
</el-form-item>
<!--<el-form-item label="内部维护人:" class="row">-->
<!--<el-input type="text" v-model="queryParam.accendant" placeholder="请输入"></el-input>-->
<!--</el-form-item>-->
<el-form-item label="联系方式:" class="row">
<el-input type="text" v-model="queryParam.phone" placeholder="请输入"></el-input>
</el-form-item>
......@@ -120,7 +141,8 @@
detailId: { //从企业详情跳转过来ID
type: Number,
default: 0
}
},
isDisabled:false,
},
data(){
return{
......@@ -140,6 +162,7 @@
total:0,
projectname:this.$route.query.projectname,
queryParam:[],
isDisabled:this.isDisabled,
}
},
created(){
......@@ -148,6 +171,7 @@
methods:{
getDetail(item){
this.dialogVisible = true
item.sex = item.sex.toString()
this.queryParam = item
this.isnew = false
},
......@@ -158,8 +182,10 @@
})
},
save(){
let param = JSON.parse(JSON.stringify(this.queryParam))
param.sex = parseInt(param.sex)
if(this.isnew == false){
editLXR(this.queryParam).then(result=>{
editLXR(param).then(result=>{
if(result.code == 200){
this.$message.success('保存成功!')
this.getList()
......@@ -168,7 +194,7 @@
})
}
if(this.isnew == true){
addLXR(this.queryParam).then(result=>{
addLXR(param).then(result=>{
if(result.code == 200){
this.$message.success('新增成功!')
this.getList()
......@@ -192,11 +218,12 @@
this.queryParam = {
businessId:this.id,
name:"",
sex:"1",
role:"",
office:"",
position:"",
phone:"",
accendant:"",
// accendant:"",
}
},
}
......
......@@ -3,15 +3,15 @@
<div>
<el-card class="box-card noborder">
<div class="cardtitles">相关企业</div>
<div class="searchbtns" v-if="tableData.total>0">
<el-select class="select" placeholder="企业类型" v-model="searchParam.companyType" @change="handleCurrentChange(1)">
<div class="searchbtns">
<el-select class="select" placeholder="企业类型" clearable v-model="searchParam.companyType" @change="handleCurrentChange(1)">
<el-option v-for="(item,index) in companytype" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
<div class="searchInput">
<el-input type="text" placeholder="输入关键词查询" v-model="searchParam.companyName"></el-input>
<el-input type="text" placeholder="输入关键词查询" clearable v-model="searchParam.companyName"></el-input>
<div class="btn" @click="handleCurrentChange(1)">搜索</div>
</div>
<div class="btn btn_primary h32 b3" @click="opennew"><div class="img img1"></div>添加相关企业</div>
<div class="btn btn_primary h32 b3" @click="opennew" v-if="isDisabled == false"><div class="img img1"></div>添加相关企业</div>
</div>
<div class="document tables">
<el-table
......@@ -21,9 +21,9 @@
<template slot="empty">
<div class="empty">
<img src="@/assets/images/project/empty.png">
<div class="p1">暂无数据展示</div>
<div class="p2">抱歉,你还未添加相关数据,快去添加吧</div>
<div class="btn btn_primary h36 w102" @click="opennew">新增相关企业</div>
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或添加相关企业,重新搜索</div>
<div class="btn btn_primary h36 w102" @click="opennew" v-if="isDisabled==false">新增相关企业</div>
</div>
</template>
<el-table-column
......@@ -36,13 +36,13 @@
</el-table-column>
<el-table-column
prop="depth"
sortable
label="对接深度/竞争力度"
>
</el-table-column>
<el-table-column
prop="companyRole"
label="企业角色"
sortable
width="">
</el-table-column>
<el-table-column
......@@ -50,7 +50,7 @@
label="负责人"
width="">
</el-table-column>
<el-table-column
<el-table-column v-if="isDisabled == false"
prop="name"
label=""
align="right"
......@@ -143,7 +143,8 @@
detailId: { //从企业详情跳转过来ID
type: Number,
default: 0
}
},
isDisabled:false,
},
data(){
return{
......@@ -179,6 +180,7 @@
companyName:'',
},
ondel:-1,
isDisabled:this.isDisabled,
}
},
created(){
......@@ -266,6 +268,9 @@
</script>
<style lang="scss" scoped>
.searchInput .el-input{
width: 68%;
}
.w102{
width: 102px;
}
......
......@@ -8,7 +8,7 @@
<div class="con">
<span>项目级别 :</span>
<div class="inputxt" id="inputxt1">
<div class="flex" v-if="nowedit == 1">
<div class="flex" v-if="nowedit == 1 && isDisabled == false" >
<el-input placeholder="待添加" v-model="xmsldata.projectLevel"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL({projectLevel:xmsldata.projectLevel})">确定</div>
......@@ -22,11 +22,11 @@
<span>项目阶段 :</span>
<div class="select-popper " >
<span class="color_text" :class="{'txt':xmjd == '待添加'}">
<span :class="{'txt':xmjd == '待添加'}">
{{xmjd}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="xmjd" class="select-multiple" placeholder="请选择" @change="editXMSL({projectStage:xmjd})">
<el-select v-if="isDisabled==false" v-model="xmjd" class="select-multiple" placeholder="请选择" @change="editXMSL({projectStage:xmjd})">
<el-option v-for="(item,index) in projectStage" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</div>
......@@ -38,9 +38,9 @@
<div class="flex tipinput">
<div class="tips" v-for="(item,index) in tipslit">{{item}}<img @click="deltip(item)" src="@/assets/images/project/del.png"></div>
<div style="position: relative">
<el-input placeholder="待添加" v-model="tipsvalue" @input="getValue" :style="spanWidth"></el-input><span class="spanText">{{ tipsvalue }}</span>
<el-input placeholder="待添加" :disabled="isDisabled" v-model="tipsvalue" @input="getValue" :style="spanWidth"></el-input><span class="spanText">{{ tipsvalue }}</span>
</div>
<div class="addbtn" @click="addtips"></div>
<div class="addbtn" v-if="isDisabled == false" @click="addtips"></div>
</div>
</div>
</div>
......@@ -53,7 +53,7 @@
<div class="con">
<span>主管单位 :</span>
<div class="inputxt" id="inputxt2">
<div class="flex" v-if="nowedit == 2">
<div class="flex" v-if="nowedit == 2 && isDisabled == false">
<el-input placeholder="待添加" v-model="xmsldata.supervisorUnit"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL({supervisorUnit:xmsldata.supervisorUnit})">确定</div>
......@@ -66,7 +66,7 @@
<div class="con i">
<span>建设单位 :</span>
<div class="inputxt" id="inputxt3" :style="{width:rig1}">
<div class="flex" v-if="nowedit == 3">
<div class="flex" v-if="nowedit == 3 && isDisabled == false">
<el-input placeholder="待添加" v-model="xmsldata.constructionUnit"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL({constructionUnit:xmsldata.constructionUnit})">确定</div>
......@@ -82,7 +82,7 @@
<div class="con">
<span>主管单位负责人 :</span>
<div class="inputxt" id="inputxt4">
<div class="flex" v-if="nowedit == 4">
<div class="flex" v-if="nowedit == 4 && isDisabled == false">
<el-input placeholder="待添加" v-model="xmsldata.supervisorPrincipal"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL({supervisorPrincipal:xmsldata.supervisorPrincipal})">确定</div>
......@@ -95,7 +95,7 @@
<div class="con i">
<span>建设单位负责人 :</span>
<div class="inputxt" id="inputxt5">
<div class="flex" v-if="nowedit == 5">
<div class="flex" v-if="nowedit == 5 && isDisabled == false">
<el-input placeholder="待添加" v-model="xmsldata.constructionPrincipal"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL({constructionPrincipal:xmsldata.constructionPrincipal})">确定</div>
......@@ -110,7 +110,7 @@
<div class="con">
<span>主管单位联系电话 :</span>
<div class="inputxt" id="inputxt6">
<div class="flex" v-if="nowedit == 6">
<div class="flex" v-if="nowedit == 6 && isDisabled == false">
<el-input placeholder="待添加" v-model="xmsldata.supervisorPhone"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" @click="isphone(1,xmsldata.supervisorPhone)" style="width: 56px">确定</div>
......@@ -123,7 +123,7 @@
<div class="con i">
<span>建设单位联系电话 :</span>
<div class="inputxt" id="inputxt7">
<div class="flex" v-if="nowedit == 7">
<div class="flex" v-if="nowedit == 7 && isDisabled == false">
<el-input placeholder="待添加" v-model="xmsldata.constructionPhone"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" @click="isphone(2,xmsldata.constructionPhone)" style="width: 56px">确定</div>
......@@ -177,7 +177,6 @@
export default {
name: 'xmsl',
props:{
datas:'',
detailId: { //从企业详情跳转过来ID
type: Number,
default: 0
......@@ -191,9 +190,10 @@
xmjd:'待添加',
projectStage:[],//项目阶段
id: this.detailId ? this.detailId : this.$route.query.id,
xmsldata:this.datas,
xmsldata:[],
spanWidth:'width: 70px',
rig1:'184px',
isDisabled:false,
}
},
created(){
......@@ -205,6 +205,8 @@
},
mounted(){
document.addEventListener('mouseup',(e) => {
if(this.isDisabled == true)
return false
let j = 0
for(var i=1;i<=7;i++){
let isSelf = document.getElementById('inputxt'+i).contains(event.target) // 这个是自己的区域
......@@ -215,6 +217,33 @@
}
}
if(j == 7){
if(this.nowedit != -1){
let param = {}
switch (this.nowedit) {
case 1:
param = {'projectLevel':this.xmsldata.projectLevel}
break;
case 2 :
param = {'supervisorUnit':this.xmsldata.supervisorUnit}
break;
case 3 :
param = {'constructionUnit':this.xmsldata.constructionUnit}
break;
case 4 :
param = {'supervisorPrincipal':this.xmsldata.supervisorPrincipal}
break;
case 5 :
param = {'constructionPrincipal':this.xmsldata.constructionPrincipal}
break;
case 6 :
param = {'supervisorPhone':this.xmsldata.supervisorPhone}
break;
case 7 :
param = {'constructionPhone':this.xmsldata.constructionPhone}
break;
}
this.editXMSL(param)
}
this.nowedit = -1
}
})
......@@ -232,17 +261,26 @@
});
},
editXMSL(param){
let params = param
params.id = this.id
editXMNR(JSON.stringify(params)).then(res=>{
if (res.code == 200){
this.$message.success('修改成功!')
}else{
this.$message.error(res.msg)
this.getXMSL()
}
})
this.nowedit = -1
if(this.isDisabled == true)
return false
if(param.projectStage){//修改项目阶段
this.$emit('Refreshs',param)
this.xmjd = param.projectStage
}else{
let params = param
params.id = this.id
editXMNR(JSON.stringify(params)).then(res=>{
if (res.code == 200){
if(!param.projectStage){
this.$message.success('修改成功!')
}
}else{
this.$message.error(res.msg)
this.getXMSL()
}
})
}
},
//验证电话号码
isphone(type,value){
......@@ -302,8 +340,7 @@
this.xmjd = result.data.projectStage
this.tipslit = result.data.labelList
this.xmsldata = result.data
this.isDisabled = result.data.isFounder == 1 ? false:true
const spanStyle = document.querySelector(".rig1");
this.$nextTick(() => { // 如果不用$nextTick的话页面并不会更新,它是在下次dom更新后再渲染到页面上
this.rig1 =
......
......@@ -3,9 +3,10 @@
<div>
<el-card class="box-card noborder">
<div class="cardtitles">资料文档</div>
<div class="searchbtns" v-if="fileDatas.rows != null && fileDatas.rows.length>0">
<div class="searchbtns">
<!--<div class="searchbtns" v-if="fileDatas.rows != null && fileDatas.rows.length>0">-->
<div class="searchInput">
<el-input type="text" v-model="param.keyword" placeholder="输入关键词查询"></el-input>
<el-input type="text" v-model="param.keyword" clearable placeholder="输入关键词查询"></el-input>
<div class="btn" @click="handleCurrentChange(1)">搜索</div>
</div>
<div class="btn btn_primary h32 b2" @click="getUP"><div class="img img2"></div>上传</div>
......@@ -50,9 +51,9 @@
<template slot="empty">
<div class="empty">
<img src="@/assets/images/project/empty.png">
<div class="p1">暂无数据展示</div>
<div class="p2">抱歉,你还未添加相关数据,快去上传吧</div>
<div class="btn btn_primary h36 w102" @click="getUP">上传文档</div>
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或筛选条件,重新搜索</div>
<div v-if="isDisabled==false" class="btn btn_primary h36 w102" @click="getUP">上传文档</div>
</div>
</template>
<el-table-column
......@@ -88,7 +89,7 @@
<template slot-scope="scope">
<div class="hoverbtn">
<div class="xz" @click="downnlod(scope.row)">下载</div>
<div class="sc" @click="del(scope.row.filePath)">删除</div>
<div class="sc" v-if="isDisabled == false" @click="del(scope.row.filePath)">删除</div>
</div>
</template>
</el-table-column>
......@@ -127,7 +128,8 @@
detailId: { //从企业详情跳转过来ID
type: Number,
default: 0
}
},
isDisabled:false,
},
data(){
return{
......@@ -149,6 +151,7 @@
fileDatas:[],
filename:'',
ondel:"",
isDisabled:this.isDisabled,
}
},
created(){
......@@ -191,6 +194,8 @@
}
},
getUP(){
if(this.isDisabled==true)
return false
this.isupload=true
this.$nextTick(() => {
this.$refs.uploadFile.$children[0].$refs.input.webkitdirectory = true
......@@ -344,4 +349,7 @@
}
}
}
.searchInput .el-input{
width: 68%;
}
</style>
......@@ -14,7 +14,7 @@
<div class="titles">
<img src="@/assets/images/project/headimg.png" class="headimg">
<strong class="text">{{ProjectData.projectName}}</strong>
<div class="locks">
<div class="locks" v-if="ProjectData.isFounder == 1">
<div @click="islock=true">
<img v-if="ProjectData.isPrivate == 0" src="@/assets/images/project/lock.png">
<img v-else src="@/assets/images/project/lockopen.png">
......@@ -29,15 +29,15 @@
</div>
</div>
</div>
<div class="contets row">
<div class="contets row" readonly>
<div class="det-con">
<span>项目类型:</span>
<div class="select-popper" >
<span class="color_text" :class="{'txt':xmlx == '请选择'}">
<span :class="{'txt':xmlx == '请选择'}">
{{xmlx}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="xmlx" class="select-multiple" placeholder="请选择" @change="editXMSL({projectType:xmlx})">
<el-select v-if="isDisabled == false" v-model="xmlx" class="select-multiple" placeholder="请选择" @change="editXMSL({projectType:xmlx})">
<el-option v-for="(item,index) in projectType" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</div>
......@@ -46,11 +46,11 @@
<span>项目类别:</span>
<span>
<div class="select-popper" >
<span class="color_text" :class="{'txt':xmlb == '请选择'}">
<span :class="{'txt':xmlb == '请选择'}">
{{xmlb}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="xmlb" class="select-multiple" placeholder="请选择" @change="editXMSL({projectCategory:xmlb})">
<el-select v-if="isDisabled==false" v-model="xmlb" class="select-multiple" placeholder="请选择" @change="editXMSL({projectCategory:xmlb})">
<el-option v-for="(item,index) in projectCategory" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</div>
......@@ -59,7 +59,7 @@
<div class="det-con con" id="inputxt">
<span>投资估算(万元):</span>
<div class="inputxt i" :class="{'nomar':nowedit != 3}">
<div class="flex" v-if="nowedit == 3">
<div class="flex" v-if="nowedit == 3 && isDisabled == false">
<el-input v-model="ProjectData.investmentAmount" placeholder="待添加" @input="number"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL({investmentAmount:ProjectData.investmentAmount})">确定</div>
......@@ -77,7 +77,7 @@
{{addresstxt}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-cascader class="cascader-region select-location" v-model="ProjectData.address"
<el-cascader :disabled="isDisabled" class="cascader-region select-location" v-model="ProjectData.address"
ref="myCascader" :props="props"
:options="addressList"
@change="handleChange"></el-cascader>
......@@ -106,20 +106,20 @@
</div>
</div>
</el-card>
<!--项目览-->
<xmsl v-if="thistag == 'xmsl'" :datas="ProjectData" :detailId="detailId"></xmsl>
<!--项目览-->
<xmsl v-if="thistag == 'xmsl'" :key="keys" @Refreshs="getsl" :detailId="detailId"></xmsl>
<!--建设内容-->
<jsnr v-if="thistag == 'jsnr'" :detailId="detailId"></jsnr>
<jsnr v-if="thistag == 'jsnr'" :isDisabled='isDisabled' :detailId="detailId"></jsnr>
<!--联系人-->
<lxr v-if="thistag == 'lxr'" :detailId="detailId"></lxr>
<lxr v-if="thistag == 'lxr'" :isDisabled='isDisabled' :detailId="detailId"></lxr>
<!--跟进记录-->
<gjjl v-if="thistag == 'gjjl'" types="gjjl" :detailId="detailId"></gjjl>
<gjjl v-if="thistag == 'gjjl'" :isDisabled='isDisabled' types="gjjl" :detailId="detailId"></gjjl>
<!--工作待办-->
<gzdb v-if="thistag == 'gzdb'" :detailId="detailId"></gzdb>
<gzdb v-if="thistag == 'gzdb'" :isDisabled='isDisabled' :detailId="detailId"></gzdb>
<!--资料文档-->
<zlwd v-if="thistag == 'zlwd'" :detailId="detailId"></zlwd>
<zlwd v-if="thistag == 'zlwd'" :isDisabled='isDisabled' :detailId="detailId"></zlwd>
<!--相关企业-->
<xgqy v-if="thistag == 'xgqy'" :detailId="detailId"></xgqy>
<xgqy v-if="thistag == 'xgqy'" :isDisabled='isDisabled' :detailId="detailId"></xgqy>
</div>
</div>
</template>
......@@ -175,6 +175,8 @@
props:{ checkStrictly: true, expandTrigger: 'hover' },
id:'',
ProjectData:{},
isDisabled:false,
keys:1,
}
},
created(){
......@@ -197,10 +199,18 @@
this.getXMSL()
},
methods: {
getsl(data){
this.choose(data.projectStage)
},
handleALL(event){
if(this.isDisabled == true)
return false
var one = document.getElementById("inputxt");
if(one){
if(!one.contains(event.target)){
if(this.nowedit != -1){
this.editXMSL({investmentAmount:this.ProjectData.investmentAmount})
}
this.nowedit = -1
}else{
this.nowedit = 3
......@@ -211,6 +221,7 @@
getXMSL(this.id).then(result=>{
this.ProjectData = result.code==200?result.data:{}
this.$route.query.projectname = result.data.projectName
this.isDisabled = result.data.isFounder == 1 ? false:true
this.xmlx = result.data.projectType==""||result.data.projectType==null?"请选择":result.data.projectType
this.xmlb = result.data.projectCategory==""||result.data.projectCategory==null?"请选择":result.data.projectCategory
this.thisindex = result.data.projectStage
......@@ -237,7 +248,6 @@
this.address = list.length>0?list:"待添加"
this.addresstxt = txt == "" ? "待添加":txt
})
},
locks(isPrivate){
isPrivate = isPrivate==0?1:0
......@@ -246,6 +256,8 @@
this.ProjectData.isPrivate = isPrivate
},
editXMSL(param){
if(this.isDisabled == true)
return false
let params = param
params.id = this.id
editXMNR(JSON.stringify(params)).then(res=>{
......@@ -291,8 +303,14 @@
this.lastindex = value
},
choose(value){
if(this.isDisabled == true)
return false
this.thisindex = value
this.editXMSL({projectStage:value})
let _this = this
setTimeout(function() {
_this.keys++;
},1000)
},
//内容组件切换
getCom(tag){
......@@ -300,7 +318,7 @@
},
//输入数字
number(value){
this.queryParam.registerCapital = value.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1')//输入6位小数
this.ProjectData.investmentAmount = value == ""?"": value.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1')//输入6位小数
},
handleChange(value) {
......
......@@ -99,7 +99,9 @@
<div class="titles">项目明细
<div class="dc">
<div class="total">{{total}}</div>
<div class="btn-export"><img src="@/assets/images/EXCEL.png">导出EXCEL</div>
<el-tooltip class="item" effect="dark" content="功能正在开发中" placement="top">
<div class="btn-export"><img src="@/assets/images/EXCEL.png">导出EXCEL</div>
</el-tooltip>
</div>
</div>
<div class="tables" v-if="total == 0">
......@@ -113,7 +115,10 @@
</div>
<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-title" @click="toDetail(item.id,'xmsl')">
{{item.projectName}}<span v-if="activeName!='first' && item.followTime" class="people"><i>{{item.nickName1}}</i>
<span v-if="item.provinceName != '' && item.provinceName!==null">{{item.provinceName}}-</span>
{{item.nickName}} <font color="#FA8A00">正在跟进</font></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>
......@@ -238,6 +243,8 @@ export default {
}
},
created() {
},
mounted(){
this.prvinceTree()
this.getList(1)
//项目阶段
......@@ -308,6 +315,10 @@ export default {
})
},
reset(){
this.$nextTick(() => {
this.$refs.myCascader.$refs.panel.clearCheckedNodes()
this.$refs.myCascader.$refs.panel.activePath = []
})
this.searchParam ={
userId:null,
projectName:'',//项目名称
......@@ -443,6 +454,9 @@ export default {
}
</script>
<style lang="scss" scoped>
.btn_primary{
margin-top: 16px;
}
.jabph_popper_box{
left: 110px;
}
......
......@@ -185,11 +185,11 @@
</p>
<p class="list-content-text">
<span>预计招标时间:</span>
<span>{{item.issueTimestamp||'--'}}</span>
<span>{{item.planTenderDateStart||'--'}}</span>
</p>
<p class="list-content-text">
<span>来源网站:</span>
<span >{{item.issueTimestamp||'--'}}</span>
<span >{{item.sourceName||'--'}}</span>
</p>
......
......@@ -1057,8 +1057,6 @@
reset() {
Object.assign(this.$data, this.$options.data.call(this)); //重置data
this.init();
this.$emit("reset");
this.token = getCookie("tokenNew");
},
init() {
this.search();
......
......@@ -234,15 +234,19 @@
<div class="list-content">
<p class="list-content-text">
<span>受让人:</span>
<router-link :to="'/company/' + encodeStr(item.id) + '/?index=true'" tag="a" class="list-titel-a blue" v-html="item.companyName"></router-link>
<span v-if="item.companyName">
<router-link :to="'/company/' + encodeStr(item.id) + '/?index=true'" tag="a" class="list-titel-a blue" v-html="item.companyName"></router-link>
</span>
<span v-else>--</span>
</p>
<p class="list-content-text">
<span>成交金额:</span>
<span>{{item.transactionPrice||'--'}}</span>
<span>{{item.transactionPrice||'--'}}万元</span>
</p>
<p class="list-content-text">
<span>总面积:</span>
<span>{{item.acreage||'--'}}</span>
<span>{{item.acreage||'--'}}</span>
</p>
<p class="list-content-text">
<span>合同签订:</span>
......@@ -254,6 +258,10 @@
<span>土地用途:</span>
<span >{{item.landUse||'--'}}</span>
</p>
<p class="list-content-text">
<span>行业分类:</span>
<span >{{item.industry||'--'}}</span>
</p>
<p class="list-content-text">
<span>供应方式:</span>
<span >{{item.supplyLandWay||'--'}}</span>
......@@ -275,7 +283,8 @@
</p>
<p class="list-content-text">
<span>土地坐落:</span>
<span >{{item.landAddr||'--'}}</span>
<span v-if="item.landAddr" v-html="item.landAddr"></span>
<span v-else>--</span>
</p>
</div>
</li>
......@@ -562,7 +571,7 @@
searchDic(){
api.searchDic().then(res=>{
this.landMarketIndustryList = res.landMarketIndustry;
this.landUseOptions = res.data.landUse
this.landUseOptions = res.landUse
}).catch(error=>{
});
......
......@@ -63,7 +63,7 @@
工程类型{{jskBidNewsDto.projectType.length? jskBidNewsDto.projectType.length + "项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="jskBidNewsDto.projectType" class="select-multiple" multipleplaceholder="请选择">
<el-select v-model="jskBidNewsDto.projectType" class="select-multiple" multiple placeholder="请选择">
<el-option v-for="(item, i) in projectTypeList" :key="i":label="item" :value="item">
</el-option>
</el-select>
......@@ -283,7 +283,7 @@
<div class="label">人员要求</div>
<div class="content_right">
<el-input class="ename_input"
placeholder="请输入关键词句,如:建筑工程" v-model="jskBidNewsDto.personLimit" ></el-input>
placeholder="请输入关键词句,如:一级建造师" v-model="jskBidNewsDto.personLimit" ></el-input>
<span class="land_content_wrap_label_tipspan">
<el-tooltip popper-class="explain_tooltip" content="根据输入的关键词全称进行匹配"
placement="bottom" effect="light">
......@@ -882,7 +882,8 @@
created() {
this.searchDic();
this.clickProvince(0,1);
this.bxproggSearch();
this.search();
this.changeDown(false)
},
mounted() {
},
......@@ -1002,7 +1003,7 @@
}
this.fieldText = this.fieldOptions[index].value;
this.fieldOptions[index].status = true;
this.bxproggSearch();
this.search();
},
//项目级别
addressListfn() {
......@@ -1431,12 +1432,12 @@
handleCurrentChange(e){
this.page = e;
this.jump1();
this.bxproggSearch(e, this.limit);
this.search(e, this.limit);
},
handleSizeChange(e){
this.limit = e;
this.jump1();
this.bxproggSearch(this.page, e);
this.search(this.page, e);
},
jump1() {
// 用 class="d_jump" 添加锚点
......@@ -1489,10 +1490,10 @@
},
lowerRateClick() {
this.bxproggSearch();
this.search();
},
bxproggSearch(page, limit,exportFlag){
search(page, limit,exportFlag){
// return false;
if (!page) {
this.page = 1;
......@@ -1504,6 +1505,7 @@
this.reloadPage();
}
var data = JSON.parse(JSON.stringify(this.jskBidNewsDto));
console.log(data);
if(this.projectTerritoryId.length >0){
for (var i=0;i<this.projectTerritoryId.length;i++){
......@@ -1561,8 +1563,17 @@
reset(){
Object.assign(this.$data, this.$options.data.call(this)); //重置data
// this.clickProvince(0,1);
this.bxproggSearch();
this.search();
},
changeDown(isHeight){
if(isHeight){
this.isHeight = false
this.maxHeight = 'auto'
}else{
this.isHeight = true
this.maxHeight = '36px'
}
},
provinceChange(e){
let obj=''
......
......@@ -7,8 +7,8 @@
<el-input class="ename_input"
placeholder="请输入项目名称关键字" v-model="projectName" ></el-input>
<template v-if="projectName">
<span v-for=" (item,k) in enameQueryTypeList" :key="k" style="margin-right: 24px;">
<el-radio v-model="enameQueryType" :label="item.key">{{item.value}}</el-radio>
<span v-for=" (item,k) in nameTypeList" :key="k" style="margin-right: 24px;">
<el-radio v-model="nameType" :label="item.key">{{item.value}}</el-radio>
</span>
</template>
</div>
......@@ -66,7 +66,7 @@
项目类型{{projectType.length? projectType.length + "项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="projectType" class="select-multiple" multipleplaceholder="请选择">
<el-select v-model="projectType" class="select-multiple" multiple placeholder="请选择">
<el-option v-for="(item, i) in specialBondProjectType" :key="i":label="item" :value="item">
</el-option>
</el-select>
......@@ -108,7 +108,7 @@
</div>
<div class="list-content">
<p class="list-content-text" v-if="item.projectType">
<p class="list-content-text" v-if="item.projectType&&item.projectType!='空白'">
<span>项目类型:</span>
<span>{{item.projectType}}</span>
</p>
......@@ -116,27 +116,27 @@
<span>项目总投资(亿):</span>
<span>{{item.projectTotalInvestment}}</span>
</p>
<p class="list-content-text" v-if="item.specialCapital">
<p class="list-content-text" v-if="item.projectCapital">
<span>项目资本金(亿):</span>
<span>{{item.projectCapital}}</span>
</p>
<p class="list-content-text">
<p class="list-content-text" v-if="item.specialBondCapital">
<span>专项债金额(亿):</span>
<span>{{item.specialCapital}}</span>
<span>{{item.specialBondCapital}}</span>
</p>
</div>
<div class="list-content">
<p class="list-content-text" v-if="item.specialCapital">
<p class="list-content-text" v-if="item.projectEntity">
<span>项目主体:</span>
<span >{{item.projectEntity}}</span>
<span v-html="item.projectEntity"></span>
</p>
<p class="list-content-text" v-if="item.chargeDepartment">
<span>主管部门:</span>
<span >{{item.chargeDepartment}}</span>
<span v-html="item.chargeDepartment"></span>
</p>
<p class="list-content-text" v-if="item.piu">
<span>实施单位:</span>
<span >{{item.piu}}</span>
<span v-html="item.piu"></span>
</p>
</div>
</li>
......@@ -171,20 +171,18 @@
return {
encodeStr,
projectName:'',
enameQueryTypeList: [{
key: 'and',
nameTypeList: [{
key: 'like',
status: false,
value: '模糊搜索',
keyid: 'businessScope'
},
{
key: 'or',
key: 'match',
status: true,
value: '精准匹配',
keyid: 'businessScope'
},
],
enameQueryType: 'or',
nameType: 'match',
projectEntity:'',
countTypelist: [{
key: '1',
......@@ -201,7 +199,7 @@
],
chargeDepartment: {
key: '3',
value: '实施单位'
value: '项目主体'
},
addressList: [],
addressType: [],
......@@ -213,7 +211,7 @@
specialBondProjectType: [
],
projectTypeText: ['不限'],
projectType:['不限'],
projectType:[],
arrList:[],
pageFlag:true,
......@@ -226,11 +224,14 @@
}
},
created() {
this.addressListfn();
this.searchDic();
this.search();
this.init();
},
methods: {
init(){
this.addressListfn();
this.searchDic();
this.search();
},
searchDic(){
api.searchDic().then(res=>{
this.specialBondProjectType=res.specialBondProjectType;
......@@ -444,7 +445,7 @@
if(this.projectName){
params.specialBondProjectDto['projectName']=this.projectName;
params.specialBondProjectDto['enameQueryType']=this.enameQueryType;
params.specialBondProjectDto['nameType']=this.nameType;
}
if(this.projectEntity){
......@@ -534,7 +535,8 @@
return this.hasValue;
},
reset(){
Object.assign(this.$data, this.$options.data.call(this)); //重置data
this.init();
}
}
}
......
package com.dsk.system.domain;
import com.dsk.common.utils.StringUtils;
import lombok.Data;
/**
......@@ -34,7 +33,7 @@ public class BusinessAddDto {
/**
* 投资估算
*/
private String investmentAmount;
private Double investmentAmount;
/**
* 项目阶段
......@@ -59,8 +58,4 @@ public class BusinessAddDto {
* 客户id
*/
private String customerId;
public Double getInvestmentAmount() {
return StringUtils.isEmpty(investmentAmount) ? null :Double.parseDouble(investmentAmount);
}
}
......@@ -19,6 +19,10 @@ public class CustomerBusinessSearchDto implements Serializable {
* 企业id
*/
private Long userId;
/**
* 项目名称
*/
private String projectName;
/**
* 项目阶段
*/
......
......@@ -130,5 +130,10 @@ public class BusinessBrowseVo {
*/
private Integer fileCount;
/**
* 是否创建人(1 是,0 否)
*/
private Integer isFounder;
}
......@@ -56,7 +56,10 @@ public class EnterpriseService {
companyData.put("claimStatus", 0);
companyData.put("uipId", null);
Map<String, Object> uipMap = dskOpenApiUtil.requestBody("/operate/enterprise/financial", BeanUtil.beanToMap(body, false, false));
Map<String, Object> map = BeanUtil.beanToMap(body, false, false);
map.put("cid", body.getCompanyId());
Map<String, Object> uipMap = dskOpenApiUtil.requestBody("/operate/enterprise/financial", map);
Integer uipCode = MapUtils.getInteger(uipMap, "code", 300);
if (200 != uipCode) return R.ok(companyData);
......
package com.dsk.system.mapper;
import com.dsk.common.core.domain.entity.BusinessUser;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
......@@ -65,4 +67,11 @@ public interface BusinessUserMapper
* @return
*/
String selectCreatorByBusinessId(Integer businessId);
/**
* 查询是否为项目的创建人
* @param businessId
* @return
*/
Integer selectFounder(@Param("businessId") Integer businessId,@Param("userId") Long userId);
}
......@@ -79,4 +79,13 @@ public interface EconomicService {
*/
AjaxResult regionalCompare(OpRegionalEconomicDataStatisticsRegionalDto dto);
/***
*@Description: 地区经济-对比
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult regionalMultipleCompare (OpRegionalEconomicRegionalCompareDto dto);
}
package com.dsk.system.service.impl;
import java.util.List;
import cn.hutool.core.util.ObjectUtil;
import com.dsk.common.core.domain.entity.BusinessContacts;
import com.dsk.common.core.domain.model.LoginUser;
import com.dsk.common.exception.base.BaseException;
import com.dsk.common.utils.CheckUtils;
import com.dsk.common.utils.DateUtils;
import com.dsk.common.utils.SecurityUtils;
import com.dsk.system.mapper.BusinessContactsMapper;
import com.dsk.system.service.IBusinessContactsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 项目联系人Service业务层处理
*
......@@ -58,7 +61,11 @@ public class BusinessContactsServiceImpl implements IBusinessContactsService
@Transactional
public int insertBusinessContacts(BusinessContacts businessContacts)
{
if(!CheckUtils.isPhone(businessContacts.getPhone())) throw new BaseException("500","请输入正确的手机号码");
if(!CheckUtils.isPhone(businessContacts.getPhone())) throw new BaseException("500","请输入正确的电话号码");
LoginUser loginUser = SecurityUtils.getLoginUser();
if (ObjectUtil.isEmpty(loginUser)) throw new BaseException("请登录");
//维护人员为当前登录用户
businessContacts.setAccendant(loginUser.getUsername());
return businessContactsMapper.insertBusinessContacts(businessContacts);
}
......@@ -72,7 +79,7 @@ public class BusinessContactsServiceImpl implements IBusinessContactsService
@Transactional
public int updateBusinessContacts(BusinessContacts businessContacts)
{
if(!CheckUtils.isPhone(businessContacts.getPhone())) throw new BaseException("500","请输入正确的手机号码");
if(!CheckUtils.isPhone(businessContacts.getPhone())) throw new BaseException("500","请输入正确的电话号码");
businessContacts.setUpdateTime(DateUtils.getNowDate());
return businessContactsMapper.updateBusinessContacts(businessContacts);
}
......
......@@ -2,6 +2,7 @@ package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.dsk.common.config.RuoYiConfig;
import com.dsk.common.constant.HttpStatus;
import com.dsk.common.core.domain.AjaxResult;
......@@ -70,7 +71,8 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
@Override
public BusinessInfo getConstruction(Integer id) {
return businessInfoMapper.getConstruction(id);
BusinessInfo businessInfo =businessInfoMapper.getConstruction(id);
return ObjectUtil.isEmpty(businessInfo) ? new BusinessInfo() : businessInfo;
}
/**
......@@ -89,7 +91,6 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
dto.setOthers(userId.intValue());
//查询他人可见项目
othersList = businessInfoMapper.selectBusinessInfoList(dto);
}
dto.setOthers(null);
//查询自己参与的项目
......@@ -103,9 +104,14 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
BusinessBrowseVo businessBrowseVo = new BusinessBrowseVo();
//查询项目基本信息
BusinessInfo businessInfo = businessInfoMapper.selectBusinessInfoById(businessId);
BeanUtil.copyProperties(businessInfo, businessBrowseVo);
if(ObjectUtil.isNotEmpty(businessInfo)) BeanUtil.copyProperties(businessInfo, businessBrowseVo);
//商务团队
businessBrowseVo.setTeam(businessUserMapper.selectCreatorByBusinessId(businessId));
//查询是否是项目创建人
Long userId = SecurityUtils.getLoginUser().getUserId();
if (userId == null) throw new BaseException("请登录");
Integer founder = businessUserMapper.selectFounder(businessId, userId);
businessBrowseVo.setIsFounder(founder == null ? 0 : founder);
//查询项目标签
businessBrowseVo.setLabelList(businessLabelMapper.selectBusinessLabelList(new BusinessLabel(businessId)).stream().map(p -> p.getLabel()).collect(Collectors.toList()));
//相关数据统计
......@@ -173,6 +179,13 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
//新增前查询是否已存在
int count = businessInfoMapper.isRepetitionProjectName(dto.getProjectName(), dto.getUserId());
if (count > 0) return AjaxResult.error("项目名称已存在");
//判断资金Double类型的位数
if (dto.getInvestmentAmount() != null) {
int front = CheckUtils.checkIntegerPlaces(dto.getInvestmentAmount());
int later = CheckUtils.checkDecimalPlaces(dto.getInvestmentAmount());
if (front > 9) return AjaxResult.error("小数点前最多支持9位");
if (later > 6) return AjaxResult.error("小数点后最多支持6位");
}
//新增项目主信息
BusinessInfo businessInfo = new BusinessInfo();
BeanUtil.copyProperties(dto, businessInfo);
......@@ -199,9 +212,16 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
@Override
@Transactional
public int updateBusinessInfo(BusinessInfo businessInfo) {
//判断资金Double类型的位数
if (businessInfo.getInvestmentAmount() != null) {
int front = CheckUtils.checkIntegerPlaces(businessInfo.getInvestmentAmount());
int later = CheckUtils.checkDecimalPlaces(businessInfo.getInvestmentAmount());
if (front > 9) throw new BaseException("500", "小数点前最多支持9位");
if (later > 6) throw new BaseException("500", "小数点后最多支持6位");
}
if (StringUtils.isNotEmpty(businessInfo.getConstructionPhone()) && StringUtils.isNotEmpty(businessInfo.getSupervisorPhone())) {
if (!CheckUtils.isPhone(businessInfo.getConstructionPhone()) || !CheckUtils.isPhone(businessInfo.getSupervisorPhone()))
throw new BaseException("500", "请输入正确的手机号码");
throw new BaseException("500", "请输入正确的电话号码");
}
businessInfo.setUpdateTime(DateUtils.getNowDate());
return businessInfoMapper.updateBusinessInfo(businessInfo);
......
package com.dsk.system.service.impl;
import java.util.List;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.BusinessRelateCompany;
import com.dsk.common.exception.base.BaseException;
import com.dsk.common.utils.CheckUtils;
import com.dsk.common.utils.DateUtils;
import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.mapper.BusinessRelateCompanyMapper;
......@@ -16,6 +10,8 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
* 项目关联单位Service业务层处理
......@@ -63,7 +59,7 @@ public class BusinessRelateCompanyServiceImpl implements IBusinessRelateCompanyS
@Transactional
public int insertBusinessRelateCompany(BusinessRelateCompany businessRelateCompany)
{
// if(!CheckUtils.isPhone(businessRelateCompany.getPhone())) throw new BaseException("500","请输入正确的手机号码");
// if(!CheckUtils.isPhone(businessRelateCompany.getPhone())) throw new BaseException("500","请输入正确的电话号码");
businessRelateCompany.setCreateTime(DateUtils.getNowDate());
return businessRelateCompanyMapper.insertBusinessRelateCompany(businessRelateCompany);
}
......@@ -78,7 +74,7 @@ public class BusinessRelateCompanyServiceImpl implements IBusinessRelateCompanyS
@Transactional
public int updateBusinessRelateCompany(BusinessRelateCompany businessRelateCompany)
{
// if(!CheckUtils.isPhone(businessRelateCompany.getPhone())) throw new BaseException("500","请输入正确的手机号码");
// if(!CheckUtils.isPhone(businessRelateCompany.getPhone())) throw new BaseException("500","请输入正确的电话号码");
businessRelateCompany.setUpdateTime(DateUtils.getNowDate());
return businessRelateCompanyMapper.updateBusinessRelateCompany(businessRelateCompany);
}
......
......@@ -51,16 +51,17 @@ public class CustomerServiceImpl implements ICustomerService {
@Override
public List<CustomerListVo> selectList(CustomerSearchDto dto) {
dto.setUserId(SecurityUtils.getUserId());
List<CustomerListVo> vos = baseMapper.selectList(dto);
vos.parallelStream().forEach(vo -> {
//合作项目
vo.setCooperationProject(businessInfoService.selectCountByStatusAndCustomerId(2, vo.getCustomerId()));
//跟进项目
vo.setFollowProject(businessInfoService.selectCountByStatusAndCustomerId(1, vo.getCustomerId()));
//储备项目
vo.setReserveProject(businessInfoService.selectCountByStatusAndCustomerId(0, vo.getCustomerId()));
});
return vos;
// List<CustomerListVo> vos = baseMapper.selectList(dto);
// vos.parallelStream().forEach(vo -> {
// //合作项目
// vo.setCooperationProject(businessInfoService.selectCountByStatusAndCustomerId(2, vo.getCustomerId()));
// //跟进项目
// vo.setFollowProject(businessInfoService.selectCountByStatusAndCustomerId(1, vo.getCustomerId()));
// //储备项目
// vo.setReserveProject(businessInfoService.selectCountByStatusAndCustomerId(0, vo.getCustomerId()));
// });
// return vos;
return baseMapper.selectList(dto);
}
@Override
......
......@@ -70,4 +70,10 @@ public class EconomicServiceImpl implements EconomicService {
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult regionalMultipleCompare(OpRegionalEconomicRegionalCompareDto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/economic/regional/multipleCompare", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
}
......@@ -12,8 +12,9 @@
<result property="office" column="office"/>
<result property="position" column="position"/>
<result property="phone" column="phone"/>
<result property="sex" column="sex"/>
<result property="accendant" column="accendant"/>
<result property="creatTime" column="creat_time"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
......@@ -26,7 +27,8 @@
position,
phone,
accendant,
creat_time,
sex,
create_time,
update_time
from business_contacts
</sql>
......@@ -41,9 +43,10 @@
<if test="position != null and position != ''">and position = #{position}</if>
<if test="phone != null and phone != ''">and phone = #{phone}</if>
<if test="accendant != null and accendant != ''">and accendant = #{accendant}</if>
<if test="creatTime != null ">and creat_time = #{creatTime}</if>
<if test="createTime != null ">and create_time = #{createTime}</if>
<if test="sex != null ">and sex = #{sex}</if>
</where>
order by creat_time desc
order by update_time desc,id desc
</select>
<select id="selectBusinessContactsById" parameterType="Long" resultMap="BusinessContactsResult">
......@@ -61,8 +64,9 @@
<if test="position != null">position,</if>
<if test="phone != null">phone,</if>
<if test="accendant != null">accendant,</if>
<if test="creatTime != null">creat_time,</if>
<if test="createTime != null">create_time,</if>
<if test="updateTime != null">update_time,</if>
<if test="sex != null">sex,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="businessId != null">#{businessId},</if>
......@@ -72,8 +76,9 @@
<if test="position != null">#{position},</if>
<if test="phone != null">#{phone},</if>
<if test="accendant != null">#{accendant},</if>
<if test="creatTime != null">#{creatTime},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="sex != null">#{sex},</if>
</trim>
</insert>
......@@ -87,8 +92,9 @@
<if test="position != null">position = #{position},</if>
<if test="phone != null">phone = #{phone},</if>
<if test="accendant != null">accendant = #{accendant},</if>
<if test="creatTime != null">creat_time = #{creatTime},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="sex != null">sex = #{sex},</if>
</trim>
where id = #{id}
</update>
......
......@@ -356,7 +356,7 @@
<if test="constructionPhone != null">construction_phone = #{constructionPhone},</if>
<if test="supervisorUnit != null">supervisor_unit = #{supervisorUnit},</if>
<if test="supervisorPrincipal != null">supervisor_principal = #{supervisorPrincipal},</if>
<if test="supervisorPhone != null">evaluation_bid_council = #{supervisorPhone},</if>
<if test="supervisorPhone != null">supervisor_phone = #{supervisorPhone},</if>
</trim>
where id = #{id}
</update>
......@@ -388,6 +388,7 @@
from business_info bi
left join business_user bu on bi.id = bu.business_id
where bi.customer_id = #{customerId} and (bu.user_id = #{userId} or bi.is_private = 1)
<if test="projectName != null and projectName != '' "> and bi.project_name like concat('%',#{projectName},'%') </if>
<if test="projectStage != null and projectStage != '' "> and bi.project_stage = #{projectStage}</if>
<if test="status != null "> and bi.status = #{status}</if>
order by bi.create_time desc
......
......@@ -41,6 +41,12 @@
where bu.is_founder = 1
and i.id = #{BusinessId}
</select>
<select id="selectFounder" resultType="java.lang.Integer">
select is_founder
from business_user
where business_id = #{businessId}
and user_id = #{userId}
</select>
<insert id="insertBusinessUser" parameterType="com.dsk.common.core.domain.entity.BusinessUser" useGeneratedKeys="true" keyProperty="id">
insert into business_user
......
......@@ -10,7 +10,7 @@
ct.performance_characteristic, ct.other_ms_characteistic, ct.create_id, ct.create_time, ct.update_id, ct.update_time
</sql>
<select id="selectList" resultType="com.dsk.system.domain.customer.vo.CustomerListVo">
<select id="selectList1" resultType="com.dsk.system.domain.customer.vo.CustomerListVo">
select
u.nick_name followUser,
<include refid="Base_Bean"></include>
......@@ -21,6 +21,26 @@
<if test="dto.companyName != null and dto.companyName != '' "> and ct.company_name like concat('%',#{dto.companyName},'%')</if>
</select>
<select id="selectList" resultType="com.dsk.system.domain.customer.vo.CustomerListVo">
select
u.nick_name followUser, bi1.num reserveProject, bi2.num followProject, bi3.num cooperationProject,
<include refid="Base_Bean"></include>
from customer ct
join customer_user ctu on ct.customer_id = ctu.customer_id
join sys_user u on ctu.user_id = u.user_id
left join (
select count(status) num,customer_id from business_info where `status` = 0 group by customer_id
) bi1 on bi1.customer_id = ct.customer_id
left join (
select count(status) num,customer_id from business_info where `status` = 1 group by customer_id
) bi2 on bi2.customer_id = ct.customer_id
left join (
select count(status) num,customer_id from business_info where `status` = 2 group by customer_id
) bi3 on bi3.customer_id = ct.customer_id
where ctu.user_id = #{dto.userId}
<if test="dto.companyName != null and dto.companyName != '' "> and ct.company_name like concat('%',#{dto.companyName},'%')</if>
</select>
<select id="selectUserList" resultType="com.dsk.system.domain.customer.Customer">
select
ct.customer_id, ct.company_name
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment