Commit 4ddb242d authored by tianhongyang's avatar tianhongyang

merge

parent dfb0e203
...@@ -31,4 +31,15 @@ export const getCooperativeOwnerUnitsOptionsApi = (data) => request({ ...@@ -31,4 +31,15 @@ export const getCooperativeOwnerUnitsOptionsApi = (data) => request({
url: "/consultancy/pageSelect", url: "/consultancy/pageSelect",
method: "post", method: "post",
data data
});
/**
* 当前页列表 amount 总数
* @param {*} data
* @returns
*/
export const getCooperativeOwnerUnitsCountAmountApi = (data) => request({
url: "/consultancy/pageSelect",
method: "post",
data
}); });
\ No newline at end of file
...@@ -453,8 +453,6 @@ li { ...@@ -453,8 +453,6 @@ li {
// 封装组件样式 // 封装组件样式
.table-list-com-ins { .table-list-com-ins {
.table-item { .table-item {
width: 100%;
max-height: 100%;
.el-table { .el-table {
width: 100%; width: 100%;
height: auto; height: auto;
......
<template> <template>
<div class="table-list-com-ins"> <div class="table-list-com-ins" :class="{'is-empty-table' : !tableDataTotal}">
<div class="table-item"> <div class="table-item">
<el-table v-if="tableDataTotal>0" class="fixed-table" :class="headerFixed ? 'headerFixed':''" v-loading="tableLoading" :data="tableData" <el-table v-if="tableDataTotal>0" class="fixed-table" :class="headerFixed ? 'headerFixed':''" v-loading="tableLoading" :data="tableData"
element-loading-text="Loading" ref="tableRef" border fit highlight-current-row :default-sort="defaultSort?defaultSort:{}" element-loading-text="Loading" ref="tableRef" border fit highlight-current-row :default-sort="defaultSort?defaultSort:{}"
...@@ -188,7 +188,7 @@ export default { ...@@ -188,7 +188,7 @@ export default {
/** /**
* @type {HTMLDivElement} * @type {HTMLDivElement}
*/ */
const container = document.querySelector(".table-list-com-ins .table-item"); const container = this.$el.querySelector(".table-item");
if (container) { if (container) {
this.comMaxHeight = `${container.offsetHeight}px`; this.comMaxHeight = `${container.offsetHeight}px`;
} }
...@@ -230,7 +230,15 @@ export default { ...@@ -230,7 +230,15 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.table-list-com-ins { .table-list-com-ins {
&.is-empty-table {
.table-item {
max-height: unset;
height: 100%;
}
}
::v-deep .table-item { ::v-deep .table-item {
width: 100%;
max-height: calc(100% - 40px);
.no-line-feed { .no-line-feed {
display: block; display: block;
color: #0081ff; color: #0081ff;
...@@ -270,11 +278,15 @@ export default { ...@@ -270,11 +278,15 @@ export default {
.table-empty-container { .table-empty-container {
width: 100%; width: 100%;
height: 100%; height: 100%;
padding: 30px 0; min-height: 360px;
box-sizing: border-box; box-sizing: border-box;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
.no-data {
min-height: unset;
}
} }
.el-table { .el-table {
......
...@@ -25,6 +25,266 @@ ...@@ -25,6 +25,266 @@
</tr> </tr>
</table> </table>
</div> </div>
<!-- 工程概况 -->
<div class="project-overview">
<div class="info-module-title"><span>工程概况</span></div>
<table>
<colgroup>
<col>
<col :style="{width : tableKeyWidth}">
<col>
<col :style="{width : tableKeyWidth}">
</colgroup>
<tr>
<td class="table-key">国内外</td>
<td>{{"-"}}</td>
<td class="table-key">省市</td>
<td>{{"-"}}</td>
</tr>
<tr>
<td class="table-key">投资来源</td>
<td>{{"-"}}</td>
<td class="table-key">项目承接类型</td>
<td>{{"-"}}</td>
</tr>
<tr>
<td class="table-key">投资来源</td>
<td>{{"-"}}</td>
<td class="table-key">项目承接类型</td>
<td>{{"-"}}</td>
</tr>
<tr>
<td class="table-key">合同签订日期</td>
<td>{{"-"}}</td>
<td class="table-key">合同总工期</td>
<td>{{comProjectDetailInfo.contractWorkDays ? `${comProjectDetailInfo.contractWorkDays}天` : "-"}}</td>
</tr>
<tr>
<td class="table-key">开工日期方式</td>
<td>{{"-"}}</td>
<td class="table-key">开工具体时间</td>
<td>{{comProjectDetailInfo.actualStartDate ? comProjectDetailInfo.actualStartDate : "-"}}</td>
</tr>
<tr>
<td class="table-key">竣工具体方式</td>
<td>{{"-"}}</td>
<td class="table-key">竣工具体时间</td>
<td>{{"-"}}</td>
</tr>
<tr>
<td class="table-key">工程类型大类</td>
<td>{{"-"}}</td>
<td class="table-key">工程类型明细</td>
<td>{{"-"}}</td>
</tr>
<tr>
<td class="table-key">建筑高度</td>
<td>{{comProjectDetailInfo.constructHeight ? `${comProjectDetailInfo.constructHeight }m`: "-"}}</td>
<td class="table-key">建筑面积</td>
<td>{{comProjectDetailInfo.buildingArea ? `${comProjectDetailInfo.buildingArea}㎡` : "-"}}</td>
</tr>
<tr>
<td class="table-key">地上层数</td>
<td>{{comProjectDetailInfo.noOfOverfloor ? `${comProjectDetailInfo.noOfOverfloor}层` : "-"}}</td>
<td class="table-key">地下层数</td>
<td>{{comProjectDetailInfo.noOfUnderfloor ? `${comProjectDetailInfo.noOfUnderfloor}层` : "-"}}</td>
</tr>
</table>
</div>
<!-- 目标责任书 -->
<div class="target-responsibility-letter">
<div class="info-module-title"><span>目标责任书</span></div>
<table>
<colgroup>
<col>
<col :style="{width : tableKeyWidth}">
<col>
<col :style="{width : tableKeyWidth}">
</colgroup>
<tr>
<td class="table-key">预收益率</td>
<td>{{comProjectDetailInfo.estiProfitRate ? `${comProjectDetailInfo.estiProfitRate}%` : "-"}}</td>
<td class="table-key">预收益额</td>
<td>{{comProjectDetailInfo.estiTtlProfit ? `${comProjectDetailInfo.estiTtlProfit}元` : "-"}}</td>
</tr>
</table>
</div>
<!-- 条款内容 -->
<div class="clause-content">
<div class="info-module-title"><span>条款内容</span></div>
<table>
<colgroup>
<col>
<col :style="{width : tableKeyWidth}">
<col>
<col :style="{width : tableKeyWidth}">
</colgroup>
<tr>
<td class="table-key">合同金额</td>
<td>{{"-"}}</td>
<td class="table-key">自施部分</td>
<td>{{"-"}}</td>
</tr>
<tr>
<td class="table-key">计价依据</td>
<td>{{"-"}}</td>
<td class="table-key">预收益率</td>
<td>{{"-"}}</td>
</tr>
<tr>
<td class="table-key">业主批量申报日期</td>
<td>{{"-"}}</td>
<td class="table-key">批量时限</td>
<td>{{"-"}}</td>
</tr>
<tr>
<td class="table-key">付款时限</td>
<td colspan="3">{{"-"}}</td>
</tr>
</table>
</div>
<!-- 工程预付款 -->
<div class="advance-payment-for-construction">
<div class="info-module-title"><span>工程预付款</span></div>
<table>
<colgroup>
<col>
<col :style="{width : tableKeyWidth}">
<col>
<col :style="{width : tableKeyWidth}">
</colgroup>
<tr>
<td class="table-key">工程预付款</td>
<td>{{"-"}}</td>
<td class="table-key">支付比例</td>
<td>{{"-"}}</td>
</tr>
</table>
</div>
<!-- 工程款项 -->
<div class="advance-payment-for-construction">
<div class="info-module-title"><span>工程款项</span></div>
<table>
<colgroup>
<col>
<col :style="{width : tableKeyWidth}">
<col>
<col :style="{width : tableKeyWidth}">
</colgroup>
<tr>
<td class="table-key">支付方式</td>
<td>{{"-"}}</td>
<td class="table-key">按节点支付比例</td>
<td>{{"-"}}</td>
</tr>
<tr>
<td class="table-key">按月度支付比例</td>
<td>{{"-"}}</td>
<td class="table-key">审核期限</td>
<td>{{"-"}}</td>
</tr>
<tr>
<td class="table-key">支付期限</td>
<td>{{"-"}}</td>
<td class="table-key">竣工累计支付</td>
<td>{{"-"}}</td>
</tr>
<tr>
<td class="table-key">工程结算后累计支付</td>
<td>{{"-"}}</td>
<td class="table-key">保修金预留比例</td>
<td>{{"-"}}</td>
</tr>
<tr>
<td class="table-key lot">工程结算后累计支付</td>
<td colspan="3">{{"-"}}</td>
</tr>
</table>
</div>
<!-- 履约担保 -->
<div class="performance-guarantee">
<div class="info-module-title"><span>履约担保</span></div>
<table>
<colgroup>
<col>
<col :style="{width : tableKeyWidth}">
<col>
<col :style="{width : tableKeyWidth}">
</colgroup>
<tr>
<td class="table-key">担保形式</td>
<td>{{"-"}}</td>
<td class="table-key">担保额度</td>
<td>{{"-"}}</td>
</tr>
</table>
</div>
<!-- 竣工结算 -->
<div class="completion-settlement">
<div class="info-module-title"><span>竣工结算</span></div>
<table>
<colgroup>
<col>
<col :style="{width : tableKeyWidth}">
<col>
<col :style="{width : tableKeyWidth}">
</colgroup>
<tr>
<td class="table-key">竣工结算审核期限</td>
<td>{{"-"}}</td>
<td class="table-key">是否承诺放弃工程价款优先受偿权</td>
<td>{{"-"}}</td>
</tr>
<tr>
<td class="table-key">是否以行为事实放弃工程价款优先受偿权</td>
<td>{{"-"}}</td>
<td class="table-key">工程拖期违约金比例</td>
<td>{{"-"}}</td>
</tr>
</table>
</div>
<!-- 工期拖期违约金上线 -->
<div class="delay-period">
<div class="info-module-title"><span>工期拖期违约金上线</span></div>
<table>
<colgroup>
<col>
<col :style="{width : tableKeyWidth}">
<col>
<col :style="{width : tableKeyWidth}">
</colgroup>
<tr>
<td class="table-key">/</td>
<td>{{"-"}}</td>
<td class="table-key">上线比例</td>
<td>{{"-"}}</td>
</tr>
</table>
</div>
<!-- 其它信息 -->
<div class="other-information">
<div class="info-module-title"><span>其它信息</span></div>
<table>
<colgroup>
<col>
<col :style="{width : tableKeyWidth}">
<col>
<col :style="{width : tableKeyWidth}">
</colgroup>
<tr>
<td class="table-key">是否分别签订执行和备案合同</td>
<td>{{"-"}}</td>
<td class="table-key">承包单位</td>
<td>{{"-"}}</td>
</tr>
<tr>
<td class="table-key">评审级别</td>
<td>{{"-"}}</td>
<td class="table-key">创建日期</td>
<td>{{"-"}}</td>
</tr>
</table>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -89,7 +349,6 @@ export default { ...@@ -89,7 +349,6 @@ export default {
.basic-engineering-information-inner { .basic-engineering-information-inner {
width: 100%; width: 100%;
height: 100%;
.info-module-title { .info-module-title {
line-height: 24px; line-height: 24px;
color: #232323; color: #232323;
...@@ -145,6 +404,17 @@ export default { ...@@ -145,6 +404,17 @@ export default {
width: calc(100% - 140px); width: calc(100% - 140px);
} }
} }
.project-overview,
.target-responsibility-letter,
.clause-content,
.advance-payment-for-construction,
.performance-guarantee,
.completion-settlement,
.delay-period,
.other-information {
margin-top: 24px;
}
} }
} }
</style> </style>
<template>
<div class="consulting-agency-container">
</div>
</template>
<script>
export default {
name: "consultingAgency",
data() {
return {
};
},
//可访问data属性
created() {
},
//计算集
computed: {
},
//方法集
methods: {
},
}
</script>
<style lang="scss" scoped>
.consulting-agency-container {
width: 100%;
height: 100%;
background: #fff;
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
padding: 16px;
box-sizing: border-box;
overflow: auto;
}
</style>
...@@ -56,7 +56,19 @@ ...@@ -56,7 +56,19 @@
v-else-if="!tableLoading" :maxHeight="true" @handle-current-change="handleCurrentChange"> v-else-if="!tableLoading" :maxHeight="true" @handle-current-change="handleCurrentChange">
<!-- 项目列表 --> <!-- 项目列表 -->
<template slot="projectName" slot-scope="{data,row}"> <template slot="projectName" slot-scope="{data,row}">
<div v-if="row.projectName" class="no-line-feed ">{{row.projectName}}</div> <div v-if="row.projectName" class="no-line-feed">{{row.projectName}}</div>
<span v-else>-</span>
</template>
<template slot="projectLeader" slot-scope="{data,row}">
<div v-if="row.advisoryBodyProject && row.advisoryBodyProject.projectLeader">{{row.advisoryBodyProject.projectLeader}}</div>
<span v-else>-</span>
</template>
<template slot="projectLeaderMajor" slot-scope="{data,row}">
<div v-if="row.advisoryBodyProject && row.advisoryBodyProject.projectLeaderMajor">{{row.advisoryBodyProject.projectLeaderMajor}}</div>
<span v-else>-</span>
</template>
<template slot="projectLeaderPhone" slot-scope="{data,row}">
<div v-if="row.advisoryBodyProject && row.advisoryBodyProject.projectLeaderPhone">{{row.advisoryBodyProject.projectLeaderPhone}}</div>
<span v-else>-</span> <span v-else>-</span>
</template> </template>
</table-list-com> </table-list-com>
...@@ -102,9 +114,9 @@ export default { ...@@ -102,9 +114,9 @@ export default {
{ label: '项目承接类型', prop: 'isinvestproject', minWidth: "102px", uid: v4() }, { label: '项目承接类型', prop: 'isinvestproject', minWidth: "102px", uid: v4() },
{ label: '工程基础大类', prop: 'projectType1', width: "98px", uid: v4() }, { label: '工程基础大类', prop: 'projectType1', width: "98px", uid: v4() },
{ label: '工程类别明细', prop: 'projectType', width: "98px", uid: v4() }, { label: '工程类别明细', prop: 'projectType', width: "98px", uid: v4() },
{ label: '项目负责人姓名', prop: 'projectLeader', width: "110px", uid: v4() }, { label: '项目负责人姓名', prop: 'projectLeader', width: "110px", slot: true, uid: v4() },
{ label: '项目负责人专业', prop: 'projectLeaderMajor', width: "110px", uid: v4() }, { label: '项目负责人专业', prop: 'projectLeaderMajor', width: "110px", slot: true, uid: v4() },
{ label: '项目负责人联系电话', prop: 'projectLeaderPhone', width: "134px", uid: v4() }, { label: '项目负责人联系电话', prop: 'projectLeaderPhone', width: "134px", slot: true, uid: v4() },
], ],
queryParams: { queryParams: {
pageSize: 20, pageSize: 20,
...@@ -197,7 +209,7 @@ export default { ...@@ -197,7 +209,7 @@ export default {
resetForm() { resetForm() {
const defaultValue = this.$options.data.call(this); const defaultValue = this.$options.data.call(this);
this.form = defaultValue.form; this.form = defaultValue.form;
this.queryParams = defaultValue.queryParams; this.queryParams = { ...defaultValue.queryParams, advisoryBodyCid: this.queryParams.advisoryBodyCid };
this.getList(this.queryParams); this.getList(this.queryParams);
}, },
async getList(params) { async getList(params) {
...@@ -326,7 +338,7 @@ export default { ...@@ -326,7 +338,7 @@ export default {
@import "@/assets/styles/search-result-list-public.scss"; @import "@/assets/styles/search-result-list-public.scss";
::v-deep .table-list-com-ins { ::v-deep .table-list-com-ins {
height: calc(100% - 80px); height: calc(100% - 40px);
margin-top: 16px; margin-top: 16px;
.pagination-box { .pagination-box {
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
<!-- 工程基本信息 --> <!-- 工程基本信息 -->
<basic-engineering-information v-if="currentList === 'project'" :projectDetailInfo="projectDetailInfo"></basic-engineering-information> <basic-engineering-information v-if="currentList === 'project'" :projectDetailInfo="projectDetailInfo"></basic-engineering-information>
<!-- 咨询机构结算信息 --> <!-- 咨询机构结算信息 -->
<consulting-agency v-if="currentList === 'consultingAgency'" :projectDetailInfo="projectDetailInfo"></consulting-agency>
</div> </div>
</div> </div>
...@@ -36,11 +37,13 @@ import DskTabToggle from "@/components/DskTabToggle"; ...@@ -36,11 +37,13 @@ import DskTabToggle from "@/components/DskTabToggle";
import { getgetConsultingOrgProjectDetailApi } from "@/api/consultingOrgManagement/index"; import { getgetConsultingOrgProjectDetailApi } from "@/api/consultingOrgManagement/index";
import { v4 } from 'uuid'; import { v4 } from 'uuid';
import BasicEngineeringInformation from "@/views/consultingOrgManagement/components/EnterpriseList/detail/basicEngineeringInformation"; import BasicEngineeringInformation from "@/views/consultingOrgManagement/components/EnterpriseList/detail/basicEngineeringInformation";
import consultingAgency from "@/views/consultingOrgManagement/components/EnterpriseList/detail/consultingAgency";
export default { export default {
name: "projectDetail", name: "projectDetail",
components: { components: {
DskTabToggle, DskTabToggle,
BasicEngineeringInformation BasicEngineeringInformation,
consultingAgency
}, },
data() { data() {
return { return {
......
...@@ -147,8 +147,8 @@ export default { ...@@ -147,8 +147,8 @@ export default {
const _form = queryConditionFiltering(this.form); const _form = queryConditionFiltering(this.form);
// 处理时间 // 处理时间
if (_form?.cooperationTime?.length) { if (_form?.cooperationTime?.length) {
_form.projectStartTime = _form?.projectCreateTime[0]; _form.projectStartTime = _form?.cooperationTime[0];
_form.projectEndTime = _form?.projectCreateTime[1]; _form.projectEndTime = _form?.cooperationTime[1];
} }
delete _form.cooperationTime; delete _form.cooperationTime;
...@@ -277,7 +277,7 @@ export default { ...@@ -277,7 +277,7 @@ export default {
@import "@/assets/styles/search-result-list-public.scss"; @import "@/assets/styles/search-result-list-public.scss";
::v-deep .table-list-com-ins { ::v-deep .table-list-com-ins {
height: calc(100% - 80px); height: calc(100% - 40px);
margin-top: 16px; margin-top: 16px;
.pagination-box { .pagination-box {
......
...@@ -78,18 +78,18 @@ ...@@ -78,18 +78,18 @@
<span v-else>-</span> <span v-else>-</span>
</template> </template>
<!-- 业主单位 --> <!-- 业主单位 -->
<template slot="ownerName" slot-scope="{data,row}"> <!-- <template slot="ownerName" slot-scope="{data,row}">
<div v-if="row.ownerName" class="no-line-feed">{{row.ownerName}}</div> <div v-if="row.ownerName" class="no-line-feed">{{row.ownerName}}</div>
<span v-else>-</span> <span v-else>-</span>
</template> </template> -->
<!-- 项目承接单位 --> <!-- 项目承接单位 -->
<template slot="contractOrgName" slot-scope="{data,row}"> <!-- <template slot="contractOrgName" slot-scope="{data,row}">
<div v-if="row.contractOrgName" class="no-line-feed">{{row.contractOrgName}}</div> <div v-if="row.contractOrgName" class="no-line-feed">{{row.contractOrgName}}</div>
<span v-else>-</span> <span v-else>-</span>
</template> </template> -->
<!-- 咨询机构名称 --> <!-- 咨询机构名称 -->
<template slot="advisoryBodyName" slot-scope="{data,row}"> <template slot="advisoryBodyName" slot-scope="{data,row}">
<div v-if="row.advisoryBodyName" class="no-line-feed">{{row.advisoryBodyName}}</div> <div v-if="row.advisoryBody && row.advisoryBody.advisoryBodyName" class="no-line-feed">{{row.advisoryBody.advisoryBodyName}}</div>
<span v-else>-</span> <span v-else>-</span>
</template> </template>
</table-list-com> </table-list-com>
...@@ -318,7 +318,7 @@ export default { ...@@ -318,7 +318,7 @@ export default {
}, },
// 查看项目详情 // 查看项目详情
viewProjectDetail(row) { viewProjectDetail(row) {
// this.$tab.openPage(row.projectName,`/consultingOrgManagement/projectDetail/${row.advisoryBodyCid}?projectKey=${row.projectKey}`) this.$tab.openPage(row.projectName, `/consultingOrgManagement/projectDetail/${row.advisoryBody?.advisoryBodyCid}?projectKey=${row.projectKey}`);
} }
}, },
} }
...@@ -371,7 +371,7 @@ export default { ...@@ -371,7 +371,7 @@ export default {
@import "@/assets/styles/search-result-list-public.scss"; @import "@/assets/styles/search-result-list-public.scss";
::v-deep .table-list-com-ins { ::v-deep .table-list-com-ins {
height: calc(100% - 80px); height: calc(100% - 40px);
margin-top: 16px; margin-top: 16px;
.pagination-box { .pagination-box {
......
...@@ -14,18 +14,9 @@ ...@@ -14,18 +14,9 @@
<template v-if="option == '自定义'"> <template v-if="option == '自定义'">
<div style="position: relative"> <div style="position: relative">
自定义 自定义
<el-date-picker <el-date-picker ref="picker" :default-value="defaultValue" style="position: absolute;opacity: 0;" popper-class="custom-el-date-picker"
ref="picker" v-model="pickerValue" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd"
:default-value="defaultValue" :picker-options="pickerOptions" @change="changePicker">
style="position: absolute;opacity: 0;"
v-model="pickerValue"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
:picker-options="pickerOptions"
@change="changePicker">
</el-date-picker> </el-date-picker>
</div> </div>
</template> </template>
...@@ -65,31 +56,31 @@ export default { ...@@ -65,31 +56,31 @@ export default {
}, },
computed: { computed: {
isClear() { isClear() {
if(!this.isSelectOption && this.value) { if (!this.isSelectOption && this.value) {
return true return true;
}else { } else {
return false return false;
} }
}, },
pickerOptions() { pickerOptions() {
// 用计算属性 // 用计算属性
let _this = this let _this = this;
// 此时 this指向的就是vue实例 // 此时 this指向的就是vue实例
return { return {
disabledDate(time) { disabledDate(time) {
if(_this.dateFrom){ if (_this.dateFrom) {
return time.getTime() < new Date(_this.dateFrom.replace(/-/g, '/')).getTime() - 8.64e6;//如果没有后面的-8.64e6就是不可以选择今天的 return time.getTime() < new Date(_this.dateFrom.replace(/-/g, '/')).getTime() - 8.64e6;//如果没有后面的-8.64e6就是不可以选择今天的
} }
if(_this.dateTo){ if (_this.dateTo) {
return time.getTime() > new Date(_this.dateTo.replace(/-/g, '/')).getTime();//如果没有后面的-8.64e7就是不可以选择今天的 return time.getTime() > new Date(_this.dateTo.replace(/-/g, '/')).getTime();//如果没有后面的-8.64e7就是不可以选择今天的
} }
} }
} };
}, },
}, },
watch: { watch: {
refStr(refStr) { refStr(refStr) {
return refStr return refStr;
} }
}, },
data() { data() {
...@@ -99,250 +90,253 @@ export default { ...@@ -99,250 +90,253 @@ export default {
isSelectOption: false, isSelectOption: false,
isHover: false, isHover: false,
pickerValue: [], pickerValue: [],
defaultValue:new Date() defaultValue: new Date()
} };
}, },
mounted() { mounted() {
if(this.dateTo){ if (this.dateTo) {
this.defaultValue = new Date(this.dateTo) this.defaultValue = new Date(this.dateTo);
} }
this.handleAppClick() this.handleAppClick();
if(this.timeList&&this.timeList.length>0){ if (this.timeList && this.timeList.length > 0) {
this.options = this.timeList this.options = this.timeList;
} }
}, },
methods: { methods: {
// 时间格式化 // 时间格式化
formatDate(timeStr) { formatDate(timeStr) {
let date = new Date(Number(timeStr)) let date = new Date(Number(timeStr));
let year = date.getFullYear() let year = date.getFullYear();
let month = String(date.getMonth() + 1).padStart(2, 0) let month = String(date.getMonth() + 1).padStart(2, 0);
let day = String(date.getDate()).padStart(2, 0) let day = String(date.getDate()).padStart(2, 0);
return `${year}-${month}-${day}` return `${year}-${month}-${day}`;
}, },
// 判断是否点击的为组件内部 // 判断是否点击的为组件内部
handleAppClick() { handleAppClick() {
const app = document.getElementById('app') const app = document.getElementById('app');
app.addEventListener('click', (e) => { app.addEventListener('click', (e) => {
const dom = this.$refs[this.refStr] const dom = this.$refs[this.refStr];
const flag = dom && dom.contains(e.target) const flag = dom && dom.contains(e.target);
// const flag = document.getElementById('custom-time-select').contains(e.target) // const flag = document.getElementById('custom-time-select').contains(e.target)
!flag ? this.isSelectOption = false : '' !flag ? this.isSelectOption = false : '';
if(this.value == '自定义' && (!this.pickerValue || !this.pickerValue.length)) { if (this.value == '自定义' && (!this.pickerValue || !this.pickerValue.length)) {
this.value = '' this.value = '';
this.$emit('input', '') this.$emit('input', '');
this.$emit('handle-search') this.$emit('handle-search');
} }
}, true) }, true);
}, },
handleMouseenter() { handleMouseenter() {
this.isHover = true this.isHover = true;
}, },
handleMouseleave() { handleMouseleave() {
this.isHover = false this.isHover = false;
}, },
handleClear() { handleClear() {
if(this.isClear && this.isHover) { if (this.isClear && this.isHover) {
this.value = '' this.value = '';
this.pickerValue = [] this.pickerValue = [];
this.$emit('input', '') this.$emit('input', '');
this.$emit('handle-search') this.$emit('handle-search');
}else { } else {
this.isSelectOption = true this.isSelectOption = true;
} }
}, },
handleClick(value) { handleClick(value) {
this.value = value this.value = value;
if(value == '自定义') { if (value == '自定义') {
this.value = '自定义' this.value = '自定义';
this.$refs.picker && this.$refs.picker.length && this.$refs.picker[0].focus() this.$refs.picker && this.$refs.picker.length && this.$refs.picker[0].focus();
this.$nextTick(() => { this.$nextTick(() => {
this.$refs['picker-block'].appendChild(this.$refs.picker[0].popperElm) this.$refs['picker-block'].appendChild(this.$refs.picker[0].popperElm);
}) });
}else { } else {
this.pickerValue = [] this.pickerValue = [];
this.isSelectOption = false this.isSelectOption = false;
let timeStr = [] let timeStr = [];
let startTime = '' let startTime = '';
let endTime = new Date() let endTime = new Date();
switch (value) { switch (value) {
case '近三天': case '近三天':
startTime = new Date(endTime.getTime() - 3600 * 1000 * 24 * 3) startTime = new Date(endTime.getTime() - 3600 * 1000 * 24 * 3);
timeStr = [this.formatDate(startTime), this.formatDate(endTime)] timeStr = [this.formatDate(startTime), this.formatDate(endTime)];
break; break;
case '近七天': case '近七天':
startTime = new Date(endTime.getTime() - 3600 * 1000 * 24 * 7) startTime = new Date(endTime.getTime() - 3600 * 1000 * 24 * 7);
timeStr = [this.formatDate(startTime), this.formatDate(endTime)] timeStr = [this.formatDate(startTime), this.formatDate(endTime)];
break; break;
case '近半月': case '近半月':
startTime = new Date(endTime.getTime() - 3600 * 1000 * 24 * 15) startTime = new Date(endTime.getTime() - 3600 * 1000 * 24 * 15);
timeStr = [this.formatDate(startTime), this.formatDate(endTime)] timeStr = [this.formatDate(startTime), this.formatDate(endTime)];
break; break;
case '近1年': case '近1年':
startTime = new Date().setFullYear(new Date().getFullYear() - 1) startTime = new Date().setFullYear(new Date().getFullYear() - 1);
if(this.dateTo){ if (this.dateTo) {
startTime = new Date(this.dateTo).setFullYear(new Date(this.dateTo).getFullYear() - 1) startTime = new Date(this.dateTo).setFullYear(new Date(this.dateTo).getFullYear() - 1);
} }
timeStr = [this.formatDate(startTime), this.formatDate(endTime)] timeStr = [this.formatDate(startTime), this.formatDate(endTime)];
break; break;
case '近2年': case '近2年':
startTime = new Date().setFullYear(new Date().getFullYear() - 2) startTime = new Date().setFullYear(new Date().getFullYear() - 2);
if(this.dateTo){ if (this.dateTo) {
startTime = new Date(this.dateTo).setFullYear(new Date(this.dateTo).getFullYear() - 2) startTime = new Date(this.dateTo).setFullYear(new Date(this.dateTo).getFullYear() - 2);
} }
timeStr = [this.formatDate(startTime), this.formatDate(endTime)] timeStr = [this.formatDate(startTime), this.formatDate(endTime)];
break; break;
case '近3年': case '近3年':
startTime = new Date().setFullYear(new Date().getFullYear() - 3) startTime = new Date().setFullYear(new Date().getFullYear() - 3);
if(this.dateTo){ if (this.dateTo) {
startTime = new Date(this.dateTo).setFullYear(new Date(this.dateTo).getFullYear() - 3) startTime = new Date(this.dateTo).setFullYear(new Date(this.dateTo).getFullYear() - 3);
} }
timeStr = [this.formatDate(startTime), this.formatDate(endTime)] timeStr = [this.formatDate(startTime), this.formatDate(endTime)];
break; break;
case '近5年': case '近5年':
startTime = new Date().setFullYear(new Date().getFullYear() - 5) startTime = new Date().setFullYear(new Date().getFullYear() - 5);
if(this.dateTo){ if (this.dateTo) {
startTime = new Date(this.dateTo).setFullYear(new Date(this.dateTo).getFullYear() - 5) startTime = new Date(this.dateTo).setFullYear(new Date(this.dateTo).getFullYear() - 5);
} }
timeStr = [this.formatDate(startTime), this.formatDate(endTime)] timeStr = [this.formatDate(startTime), this.formatDate(endTime)];
break; break;
default: default:
if(this.pickerValue && this.pickerValue.length) { if (this.pickerValue && this.pickerValue.length) {
timeStr = this.pickerValue timeStr = this.pickerValue;
}else { } else {
timeStr = [] timeStr = [];
this.value = '' this.value = '';
} }
break; break;
} }
this.$emit('input', timeStr) this.$emit('input', timeStr);
this.$emit('handle-search') this.$emit('handle-search');
} }
}, },
// 时间选择改变后的回调 // 时间选择改变后的回调
changePicker(value) { changePicker(value) {
this.isSelectOption = false this.isSelectOption = false;
if(value && value.length) { if (value && value.length) {
// this.value = '自定义' // this.value = '自定义'
this.value = String(this.pickerValue) this.value = String(this.pickerValue);
this.$emit('input', this.pickerValue) this.$emit('input', this.pickerValue);
}else { } else {
this.value = '' this.value = '';
this.$emit('input', '') this.$emit('input', '');
} }
this.$emit('handle-search') this.$emit('handle-search');
} }
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.custom-time-select { .custom-time-select {
/*width: 120px;*/ /*width: 120px;*/
width: auto; width: auto;
height: 34px; height: 34px;
.rote { .rote {
.el-input__inner{ .el-input__inner {
background: #F4F6F9; background: #f4f6f9;
}
} }
.input-block { }
.input-block {
width: 100%;
height: 100%;
margin: 0;
cursor: pointer;
.block {
width: 100%; width: 100%;
height: 100%; height: 100%;
margin: 0;
cursor: pointer;
.block { > .custom-time-input.el-input {
width: 100%; width: 100%;
height: 100%; height: 100%;
.el-input__inner {
>.custom-time-input.el-input { border: 0;
}
> input {
width: 100%; width: 100%;
height: 100%; height: 100%;
.el-input__inner{ overflow: hidden;
border: 0; white-space: nowrap;
} text-overflow: ellipsis;
>input { border-radius: 4px;
width: 100%;
height: 100%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
border-radius: 4px;
}
} }
} }
}
.el-input__suffix { .el-input__suffix {
transform: rotateZ(0); transform: rotateZ(0);
width: 25px; width: 25px;
height: 100%; height: 100%;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
&.rote { &.rote {
.el-input__suffix { .el-input__suffix {
transform: rotateZ(180deg); transform: rotateZ(180deg);
}
} }
} }
}
.options-block { .options-block {
position: absolute; position: absolute;
margin-top: 6px; margin-top: 6px;
min-width: 120px; min-width: 120px;
font-size: 14px; font-size: 14px;
color: #666666; color: #666666;
background-color: #fff; background-color: #fff;
border-radius: 4px; border-radius: 4px;
z-index: 10; z-index: 10;
overflow: hidden; overflow: hidden;
box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.08); box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.08);
.option { .option {
padding: 0 24px 0 16px; padding: 0 24px 0 16px;
box-sizing: border-box; box-sizing: border-box;
height: 36px; height: 36px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
>span { > span {
display: inline-block; display: inline-block;
} }
&.active { &.active {
background-color: #F2F7FF; background-color: #f2f7ff;
color: #0381FA; color: #0381fa;
} }
&:hover { &:hover {
background-color: #F5F7FA; background-color: #f5f7fa;
}
} }
} }
}
.picker-block { .picker-block {
position: relative; position: relative;
&::after { &::after {
content:""; content: "";
display:block; display: block;
visibility:hidden; visibility: hidden;
clear:both; clear: both;
} }
.el-picker-panel.el-date-range-picker.el-popper { .el-picker-panel.el-date-range-picker.el-popper {
&.custom-el-date-picker {
position: absolute !important;
left: 0 !important; left: 0 !important;
/*top: 205px !important;*/ top: 190px !important;
} }
}
.popper__arrow { .popper__arrow {
left: 30px !important; left: 30px !important;
}
} }
} }
}
</style> </style>
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
<transition name="fade-position" appear mode="out-in"> <transition name="fade-position" appear mode="out-in">
<span v-if="!form.hover && !form.value">搜索</span> <span v-if="!form.hover && !form.value">搜索</span>
<el-input v-model="form.value" :placeholder="form.placeholder ? form.placeholder : '输入关键词查询'" <el-input v-model="form.value" :placeholder="form.placeholder ? form.placeholder : '输入关键词查询'"
:style="form.width?'width:'+form.width+'px':'width:238px'" @focus.stop="searchFocus($event,form)" @blur="searchBlur($event,form)" :style="form.width?'width:'+form.width+'px':'width:238px'" @focus.stop="searchFocus($event,form)"
@input="value => searchInput(value,form)" v-else @keydown.native.enter="changeSelect"> @input="value => searchInput(value,form)" v-else @keydown.native.enter="changeSelect">
<template slot="suffix"> <template slot="suffix">
<transition mode="out-in" appear name="fade"> <transition mode="out-in" appear name="fade">
......
<template> <template>
<div class="Tables"> <div class="Tables" :class="{'is-empty-table' : !tableDataTotal}">
<div class="table-item"> <div class="table-item">
<el-table v-if="tableDataTotal>0" class="fixed-table" :class="headerFixed ? 'headerFixed':''" v-loading="tableLoading" :data="tableData" <el-table v-if="tableDataTotal>0" class="fixed-table" :class="headerFixed ? 'headerFixed':''" v-loading="tableLoading" :data="tableData"
element-loading-text="Loading" ref="tableRef" v-horizontal-scroll="'hover'" border fit highlight-current-row element-loading-text="Loading" ref="tableRef" v-horizontal-scroll="'hover'" border fit highlight-current-row :height="height"
:default-sort="defaultSort?defaultSort:{}" @sort-change="sortChange"> :maxHeight="comMaxHeight" :default-sort="defaultSort?defaultSort:{}" @sort-change="sortChange">
<el-table-column v-if="isIndex" label="序号" :width="flexWidth(tableData)" align="left" :fixed="indexFixed" :resizable="false"> <el-table-column v-if="isIndex" label="序号" :width="flexWidth(tableData)" align="left" :fixed="indexFixed" :resizable="false">
<template slot-scope="scope">{{ queryParams.pageNum * queryParams.pageSize - queryParams.pageSize + scope.$index + 1 }}</template> <template slot-scope="scope">{{ queryParams.pageNum * queryParams.pageSize - queryParams.pageSize + scope.$index + 1 }}</template>
</el-table-column> </el-table-column>
...@@ -56,6 +56,12 @@ import NoData from '../component/noData'; ...@@ -56,6 +56,12 @@ import NoData from '../component/noData';
export default { export default {
name: "Tables", name: "Tables",
props: { props: {
height: {
type: [String, Number]
},
maxHeight: {
type: Boolean
},
isIndex: { isIndex: {
type: Boolean, type: Boolean,
default: true default: true
...@@ -107,7 +113,8 @@ export default { ...@@ -107,7 +113,8 @@ export default {
data() { data() {
return { return {
current_page: this.queryParams.pageNum, current_page: this.queryParams.pageNum,
show_page: this.paging show_page: this.paging,
comMaxHeight: null
}; };
}, },
watch: { watch: {
...@@ -116,9 +123,24 @@ export default { ...@@ -116,9 +123,24 @@ export default {
} }
}, },
created() { created() {
this.maxHeight ? this.maxHeightInit() : null;
}, },
methods: { methods: {
// 自适应当前容器
async maxHeightInit() {
try {
await this.$nextTick();
/**
* @type {HTMLDivElement}
*/
const container = this.$el.querySelector(".table-item");
if (container) {
this.comMaxHeight = `${container.offsetHeight}px`;
}
} catch (error) {
}
},
handleCurrentChange(e) { handleCurrentChange(e) {
if (this.MaxPage < e) { if (this.MaxPage < e) {
this.show_page = false; this.show_page = false;
...@@ -173,18 +195,29 @@ export default { ...@@ -173,18 +195,29 @@ export default {
} }
} }
} }
&.is-empty-table {
.table-item {
max-height: unset;
height: 100%;
}
}
::v-deep .table-item { ::v-deep .table-item {
position: relative; position: relative;
/* 留高度给骨架屏 */ max-height: calc(100% - 56px);
min-height: 360px;
.table-empty-container { .table-empty-container {
position: absolute; min-height: 360px;
display: flex; display: flex;
height: 100%; height: 100%;
width: 100%; width: 100%;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
box-sizing: border-box; box-sizing: border-box;
.no-data {
min-height: unset;
}
} }
.el-table td.el-table__cell { .el-table td.el-table__cell {
border-bottom: 0; border-bottom: 0;
...@@ -194,6 +227,11 @@ export default { ...@@ -194,6 +227,11 @@ export default {
font-size: 12px; font-size: 12px;
} }
} }
.el-table--border th.gutter:last-of-type {
display: block !important;
padding-right: 16px;
height: 55px;
}
} }
::v-deep .el-table th.el-table__cell.is-leaf, ::v-deep .el-table th.el-table__cell.is-leaf,
::v-deep .el-table td.el-table__cell { ::v-deep .el-table td.el-table__cell {
......
<template>
<div class="cooperative-construction-unit">
<head-form-new title="常合作施工单位" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" />
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables v-if="!isSkeleton" :indexFixed="true" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
:queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange">
<!-- 业主名称 -->
<template slot="companyName" slot-scope="scope">
<span v-if="scope.row.companyName" style="color: #0081FF;cursor: pointer;" @click="viewEnterprise(scope.row)"
v-html="scope.row.companyName">{{scope.row.companyName}}</span>
<span v-else>-</span>
</template>
<!-- 合作项目数量 -->
<template slot="count" slot-scope="scope">
<span v-if="scope.row.count" style="color: #0081FF;cursor: pointer;" @click="viewProject(scope.row)">{{scope.row.count}}</span>
<span v-else>-</span>
</template>
</tables>
<el-dialog title="合作项目/工程明细" :visible.sync="cooperationRecordDialog" width="1100px" @close="dialogClose" @open="dialogOPen"
class="cooperation-record-dialog-container" custom-class="cooperation-record-dialog" :destroy-on-close="true" :close-on-click-modal="false">
<div class="cooperation-record-dialog-innner">
<dialog-head-form-new title="" :form-data="dialogFormData" :query-params="dialogQueryParams" :total="dialogtableDataTotal" :isExcel="false"
@handle-search="dialogHandleSearch" ref="dialogSearchFormNew" />
<skeleton v-if="dialogIsSkeleton" style="padding: 16px"></skeleton>
<!-- 列表 -->
<dialog-tables v-if="!dialogIsSkeleton" :indexFixed="true" :tableData="dialogTableData" :forData="dialogForData"
:tableDataTotal="dialogtableDataTotal" :queryParams="dialogQueryParams" @handle-current-change="dialogCurrentChange"
@sort-change="dialogSortChange" :maxHeight="true">
<!-- 合作项目/工程名称-->
<template slot="projectName" slot-scope="scope">
<span v-if="scope.row.projectName" style="color: #0081FF;cursor: pointer;" v-html="scope.row.projectName">{{scope.row.projectName}}</span>
<span v-else>-</span>
</template>
<!-- 省市区 -->
<template slot="area" slot-scope="scope">
<span>{{`${scope.row.province ? scope.row.province : ""}${scope.row.province && scope.row.city ? " - " : ""}${scope.row.city ? scope.row.city : ""}${scope.row.city && scope.row.area ? " - " : ""}${scope.row.area ? scope.row.area : ""}`}}</span>
</template>
</dialog-tables>
</div>
</el-dialog>
</div>
</template>
<script>
import skeleton from '../component/skeleton';
import mixin from '@/views/detail/party-a/mixins/mixin';
import { getCooperativeOwnerUnitsListApi, getCooperativeOwnerUnitsDetailApi, getCooperativeOwnerUnitsOptionsApi, getCooperativeOwnerUnitsCountAmountApi } from "@/api/consultingTransaction";
import DialogHeadFormNew from "../component/HeadFormNew";
import DialogTables from "../component/Tables";
export default {
name: "cooperativeConstructionUnit",
mixins: [mixin],
components: {
skeleton,
DialogHeadFormNew,
DialogTables
},
props: ['companyId'],
data() {
return {
queryParams: {
companyId: this.companyId,
pageNum: 1,
pageSize: 10,
companyType: 2,
sort: ""
},
selectOptions: {},
forData: [
{ label: '施工单位名称', prop: 'companyName', width: '295', slot: true, showOverflowTooltip: true },
{ label: '合作项目数量', prop: 'count', minWidth: '190', align: "right", slot: true, sortable: "custom" },
{ label: '最近一次合作时间', prop: 'time', minWidth: '214', sortable: "custom" },
{ label: '合作总金额(万元)', prop: 'amount', minWidth: '226', align: "right", sortable: "custom" },
],
formData: [
{ type: 4, fieldName: 'businessTypes', value: '', placeholder: '咨询机构业务', options: [], uid: this.getUid() },
{ type: 4, fieldName: 'counterpartCompanyRoles', value: '', placeholder: '合作项目类型', options: [], uid: this.getUid() },
{ type: 4, fieldName: 'projectTypes', value: '', placeholder: '合作工程类型', options: [], uid: this.getUid() },
{ type: 5, fieldName: 'time', value: '', placeholder: '合作频率', startTime: 'beginTime', endTime: 'endTime', uid: this.getUid() },
{ type: 6, fieldName: 'money', value: '', placeholder: '合作金额', uid: this.getUid() },
{ type: 3, fieldName: 'keyword', value: '', placeholder: '请输入', uid: this.getUid() },
],
//列表
tableLoading: false,
tableData: [],
tableDataTotal: 0,
isSkeleton: true,
// 合作项目详情弹窗
cooperationRecordDialog: false,
dialogQueryParams: {
companyId: "",
pageNum: 1,
pageSize: 10,
companyType: 2,
sort: ""
},
dialogForData: [
{ label: '合作项目/工程名称', prop: 'projectName', width: '182', slot: true, showOverflowTooltip: true },
{ label: '合作时间', prop: 'time', width: '93', sortable: "custom" },
{ label: '咨询机构承担角色', prop: 'agencyBusinessType', width: '122' },
{ label: '项目类型', prop: 'counterpartRole', minWidth: '74' },
{ label: '工程类型', prop: 'projectType', minWidth: '74' },
{ label: '项目/工程金额(万元)', prop: 'amount', width: '164', sortable: "custom", align: "right", },
{ label: '项目地区', prop: 'area', width: '245', slot: true },
{ label: '数据来源', prop: 'dataSource', width: '74' },
],
dialogFormData: [
{ type: 4, fieldName: 'businessTypes', value: '', placeholder: '咨询机构业务', options: [], uid: this.getUid() },
{ type: 4, fieldName: 'counterpartCompanyRoles', value: '', placeholder: '合作项目类型', options: [], uid: this.getUid() },
{ type: 4, fieldName: 'projectTypes', value: '', placeholder: '合作工程类型', options: [], uid: this.getUid() },
{ type: 5, fieldName: 'time', value: '', placeholder: '合作频率', startTime: 'beginTime', endTime: 'endTime', uid: this.getUid() },
{ type: 3, fieldName: 'keyword', value: '', placeholder: '请输入', uid: this.getUid() },
],
dialogIsSkeleton: true,
dialogtableDataTotal: 0,
dialogTableData: [],
};
},
//可访问data属性
created() {
this.initDetail();
},
//计算集
computed: {
},
//方法集
methods: {
async initDetail() {
try {
await this.setOptions(true);
await this.handleQuery();
} catch (error) {
}
},
async setOptions(flag) {
try {
const options = await getCooperativeOwnerUnitsOptionsApi({ companyId: this.queryParams.companyId });
if (options.code == 200 && options.data) {
for (const key in options.data) {
options.data[key] = options.data[key].map(item => ({ name: item, value: item }));
}
this.selectOptions = options.data;
const optionsKey = [["businessType", "businessTypes"], ["counterpartCompanyRole", "counterpartCompanyRoles"], ["projectType", "projectTypes"]];
optionsKey.forEach(([key, value]) => {
flag ? this.$set(this.formData.find(formItem => value == formItem.fieldName), "options", this.selectOptions[key]) : null;
this.$set(this.dialogFormData.find(formItem => value == formItem.fieldName), "options", this.selectOptions[key]);
});
}
} catch (error) {
console.log(error);
}
},
// 创建列表查询条件
createQueryCondition(form) {
/**
* @type {Array<{
* fieldName : string;
* value : any
* }>}
*/
const paramsArray = JSON.parse(JSON.stringify(form));
const params = {};
// 处理查询参数
paramsArray.forEach(item => {
// 有效参数
if ((item.value && item.value != "0" && !Array.isArray(item.value)) || item?.value?.length) {
// 多选
if (["businessTypes", "counterpartCompanyRoles", "projectTypes"].includes(item.fieldName)) {
params[item.fieldName] = item.value;
}
// 时间处理
if (item.fieldName == "time") {
params["beginTime"] = item.value[0];
params["endTime"] = item.value[1];
}
// 金额处理
if (item.fieldName == "money") {
params["minAmount"] = item.value[0] ? item.value[0] : "";
params["maxAmount"] = item.value[1] ? item.value[1] : "";
}
// 搜索关键词处理
if (item.fieldName == "keyword" && item?.value.trim()) {
params["keyword"] = item.value;
}
}
});
return params;
},
// 查询
async handleSearch() {
const params = this.createQueryCondition(this.formData);
this.queryParams.pageNum = 1;
const searchParams = JSON.parse(JSON.stringify({ ...params, ...this.queryParams }));
this.handleQuery(searchParams);
},
async handleQuery(params) {
try {
let data = params ? params : this.queryParams;
this.isSkeleton = true;
const res = await getCooperativeOwnerUnitsListApi(data);
this.tableData = res.rows ? res.rows : [];
this.tableDataTotal = res.total ? res.total : 0;
} catch (error) {
console.log(error);
} finally {
this.isSkeleton = false;
}
},
viewEnterprise(row) {
},
async sortChange({ column, order, prop }) {
let sort = null;
switch (prop) {
case "time":
order == "ascending" ? sort = 4 : sort = 3;
break;
case "amount":
order == "ascending" ? sort = 2 : sort = 1;
break;
default:
break;
}
if (!order) sort = "";
this.queryParams.sort = sort;
try {
let data = this.queryParams;
const res = await getCooperativeOwnerUnitsListApi(data);
this.tableData = res.rows ? res.rows : [];
this.tableDataTotal = res.total ? res.total : 0;
} catch (error) {
console.log(error);
}
},
viewProject(row) {
this.dialogQueryParams.companyId = row.companyId;
this.cooperationRecordDialog = true;
},
async dialogHandleQurey(params) {
try {
let data = params ? params : this.dialogQueryParams;
this.dialogIsSkeleton = true;
const res = await getCooperativeOwnerUnitsDetailApi(data);
this.dialogTableData = res.rows ? res.rows : [];
this.dialogtableDataTotal = res.total ? res.total : 0;
} catch (error) {
console.log(error);
} finally {
this.dialogIsSkeleton = false;
}
},
dialogHandleSearch(v) {
const params = this.createQueryCondition(this.dialogFormData);
this.dialogQueryParams.pageNum = 1;
const searchParams = JSON.parse(JSON.stringify({ ...params, ...this.dialogQueryParams }));
this.dialogHandleQurey(searchParams);
},
async dialogSortChange({ column, order, prop }) {
let sort = null;
switch (prop) {
case "count":
order == "ascending" ? sort = 6 : sort = 5;
break;
case "time":
order == "ascending" ? sort = 4 : sort = 3;
break;
case "amount":
order == "ascending" ? sort = 2 : sort = 1;
break;
default:
break;
}
if (!order) sort = "";
this.dialogQueryParams.sort = sort;
try {
let data = this.dialogQueryParams;
const res = await getCooperativeOwnerUnitsDetailApi(data);
this.dialogTableData = res.rows ? res.rows : [];
this.dialogtableDataTotal = res.total ? res.total : 0;
} catch (error) {
console.log(error);
}
},
dialogCurrentChange(page) {
this.dialogQueryParams.pageNum = page;
const params = this.createQueryCondition(this.dialogQueryParams);
this.dialogHandleQurey(params);
},
async dialogOPen() {
await this.setOptions();
await this.dialogHandleQurey();
},
dialogClose() {
const data = this.$options.data.call(this);
this.dialogQueryParams = data.dialogQueryParams;
this.dialogFormData = data.dialogFormData;
this.dialogtableDataTotal = data.dialogtableDataTotal;
this.dialogTableData = data.dialogTableData;
}
},
}
</script>
<style lang="scss" scoped>
.cooperative-construction-unit {
background: #ffffff;
border-radius: 4px;
padding: 16px;
input {
border: 1px solid #efefef;
}
::v-deep .el-form-item {
margin-right: 8px !important;
}
.query-box {
margin: 10px 0 20px;
}
.cell-span {
display: inline-block;
position: relative;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 4;
cursor: pointer;
> span {
display: inline-block;
width: 37px;
position: absolute;
right: 0;
bottom: 0;
background-color: #fff;
z-index: 1;
}
}
@import "@/assets/styles/search-common.scss";
::v-deep .cooperation-record-dialog-container {
.cooperation-record-dialog {
height: 85%;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
border-radius: 4px;
margin: 0px !important;
display: flex;
flex-direction: column;
.el-dialog__header {
padding: 20px;
height: 56px;
display: flex;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
border-bottom: 1px solid #eeeeee;
.el-dialog__title {
color: #232323;
font-weight: bold;
line-height: 16px;
}
.el-dialog__headerbtn {
position: static;
width: 16px;
height: 16px;
}
}
.el-dialog__body {
height: calc(100% - 56px);
padding: 24px 20px;
box-sizing: border-box;
.cooperation-record-dialog-innner {
width: 100%;
height: 100%;
.Tables {
height: calc(100% - 40px);
}
}
}
.el-table-horizontal-scrollbar {
display: none !important;
}
}
}
}
</style>
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
</tables> </tables>
<el-dialog title="合作项目/工程明细" :visible.sync="cooperationRecordDialog" width="1100px" @close="dialogClose" @open="dialogOPen" <el-dialog title="合作项目/工程明细" :visible.sync="cooperationRecordDialog" width="1100px" @close="dialogClose" @open="dialogOPen"
class="cooperation-record-dialog-container" custom-class="cooperation-record-dialog" :destroy-on-close="true"> class="cooperation-record-dialog-container" custom-class="cooperation-record-dialog" :destroy-on-close="true" :close-on-click-modal="false">
<div class="cooperation-record-dialog-innner"> <div class="cooperation-record-dialog-innner">
<dialog-head-form-new title="" :form-data="dialogFormData" :query-params="dialogQueryParams" :total="dialogtableDataTotal" :isExcel="false" <dialog-head-form-new title="" :form-data="dialogFormData" :query-params="dialogQueryParams" :total="dialogtableDataTotal" :isExcel="false"
@handle-search="dialogHandleSearch" ref="dialogSearchFormNew" /> @handle-search="dialogHandleSearch" ref="dialogSearchFormNew" />
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
<!-- 列表 --> <!-- 列表 -->
<dialog-tables v-if="!dialogIsSkeleton" :indexFixed="true" :tableData="dialogTableData" :forData="dialogForData" <dialog-tables v-if="!dialogIsSkeleton" :indexFixed="true" :tableData="dialogTableData" :forData="dialogForData"
:tableDataTotal="dialogtableDataTotal" :queryParams="dialogQueryParams" @handle-current-change="dialogCurrentChange" :tableDataTotal="dialogtableDataTotal" :queryParams="dialogQueryParams" @handle-current-change="dialogCurrentChange"
@sort-change="dialogSortChange"> @sort-change="dialogSortChange" :maxHeight="true">
<!-- 合作项目/工程名称--> <!-- 合作项目/工程名称-->
<template slot="projectName" slot-scope="scope"> <template slot="projectName" slot-scope="scope">
<span v-if="scope.row.projectName" style="color: #0081FF;cursor: pointer;" v-html="scope.row.projectName">{{scope.row.projectName}}</span> <span v-if="scope.row.projectName" style="color: #0081FF;cursor: pointer;" v-html="scope.row.projectName">{{scope.row.projectName}}</span>
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
<script> <script>
import skeleton from '../component/skeleton'; import skeleton from '../component/skeleton';
import mixin from '@/views/detail/party-a/mixins/mixin'; import mixin from '@/views/detail/party-a/mixins/mixin';
import { getCooperativeOwnerUnitsListApi, getCooperativeOwnerUnitsDetailApi, getCooperativeOwnerUnitsOptionsApi } from "@/api/consultingTransaction"; import { getCooperativeOwnerUnitsListApi, getCooperativeOwnerUnitsDetailApi, getCooperativeOwnerUnitsOptionsApi, getCooperativeOwnerUnitsCountAmountApi } from "@/api/consultingTransaction";
import DialogHeadFormNew from "../component/HeadFormNew"; import DialogHeadFormNew from "../component/HeadFormNew";
import DialogTables from "../component/Tables"; import DialogTables from "../component/Tables";
export default { export default {
...@@ -289,7 +289,9 @@ export default { ...@@ -289,7 +289,9 @@ export default {
} }
}, },
dialogCurrentChange(page) { dialogCurrentChange(page) {
this.dialogQueryParams.pageNum = page;
const params = this.createQueryCondition(this.dialogQueryParams);
this.dialogHandleQurey(params);
}, },
async dialogOPen() { async dialogOPen() {
await this.setOptions(); await this.setOptions();
...@@ -344,12 +346,15 @@ export default { ...@@ -344,12 +346,15 @@ export default {
::v-deep .cooperation-record-dialog-container { ::v-deep .cooperation-record-dialog-container {
.cooperation-record-dialog { .cooperation-record-dialog {
height: 85%;
position: absolute; position: absolute;
left: 50%; left: 50%;
top: 50%; top: 50%;
transform: translate(-50%, -50%); transform: translate(-50%, -50%);
border-radius: 4px; border-radius: 4px;
margin: 0px !important; margin: 0px !important;
display: flex;
flex-direction: column;
.el-dialog__header { .el-dialog__header {
padding: 20px; padding: 20px;
...@@ -374,14 +379,23 @@ export default { ...@@ -374,14 +379,23 @@ export default {
} }
.el-dialog__body { .el-dialog__body {
height: calc(100% - 56px);
padding: 24px 20px; padding: 24px 20px;
box-sizing: border-box; box-sizing: border-box;
.cooperation-record-dialog-innner { .cooperation-record-dialog-innner {
width: 100%; width: 100%;
height: 100%; height: 100%;
.Tables {
height: calc(100% - 40px);
}
} }
} }
.el-table-horizontal-scrollbar {
display: none !important;
}
} }
} }
} }
......
...@@ -35,6 +35,9 @@ ...@@ -35,6 +35,9 @@
<!-- 咨询业务往来 --> <!-- 咨询业务往来 -->
<!-- 1.常合作业主单位 --> <!-- 1.常合作业主单位 -->
<cooperative-owner-units v-if="currentPath.pathName=='cooperativeOwnerUnits'" :company-id="companyId"></cooperative-owner-units> <cooperative-owner-units v-if="currentPath.pathName=='cooperativeOwnerUnits'" :company-id="companyId"></cooperative-owner-units>
<!-- 2、常合作施工单位 -->
<cooperative-construction-unit v-if="currentPath.pathName=='cooperativeConstructionUnit'"
:company-id="companyId"></cooperative-construction-unit>
<!-- 投诚分析 --> <!-- 投诚分析 -->
<RegionalEconomies v-if="currentPath.pathName=='regionalEconomies'" :company-id="companyId" :companyInfo="companyInfo" /> <RegionalEconomies v-if="currentPath.pathName=='regionalEconomies'" :company-id="companyId" :companyInfo="companyInfo" />
<LandAcquisition v-if="currentPath.pathName=='landAcquisition'" :company-id="companyId" /> <LandAcquisition v-if="currentPath.pathName=='landAcquisition'" :company-id="companyId" />
...@@ -111,6 +114,7 @@ import Bidagency from "./dealings/bidagency"; //业务往来-招标代理 ...@@ -111,6 +114,7 @@ import Bidagency from "./dealings/bidagency"; //业务往来-招标代理
import Hiscontract from "./dealings/hiscontract"; //业务往来-历史发包 import Hiscontract from "./dealings/hiscontract"; //业务往来-历史发包
import Bidrecords from "./dealings/bidrecords"; //业务往来-开标记录 import Bidrecords from "./dealings/bidrecords"; //业务往来-开标记录
import CooperativeOwnerUnits from "@/views/detail/party-a/consultingTransaction/cooperativeOwnerUnits"; //咨询业务往来 常合作业主单位 import CooperativeOwnerUnits from "@/views/detail/party-a/consultingTransaction/cooperativeOwnerUnits"; //咨询业务往来 常合作业主单位
import CooperativeConstructionUnit from "@/views/detail/party-a/consultingTransaction/cooperativeConstructionUnit"; //咨询业务往来 常合作施工单位
import LandAcquisition from "./urbanLnvestment/landAcquisition"; //投诚分析-城投拿地 import LandAcquisition from "./urbanLnvestment/landAcquisition"; //投诚分析-城投拿地
import RegionalEconomies from "./urbanLnvestment/regionalEconomies"; //投诚分析-区域经济 import RegionalEconomies from "./urbanLnvestment/regionalEconomies"; //投诚分析-区域经济
import SameRegion from "./urbanLnvestment/sameRegion"; //投诚分析-同地区城投 import SameRegion from "./urbanLnvestment/sameRegion"; //投诚分析-同地区城投
...@@ -180,7 +184,8 @@ export default { ...@@ -180,7 +184,8 @@ export default {
CooperativeOwnerUnits, CooperativeOwnerUnits,
ConsultingAgencyCooperation, ConsultingAgencyCooperation,
AccessCondition, AccessCondition,
CooperationRecord CooperationRecord,
CooperativeConstructionUnit
}, },
data() { data() {
return { return {
......
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