Commit 5aae3656 authored by 远方不远's avatar 远方不远
parents 19359b8c 6ac417a2
...@@ -88,10 +88,12 @@ public class BusinessFileController extends BaseController { ...@@ -88,10 +88,12 @@ public class BusinessFileController extends BaseController {
//校验是否上传同名文件 //校验是否上传同名文件
File newFile = new File(filePath); File newFile = new File(filePath);
if (newFile.exists()) {
// 获取当前目录下的文件和文件夹 // 获取当前目录下的文件和文件夹
File[] files = newFile.listFiles(); File[] files = newFile.listFiles();
for (File allFile : files) { for (File allFile : files) {
if(filename.equals(allFile.getName())) return error("文件已存在"); if (filename.equals(allFile.getName())) return error("文件已存在");
}
} }
// 上传并返回文件全路径 // 上传并返回文件全路径
......
...@@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -68,7 +69,7 @@ public class CustomerController extends BaseController { ...@@ -68,7 +69,7 @@ public class CustomerController extends BaseController {
@RepeatSubmit @RepeatSubmit
public AjaxResult add(@RequestBody Customer customer) { public AjaxResult add(@RequestBody Customer customer) {
dealWithcustomerData(customer); dealWithcustomerData(customer);
return AjaxResult.success(baseService.add(customer)); return toAjax(baseService.add(customer));
} }
/** /**
...@@ -80,7 +81,13 @@ public class CustomerController extends BaseController { ...@@ -80,7 +81,13 @@ public class CustomerController extends BaseController {
public AjaxResult claim(@RequestBody Customer customer) { public AjaxResult claim(@RequestBody Customer customer) {
if (ObjectUtils.isEmpty(customer.getUipId())) throw new BeanException("城投uipId不能为空"); if (ObjectUtils.isEmpty(customer.getUipId())) throw new BeanException("城投uipId不能为空");
dealWithcustomerData(customer); dealWithcustomerData(customer);
return AjaxResult.success(baseService.add(customer)); boolean add = baseService.add(customer);
if (add) {
Map<String, Object> map = new HashMap<>();
map.put("customerId", customer.getCustomerId());
return AjaxResult.success(map);
}
return AjaxResult.error();
} }
private void dealWithcustomerData(Customer customer) { private void dealWithcustomerData(Customer customer) {
......
package com.dsk.web.controller.search.macroMarket; package com.dsk.web.controller.search.macroMarket;
import com.dsk.common.core.page.TableDataInfo; import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.ComposeQueryDto; import com.dsk.common.dtos.ComposeQueryDto;
import com.dsk.system.service.RegionalEnterprisesService; import com.dsk.system.service.RegionalEnterprisesService;
import com.dsk.web.controller.search.controller.PageQueryLimit;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
...@@ -24,7 +26,15 @@ public class RegionalEnterprisesController { ...@@ -24,7 +26,15 @@ public class RegionalEnterprisesController {
private RegionalEnterprisesService regionalEnterprisesService; private RegionalEnterprisesService regionalEnterprisesService;
@PostMapping("regional/page") @PostMapping("regional/page")
public TableDataInfo page(@RequestBody ComposeQueryDto compose) throws Exception{ public AjaxResult page(@RequestBody JSONObject object) throws Exception{
return regionalEnterprisesService.page(compose); ComposeQueryDto compose = JSONObject.parseObject(object.toJSONString(), ComposeQueryDto.class);
compose.getPage().setPage(compose.getPageNum());
compose.getPage().setLimit(compose.getPageSize());
compose.getPage().setField(compose.getField());
compose.getPage().setOrder(compose.getOrder());
if (PageQueryLimit.pageLimit(compose.getPage())){
return AjaxResult.error("翻页已达到上限");
}
return regionalEnterprisesService.enterprisePage(compose);
} }
} }
...@@ -168,7 +168,7 @@ export function bondPage(param) { ...@@ -168,7 +168,7 @@ export function bondPage(param) {
//区域企业 //区域企业
export function enterprise(param) { export function enterprise(param) {
return request({ return request({
url: '/enterprise/page', url: '/enterprises/regional/page',
method: 'POST', method: 'POST',
data: param data: param
}) })
......
...@@ -28,9 +28,7 @@ ...@@ -28,9 +28,7 @@
<el-table v-if="tableData.total > 0" <el-table v-if="tableData.total > 0"
:data="tableData.rows" :data="tableData.rows"
stripe border stripe border
style="width: 100%" style="width: 100%">
:default-sort = "{prop: 'date', order: 'descending'}"
>
<el-table-column <el-table-column
prop="index" prop="index"
label="序号" label="序号"
...@@ -428,8 +426,6 @@ export default { ...@@ -428,8 +426,6 @@ export default {
// //
// return; // return;
// } // }
console.log(this.queryParam)
return false
this.$refs[formName].validate((valid) => { this.$refs[formName].validate((valid) => {
if (valid) { if (valid) {
addCustomer(this.queryParam).then(result=>{ addCustomer(this.queryParam).then(result=>{
......
<template>
<div class="app-container operations-container">
<div class="common-title">基本信息</div>
<div class="part-swiper">
<div class="baseinfo">
<div class="row">
<div class="con">
<Elselects
title="企业性质"
:list="companyType.companyNaturelist"
:id="infos.customerId"
:val="infos.companyNature"
field="companyNature"
@changenowedit="clickNowedit" />
</div>
<div class="con i">
<Elselects
title="企业级别"
:list="companyType.companyLevellist"
:id="infos.customerId"
:val="infos.companyLevel"
field="companyLevel"
@changenowedit="clickNowedit" />
</div>
</div>
<div class="row">
<div class="con">
<span>企业母公司:</span>
<div class="inputxt" id="inputxt2">
<div class="flex" v-if="nowedit == noweditis && isDisabled == false" >
<el-input placeholder="待添加" v-model="superCompany"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL(superCompany)">确定</div>
<div class="cancels h28" @click="clickNowedit(-1)" style="">取消</div>
</div>
</div>
<span :class="{txt:!superCompany}" v-else @click="clickNowedit(noweditis)">{{superCompany||'待添加'}}</span>
</div>
</div>
<div class="con i">
<Elselects
title="上市公司"
:list="companyType.isOnlistlist"
:id="infos.customerId"
:val="infos.isOn"
field="isOn"
@changenowedit="clickNowedit" />
</div>
</div>
<div class="row">
<div class="con">
<Elselects
title="局级大客户"
:list="companyType.isOnlistlist"
:id="infos.customerId"
:val="infos.isMajor"
field="isMajor"
@changenowedit="clickNowedit" />
</div>
<div class="con i">
<Elselects
title="资信等级"
:list="companyType.creditLevellist"
:id="infos.customerId"
:val="infos.creditLevel"
field="creditLevel"
@changenowedit="clickNowedit" />
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { customerUpdate } from '@/api/detail/party-a/cooperate'
import Elselects from "./elselects"
export default {
name: "basicIinformation",
props: ['infos','companyType','nowedit','noweditis'],
components: {
Elselects,
},
data() {
return {
isDisabled:false,
isselect:false,
superCompany:this.infos.superCompany,
}
},
created(){
},
methods:{
editXMSL(val){
if(this.isDisabled == true)
return false
let params = {
customerId: this.infos.customerId,
superCompany: val,
}
this.clickNowedit(-1)
customerUpdate(params).then(res=>{
if (res.code == 200){
this.$message.success('修改成功!')
}else{
this.$message.error(res.msg)
}
})
},
clickNowedit(e){
this.$emit("focus-nowedit", e)
}
}
}
</script>
<style lang="scss" scoped>
.operations-container {
margin: 0;
padding: 24px 16px;
background: #FFFFFF;
border-radius: 4px;
.part-swiper {
position: relative;
margin-top: 16px;
}
}
.select-popper{
top: 3px;
}
.inputxt .flex{
background: #fff;
}
.baseinfo .row{
padding-left: 0;
}
</style>
<template>
<div class="">
<el-card class="box-card noborder">
<div class="cardtitles">{{ title }}</div>
<div class="baseinfo" >
<el-input id="inputxt9" v-model="val" @focus="focusNowedit(noweditis)" class="textarea" type="textarea" :placeholder="'请输入' + title" maxlength="500" :show-word-limit="true" ></el-input>
<div class="flex btns" v-if="nowedit == noweditis">
<div class="flex">
<div class="btnsmall btn_primary h28" @click="changes(val,field)" style="width: 56px">确定</div>
<div class="cancels h28" @click="focusNowedit(-1)" style="">取消</div>
</div>
</div>
</div>
</el-card>
</div>
</template>
<script>
import { customerUpdate } from '@/api/detail/party-a/cooperate'
export default {
name: "elCardinput",
props: ['infos','title','projectDetails','nowedit','noweditis','field'],
data() {
return {
val: this.projectDetails
}
},
created() {
},
methods: {
changes(v,n){
let data = {
customerId: this.infos.customerId,
}
data[n] = v
this.$emit("focus-nowedit", -1)
customerUpdate(data).then(res=>{
if (res.code == 200){
this.$message.success('修改成功!')
}else{
this.$message.error(res.msg)
}
})
},
focusNowedit(e){
this.$emit("focus-nowedit", e)
},
}
}
</script>
<style lang="scss" scoped>
</style>
<template>
<div class="baseinfoselect">
<span class="select-title">{{ title }}</span>
<div class="select-popper " >
<span :class="{'txt':selectTxt1.name == '待添加'}">
{{selectTxt1.name}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-if="isDisabled==false" v-model="selectTxt1.val" class="select-multiple" placeholder="请选择" @change="editXMSL($event)">
<el-option v-for="(item,index) in list" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</div>
</div>
</template>
<script>
import { customerUpdate } from '@/api/detail/party-a/cooperate'
export default {
name: "elselects",
props: [
'title',
'list',
'id',
'val',
'field'
],
data() {
return {
isDisabled:false,
selectTxt1:this.selectTxts(),
isselect: false
}
},
created(){
this.selectTxts()
},
methods:{
editXMSL(val){
let option = this.lists(val)
if (option) {
this.selectTxt1.name = option.dictLabel;
this.selectTxt1.val = option.val;
this.$emit("changenowedit", -1);
let params = {
customerId: this.id,
}
params[this.field] = val
customerUpdate(params).then(res=>{
if (res.code == 200){
this.$message.success('修改成功!')
}else{
this.$message.error(res.msg)
}
})
}
},
lists(val){
return this.list.find(option => option.dictValue === val);
},
selectTxts(){
let option = this.lists(this.val)
if (option) {
return {
name: option.dictLabel,
val: this.val
}
}else{
return {
name:'待添加',
val:'',
}
}
}
}
}
</script>
<style lang="scss" scoped>
.baseinfoselect{
.select-title{
color: rgba(35,35,35,0.8);
}
}
</style>
<template>
<div class="app-container info-container">
<div class="company-box">
<div class="company-nav flex-box">
<div class="company-left">
<img :src="companyInfo.logoUrl" :alt="companyInfo.companyName" :title="companyInfo.companyName" v-if="companyInfo.logoUrl">
<span
:class="companyInfo.nameSimple&&companyInfo.nameSimple.length<3?'conenctLogo textOne bg'+companyInfo.nameSimple.length:'conenctLogo textTwo bg'+companyInfo.nameSimple.length"
v-else-if="companyInfo.nameSimple"
v-html="companyInfo.nameSimple"></span>
<img :src="require('@/assets/images/detail/overview/logo@2x.png')" :alt="companyInfo.companyName" :title="companyInfo.companyName" v-else>
</div>
<div class="company-title">
<div class="company-name">
{{companyInfo.companyName || ''}}
</div>
<div class="company-tag">
<div style="float: left;margin-top: 8px;" class="company-history" v-if="companyInfo.historyNames && companyInfo.historyNames.length>0">
<el-popover
placement="bottom-start"
popper-class="enterpriseLabel-item"
trigger="hover">
<el-button slot="reference">曾用名 <i class="el-icon-caret-bottom"></i></el-button>
<ul class="history-item">
<li v-for="(item, index) in companyInfo.historyNames" :key="index">{{item.value}}</li>
</ul>
</el-popover>
</div>
<span style="float: left;" :class="!labelArr.includes(companyInfo.businessStatus)?'label-bg1':'label-bg3'" v-if="companyInfo.businessStatus">{{companyInfo.businessStatus}}</span>
</div>
</div>
</div>
<div class="company-info">
<div class="info-item flex-box">
<div class="flex-box item"><label>法定代表人:</label><span class="text-cl1">{{companyInfo.corporatePerson || '--'}}</span></div>
<div class="flex-box item"><label>统一社会信用代码:</label><span class="text-cl1">{{companyInfo.creditCode || '--'}}</span></div>
</div>
<div class="info-item flex-box">
<div class="flex-box item"><label>注册资本:</label><span class="text-cl1">{{companyInfo.regCapital || '--'}}</span></div>
<div class="flex-box item"><label>注册地址:</label><span class="text-cl1">{{companyInfo.addressDetail || '--'}}</span></div>
</div>
</div>
</div>
</div>
</template>
<script>
var Swiper = require('@/assets/lib/swiper/swiper-bundle.min.js')
export default {
name: "info",
props: ['companyId', 'companyInfo'],
data() {
return {
labelArr:['失信联合惩戒企业','司法纠纷','注销'], //负向经营状态
}
},
created() {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.info-container{
margin: 0;
padding: 0px 16px 10px 16px;
background: #FFFFFF;
border-radius: 4px;
.company-box{
width: 100%;
position: relative;
.company-nav{
align-items: normal;
.company-left{
width: 64px;
height: 64px;
margin-right: 12px;
flex-shrink: 0;
img{
width: 100%;
height: 100%;
border-radius: 4px;
overflow: hidden;
}
.conenctLogo{
width: 100%;
height: 100%;
color: #FFFFFF;
border-radius: 4px;
overflow: hidden;
text-align: center;
display: block;
&.textOne{
font-size: 18px;
line-height: 64px;
}
&.textTwo{
font-size: 18px;
padding: 9px 10px;
line-height: 24px;
}
&.bg1{
background: #99BE81;
}
&.bg2{
background: #76B4D4;
}
&.bg3{
background: #7A91D9;
}
&.bg4{
background: #8F8DD2;
}
&.bg5{
background: #C4A89F;
}
}
p{
font-size: 12px;
color: #999999;
text-align: center;
margin-top: 7px;
}
}
.company-title{
.company-name{
font-size: 20px;
color: #000000;
font-weight: bold;
margin-right: 100px;
}
.company-tag{
overflow: hidden;
font-size: 12px;
padding: 2px 0 10px 0;
.company-history, .company-highTech{
display: inline-block;
height: 22px;
background: #EFEFEF;
border-radius: 2px;
margin-right: 8px;
margin-left: 0;
button{
height: 22px;
line-height: 22px;
font-size: 12px;
padding: 0 8px;
background: #EFEFEF;
color: #838383;
border: 1px solid #EFEFEF;
border-radius: 2px;
}
}
.company-highTech{
button{
background: #DFEAFE;
color: #0065F9;
}
}
.enterpriseLabel-highTech{
background: #ffffff;
margin-top: 8px;
margin-right: 8px;
float: left;
}
>span{
display: inline-block;
height: 22px;
line-height: 22px;
padding: 0 8px;
border-radius: 2px;
margin-right: 8px;
margin-top: 8px;
&:last-child{
margin-right: 0;
}
}
.enterpriseLabel-span{
display: inline-block;
height: 22px;
line-height: 22px;
padding: 0 8px;
border-radius: 2px;
margin-right: 8px;
margin-top: 8px;
float: left;
}
.label-bg1{
background: #DEF6F0;
color: #0BAE8D;
}
.label-bg2{
background: #DFEAFE;
color: #0065F9;
}
.label-bg3{
background: #fbf2f1;
color: #fa5640;
}
}
}
}
.company-info{
background: #F5F9FE;
border-radius: 2px;
padding: 12px 10px 12px 16px;
.info-item{
margin-bottom: 12px;
&:last-child{
margin-bottom: 0;
}
.item-link{
color: #0081FF;
cursor: pointer;
font-size: 12px;
line-height: 20px;
&:hover{
color: #0069D0;
text-decoration: none;
}
}
.item{
font-size: 14px;
color: #333333;
&:first-child{
width: 280px;
}
&:nth-child(2){
//width: 350px;
}
&.item-line{
width: 100%;
align-items: flex-end;
.item-all{
width: calc(100% - 50px);
text-overflow: initial;
white-space: initial;
overflow: initial;
}
.item-more{
width: calc(100% - 50px);
}
}
label{
color: #666666;
flex-shrink: 0;
font-weight: 400;
}
span{
display: inline-block;
}
}
}
}
}
.history-item{
padding: 8px 8px;
li{
font-size: 12px;
color: #333333;
padding: 2px 0;
}
}
.enterpriseLabel-item{
padding: 0;
//width: 100%;
max-width: 276px;
margin-top: 8px !important;
}
.ml-4{
margin-left: 4px;
}
}
</style>
<template> <template>
<div class="app-container part-container"> <div class="app-container part-container">
<div style="background: #FFFFFF; height: 300px;"> <template v-if="isInfo">
商务信息 <!-- 企业信息 -->
<div class="view-content">
<Info :companyInfo="companyInfo" />
</div> </div>
<!-- 基本信息 -->
<div class="view-content">
<BasicIinformation
:infos="infos"
:companyType="companyType"
:nowedit="nowedit"
:noweditis="1"
@focus-nowedit="focusNowedits"/>
</div>
<!-- 发包属性 -->
<div class="view-content">
<ElCardinput
:infos="infos"
title="发包属性"
field="companyAttribute"
:projectDetails="infos.companyAttribute"
:nowedit="nowedit"
:noweditis="2"
@focus-nowedit="focusNowedits" />
</div>
<!-- 主营业务 -->
<div class="view-content">
<ElCardinput
:infos="infos"
title="主营业务"
field="mainBusiness"
:projectDetails="infos.mainBusiness"
:nowedit="nowedit"
:noweditis="3"
@focus-nowedit="focusNowedits" />
</div>
<!-- 经营范围 -->
<div class="view-content">
<ElCardinput
:infos="infos"
title="经营范围"
field="businessScope"
:projectDetails="infos.businessScope"
:nowedit="nowedit"
:noweditis="4"
@focus-nowedit="focusNowedits" />
</div>
</template>
</div> </div>
</template> </template>
<script> <script>
import { getDictType } from '@/api/main'
import { customerInfo } from '@/api/detail/party-a/cooperate'
import Info from "./component/info"
import BasicIinformation from "./component/basicIinformation"
import ElCardinput from "./component/elCardinput"
export default { export default {
name: 'Business', name: 'Business',
props: ['customerIds', 'companyInfo'],
components: {
Info,
BasicIinformation,
ElCardinput
},
data() { data() {
return { return {
isInfo:false,
infos:{},
projectDetails:'',
nowedit: -1,
companyType: {
companyNaturelist: [],//企业性质
companyLevellist: [],//企业级别
isOnlistlist:[
{
dictValue: 0,
dictLabel:'否',
},
{
dictValue: 1,
dictLabel:'是',
}
],//上市公司
isMajorlist:[
{
dictValue: 0,
dictLabel:'否',
},
{
dictValue: 1,
dictLabel:'是',
}
],//局级大客户
creditLevellist: [],//资信等级
}
} }
}, },
created() { created() {
this.customerInfos()
//企业性质
getDictType('company_nature_type').then(result=>{
this.companyType.companyNaturelist = result.code == 200 ? result.data:[]
})
//企业级别
getDictType('company_level_type').then(result=>{
this.companyType.companyLevellist = result.code == 200 ? result.data:[]
})
//资信等级
getDictType('credit_level_type').then(result=>{
this.companyType.creditLevellist = result.code == 200 ? result.data:[]
})
}, },
methods: { methods: {
customerInfos(){
customerInfo(this.customerIds).then(res=>{
this.infos = res.data
this.isInfo = true
})
},
focusNowedits(e){
this.nowedit = e
}
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.part-container{ .part-container{
margin: 0;
padding: 0; padding: 0;
.view-content{
margin-top: 16px;
} }
}
</style> </style>
...@@ -90,13 +90,14 @@ export default { ...@@ -90,13 +90,14 @@ export default {
{title: '开庭公告', pathName: 'openacourtsessionNotice'}, {title: '开庭公告', pathName: 'openacourtsessionNotice'},
// {title: '信用中国', pathName: ''} // {title: '信用中国', pathName: ''}
]}, ]},
// {title: '商务信息', pathName: 'business'}, {title: '商务信息', pathName: 'business'},
{title: '招标偏好', pathName: 'preference'}, {title: '招标偏好', pathName: 'preference'},
{title: '合作情况', pathName: 'cooperate'}, {title: '合作情况', pathName: 'cooperate'},
{title: '决策链条', pathName: 'decisionMaking'}, {title: '决策链条', pathName: 'decisionMaking'},
{title: '跟进记录', pathName: 'gjjl'} {title: '跟进记录', pathName: 'gjjl'}
], ],
customer:[ customer:[
'business',
'preference', 'preference',
'cooperate', 'cooperate',
'decisionMaking', 'decisionMaking',
......
...@@ -62,8 +62,8 @@ ...@@ -62,8 +62,8 @@
</template> </template>
</el-table> </el-table>
</div> </div>
<div class="pagination-box" v-if="paging && tableDataTotal>queryParams.pageSize"> <div class="pagination-box" v-if="show_page && tableDataTotal>queryParams.pageSize">
<el-pagination background :current-page="queryParams.pageNum" :page-size="queryParams.pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" /> <el-pagination background :current-page="current_page" :page-size="queryParams.pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
</div> </div>
</div> </div>
</template> </template>
...@@ -109,14 +109,29 @@ export default { ...@@ -109,14 +109,29 @@ export default {
type: Boolean, type: Boolean,
default: true default: true
}, },
MaxPage: { //最大页码
type: Number,
default: 1000000
},
}, },
data() { data() {
return { return {
current_page: this.queryParams.pageNum,
show_page: this.paging
} }
}, },
methods:{ methods:{
handleCurrentChange(e){ handleCurrentChange(e){
if(this.MaxPage<e){
this.show_page = false
this.$nextTick(() => {
this.current_page = this.queryParams.pageNum
this.$message.warning(`对不起,最多只能访问${this.MaxPage}页`)
this.show_page = true
})
}else{
this.$emit('handle-current-change',e) this.$emit('handle-current-change',e)
}
}, },
handleSizeChange(e){ handleSizeChange(e){
this.$emit('handle-current-change',e) this.$emit('handle-current-change',e)
......
...@@ -289,6 +289,7 @@ export default { ...@@ -289,6 +289,7 @@ export default {
this.addParam.customerId = this.queryParams.customerId this.addParam.customerId = this.queryParams.customerId
this.addParam.companyId = this.info.companyId this.addParam.companyId = this.info.companyId
this.addParam.userId = this.info.userId this.addParam.userId = this.info.userId
this.addParam.investmentAmount = this.addParam.investmentAmount ? this.addParam.investmentAmount : null
addProject(this.addParam).then(result=>{ addProject(this.addParam).then(result=>{
if(result.code == 200){ if(result.code == 200){
this.$message.success('添加成功!') this.$message.success('添加成功!')
......
...@@ -43,6 +43,8 @@ ...@@ -43,6 +43,8 @@
<CourtNotice v-if="currentPath.pathName=='courtNotice'" :company-id="companyId" /> <CourtNotice v-if="currentPath.pathName=='courtNotice'" :company-id="companyId" />
<OpenacourtsessionNotice v-if="currentPath.pathName=='openacourtsessionNotice'" :company-id="companyId" /> <OpenacourtsessionNotice v-if="currentPath.pathName=='openacourtsessionNotice'" :company-id="companyId" />
<template v-if="customerId"> <template v-if="customerId">
<!-- 商务信息 -->
<Business v-if="currentPath.pathName=='business'" :customer-ids="customerId" :companyInfo="companyInfo" />
<!-- 招标偏好 --> <!-- 招标偏好 -->
<Preference v-if="currentPath.pathName=='preference'" :customer-ids="customerId" /> <Preference v-if="currentPath.pathName=='preference'" :customer-ids="customerId" />
<!-- 合作情况 --> <!-- 合作情况 -->
...@@ -95,6 +97,7 @@ import Dishonesty from "./riskInformation/dishonesty" //风险信息-失信被 ...@@ -95,6 +97,7 @@ import Dishonesty from "./riskInformation/dishonesty" //风险信息-失信被
import Judgment from "./riskInformation/judgment" //风险信息-判决文书 import Judgment from "./riskInformation/judgment" //风险信息-判决文书
import CourtNotice from "./riskInformation/courtNotice" //风险信息-法院公告 import CourtNotice from "./riskInformation/courtNotice" //风险信息-法院公告
import OpenacourtsessionNotice from "./riskInformation/openacourtsessionNotice" //风险信息-开庭公告 import OpenacourtsessionNotice from "./riskInformation/openacourtsessionNotice" //风险信息-开庭公告
import Business from "./business" //商务信息
import Preference from "./preference" //招标偏好 import Preference from "./preference" //招标偏好
import Cooperate from "./cooperate" //合作情况 import Cooperate from "./cooperate" //合作情况
import DecisionMaking from "./decisionMaking" //决策链条 import DecisionMaking from "./decisionMaking" //决策链条
...@@ -134,6 +137,7 @@ export default { ...@@ -134,6 +137,7 @@ export default {
Judgment, Judgment,
CourtNotice, CourtNotice,
OpenacourtsessionNotice, OpenacourtsessionNotice,
Business,
Preference, Preference,
Cooperate, Cooperate,
DecisionMaking, DecisionMaking,
......
...@@ -60,7 +60,7 @@ export default { ...@@ -60,7 +60,7 @@ export default {
{name: '专项债项目', pathName: 'bond', ico: require("@//assets/images/detail/overview/clue_ico3.png"), count: 0, category:'performance', field:'specialDebt', dis_ico: require("@/assets/images/detail/overview/clue_dis_ico3.png")}, {name: '专项债项目', pathName: 'bond', ico: require("@//assets/images/detail/overview/clue_ico3.png"), count: 0, category:'performance', field:'specialDebt', dis_ico: require("@/assets/images/detail/overview/clue_dis_ico3.png")},
{name: '招标计划', pathName: 'biddingplan', ico: require("@/assets/images/detail/overview/clue_ico4.png"), count: 0, category:'performance', field:'bidPlan', dis_ico: require("@/assets/images/detail/overview/clue_dis_ico4.png")}, {name: '招标计划', pathName: 'biddingplan', ico: require("@/assets/images/detail/overview/clue_ico4.png"), count: 0, category:'performance', field:'bidPlan', dis_ico: require("@/assets/images/detail/overview/clue_dis_ico4.png")},
{name: '招标公告', pathName: 'announcement', ico: require("@/assets/images/detail/overview/clue_ico5.png"), count: 0, category:'business', field:'biddingAnnouncement', dis_ico: require("@/assets/images/detail/overview/clue_dis_ico5.png")}, {name: '招标公告', pathName: 'announcement', ico: require("@/assets/images/detail/overview/clue_ico5.png"), count: 0, category:'business', field:'biddingAnnouncement', dis_ico: require("@/assets/images/detail/overview/clue_dis_ico5.png")},
{name: '标讯Pro', pathName: 'tencent', ico: require("@/assets/images/detail/overview/clue_ico6.png"), count: 0, category:'business', field:'proCount', dis_ico: require("@/assets/images/detail/overview/clue_dis_ico6.png")}, {name: '标讯Pro', pathName: 'tencent', ico: require("@/assets/images/detail/overview/clue_ico6.png"), count: 0, category:'business', field:'proBiddingAnnouncement', dis_ico: require("@/assets/images/detail/overview/clue_dis_ico6.png")},
{name: '行政许可', pathName: 'administrative', ico: require("@/assets/images/detail/overview/clue_ico7.png"), count: 0, category:'business', field:'adminLicensing', dis_ico: require("@/assets/images/detail/overview/clue_dis_ico7.png")}, {name: '行政许可', pathName: 'administrative', ico: require("@/assets/images/detail/overview/clue_ico7.png"), count: 0, category:'business', field:'adminLicensing', dis_ico: require("@/assets/images/detail/overview/clue_dis_ico7.png")},
] ]
} }
......
...@@ -155,7 +155,7 @@ export default { ...@@ -155,7 +155,7 @@ export default {
showState: false, showState: false,
graphList: [ graphList: [
{id: 1, name:'业务往来', isShow:true, intro:[{id: 101, name:'客户', val:0, category:'global', field:'customer'},{id: 102, name:'供应商', val:0, category:'global', field:'supplier'}], ico:require('@/assets/images/detail/overview/company_ywwl.png')}, {id: 1, name:'业务往来', isShow:true, intro:[{id: 101, name:'客户', val:0, category:'global', field:'customer'},{id: 102, name:'供应商', val:0, category:'global', field:'supplier'}], ico:require('@/assets/images/detail/overview/company_ywwl.png')},
{id: 2, name:'商机线索', isShow:true, intro:[{id: 201, name:'专项债项目', val:0, category:'xxx', field:'yy'},{id: 202, name:'招标计划', val:0, category:'xxx', field:'zz'}], ico:require('@/assets/images/detail/overview/company_sjxs.png')}, {id: 2, name:'商机线索', isShow:true, intro:[{id: 201, name:'专项债项目', val:0, category:'performance', field:'specialDebt'},{id: 202, name:'招标计划', val:0, category:'performance', field:'bidPlan'}], ico:require('@/assets/images/detail/overview/company_sjxs.png')},
{id: 3, name:'城投拿地', isShow:true, intro:[{id: 301, name:'土地交易', val:0, category:'global', field:'landInfo'},{id: 302, name:'行政许可', val:0, category:'business', field:'adminLicensing'}], ico:require('@/assets/images/detail/overview/company_ctnd.png')}, {id: 3, name:'城投拿地', isShow:true, intro:[{id: 301, name:'土地交易', val:0, category:'global', field:'landInfo'},{id: 302, name:'行政许可', val:0, category:'business', field:'adminLicensing'}], ico:require('@/assets/images/detail/overview/company_ctnd.png')},
{id: 4, name:'对外投资', isShow:true, intro:[{id: 401, name:'企业经营实力展现'}], ico:require('@/assets/images/detail/overview/company_dwtz.png')}, {id: 4, name:'对外投资', isShow:true, intro:[{id: 401, name:'企业经营实力展现'}], ico:require('@/assets/images/detail/overview/company_dwtz.png')},
{id: 5, name:'股权穿透', isShow:true, intro:[{id: 501, name:'瞬息掌握企业关系'}], ico:require('@/assets/images/detail/overview/company_gqct.png')}, {id: 5, name:'股权穿透', isShow:true, intro:[{id: 501, name:'瞬息掌握企业关系'}], ico:require('@/assets/images/detail/overview/company_gqct.png')},
......
...@@ -107,7 +107,7 @@ ...@@ -107,7 +107,7 @@
<span class="money">359,800.00</span> <span class="money">359,800.00</span>
<span class="money">359,800.00</span> <span class="money">359,800.00</span>
</p> </p>
<el-progress :text-inside="true" :stroke-width="10" :percentage="70"></el-progress> <el-progress :text-inside="true" :stroke-width="14" :percentage="70"></el-progress>
</div> </div>
<div style="background: #ffffff;margin: 0 12px 12px 12px;"> <div style="background: #ffffff;margin: 0 12px 12px 12px;">
<div id="pm-echarts" style="height: 288px;"></div> <div id="pm-echarts" style="height: 288px;"></div>
...@@ -134,7 +134,7 @@ ...@@ -134,7 +134,7 @@
</div> </div>
</div> </div>
<div> <div>
<div id="fx-echarts" style="height: 260px;"></div> <div id="fx-echarts" style="height: 280px;"></div>
</div> </div>
</div> </div>
...@@ -271,6 +271,13 @@ ...@@ -271,6 +271,13 @@
<span>中标单位:中铁十二局集团</span> <span>中标单位:中铁十二局集团</span>
</p> </p>
</div> </div>
<div class="item">
<h3>太原市万柏林区2023年兴华街道老旧小区改造项目</h3>
<p>
<span>中标金额:4754.34</span>
<span>中标单位:中铁十二局集团</span>
</p>
</div>
</div> </div>
</div> </div>
<div v-if="user === 2" class="zbhxr"> <div v-if="user === 2" class="zbhxr">
...@@ -593,25 +600,28 @@ export default { ...@@ -593,25 +600,28 @@ export default {
//设置折线颜色和粗细 //设置折线颜色和粗细
lineStyle: { lineStyle: {
width: 2, width: 2,
color: "#0CBC6D", color: "#81D4BC",
}, },
itemStyle:{ itemStyle:{
color: "#0CBC6D", color: "#81D4BC",
}, },
//设置面积区域为渐变效果 //设置面积区域为渐变效果
areaStyle: { areaStyle: {
opacity:0.8, color: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [ type: 'linear',
{ x: 0,
offset: 0.2, y: 0,
color: "#EFFAF6", x2: 0,
}, y2: 1,
{ colorStops: [{
offset: 1, offset: 0, color: 'rgba(189, 249, 232, 1)'
color: "#9DDCCA", }, {
}, offset: 1, color: 'rgba(189, 249, 232, 0)'
]), } ],
global: false
}
}, },
}, },
{ {
data: this.jyfxData1.map(item => item.dcjzje), data: this.jyfxData1.map(item => item.dcjzje),
...@@ -625,24 +635,26 @@ export default { ...@@ -625,24 +635,26 @@ export default {
//设置折线颜色和粗细 //设置折线颜色和粗细
lineStyle: { lineStyle: {
width: 2, width: 2,
color: "#0081FF", color: "#9EE474",
}, },
itemStyle:{ itemStyle:{
color: "#4E8EFF", color: "#9EE474",
}, },
//设置面积区域为渐变效果 //设置面积区域为渐变效果
areaStyle: { areaStyle: {
opacity:0.8, color: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [ type: 'linear',
{ x: 0,
offset: 0.2, y: 0,
color: "#FAFDFF", x2: 0,
}, y2: 1,
{ colorStops: [{
offset: 1, offset: 0, color: 'rgba(208, 250, 183, 1)'
color: "#C5E3FF", }, {
}, offset: 1, color: 'rgba(208, 250, 183, 0)'
]), } ],
global: false
}
}, },
}, },
{ {
...@@ -657,24 +669,26 @@ export default { ...@@ -657,24 +669,26 @@ export default {
//设置折线颜色和粗细 //设置折线颜色和粗细
lineStyle: { lineStyle: {
width: 2, width: 2,
color: "#8077F2", color: "#E1B3FF",
}, },
itemStyle:{ itemStyle:{
color: "#8077F2", color: "#E1B3FF",
}, },
//设置面积区域为渐变效果 //设置面积区域为渐变效果
areaStyle: { areaStyle: {
opacity:0.8, color: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [ type: 'linear',
{ x: 0,
offset: 0.2, y: 0,
color: "#FAF9FF", x2: 0,
}, y2: 1,
{ colorStops: [{
offset: 1, offset: 0, color: 'rgba(233, 200, 255, 1)'
color: "#E2DCFF", }, {
}, offset: 1, color: 'rgba(233, 200, 255, 0)'
]), } ],
global: false
}
}, },
}, },
{ {
...@@ -689,24 +703,26 @@ export default { ...@@ -689,24 +703,26 @@ export default {
//设置折线颜色和粗细 //设置折线颜色和粗细
lineStyle: { lineStyle: {
width: 2, width: 2,
color: "#FA6C6C", color: "#ADC0FF",
}, },
itemStyle:{ itemStyle:{
color: "#FA6C6C", color: "#ADC0FF",
}, },
//设置面积区域为渐变效果 //设置面积区域为渐变效果
areaStyle: { areaStyle: {
opacity:0.8, color: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [ type: 'linear',
{ x: 0,
offset: 0.2, y: 0,
color: "#FDEAE8", x2: 0,
}, y2: 1,
{ colorStops: [{
offset: 1, offset: 0, color: 'rgba(173, 192, 255, 1)'
color: "#FDB2AE", }, {
}, offset: 1, color: 'rgba(173, 192, 255, 0)'
]), } ],
global: false
}
}, },
}, },
{ {
...@@ -721,24 +737,26 @@ export default { ...@@ -721,24 +737,26 @@ export default {
//设置折线颜色和粗细 //设置折线颜色和粗细
lineStyle: { lineStyle: {
width: 2, width: 2,
color: "#FA936C", color: "#67B3FD",
}, },
itemStyle:{ itemStyle:{
color: "#FA936C", color: "#67B3FD",
}, },
//设置面积区域为渐变效果 //设置面积区域为渐变效果
areaStyle: { areaStyle: {
opacity:0.8, color: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [ type: 'linear',
{ x: 0,
offset: 0.2, y: 0,
color: "#FCE8E0", x2: 0,
}, y2: 1,
{ colorStops: [{
offset: 1, offset: 0, color: 'rgba(192, 224, 255, 1)'
color: "#FBC4AF", }, {
}, offset: 1, color: 'rgba(192, 224, 255, 0)'
]), } ],
global: false
}
}, },
}, },
{ {
...@@ -753,24 +771,26 @@ export default { ...@@ -753,24 +771,26 @@ export default {
//设置折线颜色和粗细 //设置折线颜色和粗细
lineStyle: { lineStyle: {
width: 2, width: 2,
color: "#FDD85E", color: "#BEECFF",
}, },
itemStyle:{ itemStyle:{
color: "#FDD85E", color: "#BEECFF",
}, },
//设置面积区域为渐变效果 //设置面积区域为渐变效果
areaStyle: { areaStyle: {
opacity:0.8, color: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [ type: 'linear',
{ x: 0,
offset: 0.2, y: 0,
color: "#FCF8EF", x2: 0,
}, y2: 1,
{ colorStops: [{
offset: 1, offset: 0, color: 'rgba(165, 229, 255, 1)'
color: "#FEEBAA", }, {
}, offset: 1, color: 'rgba(165, 229, 255, 0)'
]), } ],
global: false
}
}, },
}, },
] ]
...@@ -796,6 +816,11 @@ export default { ...@@ -796,6 +816,11 @@ export default {
x:'center', x:'center',
y:'bottom', y:'bottom',
padding:[0,0,10,0], padding:[0,0,10,0],
itemWidth: 24,
itemHeight: 10,
textStyle:{
borderRadius:30,
}
}, },
yAxis: { yAxis: {
type: 'category', type: 'category',
...@@ -889,12 +914,13 @@ export default { ...@@ -889,12 +914,13 @@ export default {
name:'目标产值', name:'目标产值',
data: this.pmData.map(item => item.value), data: this.pmData.map(item => item.value),
type: 'bar', type: 'bar',
stack: 'total', // stack: 'total',
emphasis: { // emphasis: {
focus: 'series' // focus: 'series'
}, // },
itemStyle:{ itemStyle:{
color: '#14C9C9', color: '#14C9C9',
barBorderRadius:[0, 20, 20, 0]
}, },
barWidth: 16, barWidth: 16,
}, },
...@@ -903,12 +929,13 @@ export default { ...@@ -903,12 +929,13 @@ export default {
name:'已完成产值', name:'已完成产值',
data: this.pmData.map(item => item.value1), data: this.pmData.map(item => item.value1),
type: 'bar', type: 'bar',
stack: 'total', // stack: 'total',
emphasis: { // emphasis: {
focus: 'series' // focus: 'series'
}, // },
itemStyle:{ itemStyle:{
color: '#C3F6F6', color: '#C3F6F6',
barBorderRadius:[0, 20, 20, 0]
}, },
barWidth: 16, barWidth: 16,
}, },
...@@ -1140,10 +1167,10 @@ export default { ...@@ -1140,10 +1167,10 @@ export default {
::v-deep .el-progress-bar__outer{ ::v-deep .el-progress-bar__outer{
border: 1px solid #A2E8E8; border: 1px solid #A2E8E8;
background-color:#ffffff !important; background-color:#ffffff !important;
border-radius: 2px; border-radius: 20px;
.el-progress-bar__inner{ .el-progress-bar__inner{
background: linear-gradient(-270deg, #C3F6F6 0%, #14C9C9 100%); background: linear-gradient(-270deg, #C3F6F6 0%, #14C9C9 100%);
border-radius:0; border-radius: 20px;
.el-progress-bar__innerText{ .el-progress-bar__innerText{
color: #ffffff; color: #ffffff;
opacity: 0; opacity: 0;
...@@ -1261,7 +1288,7 @@ export default { ...@@ -1261,7 +1288,7 @@ export default {
} }
} }
.analysis{ .analysis{
height: 314px; height: 334px;
background: #FFFFFF; background: #FFFFFF;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
...@@ -1474,7 +1501,7 @@ export default { ...@@ -1474,7 +1501,7 @@ export default {
} }
} }
.zbgg{ .zbgg{
height: 450px; height: 470px;
background: #FFFFFF; background: #FFFFFF;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
......
...@@ -74,8 +74,8 @@ export default { ...@@ -74,8 +74,8 @@ export default {
return { return {
codeUrl: "", codeUrl: "",
loginForm: { loginForm: {
username: "admin", username: "",
password: "admin123", password: "",
rememberMe: false, rememberMe: false,
code: "", code: "",
uuid: "" uuid: ""
......
...@@ -227,7 +227,6 @@ export default { ...@@ -227,7 +227,6 @@ export default {
// return; // return;
// } // }
}); });
console.log(sums)
return sums; return sums;
}, },
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
<!--{{ scope.row.province}}{{scope.row.city ? '-': ''}}{{ scope.row.city}}{{scope.row.area ? '-': ''}}{{ scope.row.area}}--> <!--{{ scope.row.province}}{{scope.row.city ? '-': ''}}{{ scope.row.city}}{{scope.row.area ? '-': ''}}{{ scope.row.area}}-->
<!--</template>--> <!--</template>-->
<template slot-scope="scope"> <template slot-scope="scope">
<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 @click="childMethod(scope.row)" class="a-link" style="cursor: pointer;">{{ scope.row.province}}{{scope.row.city ? '-': ''}}{{ scope.row.city}}{{scope.row.area ? '-': ''}}{{ scope.row.area}}</span>
</template> </template>
</el-table-column> </el-table-column>
...@@ -37,14 +37,14 @@ ...@@ -37,14 +37,14 @@
<el-table-column prop="gdpGrowth" label="GDP增速" sortable width="100" :formatter="formatStatus"/> <el-table-column prop="gdpGrowth" label="GDP增速" sortable width="100" :formatter="formatStatus"/>
<el-table-column prop="gdpPerCapita" label="人均GDP(元)" sortable width="130" :formatter="formatStatus"/> <el-table-column prop="gdpPerCapita" label="人均GDP(元)" sortable width="130" :formatter="formatStatus"/>
<el-table-column prop="population" label="人口(万人)" sortable width="120" :formatter="formatStatus"/> <el-table-column prop="population" label="人口(万人)" sortable width="120" :formatter="formatStatus"/>
<el-table-column prop="fixedInvestment" label="固定资产投资 (亿元) " sortable width="170" :formatter="formatStatus"/> <el-table-column prop="fixedInvestment" label="固定资产投资 (亿元) " sortable width="200" :formatter="formatStatus"/>
<el-table-column prop="gbr" label="一般公共预算收入(亿元)" sortable width="180" :formatter="formatStatus"/> <el-table-column prop="gbr" label="一般公共预算收入(亿元)" sortable width="200" :formatter="formatStatus"/>
<el-table-column prop="gbe" label="一般公共预算支出(亿 元)" sortable width="190" :formatter="formatStatus"/> <el-table-column prop="gbe" label="一般公共预算支出(亿 元)" sortable width="200" :formatter="formatStatus"/>
<el-table-column prop="govFundIncome" label="政府性基金收入(亿元)" sortable width="180" :formatter="formatStatus"/> <el-table-column prop="govFundIncome" label="政府性基金收入(亿元)" sortable width="200" :formatter="formatStatus"/>
<el-table-column prop="govDebtBalance" label="地方政府债务余额(亿元)" sortable width="180" :formatter="formatStatus"/> <el-table-column prop="govDebtBalance" label="地方政府债务余额(亿元)" sortable width="200" :formatter="formatStatus"/>
<el-table-column prop="uipInterestBearingDebt" label="城投平台有息债务(亿元)" sortable width="180" :formatter="formatStatus"/> <el-table-column prop="uipInterestBearingDebt" label="城投平台有息债务(亿元)" sortable width="200" :formatter="formatStatus"/>
<el-table-column prop="fiscalSelfSufficiencyRate" label="财政自给率(%)" sortable width="120":formatter="formatStatus"/> <el-table-column prop="fiscalSelfSufficiencyRate" label="财政自给率(%)" sortable width="150" :formatter="formatStatus"/>
<el-table-column prop="govDebtRateWild" label="债务率-宽口径(%)" sortable :formatter="formatStatus"/> <el-table-column prop="govDebtRateWild" label="债务率-宽口径(%)" sortable width="170" :formatter="formatStatus"/>
</el-table> </el-table>
</div> </div>
<div class="pagination-box"> <div class="pagination-box">
...@@ -147,6 +147,18 @@ export default { ...@@ -147,6 +147,18 @@ export default {
message: '功能正在开发中', message: '功能正在开发中',
type: 'warning' type: 'warning'
}); });
},
childMethod(item) {
let data={}
data.provinceId=item.provinceId;
data.cityId=item.cityId;
data.areaId=item.areaId;
if(item.area){
data.province=item.area;
}else {
data.province=item.province;
}
this.$parent.handleClick('first',data);
} }
} }
} }
......
...@@ -96,6 +96,24 @@ export default { ...@@ -96,6 +96,24 @@ export default {
if(key === 'four'){ if(key === 'four'){
this.activeName='four' this.activeName='four'
} }
if(key === 'first'){
this.activeName='first'
}
if(item.cityId){
if(this.provinceId.length >= 2){
this.provinceId.splice(1, 1, item.cityId);
}else {
this.provinceId.push(item.cityId)
}
if(item.areaId){
if(this.provinceId.length >= 3){
this.provinceId.splice(2, 1, item.areaId);
}else {
this.provinceId.push(item.areaId)
}
}
this.province=item.province;
}
// sessionStorage.setItem('currentTab', this.activeName) // sessionStorage.setItem('currentTab', this.activeName)
}, },
//地区 //地区
......
...@@ -34,10 +34,10 @@ ...@@ -34,10 +34,10 @@
highlight-current-row highlight-current-row
v-if="tableDataTotal > 0" v-if="tableDataTotal > 0"
> >
<el-table-column label="序号" width="50" align="left" fixed> <el-table-column label="序号" width="60" align="left" fixed>
<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="公司名称" align="left" fixed> <el-table-column label="公司名称" align="left" fixed width="300">
<template slot-scope="scope"> <template slot-scope="scope">
<router-link v-if="scope.row.jskEid" :to="`/company/${encodeStr(scope.row.jskEid)}`" tag="a" class="a-link" v-html="scope.row.name" ></router-link> <router-link v-if="scope.row.jskEid" :to="`/company/${encodeStr(scope.row.jskEid)}`" tag="a" class="a-link" v-html="scope.row.name" ></router-link>
<span v-else v-html="scope.row.name" ></span> <span v-else v-html="scope.row.name" ></span>
...@@ -47,15 +47,15 @@ ...@@ -47,15 +47,15 @@
<el-table-column label="资质资格" prop="aptitudeCountNew" sortable="custom" width="120" :formatter="formatStatus"/> <el-table-column label="资质资格" prop="aptitudeCountNew" sortable="custom" width="120" :formatter="formatStatus"/>
<el-table-column label="专业人员" prop="persionCount" sortable="custom" width="120" :formatter="formatStatus"/> <el-table-column label="专业人员" prop="persionCount" sortable="custom" width="120" :formatter="formatStatus"/>
<el-table-column label="中标业绩" prop="recentlyCount" sortable="custom" width="120" :formatter="formatStatus"/> <el-table-column label="中标业绩" prop="recentlyCount" sortable="custom" width="120" :formatter="formatStatus"/>
<!--<el-table-column label="最大中标金额(万元)" prop="cgfs" sortable="custom" width="160" :formatter="formatStatus"/>--> <el-table-column label="最大中标金额(万元)" prop="bidMaxAmount" sortable="custom" width="170" :formatter="formatStatus"/>
<!--<el-table-column label="中标总金额(万元)" prop="cgfs" sortable="custom" width="160" :formatter="formatStatus"/>--> <el-table-column label="中标总金额(万元)" prop="bidSumAmount" sortable="custom" width="170" :formatter="formatStatus"/>
<el-table-column label="四库业绩" prop="skyCount" sortable="custom" width="120" :formatter="formatStatus"/> <el-table-column label="四库业绩" prop="skyCount" sortable="custom" width="120" :formatter="formatStatus"/>
<el-table-column label="公路业绩" prop="cgfs" sortable="custom" width="100" :formatter="formatStatus"/> <el-table-column label="公路业绩" prop="roadConservancy" sortable="custom" width="100" :formatter="formatStatus"/>
<el-table-column label="水利业绩" prop="cgfs" sortable="custom" width="100" :formatter="formatStatus"/> <el-table-column label="水利业绩" prop="waterConservancy" sortable="custom" width="100" :formatter="formatStatus"/>
<el-table-column label="常合作业主" prop="cgfs" width="130" :formatter="formatStatus"/> <el-table-column label="常合作业主" prop="topCustomer" width="150" :formatter="formatStatus"/>
<el-table-column label="客户(个)" prop="customerCount" sortable="custom" width="120" :formatter="formatStatus"/> <el-table-column label="客户(个)" prop="customerCount" sortable="custom" width="120" :formatter="formatStatus"/>
<el-table-column label="供应商(个)" prop="supplierCount" sortable="custom" width="130" :formatter="formatStatus"/> <el-table-column label="供应商(个)" prop="supplierCount" sortable="custom" :formatter="formatStatus"/>
<!--<el-table-column label="常合作供应商" prop="gys" width="120" :formatter="formatStatus"/>--> <el-table-column label="常合作供应商" prop="topSupplier" width="150" :formatter="formatStatus"/>
</el-table> </el-table>
<div class="empty" v-if="tableDataTotal === 0"> <div class="empty" v-if="tableDataTotal === 0">
<img class="img" src="@/assets/images/project/empty.png"> <img class="img" src="@/assets/images/project/empty.png">
......
...@@ -11,28 +11,28 @@ ...@@ -11,28 +11,28 @@
<div class="list"> <div class="list">
<div class="item color1"> <div class="item color1">
<div class="item-left"> <div class="item-left">
<h4>{{details.projectTotalInvestment || '-'}}<span>{{details.projectTotalInvestment ? '' : ''}}</span></h4> <h4>{{details.projectTotalInvestment || '-'}}<span>{{details.projectTotalInvestment ? '亿' : ''}}</span></h4>
<p>项目总投资额</p> <p>项目总投资额</p>
</div> </div>
<img class="img" src="@/assets/images/financing/icon1.png" /> <img class="img" src="@/assets/images/financing/icon1.png" />
</div> </div>
<div class="item color2"> <div class="item color2">
<div class="item-left"> <div class="item-left">
<h4>{{details.projectCapital || '-'}}<span>{{details.projectCapital ? '' : ''}}</span></h4> <h4>{{details.projectCapital || '-'}}<span>{{details.projectCapital ? '亿' : ''}}</span></h4>
<p>项目资本金</p> <p>项目资本金</p>
</div> </div>
<img class="img" src="@/assets/images/financing/icon2.png" /> <img class="img" src="@/assets/images/financing/icon2.png" />
</div> </div>
<div class="item color3"> <div class="item color3">
<div class="item-left"> <div class="item-left">
<h4>{{details.specialBondFinancing || '-'}}<span>{{details.specialBondFinancing ? '' : ''}}</span></h4> <h4>{{details.specialBondFinancing || '-'}}<span>{{details.specialBondFinancing ? '亿' : ''}}</span></h4>
<p>专项债融资</p> <p>专项债融资</p>
</div> </div>
<img class="img" src="@/assets/images/financing/icon3.png" /> <img class="img" src="@/assets/images/financing/icon3.png" />
</div> </div>
<div class="item color4"> <div class="item color4">
<div class="item-left"> <div class="item-left">
<h4>{{details.specialBondCapital || '-'}}<span>{{details.specialBondCapital ? '' : ''}}</span></h4> <h4>{{details.specialBondCapital || '-'}}<span>{{details.specialBondCapital ? '亿' : ''}}</span></h4>
<p>专项债用作资本金</p> <p>专项债用作资本金</p>
</div> </div>
<img class="img" src="@/assets/images/financing/icon4.png" /> <img class="img" src="@/assets/images/financing/icon4.png" />
...@@ -41,28 +41,28 @@ ...@@ -41,28 +41,28 @@
<div class="list"> <div class="list">
<div class="item color4"> <div class="item color4">
<div class="item-left"> <div class="item-left">
<h4>{{details.otherFunds || '-'}}<span>{{details.otherFunds ? '' : ''}}</span></h4> <h4>{{details.otherFunds || '-'}}<span>{{details.otherFunds ? '亿' : ''}}</span></h4>
<p>其他资金</p> <p>其他资金</p>
</div> </div>
<img class="img" src="@/assets/images/financing/icon5.png" /> <img class="img" src="@/assets/images/financing/icon5.png" />
</div> </div>
<div class="item color3"> <div class="item color3">
<div class="item-left"> <div class="item-left">
<h4>{{details.specialBondFinancingAmount || '-'}}<span>{{details.specialBondFinancingAmount ? '' : ''}} / {{details.specialBondIssueNumber || '-'}}{{details.specialBondIssueNumber ? '只' : ''}}</span></h4> <h4>{{details.specialBondFinancingAmount || '-'}}<span>{{details.specialBondFinancingAmount ? '亿' : ''}} / {{details.specialBondIssueNumber || '-'}}{{details.specialBondIssueNumber ? '只' : ''}}</span></h4>
<p>专项债融资额/专项债只数</p> <p>专项债融资额/专项债只数</p>
</div> </div>
<img class="img" src="@/assets/images/financing/icon6.png" /> <img class="img" src="@/assets/images/financing/icon6.png" />
</div> </div>
<div class="item color4"> <div class="item color4">
<div class="item-left"> <div class="item-left">
<h4>{{details.otherFinancing || '-'}}<span>{{details.otherFinancing ? '' : ''}}</span></h4> <h4>{{details.otherFinancing || '-'}}<span>{{details.otherFinancing ? '亿' : ''}}</span></h4>
<p>其他融资</p> <p>其他融资</p>
</div> </div>
<img class="img" src="@/assets/images/financing/icon7.png" /> <img class="img" src="@/assets/images/financing/icon7.png" />
</div> </div>
<div class="item color2"> <div class="item color2">
<div class="item-left"> <div class="item-left">
<h4>{{details.govSupportFunds || '-'}}<span>{{details.govSupportFunds ? '' : ''}}</span></h4> <h4>{{details.govSupportFunds || '-'}}<span>{{details.govSupportFunds ? '亿' : ''}}</span></h4>
<p>政府安排资金</p> <p>政府安排资金</p>
</div> </div>
<img class="img" src="@/assets/images/financing/icon8.png" /> <img class="img" src="@/assets/images/financing/icon8.png" />
...@@ -95,7 +95,7 @@ ...@@ -95,7 +95,7 @@
</p> </p>
<p> <p>
<label class="label">项目预测总收益</label> <label class="label">项目预测总收益</label>
<span>{{details.projectForecastTotalRevenue || '-'}}{{details.projectForecastTotalRevenue ? '' : ''}}</span> <span>{{details.projectForecastTotalRevenue || '-'}}{{details.projectForecastTotalRevenue ? '亿' : ''}}</span>
</p> </p>
</div> </div>
</div> </div>
...@@ -130,8 +130,8 @@ ...@@ -130,8 +130,8 @@
{{formatDate(scope.row.tenderDate)}} {{formatDate(scope.row.tenderDate)}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="actualBondIssueScale" label="专项债规模()" width="260" /> <el-table-column prop="actualBondIssueScale" label="专项债规模(亿)" width="260" />
<el-table-column prop="isUsedProjectScale" label="用于项目规模()" width="260" /> <el-table-column prop="isUsedProjectScale" label="用于项目规模(亿)" width="260" />
<el-table-column prop="isUsedCapital" label="是否资本金" width="200" /> <el-table-column prop="isUsedCapital" label="是否资本金" width="200" />
</el-table> </el-table>
</div> </div>
......
...@@ -52,11 +52,11 @@ ...@@ -52,11 +52,11 @@
<router-link :to="'/macro/financing/details/'+ scope.row.id" tag="a" class="a-link">{{ scope.row.projectName}}</router-link> <router-link :to="'/macro/financing/details/'+ scope.row.id" tag="a" class="a-link">{{ scope.row.projectName}}</router-link>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="projectTotalInvestment" label="项目总投资(万元)" :formatter="formatStatus" align="right" sortable="custom" width="165" /> <el-table-column prop="projectTotalInvestment" label="项目总投资(亿)" :formatter="formatStatus" align="right" sortable="custom" width="165" />
<el-table-column prop="projectCapital" label="项目资本金(万元)" :formatter="formatStatus" align="right" sortable="custom" width="155" /> <el-table-column prop="projectCapital" label="项目资本金(亿)" :formatter="formatStatus" align="right" sortable="custom" width="160" />
<el-table-column prop="econData007" label="项目收益倍数(倍)" :formatter="formatStatus" align="right" sortable="custom" width="150" /> <el-table-column prop="econData007" label="项目收益倍数(倍)" :formatter="formatStatus" align="right" sortable="custom" width="160" />
<!--<el-table-column prop="zxz" label="专项债金额(亿)" :formatter="formatStatus" sortable="custom" width="150" />--> <!--<el-table-column prop="zxz" label="专项债金额(亿)" :formatter="formatStatus" sortable="custom" width="150" />-->
<el-table-column prop="specialBondCapital" label="专项债用作资本金(万元)" align="right" sortable="custom" :formatter="formatStatus" width="180" /> <el-table-column prop="specialBondCapital" label="专项债用作资本金(亿)" align="right" sortable="custom" :formatter="formatStatus" width="180" />
<el-table-column prop="projectEntity" :formatter="formatStatus" label="项目主体"> <el-table-column prop="projectEntity" :formatter="formatStatus" label="项目主体">
<!--<template slot-scope="scope">--> <!--<template slot-scope="scope">-->
<!--<router-link :to="'/macro/financing/details/'+ scope.row.projectEntityId" tag="a" class="a-link">{{ scope.row.projectEntity}}</router-link>--> <!--<router-link :to="'/macro/financing/details/'+ scope.row.projectEntityId" tag="a" class="a-link">{{ scope.row.projectEntity}}</router-link>-->
......
...@@ -104,7 +104,7 @@ ...@@ -104,7 +104,7 @@
</el-table-column> </el-table-column>
<el-table-column prop="label" label="月份"/> <el-table-column prop="label" label="月份"/>
<el-table-column prop="count" sortable label="招标数量" align="right"/> <el-table-column prop="count" sortable label="招标数量" align="right"/>
<el-table-column prop="rate" sortable label="占比" align="right"/> <el-table-column prop="rate" sortable label="占比(%)" align="right"/>
</el-table> </el-table>
</div> </div>
</div> </div>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<div class="main1"> <div class="main1">
<div style="height: 300px;"> <div style="height: 300px;">
<div class="left"> <div class="left">
<div class="item" v-for="(item,index) in glData" :class="typeIndex === index ? 'color':''" @click="handleClick(1,index)">{{item.major}}<i></i></div> <div class="item" v-for="(item,index) in glData" :class="typeIndex === index ? 'color':''" @click="handleClick(1,index)">{{item.major}}企业<i></i></div>
</div> </div>
<div class="right"> <div class="right">
<div id="gl-echarts" style="height: 260px;background: #ffffff;"></div> <div id="gl-echarts" style="height: 260px;background: #ffffff;"></div>
...@@ -232,7 +232,7 @@ export default { ...@@ -232,7 +232,7 @@ export default {
for (let i=0; i<res.data.length; i++){ for (let i=0; i<res.data.length; i++){
res.data[i].levelList=res.data[i].levelList.reverse(); res.data[i].levelList=res.data[i].levelList.reverse();
let item={}; let item={};
item.major=res.data[i].major; item.major=res.data[i].major+'施工总承包';
for (let j=0; j<res.data[i].levelList.length; j++){ for (let j=0; j<res.data[i].levelList.length; j++){
if(res.data[i].levelList[j].levelValue === '特级'){ if(res.data[i].levelList[j].levelValue === '特级'){
item.tjCount=res.data[i].levelList[j].count; item.tjCount=res.data[i].levelList[j].count;
......
...@@ -244,7 +244,11 @@ ...@@ -244,7 +244,11 @@
<el-dialog :visible.sync="claimVisible" width="244" :show-close="false"> <el-dialog :visible.sync="claimVisible" width="244" :show-close="false">
<div>认领成功,是否完善客户信息?</div> <div>认领成功,是否完善客户信息?</div>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="innerVisible = true">立即完善</el-button> <el-button @click="innerVisible = true">
<router-link :to="`/enterprise/${encodeStr(companyId)}?customerId=${customerId}`" tag="a" >
立即完善
</router-link>
</el-button>
<el-button @click="claimVisible = false">稍后</el-button> <el-button @click="claimVisible = false">稍后</el-button>
</div> </div>
</el-dialog> </el-dialog>
...@@ -288,6 +292,8 @@ export default { ...@@ -288,6 +292,8 @@ export default {
typeList:[], typeList:[],
statistics:{}, statistics:{},
claimVisible:false, claimVisible:false,
customerId:'',
companyId:'',
} }
}, },
watch:{ watch:{
...@@ -386,7 +392,7 @@ export default { ...@@ -386,7 +392,7 @@ export default {
this.tableData = res.data.list; this.tableData = res.data.list;
this.tableDataTotal = res.data.totalCount this.tableDataTotal = res.data.totalCount
}) })
urbanInvestmentStatistics(param).then(res => { urbanInvestmentStatistics(params).then(res => {
this.statistics=res.data; this.statistics=res.data;
}) })
}, },
...@@ -581,9 +587,11 @@ export default { ...@@ -581,9 +587,11 @@ export default {
}); });
}, },
handleClick(item){ handleClick(item){
this.companyId=item.companyId
claim({uipId:item.uipId,companyName:item.companyName}).then(res => { claim({uipId:item.uipId,companyName:item.companyName}).then(res => {
if(res.code === 200){ if(res.code === 200){
this.claimVisible=true; this.claimVisible=true;
this.customerId=res.data.customerId;
} }
}) })
}, },
......
...@@ -226,7 +226,7 @@ ...@@ -226,7 +226,7 @@
}, },
selCompany(item){ selCompany(item){
this.queryParam.companyId = item.jskEid this.queryParam.companyId = item.jskEid
this.queryParam.ownerCompany = item.name.replace(/<[^>]+>/g, '') this.queryParam.companyName = item.name.replace(/<[^>]+>/g, '')
this.showlist = false this.showlist = false
}, },
handleALL(event){ handleALL(event){
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
<div class="con i" style="width: 100%;"> <div class="con i" style="width: 100%;">
<span style="float: left;margin-top: 2px">项目标签 :</span> <span style="float: left;margin-top: 2px">项目标签 :</span>
<div class="flex tipinput"> <div class="flex tipinput">
<div class="tips" v-for="(item,index) in tipslit">{{item}}<img v-if="disabled == false" @click="deltip(item)" src="@/assets/images/project/del.png"></div> <div class="tips" v-for="(item,index) in tipslit">{{item.label}}<img v-if="isDisabled == false" @click="deltip(item)" src="@/assets/images/project/del.png"></div>
<div style="position: relative"> <div style="position: relative">
<el-input placeholder="待添加" :disabled="isDisabled" 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>
...@@ -323,10 +323,10 @@ ...@@ -323,10 +323,10 @@
}) })
// this.tipslit.push(this.tipsvalue) // this.tipslit.push(this.tipsvalue)
}, },
deltip(value){ deltip(item){
let param={ let param={
businessId:this.id, businessId:this.id,
label:value id:item.id
} }
removeLabel(JSON.stringify(param)).then(res=>{ removeLabel(JSON.stringify(param)).then(res=>{
if (res.code == 200){ if (res.code == 200){
...@@ -341,7 +341,11 @@ ...@@ -341,7 +341,11 @@
getXMSL(){ getXMSL(){
getXMSL(this.id).then(result=> { getXMSL(this.id).then(result=> {
this.xmjd = result.data.projectStage this.xmjd = result.data.projectStage
this.tipslit = result.data.labelList if(result.data.labelList == null || result.data.labelList == "" || result.data.labelList == undefined){
this.tipslit = []
}else {
this.tipslit = JSON.parse(result.data.labelList)
}
this.xmsldata = result.data this.xmsldata = result.data
this.isDisabled = result.data.isFounder == 1 ? false:true this.isDisabled = result.data.isFounder == 1 ? false:true
const spanStyle = document.querySelector(".rig1"); const spanStyle = document.querySelector(".rig1");
......
...@@ -9,7 +9,21 @@ ...@@ -9,7 +9,21 @@
<el-input type="text" v-model="param.keyword" clearable placeholder="输入关键词查询"></el-input> <el-input type="text" v-model="param.keyword" clearable placeholder="输入关键词查询"></el-input>
<div class="btn" @click="handleCurrentChange(1)">搜索</div> <div class="btn" @click="handleCurrentChange(1)">搜索</div>
</div> </div>
<div class="btn btn_primary h32 b2" @click="getUP"><div class="img img2"></div>上传</div> <!--<div class="btn btn_primary h32 b2" @click="getUP" v-if="fileDatas.total>0"><div class="img img2"></div>上传</div>-->
<div class="btn btn_primary h32 b2" v-if="fileDatas.total>0"><div class="img img2"></div>
<el-upload
class="upload-demo"
:action="action"
:on-change="handleFileListChange"
:multiple="false"
ref="upload"
:file-list="fileList"
accept=".word,.pdf.excel,.xlsx,.doc,.docx"
:headers="headers"
:show-file-list="false"
:on-success="onSuccess">
上传
</el-upload></div>
</div> </div>
<div class="filepath" v-if="filename"><font @click="getall">全部</font> / <span> <img class="img" src="@/assets/images/folder.png">{{filename}}</span></div> <div class="filepath" v-if="filename"><font @click="getall">全部</font> / <span> <img class="img" src="@/assets/images/folder.png">{{filename}}</span></div>
<div class="uploadbox" v-if="isupload"> <div class="uploadbox" v-if="isupload">
...@@ -53,7 +67,20 @@ ...@@ -53,7 +67,20 @@
<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>
<div v-if="isDisabled==false" class="btn btn_primary h36 w102" @click="getUP">上传文档</div> <!--<div v-if="isDisabled==false" class="btn btn_primary h36 w102" @click="getUP">上传文档</div>-->
<div v-if="isDisabled==false" class="btn btn_primary h36 w102"> <el-upload
class="upload-demo"
:action="action"
:on-change="handleFileListChange"
:multiple="false"
ref="upload"
:file-list="fileList"
accept=".word,.pdf.excel,.xlsx,.doc,.docx"
:headers="headers"
:show-file-list="false"
:on-success="onSuccess">
上传文档
</el-upload></div>
</div> </div>
</template> </template>
<el-table-column <el-table-column
......
...@@ -15,6 +15,12 @@ ...@@ -15,6 +15,12 @@
<div class="titles"> <div class="titles">
<img src="@/assets/images/project/headimg.png" class="headimg"> <img src="@/assets/images/project/headimg.png" class="headimg">
<strong class="text">{{ProjectData.projectName}}</strong> <strong class="text">{{ProjectData.projectName}}</strong>
<div class="protypes i1" v-if="isDisabled == false">
<span v-for="(item,index) in projectStatus"><i v-if="ProjectData.status == item.dictValue">{{item.dictLabel}}</i></span>
<el-select class="sels" v-model="ProjectData.status" @change="editXMSL({status:ProjectData.status})">
<el-option v-for="(item,index) in projectStatus" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</div>
<div class="locks" v-if="ProjectData.isFounder == 1"> <div class="locks" v-if="ProjectData.isFounder == 1">
<div @click="islock=true"> <div @click="islock=true">
<img v-if="ProjectData.isPrivate == 0" src="@/assets/images/project/lock.png"> <img v-if="ProjectData.isPrivate == 0" src="@/assets/images/project/lock.png">
...@@ -167,6 +173,7 @@ ...@@ -167,6 +173,7 @@
projectStage:[],//项目阶段 projectStage:[],//项目阶段
projectType:[],//项目类型 projectType:[],//项目类型
projectCategory:[],//项目类别 projectCategory:[],//项目类别
projectStatus:[],//项目状态
nowedit:-1, nowedit:-1,
address:[], address:[],
addresstxt:'待添加', addresstxt:'待添加',
...@@ -198,6 +205,10 @@ ...@@ -198,6 +205,10 @@
getDictType('project_category').then(result=>{ getDictType('project_category').then(result=>{
this.projectCategory = result.code == 200 ? result.data:[] this.projectCategory = result.code == 200 ? result.data:[]
}) })
//项目状态
getDictType('project_status_type').then(result=>{
this.projectStatus = result.code == 200 ? result.data:[]
})
//获取基本信息 //获取基本信息
this.getXMSL() this.getXMSL()
}, },
...@@ -235,6 +246,7 @@ ...@@ -235,6 +246,7 @@
this.xmlx = result.data.projectType==""||result.data.projectType==null?"请选择":result.data.projectType 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.xmlb = result.data.projectCategory==""||result.data.projectCategory==null?"请选择":result.data.projectCategory
this.thisindex = result.data.projectStage this.thisindex = result.data.projectStage
this.ProjectData.status = result.data.status.toString()
let list = [] let list = []
let txt = '' let txt = ''
if(result.data.provinceId != ""){ if(result.data.provinceId != ""){
...@@ -271,6 +283,9 @@ ...@@ -271,6 +283,9 @@
return false return false
let params = param let params = param
params.id = this.id params.id = this.id
if(param.status){
param.status = parseInt(param.status)
}
editXMNR(JSON.stringify(params)).then(res=>{ editXMNR(JSON.stringify(params)).then(res=>{
if (res.code == 200){ if (res.code == 200){
this.$message.success('修改成功!') this.$message.success('修改成功!')
...@@ -398,6 +413,57 @@ ...@@ -398,6 +413,57 @@
.head{ .head{
.titles{ .titles{
line-height: 31px; line-height: 31px;
.protypes{
min-width: 96px;
padding: 0 18px;
height: 24px;
border-radius: 20px;
margin-left: 16px;
display: inline-block;
cursor: pointer;
font-size: 12px;
line-height: 24px;
text-align: center;
position: relative;
&.i1{
background: #FCF3DF;
color: #B5760B;
&:hover{
background: #F3E2BB;
}
}
&.i2{
background: #E5F6E4;
color: #09A442;
&:hover{
background: #B8EBB7;
}
}
&.i3{
background: #E5F2FF;
color: #0081FF;
&:hover{
background: #CBE5FF;
}
}
>span{
width: 100%;
}
.sels{
opacity: 0;
}
.el-select{
position: absolute;
top: 0;
width: 100%;
left: 0;
height: 24px;
::v-deep.el-input,::v-deep.el-input__inner{
height: 24px;
}
}
}
.headimg{ .headimg{
float: left; float: left;
margin-right: 16px; margin-right: 16px;
......
...@@ -57,12 +57,14 @@ export default { ...@@ -57,12 +57,14 @@ export default {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (valid) { if (valid) {
updateUserPwd(this.user.oldPassword, this.user.newPassword).then(response => { updateUserPwd(this.user.oldPassword, this.user.newPassword).then(response => {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功")
store.commit('SET_TOKEN', '') store.commit('SET_TOKEN', '')
store.commit('SET_ROLES', []) store.commit('SET_ROLES', [])
store.commit('SET_PERMISSIONS', []) store.commit('SET_PERMISSIONS', [])
removeToken() removeToken()
setTimeout(function() {
location.href = '/index' location.href = '/index'
}, 2000)
}); });
} }
}); });
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div> <div>
<div class="user-info-head" @click="editCropper()"> <div class="user-info-head" @click="editCropper()">
<img v-bind:src="options.img" title="点击上传头像" class="img-circle img-lg" v-if="options.img" /> <img v-bind:src="options.img" title="点击上传头像" class="img-circle img-lg" v-if="options.img" />
<span v-else class="userInfo-avatar" v-else>{{ options.name&&options.name.slice(0, 1).toUpperCase() }}</span> <span class="userInfo-avatar" v-else>{{ options.name&&options.name.slice(0, 1).toUpperCase() }}</span>
</div> </div>
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body @opened="modalOpened" @close="closeDialog"> <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body @opened="modalOpened" @close="closeDialog">
<el-row> <el-row>
......
...@@ -15,6 +15,11 @@ public class BusinessIdDto { ...@@ -15,6 +15,11 @@ public class BusinessIdDto {
*/ */
private Integer businessId; private Integer businessId;
/**
* 项目标签id
*/
private Integer labelId;
/** /**
* 项目标签名称 * 项目标签名称
*/ */
......
...@@ -2,8 +2,6 @@ package com.dsk.system.domain.vo; ...@@ -2,8 +2,6 @@ package com.dsk.system.domain.vo;
import lombok.Data; import lombok.Data;
import java.util.List;
/** /**
* @author lxl * @author lxl
* @Description: * @Description:
...@@ -90,7 +88,7 @@ public class BusinessBrowseVo { ...@@ -90,7 +88,7 @@ public class BusinessBrowseVo {
/** /**
* 项目标签 * 项目标签
*/ */
private List<String> labelList; private String labelList;
/** 建设单位 */ /** 建设单位 */
private String constructionUnit; private String constructionUnit;
......
package com.dsk.system.domain.vo;
import lombok.Data;
/**
* @author lxl
* @Description:
* @Date 2023/6/27 下午 2:51
**/
@Data
public class BusinessLabelVo {
//主键
private Integer id;
//标签
private String label;
}
...@@ -76,7 +76,7 @@ public class EnterpriseService { ...@@ -76,7 +76,7 @@ public class EnterpriseService {
List<CustomerStatusListVo> claimStatusList = iCustomerService.selectStatusList(uipIds); List<CustomerStatusListVo> claimStatusList = iCustomerService.selectStatusList(uipIds);
if (CollectionUtils.isNotEmpty(claimStatusList)) { if (CollectionUtils.isNotEmpty(claimStatusList)) {
companyMap.put("claimStatus", 1); companyData.put("claimStatus", 1);
} }
return R.ok(companyData); return R.ok(companyData);
......
...@@ -28,5 +28,7 @@ public interface CustomerMapper extends BaseMapper<Customer> { ...@@ -28,5 +28,7 @@ public interface CustomerMapper extends BaseMapper<Customer> {
List<CustomerStatusListVo> selectStatusList(@Param("uipIds") List<String> uipIds, @Param("userId") Long userId); List<CustomerStatusListVo> selectStatusList(@Param("uipIds") List<String> uipIds, @Param("userId") Long userId);
List<String> selectUipIdList(@Param("uipIds") List<String> uipIds, @Param("userId") Long userId);
} }
...@@ -3,10 +3,7 @@ package com.dsk.system.service; ...@@ -3,10 +3,7 @@ package com.dsk.system.service;
import com.dsk.system.domain.customer.Customer; import com.dsk.system.domain.customer.Customer;
import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto; import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto;
import com.dsk.system.domain.customer.dto.CustomerSearchDto; import com.dsk.system.domain.customer.dto.CustomerSearchDto;
import com.dsk.system.domain.customer.vo.CustomerBusinessListVo; import com.dsk.system.domain.customer.vo.*;
import com.dsk.system.domain.customer.vo.CustomerListVo;
import com.dsk.system.domain.customer.vo.CustomerStatusListVo;
import com.dsk.system.domain.customer.vo.CustomerVo;
import java.util.List; import java.util.List;
...@@ -32,4 +29,6 @@ public interface ICustomerService { ...@@ -32,4 +29,6 @@ public interface ICustomerService {
List<CustomerStatusListVo> selectStatusList(List<String> uipIds); List<CustomerStatusListVo> selectStatusList(List<String> uipIds);
List<String> selectUipIdList(List<String> uipIds);
} }
package com.dsk.system.service; package com.dsk.system.service;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.ComposeQueryDto; import com.dsk.common.dtos.ComposeQueryDto;
/** /**
...@@ -19,5 +19,5 @@ public interface RegionalEnterprisesService { ...@@ -19,5 +19,5 @@ public interface RegionalEnterprisesService {
*@Author: Dgm *@Author: Dgm
*@date: 2023/5/18 10:25 *@date: 2023/5/18 10:25
*/ */
TableDataInfo page(ComposeQueryDto compose) throws Exception; AjaxResult enterprisePage(ComposeQueryDto compose) throws Exception;
} }
...@@ -3,6 +3,7 @@ package com.dsk.system.service.impl; ...@@ -3,6 +3,7 @@ package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.config.RuoYiConfig; import com.dsk.common.config.RuoYiConfig;
import com.dsk.common.constant.HttpStatus; import com.dsk.common.constant.HttpStatus;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
...@@ -21,10 +22,10 @@ import com.dsk.system.domain.BusinessListDto; ...@@ -21,10 +22,10 @@ import com.dsk.system.domain.BusinessListDto;
import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto; import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto;
import com.dsk.system.domain.customer.vo.CustomerBusinessListVo; import com.dsk.system.domain.customer.vo.CustomerBusinessListVo;
import com.dsk.system.domain.vo.BusinessBrowseVo; import com.dsk.system.domain.vo.BusinessBrowseVo;
import com.dsk.system.domain.vo.BusinessLabelVo;
import com.dsk.system.domain.vo.BusinessListVo; import com.dsk.system.domain.vo.BusinessListVo;
import com.dsk.system.mapper.BusinessInfoMapper; import com.dsk.system.mapper.BusinessInfoMapper;
import com.dsk.system.mapper.BusinessLabelMapper; import com.dsk.system.mapper.BusinessLabelMapper;
import com.dsk.system.mapper.BusinessRelateCompanyMapper;
import com.dsk.system.mapper.BusinessUserMapper; import com.dsk.system.mapper.BusinessUserMapper;
import com.dsk.system.service.IBusinessInfoService; import com.dsk.system.service.IBusinessInfoService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -36,7 +37,6 @@ import javax.annotation.Resource; ...@@ -36,7 +37,6 @@ import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* 项目详情Service业务层处理 * 项目详情Service业务层处理
...@@ -52,8 +52,6 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService { ...@@ -52,8 +52,6 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
@Resource @Resource
private BusinessUserMapper businessUserMapper; private BusinessUserMapper businessUserMapper;
@Resource @Resource
private BusinessRelateCompanyMapper businessRelateCompanyMapper;
@Resource
private BusinessLabelMapper businessLabelMapper; private BusinessLabelMapper businessLabelMapper;
@Resource @Resource
private ReadBusinessInfoExcel readBusinessInfoExcel; private ReadBusinessInfoExcel readBusinessInfoExcel;
...@@ -108,12 +106,15 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService { ...@@ -108,12 +106,15 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
//商务团队 //商务团队
businessBrowseVo.setTeam(businessUserMapper.selectCreatorByBusinessId(businessId)); businessBrowseVo.setTeam(businessUserMapper.selectCreatorByBusinessId(businessId));
//查询是否是项目创建人 //查询是否是项目创建人
Long userId = SecurityUtils.getLoginUser().getUserId(); // Long userId = SecurityUtils.getLoginUser().getUserId();
if (userId == null) throw new BaseException("请登录"); // if (userId == null) throw new BaseException("请登录");
Long userId = 103l;
Integer founder = businessUserMapper.selectFounder(businessId, userId); Integer founder = businessUserMapper.selectFounder(businessId, userId);
businessBrowseVo.setIsFounder(founder == null ? 0 : founder); businessBrowseVo.setIsFounder(founder == null ? 0 : founder);
//查询项目标签 //查询项目标签
businessBrowseVo.setLabelList(businessLabelMapper.selectBusinessLabelList(new BusinessLabel(businessId)).stream().map(p -> p.getLabel()).collect(Collectors.toList())); List<BusinessLabel> labels = businessLabelMapper.selectBusinessLabelList(new BusinessLabel(businessId));
String labelList = CollectionUtil.isEmpty(labels) ? null : JSONObject.toJSONString(BeanUtil.copyToList(labels, BusinessLabelVo.class));
businessBrowseVo.setLabelList(labelList);
//相关数据统计 //相关数据统计
BusinessBrowseVo total = businessInfoMapper.selectTotal(businessId); BusinessBrowseVo total = businessInfoMapper.selectTotal(businessId);
businessBrowseVo.setBacklogCount(total.getBacklogCount()); businessBrowseVo.setBacklogCount(total.getBacklogCount());
......
...@@ -11,10 +11,7 @@ import com.dsk.system.domain.customer.Customer; ...@@ -11,10 +11,7 @@ import com.dsk.system.domain.customer.Customer;
import com.dsk.system.domain.customer.CustomerUser; import com.dsk.system.domain.customer.CustomerUser;
import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto; import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto;
import com.dsk.system.domain.customer.dto.CustomerSearchDto; import com.dsk.system.domain.customer.dto.CustomerSearchDto;
import com.dsk.system.domain.customer.vo.CustomerBusinessListVo; import com.dsk.system.domain.customer.vo.*;
import com.dsk.system.domain.customer.vo.CustomerListVo;
import com.dsk.system.domain.customer.vo.CustomerStatusListVo;
import com.dsk.system.domain.customer.vo.CustomerVo;
import com.dsk.system.dskService.EnterpriseService; import com.dsk.system.dskService.EnterpriseService;
import com.dsk.system.mapper.CustomerMapper; import com.dsk.system.mapper.CustomerMapper;
import com.dsk.system.mapper.CustomerUserMapper; import com.dsk.system.mapper.CustomerUserMapper;
...@@ -51,16 +48,6 @@ public class CustomerServiceImpl implements ICustomerService { ...@@ -51,16 +48,6 @@ public class CustomerServiceImpl implements ICustomerService {
@Override @Override
public List<CustomerListVo> selectList(CustomerSearchDto dto) { public List<CustomerListVo> selectList(CustomerSearchDto dto) {
dto.setUserId(SecurityUtils.getUserId()); 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;
return baseMapper.selectList(dto); return baseMapper.selectList(dto);
} }
...@@ -131,4 +118,10 @@ public class CustomerServiceImpl implements ICustomerService { ...@@ -131,4 +118,10 @@ public class CustomerServiceImpl implements ICustomerService {
return baseMapper.selectStatusList(uipIds, SecurityUtils.getUserId()); return baseMapper.selectStatusList(uipIds, SecurityUtils.getUserId());
} }
@Override
public List<String> selectUipIdList(List<String> uipIds) {
return baseMapper.selectUipIdList(uipIds, SecurityUtils.getUserId());
}
} }
package com.dsk.system.service.impl; package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.dsk.common.core.page.TableDataInfo; import cn.hutool.core.util.ObjectUtil;
import com.dsk.acc.openapi.client.util.CommonUtils;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.model.EnterpriseInfoHeaderBody;
import com.dsk.common.dtos.ComposeQueryDto; import com.dsk.common.dtos.ComposeQueryDto;
import com.dsk.common.utils.DskOpenApiUtil; import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.system.service.RegionalEnterprisesService; import com.dsk.system.service.RegionalEnterprisesService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
...@@ -24,8 +31,51 @@ public class RegionalEnterprisesServiceImpl implements RegionalEnterprisesServic ...@@ -24,8 +31,51 @@ public class RegionalEnterprisesServiceImpl implements RegionalEnterprisesServic
private DskOpenApiUtil dskOpenApiUtil; private DskOpenApiUtil dskOpenApiUtil;
@Override @Override
public TableDataInfo page(ComposeQueryDto compose) throws Exception { public AjaxResult enterprisePage(ComposeQueryDto pageDto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/page", BeanUtil.beanToMap(compose, false, false)); Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/page",BeanUtil.beanToMap(pageDto, false, false));
return dskOpenApiUtil.responsePage(map); Integer code = MapUtils.getInteger(map, "code", 300);
if (code.equals(HttpStatus.OK.value())) {
Map data = MapUtils.getMap(map, "data", null);
List<Object> list = CommonUtils.assertAsArray(MapUtils.getObject(data, "list", ""));
if (CollectionUtils.isNotEmpty(list)) {
for (Object companyObj : list) {
Map<String, Object> companyMap = CommonUtils.assertAsMap(companyObj);
//常合作客户id
Integer topCustomerId = MapUtils.getInteger(companyMap, "topCustomerId");
EnterpriseInfoHeaderBody body = new EnterpriseInfoHeaderBody();
body.setCompanyId(topCustomerId);
if (ObjectUtil.isNotEmpty(topCustomerId)) {
Map<String, Object> infoHeaderMap = dskOpenApiUtil.requestBody("/api/jsk/enterprise/infoHeader", BeanUtil.beanToMap(body, false, false));
Integer infoHeaderCode = MapUtils.getInteger(infoHeaderMap, "code", 300);
if (infoHeaderCode.equals(HttpStatus.OK.value())) {
Map infoHeaderData = MapUtils.getMap(infoHeaderMap, "data", null);
String companyName = MapUtils.getString(infoHeaderData, "companyName", null);
companyMap.put("topCustomer", companyName);
} else {
companyMap.put("topCustomer", null);
}
} else {
companyMap.put("topCustomer", null);
}
//常合作供应商id
Integer topSupplierId = MapUtils.getInteger(companyMap, "topSupplierId");
body.setCompanyId(topSupplierId);
if (ObjectUtil.isNotEmpty(topSupplierId)) {
Map<String, Object> infoHeaderMap = dskOpenApiUtil.requestBody("/api/jsk/enterprise/infoHeader", BeanUtil.beanToMap(body, false, false));
Integer infoHeaderCode = MapUtils.getInteger(infoHeaderMap, "code", 300);
if (infoHeaderCode.equals(HttpStatus.OK.value())) {
Map infoHeaderData = MapUtils.getMap(infoHeaderMap, "data", null);
String companyName = MapUtils.getString(infoHeaderData, "companyName", null);
companyMap.put("topSupplier", companyName);
} else {
companyMap.put("topSupplier", null);
}
} else {
companyMap.put("topSupplier", null);
}
}
}
}
return BeanUtil.toBean(map, AjaxResult.class);
} }
} }
...@@ -5,7 +5,6 @@ import com.dsk.acc.openapi.client.util.CommonUtils; ...@@ -5,7 +5,6 @@ import com.dsk.acc.openapi.client.util.CommonUtils;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.UrbanInvestmentPlatformDto; import com.dsk.common.dtos.UrbanInvestmentPlatformDto;
import com.dsk.common.utils.DskOpenApiUtil; import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.system.domain.customer.vo.CustomerStatusListVo;
import com.dsk.system.service.ICustomerService; import com.dsk.system.service.ICustomerService;
import com.dsk.system.service.UrbanInvestmentPlatformService; import com.dsk.system.service.UrbanInvestmentPlatformService;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
...@@ -52,23 +51,19 @@ public class UrbanInvestmentPlatformServiceImpl implements UrbanInvestmentPlatfo ...@@ -52,23 +51,19 @@ public class UrbanInvestmentPlatformServiceImpl implements UrbanInvestmentPlatfo
for (Object dataMap : list) { for (Object dataMap : list) {
uipIds.add(MapUtils.getString(CommonUtils.assertAsMap(dataMap), "uipId")); uipIds.add(MapUtils.getString(CommonUtils.assertAsMap(dataMap), "uipId"));
} }
List<CustomerStatusListVo> claimStatusList = iCustomerService.selectStatusList(uipIds); List<String> claimStatusList = iCustomerService.selectUipIdList(uipIds);
//按照城投企业id合并两个list //按照城投企业id合并两个list
for (Object companyObj : list) { for (Object companyObj : list) {
Map<String, Object> companyMap = CommonUtils.assertAsMap(companyObj); Map<String, Object> companyMap = CommonUtils.assertAsMap(companyObj);
String uipId = MapUtils.getString(companyMap, "uipId","uipId"); String uipId = MapUtils.getString(companyMap, "uipId","uipId");
if (CollectionUtils.isEmpty(claimStatusList)) { if (CollectionUtils.isEmpty(claimStatusList)) {
companyMap.put("claimStatus", 0); companyMap.put("claimStatus", 0);
} } else if (claimStatusList.contains(uipId)) {
for (CustomerStatusListVo vo : claimStatusList) {
if (uipId.equals(vo.getUipId())) {
companyMap.put("claimStatus", 1); companyMap.put("claimStatus", 1);
} else { } else {
companyMap.put("claimStatus", 0); companyMap.put("claimStatus", 0);
} }
} }
}
return BeanUtil.toBean(map, AjaxResult.class); return BeanUtil.toBean(map, AjaxResult.class);
} }
......
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
<delete id="deleteBusinessLabelById"> <delete id="deleteBusinessLabelById">
delete delete
from business_label from business_label
where business_id = #{businessId} and label = #{label} where id = #{labelId}
</delete> </delete>
<delete id="deleteBusinessLabelByIds" parameterType="String"> <delete id="deleteBusinessLabelByIds" parameterType="String">
......
...@@ -10,17 +10,6 @@ ...@@ -10,17 +10,6 @@
ct.performance_characteristic, ct.other_ms_characteistic, ct.create_id, ct.create_time, ct.update_id, ct.update_time ct.performance_characteristic, ct.other_ms_characteistic, ct.create_id, ct.create_time, ct.update_id, ct.update_time
</sql> </sql>
<select id="selectList1" resultType="com.dsk.system.domain.customer.vo.CustomerListVo">
select
u.nick_name followUser,
<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
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="selectList" resultType="com.dsk.system.domain.customer.vo.CustomerListVo"> <select id="selectList" resultType="com.dsk.system.domain.customer.vo.CustomerListVo">
select select
u.nick_name followUser, bi1.num reserveProject, bi2.num followProject, bi3.num cooperationProject, u.nick_name followUser, bi1.num reserveProject, bi2.num followProject, bi3.num cooperationProject,
...@@ -69,5 +58,16 @@ ...@@ -69,5 +58,16 @@
</foreach> </foreach>
</select> </select>
<select id="selectUipIdList" resultType="java.lang.String">
select
ct.uip_id
from customer ct
join customer_user ctu on ct.customer_id = ctu.customer_id
where ctu.user_id = #{userId} and ct.uip_id in
<foreach collection="uipIds" item="uipId" open="(" separator="," close=")">
#{uipId}
</foreach>
</select>
</mapper> </mapper>
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