Commit 14a29418 authored by liuChang's avatar liuChang

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

parents 8dd2ab1f bf6d870e
......@@ -50,3 +50,20 @@ export function businessList(data) {
data: data
})
}
// 集团招标
export function bidPage(data) {
return request({
url: '/combine/info/bidPage',
method: 'post',
data: data
})
}
// 集团招标导出
export function exportBid(data) {
return request({
url: '/combine/info/export/bid',
method: 'post',
data: data
})
}
......@@ -121,7 +121,7 @@ aside {
//main-container全局样式
.app-container {
padding: 16px;
//padding: 16px;
//margin-top: 56px;
}
......@@ -223,6 +223,7 @@ ul, li {
.app-container {
margin: 12px 24px;
background-color: #f5f5f5;
padding-bottom: 16px !important;
.el-input__inner{
border-color: #D9D9D9;
color: #232323;
......@@ -262,6 +263,19 @@ ul, li {
}
}
.query-ability{
.total{
display: flex !important;
flex-direction: row;
align-items: center;
&:before {
content: "";
display: inline-block;
width: 2px;
height: 2px;
background: rgba(35, 35, 35, 0.4);
margin-right: 4px;
}
}
span{
font-size: 14px;
color: #232323;
......
......@@ -88,7 +88,7 @@ export default {
overflow: inherit;
/*position: relative;*/
background: #fff;
box-shadow: 0 1px 4px rgba(0,21,41,.08);
/*box-shadow: 0 1px 4px rgba(0,21,41,.08);*/
position: fixed;
top:0;
z-index: 999;
......
......@@ -63,7 +63,7 @@ export default {
saveAs(text, name, opts);
},
exportByPost(url, params){
exportByPost(url, params,name){
var url = baseURL + url
axios({
method: 'post',
......@@ -72,8 +72,12 @@ export default {
data: params,
headers: { 'Authorization': 'Bearer ' + getToken() }
}).then(res => {
const blob = new Blob([res.data], { type: 'application/octet-stream/pdf/doc/xlsx/xls/docx' })
this.saveAs(blob, decodeURI(res.headers['download-filename']))
const blob = new Blob([res.data], { type: 'application/octet-stream/pdf/doc/xlsx/xls/docx/excel' })
if(name){
this.saveAs(blob, name)
}else {
this.saveAs(blob, decodeURI(res.headers['download-filename']))
}
})
},
async printErrMsg(data) {
......
......@@ -18,7 +18,7 @@
</div>
</div>
<skeleton v-if="isSkeleton"></skeleton>
<el-table v-if="!isSkeleton&&tableData.total > 0" class="fixed-table" max-height="640"
<el-table v-if="!isSkeleton&&tableData.total > 0" class="fixed-table" v-horizontal-scroll="'always'" max-height="640"
:data="tableData.rows"
stripe border
style="width: 100%">
......@@ -26,7 +26,7 @@
prop="index"
label="序号"
fixed="left"
width="47">
width="60">
<template slot-scope='scope'>
<span>{{ (searchParam.pageNum - 1) * searchParam.pageSize + scope.$index + 1 }}</span>
</template>
......@@ -51,7 +51,7 @@
<el-table-column
prop="cooperationProject"
label="合作项目"
width="76">
width="90">
<template slot-scope="scope">
{{scope.row.cooperationProject || '--'}}
</template>
......@@ -59,7 +59,7 @@
<el-table-column
prop="followProject"
label="跟进项目"
width="76">
width="90">
<template slot-scope="scope">
{{scope.row.followProject || '--'}}
</template>
......@@ -67,7 +67,7 @@
<el-table-column
prop="reserveProject"
label="储备项目"
width="76">
width="90">
<template slot-scope="scope">
{{scope.row.reserveProject || '--'}}
</template>
......@@ -91,7 +91,7 @@
<el-table-column
prop="registerCapitalStr"
label="注册资本金(万元)"
width="140">
width="160">
<template slot-scope="scope">
<span v-if="scope.row.registerCapital && scope.row.registerCapital>0">{{scope.row.registerCapital}}</span><span v-else>--</span>
</template>
......
......@@ -108,7 +108,7 @@
<div class="content_wap3">
<div class="flex-box query-box">
<div class="flex-box query-params">
<span class="title">跟进动态</span>
<span class="item_title">跟进动态</span>
</div>
<div class="flex-box time-label">
<div class="labels">
......@@ -689,14 +689,6 @@
border: 1px solid #0081FF;
color: #ffffff;
background: #0081FF;
/*.el-button{*/
/*border: 1px solid #0081FF;*/
/*span{*/
/*color: #ffffff;*/
/*background: #0081FF;*/
/*border: 1px solid #0081FF;*/
/*}*/
/*}*/
}
......@@ -856,7 +848,7 @@
.query-box{
padding:16px;
}
.title{
.item_title{
font-weight: 700;
color: #232323;
font-size: 16px;
......
......@@ -53,12 +53,14 @@ export default {
{title: '集团成员', pathName: 'members'},
{title: '集团资质', pathName: 'qualifications'},
{title: '集团业绩', pathName: 'performance'},
{title: '集团招标', pathName: 'zhaobiao'},
],
defaultRoute: [],
customer:[
'members',
'qualifications',
'performance',
'zhaobiao',
],
uniqueOpened:false,
searchIndex: ''
......
......@@ -171,7 +171,7 @@
qyType:[],
cgblList:['100%','50%以上','20%以上','5%以上','1%-5%'],
cgblName:'',
paramsData:[], //储存组件筛选的条件
paramsData:{}, //储存组件筛选的条件
}
},
watch:{
......@@ -244,7 +244,7 @@
}
},
handleQuery(params){
this.paramsData=params;
this.paramsData=params || {};
this.tableLoading=true
let data = this.getAreaList(params || this.queryParams)
memberList(data).then(res=>{
......@@ -400,7 +400,11 @@
},
sortChange({ column, prop, order }){
this.queryParams.orderName = prop
this.paramsData.orderName = prop
this.paramsData.orderName = prop;
this.paramsData.combineId = this.customerId;
this.paramsData.pageNum = 1;
this.paramsData.pageSize = 20;
if(column.order === "ascending"){
this.queryParams.orderType = 'asc'
this.paramsData.orderType = 'asc'
......
......@@ -5,8 +5,9 @@
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="false"
:isExcel="true"
@handle-search="handleSearch"
@handle-excel="clickEXCEL"
>
<template slot="slot">
......@@ -57,7 +58,7 @@
import { getDictType } from '@/api/main'
export default {
name: 'qualifications',
props: ['customerId'],
props: ['customerId','combineName'],
mixins: [mixin],
components:{},
data(){
......@@ -103,6 +104,7 @@
],
timeList: ['近三天', '近七天', '近半月', '自定义'],
moneyList: ['5000万以下', '5000万-1亿', '1亿-5亿', '5亿-10亿','10亿以上', '自定义'],
dataEXCEL:{}
}
},
created() {
......@@ -162,6 +164,7 @@
}
delete data.cgbl
}
this.dataEXCEL=data;
businessList(data).then(res=>{
this.tableData = res.code == 200 ? res.rows:[]
this.tableDataTotal = res.total
......@@ -263,6 +266,12 @@
// this.$children[1].$refs.tableRef.bodyWrapper.scrollTop = 0
}, 500);
},
clickEXCEL() {
this.dataEXCEL.combineName=this.combineName;
this.dataEXCEL.pageSize=this.tableDataTotal;
delete this.dataEXCEL.pageNum
this.$download.exportByPost('/combine/info/export/win/bid',this.dataEXCEL,'集团中标.xlsx');
},
}
}
</script>
......
......@@ -39,7 +39,7 @@
import QualificationsDetail from './qualificationsDetail'
export default {
name: 'qualifications',
props: ['customerId','name'],
props: ['customerId','combineName'],
mixins: [mixin],
components:{
QualificationsDetail
......@@ -65,7 +65,7 @@
tableData:[],
tableDataTotal:0,
title:'',
rowData:''
rowData:'',
}
},
created() {
......@@ -75,7 +75,8 @@
methods: {
handleQuery(params){
this.isSkeleton = true
let data = params ? params : this.queryParams
let data = params ? params : this.queryParams;
certificateList(data).then(res=>{
this.isSkeleton = false
if(res.code === 200){
......@@ -98,10 +99,11 @@
})
},
handleClick(e, data) {
this.title=this.name+'-'+data.qualificationName+'(共'+ data.companyCount +'条)'
this.title=this.combineName+'-'+data.qualificationName+'(共'+ data.companyCount +'条)'
this.rowData = data
this.isDetails = true
},
}
}
</script>
......
......@@ -6,11 +6,15 @@
custom-class="client-drawer"
:with-header="false"
@closed="cancel">
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<div class="head" v-if="!isSkeleton">
<div class="head">
<img class="tip-img" src="@/assets/images/icon.png" />
<span>{{title}}</span>
</div>
<div class="cooperate-name" id="focus01">
<el-input clearable @clear="changeSelect" style="width: 300px;" @focus="clickFocus('focus01')" @blur="clickFocus('focus01')" v-model="queryParams.companyName" placeholder="成员名称查询"></el-input>
<span @click="changeSelect">搜索</span>
</div>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables
v-if="!isSkeleton"
:tableLoading="tableLoading"
......@@ -18,6 +22,7 @@
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
:MaxPage=500
@handle-current-change="handleCurrentChange"
style="margin: 12px;"
>
......@@ -50,11 +55,9 @@ export default {
queryParams: {
id: this.data.id,
pageNum: 1,
pageSize: 10
pageSize: 10,
companyName:''
},
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目/工程名称查询', options: []},
],
forData: [
{label: '拥有该资质成员', prop: 'companyName', slot: true},
{label: '成员共有资质(个)', prop: 'certificateCount'},
......@@ -73,7 +76,8 @@ export default {
methods: {
async handleQuery(params) {
this.isSkeleton = true
let param = params?params:this.queryParams
let param = params?params:this.queryParams;
console.log(param)
let res = await memberCertificateList(param)
this.isSkeleton = false
if(res.code==200){
......@@ -94,7 +98,19 @@ export default {
},
cancel() {
this.$emit('cancel')
}
},
changeSelect(){
this.queryParams.pageNum = 1
this.handleQuery()
},
clickFocus(e){
document.getElementById(e).classList.toggle('span-ba')
},
//分页
handleCurrentChange(e){
this.queryParams.pageNum = e
this.handleQuery()
},
}
}
</script>
......@@ -114,5 +130,48 @@ export default {
height: 17px;
margin: 0 8px -2px 12px;
}
.cooperate-name {
display: flex;
border-radius: 2px 0px 0px 2px;
border: 1px solid #D9D9D9;
line-height: 34px;
height: 34px;
width: 300px;
float: right;
margin: 12px;
span {
width: 80px;
height: 32px;
line-height: 32px;
font-size: 14px;
background: #F5F5F5;
text-align: center;
color: #0081FF;
border: 1px solid #EFEFEF;
border-left: 0;
cursor: pointer;
}
&.span-ba{
border: 1px solid #0081FF;
span{
color: #ffffff;
background: #0081FF;
border: 1px solid #0081FF;
}
}
::v-deep .el-input{
flex: 1;
}
::v-deep .el-input__inner {
border: 0;
line-height: 32px;
height: 32px;
position: absolute;
top: 0;
padding-right: 22px;
font-size: 12px;
padding-left: 8px;
}
}
}
</style>
......@@ -12,9 +12,10 @@
</div>
<div class="group-right">
<div id="groupBox" v-if="customerId">
<Members v-if="currentPath.pathName=='members'" :customer-id="customerId" :isSkeleton="isSkeleton" />
<Qualifications v-if="currentPath.pathName=='qualifications'" :customer-id="customerId" :isSkeleton="isSkeleton" :name="name"/>
<Performance v-if="currentPath.pathName=='performance'" :customer-id="customerId" :isSkeleton="isSkeleton"/>
<Members v-if="currentPath.pathName=='members'" :customer-id="customerId" :isSkeleton="isSkeleton" :combineName="name"/>
<Qualifications v-if="currentPath.pathName=='qualifications'" :customer-id="customerId" :isSkeleton="isSkeleton" :combineName="name"/>
<Performance v-if="currentPath.pathName=='performance'" :customer-id="customerId" :isSkeleton="isSkeleton" :combineName="name"/>
<Zhaobiao v-if="currentPath.pathName=='zhaobiao'" :customer-id="customerId" :isSkeleton="isSkeleton" :combineName="name"/>
</div>
</div>
</div>
......@@ -27,12 +28,13 @@
import Members from "./component/members"
import Qualifications from "./component/qualifications"
import Performance from "./component/performance"
import Zhaobiao from "./component/zhaobiao"
import { infoHeader } from '@/api/detail/party-a/index'
import elementResizeDetectorMaker from "element-resize-detector"
export default {
name: 'GroupAccount',
components:{
SideBar,Members,Qualifications,Performance
SideBar,Members,Qualifications,Performance,Zhaobiao
},
data(){
return{
......@@ -77,6 +79,8 @@
}
.group-left{
margin-right: 16px;
padding-bottom: 16px;
background: #FFFFFF;
}
.group-right{
min-width: 1088px;
......
......@@ -7,15 +7,15 @@
<div class="from-item" :key="i" v-for="(form, i) in formData">
<!-- 单选 -->
<template v-if="form.type==1">
<el-select
v-model="form.value"
clearable
class="form-content-width"
:style="form.width?'width:'+form.width+'px':'max-width: 110px'"
:placeholder="form.placeholder"
@change="changeSelect">
<el-option v-for="(item, index) in form.options" :key="index" :label="item.name" :value="item.value" :disabled="item.disabled"/>
</el-select>
<el-select
v-model="form.value"
clearable
class="form-content-width"
:style="form.width?'width:'+form.width+'px':'max-width: 110px'"
:placeholder="form.placeholder"
@change="changeSelect">
<el-option v-for="(item, index) in form.options" :key="index" :label="item.name" :value="item.value" :disabled="item.disabled"/>
</el-select>
</template>
<!-- 年月日 -->
<template v-if="form.type==2">
......@@ -98,10 +98,12 @@
</template>
<div v-else class="flex-box">
<span class="flex-box ability-total" v-if="isTotal">共{{ total }}条</span>
<span class="flex-box ability-excel" v-if="isExcel" @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
<span class="flex-box ability-excel" v-hasPermi="['combine:info:export:win:bid']" v-if="isExcel && title ==='集团业绩'" @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
<span class="flex-box ability-excel" v-else @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
</div>
</div>
</div>
</template>
<script>
......@@ -156,10 +158,14 @@ export default {
this.$emit('handle-search')
},
clickEXCEL() {
this.$message({
message: '功能正在开发中',
type: 'warning'
});
if(this.title==='集团业绩'){
this.$emit('handle-excel')
}else {
this.$message({
message: '功能正在开发中',
type: 'warning'
});
}
},
clickFocus(e){
document.getElementById(e).classList.toggle('span-ba')
......
......@@ -981,12 +981,15 @@ export default {
},
initChart1(list){
let data=[]
if(list.length > 10){
let arr=list.sort(function(a, b) {
return b.count - a.count;
});
if(arr.length > 10){
for(var i=0;i<10;i++){
data.push(list[i])
data.push(arr[i])
}
}else {
data=list;
data=arr;
}
var rankPic = [
......
......@@ -376,7 +376,7 @@ export default {
top: 46px;
}
th{
font-size: 12px !important;
font-size: 13px !important;
font-weight: 400 !important;
}
.el-table__fixed-header-wrapper th{
......
......@@ -22,6 +22,7 @@
v-loading="tableLoading"
:data="tableData"
border
v-horizontal-scroll="'always'"
highlight-current-row
@sort-change="sortChange"
:default-sort = "{prop: 'gdp', order: 'descending'}"
......@@ -36,7 +37,7 @@
</el-table-column>
<el-table-column prop="gdp" label="GDP(亿元)" sortable width="120" :formatter="formatStatus"/>
<el-table-column prop="gdpGrowth" label="GDP增速(%)" sortable width="120" :formatter="formatStatus"/>
<el-table-column prop="gdpGrowth" 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="fixedInvestment" label="固定资产投资 (亿元) " sortable width="200" :formatter="formatStatus"/>
......@@ -226,7 +227,6 @@ export default {
overflow-y: clip;
}
th{
font-size: 12px !important;
font-weight: 400 !important;
}
.el-table__fixed-header-wrapper th{
......
......@@ -873,7 +873,7 @@ export default {
::v-deep .el-table{
overflow:visible;
th{
font-size: 12px !important;
font-size: 13px !important;
font-weight: 400 !important;
}
.el-table__fixed-header-wrapper th{
......
......@@ -20,6 +20,7 @@
collapse-tags
clearable></el-cascader>
<el-input placeholder="输入关键词查询" v-model="queryParams.ename" clearable @clear="handleSearch()">
<i slot="prefix" class="el-icon-search"></i>
<el-button slot="append" @click="handleSearch()">搜索</el-button>
</el-input>
<span class="total">{{tableDataTotal}}</span>
......@@ -31,7 +32,7 @@
v-loading="tableLoading"
border
fit
max-height="640"
v-horizontal-scroll="'always'"
@sort-change="sortChange"
highlight-current-row
v-if="tableDataTotal > 0 && !isSkeleton"
......@@ -353,11 +354,13 @@ export default {
width: 180px;
margin-right: 12px;
height: 32px;
line-height: 32px !important;
.el-input{
width: 100%;
height: 32px;
.el-input__inner{
height: 32px !important;
line-height: 32px !important;
}
}
.el-cascader__tags{
......@@ -378,8 +381,20 @@ export default {
.el-input__suffix{
margin-top: -1px;
}
.el-icon-search{
font-size: 14px;
line-height: 32px;
color:#0081FF;
margin-left: 6px;
margin-right: 4px;
}
.el-input__inner:focus{
border-color: #e0e0e0;
border-color: #0081FF;
}
.el-input__inner:focus ~.el-input-group__append{
border: 1px solid #0081FF;
color: #ffffff;
background: #0081FF;
}
.el-input-group__append{
width: 60px;
......@@ -388,8 +403,7 @@ export default {
background: #F5F5F5;
color:#0081FF;
border-left: 0;
border-radius: 0;
border-right: 0;
border-radius: 2px;
}
}
.total{
......@@ -439,7 +453,7 @@ export default {
overflow-y: clip;
}
th{
font-size: 12px !important;
font-size: 13px !important;
font-weight: 400 !important;
}
.el-table__fixed-header-wrapper th{
......
......@@ -437,7 +437,6 @@ export default {
.content{
background: #ffffff;
padding: 16px;
margin-bottom: 16px;
border-radius: 4px;
}
.common-title{
......
......@@ -866,7 +866,7 @@
}
}
th{
font-size: 12px !important;
font-size: 13px !important;
font-weight: 400 !important;
}
.el-table__fixed-header-wrapper th{
......
......@@ -9,7 +9,7 @@
<p>{{itme.value}}</p>
</div>
</div>
</div>
</div>
<p class="solid"></p>
......@@ -30,8 +30,8 @@
<Tender v-if="personnelHerf=='Tender'" />
<!-- 开标记录 -->
<BidRecord v-if="personnelHerf=='BidRecord'" />
</div>
</template>
......@@ -44,7 +44,7 @@
import BidRecord from "./components/BidRecord/index.vue";
import Bidding from "./components/Bidding/index.vue";
import MajorProject from "./components/MajorProject/index.vue";
import "@/assets/styles/public.css";
export default {
name: 'Radar',
......@@ -81,25 +81,25 @@
key: 'Bidding',
status: false,
value: '招标计划',
},
{
key: 'bxprozbgg',
status: false,
value: '标讯pro',
},
{
key: 'Tender',
status: false,
value: '公招标讯',
},
{
key: 'BidRecord',
status: false,
value: '开标记录',
},
],
......@@ -122,7 +122,7 @@
</script>
<style lang="scss" scoped>
.app-container {
margin: 12px 24px;
padding: 0;
......@@ -130,7 +130,7 @@
.content{
padding: 0px 16px;
background: #FFFFFF;
}
.app-container .combined-title {
......@@ -262,4 +262,4 @@
border-bottom: 2px solid #0081FF;
font-weight: bold;
}
</style>
\ No newline at end of file
</style>
......@@ -192,6 +192,36 @@ public class EnterpriseBussinessService {
return new TableDataInfo(new ArrayList<>(), 0);
}
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterpriseBussiness/supplierPage2", BeanUtil.beanToMap(body, false, false));
Map data = MapUtils.getMap(map, "data", null);
List<Object> list = CommonUtils.assertAsArray(MapUtils.getObject(data, "list", ""));
if (CollectionUtils.isEmpty(list)) {
return new TableDataInfo(list, 0);
}
ArrayList<Long> cIds = new ArrayList<>();
for (Object dataMap : list) {
cIds.add(MapUtils.getLong(CommonUtils.assertAsMap(dataMap), "companyId"));
}
HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("ids", cIds);
Map<String, Object> uipIdMap = dskOpenApiUtil.requestBody("/operate/enterprise/getUipIdByCid", paramMap);
Object uipIdData = uipIdMap.get("data");
List<Map<String, Object>> mapList = new ArrayList<>();
if (ObjectUtil.isNotEmpty(uipIdData)) {
mapList = (List<Map<String, Object>>)uipIdData;
}
for (Object dataMap : list) {
Map<String, Object> companyMap = CommonUtils.assertAsMap(dataMap);
Long cusCompanyId = MapUtils.getLong(companyMap, "companyId", 0L);
companyMap.put("uipId", null);
for (Map<String, Object> m : mapList) {
String uipId = MapUtils.getString(m, "uipId", null);
Long companyId = MapUtils.getLong(m, "companyId", 0L);
if (cusCompanyId.equals(companyId)) {
companyMap.put("uipId", uipId);
}
}
}
return dskOpenApiUtil.responsePage(map);
}
......
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