Commit 6651c7bf authored by caixingbing's avatar caixingbing
parents 53571b9e e1d3a6e3
...@@ -112,19 +112,19 @@ public class CustomerController extends BaseController { ...@@ -112,19 +112,19 @@ public class CustomerController extends BaseController {
} }
try { try {
Map<String, Object> map = opportunityRadarService.enterpriseByName(customer.getCompanyName()); Map<String, Object> map = opportunityRadarService.enterpriseByName(customer.getCompanyName());
if(ObjectUtils.isEmpty(map)){ if (ObjectUtils.isEmpty(map)) {
throw new HttpException("远程调用匹配接口失败!"); throw new HttpException("远程调用匹配接口失败!");
} }
Map<String, Object> obj = BeanUtil.beanToMap(map.get("data")); Map<String, Object> obj = BeanUtil.beanToMap(map.get("data"));
if(!ObjectUtils.isEmpty(obj)){ if (!ObjectUtils.isEmpty(obj)) {
customer.setCompanyId(MapUtil.getInt(obj,"jskEid")); customer.setCompanyId(MapUtil.getInt(obj, "jskEid"));
customer.setLegalPerson(MapUtil.getStr(obj,"legalPerson")); customer.setLegalPerson(MapUtil.getStr(obj, "legalPerson"));
customer.setRegisterCapital(MapUtil.getStr(obj,"registeredCapital")); customer.setRegisterCapital(MapUtil.getStr(obj, "registeredCapital"));
customer.setProvinceId(MapUtil.getInt(obj,"provinceId")); customer.setProvinceId(MapUtil.getInt(obj, "provinceId"));
customer.setCityId(MapUtil.getInt(obj,"cityId")); customer.setCityId(MapUtil.getInt(obj, "cityId"));
customer.setDistrictId(MapUtil.getInt(obj,"districtId")); customer.setDistrictId(MapUtil.getInt(obj, "countyId"));
customer.setRegisterAddress(MapUtil.getStr(obj,"domicile")); customer.setRegisterAddress(MapUtil.getStr(obj, "domicile"));
customer.setCreditCode(MapUtil.getStr(obj,"creditCode")); customer.setCreditCode(MapUtil.getStr(obj, "creditCode"));
} }
baseService.add(customer); baseService.add(customer);
} catch (Exception e) { } catch (Exception e) {
......
...@@ -193,9 +193,11 @@ xss: ...@@ -193,9 +193,11 @@ xss:
dsk: dsk:
open: open:
# endPoint: sandbox.openapi.jiansheku.com
# accessKeyId: aec7b3ff2e8b48e79a7e2c463ce21912
# accessKeySecret: ee8a53c7ea04eb3ac311406c8f56f95b
# protocol: https
endPoint: 120.27.13.145:8865 endPoint: 120.27.13.145:8865
accessKeyId: aec7b3ff2y2q8x6t49a7e2c463ce21912 accessKeyId: aec7b3ff2y2q8x6t49a7e2c463ce21912
accessKeySecret: ee8a53c7ea04eb3ac311406c8f56f95b accessKeySecret: ee8a53c7ea04eb3ac311406c8f56f95b
# endPoint: sandbox.openapi.jiansheku.com protocol: http
# accessKeyId: aec7b3ff2e8b48e79a7e2c463ce21912
# accessKeySecret: ee8a53c7ea04eb3ac311406c8f56f95b
...@@ -15,6 +15,7 @@ public class DskOpenApiConfig { ...@@ -15,6 +15,7 @@ public class DskOpenApiConfig {
public String accessKeyId; public String accessKeyId;
public String accessKeySecret; public String accessKeySecret;
public String endPoint; public String endPoint;
public String protocol;
public String getAccessKeyId() { public String getAccessKeyId() {
return accessKeyId; return accessKeyId;
...@@ -39,4 +40,12 @@ public class DskOpenApiConfig { ...@@ -39,4 +40,12 @@ public class DskOpenApiConfig {
public void setEndPoint(String endPoint) { public void setEndPoint(String endPoint) {
this.endPoint = endPoint; this.endPoint = endPoint;
} }
public String getProtocol() {
return protocol;
}
public void setProtocol(String protocol) {
this.protocol = protocol;
}
} }
...@@ -59,7 +59,7 @@ public class DskOpenApiUtil { ...@@ -59,7 +59,7 @@ public class DskOpenApiUtil {
public Map<String,Object> request(String path, Map<String, Object> bodyMap, String reqBodyType){ public Map<String,Object> request(String path, Map<String, Object> bodyMap, String reqBodyType){
try { try {
AccClient.init(new Config(dskOpenApiConfig.accessKeyId, dskOpenApiConfig.accessKeySecret) AccClient.init(new Config(dskOpenApiConfig.accessKeyId, dskOpenApiConfig.accessKeySecret)
.setEndpoint(dskOpenApiConfig.endPoint)); .setEndpoint(dskOpenApiConfig.endPoint).setProtocol(dskOpenApiConfig.protocol));
Map<String, ?> res = AccClient.request(reqBodyType, path, bodyMap); Map<String, ?> res = AccClient.request(reqBodyType, path, bodyMap);
if(!res.containsKey("headers") || !res.containsKey("body")) { if(!res.containsKey("headers") || !res.containsKey("body")) {
throw new RuntimeException(String.format("请求无返回:path=%s",path)); throw new RuntimeException(String.format("请求无返回:path=%s",path));
......
import request from '@/utils/request' import request from '@/utils/request'
// 导入客户列表
export function importData(param) {
return request({
url: '/customer/importData',
method: 'POST',
data: param
})
}
// 客户列表 // 客户列表
export function getCustomerList(param) { export function getCustomerList(param) {
...@@ -16,3 +24,13 @@ export function addCustomer(param) { ...@@ -16,3 +24,13 @@ export function addCustomer(param) {
data: param data: param
}) })
} }
//查询跟进记录
export function getFollowList(param) {
return request({
url: '/customer/follow/record/list',
method: 'get',
params: param
})
}
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -658,3 +658,8 @@ ul, li { ...@@ -658,3 +658,8 @@ ul, li {
.flex{ .flex{
display: flex; display: flex;
} }
//消息提示框
.el-message{
border-radius: 0;
padding: 10px;
}
...@@ -358,18 +358,36 @@ ...@@ -358,18 +358,36 @@
.popform{ .popform{
padding-top: 24px; padding-top: 24px;
.row{ .row{
padding-bottom: 16px; margin-bottom: 16px;
.left{ position: relative;
width: 137px; .resultlist{
display: inline-block; position: absolute;
text-align: right; width: 100%;
opacity: 0.8; max-height: 218px;
i{ background: #FFFFFF;
color: #FF3C3C; box-shadow: 0px 4px 10px 0px rgba(0,0,0,0.1);
font-style: initial; overflow: auto;
padding-right: 2px; z-index: 2;
text-indent: 13px;
cursor: pointer;
>div{
font-size: 14px;
color: #333;
height: 32px;
width: 100%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
&:hover{
background: #F1F6FB;
}
} }
} }
.el-form-item__label{
font-weight: 400;
opacity: 0.8;
padding: 0;
}
.el-input{ .el-input{
display: inline-block; display: inline-block;
width: 240px; width: 240px;
...@@ -398,6 +416,9 @@ ...@@ -398,6 +416,9 @@
color: #232323; color: #232323;
} }
} }
.el-form-item__error{
padding-top: 2px;
}
} }
.popbot{ .popbot{
text-align: right; text-align: right;
...@@ -410,17 +431,11 @@ ...@@ -410,17 +431,11 @@
} }
} }
.popform.i{ .popform.i{
.left{
width: 85px;
}
.el-input{ .el-input{
width: 335px; width: 335px;
} }
} }
.popform.j{ .popform.j{
.left{
width: 130px;
}
.el-input{ .el-input{
width: 364px; width: 364px;
} }
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<div class="app-container"> <div class="app-container">
<el-card class="box-card noborder"> <el-card class="box-card noborder">
<div class="tables"> <div class="tables">
<div class="empty" v-if="tableData.total==0"> <div class="empty" v-if="tableData.total==0 && isNew == true">
<img src="@/assets/images/project/empty.png"> <img src="@/assets/images/project/empty.png">
<div class="p1">添加你的第一位客户吧</div> <div class="p1">添加你的第一位客户吧</div>
<div class="p2">抱歉,你还未添加客户,快去添加吧</div> <div class="p2">抱歉,你还未添加客户,快去添加吧</div>
...@@ -16,8 +16,8 @@ ...@@ -16,8 +16,8 @@
</div> </div>
<div class="table_search"> <div class="table_search">
<div class="searchInput"> <div class="searchInput">
<el-input type="text" v-model="serchParam.companyName" placeholder="输入企业名称查询"></el-input> <el-input type="text" v-model="searchParam.companyName" placeholder="输入企业名称查询"></el-input>
<div class="btn">搜索</div> <div class="btn" @click="handleCurrentChange(1)">搜索</div>
</div> </div>
<div class="dc"> <div class="dc">
<div class="total">共126条</div> <div class="total">共126条</div>
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
<div class="btn btn_primary h32 p10" @click="opennew"><div class="img img1"></div>添加客户</div> <div class="btn btn_primary h32 p10" @click="opennew"><div class="img img1"></div>添加客户</div>
</div> </div>
</div> </div>
<el-table v-if="tableData.total>0" <el-table v-if="isNew != true || tableData.total > 0"
:data="tableData.rows" :data="tableData.rows"
stripe border stripe border
style="width: 100%" style="width: 100%"
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
label="序号" label="序号"
width="47"> width="47">
<template slot-scope='scope'> <template slot-scope='scope'>
<span>{{ (serchParam.pageNum - 1) * serchParam.pageSize + scope.$index + 1 }}</span> <span>{{ (searchParam.pageNum - 1) * searchParam.pageSize + scope.$index + 1 }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
...@@ -58,35 +58,56 @@ ...@@ -58,35 +58,56 @@
prop="cooperationProject" prop="cooperationProject"
label="合作项目" label="合作项目"
width="76"> width="76">
<template slot-scope="scope">
{{scope.row.cooperationProject || '--'}}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="followProject" prop="followProject"
label="跟进项目" label="跟进项目"
width="76"> width="76">
<template slot-scope="scope">
{{scope.row.followProject || '--'}}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="reserveProject" prop="reserveProject"
label="储备项目" label="储备项目"
width="76"> width="76">
<template slot-scope="scope">
{{scope.row.reserveProject || '--'}}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="legalPerson" prop="legalPerson"
label="法定代表人" label="法定代表人"
width="110"> width="110">
<template slot-scope="scope">
{{scope.row.legalPerson || '--'}}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="name" prop="registerAddress"
label="注册地区" label="注册地区"
width="160"> width="160">
<template slot-scope="scope">
{{scope.row.registerAddress || '--'}}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="registerCapitalStr" prop="registerCapitalStr"
label="注册资本金(万元)" label="注册资本金(万元)"
width="140"> width="140">
<template slot-scope="scope">
{{scope.row.registerCapitalStr || '--'}}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="creditLevel" prop="creditLevel"
label="企业主体评级" width="100"> label="企业主体评级" width="100">
<template slot-scope="scope">
{{scope.row.creditLevel || '--'}}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="isOn" prop="isOn"
...@@ -105,40 +126,58 @@ ...@@ -105,40 +126,58 @@
<el-table-column <el-table-column
prop="customerLevel" prop="customerLevel"
label="客户等级" width="76"> label="客户等级" width="76">
<template slot-scope="scope">
{{scope.row.customerLevel || '--'}}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="companyNature" prop="companyNature"
label="客户性质" width="76"> label="客户性质" width="76">
<template slot-scope="scope">
{{scope.row.companyNature || '--'}}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="companyLevel" prop="companyLevel"
label="客户级别" width="76"> label="客户级别" width="76">
<template slot-scope="scope">
{{scope.row.companyLevel || '--'}}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="address" prop="address"
label="企业母公司" width="268"> label="企业母公司" width="268">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="wordprimary">{{scope.row.superCompany}}</div> <div class="wordprimary">{{scope.row.superCompany || '--'}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="mainBusiness" prop="mainBusiness"
label="主营业务" width="120"> label="主营业务" width="120">
<template slot-scope="scope">
{{scope.row.mainBusiness || '--'}}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="companyAttribute" prop="companyAttribute"
label="发包属性" width="120"> label="发包属性" width="120">
<template slot-scope="scope">
{{scope.row.companyAttribute || '--'}}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="followUser" prop="followUser"
label="跟进人" width="110"> label="跟进人" width="110">
<template slot-scope="scope">
{{scope.row.followUser || '--'}}
</template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="bottems" v-if="tableData.total>0"> <div class="bottems" v-if="tableData.total>0">
<el-pagination <el-pagination
background background
:page-size="serchParam.pageSize" :page-size="searchParam.pageSize"
:current-page="1" :current-page="searchParam.pageNum"
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
layout="prev, pager, next" layout="prev, pager, next"
:total="tableData.total"> :total="tableData.total">
...@@ -148,44 +187,43 @@ ...@@ -148,44 +187,43 @@
<el-dialog <el-dialog
class="popups" class="popups"
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
width="534px"> width="534px"
@close="resetForm('ruleForm')"
>
<div class="poptitle"> <div class="poptitle">
<img src="@/assets/images/economies/icon.png"> <img src="@/assets/images/economies/icon.png">
<span>添加客户</span> <span>添加客户</span>
</div> </div>
<div class="popform j"> <el-form class="popform j" :model="queryParam" :rules="rules" ref="ruleForm" label-width="130px">
<div class="row"> <el-form-item label="企业名称:" class="row" prop="companyName">
<span class="left"><i>*</i>企业名称:</span> <el-input type="text" placeholder="请输入" v-model="queryParam.companyName" @input="getCompany"></el-input>
<el-input type="text" placeholder="请输入"></el-input> <div class="resultlist" v-if="showlist">
<div v-for="(item,index) in companData" @click="selCompany(item)"><span v-html="item.name"></span></div>
</div> </div>
<div class="row"> </el-form-item>
<span class="left">客户等级:</span> <el-form-item label="客户等级:" class="row">
<el-select placeholder="请选择"> <el-select placeholder="请选择" v-model="queryParam.customerLevel">
<el-option v-for="(item,index) in customerLevel" :label="item.dictLabel" :value="item.dictValue"></el-option> <el-option v-for="(item,index) in customerLevel" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select> </el-select>
</div> </el-form-item>
<div class="row"> <el-form-item label="法定代表人:" class="row">
<span class="left">法定代表人:</span> <el-input type="text" placeholder="请输入" v-model="queryParam.legalPerson"></el-input>
<el-input type="text" placeholder="请输入"></el-input> </el-form-item>
</div> <el-form-item label="注册资本(万):" class="row">
<div class="row"> <el-input type="text" placeholder="请输入" v-model="queryParam.registerCapital" @input='number'></el-input>
<span class="left">注册资本(万):</span> </el-form-item>
<el-input type="text" placeholder="请输入"></el-input> <el-form-item label="企业注册地:" class="row">
</div> <el-cascader :props="props" @change="getAddr($event)" ref="address" v-model="queryParam.address" :options="addressList" clearable></el-cascader>
<div class="row"> </el-form-item>
<span class="left">企业注册地:</span> <el-form-item label="统一社会信用代码:" class="row">
<el-cascader :options="addressList" clearable></el-cascader> <el-input type="text" placeholder="请输入" v-model="queryParam.creditCode"></el-input>
</div> </el-form-item>
<div class="row">
<span class="left">统一社会信用代码:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="popbot"> <div class="popbot">
<div class="wordprimary">前往城投平台寻找客户线索></div> <div class="wordprimary">前往城投平台寻找客户线索></div>
<div class="btn btn_cancel h32" @click="cancel">返回</div> <div class="btn btn_cancel h32" @click="resetForm('ruleForm')">返回</div>
<div class="btn btn_primary h32">添加</div> <div class="btn btn_primary h32" @click="submitForm('ruleForm')">添加</div>
</div>
</div> </div>
</el-form>
</el-dialog> </el-dialog>
</el-card> </el-card>
</div> </div>
...@@ -193,25 +231,32 @@ ...@@ -193,25 +231,32 @@
<div class="upload" v-if="addfile==false"> <div class="upload" v-if="addfile==false">
<div class="up_title">批量导入客户</div> <div class="up_title">批量导入客户</div>
<div class="up_box"> <div class="up_box">
<el-upload v-if="isUpload == false" <el-upload :class="{'none':isUpload == true}"
class="upload-demo" class="upload-demo"
:action="action"
:multiple="false"
accept=".xls,.xlsx"
drag drag
action="https://jsonplaceholder.typicode.com/posts/" ref="upload"
multiple> :auto-upload="false"
:file-list="fileList"
:on-change="handleFileListChange"
:headers="headers"
:on-success="onSuccess">
<img class="up_img" src="@/assets/images/project/upload.png"> <img class="up_img" src="@/assets/images/project/upload.png">
<div class="up_text">点击选择或将文件(xls,xlsx)拖拽至此上传成员名录</div> <div class="up_text">点击选择或将文件(xls,xlsx)拖拽至此上传成员名录</div>
<div class="up_tip">导入的文件内容必须依照下载模板的要求填写</div> <div class="up_tip">导入的文件内容必须依照下载模板的要求填写</div>
<div class="up_tip">上传文件最大为2M,仅支持Excel表格文件(xls,xlsx)</div> <div class="up_tip">上传文件最大为2M,仅支持Excel表格文件(xls,xlsx)</div>
<div class="up_tip">导入已存在的客户将自动跳过</div> <div class="up_tip">导入已存在的客户将自动跳过</div>
</el-upload> </el-upload>
<div class="up_success" v-else> <div class="up_success" v-if="isUpload == true">
<img src="@/assets/images/project/success.png">上传成功 <img src="@/assets/images/project/success.png">上传成功
</div> </div>
<div class="btn_download" v-if="isUpload == true"><div class="img"></div>点击下载</div> <div class="btn_download" v-if="isUpload == false" @click="downloadClick"><div class="img"></div>点击下载</div>
</div> </div>
<div class="btns"> <div class="btns">
<div class="btn btn_primary btn_disabled h34" v-if="isUpload==false">确定导入</div> <div class="btn btn_primary btn_disabled h34" v-if="isUpload==false">确定导入</div>
<div class="btn btn_primary h34" @click="qddr" v-else>确定导入</div> <div class="btn btn_primary h34" @click="importConfirmClick" v-else>确定导入</div>
<div class="btn btn_default h34">取消</div> <div class="btn btn_default h34">取消</div>
</div> </div>
</div> </div>
...@@ -225,9 +270,9 @@ ...@@ -225,9 +270,9 @@
<div class="p3"> <div class="p3">
<img src="@/assets/images/project/success.png">查询成功 <img src="@/assets/images/project/success.png">查询成功
</div> </div>
<div class="p2">成功导入32家客户信息</div> <div class="p2">成功导入客户信息</div>
<div class="btns"> <div class="btns">
<div class="btn btn_primary h32">查看</div> <div class="btn btn_primary h32" @click="handleCurrentChange(1)">查看</div>
</div> </div>
</div> </div>
</div> </div>
...@@ -236,8 +281,9 @@ ...@@ -236,8 +281,9 @@
</template> </template>
<script> <script>
import { getToken } from "@/utils/auth";
import "@/assets/styles/project.scss" import "@/assets/styles/project.scss"
import {getCustomerList} from '@/api/custom/custom' import {getCustomerList,importData} from '@/api/custom/custom'
import {getEnterprise,getDictType,} from '@/api/main' import {getEnterprise,getDictType,} from '@/api/main'
import prvinceTree from '@/assets/json/provinceTree' import prvinceTree from '@/assets/json/provinceTree'
import axios from 'axios' import axios from 'axios'
...@@ -246,43 +292,50 @@ export default { ...@@ -246,43 +292,50 @@ export default {
data() { data() {
return{ return{
pldr: false, pldr: false,
serchParam:{ searchParam:{
companyName:'', companyName:'',
pageNum:1, pageNum:1,
pageSize:20 pageSize:20
}, },
props:{ checkStrictly: true, expandTrigger: 'hover' },
dialogVisible:false, dialogVisible:false,
textarea:"", textarea:"",
nowedit:-1,//当前正在编辑的文本 nowedit:-1,//当前正在编辑的文本
tipslit:[],//项目标签 tipslit:[],//项目标签
tipsvalue:"",//标签填写内容 tipsvalue:"",//标签填写内容
tableData: [ tableData: [],//列表
{
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄'
}, {
date: '2016-05-04',
name: '王小虎',
address: '上海市普陀区金沙江路 1517 弄'
}, {
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀区金沙江路 1519 弄'
}, {
date: '2016-05-03',
name: '王小虎',
address: '上海市普陀区金沙江路 1516 弄'
}
],
isUpload:false,//有上传的文件 isUpload:false,//有上传的文件
addfile:true,//已上传文件 addfile:false,//已上传文件
addsuccess:true,//已成功加入数据 addsuccess:false,//已成功加入数据
companData:[],//联想企业列表
customerLevel:[],//客户等级 customerLevel:[],//客户等级
addressList:[],//地区 addressList:[],//地区
//添加客户
queryParam:{
companyId:'',//jsk企业id
companyName:'',//客户名称(企业名称
customerLevel:'',//客户等级
legalPerson:'',//法定代表人
registerCapital:'',//注册资本
registerAddress:'',//企业注册地址
creditCode:'',//社会统一信用代码
address:'',//选择的地址
provinceId:'',
cityId:'',
districtId:'',
},
rules:{
companyName:[{ required: true, message: '请输入非空格字符!', trigger: 'blur' },]
},
//批量导入
action: process.env.VUE_APP_BASE_API + "/customer/importData",
fileList: [],
headers: {
Authorization: "Bearer " + getToken(),
},
isNew:true,
showlist:false,
} }
}, },
created() { created() {
...@@ -303,14 +356,10 @@ export default { ...@@ -303,14 +356,10 @@ export default {
this.isUpload = false this.isUpload = false
this.addsuccess = false this.addsuccess = false
}, },
qddr(){
this.addfile = true
this.addsuccess = false
},
//获取客户列表 //获取客户列表
getCustomerList(){ getCustomerList(){
getCustomerList(this.serchParam).then(result=>{ getCustomerList(this.searchParam).then(result=>{
this.tableData =result this.tableData = result
}) })
}, },
//跳转到客户详情 //跳转到客户详情
...@@ -323,16 +372,126 @@ export default { ...@@ -323,16 +372,126 @@ export default {
}, },
//翻页 //翻页
handleCurrentChange(val) { handleCurrentChange(val) {
this.serchParam.pageNum=val this.isNew = false
console.log(`当前页: ${val}`); this.searchParam.pageNum=val
}, this.getCustomerList()
cancel(){
this.dialogVisible = false
}, },
//打开新建窗口 //打开新建窗口
opennew(){ opennew(){
this.dialogVisible = true this.dialogVisible = true
}, },
getAddr(obj){
if(obj.length == 0){
this.queryParam.provinceId = ''
this.queryParam.cityId = ''
this.queryParam.districtId = ''
return false
}
let labelString = this.$refs.address.getCheckedNodes()[0].pathLabels.join("-");
this.queryParam.registerAddress = labelString
this.queryParam.provinceId = obj[0]
this.queryParam.cityId = obj.length>=1 ? obj[1]:''
this.queryParam.districtId = obj.length>=2 ? obj[2]:''
},
//获取建设库客户
getCompany(value){
if (value.length>=2){
let param = {
keyword:value,
page:{
limit:20,
page:1
}
}
getEnterprise(JSON.stringify(param)).then(result=>{
if(result.code != 200)
return
this.showlist = true
this.companData = result.data.list
})
}
},
selCompany(item){
console.log(item)
this.queryParam.companyId = item.jskEid
this.queryParam.companyName = item.name.replace(/<[^>]+>/g, '')
this.queryParam.legalPerson = item.legalPerson
this.queryParam.registerCapital = item.registeredCapitalStr
this.queryParam.creditCode = item.creditCode
this.queryParam.provinceId = item.provinceId
this.queryParam.cityId = item.cityId
this.queryParam.districtId = item.cityId
let list = []
if(item.provinceId != null && item.provinceId != "")
list.push(item.provinceId)
if(item.cityId != null && item.cityId != "")
list.push(item.cityId)
if(item.districtId != null && item.districtId != "")
list.push(item.districtId)
this.address = list
this.queryParam.registerAddress = item.registerAddress
this.showlist = false
},
//添加客户
submitForm(formName) {
if(this.queryParam.companyId=="" || this.queryParam.companyId == null){
this.$message.error({message:'请选择企业!',showClose:true})
return;
}
this.$refs[formName].validate((valid) => {
if (valid) {
} else {
}
});
},
resetForm(formName) {
this.queryParam = {
companyId:'',//jsk企业id
companyName:'',//客户名称(企业名称
customerLevel:'',//客户等级
legalPerson:'',//法定代表人
registerCapital:'',//注册资本
registerAddress:'',//企业注册地址
creditCode:'',//社会统一信用代码
address:'',//选择的地址
provinceId:'',
cityId:'',
districtId:'',
},
this.dialogVisible = false
this.showlist = false
},
// 批量导入
importConfirmClick() {
if (this.fileList.length > 0) {
this.$refs["upload"].submit();
this.getCustomerList();
this.addfile = true
} else {
this.$message("请先选择文件");
}
},
downloadClick() {
let a = document.createElement("a");
a.setAttribute("href", "/file/Template.xlsx");
a.setAttribute("download", "批量导入模版.xlsx");
document.body.appendChild(a);
a.click();
},
handleFileListChange(file, fileList) {
if (fileList.length > 0) {
this.fileList = [fileList[fileList.length - 1]];
this.isUpload = true
}
},
onSuccess(res, file, fileList) {
if(res.code == 200 )
this.addsuccess = true
else
this.$message.error({message:res.msg,showClose:true})
},
//地区 //地区
async prvinceTree() { async prvinceTree() {
...@@ -349,6 +508,7 @@ export default { ...@@ -349,6 +508,7 @@ export default {
this.addressList = prvinceTree; this.addressList = prvinceTree;
this.getadd(this.addressList) this.getadd(this.addressList)
}, },
//处理注册地数据
getadd(row) { getadd(row) {
this.addrcallback(row,this.getadd) this.addrcallback(row,this.getadd)
}, },
...@@ -360,6 +520,10 @@ export default { ...@@ -360,6 +520,10 @@ export default {
}) })
} }
}, },
//输入数字
number(value){
this.queryParam.registerCapital = value.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1')//输入6位小数
}
} }
} }
</script> </script>
...@@ -444,4 +608,5 @@ export default { ...@@ -444,4 +608,5 @@ export default {
padding-right: 26px; padding-right: 26px;
} }
} }
.none{display: none}
</style> </style>
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
<img src="@/assets/images/economies/icon.png"> <img src="@/assets/images/economies/icon.png">
<span>重庆市轨道交通3号线二期工程4标段施工总承包</span> <span>重庆市轨道交通3号线二期工程4标段施工总承包</span>
</div> </div>
<div class="popform"> <el-form class="popform" label-width="137px">
<div class="row"> <div class="row">
<span class="left">联系人姓名:</span> <span class="left">联系人姓名:</span>
<el-input type="text" placeholder="请输入"></el-input> <el-input type="text" placeholder="请输入"></el-input>
...@@ -83,7 +83,7 @@ ...@@ -83,7 +83,7 @@
<div class="btn btn_cancel h32" @click="cancel">返回</div> <div class="btn btn_cancel h32" @click="cancel">返回</div>
<div class="btn btn_primary h32">保存</div> <div class="btn btn_primary h32">保存</div>
</div> </div>
</div> </el-form>
</el-dialog> </el-dialog>
</div> </div>
......
<template> <template>
<div class="regionalEconomy"> <div class="regionalEconomy">
地区经济对比 <div class="flex-box query-box">
<div class="flex-box query-params">
<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 multiple collapse-tags class="form-content-width" placeholder="请选择">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.name" :value="item.value" />
</el-select>
</el-form-item>
</el-form>
</div>
<div class="flex-box query-ability">
<span class="flex-box"><img src="@/assets/images/ability_vs.png">地区经济对比</span>
<span class="flex-box"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
</div>
</div>
<div class="table-item">
<div class="table-title">
<span class="title">指标</span>
<span class="title">
<span class="address" v-if="value1">{{addressValue1}}<i class="el-icon-circle-close" @click="handleDelete(1)"></i></span>
<el-cascader
v-else
ref="address1"
:options="addressList"
:props="props"
v-model="value1"
@change="handleChange(1)"
placeholder="添加地区"></el-cascader>
</span>
<span class="title">
<span class="address" v-if="value2">{{addressValue2}}<i class="el-icon-circle-close" @click="handleDelete(2)"></i></span>
<el-cascader
v-else
ref="address2"
:options="addressList"
:props="props"
v-model="value2"
@change="handleChange(2)"
placeholder="添加地区"></el-cascader>
</span>
<span class="title">
<span class="address" v-if="value3">{{addressValue3}}<i class="el-icon-circle-close" @click="handleDelete(3)"></i></span>
<el-cascader
v-else
ref="address3"
:options="addressList"
:props="props"
v-model="value3"
@change="handleChange(3)"
placeholder="添加地区"></el-cascader>
</span>
<span class="title">
<span class="address" v-if="value4">{{addressValue4}}<i class="el-icon-circle-close" @click="handleDelete(4)"></i></span>
<el-cascader
v-else
ref="address2"
:options="addressList"
:props="props"
v-model="value4"
@change="handleChange(4)"
placeholder="添加地区"></el-cascader>
</span>
<span class="title">
<span class="address" v-if="value5">{{addressValue5}}<i class="el-icon-circle-close" @click="handleDelete(5)"></i></span>
<el-cascader
v-else
ref="address5"
:options="addressList"
:props="props"
v-model="value5"
@change="handleChange(5)"
placeholder="添加地区"></el-cascader>
</span>
</div>
<el-table
:data="getValues"
:show-header="false"
border
>
<el-table-column
v-for="(item, index) in getHeaders"
:key="index"
:prop="item"
:label="item"
width="16.7%"
>
</el-table-column>
</el-table>
</div>
</div> </div>
</template> </template>
<script> <script>
import dataRegion from '@/assets/json/dataRegion'
export default { export default {
name: 'comparison', name: 'comparison',
data() { data() {
return { return {
activeName: 'first' queryParams: {
year: '',
},
yearOptions: [
{ name: '2023年', value: '2023' },
{ name: '2022年', value: '2022' },
{ name: '2021年', value: '2021' },
],
tableData: [
{
zb:'',
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
{
zb:"",
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
{
zb:"",
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
{
zb:"",
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
{
zb:"",
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
],
headers: [
{
prop: 'name',
label: '经济',
},
{
prop: 'gdp',
label: 'GDP(亿元)',
},
{
prop: 'gdpzs',
label: 'GDP增速',
},
{
prop: 'rjgdp',
label: '人均GDP(元)',
},
{
prop: 'rjgdp',
label: '第一产业增加值(亿元)',
},
{
prop: 'rjgdp',
label: '第二产业增加值(亿元)',
},
{
prop: 'rjgdp',
label: '第三产业增加值(亿元)',
},
{
prop: 'rjgdp',
label: '人口(万人)',
},
{
prop: 'rjgdp',
label: '工业增加值(亿元)',
},
{
prop: 'rjgdp',
label: '工业总产值(亿元)',
},
{
prop: 'rjgdp',
label: '房地产开发投资(亿元)',
},
{
prop: 'rjgdp',
label: '进出口总额(亿美元)',
},
{
prop: 'rjgdp',
label: '社会消费品零售总额(亿元)',
},
{
prop: 'rjgdp',
label: '城镇居民人均可支配收入(元)',
},
{
prop: 'cz',
label: '财政',
},
{
prop: 'rjgdp',
label: '一般公共预算收入(亿元)',
},
{
prop: 'rjgdp',
label: '般公共预算收入增速',
},
{
prop: 'rjgdp',
label: '税收收入(亿元)',
},
{
prop: 'rjgdp',
label: '转移性收入(亿元)',
},
{
prop: 'rjgdp',
label: '上级补助收入(亿元)',
},
{
prop: 'rjgdp',
label: '一般公共预算支出(亿元)',
},
{
prop: 'rjgdp',
label: '政府性基金收入(亿元)',
},
{
prop: 'rjgdp',
label: '土地出让收入(亿元)',
},
{
prop: 'rjgdp',
label: '政府性基金支出(亿元)',
},
{
prop: 'rjgdp',
label: '国有资本经营收入(亿元)',
},
{
prop: 'rjgdp',
label: '国有资本经营支出(亿元)',
},
{
prop: 'zw',
label: '债务',
},
{
prop: 'rjgdp',
label: '地方政府债务余额(亿元)',
},
{
prop: 'rjgdp',
label: '一般债余额(亿元)',
},
{
prop: 'rjgdp',
label: '专项债余额(亿元)',
},
{
prop: 'rjgdp',
label: '地方政府债务限额(亿元)',
},
{
prop: 'rjgdp',
label: '城投平台有息债务(亿元)',
},
{
prop: 'rjgdp',
label: '财政自给率',
},
{
prop: 'rjgdp',
label: '负债率',
},
{
prop: 'rjgdp',
label: '负债率-宽口径',
},
{
prop: 'rjgdp',
label: '债务率',
},
{
prop: 'rjgdp',
label: '债务率-宽口径',
},
],
props: {
value: 'id',
},
addressList: [],
value1:'',
value2:'',
value3:'',
value4:'',
value5:'',
addressValue1:'',
addressValue2:'',
addressValue3:'',
addressValue4:'',
addressValue5:'',
} }
}, },
created() { created() {
this.dataRegion()
},
computed: {
getHeaders() {
return this.tableData.reduce((pre, cur, index) => pre.concat(`value${index}`), ['title'])
},
getValues() {
return this.headers.map(item => {
return this.tableData.reduce((pre, cur, index) => Object.assign(pre, {['value' + index]: cur[item.prop]}), {'title': item.label,});
});
}
}, },
methods: { methods: {
handleClick() { //地区
async dataRegion() {
// await axios.post("https://files.jiansheku.com/file/json/common/dataRegion.json", {}, {
// headers: {
// 'Content-Type': 'application/json'
// }
// }).then(res => {
// if (res.data.code == 200) {
// console.log(res.data.data)
// }
// })
var str = [];
for (let x = 0; x < 3; x++) {
for (let i = 0; i < dataRegion.length; i++) {
if (dataRegion[i].regionLevel == x + 1 && x + 1 == 1) {
str.push({
'id': dataRegion[i].id,
"label": dataRegion[i].regionName,
"short": dataRegion[i].short,
"value": dataRegion[i].parentId,
"children": []
});
} 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({
'id': dataRegion[i].id,
"label": dataRegion[i].regionName,
"short": dataRegion[i].short,
"value": dataRegion[i].parentId,
"children": []
});
}
}
} 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) {
str[j].children[k].children.push({
'id': dataRegion[i].id,
"label": dataRegion[i].regionName,
"short": dataRegion[i].short,
"value": dataRegion[i].parentId
// "children":[]
});
}
}
}
}
}
}
this.addressList = str;
},
handleChange(index) {
let arr = '';
switch (index) {
case 1:
arr = this.$refs.address1.getCheckedNodes()
break;
case 2:
arr = this.$refs.address2.getCheckedNodes()
break;
case 3:
arr = this.$refs.address3.getCheckedNodes()
break;
case 4:
arr = this.$refs.address4.getCheckedNodes()
break;
case 5:
arr = this.$refs.address5.getCheckedNodes()
break;
}
for (var i in arr) {
switch (index) {
case 1:
this.addressValue1=arr[i].pathLabels.join('-')
break;
case 2:
this.addressValue2=arr[i].pathLabels.join('-')
break;
case 3:
this.addressValue3=arr[i].pathLabels.join('-')
break;
case 4:
this.addressValue4=arr[i].pathLabels.join('-')
break;
case 5:
this.addressValue5=arr[i].pathLabels.join('-')
break;
}
}
},
handleDelete(index){
switch (index) {
case 1:
this.addressValue1='';
this.value1='';
break;
case 2:
this.addressValue2='';
this.value2='';
break;
case 3:
this.addressValue3='';
this.value3='';
break;
case 4:
this.addressValue4='';
this.value4='';
break;
case 5:
this.addressValue5='';
this.value5='';
break;
}
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.app-container{ .regionalEconomy{
padding: 0; width: 100%;
} background: #ffffff;
.eco-header{ padding: 16px 24px 16px 16px;
justify-content: space-between; margin-top: 12px;
height: 48px;
background: #FFFFFF;
border-radius: 4px; border-radius: 4px;
padding:0 16px; .el-form{
color: #232323; margin-left: 20px;
::v-deep .el-tabs{ .el-form-item{
height: 48px; margin: 0 !important;
line-height: 48px; .form-content-width{
.el-tabs__nav-wrap::after { width: 110px;
position: static !important;
} }
.el-tabs__header{
margin: 0;
.el-tabs__item{
padding: 0 16px;
font-size: 16px;
} }
.is-active{
font-weight: bold;
} }
.table-item{
margin-top: 22px;
::v-deep .el-table{
.el-table__body{
width: 100% !important;
/*.el-table__row:first-child{*/
/*.el-table__cell{*/
/*font-weight: bold;*/
/*color: #232323;*/
/*}*/
/*}*/
} }
} }
.location{ .table-title{
font-size: 14px; width: 100%;
color: #0081FF; display: flex;
/*justify-content:space-around;*/
border: 1px solid #E6EAF1;
border-bottom: 0;
.title{
display: inline-block;
width: 16.7%;
height: 50px;
background: #F0F3FA;
color: rgba(35,35,35,0.8);
font-size: 12px;
line-height: 50px;
padding:0 12px;
border-right: 1px solid #E6EAF1;
.address{
color: rgba(35,35,35,0.8);
i{ i{
margin-right: 6px; float: right;
font-size: 16px; color:#606163;
font-size: 15px;
line-height: 50px;
cursor: pointer;
}
}
::v-deep .el-cascader{
width: 120px;
}
}
.title:last-child{
border-right:0;
}
} }
} }
} }
......
...@@ -3,6 +3,13 @@ ...@@ -3,6 +3,13 @@
<div class="flex-box query-box"> <div class="flex-box query-box">
<div class="flex-box query-params"> <div class="flex-box query-params">
<span class="common-title">主要指标</span> <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="请选择年度">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.name" :value="item.value" />
</el-select>
</el-form-item>
</el-form>
</div> </div>
<div class="flex-box query-ability"> <div class="flex-box query-ability">
<span class="flex-box"><img src="@/assets/images/ability_excel.png">导出EXCEL</span> <span class="flex-box"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
...@@ -11,25 +18,27 @@ ...@@ -11,25 +18,27 @@
<div class="content"> <div class="content">
<div class="content-left"> <div class="content-left">
<div id="echarts" style="height: 400px"></div> <div id="echarts" style="height: 400px"></div>
<p class="tips"> 注:数据均来源于统计公报、统计年鉴,实际披露中由于部分地区最新年度数据不全,导致年份间数据差距较大</p>
</div> </div>
<div class="content-right"> <div class="content-right">
<el-table <el-table
v-loading="tableLoading" v-loading="tableLoading"
:data="tableData" :data="tableData"
height="440"
border border
highlight-current-row highlight-current-row
> >
<el-table-column label="序号" width="60" align="left"> <el-table-column label="序号" width="60" align="left">
<template slot-scope="scope">{{ pageIndex * pageSize - pageSize + scope.$index + 1 }}</template> <template slot-scope="scope">{{ pageIndex * pageSize - pageSize + scope.$index + 1 }}</template>
</el-table-column> </el-table-column>
<el-table-column label="产业类型" prop="type" width="200"></el-table-column> <el-table-column label="产业类型" prop="type"></el-table-column>
<el-table-column label="2022年"> <el-table-column label="2022年">
<el-table-column prop="je" label="金额(亿元)" sortable width="150"> </el-table-column> <el-table-column prop="je" label="金额(亿元)"> </el-table-column>
<el-table-column prop="zb" label="占比" sortable width="100"> </el-table-column> <el-table-column prop="zb" label="占比" sortable> </el-table-column>
</el-table-column> </el-table-column>
<el-table-column label="2021年"> <el-table-column label="2021年">
<el-table-column prop="province" label="金额(亿元)" sortable width="150"> </el-table-column> <el-table-column prop="province" label="金额(亿元)" sortable> </el-table-column>
<el-table-column prop="province" label="占比" sortable width="100"> </el-table-column> <el-table-column prop="province" label="占比" sortable > </el-table-column>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
...@@ -43,12 +52,36 @@ export default { ...@@ -43,12 +52,36 @@ export default {
name: 'industrialStructure', name: 'industrialStructure',
data() { data() {
return { return {
queryParams: {
year: '',
address: ''
},
yearOptions: [
{ name: '2023年', value: '2023' },
{ name: '2022年', value: '2022' },
{ name: '2021年', value: '2021' },
],
tableData:[ tableData:[
{ {
type:'直接控股', type:'房建工程',
je:'29,175.61', je:'29,175.61',
zb:'26%' zb:'26%'
} },
{
type:'市政工程',
je:'29,175.61',
zb:'26%'
},
{
type:'公路工程',
je:'29,175.61',
zb:'26%'
},
{
type:'机电工程',
je:'29,175.61',
zb:'26%'
},
], ],
tableLoading: false, tableLoading: false,
pageIndex: 1, pageIndex: 1,
...@@ -105,12 +138,16 @@ export default { ...@@ -105,12 +138,16 @@ export default {
return result return result
}, },
}, },
legend: {
data: this.data,
},
series: [ series: [
{ {
type: 'treemap', type: 'treemap',
top:'0',
left:'0',
right:'0',
bottom:'20',
breadcrumb: {
show: false // 是否显示下面的面包屑导航
},
data: this.data data: this.data
} }
] ]
...@@ -142,6 +179,13 @@ export default { ...@@ -142,6 +179,13 @@ export default {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
.content-left{ .content-left{
width: 46%;
.tips{
color: rgba(35,35,35,0.4);
font-size: 14px;
}
}
.content-right{
width: 50%; width: 50%;
} }
} }
......
...@@ -3,11 +3,36 @@ ...@@ -3,11 +3,36 @@
<div class="content content1"> <div class="content content1">
<div class="common-title">经济数据</div> <div class="common-title">经济数据</div>
<div class="content-box"> <div class="content-box">
<div>2022年GDP</div> <div class="item">
<div>2022年GDP增速</div> <div class="item-title"><i style="background: #4E8EFF;"></i>2022年GDP</div>
<div>2022年人口</div> <div class="item-count"><span>29,129.03 </span>亿<img src="@/assets/images/economies/icon_up.png"></div>
<div>2022年一般公共预算收入</div> <div id="echartsGDP" style="height: 75px;"></div>
<div>2000年地方政府债务余额</div> <div class="item-text up">较2021年上升<span>26.7%</span></div>
</div>
<div class="item">
<div class="item-title"><i style="background: #718AFF;"></i>2022年GDP增速</div>
<div class="item-count"><span>29,129.03 </span>亿<img src="@/assets/images/economies/icon_down.png"></div>
<div id="echartsZS" style="height: 75px;"></div>
<div class="item-text down">较2021年下降<span>26.7%</span></div>
</div>
<div class="item">
<div class="item-title"><i style="background: #3AD0D1;"></i>2022年人口</div>
<div class="item-count"><span>29,129.03 </span>亿<img src="@/assets/images/economies/icon_down.png"></div>
<div id="echartsRK" style="height: 75px;"></div>
<div class="item-text down">较2021年下降<span>26.7%</span></div>
</div>
<div class="item">
<div class="item-title"><i style="background: #FFBE5D;"></i>2022年一般公共预算收入</div>
<div class="item-count"><span>29,129.03 </span>亿<img src="@/assets/images/economies/icon_up.png"></div>
<div id="echartsSR" style="height: 75px;"></div>
<div class="item-text up">较2021年上升<span>26.7%</span></div>
</div>
<div class="item">
<div class="item-title"><i style="background: #FF8935;"></i>2000年地方政府债务余额</div>
<div class="item-count"><span>29,129.03 </span>亿<img src="@/assets/images/economies/icon_up.png"></div>
<div id="echartsYE" style="height: 75px;"></div>
<div class="item-text up">较2021年上升<span>26.7%</span></div>
</div>
</div> </div>
</div> </div>
<div class="content content2"> <div class="content content2">
...@@ -16,7 +41,8 @@ ...@@ -16,7 +41,8 @@
<span><img src="@/assets/images/economies/icon_1.png">下属辖区 <label>38</label><i></i></span> <span><img src="@/assets/images/economies/icon_1.png">下属辖区 <label>38</label><i></i></span>
<span><img src="@/assets/images/economies/icon_2.png">地方债余额 <label>10,567.32</label><i>亿</i></span> <span><img src="@/assets/images/economies/icon_2.png">地方债余额 <label>10,567.32</label><i>亿</i></span>
<span><img src="@/assets/images/economies/icon_3.png">专项债项目 <label>10</label><i></i></span> <span><img src="@/assets/images/economies/icon_3.png">专项债项目 <label>10</label><i></i></span>
<span><img src="@/assets/images/economies/icon_4.png">城投平台有息债务 <label>17,710.19</label><i>亿</i></span> <span><img src="@/assets/images/economies/icon_4.png">城投平台 <label>17</label><i></i></span>
<span><img src="@/assets/images/economies/icon_5.png">城投平台有息债务 <label>17,710.19</label><i>亿</i></span>
</div> </div>
</div> </div>
<div class="content content3"> <div class="content content3">
...@@ -48,6 +74,7 @@ ...@@ -48,6 +74,7 @@
</template> </template>
<script> <script>
import * as echarts from 'echarts';
export default { export default {
name: 'regionalEconomy', name: 'regionalEconomy',
data() { data() {
...@@ -242,10 +269,19 @@ export default { ...@@ -242,10 +269,19 @@ export default {
tableLoading: false, tableLoading: false,
pageIndex: 1, pageIndex: 1,
pageSize: 10, pageSize: 10,
tableDataTotal: 0 tableDataTotal: 0,
labelData:[2021,2022],
valData:[23201,35201]
} }
}, },
created() { created() {
this.$nextTick(()=>{
this.initChart()
this.initChart1()
this.initChart2()
this.initChart3()
this.initChart4()
})
}, },
computed: { computed: {
getHeaders() { getHeaders() {
...@@ -258,9 +294,303 @@ export default { ...@@ -258,9 +294,303 @@ export default {
} }
}, },
methods: { methods: {
handleClick() { initChart() {
let myChart = echarts.init(document.getElementById("echartsGDP"))
let option ={
tooltip: {
show:false
},
xAxis: {
type: 'category',
boundaryGap: false,
data: this.labelData,
show:false,
},
yAxis: {
type: 'value',
show:false,
},
grid: {
top:20,
// left:15,
// right:15,
bottom:0,
},
series: [
{
data: this.valData,
type: 'line',
smooth: true,
emphasis: {
disabled: true,
focus: 'none'
},
label: {
show: true,
position: 'top'
},
//设置折线颜色和粗细
lineStyle: {
width: 1,
color: "#4E8EFF",
},
itemStyle:{
color: "#4E8EFF",
},
//设置面积区域为渐变效果
areaStyle: {
color: echarts.graphic.LinearGradient(0, 1, 0, 0, [
{
offset: 0.2,
color: "#DFEAFF",
},
{
offset: 1,
color: "#5895FF",
},
]),
},
}
]
}
myChart.setOption(option);
},
initChart1(){
let myChartZS = echarts.init(document.getElementById("echartsZS"))
let option ={
tooltip: {
show:false
},
xAxis: {
type: 'category',
boundaryGap: false,
data: this.labelData,
show:false,
},
yAxis: {
type: 'value',
show:false,
},
grid: {
top:20,
bottom:0,
},
series: [
{
data: this.valData,
type: 'line',
smooth: true,
emphasis: {
disabled: true,
focus: 'none'
},
label: {
show: true,
position: 'top'
},
itemStyle:{
color: "#718AFF",
},
//设置折线颜色和粗细
lineStyle: {
width: 1,
color: "#718AFF",
},
//设置面积区域为渐变效果
areaStyle: {
color: echarts.graphic.LinearGradient(0, 1, 0, 0, [
{
offset: 0.2,
color: "#E3E8FF",
},
{
offset: 1,
color: "#5B76FD",
},
]),
},
}
]
}
myChartZS.setOption(option);
},
initChart2(){
let myChartRK = echarts.init(document.getElementById("echartsRK"))
let option ={
tooltip: {
show:false
},
xAxis: {
type: 'category',
boundaryGap: false,
data: this.labelData,
show:false,
},
yAxis: {
type: 'value',
show:false,
},
grid: {
top:20,
bottom:0,
},
series: [
{
data: this.valData,
type: 'line',
smooth: true,
emphasis: {
disabled: true,
focus: 'none'
},
label: {
show: true,
position: 'top'
},
//设置折线颜色和粗细
lineStyle: {
width: 1,
color: "#3AD0D1",
},
itemStyle:{
color: "#3AD0D1",
},
//设置面积区域为渐变效果
areaStyle: {
color: echarts.graphic.LinearGradient(0, 1, 0, 0, [
{
offset: 0.2,
color: "#D3F3F3",
},
{
offset: 1,
color: "#60D1D1",
},
]),
},
} }
]
}
myChartRK.setOption(option);
},
initChart3(){
let myChartSR = echarts.init(document.getElementById("echartsSR"))
let option ={
tooltip: {
show:false
},
xAxis: {
type: 'category',
boundaryGap: false,
data: this.labelData,
show:false,
},
yAxis: {
type: 'value',
show:false,
},
grid: {
top:20,
bottom:0,
},
series: [
{
data: this.valData,
type: 'line',
smooth: true,
emphasis: {
disabled: true,
focus: 'none'
},
label: {
show: true,
position: 'top'
},
//设置折线颜色和粗细
lineStyle: {
width: 1,
color: "#FFAE35",
},
itemStyle:{
color: "#FFBE5D",
},
//设置面积区域为渐变效果
areaStyle: {
color: echarts.graphic.LinearGradient(0, 1, 0, 0, [
{
offset: 0.2,
color: "#FFE9C6",
},
{
offset: 1,
color: "#FFB535",
},
]),
},
}
]
}
myChartSR.setOption(option);
},
initChart4(){
let myChartYE = echarts.init(document.getElementById("echartsYE"))
let option ={
tooltip: {
show:false
},
xAxis: {
type: 'category',
boundaryGap: false,
data: this.labelData,
show:false,
},
yAxis: {
type: 'value',
show:false,
},
grid: {
top:20,
bottom:0,
},
series: [
{
data: this.valData,
type: 'line',
smooth: true,
emphasis: {
disabled: true,
focus: 'none'
},
label: {
show: true,
position: 'top'
},
//设置折线颜色和粗细
lineStyle: {
width: 1,
color: "#FF8935",
},
itemStyle:{
color: "#FF8935",
},
//设置面积区域为渐变效果
areaStyle: {
color: echarts.graphic.LinearGradient(0, 1, 0, 0, [
{
offset: 0.2,
color: "#FEE5D2",
},
{
offset: 1,
color: "#FF8935",
},
]),
},
}
]
}
myChartYE.setOption(option);
},
} }
} }
</script> </script>
...@@ -279,8 +609,48 @@ export default { ...@@ -279,8 +609,48 @@ export default {
margin-top: 22px; margin-top: 22px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
div{ .item{
width: 19%; width: 19%;
.item-title{
font-size: 12px;
color: rgba(35,35,35,0.8);
i{
width: 2px;
height: 9px;
background: #718AFF;
display: inline-block;
margin-right: 4px;
}
}
.item-count{
color: #232323;
font-size: 14px;
margin-top: 16px;
margin-bottom: 6px;
span{
font-size: 24px;
}
img{
width: 20px;
height: 20px;
margin-left: 22px;
}
}
.item-text{
font-size: 14px;
margin-top: 8px;
color: rgba(35,35,35,0.8);
}
.up{
span{
color:#0CBC6D;
}
}
.down{
span{
color:#FF3C3C;
}
}
} }
} }
} }
...@@ -297,6 +667,7 @@ export default { ...@@ -297,6 +667,7 @@ export default {
width: 12px; width: 12px;
height: 12px; height: 12px;
margin-right: 4px; margin-right: 4px;
margin-bottom: -1px;
} }
label{ label{
font-weight: 700; font-weight: 700;
......
...@@ -4,15 +4,15 @@ ...@@ -4,15 +4,15 @@
<el-tabs v-model="activeName" @tab-click="handleClick"> <el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="地区经济" name="first"></el-tab-pane> <el-tab-pane label="地区经济" name="first"></el-tab-pane>
<el-tab-pane label="辖区经济" name="second"></el-tab-pane> <el-tab-pane label="辖区经济" name="second"></el-tab-pane>
<el-tab-pane label="地区经济对比" name="third"></el-tab-pane> <el-tab-pane label="产业结构" name="third"></el-tab-pane>
<el-tab-pane label="产业结构" name="four"></el-tab-pane> <el-tab-pane label="地区经济对比" name="four"></el-tab-pane>
</el-tabs> </el-tabs>
<div class="location"><i class="el-icon-location"></i>重庆市</div> <div class="location"><i class="el-icon-location"></i>重庆市</div>
</div> </div>
<RegionalEconomy v-if="activeName === 'first'"></RegionalEconomy> <RegionalEconomy v-if="activeName === 'first'"></RegionalEconomy>
<LocalEconomy v-if="activeName === 'second'"></LocalEconomy> <LocalEconomy v-if="activeName === 'second'"></LocalEconomy>
<Comparison v-if="activeName === 'third'"></Comparison> <IndustrialStructure v-if="activeName === 'third'"></IndustrialStructure>
<IndustrialStructure v-if="activeName === 'four'"></IndustrialStructure> <Comparison v-if="activeName === 'four'"></Comparison>
</div> </div>
</template> </template>
......
<template> <template>
<div class="app-container"> <div class="app-container enterprises">
区域企业 <div class="flex-box eco-header">
<el-tabs v-model="activeName">
<el-tab-pane label="本地企业" name="first"></el-tab-pane>
<el-tab-pane label="异地备案" name="second"></el-tab-pane>
</el-tabs>
<div class="location"><i class="el-icon-location"></i>重庆市</div>
</div>
<div class="content">
<div class="search">
<el-cascader
ref="address"
:options="aptitudeCodeList"
:props="props"
v-model="queryParams.codeStr"
placeholder="资质资格"
collapse-tags
clearable></el-cascader>
<el-input placeholder="输入企业名称关键词" v-model="queryParams.key">
<el-button slot="append">搜索</el-button>
</el-input>
<span class="total">{{tableDataTotal}}</span>
</div>
<div class="table-item">
<el-table
v-loading="tableLoading"
:data="tableData"
element-loading-text="Loading"
border
fit
highlight-current-row
>
<el-table-column label="序号" width="50" align="left" fixed>
<template slot-scope="scope">{{ pageIndex * pageSize - pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column label="公司名称" align="left" width="300">
<template slot-scope="scope">
<router-link to="" tag="a" class="a-link">{{ scope.row.name}}</router-link>
</template>
</el-table-column>
<el-table-column label="注册地区" prop="address" width="80"/>
<el-table-column label="资质资格" prop="cgfs" sortable width="120" align="right" />
<el-table-column label="专业人员" prop="cgfs" sortable width="130" align="right" />
<el-table-column label="中标业绩" prop="cgfs" sortable width="130" align="right" />
<el-table-column label="最大中标金额(万元)" prop="cgfs" sortable width="160" align="right" />
<el-table-column label="中标总金额(万元)" prop="cgfs" sortable width="160" align="right" />
<el-table-column label="四库业绩" prop="cgfs" sortable width="130" align="right" />
<el-table-column label="公路业绩" prop="cgfs" sortable width="130" align="right" />
<el-table-column label="水利业绩" prop="cgfs" sortable width="130" align="right" />
<el-table-column label="常合作业主" prop="cgfs" width="280" align="right" />
<el-table-column label="客户(个)" prop="cgfs" sortable width="130" align="right" />
<el-table-column label="供应商(个)" prop="cgfs" sortable width="130" align="right" />
<el-table-column label="常合作供应商" prop="cgfs" width="280" align="right" />
</el-table>
</div>
</div>
</div> </div>
</template> </template>
<script> <script>
import aptitudeCode from '@/assets/json/aptitudeCode'
export default { export default {
name: 'Enterprises', name: 'Enterprises',
data() { data() {
return { return {
activeName: 'first',
queryParams:{
key:'',
codeStr:''
},
props: {
value: 'id',
multiple: true,
checkStrictly:true,
label:'name',
children:'list',
expandTrigger:'hover'
},
tableData: [
{
dataId:'1',
cgrssqy:'100',
cgfs:'200',
address:'江北区',
name:'重庆市江北区国有资本投资运营管理集团有限公司'
}
],
tableLoading: false,
pageIndex: 1,
pageSize: 10,
tableDataTotal: 1,
aptitudeCodeList:[]
} }
}, },
created() { created() {
this.aptitudeCode()
}, },
methods: { methods: {
//资质Json
async aptitudeCode() {
// await axios.post("https://files.jiansheku.com/file/json/common/aptitudeCode.json", {}, {
// headers: {
// 'Content-Type': 'application/json'
// }
// }).then(res => {
// if (res.data.code == 200) {
// console.log(res.data.data)
// }
// })
console.log(aptitudeCode)
this.aptitudeCodeList=aptitudeCode
},
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.app-container{
padding: 0;
}
.enterprises{
.eco-header{
justify-content: space-between;
height: 48px;
background: #FFFFFF;
border-radius: 4px;
padding:0 16px;
color: #232323;
::v-deep .el-tabs{
height: 48px;
line-height: 48px;
.el-tabs__nav-wrap::after {
position: static !important;
}
.el-tabs__header{
margin: 0;
.el-tabs__item{
padding: 0 16px;
font-size: 16px;
}
.is-active{
font-weight: bold;
}
}
.el-tabs__content{
width: 100%;
}
}
.location{
font-size: 14px;
color: #0081FF;
i{
margin-right: 6px;
font-size: 16px;
}
}
}
.content{
background: #FFFFFF;
border-radius: 4px;
margin-top: 12px;
padding: 16px;
.search{
::v-deep .el-cascader{
width: 130px;
margin-right: 12px;
height: 32px;
.el-input{
width: 100%;
}
}
::v-deep .el-input{
width: 250px;
height: 32px;
.el-input-group__append{
width: 59px;
background: #F5F5F5;
color:#0081FF;
border-left: 0;
}
}
.total{
float: right;
color: #3D3D3D;
font-size: 12px;
line-height: 36px;
}
}
.table-item{
margin-top: 14px;
}
}
}
</style> </style>
...@@ -71,7 +71,7 @@ ...@@ -71,7 +71,7 @@
<el-table-column label="一般债余额(亿元)" prop="cgfs" width="160" align="left" /> <el-table-column label="一般债余额(亿元)" prop="cgfs" width="160" align="left" />
<el-table-column label="专项债余额(亿元)" prop="cgfs" width="160" align="left" /> <el-table-column label="专项债余额(亿元)" prop="cgfs" width="160" align="left" />
<el-table-column label="地方政府债务限额(亿元)" prop="cgfs" width="160" align="left" /> <el-table-column label="地方政府债务限额(亿元)" prop="cgfs" width="160" align="left" />
<el-table-column label="城投平台有息债务??(亿元)" prop="cgfs" width="160" align="left" > <el-table-column label="城投平台有息债务(亿元)" prop="cgfs" width="160" align="left" >
<template slot="header" slot-scope="scope"> <template slot="header" slot-scope="scope">
<span>城投平台有息债务(亿元) <span>城投平台有息债务(亿元)
<el-tooltip popper-class="tips" effect="light" content="城投平台有息债务是该地区行政区划下所有的城投公司的短期债务与长期债务合计。其中,短期债务=短期借款+一年内到期的非流动负债+应付短期债券,长期债务=长期借款+应付长期债券。" placement="top"> <el-tooltip popper-class="tips" effect="light" content="城投平台有息债务是该地区行政区划下所有的城投公司的短期债务与长期债务合计。其中,短期债务=短期借款+一年内到期的非流动负债+应付短期债券,长期债务=长期借款+应付长期债券。" placement="top">
......
<template> <template>
<div class="app-container"> <div class="app-container urban">
城投平台 <div class="content">
<div class="flex-box query-box">
<div class="flex-box query-params">
<span class="common-title">城投平台</span>
</div>
</div>
<div class="search">
<el-radio v-model="radio" label="1">含下属辖区</el-radio>
<el-radio v-model="radio" label="2">本级</el-radio>
<div class="search-box">
<span style="cursor: pointer;" @click="handleSearch">筛选<i class="el-icon-caret-bottom" style="color:rgba(35,35,35,0.4);margin-left: 5px"></i></span>
<div v-show="searchState" ref="showContent" class="search-main">
<div class="item">
<span class="wrap_label">行政等级</span>
<div class="item_ckquery">
<span :class="{color_text:xzdjCalss == ''}" @click="changeXZDJ('')">全部</span>
<template v-for="(item,index) in xzdj">
<span :class="{color_text:index+1 === xzdjCalss}" @click="changeXZDJ(index+1)">{{item.name}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">城投业务类型</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in typeList">
<span>{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">主体评级</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in ztpj">
<span>{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">股东背景</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in gdbj">
<span>{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">股权关系</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in gqgx">
<span>{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">平台重要性</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in pt">
<span>{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label" style="width: 78px;">开发区类别</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in lfqType">
<span>{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">更多筛选</span>
<div class="item_ckquery">
<span :class="addresslength>0?'select-active':''">注册地区{{addresslength>0?(addresslength+'项'):''}}</span>
<el-cascader ref="address" class="cascader-region" popper-class='cascader-region-addd'
@input="addressListbtn" v-model="addressType" :options="addressList" :props="props" collapse-tags></el-cascader>
</div>
</div>
</div>
</div>
<el-input class="search-input" placeholder="输入企业名称关键词" v-model="queryParams.key">
<template slot="prepend"><i class="el-icon-search"></i></template>
<el-button slot="append">搜索</el-button>
</el-input>
</div>
<div class="list-box">
<div class="item">
<div class="left">
<p>115<span></span></p>
<span>平台家数</span>
</div>
<img src="@/assets/images/urban/img1.png">
</div>
<div class="item">
<div class="left">
<p>18,737.90<span>亿元</span></p>
<span>授信余额</span>
</div>
<img src="@/assets/images/urban/img2.png">
</div>
<div class="item">
<div class="left">
<p>18,737.90<span>亿元</span></p>
<span>资产总额</span>
</div>
<img src="@/assets/images/urban/img3.png">
</div>
<div class="item">
<div class="left">
<p>18,737.90<span>亿元</span></p>
<span>营收账款</span>
</div>
<img src="@/assets/images/urban/img4.png">
</div>
<div class="item">
<div class="left">
<p>18,737.90<span>亿元</span></p>
<span>非标余额</span>
</div>
<img src="@/assets/images/urban/img5.png">
</div>
</div>
</div>
<div class="content">
<div class="flex-box query-box">
<div class="flex-box query-params">
<span class="common-title">主要指标</span>
</div>
<div class="flex-box query-ability">
<span class="flex-box"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
</div>
</div>
<div class="table-item">
<el-table
v-loading="tableLoading"
:data="tableData"
element-loading-text="Loading"
border
fit
highlight-current-row
>
<el-table-column label="序号" width="50" align="left" fixed>
<template slot-scope="scope">{{ pageIndex * pageSize - pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column prop="name" label="公司名称" width="250" fixed>
<template slot-scope="scope">{{ scope.row.name }}
<span class="table-span" style="color: #3D3D3D;" v-if="scope.row.state === 0"><img src="@/assets/images/urban/rl_icon1.png"/>认领</span>
<span class="table-span" style="color: rgba(35,35,35,0.4);" v-if="scope.row.state === 1"><img src="@/assets/images/urban/rl_icon2.png"/>已认领</span>
</template>
</el-table-column>
<el-table-column prop="value" label="区域" width="100" />
<el-table-column prop="pm" label="招标数量" sortable width="120" />
<el-table-column prop="bl" label="城投拿地" sortable width="140" />
<el-table-column prop="bl" label="供应商" sortable width="170" />
<el-table-column prop="bl" label="主体评级" sortable width="140" />
<el-table-column prop="bl" label="债券余额(亿元)" sortable width="140" />
<el-table-column prop="bl" label="行政级别" width="140" />
<el-table-column prop="bl" label="股东背景" width="140" />
<el-table-column prop="bl" label="股权关系" width="140" />
<el-table-column prop="bl" label="平台重要性" width="140" />
<el-table-column prop="bl" label="城投业务类型" width="140" >
<template slot="header" slot-scope="scope">
<span>城投业务类型
<el-tooltip popper-class="tips" effect="light" content=" 根据主营业务构成划分为土地开发整理、基础设施建设、交通建设运营、棚改保障房建设、公用事业等8大类型。" placement="top">
<i class="el-icon-warning-outline"></i>
</el-tooltip>
</span>
</template>
</el-table-column>
<el-table-column prop="bl" label="实控人" width="200" />
<el-table-column prop="bl" label="最新报告期" width="120" />
<el-table-column prop="bl" label="总资产(亿元)" sortable width="120" />
<el-table-column prop="bl" label="归母净资产(亿元)" sortable width="160" />
<el-table-column prop="bl" label="货币资金(亿元)" sortable width="160" />
<el-table-column prop="bl" label="土地资产(亿元)" sortable width="160" />
<el-table-column prop="bl" label="受限资产(亿元)" sortable width="160" />
<el-table-column prop="bl" label="应收账款(亿元)" sortable width="160" />
<el-table-column prop="bl" label="其他应收款(亿元)" sortable width="160" />
<el-table-column prop="bl" label="公益性&准公益性主营占比(%)" width="160" />
<el-table-column prop="bl" label="应收类款项来自政府占比(%)" width="160" />
<el-table-column prop="bl" label="政府补助(亿元)" width="120" />
<el-table-column prop="bl" label="专项应付款(亿元)" width="140" />
<el-table-column prop="bl" label="营业收入(亿元)" width="140" />
<el-table-column prop="bl" label="归母净利润(亿元)" width="140" />
<el-table-column prop="bl" label="净资产收益率(%)" width="140" />
<el-table-column prop="bl" label="经营现金流量净额(亿元)" width="160" />
<el-table-column prop="bl" label="筹资现金流量净额(亿元)" width="160" />
<el-table-column prop="bl" label="投资现金流量净额(亿元)" width="160" />
<el-table-column prop="bl" label="总负债(亿元)" width="160" />
<el-table-column prop="bl" label="有息债务(亿元)" width="160" />
<el-table-column prop="bl" label="有息债务/总负债(%)" width="160" />
<el-table-column prop="bl" label="资产负债率(%)" width="160" />
<el-table-column prop="bl" label="综合融资成本(%)" width="160" />
<el-table-column prop="bl" label="现金比率" width="160" />
<el-table-column prop="bl" label="现金流量比率" width="160" />
<el-table-column prop="bl" label="现金到期债务比" width="160" />
<el-table-column prop="bl" label="授信余额/全部债务(%)" width="160" />
<el-table-column prop="bl" label="EBITDA保障倍数" width="160" />
<el-table-column prop="bl" label="私募债余额占比(%)" width="160" />
<el-table-column prop="bl" label="一年内到期债权占比(%)" width="160" />
<el-table-column prop="bl" label="债券余额/有息债务(%)" width="160" />
<el-table-column prop="bl" label="借款余额(亿元)" width="160" />
<el-table-column prop="bl" label="借款/有息债务(%)" width="160" />
<el-table-column prop="bl" label="非标余额(亿元)" width="160" />
<el-table-column prop="bl" label="非标余额/有息债务(%)" width="160" />
<el-table-column prop="bl" label="对外担保金额(亿元)" width="160" />
<el-table-column prop="bl" label="对外担保比例(%)" width="160" />
<el-table-column prop="bl" label="所属开发区" width="160" />
<el-table-column prop="bl" label="开发区类别" width="160" />
</el-table>
</div>
<div class="pagination-box">
<el-pagination background :current-page="pageIndex" :page-size="pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
</div>
</div>
</div> </div>
</template> </template>
<script> <script>
import dataRegion from '@/assets/json/dataRegion'
export default { export default {
name: 'Urban', name: 'Urban',
data() { data() {
return { return {
queryParams:{
key:''
},
tableData:[
{
name:'重庆市江北区国有资本投资运营管理集团有限公司',
pm:'1/306',
value:'江北区',
bl:'129.386',
state:1
},
{
name:'重庆市江北区国有资本投资运营管理集团有限公司',
pm:'1/306',
value:'江北区',
bl:'129.386',
state:0
},
],
tableLoading: false,
pageIndex: 1,
pageSize: 10,
tableDataTotal: 120,
radio:'2',
xzdj:[
{
name:'省级',
key:1,
},
{
name:'地级市',
key:2,
},
{
name:'区县级',
key:3,
}
],
selected:[],
xzdjCalss:'',
typeList:['土地开发整理','基础设施建设','棚改保障房建设','公用事业','文化旅游','交通建设运营','产投平台'],
ztpj:['AAA','AA+','AA','A+','A','A-','BBB+','其他'],
gdbj:['政府','财政','国资委','其他'],
gqgx:['直接控股','间接控股'],
pt:['重要平台','主要平台','一般平台'],
lfqType:['国家级经开','国家级高新区','国家海关监管区域','国家级新区','国家边和区','其他国家级','省级新区','省级开发区'],
props: {
value: 'id',
multiple: true,
},
addressList: [],
addressType: [],
addresslength: 0,
searchState:false,
}
},
watch:{
searchState:{
handler(newVal, olVal) {
if (newVal) {
setTimeout(() => {
document.addEventListener('click', this.handleSearch);
}, 0);
} else {
document.removeEventListener('click', this.handleSearch);
}
}
} }
}, },
created() { created() {
this.dataRegion()
}, },
methods: { methods: {
//地区
async dataRegion() {
// await axios.post("https://files.jiansheku.com/file/json/common/dataRegion.json", {}, {
// headers: {
// 'Content-Type': 'application/json'
// }
// }).then(res => {
// if (res.data.code == 200) {
// console.log(res.data.data)
// }
// })
var str = [];
for (let x = 0; x < 3; x++) {
for (let i = 0; i < dataRegion.length; i++) {
if (dataRegion[i].regionLevel == x + 1 && x + 1 == 1) {
str.push({
'id': dataRegion[i].id,
"label": dataRegion[i].regionName,
"short": dataRegion[i].short,
"value": dataRegion[i].parentId,
"children": []
});
} 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({
'id': dataRegion[i].id,
"label": dataRegion[i].regionName,
"short": dataRegion[i].short,
"value": dataRegion[i].parentId,
"children": []
});
} }
}
} 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) {
str[j].children[k].children.push({
'id': dataRegion[i].id,
"label": dataRegion[i].regionName,
"short": dataRegion[i].short,
"value": dataRegion[i].parentId
// "children":[]
});
}
}
}
}
}
}
this.addressList = str;
},
// 重置页数
handleSizeChange(val) {
this.pageIndex = 1
this.pageSize = val
// this.querySubmit()
},
// 跳转指定页数
handleCurrentChange(val) {
this.pageIndex = val
// this.querySubmit()
},
handleSearch(event){
// this.searchState=!this.searchState;
let dom = this.$refs.showContent;
if (!dom.contains(event.target)) {
this.searchState = !this.searchState;
document.removeEventListener('click', this.handleSearch);
}
},
active(index, item) {
// this.selected.indexOf(item) 判断item下标是否为-1,
// 是-1则数组中匹配不到该数据,添加
// 不是-1则说明匹配到了,抹除
if (this.selected.indexOf(item) !== -1) {
this.selected.splice(this.selected.indexOf(item), 1); //取消
} else {
this.selected.push(item);//选中添加到数组里
}
console.log(JSON.parse(JSON.stringify(this.selected)));
},
changeXZDJ(index) {
this.xzdjCalss = index;
},
addressListbtn() {
let arr = this.$refs.address.getCheckedNodes();
let provinceCode = [],cityCode = [],countyCode = [];
for (var i in arr) {
if (arr[i].parent) {
if (!arr[i].parent.checked) {
arr[i].hasChildren && cityCode.push(arr[i].value);
!arr[i].hasChildren && countyCode.push(arr[i].value);
}
} else {
provinceCode.push(arr[i].value)
}
}
if (provinceCode.length > 0 || cityCode.length > 0 || countyCode.length > 0) {
this.addresslength = provinceCode.length + cityCode.length + countyCode.length;
} else {
this.addresslength = 0;
}
},
},
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.app-container{
padding: 0;
}
.urban{
.content{
background: #ffffff;
padding: 16px;
margin-bottom: 16px;
border-radius: 4px;
.search{
margin-top: 22px;
.search-box{
display: inline-block;
margin-right: 32px;
/*cursor: pointer;*/
color:#232323;
position: relative;
.search-main{
background: #ffffff;
box-shadow: 0px 4px 10px 0px rgba(0,0,0,0.1);
border-radius: 4px;
width: 880px;
height: 337px;
padding: 16px;
position: absolute;
top: 25px;
left: 0;
z-index: 99;
.item{
margin-bottom: 5px;
display: flex;
/*align-items: center;*/
font-size: 14px;
.wrap_label{
color: rgba(35,35,35,0.8);
margin-right: 12px;
line-height: 30px;
}
.item_ckquery{
position: relative;
span{
color: #232323;
padding: 5px 12px;
display: inline-block;
cursor: pointer;
}
.color_text{
background: #F3F4F5;
border-radius: 4px;
color: #0081FF;
}
.select-active{
color: #0081FF;
}
}
.cascader-region {
position: absolute;
left: 0;
top: -6px;
opacity: 0;
line-height: 22px;
}
}
}
}
::v-deep .search-input{
/*::v-deep .el-input{*/
width: 250px;
height: 32px;
.el-input-group__prepend:first-child{
padding: 0;
background-color:#ffffff;
border-right: 0;
padding-left: 8px;
i{
color:#0081FF;
}
}
.el-input__inner{
border-left: 0;
height: 32px;
line-height: 32px;
}
.el-input-group__append:last-child{
width: 60px;
padding: 0;
text-align: center;
background: #F5F5F5;
color:#0081FF;
border-left: 0;
}
/*}*/
}
}
.table-item{
margin-top: 22px;
}
.table-span{
img{
width: 16px;
height: 16px;
margin-bottom: -4px;
margin-right: 5px;
margin-left: 20px;
}
}
.list-box{
display: flex;
justify-content: space-between;
.item{
margin-top: 24px;
width: 19%;
height: 96px;
background: url("../../../assets/images/urban/icon_bg.png") no-repeat;
background-size: 100%;
.left{
margin-left: 16px;
float: left;
margin-top: 24px;
p{
font-size: 26px;
font-weight: 700;
margin: 0;
span{
margin-left: 3px;
}
}
span{
font-size: 14px;
color: #3D3D3D;
font-weight: 400;
}
}
img{
float: right;
margin-right: 16px;
width: 41px;
height: 42px;
margin-top: 27px;
}
}
}
}
}
</style> </style>
...@@ -84,6 +84,19 @@ ...@@ -84,6 +84,19 @@
</div> </div>
</div> </div>
</div> </div>
<div class="tables">
<div class="bottems">
<el-pagination
background
:page-size="pageSize"
:current-page="pageNum"
@current-change="handleCurrentChange"
layout="prev, pager, next"
:total="1000">
</el-pagination>
</div>
</div>
</div> </div>
</div> </div>
...@@ -100,6 +113,7 @@ ...@@ -100,6 +113,7 @@
<script> <script>
import "@/assets/styles/project.scss" import "@/assets/styles/project.scss"
import {getFollowList} from '@/api/custom/custom'
export default { export default {
props:{ props:{
types: { //当前组件展示类型 types: { //当前组件展示类型
...@@ -113,14 +127,36 @@ ...@@ -113,14 +127,36 @@
return{ return{
showtype:'', showtype:'',
isEdit:false, isEdit:false,
value:'' value:'',
pageNum:1,//页码
pageSize:20,
} }
}, },
created(){ created(){
this.showtype = this.types this.showtype = this.types
//客户管理跟进动态
if(this.showtype == 'gjdt'){
this.getGJDTlist()
}
console.log(this.types) console.log(this.types)
}, },
methods:{ methods:{
//跟进动态列表
getGJDTlist(){
let param = {
pageNum:this.pageNum,//页码
pageSize:this.pageSize,
}
getFollowList(param).then(result=>{
})
},
handleCurrentChange(val){
this.pageNum = val
if(this.showtype == 'gjdt'){
this.getGJDTlist()
}
},
getEdit(){ getEdit(){
this.isEdit = true; this.isEdit = true;
this.value = "" this.value = ""
...@@ -138,4 +174,8 @@ ...@@ -138,4 +174,8 @@
.delform{ .delform{
position: fixed; left:50%; top:50%; transform:translate(-50%,-50%) position: fixed; left:50%; top:50%; transform:translate(-50%,-50%)
} }
.tables{
margin-top: -26px;
padding-right: 0;
}
</style> </style>
...@@ -79,7 +79,7 @@ ...@@ -79,7 +79,7 @@
<img src="@/assets/images/economies/icon.png"> <img src="@/assets/images/economies/icon.png">
<span>重庆市轨道交通3号线二期工程4标段施工总承包</span> <span>重庆市轨道交通3号线二期工程4标段施工总承包</span>
</div> </div>
<div class="popform"> <el-form class="popform" label-width="137px">
<div class="row"> <div class="row">
<span class="left">联系人姓名:</span> <span class="left">联系人姓名:</span>
<el-input type="text" placeholder="请输入"></el-input> <el-input type="text" placeholder="请输入"></el-input>
...@@ -111,7 +111,7 @@ ...@@ -111,7 +111,7 @@
<div class="btn btn_cancel h32" @click="cancel">返回</div> <div class="btn btn_cancel h32" @click="cancel">返回</div>
<div class="btn btn_primary h32">保存</div> <div class="btn btn_primary h32">保存</div>
</div> </div>
</div> </el-form>
</el-dialog> </el-dialog>
</el-card> </el-card>
</div> </div>
......
...@@ -104,7 +104,7 @@ ...@@ -104,7 +104,7 @@
<img src="@/assets/images/economies/icon.png"> <img src="@/assets/images/economies/icon.png">
<span>新建相关企业-{{types==1?"业主单位":""}}{{types==2?"合作伙伴":""}}{{types==3?"竞争对手":""}}</span> <span>新建相关企业-{{types==1?"业主单位":""}}{{types==2?"合作伙伴":""}}{{types==3?"竞争对手":""}}</span>
</div> </div>
<div class="popform i"> <el-form class="popform i" label-width="85px">
<div class="row"> <div class="row">
<span class="left"><i>*</i>企业名称:</span> <span class="left"><i>*</i>企业名称:</span>
<el-input type="text" placeholder="请输入"></el-input> <el-input type="text" placeholder="请输入"></el-input>
...@@ -145,7 +145,7 @@ ...@@ -145,7 +145,7 @@
<div class="btn btn_cancel h32" @click="cancel">返回</div> <div class="btn btn_cancel h32" @click="cancel">返回</div>
<div class="btn btn_primary h32">添加</div> <div class="btn btn_primary h32">添加</div>
</div> </div>
</div> </el-form>
</el-dialog> </el-dialog>
</el-card> </el-card>
</div> </div>
......
...@@ -91,7 +91,7 @@ ...@@ -91,7 +91,7 @@
<img src="@/assets/images/economies/icon.png"> <img src="@/assets/images/economies/icon.png">
<span>新建商机</span> <span>新建商机</span>
</div> </div>
<div class="popform i"> <el-form class="popform i" label-width="85px">
<div class="row"> <div class="row">
<span class="left"><i>*</i>项目名称:</span> <span class="left"><i>*</i>项目名称:</span>
<el-input type="text" placeholder="请输入"></el-input> <el-input type="text" placeholder="请输入"></el-input>
...@@ -137,7 +137,7 @@ ...@@ -137,7 +137,7 @@
<div class="btn btn_cancel h32" @click="cancel">取消</div> <div class="btn btn_cancel h32" @click="cancel">取消</div>
<div class="btn btn_primary h32">新建商机</div> <div class="btn btn_primary h32">新建商机</div>
</div> </div>
</div> </el-form>
</el-dialog> </el-dialog>
</el-card> </el-card>
</div> </div>
......
...@@ -2,10 +2,8 @@ package com.dsk.system.service.impl; ...@@ -2,10 +2,8 @@ package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanException; import cn.hutool.core.bean.BeanException;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.map.MapUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsk.common.exception.ServiceException; import com.dsk.common.exception.ServiceException;
import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.common.utils.SecurityUtils; import com.dsk.common.utils.SecurityUtils;
import com.dsk.system.domain.customer.Customer; import com.dsk.system.domain.customer.Customer;
import com.dsk.system.domain.customer.CustomerUser; import com.dsk.system.domain.customer.CustomerUser;
...@@ -19,14 +17,12 @@ import com.dsk.system.mapper.CustomerUserMapper; ...@@ -19,14 +17,12 @@ import com.dsk.system.mapper.CustomerUserMapper;
import com.dsk.system.service.IBusinessInfoService; import com.dsk.system.service.IBusinessInfoService;
import com.dsk.system.service.ICustomerService; import com.dsk.system.service.ICustomerService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
......
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