Commit 3de6f9f4 authored by chenyuefang's avatar chenyuefang

Merge remote-tracking branch 'origin/V20231129-中建一局二公司' into V20231129-中建一局二公司

parents 10cbbca3 8a431344
...@@ -108,6 +108,12 @@ public class CbQuantitySummaryServiceImpl extends ServiceImpl<CbQuantitySummaryM ...@@ -108,6 +108,12 @@ public class CbQuantitySummaryServiceImpl extends ServiceImpl<CbQuantitySummaryM
@Override @Override
public List<CbQuantitySummaryListVo> subjectList(CbQuantitySummaryListBo bo) { public List<CbQuantitySummaryListVo> subjectList(CbQuantitySummaryListBo bo) {
if(ObjectUtils.isEmpty(bo.getRecordDate())){
//默认当前月
bo.setRecordDate(DatePattern.SIMPLE_MONTH_FORMAT.format(new Date()));
}
if (ObjectUtils.isEmpty(bo.getProjectId())) throw new BeanException("项目id不能为空!");
if (ObjectUtils.isEmpty(bo.getCbStage())) throw new BeanException("成本阶段不能为空!");
return baseMapper.selectListBySubject(bo); return baseMapper.selectListBySubject(bo);
} }
......
...@@ -52,28 +52,26 @@ ...@@ -52,28 +52,26 @@
</select> </select>
<select id="selectListBySubject" resultType="com.dsk.cscec.domain.vo.CbQuantitySummaryListVo"> <select id="selectListBySubject" resultType="com.dsk.cscec.domain.vo.CbQuantitySummaryListVo">
select a.*, ifnull(sum(a.quantities),0) totalQuantities from (
select select
cqs.id, cqs.cb_subject_name, cqs.company_no, cqs.org_no, cqs.cb_name, cqs.job_content, cqs.calculation_rule, cqs.id, cqs.cb_subject_name, cqs.company_no, cqs.org_no, cqs.cb_name, cqs.job_content, cqs.calculation_rule,
cqs.unit, cqs.material_description, cqs.guide_price, cqs.bid_unit_price, cqs.unit_price_difference, cqs.quantity, cqs.unit, cqs.material_description, cqs.guide_price, cqs.bid_unit_price, cqs.unit_price_difference, cqs.quantity,
cqs.combined_price, cqs.combined_price_tax, cqs.brand_name, cqs.bid_source, cqs.remark, cqs.`number`, cqsa.quantities, cqs.combined_price, cqs.combined_price_tax, cqs.brand_name, cqs.bid_source, cqs.remark, cqs.`number`, cqsa.quantities,
cqsa.quantities_unit, cqsa.conversion_quantities, cqsa.conversion_unit, cqsa.purchase_unit_price, cqsa.create_time, cqsa.quantities_unit, cqsa.conversion_quantities, cqsa.conversion_unit, cqsa.purchase_unit_price, cqsa.create_time,
cqsa.id actualId, cqsa.ipm_project_code, cqsa.ipm_contract_code, cqsa.ipm_biz_code, cqsa.push_quantities cqsa.id actualId, cqsa.ipm_project_code, cqsa.ipm_contract_code, cqsa.ipm_biz_code, cqsa.push_quantities,
ifnull(sum(cqsa1.quantities),0) totalQuantities
from cb_quantity_summary cqs from cb_quantity_summary cqs
left join cb_quantity_summary_actual cqsa on cqs.id = cqsa.cb_quantity_summary_id left join cb_quantity_summary_actual cqsa on (cqs.id = cqsa.cb_quantity_summary_id and cqsa.record_date = #{recordDate} )
left join cb_quantity_summary_actual cqsa1 on (cqs.id = cqsa1.cb_quantity_summary_id and cqsa1.record_date &lt;= #{recordDate} )
left join cb_subject cs1 on cqs.cb_subject_name = cs1.cb_subject_name left join cb_subject cs1 on cqs.cb_subject_name = cs1.cb_subject_name
where cqs.del_falg = 0 and cqs.project_id = #{projectId} and cqs.cb_stage = #{cbStage} where cqs.del_falg = 0 and cqs.project_id = #{projectId} and cqs.cb_stage = #{cbStage}
<if test="recordDate != null and recordDate != ''"> and cqsa.record_date &lt;= #{recordDate} </if>
<if test="cbSubjectName != null and cbSubjectName !=''"> <if test="cbSubjectName != null and cbSubjectName !=''">
<choose> <choose>
<when test="cbSubjectName == '未归类项目'"> and cs1.id is null </when> <when test="cbSubjectName == '未归类项目'"> and cs1.id is null </when>
<otherwise> and cqs.cb_subject_name = #{cbSubjectName} </otherwise> <otherwise> and cs1.id is not null and cqs.cb_subject_name = #{cbSubjectName} </otherwise>
</choose> </choose>
</if> </if>
order by cqsa.record_date desc group by cqs.id
) a order by cs1.sort asc, cs1.cb_subject_no asc, cqs.`number` asc
group by a.id
order by a.`number` asc
</select> </select>
<select id="unconvertedList" resultType="com.dsk.cscec.domain.vo.CbQuantitySummaryListVo"> <select id="unconvertedList" resultType="com.dsk.cscec.domain.vo.CbQuantitySummaryListVo">
......
...@@ -184,6 +184,7 @@ export default { ...@@ -184,6 +184,7 @@ export default {
font-size: 14px; font-size: 14px;
border-bottom: 1px solid #EFEFEF; border-bottom: 1px solid #EFEFEF;
padding-bottom: 14px; padding-bottom: 14px;
position: relative;
.list-titel { .list-titel {
font-size: 16px; font-size: 16px;
...@@ -324,7 +325,7 @@ export default { ...@@ -324,7 +325,7 @@ export default {
} }
.app-container { .app-container {
padding: 0; /*padding: 0;*/
} }
.qyzx-details { .qyzx-details {
......
...@@ -296,6 +296,7 @@ export default { ...@@ -296,6 +296,7 @@ export default {
}, },
pathName: { pathName: {
handler(newValue) { handler(newValue) {
console.log(newValue,"|||||||")
this.searchIndex = this.findNodeIndex(this.sideRoute, newValue).index; this.searchIndex = this.findNodeIndex(this.sideRoute, newValue).index;
} }
} }
......
...@@ -11,6 +11,11 @@ ...@@ -11,6 +11,11 @@
v-html="scope.row.counterpartCompanyName">{{scope.row.counterpartCompanyName}}</span> v-html="scope.row.counterpartCompanyName">{{scope.row.counterpartCompanyName}}</span>
<span v-else>-</span> <span v-else>-</span>
</template> </template>
<!-- 合作总金额-->
<template slot="amount" slot-scope="scope">
<span v-if="scope.row.amount">{{scope.row.amount.toFixed(2)}}</span>
<span v-else>-</span>
</template>
<!-- 合作项目数量 --> <!-- 合作项目数量 -->
<template slot="count" slot-scope="scope"> <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-if="scope.row.count" style="color: #0081FF;cursor: pointer;" @click="viewProject(scope.row)">{{scope.row.count}}</span>
...@@ -18,7 +23,7 @@ ...@@ -18,7 +23,7 @@
</template> </template>
</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" :modal-append-to-body="false"
class="cooperation-record-dialog-container" custom-class="cooperation-record-dialog" :destroy-on-close="true" :close-on-click-modal="false"> 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"
...@@ -32,7 +37,18 @@ ...@@ -32,7 +37,18 @@
@sort-change="dialogSortChange" :maxHeight="true"> @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> <template v-if="scope.row.dataSource ==='中标业绩'">
<router-link :to="`/biddetail/${scope.row.sourceId}`" tag="a" class="a-link" v-if="scope.row.sourceId" v-html="scope.row.projectName"></router-link>
<div v-else v-html="scope.row.projectName || '--'"></div>
</template>
<template>
<span @click="linkTo1(scope.row.sourceId)" 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>
<!-- 合作总金额-->
<template slot="amount" slot-scope="scope">
<span v-if="scope.row.amount">{{scope.row.amount.toFixed(2)}}</span>
<span v-else>-</span> <span v-else>-</span>
</template> </template>
<!-- 省市区 --> <!-- 省市区 -->
...@@ -53,6 +69,7 @@ import DialogHeadFormNew from "../component/HeadFormNew"; ...@@ -53,6 +69,7 @@ import DialogHeadFormNew from "../component/HeadFormNew";
import DialogTables from "../component/Tables"; import DialogTables from "../component/Tables";
import { replaceDomTags } from "@/utils"; import { replaceDomTags } from "@/utils";
import { encodeStr } from "@/assets/js/common"; import { encodeStr } from "@/assets/js/common";
import {skyProjectDetail} from '@/api/detail/party-a/dealings'
export default { export default {
name: "cooperativeConstructionUnit", name: "cooperativeConstructionUnit",
mixins: [mixin], mixins: [mixin],
...@@ -76,7 +93,7 @@ export default { ...@@ -76,7 +93,7 @@ export default {
{ label: '施工单位名称', prop: 'counterpartCompanyName', width: '295', slot: true, showOverflowTooltip: true }, { label: '施工单位名称', prop: 'counterpartCompanyName', width: '295', slot: true, showOverflowTooltip: true },
{ label: '合作项目数量', prop: 'count', minWidth: '190', align: "right", slot: true, sortable: "custom" }, { label: '合作项目数量', prop: 'count', minWidth: '190', align: "right", slot: true, sortable: "custom" },
{ label: '最近一次合作时间', prop: 'time', minWidth: '214', sortable: "custom" }, { label: '最近一次合作时间', prop: 'time', minWidth: '214', sortable: "custom" },
{ label: '合作总金额(万元)', prop: 'amount', minWidth: '226', align: "right", sortable: "custom" }, { label: '合作总金额(万元)', prop: 'amount', slot: true, minWidth: '226', align: "right", sortable: "custom" },
], ],
formData: [ formData: [
{ type: 4, fieldName: 'businessTypes', value: '', placeholder: '咨询机构业务', options: [], uid: this.getUid() }, { type: 4, fieldName: 'businessTypes', value: '', placeholder: '咨询机构业务', options: [], uid: this.getUid() },
...@@ -105,9 +122,9 @@ export default { ...@@ -105,9 +122,9 @@ export default {
{ label: '合作项目/工程名称', prop: 'projectName', width: '260', slot: true, showOverflowTooltip: true }, { label: '合作项目/工程名称', prop: 'projectName', width: '260', slot: true, showOverflowTooltip: true },
{ label: '合作时间', prop: 'time', width: '140', sortable: "custom" }, { label: '合作时间', prop: 'time', width: '140', sortable: "custom" },
{ label: '咨询机构承担角色', prop: 'agencyBusinessType', width: '140' }, { label: '咨询机构承担角色', prop: 'agencyBusinessType', width: '140' },
{ label: '项目类型', prop: 'counterpartRole', minWidth: '90' }, { label: '项目类型', prop: 'counterpartRole', minWidth: '105' },
{ label: '工程类型', prop: 'projectType', minWidth: '90' }, { label: '工程类型', prop: 'projectType', minWidth: '100' },
{ label: '项目/工程金额(万元)', prop: 'amount', width: '190', sortable: "custom", align: "right", }, { label: '项目/工程金额(万元)', prop: 'amount', slot: true, width: '190', sortable: "custom", align: "right", },
{ label: '项目地区', prop: 'area', width: '245', slot: true }, { label: '项目地区', prop: 'area', width: '245', slot: true },
{ label: '数据来源', prop: 'dataSource', width: '90' }, { label: '数据来源', prop: 'dataSource', width: '90' },
], ],
...@@ -347,6 +364,15 @@ export default { ...@@ -347,6 +364,15 @@ export default {
this.dialogFormData = data.dialogFormData; this.dialogFormData = data.dialogFormData;
this.dialogtableDataTotal = data.dialogtableDataTotal; this.dialogtableDataTotal = data.dialogtableDataTotal;
this.dialogTableData = data.dialogTableData; this.dialogTableData = data.dialogTableData;
},
linkTo1(id){
let url = ""
skyProjectDetail({sourceId:id}).then(res=>{
if(res.data&&res.data.sourceUrl){
url = res.data.sourceUrl
window.open(url, "_blank")
}
})
} }
}, },
} }
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
:queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange"> :queryParams="queryParams" @handle-current-change="handleCurrentChange" @sort-change="sortChange">
<!-- 业主名称 --> <!-- 业主名称 -->
<template slot="combineName" slot-scope="scope"> <template slot="combineName" slot-scope="scope">
<span v-if="scope.row.combineName" style="color: #0081FF;cursor: pointer;" @click="viewEnterprise(scope.row)" <span v-if="scope.row.combineName" @click="viewEnterprise(scope.row)"
v-html="scope.row.combineName">{{scope.row.combineName}}</span> v-html="scope.row.combineName">{{scope.row.combineName}}</span>
<span v-else>-</span> <span v-else>-</span>
</template> </template>
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
</template> </template>
</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" :modal-append-to-body="false"
class="cooperation-record-dialog-container" custom-class="cooperation-record-dialog" :destroy-on-close="true" :close-on-click-modal="false"> class="cooperation-record-dialog-container" custom-class="cooperation-record-dialog" :destroy-on-close="true" :close-on-click-modal="false">
<!-- tab切换栏 --> <!-- tab切换栏 -->
...@@ -64,8 +64,18 @@ ...@@ -64,8 +64,18 @@
@sort-change="dialogSortChange" :maxHeight="true"> @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;" <template v-if="scope.row.dataSource ==='中标业绩'">
v-html="scope.row.projectName">{{scope.row.projectName}}</span> <router-link :to="`/biddetail/${scope.row.sourceId}`" tag="a" class="a-link" v-if="scope.row.sourceId" v-html="scope.row.projectName"></router-link>
<div v-else v-html="scope.row.projectName || '--'"></div>
</template>
<template>
<span @click="linkTo1(scope.row.sourceId)" 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>
<!-- 合作总金额-->
<template slot="amount" slot-scope="scope">
<span v-if="scope.row.amount">{{scope.row.amount.toFixed(2)}}</span>
<span v-else>-</span> <span v-else>-</span>
</template> </template>
<!-- 合作成员 --> <!-- 合作成员 -->
...@@ -95,6 +105,7 @@ import DialogTables from "../component/Tables"; ...@@ -95,6 +105,7 @@ import DialogTables from "../component/Tables";
import DskTabToggle from "@/components/DskTabToggle"; import DskTabToggle from "@/components/DskTabToggle";
import { replaceDomTags } from "@/utils"; import { replaceDomTags } from "@/utils";
import { encodeStr } from "@/assets/js/common"; import { encodeStr } from "@/assets/js/common";
import {skyProjectDetail} from '@/api/detail/party-a/dealings'
export default { export default {
name: "cooperativeGroup", name: "cooperativeGroup",
mixins: [mixin], mixins: [mixin],
...@@ -140,7 +151,7 @@ export default { ...@@ -140,7 +151,7 @@ export default {
// { type: 4, fieldName: 'projectTypes', 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: 5, fieldName: 'time', value: '', placeholder: '合作频率', startTime: 'beginTime', endTime: 'endTime', uid: this.getUid() },
// { type: 6, fieldName: 'money', value: '', placeholder: '合作金额', uid: this.getUid() }, // { type: 6, fieldName: 'money', value: '', placeholder: '合作金额', uid: this.getUid() },
{ type: 3, fieldName: 'keyword', value: '', placeholder: '请输入', uid: this.getUid() }, { type: 3, fieldName: 'keyword', value: '', placeholder: '请输入集团名称', uid: this.getUid() },
], ],
//列表 //列表
tableLoading: false, tableLoading: false,
...@@ -170,9 +181,9 @@ export default { ...@@ -170,9 +181,9 @@ export default {
{ label: '合作时间', prop: 'time', width: '140', sortable: "custom" }, { label: '合作时间', prop: 'time', width: '140', sortable: "custom" },
{ label: '集团成员身份', prop: 'role', width: '140' }, { label: '集团成员身份', prop: 'role', width: '140' },
{ label: '咨询机构承担角色', prop: 'agencyBusinessType', width: '140' }, { label: '咨询机构承担角色', prop: 'agencyBusinessType', width: '140' },
{ label: '项目类型', prop: 'counterpartRole', minWidth: '90' }, { label: '项目类型', prop: 'counterpartRole', minWidth: '105' },
{ label: '工程类型', prop: 'projectType', minWidth: '90' }, { label: '工程类型', prop: 'projectType', minWidth: '100' },
{ label: '项目/工程金额(万元)', prop: 'amount', width: '190', sortable: "custom", align: "right", }, { label: '项目/工程金额(万元)', slot: true, prop: 'amount', width: '190', sortable: "custom", align: "right", },
{ label: '项目地区', prop: 'area', width: '245', slot: true }, { label: '项目地区', prop: 'area', width: '245', slot: true },
], ],
dialogFormData: [ dialogFormData: [
...@@ -440,6 +451,15 @@ export default { ...@@ -440,6 +451,15 @@ export default {
async tabToggle() { async tabToggle() {
await this.resetDialogQuery(); await this.resetDialogQuery();
await this.dialogHandleQurey(); await this.dialogHandleQurey();
},
linkTo1(id){
let url = ""
skyProjectDetail({sourceId:id}).then(res=>{
if(res.data&&res.data.sourceUrl){
url = res.data.sourceUrl
window.open(url, "_blank")
}
})
} }
}, },
} }
......
...@@ -11,6 +11,11 @@ ...@@ -11,6 +11,11 @@
v-html="scope.row.companyName">{{scope.row.companyName}}</span> v-html="scope.row.companyName">{{scope.row.companyName}}</span>
<span v-else>-</span> <span v-else>-</span>
</template> </template>
<!-- 合作总金额-->
<template slot="amount" slot-scope="scope">
<span v-if="scope.row.amount">{{scope.row.amount.toFixed(2)}}</span>
<span v-else>-</span>
</template>
<!-- 合作项目数量 --> <!-- 合作项目数量 -->
<template slot="count" slot-scope="scope"> <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-if="scope.row.count" style="color: #0081FF;cursor: pointer;" @click="viewProject(scope.row)">{{scope.row.count}}</span>
...@@ -18,7 +23,7 @@ ...@@ -18,7 +23,7 @@
</template> </template>
</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" :modal-append-to-body="false"
class="cooperation-record-dialog-container" custom-class="cooperation-record-dialog" :destroy-on-close="true" :close-on-click-modal="false"> 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"
...@@ -32,7 +37,18 @@ ...@@ -32,7 +37,18 @@
@sort-change="dialogSortChange" :maxHeight="true"> @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> <template v-if="scope.row.dataSource ==='中标业绩'">
<router-link :to="`/biddetail/${scope.row.sourceId}`" tag="a" class="a-link" v-if="scope.row.sourceId" v-html="scope.row.projectName"></router-link>
<div v-else v-html="scope.row.projectName || '--'"></div>
</template>
<template>
<span @click="linkTo1(scope.row.sourceId)" 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>
<!-- 合作总金额-->
<template slot="amount" slot-scope="scope">
<span v-if="scope.row.amount">{{parseFloat(Number(scope.row.amount).toFixed(2))}}</span>
<span v-else>-</span> <span v-else>-</span>
</template> </template>
<!-- 省市区 --> <!-- 省市区 -->
...@@ -53,6 +69,7 @@ import DialogHeadFormNew from "../component/HeadFormNew"; ...@@ -53,6 +69,7 @@ import DialogHeadFormNew from "../component/HeadFormNew";
import DialogTables from "../component/Tables"; import DialogTables from "../component/Tables";
import { replaceDomTags } from "@/utils"; import { replaceDomTags } from "@/utils";
import { encodeStr } from "@/assets/js/common"; import { encodeStr } from "@/assets/js/common";
import {skyProjectDetail} from '@/api/detail/party-a/dealings'
export default { export default {
name: "cooperativeOwnerUnits", name: "cooperativeOwnerUnits",
mixins: [mixin], mixins: [mixin],
...@@ -67,7 +84,7 @@ export default { ...@@ -67,7 +84,7 @@ export default {
queryParams: { queryParams: {
companyId: this.companyId, companyId: this.companyId,
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 50,
companyType: 1, companyType: 1,
sort: "" sort: ""
}, },
...@@ -76,7 +93,7 @@ export default { ...@@ -76,7 +93,7 @@ export default {
{ label: '业主名称', prop: 'companyName', width: '295', slot: true, showOverflowTooltip: true }, { label: '业主名称', prop: 'companyName', width: '295', slot: true, showOverflowTooltip: true },
{ label: '合作项目数量', prop: 'count', minWidth: '190', align: "right", slot: true, sortable: "custom" }, { label: '合作项目数量', prop: 'count', minWidth: '190', align: "right", slot: true, sortable: "custom" },
{ label: '最近一次合作时间', prop: 'time', minWidth: '214', sortable: "custom" }, { label: '最近一次合作时间', prop: 'time', minWidth: '214', sortable: "custom" },
{ label: '合作总金额(万元)', prop: 'amount', minWidth: '226', align: "right", sortable: "custom" }, { label: '合作总金额(万元)', prop: 'amount', slot: true, minWidth: '226', align: "right", sortable: "custom" },
], ],
formData: [ formData: [
{ type: 4, fieldName: 'businessTypes', value: '', placeholder: '咨询机构业务', options: [], uid: this.getUid() }, { type: 4, fieldName: 'businessTypes', value: '', placeholder: '咨询机构业务', options: [], uid: this.getUid() },
...@@ -105,9 +122,9 @@ export default { ...@@ -105,9 +122,9 @@ export default {
{ label: '合作项目/工程名称', prop: 'projectName', width: '260', slot: true, showOverflowTooltip: true }, { label: '合作项目/工程名称', prop: 'projectName', width: '260', slot: true, showOverflowTooltip: true },
{ label: '合作时间', prop: 'time', width: '140', sortable: "custom" }, { label: '合作时间', prop: 'time', width: '140', sortable: "custom" },
{ label: '咨询机构承担角色', prop: 'agencyBusinessType', width: '140' }, { label: '咨询机构承担角色', prop: 'agencyBusinessType', width: '140' },
{ label: '项目类型', prop: 'counterpartRole', minWidth: '90' }, { label: '项目类型', prop: 'counterpartRole', minWidth: '105' },
{ label: '工程类型', prop: 'projectType', minWidth: '90' }, { label: '工程类型', prop: 'projectType', minWidth: '100' },
{ label: '项目/工程金额(万元)', prop: 'amount', width: '190', sortable: "custom", align: "right", }, { label: '项目/工程金额(万元)', prop: 'amount', slot: true, width: '190', sortable: "custom", align: "right", },
{ label: '项目地区', prop: 'area', width: '245', slot: true }, { label: '项目地区', prop: 'area', width: '245', slot: true },
{ label: '数据来源', prop: 'dataSource', width: '90' }, { label: '数据来源', prop: 'dataSource', width: '90' },
], ],
...@@ -348,6 +365,15 @@ export default { ...@@ -348,6 +365,15 @@ export default {
this.dialogFormData = data.dialogFormData; this.dialogFormData = data.dialogFormData;
this.dialogtableDataTotal = data.dialogtableDataTotal; this.dialogtableDataTotal = data.dialogtableDataTotal;
this.dialogTableData = data.dialogTableData; this.dialogTableData = data.dialogTableData;
},
linkTo1(id){
let url = ""
skyProjectDetail({sourceId:id}).then(res=>{
if(res.data&&res.data.sourceUrl){
url = res.data.sourceUrl
window.open(url, "_blank")
}
})
} }
}, },
} }
......
<template> <template>
<div class="app-container part-container details-of-party"> <div class="app-container part-container details-of-party">
<div style="height: 100%;" v-if="!isCompany">
<skeleton style="padding-top: 16px"></skeleton>
</div>
<Header :company-id="companyId" :companyInfo="companyInfo" :cooDetail="cooDetail" v-if="companyId" @close-detail="closeDetail" /> <Header :company-id="companyId" :companyInfo="companyInfo" :cooDetail="cooDetail" v-if="companyId" @close-detail="closeDetail" />
<div class="part-main"> <div class="part-main">
<div class="part-left"> <div class="part-left">
...@@ -148,6 +151,7 @@ import ConstructionSituation from "@/views/detail/party-a/internalCooperation/co ...@@ -148,6 +151,7 @@ import ConstructionSituation from "@/views/detail/party-a/internalCooperation/co
import { import {
urbanInvestmentPage, urbanInvestmentPage,
} from '@/api/detail/party-a/urbanLnvestment'; } from '@/api/detail/party-a/urbanLnvestment';
import skeleton from './component/skeleton'
export default { export default {
name: 'PartyA', name: 'PartyA',
components: { components: {
...@@ -198,11 +202,13 @@ export default { ...@@ -198,11 +202,13 @@ export default {
CooperativeConstructionUnit, CooperativeConstructionUnit,
CooperativeGroup, CooperativeGroup,
ConstructionPerformance, ConstructionPerformance,
ConstructionSituation ConstructionSituation,
skeleton
}, },
data() { data() {
return { return {
isSkeleton: true, isSkeleton: true,
isSkeleton1: true,
companyInfo: {}, companyInfo: {},
customerInfo: {}, customerInfo: {},
// 企业名称 // 企业名称
...@@ -309,13 +315,15 @@ export default { ...@@ -309,13 +315,15 @@ export default {
this.companyId = data; this.companyId = data;
await this.$nextTick(); await this.$nextTick();
this.listenSider(); this.listenSider();
await this.getStatistic(this.companyName);
await this.handleQuery(); await this.handleQuery();
await this.getStatistic(this.companyName);
await this.association(this.$route.query.customerId); await this.association(this.$route.query.customerId);
this.$refs.sidebar.getFinancial(data); this.$refs.sidebar.getFinancial(data);
} }
}, },
async getStatistic(companyName) { async getStatistic(companyName) {
let params = { let params = {
companyId: this.companyId companyId: this.companyId
}; };
......
...@@ -17,19 +17,20 @@ ...@@ -17,19 +17,20 @@
</template> </template>
<!-- 业主单位 --> <!-- 业主单位 -->
<template slot="ownerName" slot-scope="scope"> <template slot="ownerName" slot-scope="scope">
<span v-if="scope.row.ownerName" style="color: #0081FF;cursor: pointer;" @click="viewEnterprise(scope.row)">{{scope.row.ownerName}}</span> <!--<span v-if="scope.row.ownerName" style="color: #0081FF;cursor: pointer;" @click="viewEnterprise(scope.row)">{{scope.row.ownerName}}</span>-->
<!--<span v-if="scope.row.ownerName" @click="viewEnterprise(scope.row)">{{scope.row.ownerName}}</span>-->
<router-link :to="`/enterprise/${encodeStr(scope.row.ownerCid)}}`" tag="a" class="a-link" v-if="scope.row.ownerCid" v-html="scope.row.ownerName"></router-link>
<span v-else>-</span> <span v-else>-</span>
</template> </template>
<!-- 项目承接单位 --> <!-- 项目承接单位 -->
<template slot="contractOrgName" slot-scope="scope"> <template slot="contractOrgName" slot-scope="scope">
<span v-if="scope.row.contractOrgName" style="color: #0081FF;cursor: pointer;" <!--<span v-if="scope.row.contractOrgName" @click="viewEnterprise(scope.row)">{{scope.row.contractOrgName}}</span>-->
@click="viewEnterprise(scope.row)">{{scope.row.contractOrgName}}</span> <router-link :to="`/enterprise/${encodeStr(scope.row.contractOrgCid)}}`" tag="a" class="a-link" v-if="scope.row.contractOrgCid" v-html="scope.row.contractOrgName"></router-link>
<span v-else>-</span> <span v-else>-</span>
</template> </template>
<!-- 咨询机构名称 --> <!-- 咨询机构名称 -->
<template slot="advisoryBodyName" slot-scope="scope"> <template slot="advisoryBodyName" slot-scope="scope">
<span v-if="scope.row.advisoryBodyName" style="color: #0081FF;cursor: pointer;" <router-link :to="`/enterprise/${encodeStr(scope.row.advisoryBodyCid)}}`" tag="a" class="a-link" v-if="scope.row.advisoryBodyCid" v-html="scope.row.advisoryBodyName"></router-link>
@click="viewEnterprise(scope.row)">{{scope.row.advisoryBodyName}}</span>
<span v-else>-</span> <span v-else>-</span>
</template> </template>
</tables> </tables>
...@@ -41,6 +42,7 @@ import mixin from '@/views/detail/party-a/mixins/mixin'; ...@@ -41,6 +42,7 @@ import mixin from '@/views/detail/party-a/mixins/mixin';
import { getConsultingAgencyCooperationListApi, getConsultingAgencyCooperationTypesApi, exportRecordOfCooperationExcelApi } from "@/api/internalCooperation"; import { getConsultingAgencyCooperationListApi, getConsultingAgencyCooperationTypesApi, exportRecordOfCooperationExcelApi } from "@/api/internalCooperation";
import { getAllAreaApi } from "@/api/common"; import { getAllAreaApi } from "@/api/common";
import { getTreeSelectAreaList } from "@/utils"; import { getTreeSelectAreaList } from "@/utils";
import { encodeStr } from "@/assets/js/common";
export default { export default {
name: "consultingAgencyCooperation", name: "consultingAgencyCooperation",
mixins: [mixin], mixins: [mixin],
...@@ -50,6 +52,7 @@ export default { ...@@ -50,6 +52,7 @@ export default {
props: ['companyId'], props: ['companyId'],
data() { data() {
return { return {
encodeStr,
queryParams: { queryParams: {
advisoryBodyCid: this.companyId, advisoryBodyCid: this.companyId,
pageNum: 1, pageNum: 1,
......
...@@ -158,7 +158,7 @@ export default { ...@@ -158,7 +158,7 @@ export default {
menuDetails:{}, menuDetails:{},
menuOptions: { menuOptions: {
nodeName: "menuName", nodeName: "menuName",
nodeValue: "menuId", nodeValue: "menuName",
children : "childrenList" children : "childrenList"
}, },
detailsId:'', detailsId:'',
......
<template> <template>
<el-dialog title="填写实际成本" :visible="comDialogStatus" class="add-actual-cost-container"> <el-dialog title="填写实际成本" :visible="comDialogStatus" class="add-actual-cost-container" @close="dialogClose">
<div class="dialog-content-inner">
<!-- 成本年份 -->
<div class="cost-year-container">
<span>成本年份</span>
<el-date-picker v-model="time" type="month" placeholder="请选择所需要添加的成本月份" format="yyyy年MM月" value-format="yyyy-MM" class="project-record-date"
@change="timeChange" :picker-options="pickerOptions"></el-date-picker>
</div>
</div>
<!-- 底部按钮 -->
<div class="dialog-content-footer">
<div class="cancel-or-ok">
<el-button size="medium" @click="cancel" class="cancel-select-year">取消</el-button>
<el-button type="primary" size="medium" @click="ok" class="ok-select-year">确定</el-button>
</div>
</div>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import dayjs from "dayjs";
export default { export default {
name: "AddActualCost", name: "AddActualCost",
props: { props: {
dialogStatus: { dialogStatus: {
type: Boolean, type: Boolean,
default: false default: false
},
projectCreateTime: {
type: String,
default: ""
} }
}, },
model: { model: {
...@@ -23,7 +44,11 @@ export default { ...@@ -23,7 +44,11 @@ export default {
}, },
data() { data() {
return { return {
comDialogStatus: this.dialogStatus comDialogStatus: this.dialogStatus,
time: "",
pickerOptions: {
disabledDate: this.disabledDateHandler
}
}; };
}, },
//可访问data属性 //可访问data属性
...@@ -36,7 +61,44 @@ export default { ...@@ -36,7 +61,44 @@ export default {
}, },
//方法集 //方法集
methods: { methods: {
// 时间选择变化
timeChange(time) {
// console.log(time);
},
cancel() {
this.comDialogStatus = false;
},
ok() {
if (!this.time) {
return this.$message.error("请选择成本年份");
}
// 发布事件
this.$emit("timeSelect", dayjs(this.time).format("YYYYMM"));
this.comDialogStatus = false;
},
reset() {
this.time = "";
},
dialogClose() {
this.$emit("dialogStatusChange", false);
this.reset();
},
disabledDateHandler(optionTime) {
// 选项年月
const _optionTime = dayjs(optionTime).format("YYYYMM");
// 当前项目年月
const _thresholdTime = dayjs(this.projectCreateTime).format("YYYYMM");
// 当前项目年
const _thresholdYear = _thresholdTime.slice(0, 4);
// 当前项目月份 补0
const _thresholdMonth = _thresholdTime.slice(4);
// 是否小于当前项目年月 或 大于 当前项目年月 往后推五年
const lastYearMonth = parseInt(`${parseInt(_thresholdYear) + 5}${_thresholdMonth}`);;
if (parseInt(_optionTime) < parseInt(_thresholdTime) || parseInt(_optionTime) > lastYearMonth) {
return true;
}
return false;
}
}, },
} }
</script> </script>
...@@ -58,6 +120,7 @@ export default { ...@@ -58,6 +120,7 @@ export default {
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
border-bottom: 1px solid #eeeeee; border-bottom: 1px solid #eeeeee;
box-sizing: border-box;
.el-dialog__title { .el-dialog__title {
font-size: 16px; font-size: 16px;
...@@ -78,9 +141,84 @@ export default { ...@@ -78,9 +141,84 @@ export default {
.el-dialog__body { .el-dialog__body {
padding: 0px; padding: 0px;
box-sizing: border-box;
.dialog-content-inner {
min-height: 120px; min-height: 120px;
padding: 24px 20px; padding: 24px 20px;
}
.cost-year-container {
display: flex;
align-items: center;
& > span {
color: rgba(35, 35, 35, 0.8);
font-size: 14px;
margin-right: 16px;
white-space: nowrap;
}
.project-record-date {
width: 100%;
.el-input__inner {
height: 30px;
line-height: 30px;
padding: 0px 12px;
border-radius: 2px;
border-color: #dcdfe6;
font-size: 14px;
color: #232323;
font-weight: 350;
}
.el-input__suffix {
right: 12px;
.el-input__icon {
line-height: 30px;
width: auto;
}
}
.el-input__prefix {
display: none;
}
}
}
.dialog-content-footer {
height: 64px;
padding: 0px 20px;
display: flex;
justify-content: flex-end;
align-items: center;
border-top: 1px solid #eeeeee;
box-sizing: border-box; box-sizing: border-box;
.cancel-or-ok {
display: flex;
height: 100%;
align-items: center;
.el-button {
padding: 0px 16px;
display: flex;
align-items: center;
justify-content: center;
height: 32px;
font-size: 14px;
&.cancel-select-year {
color: rgba(35, 35, 35, 0.8);
border: 1px solid #dcdfe6;
background: #fff;
}
&.ok-select-year {
background: #0081ff;
border-color: #0081ff;
}
}
}
}
} }
} }
} }
......
...@@ -17,8 +17,6 @@ ...@@ -17,8 +17,6 @@
<div class="right-table-list-container"> <div class="right-table-list-container">
<div class="project-table-list-header"> <div class="project-table-list-header">
<div class="project-table-list-haeder-left"> <div class="project-table-list-haeder-left">
<!-- <el-date-picker v-model="recordDate" type="month" placeholder="选择月" format="yyyy年MM月" value-format="yyyy-MM"
class="project-record-date" @change="timeChange"></el-date-picker> -->
<el-select v-model="recordDate" placeholder="请选择年月" class="project-month-select-options" clearable @change="monthChange"> <el-select v-model="recordDate" placeholder="请选择年月" class="project-month-select-options" clearable @change="monthChange">
<el-option v-for="item in monthList" :key="item.value" :label="item.label" :value="item.value"> <el-option v-for="item in monthList" :key="item.value" :label="item.label" :value="item.value">
</el-option> </el-option>
...@@ -28,7 +26,8 @@ ...@@ -28,7 +26,8 @@
<!-- 实体工程材料单位换算 --> <!-- 实体工程材料单位换算 -->
<el-button type="primary" size="medium" class="unit-conversion-btn" v-if="currentParentName.indexOf('实体工程材料') != -1">单位换算</el-button> <el-button type="primary" size="medium" class="unit-conversion-btn" v-if="currentParentName.indexOf('实体工程材料') != -1">单位换算</el-button>
<!-- 填写实际成本 --> <!-- 填写实际成本 -->
<el-button type="primary" size="medium" class="actual-cost-btn" v-else @click="fillActualCost">填写实际成本</el-button> <el-button type="primary" size="medium" class="actual-cost-btn" v-else
@click="fillActualCost">{{addActualCostEditStatus ? '保存成本' : '填写实际成本'}}</el-button>
<!-- 表头设置组件 --> <!-- 表头设置组件 -->
<dsk-table-header-setting :settingList="formColum" @settingChange="settingChange"></dsk-table-header-setting> <dsk-table-header-setting :settingList="formColum" @settingChange="settingChange"></dsk-table-header-setting>
</div> </div>
...@@ -50,7 +49,7 @@ ...@@ -50,7 +49,7 @@
</div> </div>
<!-- 填写实际成本触发 --> <!-- 填写实际成本触发 -->
<add-actual-cost v-model="showAddActualCost"></add-actual-cost> <add-actual-cost v-model="showAddActualCost" :project-create-time="projectDetailInfo.createTime" @timeSelect="timeSelect"></add-actual-cost>
</div> </div>
</template> </template>
...@@ -178,7 +177,11 @@ export default { ...@@ -178,7 +177,11 @@ export default {
tableDataList: [], tableDataList: [],
statisticsParentName: ["劳务分包工程", "专业分包工程"], statisticsParentName: ["劳务分包工程", "专业分包工程"],
// 填写实际成本弹窗 // 填写实际成本弹窗
showAddActualCost: false showAddActualCost: false,
// 填写实际成本 编辑状态
addActualCostEditStatus: false,
// 当前选择的成本年份
selectActualCostTime: ""
}; };
}, },
//可访问data属性 //可访问data属性
...@@ -345,6 +348,7 @@ export default { ...@@ -345,6 +348,7 @@ export default {
} }
}, },
monthChange(month) { monthChange(month) {
this.resetEditStatus();
// 当前月 // 当前月
const _now = dayjs(new Date().valueOf()).format("YYYYMM"); const _now = dayjs(new Date().valueOf()).format("YYYYMM");
// 请求列表参数 // 请求列表参数
...@@ -364,6 +368,7 @@ export default { ...@@ -364,6 +368,7 @@ export default {
this.getFeedSummaryList(params); this.getFeedSummaryList(params);
}, },
menuSelect(currentId, currentTemp) { menuSelect(currentId, currentTemp) {
this.resetEditStatus();
this.currentNodeName = currentId; this.currentNodeName = currentId;
const parentName = currentTemp.parent ? this.getCurrentType(currentTemp.parent) : currentId; const parentName = currentTemp.parent ? this.getCurrentType(currentTemp.parent) : currentId;
if (parentName) this.currentParentName = parentName; if (parentName) this.currentParentName = parentName;
...@@ -379,10 +384,6 @@ export default { ...@@ -379,10 +384,6 @@ export default {
return this.getCurrentType(parent.parent); return this.getCurrentType(parent.parent);
} }
}, },
// 时间选择变化
timeChange(time) {
console.log(time);
},
// 表头设置变化 // 表头设置变化
async settingChange(use) { async settingChange(use) {
try { try {
...@@ -394,6 +395,28 @@ export default { ...@@ -394,6 +395,28 @@ export default {
// 填写或修改新的 成本月份 // 填写或修改新的 成本月份
fillActualCost() { fillActualCost() {
this.showAddActualCost = true; this.showAddActualCost = true;
},
resetEditStatus() {
this.addActualCostEditStatus = false;
this.selectActualCostTime = "";
},
async timeSelect(selectTime) {
// 编辑状态
this.addActualCostEditStatus = true;
this.selectActualCostTime = selectTime;
// 判断是否包含 选择的年月 包含则修改 未包含则新增
const findReslut = this.originMonthList.includes(selectTime);
// 包含所选月
if (findReslut) {
this.recordDate = selectTime;
const params = this.createRequestConditions();
params["recordDate"] = selectTime;
// 获取选中月数据
await this.getFeedSummaryList(params);
} else {
// 不包含当前所选月 新增数据
}
} }
}, },
} }
...@@ -430,29 +453,6 @@ export default { ...@@ -430,29 +453,6 @@ export default {
.project-table-list-haeder-left { .project-table-list-haeder-left {
display: flex; display: flex;
align-items: center; align-items: center;
.project-record-date {
width: 140px;
.el-input__inner {
height: 32px;
line-height: 32px;
padding: 0px 12px;
border-radius: 2px;
border-color: #dcdfe6;
font-size: 14px;
color: #232323;
font-weight: 350;
}
.el-input__suffix {
right: 12px;
.el-input__icon {
line-height: 32px;
width: auto;
}
}
.el-input__prefix {
display: none;
}
}
.project-month-select-options { .project-month-select-options {
width: 140px; width: 140px;
.el-input__inner { .el-input__inner {
......
...@@ -193,8 +193,8 @@ export default { ...@@ -193,8 +193,8 @@ export default {
const detail = await getProjectDetailApi(projectId); const detail = await getProjectDetailApi(projectId);
if (detail.code == 200 && detail.data) { if (detail.code == 200 && detail.data) {
if (detail.data.id) detail.data["projectId"] = detail.data.id; if (detail.data.id) detail.data["projectId"] = detail.data.id;
// detail.data["projectId"] = "1754425038355890177"; detail.data["projectId"] = "1754425038355890177";
// detail.data["cbStage"] = 0; detail.data["cbStage"] = 0;
this.detailInfo = detail.data; this.detailInfo = detail.data;
} }
} catch (error) { } catch (error) {
......
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