Commit a1b02ca2 authored by tianhongyang's avatar tianhongyang

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

parents caac205d d7711d96
......@@ -141,3 +141,12 @@ export function peojectTop(data) {
data: data
})
}
// 集团成员导出
export function memberListExport(data) {
return request({
url: '/combine/info/memberList/export',
method: 'post',
data: data
})
}
......@@ -178,6 +178,51 @@ export const searchOwnerUnitListApi = (data) => request({
method: 'post',
data
});
// 查城投平台导出
export const uipSerachExport = (data) => request({
url: '/enterprise/uipSerach/export',
method: 'post',
data
});
// 企业基本信息导出
export const infoExport = (data) => request({
url: '/enterprise/info/export',
method: 'post',
data
});
// 企业资质导出
export const aptitudeExport = (data) => request({
url: '/enterprise/aptitude/export',
method: 'post',
data
});
export default { label, centralEnterprsesocialPage, centralEnterprselocalPage, centralEnterprseChildPage, centralEnterprsesocial, centralEnterprselocal, centralEnterprseChild, searchCentralEnterprse, centralEnterprse, region, aptitudeCode, personCert, searchDic, regionWebList, uipGroupData, uipSerach, claim, cancelClaim, enterprisePage, infoHeader, historyClaim, customerStatus, searchOwnerUnitListApi };
export default {
label,
centralEnterprsesocialPage,
centralEnterprselocalPage,
centralEnterprseChildPage,
centralEnterprsesocial,
centralEnterprselocal,
centralEnterprseChild,
searchCentralEnterprse,
centralEnterprse,
region,
aptitudeCode,
personCert,
searchDic,
regionWebList,
uipGroupData,
uipSerach,
claim,
cancelClaim,
enterprisePage,
infoHeader,
historyClaim,
customerStatus,
searchOwnerUnitListApi,
uipSerachExport,
infoExport,
aptitudeExport
};
......@@ -337,6 +337,15 @@ export function getUipIdByCid(param) {
})
}
//城投平台导出
export function urbanInvestmentExport(param) {
return request({
url: '/urbanInvestment/export',
method: 'POST',
data: param
})
}
......
......@@ -230,10 +230,9 @@ let getImportantDetail = function getImportantDetail(param) {
})
}
//项目清单导出
let radarExport = function radarExport(param) {
return request({
url: '/radar/export/important',
url: '/radar/importantPage/export',
method: 'post',
data: param
})
......@@ -269,4 +268,4 @@ export default {
tenderDetail,
tenderPage,
getUipIdByCid
}
\ No newline at end of file
}
......@@ -11,7 +11,7 @@ body {
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB,
Microsoft YaHei, Arial, sans-serif;
Microsoft YaHei, Arial, sans-serif;
}
label {
......@@ -106,7 +106,7 @@ aside {
line-height: 32px;
font-size: 16px;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
color: #2c3e50;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
......@@ -149,11 +149,11 @@ aside {
padding-right: 20px;
transition: 600ms ease position;
background: linear-gradient(
90deg,
rgba(32, 182, 249, 1) 0%,
rgba(32, 182, 249, 1) 0%,
rgba(33, 120, 241, 1) 100%,
rgba(33, 120, 241, 1) 100%
90deg,
rgba(32, 182, 249, 1) 0%,
rgba(32, 182, 249, 1) 0%,
rgba(33, 120, 241, 1) 100%,
rgba(33, 120, 241, 1) 100%
);
.subtitle {
......@@ -229,9 +229,9 @@ li {
.app-main {
position: relative;
background-color: #f5f5f5;
>div{
width: calc(100% - 48px);
}
>div{
width: calc(100% - 48px);
}
}
.app-container {
margin: 16px 24px;
......@@ -246,7 +246,7 @@ li {
}
}
.el-input__inner::placeholder {
color: rgba(35, 35, 35, 0.8) !important;
color: rgba(35, 35, 35, 0.4) !important;
}
.el-select .el-input .el-select__caret {
color: #232323;
......
<template>
<div class="child-container">
<el-dialog :visible.sync="dialogExportVisible" width="640px" append-to-body class="dialogExport">
<el-dialog :visible.sync="dialogExportVisible" width="770px" append-to-body class="dialogExport" :close-on-click-modal="false" :show-close='false'>
<template slot="title">
<img class="tip-img" src="@/assets/images/icon.png" />数据导出
<!--<img class="tip-img" src="@/assets/images/icon.png" />-->
数据导出
</template>
<div class="exportTitle"><span>文件名称</span><p>{{data.title}}</p></div>
<img class="exportImg" src="@/assets/images/export.png" />
<div class="table-item">
<el-table :data="exportTableData">
<el-table-column prop="issueTime" label="招标发布时间" width="110"></el-table-column>
<el-table-column prop="tenderee" label="招标成员" width="200"></el-table-column>
<el-table-column prop="stockPercent" label="持股比例" min-width="100"></el-table-column>
<el-table-column prop="projectName" label="项目名称" min-width="220"></el-table-column>
<el-table-column prop="bidAmount" label="预算金额" min-width="100"></el-table-column>
<el-table-column prop="address" label="项目地区" min-width="100"></el-table-column>
<el-table-column prop="subjectMatter" label="招标采购分类" min-width="130"></el-table-column>
<el-table-column prop="projectType" label="项目类型" min-width="100"></el-table-column>
<el-table-column prop="agency" label="代理单位" min-width="160"></el-table-column>
<el-table-column
v-for="(item,index) in forData"
:key="index"
:label="item.label"
:prop="item.prop"
:width="item.width"
:min-width="item.minWidth"></el-table-column>
</el-table>
</div>
<div class="input">
导出数量:
<el-input placeholder="" v-model="value" oninput="value=value.replace(/[^\d]/g,'')">
<template slot="append"></template>
</el-input>
<p v-if="value > 2000"><i class="el-icon-error"></i>最多支持导出2000条,如需更多请联系销售人员</p>
<div>
导出数量:
<el-input placeholder="" v-model="value" oninput="value=value.replace(/[^\d]/g,'')">
<template slot="append"></template>
</el-input>
<p class="tips1"><span>导出文件格式为Excel表格</span><span>最多导出2000条数据,若需导出更多数据,请联系大司空工作人员。</span></p>
</div>
<p class="tips2" v-if="value > 2000">导出数据最多支持导出2000条数据</p>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="clickEXCEL">确认导出</el-button>
<el-button @click="cancel(1)">取消</el-button>
<el-button @click="handleCancel()">取消</el-button>
<el-button type="primary" @click="handleEXCEL">确认导出</el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="dialogExportVisible1" width="640px" append-to-body class="dialogExport">
<el-dialog :visible.sync="dialogExportVisible1" width="348px" append-to-body class="dialogExport1" @close="handleCancel2">
<template slot="title">
<img class="tip-img" src="@/assets/images/icon.png" />
数据导出
<img class="tip-img" src="@/assets/images/success.png" />
提交成功
</template>
<div class="content">
<img class="success" src="@/assets/images/success.png" />
<p class="p1">导出成功</p>
<p class="p2">
在个人中心查看导出表格
<span @click="toUrl">前往个人中心</span>
前往个人中心查看导出的全部表格
<!--<span @click="toUrl">前往个人中心</span>-->
</p>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="downloadFile(exportData.url,exportData.originalName)">下载表格</el-button>
<el-button @click="cancel(2)">取消</el-button>
<el-button @click="handleCancel2()">取消</el-button>
<!--<el-button type="primary" @click="downloadFile(exportData.url,exportData.originalName)">下载表格</el-button>-->
<el-button type="primary" @click="toUrl">前往个人中心</el-button>
</div>
</el-dialog>
</div>
......@@ -61,39 +64,60 @@ export default {
data() {
return {
dialogExportVisible: this.data.dialogExportVisible,
dialogExportVisible1: this.data.dialogExportVisible1,
dialogExportVisible1: false,
exportTableData:[],
forData:[],
value:'',
}
},
watch: {
'data.exportEXCEL':{
handler(newValue, oldValue) {
if(newValue === true){
this.dialogExportVisible=false;
this.dialogExportVisible1=true;
}
},
immediate: true
},
},
created() {
this.exportTableData=this.data.exportTableData
this.forData=this.data.forData;
},
computed: {
},
methods: {
clickEXCEL(){
this.$emit('clickEXCEL',this.value)
handleEXCEL(){
this.$nextTick(() => {
this.$emit('clickEXCEL',this.value)
})
},
handleCancel(){
this.dialogExportVisible=false;
this.$parent.cancel();
},
cancel(key){
this.$emit('cancel',key)
handleCancel2(){
this.dialogExportVisible1=false;
this.$parent.cancel();
},
downloadFile(url, fileName) {
downloadFile() {
const x = new XMLHttpRequest()
x.open("GET", url, true)
x.open("GET", this.exportEXCEL.url, true)
x.responseType = 'blob'
x.onload=function(e) {
const url = window.URL.createObjectURL(x.response)
const a = document.createElement('a')
a.href = url
a.download = fileName
a.download = this.exportEXCEL.fileName
a.click()
a.remove()
}
x.send()
},
toUrl(){
this.$parent.cancel();
this.dialogExportVisible1=false;
this.$router.push({
path: '/user/profile',
......@@ -129,12 +153,41 @@ export default {
}
}
}
.exportTitle{
height: 34px;
margin-bottom: 20px;
span{
color: rgba(35,35,35,0.8);
font-size: 14px;
margin-right: 12px;
}
p{
display: inline-block;
width: 669px;
border: 1px solid #D9D9D9;
border-radius: 2px;
height: 32px;
line-height: 32px;
color: #232323;
margin: 0;
padding-left: 12px;
}
}
.exportImg{
width: 84px;
height: 24px;
display: block;
}
.el-dialog__body{
padding: 16px;
padding: 16px 16px 24px 16px;
border-bottom: 1px solid #E5E6EB;
.input{
margin-top: 16px;
position: relative;
.el-input{
width: 160px;
width: 120px;
border-radius: 2px;
height: 32px;
.el-input__inner{
......@@ -145,19 +198,30 @@ export default {
.el-input-group__append{
padding: 0 14px;
}
p{
color: #FF3C3C;
.el-input-group__append:hover{
background: #F5F7FA !important;
}
.tips1{
color: rgba(35,35,35,0.4);
font-size: 12px;
margin-left: 12px;
display: inline-block;
i{
font-size: 14px;
margin-right: 4px;
position: absolute;
left: 220px;
top: 0;
span{
display: block;
}
}
.tips2{
color: #FF3C3C;
font-size: 12px;
margin-top: 8px;
line-height: 20px;
margin-left: 75px;
}
}
.content{
text-align: center;
/*text-align: center;*/
margin-top: 36px;
.success{
width: 64px;
......@@ -168,14 +232,47 @@ export default {
padding: 0;
margin: 0;
}
.p1{
color: #232323;
font-size: 16px;
margin-bottom: 8px;
}
}
.el-dialog__footer{
text-align: right;
padding: 16px 20px;
}
}
}
.dialogExport1{
::v-deep .el-dialog{
.el-dialog__header{
height: 48px;
line-height: 48px;
padding: 0 16px;
font-weight: bold;
color: #1D2129;
font-size: 16px;
.tip-img{
width: 18px;
height: 18px;
margin-right: 7px;
margin-bottom: -3px;
}
.el-dialog__headerbtn{
font-size: 20px;
font-weight: bold;
top: 15px;
.el-dialog__close{
color:#999999;
}
}
}
.el-dialog__body{
padding: 0 16px;
.content{
text-align: center;
.p2{
color: rgba(35,35,35,0.4);
font-size: 14px;
margin: 6px;
span{
color:#0081FF;
cursor: pointer;
......@@ -184,8 +281,8 @@ export default {
}
}
.el-dialog__footer{
text-align: center;
padding-bottom: 24px;
text-align: right;
padding: 16px 20px;
}
}
}
......
......@@ -10,13 +10,13 @@
<div class="table_search">
<div>
<!-- 未点击前的输入框样式 -->
<div class="normal-search-container" :class="{'is-hover-search' : hover}" @mouseover="searchHover($event)"
@mouseleave="searchUnHover($event,searchParam.companyName)">
<div class="normal-search-container" :class="{'is-hover-search' : searchHoverStatus}" @mouseover="searchHover($event)"
@mouseleave="searchUnHover($event)">
<img src="@/assets/images/enterprise/enterprise-search-icon.svg" alt="">
<span v-show="!hover && !searchParam.companyName">搜索</span>
<el-input v-model="searchParam.companyName" placeholder="输入关键词查询"
@focus="searchFocus($event)" @blur="searchBlur($event)" @keydown.native.enter="getCustomerList"
@input="value => searchInput(value)" v-show="hover || searchParam.companyName">
<span v-if="!searchHoverStatus && !searchParam.companyName">搜索</span>
<el-input v-model="searchParam.companyName" placeholder="输入关键词查询" style="width:238px;" @focus="searchFocus($event)"
@blur="searchBlur($event)" @input="value => searchInput(value)" v-else="searchHoverStatus || searchParam.companyName"
@keydown.native.enter="handleSearch">
<template slot="suffix">
<transition mode="out-in" appear name="fade">
<img src="@/assets/images/enterprise/search-input-clear-icon.svg" alt="" @click.stop="searchParam.companyName = '';getCustomerList()"
......@@ -253,6 +253,7 @@ export default {
RLcompanyName:'',//重新认领企业名称
isSkeleton:true,
showClearIcon: false,
searchHoverStatus: false,
hover: false,
}
},
......@@ -345,6 +346,12 @@ export default {
this.handleCurrentChange(1)
}
},
handleSearch() {
this.$nextTick(() => {
this.searchParam.pageNum = 1;
this.getCustomerList();
});
},
//翻页
handleCurrentChange(val) {
this.isSkeleton = true
......@@ -358,19 +365,28 @@ export default {
}
},
searchBlur(event) {
this.showClearIcon=false
const { target } = event;
// 失去焦点没有文字
if (!target?.value?.length) {
this.searchHoverStatus = false;
}
this.showClearIcon = false;
this.getCustomerList();
},
searchInput(value) {
if (value?.length) {
this.showClearIcon=true
this.showClearIcon = true;
} else {
this.showClearIcon = false;
}
},
searchHover(event) {
this.hover=true
this.searchHoverStatus = true;
},
searchUnHover(event, value) {
if (!value) {
this.hover=false
searchUnHover(event) {
if (!this.searchParam.companyName) {
this.showClearIcon = false;
this.searchHoverStatus = false;
}
},
}
......
......@@ -7,7 +7,8 @@
:query-params="queryParams"
:total="tableDataTotal"
:headerFixed="true"
:isExcel="false"
:isExcel="true"
@handle-excel="clickDialog"
@handle-search="handleSearch"
>
<template slot="slot">
......@@ -69,18 +70,21 @@
<div>{{scope.row.stockPercent || '--'}}{{scope.row.stockPercent ? '%':''}}</div>
</template>
</tables>
<ExportDialog :data="exportData" v-if="exportData.dialogExportVisible" @clickEXCEL="clickEXCEL"></ExportDialog>
</div>
</template>
<script>
import {memberList,memberCount} from '@/api/detail/groupAccount/groupAccount'
import {memberList,memberCount,memberListExport} from '@/api/detail/groupAccount/groupAccount'
import dataRegion from '@/assets/json/dataRegion'
import { getDictType } from '@/api/main'
import mixin from '../../party-a/mixins/mixin'
import ExportDialog from "../../../component/export-dialog"
export default {
name: 'members',
props: ['customerId'],
mixins: [mixin],
components:{ExportDialog},
data(){
return{
isSkeleton:true,
......@@ -175,6 +179,43 @@
cgblList:['100%','50%以上','20%以上','5%以上','1%-5%'],
cgblName:'',
paramsData:{}, //储存组件筛选的条件
dataEXCEL:{},
exportData:{
title:'集团成员',
dialogExportVisible:false,
forData: [
{label: '企业名称', prop: 'companyName',slot: true,minWidth: '250'},
// {label: '科技型企业', prop: 'companyName', slot: true,minWidth: '160'},
{label: '成员层级', prop: 'combineMemberLevel',slot: true,minWidth: '100'},
// {label: '主营业务', prop: 'projectName', slot: true,minWidth: '260'},
{label: '法定代表人', prop: 'corporatePerson',slot: true,minWidth: '100'},
{label: '企业地区', prop: 'address',minWidth: '120'},
{label: '注册资本', prop: 'regCapital',minWidth: '150'},
{label: '持股比例', prop: 'stockPercent',minWidth: '100'},
{label: '成立日期', prop: 'registeredDate', slot: true,minWidth: '100'},
],
exportTableData:[
{
companyName:'XXX集团有限公司',
combineMemberLevel:'集团本身',
corporatePerson:'柳xx',
regCapital:'8000.0万元',
address:'海南',
stockPercent:'32%',
registeredDate:'2017-9-17',
},
{
companyName:'XXX集团有限公司',
combineMemberLevel:'一级企业',
corporatePerson:'江xx',
regCapital:'14000.0万元',
address:'重庆',
stockPercent:'40%',
registeredDate:'2018-9-17',
},
],
exportEXCEL:false
},
}
},
watch:{
......@@ -253,6 +294,7 @@
if(!data.combineId){
data.combineId=this.customerId;
}
this.dataEXCEL=JSON.parse(JSON.stringify(data));
memberList(data).then(res=>{
this.isSkeleton = false
this.tableLoading = false
......@@ -435,6 +477,30 @@
this.handleQuery(params)
this.$emit('handle-scroll')
},
clickDialog(){
this.exportData.dialogExportVisible=true;
},
clickEXCEL(value) {
if(value > 2000){
return
}
this.dataEXCEL.exportExeclName=this.exportData.title;
if(value){
this.dataEXCEL.pageSize=value
}else {
this.dataEXCEL.pageSize=2000;
}
delete this.dataEXCEL.pageNum
memberListExport(this.dataEXCEL).then(res=>{
if(res.code === 200){
this.exportData.exportEXCEL=true;
}
})
},
cancel(){
this.exportData.dialogExportVisible=false;
this.exportData.exportEXCEL={}
},
}
}
</script>
......
......@@ -9,7 +9,7 @@
:headerFixed="true"
:isExcel="true"
@handle-search="handleSearch"
@handle-excel="clickEXCEL"
@handle-excel="clickDialog"
>
<template slot="slot">
......@@ -51,6 +51,8 @@
<div>{{scope.row.bidAmount || '--'}}{{scope.row.bidAmount ? '万元':''}}</div>
</template>
</tables>
<ExportDialog :data="exportData" v-if="exportData.dialogExportVisible" @clickEXCEL="clickEXCEL"></ExportDialog>
</div>
</template>
......@@ -59,11 +61,12 @@
import {businessList,exportWinBid} from '@/api/detail/groupAccount/groupAccount'
import dataRegion from '@/assets/json/dataRegion1'
import { getDictType } from '@/api/main'
import ExportDialog from "../../../component/export-dialog"
export default {
name: 'qualifications',
props: ['customerId','combineName'],
mixins: [mixin],
components:{},
components:{ExportDialog},
data(){
return{
isSkeleton:true,
......@@ -108,7 +111,48 @@
],
timeList: ['近三天', '近七天', '近半月', '自定义'],
moneyList: ['5000万以下', '5000万-1亿', '1亿-5亿', '5亿-10亿','10亿以上', '自定义'],
dataEXCEL:{}
dataEXCEL:{},
exportData:{
title:'集团业绩',
dialogExportVisible:false,
forData: [
{label: '中标时间', prop: 'bidTime',slot: true,minWidth: '100'},
{label: '中标成员', prop: 'companyName', slot: true,minWidth: '160'},
{label: '持股比例', prop: 'stockPercent',slot: true,minWidth: '80'},
{label: '项目名称', prop: 'projectName', slot: true,minWidth: '260'},
{label: '中标金额', prop: 'bidAmount',slot: true,minWidth: '140'},
{label: '中标地区', prop: 'address',minWidth: '100'},
{label: '业绩类型', prop: 'boundType',minWidth: '80'},
{label: '项目类型', prop: 'projectType',minWidth: '80'},
{label: '业主单位', prop: 'projectUnit', slot: true,minWidth: '160'},
],
exportTableData:[
{
bidTime:'2023-11-07',
companyName:'XXX集团有限公司',
stockPercent:'1.56%',
projectName:'新建沪渝蓉高铁武汉至宜昌段汉川东至宜昌北通信系统及铁塔静态验...',
bidAmount:'303.837529万元',
address:'辽宁省',
boundType:'施工',
projectType:'铁路工程',
projectUnit:'xxx有限责任公司',
},
{
bidTime:'2023-11-07',
companyName:'XXX集团有限公司',
stockPercent:'1.24%',
projectName:'国电电力-胜利电厂-灵活性改造可行性研究报告编制',
bidAmount:'465万元',
address:'云南省',
boundType:'施工',
projectType:'铁路工程',
projectUnit:'xxx有限责任公司',
},
],
exportEXCEL:false
},
}
},
created() {
......@@ -267,35 +311,30 @@
this.handleQuery(params)
this.$emit('handle-scroll')
},
clickEXCEL() {
this.dataEXCEL.combineName=this.combineName;
if(this.tableDataTotal > 2000){
this.dataEXCEL.pageSize=2000;
clickDialog(){
this.exportData.dialogExportVisible=true;
},
clickEXCEL(value) {
if(value > 2000){
return
}
this.dataEXCEL.exportExeclName=this.exportData.title;
if(value){
this.dataEXCEL.pageSize=value
}else {
this.dataEXCEL.pageSize=this.tableDataTotal;
this.dataEXCEL.pageSize=2000;
}
delete this.dataEXCEL.pageNum
exportWinBid(this.dataEXCEL).then(res=>{
if(res.code === 200){
this.downloadFile(res.data.url,res.data.originalName)
this.exportData.exportEXCEL=true;
}
})
// this.$download.exportByPost('/combine/info/export/win/bid',this.dataEXCEL,'集团中标.xlsx');
},
downloadFile(url, fileName) {
const x = new XMLHttpRequest()
x.open("GET", url, true)
x.responseType = 'blob'
x.onload=function(e) {
const url = window.URL.createObjectURL(x.response)
const a = document.createElement('a')
a.href = url
a.download = fileName
a.click()
a.remove()
}
x.send()
}
cancel(){
this.exportData.dialogExportVisible=false;
this.exportData.exportEXCEL={}
},
}
}
</script>
......
......@@ -2,12 +2,13 @@
<div class="performance">
<head-form-new
ref="headForm"
title=""
title="集团招标"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="false"
@handle-search="handleSearch"
@handle-excel="clickDialog"
></head-form-new>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables
......@@ -45,53 +46,7 @@
<div>{{scope.row.bidAmount || '--'}}{{scope.row.bidAmount ? '万元':''}}</div>
</template>
</tables>
<el-dialog :visible.sync="dialogExportVisible" width="640px" append-to-body class="dialogExport">
<template slot="title">
<img class="tip-img" src="@/assets/images/icon.png" />数据导出
</template>
<div class="table-item">
<el-table :data="exportTableData">
<el-table-column prop="issueTime" label="招标发布时间" width="110"></el-table-column>
<el-table-column prop="tenderee" label="招标成员" width="200"></el-table-column>
<el-table-column prop="stockPercent" label="持股比例" min-width="100"></el-table-column>
<el-table-column prop="projectName" label="项目名称" min-width="220"></el-table-column>
<el-table-column prop="bidAmount" label="预算金额" min-width="100"></el-table-column>
<el-table-column prop="address" label="项目地区" min-width="110"></el-table-column>
<el-table-column prop="subjectMatter" label="招标采购分类" min-width="130"></el-table-column>
<el-table-column prop="projectType" label="项目类型" min-width="100"></el-table-column>
<el-table-column prop="agency" label="代理单位" min-width="160"></el-table-column>
</el-table>
</div>
<div class="input">
导出数量:
<el-input placeholder="" v-model="value" oninput="value=value.replace(/[^\d]/g,'')">
<template slot="append"></template>
</el-input>
<p v-if="value > 2000"><i class="el-icon-error"></i>最多支持导出2000条,如需更多联系大司空客服人员</p>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="clickEXCEL">确认导出</el-button>
<el-button @click="cancel">取消</el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="dialogExportVisible1" width="640px" append-to-body class="dialogExport">
<template slot="title">
<img class="tip-img" src="@/assets/images/icon.png" />
数据导出
</template>
<div class="content">
<img class="success" src="@/assets/images/success.png" />
<p class="p1">导出成功</p>
<p class="p2">
可在个人中心查看导出表格
<span @click="toUrl">前往个人中心</span>
</p>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="downloadFile(exportData.url,exportData.originalName)">下载表格</el-button>
<el-button @click="dialogExportVisible1 = false">取消</el-button>
</div>
</el-dialog>
<ExportDialog :data="exportData" v-if="exportData.dialogExportVisible" @clickEXCEL="clickEXCEL"></ExportDialog>
</div>
</template>
......@@ -102,11 +57,12 @@
import {bidPage,exportBid} from '@/api/detail/groupAccount/groupAccount'
import dataRegion from '@/assets/json/dataRegion1'
import { getDictType } from '@/api/main'
import ExportDialog from "../../../component/export-dialog"
export default {
name: 'qualifications',
props: ['customerId'],
mixins: [mixin],
components:{CustomTimeSelect,CustomMoneySelect},
components:{CustomTimeSelect,CustomMoneySelect,ExportDialog},
data(){
return{
isSkeleton:true,
......@@ -157,8 +113,6 @@
timeList: ['近三天', '近七天', '近半月', '自定义'],
moneyList: ['5000万以下', '5000万-1亿', '1亿-5亿', '5亿-10亿','10亿以上', '自定义'],
dataEXCEL:{},
dialogExportVisible:false,
dialogExportVisible1:false,
exportTableData:[
{
"address":"四川省-成都市",
......@@ -186,7 +140,46 @@
},
],
value:'',
exportData:{}
exportData:{
title:'集团招标',
dialogExportVisible:false,
forData: [
{label: '招标发布时间', prop: 'issueTime',minWidth: '110'},
{label: '招标成员', prop: 'tenderee', slot: true,minWidth: '130'},
{label: '持股比例', prop: 'stockPercent',slot: true,minWidth: '80'},
{label: '项目名称', prop: 'projectName', slot: true,minWidth: '240'},
{label: '预算金额', prop: 'bidAmount',slot: true,minWidth: '130'},
{label: '项目地区', prop: 'address',minWidth: '110'},
{label: '招标采购分类', prop: 'subjectMatter',minWidth: '110'},
{label: '项目类型', prop: 'projectType',minWidth: '80',slot: true},
{label: '代理单位', prop: 'agency',minWidth: '160',slot: true},
],
exportTableData:[
{
issueTime:'2023-11-07',
tenderee:'XXX有限公司',
stockPercent:'1.56%',
projectName:'新建沪渝蓉高铁武汉至宜昌段汉川东至宜昌北通信系统及铁塔静态验...',
bidAmount:'303.837529万元',
address:'辽宁省',
subjectMatter:'施工',
projectType:'铁路工程',
agency:'xxx有限责任公司',
},
{
issueTime:'2023-11-07',
tenderee:'XXX有限公司',
stockPercent:'1.24%',
projectName:'国电电力-胜利电厂-灵活性改造可行性研究报告编制',
bidAmount:'465万元',
address:'云南省',
subjectMatter:'施工',
projectType:'铁路工程',
agency:'xxx有限责任公司',
},
],
exportEXCEL:{}
},
}
},
created() {
......@@ -320,53 +313,29 @@
clickFocus(e){
document.getElementById(e).classList.toggle('span-ba')
},
clickDialog(){
this.dialogExportVisible=true;
this.exportData.dialogExportVisible=true;
},
clickEXCEL() {
if(this.value > 2000){
clickEXCEL(value) {
if(value > 2000){
return
}
this.dialogExportVisible=false;
this.dataEXCEL.combineName=this.combineName;
if(this.value){
this.dataEXCEL.pageSize=this.value
this.dataEXCEL.exportExeclName=this.exportData.title;
if(value){
this.dataEXCEL.pageSize=value
}else {
this.dataEXCEL.pageSize=this.tableDataTotal > 2000 ? 2000 : this.tableDataTotal;
this.dataEXCEL.pageSize=2000;
}
delete this.dataEXCEL.pageNum
exportBid(this.dataEXCEL).then(res=>{
if(res.code === 200){
this.dialogExportVisible1=true;
this.value=''
this.exportData=res.data;
this.exportData.exportEXCEL=true;
}
})
},
cancel(){
this.dialogExportVisible=false
this.value=''
},
downloadFile(url, fileName) {
const x = new XMLHttpRequest()
x.open("GET", url, true)
x.responseType = 'blob'
x.onload=function(e) {
const url = window.URL.createObjectURL(x.response)
const a = document.createElement('a')
a.href = url
a.download = fileName
a.click()
a.remove()
}
x.send()
},
toUrl(){
this.dialogExportVisible1=false;
this.$router.push({
path: '/user/profile',
})
this.exportData.dialogExportVisible=false;
this.exportData.exportEXCEL={}
},
}
}
......
<template>
<div class="head-form-new" :class="headerFixed ? 'headerFixed':''">
<div class="common-title" v-if="title">{{ title }}</div>
<div class="common-title" v-if="title && title !='集团招标'">{{ title }}</div>
<div class="flex-box query-box">
<div class="flex-box query-params">
<div class="headForm-from">
......@@ -78,7 +78,7 @@
</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-hasPermi="['combine:info:export:win:bid','combine:info:export:bid']" v-if="isExcel && title ==='集团业绩'"
<span class="flex-box ability-excel" v-hasPermi="['combine:info:export:win:bid','combine:info:export:bid']" v-if="isExcel && title ==='集团业绩'|| 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>
......@@ -296,7 +296,7 @@ export default {
this.$emit('handle-search');
},
clickEXCEL() {
if (this.title === '集团业绩') {
if (this.title === '集团业绩' || this.title === '集团招标' || this.title === '集团成员') {
this.$emit('handle-excel');
} else {
this.$message({
......
......@@ -123,7 +123,7 @@
<div class="title-right">
<p>
<img src="@/assets/images/EXCEL.png" alt="">
<span class="excel" @click="$message({message: '功能正在开发中',type: 'warning'})">导出EXCEL</span>
<span class="excel" @click="clickDialog">导出EXCEL</span>
</p>
</div>
......@@ -463,6 +463,8 @@
<span class="dialog-footer-btn2" @click="dialogVisible2 = false">关闭</span>
</div>
</el-dialog>
<ExportDialog :data="exportData" v-if="exportData.dialogExportVisible" @clickEXCEL="clickEXCEL"></ExportDialog>
</div>
</template>
......@@ -471,10 +473,11 @@ import { encodeStr } from "@/assets/js/common.js";
import jsk_data from '../../../../../public/jsk.json';
import skeleton from '@/views/project/projectList/component/skeleton';
import api from '@/api/enterpriseData/enterpriseData.js';
import ExportDialog from "../../../component/export-dialog"
import "@/assets/styles/public.scss";
export default {
name: 'Owner',
components: { skeleton },
components: { skeleton,ExportDialog },
data() {
return {
encodeStr,
......@@ -521,25 +524,22 @@ export default {
fieldshow: false,
fieldText: '默认排序',
sort: '3', //查询结果排序方式
fieldOptions: [{
key: "3",
value: "默认排序",
status: true,
},
{
key: "5",
value: "招标数量从多到少",
status: false,
},
{
key: "7",
value: "土地数量从多到少",
status: false,
},
fieldOptions: [
{
key: "3",
value: "默认排序",
status: true,
},
{
key: "5",
value: "招标数量从多到少",
status: false,
},
{
key: "7",
value: "土地数量从多到少",
status: false,
},
],
companyId: '',
companyName: '',
......@@ -550,7 +550,69 @@ export default {
tableData: [],
total: 0,
pageNum: 1,
pageSize: 50
pageSize: 50,
dataEXCEL:{},
exportData:{
title:'查城投平台',
dialogExportVisible:false,
forData: [
{label: '公司名称', prop: 'companyName',slot: true,minWidth: '140'},
{label: '区域', prop: 'province', slot: true,minWidth: '160'},
{label: '招标数量', prop: 'biddingCount',slot: true,minWidth: '80'},
{label: '城投拿地', prop: 'landInfoCount', slot: true,minWidth: '80'},
{label: '供应商', prop: 'supplierCount',slot: true,minWidth: '100'},
{label: '债券余额(亿元)', prop: 'bondBalance',minWidth: '130'},
{label: '主体评级', prop: 'bratingSubjectLevel',minWidth: '80'},
{label: '行政级别', prop: 'uipExecutiveLevel',minWidth: '80'},
{label: '股东背景', prop: 'shareholderBg', slot: true,minWidth: '100'},
{label: '股权关系', prop: 'equityRelationship', slot: true,minWidth: '100'},
{label: '平台重要性', prop: 'platformImportance', slot: true,minWidth: '130'},
{label: '城投业务类型', prop: 'uipBusinessType', slot: true,minWidth: '130'},
{label: '实控人', prop: 'actualController', slot: true,minWidth: '140'},
{label: '最新报告期', prop: 'latestReportPeriod', slot: true,minWidth: '120'},
{label: '总资产(亿元)', prop: 'totalAssets', slot: true,minWidth: '120'},
{label: '归母净资产', prop: 'belongNetAssets', slot: true,minWidth: '120'},
],
exportTableData:[
{
companyName:'xxx有限公司',
province:'重庆-重庆市-永川区',
biddingCount:'64',
landInfoCount:'4',
supplierCount:'456',
bondBalance:'73',
bratingSubjectLevel:'AAA',
uipExecutiveLevel:'区县级',
shareholderBg:'城建',
equityRelationship:'直接控股',
platformImportance:'主要平台',
uipBusinessType:'综合性平台',
actualController:'xxx监督管理委员会',
latestReportPeriod:'2022-12-21',
totalAssets:'55.47',
belongNetAssets:'21.74',
},
{
companyName:'xxx有限公司',
province:'北京-北京市-大兴区',
biddingCount:'25',
landInfoCount:'2',
supplierCount:'465',
bondBalance:'61',
bratingSubjectLevel:'AAA',
uipExecutiveLevel:'区县级',
shareholderBg:'政府',
equityRelationship:'间接控股',
platformImportance:'一般平台',
uipBusinessType:'土地开发整理',
actualController:'xxx监督管理委员会',
latestReportPeriod:'2022-12-21',
totalAssets:'764.74',
belongNetAssets:'62.13',
},
],
exportEXCEL:{}
},
};
},
computed: {
......@@ -568,9 +630,6 @@ export default {
flag = true;
arr.push(data);
}
this.conditionsArr = arr;
return flag;
},
......@@ -633,9 +692,6 @@ export default {
this.jskBidQueryDto = obj;
this.search();
},
addressListfn() {
var str = [];
for (let x = 0; x < 3; x++) {
......@@ -680,19 +736,14 @@ export default {
}
this.addressList = str;
},
reset() {
Object.assign(this.$data, this.$options.data.call(this)); //重置data
this.init();
},
init() {
this.search();
this.addressListfn();
},
checkuipExecutivebtn(val) {
this.uipExecutiveText = [];
this.checkuipExecutive = true;
......@@ -932,6 +983,7 @@ export default {
delete params.equityRelationship;
}
this.isSkeleton = true;
this.dataEXCEL=JSON.parse(JSON.stringify(params));
api.uipSerach(params).then(res => {
this.isSkeleton = false;
this.tableData = res.rows;
......@@ -945,6 +997,30 @@ export default {
// this.$router.push({path:'/home',query: {id:'1'}})
// 跳转地址
},
clickDialog(){
this.exportData.dialogExportVisible=true;
},
clickEXCEL(value) {
if(value > 2000){
return
}
this.dataEXCEL.exportExeclName=this.exportData.title;
if(value){
this.dataEXCEL.pageSize=value
}else {
this.dataEXCEL.pageSize=2000;
}
delete this.dataEXCEL.pageNum
api.uipSerachExport(this.dataEXCEL).then(res => {
if(res.code === 200){
this.exportData.exportEXCEL=true;
}
})
},
cancel(){
this.exportData.dialogExportVisible=false;
this.exportData.exportEXCEL={}
},
},
......
......@@ -13,7 +13,7 @@
</div>
<div class="flex-box query-ability">
<!--<span class="flex-box"><img src="@/assets/images/ability_vs.png">地区经济对比</span>-->
<span class="flex-box" @click="handleMessage"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
<!--<span class="flex-box" @click="handleMessage"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>-->
</div>
</div>
<div class="table-item" ref="regionalStyle" id="regionalStyle">
......
......@@ -12,7 +12,7 @@
</el-form>
</div>
<div class="flex-box query-ability">
<span class="flex-box" @click="handleMessage"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
<!--<span class="flex-box" @click="handleMessage"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>-->
</div>
</div>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
......
......@@ -14,7 +14,7 @@
</el-form>
</div>
<div class="flex-box query-ability">
<span class="flex-box" @click="handleMessage"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
<!--<span class="flex-box" @click="handleMessage"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>-->
</div>
</div>
<div class="table-item">
......
......@@ -41,7 +41,7 @@
<span class="total">{{tableDataTotal}}</span>
</div>
<div class="flex-box query-ability">
<span class="flex-box" @click="handleMessage"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
<!--<span class="flex-box" @click="handleMessage"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>-->
</div>
</div>
<div class="table-item">
......
......@@ -26,7 +26,7 @@
</div>
<div class="flex-box query-ability">
<router-link to="/macro/economies?activeName=four" tag="a" class="a-link"><span class="flex-box"><img src="@/assets/images/ability_vs.png">地区经济对比</span></router-link>
<span class="flex-box" @click="handleMessage"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
<!--<span class="flex-box" @click="handleMessage"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>-->
</div>
</div>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
......
......@@ -142,7 +142,7 @@
</div>
<div class="flex-box query-ability">
<!--<span class="total">共{{tableDataTotal}}条</span>-->
<span class="flex-box" @click="handleMessage"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
<span class="flex-box" @click="clickDialog"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
</div>
</div>
<div class="table-item">
......@@ -281,6 +281,7 @@
<span class="dialog-footer-btn2" @click="dialogVisible1 = false">关闭</span>
</div>
</el-dialog>
<ExportDialog :data="exportData" v-if="exportData.dialogExportVisible" @clickEXCEL="clickEXCEL"></ExportDialog>
</div>
</template>
......@@ -288,14 +289,16 @@
import {encodeStr} from "@/assets/js/common.js"
import skeleton from '../component/skeleton'
import dataRegion from '@/assets/json/dataRegion'
import { uipGroupData,urbanInvestmentPage,urbanInvestmentStatistics,claim,location,customerStatus,historyClaim,urbanInvestmentExport } from '@/api/macro/macro'
import api from '@/api/enterpriseData/enterpriseData.js';
import { uipGroupData,urbanInvestmentPage,urbanInvestmentStatistics,claim,location,customerStatus,historyClaim } from '@/api/macro/macro'
import { infoHeader } from '@/api/detail/party-a/index'
import Region from '../component/region'
import ExportDialog from "../../component/export-dialog"
export default {
name: 'Urban',
components: {
Region,skeleton
Region,skeleton,ExportDialog
},
data() {
return {
......@@ -340,7 +343,69 @@ export default {
dataQuery:{},
province:'',
provinceId:[],
isSkeleton:true
isSkeleton:true,
dataEXCEL:{},
exportData:{
title:'城投平台',
dialogExportVisible:false,
forData: [
{label: '公司名称', prop: 'companyName',slot: true,minWidth: '140'},
{label: '区域', prop: 'province', slot: true,minWidth: '160'},
{label: '招标数量', prop: 'biddingCount',slot: true,minWidth: '80'},
{label: '城投拿地', prop: 'landInfoCount', slot: true,minWidth: '80'},
{label: '供应商', prop: 'supplierCount',slot: true,minWidth: '100'},
{label: '债券余额(亿元)', prop: 'bondBalance',minWidth: '130'},
{label: '主体评级', prop: 'bratingSubjectLevel',minWidth: '80'},
{label: '行政级别', prop: 'uipExecutiveLevel',minWidth: '80'},
{label: '股东背景', prop: 'shareholderBg', slot: true,minWidth: '100'},
{label: '股权关系', prop: 'equityRelationship', slot: true,minWidth: '100'},
{label: '平台重要性', prop: 'platformImportance', slot: true,minWidth: '130'},
{label: '城投业务类型', prop: 'uipBusinessType', slot: true,minWidth: '130'},
{label: '实控人', prop: 'actualController', slot: true,minWidth: '140'},
{label: '最新报告期', prop: 'latestReportPeriod', slot: true,minWidth: '120'},
{label: '总资产(亿元)', prop: 'totalAssets', slot: true,minWidth: '120'},
{label: '归母净资产', prop: 'belongNetAssets', slot: true,minWidth: '120'},
],
exportTableData:[
{
companyName:'xxx有限公司',
province:'重庆-重庆市-永川区',
biddingCount:'64',
landInfoCount:'4',
supplierCount:'456',
bondBalance:'73',
bratingSubjectLevel:'AAA',
uipExecutiveLevel:'区县级',
shareholderBg:'城建',
equityRelationship:'直接控股',
platformImportance:'主要平台',
uipBusinessType:'综合性平台',
actualController:'xxx监督管理委员会',
latestReportPeriod:'2022-12-21',
totalAssets:'55.47',
belongNetAssets:'21.74',
},
{
companyName:'xxx有限公司',
province:'北京-北京市-大兴区',
biddingCount:'25',
landInfoCount:'2',
supplierCount:'465',
bondBalance:'61',
bratingSubjectLevel:'AAA',
uipExecutiveLevel:'区县级',
shareholderBg:'政府',
equityRelationship:'间接控股',
platformImportance:'一般平台',
uipBusinessType:'土地开发整理',
actualController:'xxx监督管理委员会',
latestReportPeriod:'2022-12-21',
totalAssets:'764.74',
belongNetAssets:'62.13',
},
],
exportEXCEL:{}
},
}
},
watch:{
......@@ -461,33 +526,6 @@ export default {
// this.isSkeleton = true
const params = { pageNum: this.pageIndex, pageSize: this.pageSize,type:Number(this.queryParams.radio)}
const param={}
// if(this.queryParams.address.length > 0){
// let arr = this.$refs.address.getCheckedNodes();
// let provinceCode = [],cityCode = [],countyCode = [];
// for (var i in arr) {
// if (arr[i].parent) {
// if (!arr[i].parent.checked) {
// arr[i].hasChildren && cityCode.push(arr[i].value);
// !arr[i].hasChildren && countyCode.push(arr[i].value);
// }
// } else {
// provinceCode.push(arr[i].value)
// }
// }
// if(provinceCode.length > 0){
// params.provinceIds=provinceCode
// param.provinceIds=provinceCode
// }
// if(cityCode.length > 0){
// params.cityIds=cityCode
// param.cityIds=cityCode
// }
// if(countyCode.length > 0){
// params.areaIds=countyCode
// param.areaIds=countyCode
// }
// }
if(this.provinceId.length > 0){
params.provinceIds=[this.provinceId[0]]
}
......@@ -533,7 +571,7 @@ export default {
if(this.queryParams.keyword){
params.keyword=this.queryParams.keyword
}
this.dataEXCEL=JSON.parse(JSON.stringify(params));
urbanInvestmentPage(params).then(res => {
this.isSkeleton = false;
this.tableLoading = false;
......@@ -806,7 +844,31 @@ export default {
// })
}
})
}
},
clickDialog(){
this.exportData.dialogExportVisible=true;
},
clickEXCEL(value) {
if(value > 2000){
return
}
this.dataEXCEL.exportExeclName=this.exportData.title;
if(value){
this.dataEXCEL.pageSize=value
}else {
this.dataEXCEL.pageSize=2000;
}
delete this.dataEXCEL.pageNum
urbanInvestmentExport(this.dataEXCEL).then(res=>{
if(res.code === 200){
this.exportData.exportEXCEL=true;
}
})
},
cancel(){
this.exportData.dialogExportVisible=false;
this.exportData.exportEXCEL={}
},
},
}
</script>
......
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