Commit 610010ea authored by huangjie's avatar huangjie

Merge branch 'V20231129-中建一局二公司' of http://192.168.60.201/root/dsk-operate-sys...

Merge branch 'V20231129-中建一局二公司' of http://192.168.60.201/root/dsk-operate-sys into V20231129-中建一局二公司
parents bbe323ec 4ebe0436
package com.dsk.cscec.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;
import java.io.Serializable;
......@@ -48,6 +49,7 @@ public class CbSummaryActual implements Serializable {
/**
* 删除状态(0:否、2:是)
*/
@TableLogic
private Integer delFlag;
}
......@@ -49,15 +49,17 @@ public class CbSummaryCostAccountImportListener extends AnalysisEventListener<Cb
int count = StringUtil.count(importVo.getNumber(), "-");
importVo.setLevel(count + 1);
} else {
failureNum++;
failureMsg.append("<br/>").append("第" + sort + "条数据序号为空");
return;
// failureNum++;
// failureMsg.append("<br/>").append("第" + sort + "条数据序号为空");
// return;
throw new ServiceException("表格中存在'序号'列为空数据!");
}
//成本科目不能为空
if (StringUtil.isBlank(importVo.getCbName())) {
failureNum++;
failureMsg.append("<br/>").append("第" + sort + "条数据成本科目为空");
return;
// failureNum++;
// failureMsg.append("<br/>").append("第" + sort + "条数据成本科目为空");
// return;
throw new ServiceException("表格中存在'成本科目'列为空数据!");
}
//父级数据处理
......
......@@ -45,9 +45,10 @@ public class CbSummaryProjectImportListener extends AnalysisEventListener<CbSumm
public void invoke(CbSummaryProjectImportVo importVo, AnalysisContext context) {
//名称不能为空
if (StringUtil.isBlank(importVo.getCbName())) {
failureNum++;
failureMsg.append("<br/>").append("第" + sort + "条数据名称为空");
return;
// failureNum++;
// failureMsg.append("<br/>").append("第" + sort + "条数据名称为空");
// return;
throw new ServiceException("表格中存在'名称'列为空数据!");
}
//添加父级数据
if (sort == 0) {
......@@ -70,9 +71,10 @@ public class CbSummaryProjectImportListener extends AnalysisEventListener<CbSumm
.filter(vo -> StringUtil.isNotBlank(vo.getNumber())).limit(1).map(CbSummaryProjectImportVo::getLevel).toArray();
//数据序号错误
if (ObjectUtil.isEmpty(objects)) {
failureNum++;
failureMsg.append("<br/>").append("第" + sort + "条数据序号错误");
return;
// failureNum++;
// failureMsg.append("<br/>").append("第" + sort + "条数据序号错误");
// return;
throw new ServiceException("'序号'列数据错误,无法匹配层级!");
}
Integer lastLevel = (Integer) objects[0];
......
......@@ -71,16 +71,16 @@ public class CbSummaryServiceImpl extends ServiceImpl<CbSummaryMapper, CbSummary
@Override
public void importCbSummary(Long projectId) {
//获取待解析和待删除文件信息
//获取待解析和解析失败文件信息
List<CbProjectFile> cbProjectFiles = cbProjectFileMapper.selectAnalysisList(projectId, CbProjectConstants.CB_TYPE_SUMMARY, null);
//解析数据
cbProjectFiles.forEach(cbProjectFile -> {
if (cbProjectFile.getDelFlag() == 1) {
//根据fileId删除相关基础数据,并删除文件
baseMapper.delete(new LambdaQueryWrapper<CbSummary>().eq(CbSummary::getCbProjectFileId, cbProjectFile.getId()));
cbProjectFileMapper.removeById(cbProjectFile.getId());
} else {
// if (cbProjectFile.getDelFlag() == 1) {
// //根据fileId删除相关基础数据,并删除文件
// baseMapper.delete(new LambdaQueryWrapper<CbSummary>().eq(CbSummary::getCbProjectFileId, cbProjectFile.getId()));
// cbProjectFileMapper.removeById(cbProjectFile.getId());
// } else {
try {
if (cbProjectFile.getFileName().contains("项目")) {
saveCbSummaryProject(projectId, cbProjectFile);
......@@ -96,7 +96,7 @@ public class CbSummaryServiceImpl extends ServiceImpl<CbSummaryMapper, CbSummary
cbProjectFile.setFailRemark("失败原因:" + e.getMessage());
cbProjectFileMapper.updateById(cbProjectFile);
}
}
// }
});
......@@ -152,6 +152,9 @@ public class CbSummaryServiceImpl extends ServiceImpl<CbSummaryMapper, CbSummary
CbSummary parent = cbSummaryList.stream().filter(summary -> summary.getSort() < cbSummary.getSort() && summary.getLevel() == parentLevel)
.max(Comparator.comparing(CbSummary::getSort)).get();
if(ObjectUtil.isNull(parent)){
throw new ServiceException("'序号'列数据错误,无法匹配层级!");
}
cbSummary.setParentId(parent.getId());
}
......@@ -224,7 +227,9 @@ public class CbSummaryServiceImpl extends ServiceImpl<CbSummaryMapper, CbSummary
Integer parentLevel = cbSummary.getLevel() - 1;
CbSummary parent = cbSummaryList.stream().filter(summary -> summary.getSort() < cbSummary.getSort() && summary.getLevel() == parentLevel)
.max(Comparator.comparing(CbSummary::getSort)).get();
if(ObjectUtil.isNull(parent)){
throw new ServiceException("'序号'列数据错误,无法匹配层级!");
}
cbSummary.setParentId(parent.getId());
}
......@@ -290,6 +295,11 @@ public class CbSummaryServiceImpl extends ServiceImpl<CbSummaryMapper, CbSummary
children.setTaxExclusiveExpenseTotal(total.get("taxExclusiveExpenseTotal"));
children.setTaxInclusiveExpenseTotal(total.get("taxInclusiveExpenseTotal"));
});
if (CollectionUtil.isNotEmpty(childrenList)) {
cbSummaryActualListVo.setHasChildren(1);
} else {
cbSummaryActualListVo.setHasChildren(0);
}
if (0 == cbSummaryActualListVo.getLevel() && 1 == bo.getCbType()) {
//项目汇总一级列表
......
......@@ -2,13 +2,24 @@ import request from '@/utils/request';
/**
* 获取咨询机构合作列表
* @param {*} data
* @param {*} params
* @returns
*/
export const getConsultingAgencyCooperationListApi = (data) => request({
export const getConsultingAgencyCooperationListApi = (params) => request({
url: "/customerInfo/advisoryList",
method: "get",
data
params
});
/**
* 获取咨询机构合作工程类型
* @param {*} params
* @returns
*/
export const getConsultingAgencyCooperationTypesApi = (params) => request({
url: "/dProjectType/getAll",
method: "get",
params
});
/**
......
......@@ -37,7 +37,7 @@ export function editProjectInfo(data) {
//删除项目
export function batchDeleteProject(ids) {
return request({
url: '/cbProjectRecord/batchDeleteProject/'+ids,
url: '/cbProjectRecord/batchDeleteProject/' + ids,
method: 'Delete',
});
}
......@@ -103,7 +103,7 @@ export function getProjectList(data) {
return request({
url: '/cbProjectRecord/getProjectList',
method: 'get',
params:data
params: data
});
}
......@@ -112,7 +112,7 @@ export function getProjectHistoryInfo(data) {
return request({
url: '/cbProjectRecord/getProjectHistoryInfo',
method: 'get',
params:data
params: data
});
}
......@@ -121,19 +121,20 @@ export const getProfitLossMenuTreeApi = (params = {}) => request({
url: "/cbSummary/cbNameList",
method: "get",
params
})
});
//盈亏分析对比 数据列表
export function getAnalysislist(data) {
return request({
url: '/cb/gain/loss/analysis/list',
method: 'get',
params:data
params: data
});
}
// 措施项目 左侧菜单
export function getMeasureslist(projectId) {
return request({
url: '/cb/cost/measures/type/'+projectId,
url: '/cb/cost/measures/type/' + projectId,
method: 'get',
});
}
......@@ -142,7 +143,7 @@ export function getCostMeasureslist(data) {
return request({
url: '/cb/cost/measures/list',
method: 'get',
params:data
params: data
});
}
......@@ -151,7 +152,7 @@ export function getSummarydata(data) {
return request({
url: '/cb/cost/measures/summary/data',
method: 'post',
data:data
data: data
});
}
//措施费推送工程量
......@@ -175,7 +176,7 @@ export function projectVolume(data) {
// 工料汇总
/**
* 获取料汇总左侧菜单
* 获取料汇总左侧菜单
* @param {*} params
* @returns
*/
......@@ -183,7 +184,23 @@ export const getFeedSummaryMenuTreeApi = (params = {}) => request({
url: "/cb/quantity/summary/subjectTree",
method: "get",
params
})
});
/**
* 获取科目月份列表
* @param {{
* cbSubjectName : string;
* recordDate : string;
* projectId : number;
* cbStage : number
* }} params
* @returns
*/
export const getFeedSummaryListApi = (params = {}) => request({
url: "/cb/quantity/summary/subjectList",
method: "get",
params
});
// 其他项目
......@@ -191,10 +208,10 @@ export const getFeedSummaryMenuTreeApi = (params = {}) => request({
export const getProjectOtherMenuTreeApi = (relatedId) => request({
url: '/cb/projectOther/type/' + relatedId,
method: "get",
})
});
//其他费用-费用汇总
export const getProjectOtherStatistics = (relatedId) => request({
url: '/cb/projectOther/statistics/' + relatedId,
method: "get",
})
});
<template>
<div class="dsk-table-header-setting" @click="showHeaderSetting">
<div class="dsk-table-header-setting">
<div class="event-target-container" @click="showHeaderSetting">
<svg-icons :icon-class="'table-header-setting-icon'" :class-name="'table-header-setting-icon'"></svg-icons>
<div class="table-header-setting-text">表头设置</div>
</div>
<transition appear name="head" mode="out-in">
<setting-bar v-if="showHeaderSettingStatus" :settingList="settingList" @settingChange="settingChange"
@settingClose="showHeaderSettingStatus = false"></setting-bar>
......@@ -39,6 +41,10 @@ export default {
//方法集
methods: {
showHeaderSetting() {
if (this.showHeaderSettingStatus) {
this.showHeaderSettingStatus = false;
return;
};
this.showHeaderSettingStatus = true;
},
settingChange(use) {
......@@ -62,6 +68,11 @@ export default {
}
}
.event-target-container {
display: flex;
align-items: center;
}
.table-header-setting-icon {
cursor: pointer;
}
......
......@@ -139,7 +139,7 @@ export default {
},
toCooperateDetail(row) {
if (!row.advisoryBodyCid) return this.$message.warning("缺少咨询机构id");
this.$tab.openPage(`${row.advisoryBodyName}合作明细`, `/enterprise/${encodeStr(row.advisoryBodyCid)}?path=cooperationRecord&companyName=${replaceDomTags(row.advisoryBodyName)}`);
this.$tab.openPage(`${row.advisoryBodyName}合作明细`, `/enterprise/${encodeStr(row.advisoryBodyCid)}?path=consultingAgencyCooperation&companyName=${replaceDomTags(row.advisoryBodyName)}`);
},
// 跳转到企业详情
viewEnterprise(row) {
......
This diff is collapsed.
......@@ -2,7 +2,7 @@
<div class="head-form-new" :class="headerFixed ? 'headerFixed':''">
<div class="common-title" v-if="title && title !='集团招标'">{{ title }}</div>
<div class="flex-box query-box">
<div class="flex-box query-params">
<div class="flex-box query-params" v-if="comFormData && comFormData.length">
<div class="headForm-from">
<div class="from-item" :key="i" v-for="(form, i) in comFormData">
<!-- 单选 -->
......
......@@ -550,6 +550,14 @@ export default {
margin-top: -5px;
}
}
/* 禁用时 不需要选中文字颜色 */
::v-deep .el-menu-item {
&.is-disabled {
&:focus {
color: unset !important;
}
}
}
.is-disabled:hover {
color: rgba(35, 35, 35, 0.8) !important;
&:before {
......
......@@ -224,7 +224,7 @@ export default {
}
.el-table {
.cell {
font-size: 14px;
font-size: 12px;
}
.el-table__header-wrapper {
min-height: 40px;
......
......@@ -64,7 +64,12 @@
<!-- 2、准入情况 -->
<access-condition v-if="currentPath.pathName=='accessCondition'" :company-id="companyId" :companyInfo="companyInfo"></access-condition>
<!-- 3、供应商合作记录 -->
<cooperation-record v-if="currentPath.pathName=='cooperationRecord'" :company-id="companyId" :company-name="companyName"></cooperation-record>
<cooperation-record v-if="currentPath.pathName=='cooperationRecord'" :company-id="companyId"
:company-name="companyName"></cooperation-record>
<!-- 4、施工业绩 -->
<construction-performance v-if="currentPath.pathName=='constructionPerformance'" :company-id="companyId"></construction-performance>
<!-- 5、在施工程情况 -->
<construction-situation v-if="currentPath.pathName=='constructionSituation'" :company-id="companyId"></construction-situation>
</template>
<template v-if="customerId && isCustomer">
<!-- 商务信息 -->
......@@ -138,6 +143,8 @@ import Gjjl from "../../project/projectList/component/gjjl"; //跟进记录
import ConsultingAgencyCooperation from "@/views/detail/party-a/internalCooperation/consultingAgencyCooperation"; //内部合作 咨询机构合作
import AccessCondition from "@/views/detail/party-a/internalCooperation/accessCondition"; //内部合作 准入情况
import CooperationRecord from "@/views/detail/party-a/internalCooperation/cooperationRecord"; //内部合作 准入情况
import ConstructionPerformance from "@/views/detail/party-a/internalCooperation/constructionPerformance"; //内部合作 施工业绩
import ConstructionSituation from "@/views/detail/party-a/internalCooperation/constructionSituation"; //内部合作 在施工程情况
import {
urbanInvestmentPage,
} from '@/api/detail/party-a/urbanLnvestment';
......@@ -189,7 +196,9 @@ export default {
AccessCondition,
CooperationRecord,
CooperativeConstructionUnit,
CooperativeGroup
CooperativeGroup,
ConstructionPerformance,
ConstructionSituation
},
data() {
return {
......
<template>
<div class="construction-performance-container">
<head-form-new title="施工业绩" :query-params="queryParams" :total="tableDataTotal" :isExcel="false" @handle-search="handleSearch"
ref="searchFormNew" />
<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">
</tables>
</div>
</template>
<script>
import skeleton from '../component/skeleton';
import mixin from '@/views/detail/party-a/mixins/mixin';
import { } from "@/api/internalCooperation";
import { } from "@/api/common";
export default {
name: "constructionPerformance",
mixins: [mixin],
components: {
skeleton
},
props: ['companyId'],
data() {
return {
queryParams: {
advisoryBodyCid: this.companyId,
pageNum: 1,
pageSize: 10,
},
forData: [
{ label: '标志性工程', prop: 'bzxgc', width: '245', showOverflowTooltip: true },
{ label: '年度', prop: 'nd', width: '122' },
{ label: '所在区域', prop: 'szqy', width: '101' },
{ label: '所属省份', prop: 'sssf', width: '101' },
{ label: '施工面积(㎡)', prop: 'sgmj', width: '109' },
{ label: '年施工产值(亿)', prop: 'nsgcz', width: '121' },
{ label: '所获荣誉', prop: 'shry', width: '73' },
{ label: '备注说明', prop: 'bzsm', minWidth: '121' },
{ label: '考察项目', prop: 'kcxm', minWidth: '245', showOverflowTooltip: true },
{ label: '考察公司', prop: 'kcgs', minWidth: '192', showOverflowTooltip: true },
],
//列表
tableLoading: false,
tableData: [
{
bzxgc: "黄阁水厂二期扩建工程设计咨询服务项目",
nd: "2023年",
szqy: "华北地区",
sssf: "河北省",
sgmj: "231.25",
nsgcz: "12",
shry: "优质工程",
bzsm: "",
kcxm : "黄阁水厂二期扩建工程设计咨询服务项目",
kcgs : "中国建筑一局第二建筑有限公司"
},
{
bzxgc: "黄阁水厂二期扩建工程设计咨询服务项目",
nd: "2023年",
szqy: "华北地区",
sssf: "河北省",
sgmj: "231.25",
nsgcz: "23",
shry: "优质工程",
bzsm: "",
kcxm : "黄阁水厂二期扩建工程设计咨询服务项目",
kcgs : "中国建筑一局第二建筑有限公司"
},
],
tableDataTotal: 2,
isSkeleton: true,
};
},
//可访问data属性
created() {
this.initDetail();
},
//计算集
computed: {
},
//方法集
methods: {
async initDetail() {
try {
await this.handleQuery();
} catch (error) {
}
},
async handleQuery(params) {
try {
// let data = params ? params : this.queryParams;
// this.isSkeleton = true;
// const res = await getConsultingAgencyCooperationListApi(data);
// this.tableData = res.rows ? res.rows : [];
// this.tableDataTotal = res.total ? res.total : 0;
} catch (error) {
console.log(error);
} finally {
this.isSkeleton = false;
}
},
async handleSearch() {
try {
} catch (error) {
}
}
},
}
</script>
<style lang="scss" scoped>
.construction-performance-container {
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";
}
</style>
<template>
<div class="construction-situation-container">
<head-form-new title="在施工程情况" :query-params="queryParams" :total="tableDataTotal" :isExcel="false" @handle-search="handleSearch"
ref="searchFormNew" />
<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">
</tables>
</div>
</template>
<script>
import skeleton from '../component/skeleton';
import mixin from '@/views/detail/party-a/mixins/mixin';
import { } from "@/api/internalCooperation";
import { } from "@/api/common";
export default {
name: "constructionSituation",
mixins: [mixin],
components: {
skeleton
},
props: ['companyId'],
data() {
return {
queryParams: {
advisoryBodyCid: this.companyId,
pageNum: 1,
pageSize: 10,
},
forData: [
{ label: '工程名称', prop: 'gcmc', width: '245', showOverflowTooltip: true },
{ label: '施工承包范围', prop: 'sgcbfw', width: '101' },
{ label: '建筑平面(㎡)', prop: 'szqy', width: '109' },
{ label: '队长名称', prop: 'dzmc', width: '73' },
{ label: '管理人员数量(人)', prop: 'glrysl', width: '130' },
{ label: '施工人员数量(人)', prop: 'sgrysl', width: '130' },
{ label: '质量目标', prop: 'zlmb', width: '121' },
{ label: '考察项目', prop: 'kcxm', minWidth: '245', showOverflowTooltip: true },
{ label: '考察公司', prop: 'kcgs', minWidth: '192', showOverflowTooltip: true },
],
//列表
tableLoading: false,
tableData: [
{
gcmc: "黄阁水厂二期扩建工程设计咨询服务项目",
sgcbfw: "2023年",
szqy: "233.33",
dzmc: "张林",
glrysl: "32",
sgrysl: "21233",
zlmb: "优质工程",
kcxm: "黄阁水厂二期扩建工程设计咨询服务项目",
kcgs: "中国建筑一局第二建筑有限公司"
},
{
gcmc: "黄阁水厂二期扩建工程设计咨询服务项目",
sgcbfw: "2023年",
szqy: "233.33",
dzmc: "张林",
glrysl: "32",
sgrysl: "21233",
zlmb: "优质工程",
kcxm: "黄阁水厂二期扩建工程设计咨询服务项目",
kcgs: "中国建筑一局第二建筑有限公司"
},
],
tableDataTotal: 2,
isSkeleton: true,
};
},
//可访问data属性
created() {
this.initDetail();
},
//计算集
computed: {
},
//方法集
methods: {
async initDetail() {
try {
await this.handleQuery();
} catch (error) {
}
},
async handleQuery(params) {
try {
// let data = params ? params : this.queryParams;
// this.isSkeleton = true;
// const res = await getConsultingAgencyCooperationListApi(data);
// this.tableData = res.rows ? res.rows : [];
// this.tableDataTotal = res.total ? res.total : 0;
} catch (error) {
console.log(error);
} finally {
this.isSkeleton = false;
}
},
async handleSearch() {
try {
} catch (error) {
}
}
},
}
</script>
<style lang="scss" scoped>
.construction-situation-container {
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";
}
</style>
......@@ -38,7 +38,7 @@
<script>
import skeleton from '../component/skeleton';
import mixin from '@/views/detail/party-a/mixins/mixin';
import { getConsultingAgencyCooperationListApi, exportRecordOfCooperationExcelApi } from "@/api/internalCooperation";
import { getConsultingAgencyCooperationListApi, getConsultingAgencyCooperationTypesApi, exportRecordOfCooperationExcelApi } from "@/api/internalCooperation";
import { getAllAreaApi } from "@/api/common";
import { getTreeSelectAreaList } from "@/utils";
export default {
......@@ -73,15 +73,15 @@ export default {
],
formData: [
{
type: 7, fieldName: 'businessTypes', value: '', placeholder: '项目省市', uid: this.getUid(), options: [], props: {
type: 7, fieldName: 'projectProvince', value: '', placeholder: '项目省市', uid: this.getUid(), options: [], props: {
multiple: true,
value: "value",
label: "value",
// checkStrictly: true
}
},
{ type: 4, fieldName: 'causeAction', value: '', placeholder: '项目承接类型', options: [], uid: this.getUid() },
{ type: 4, fieldName: 'causeAction', value: '', placeholder: '工程类别明细', options: [], uid: this.getUid() },
{ type: 4, fieldName: 'projectUndertakingType', value: '', placeholder: '项目承接类型', options: [], uid: this.getUid() },
{ type: 4, fieldName: 'detailOfWorksCategory', value: '', placeholder: '工程类别明细', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'advisoryBodyName', value: '', placeholder: '请输入', uid: this.getUid() },
],
//列表
......@@ -106,6 +106,7 @@ export default {
try {
await this.handleQuery();
await this.getAllArea();
await this.getConsultingAgencyCooperationTypes();
} catch (error) {
}
......@@ -122,6 +123,23 @@ export default {
}
},
async getConsultingAgencyCooperationTypes(projectTypeId) {
try {
const params = {};
if (projectTypeId) params["projectTypeId"] = projectTypeId;
const types = await getConsultingAgencyCooperationTypesApi(params);
// if (types.code == 200 && types.data instanceof Array) {
// const _temp = types.data.map(item => {
// item.name = item.projectTypeName;
// item.value = item.projectTypeId;
// return item;
// });
// this.$set(this.formData[1], "options", _temp);
// }
} catch (error) {
}
},
async handleQuery(params) {
try {
let data = params ? params : this.queryParams;
......@@ -135,14 +153,11 @@ export default {
this.isSkeleton = false;
}
},
async handleSearch() {
async handleSearch(params) {
try {
console.log(params);
const areaSearchList = this.$refs["searchFormNew"].$refs["cascader"][0].getCheckedNodes();
if (areaSearchList?.length) {
const valueList = areaSearchList.map(item => item.value);
const result = getTreeSelectAreaList(valueList, this.areaList, "value");
console.log(result);
}
console.log(areaSearchList);
} catch (error) {
}
......
......@@ -52,7 +52,7 @@ export default {
return {
queryParams: {
customerId: this.companyId,
companyName: this.companyName,
customerName: this.companyName,
pageNum: 1,
pageSize: 10,
},
......@@ -134,7 +134,6 @@ export default {
if (area.code == 200) {
this.areaList = area.data;
this.$set(this.formData[0], "options", this.areaList);
console.log();
}
} catch (error) {
......
......@@ -2,7 +2,8 @@
<div class="feed-summary-container">
<div class="feed-summary-inner">
<div class="left-side-menu">
<project-side-menu :menuTree="menuTreeList" :menuOptions="menuOptions" :unique-opened="false" :default-active="defaultActive">
<project-side-menu :menuTree="menuTreeList" :menuOptions="menuOptions" :unique-opened="false" :default-active="defaultActive"
@select="menuSelect">
<template slot="房建类成本科目-1">
<img src="@/assets/images/projectCostLedger/icon_cost_detail_2.svg" alt="">
<div class="project-sub-menu-title-text">房建类成本科目</div>
......@@ -13,12 +14,31 @@
</template>
</project-side-menu>
</div>
<div class="right-table-list-container">
<div class="project-table-list-header">
<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>
</div>
<div class="project-table-list-haeder-right">
<!-- 实体工程材料单位换算 -->
<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>填写实际成本</el-button>
<!-- 表头设置组件 -->
<dsk-table-header-setting :settingList="formColum" @settingChange="settingChange"></dsk-table-header-setting>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import ProjectSideMenu from "@/views/projectCostLedger/detail/components/ProjectSideMenu";
import { getFeedSummaryMenuTreeApi } from "@/api/projectCostLedger";
import { getFeedSummaryMenuTreeApi, getFeedSummaryListApi } from "@/api/projectCostLedger";
import DskTableHeaderSetting from "@/components/DskTableHeaderSetting";
import TableListCom from "@/components/TableListCom";
import { v4 } from 'uuid';
export default {
name: "feedSummary",
props: {
......@@ -51,7 +71,9 @@ export default {
}
},
components: {
ProjectSideMenu
ProjectSideMenu,
DskTableHeaderSetting,
TableListCom
},
data() {
return {
......@@ -62,7 +84,15 @@ export default {
comProjectDetailInfo: {},
comProjectId: "",
defaultActive: "",
menuTreeList: []
menuTreeList: [],
// 列表表头
formColum: [
{ label: '序号', prop: "staticSerialNumber", type: "index", lock: true, fixed: false, uid: v4() },
],
// 当前查询的数据月份
recordDate: "",
// 当前选中子菜单的父类名称
currentParentName: ""
};
},
//可访问data属性
......@@ -97,8 +127,42 @@ export default {
} catch (error) {
}
},
async getFeedSummaryList(params = {}) {
try {
const list = await getFeedSummaryListApi(params);
if (list.code == 200 && list.data instanceof Array) {
}
} catch (error) {
}
},
menuSelect(currentId, currentTemp) {
const parentName = currentTemp.parent ? this.getCurrentType(currentTemp.parent) : currentId;
if (parentName) this.currentParentName = parentName;
},
getCurrentType(parent) {
if (parent.level == 2) {
return parent.nodeName;
}
if (parent.parent) {
return this.getCurrentType(parent.parent);
}
},
// 时间选择变化
timeChange(time) {
console.log(time);
},
// 表头设置变化
async settingChange(use) {
try {
this.formColum = use;
} catch (error) {
}
},
},
}
</script>
<style lang="scss" scoped>
......@@ -117,6 +181,69 @@ export default {
min-width: 220px;
height: 100%;
}
.right-table-list-container {
width: calc(100% - 220px);
height: 100%;
box-sizing: border-box;
background: #fff;
padding: 16px;
::v-deep .project-table-list-header {
margin-bottom: 16px;
display: flex;
align-items: center;
justify-content: space-between;
.project-table-list-haeder-left {
display: flex;
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-table-list-haeder-right {
display: flex;
align-items: center;
.actual-cost-btn,
.unit-conversion-btn {
height: 32px;
display: flex;
align-items: center;
justify-content: center;
padding: 0px 12px;
background-color: #0081ff;
border-color: #0081ff;
border-radius: 4px;
color: #fff;
font-size: 14px;
font-weight: 350;
margin-right: 16px;
}
}
}
}
}
}
</style>
......@@ -28,7 +28,7 @@
<div>{{scope.row.number || '--'}}</div>
</template>
<template slot="proportion" slot-scope="scope">
<div>{{scope.row.proportion || '--'}}{{scope.row.proportion ? '%':''}}</div>
<div>{{scope.row.proportion || '--'}}</div>
</template>
</tables>
</div>
......
......@@ -3,7 +3,7 @@
<template>
<!-- 有下级菜单 -->
<template v-if="checkHasChidren">
<el-submenu :index="menuItem.nodeValue" ref="projectSubMenuItem" class="project-sub-menu-item"
<el-submenu :index="createMenuIndex(menuItem.nodeValue)" ref="projectSubMenuItem" class="project-sub-menu-item"
:class="`project-sub-menu-item-level-${menuItem.level}`" :disabled="menuItem.originData && menuItem.originData.disabled">
<template slot="title">
<!-- 预留插槽 -->
......@@ -20,8 +20,8 @@
</template>
<!-- 无子集菜单 -->
<template v-else>
<el-menu-item :index="menuItem.nodeValue" class="project-only-menu-item" :class="`project-only-menu-item-level-${menuItem.level}`"
:disabled="menuItem.originData && menuItem.originData.disabled">
<el-menu-item :index="createMenuIndex(menuItem.nodeValue)" class="project-only-menu-item"
:class="`project-only-menu-item-level-${menuItem.level}`" :disabled="menuItem.originData && menuItem.originData.disabled">
<template slot="title">
<div class="project-only-menu-title-container">
<!-- 预留插槽 -->
......@@ -79,6 +79,11 @@ export default {
}
styles["padding-left"] = `${paddingLeft}px`;
return styles;
},
createMenuIndex(index) {
if (index || index == "0") {
return index.toString();
}
}
},
}
......
<template>
<div class="project-side-menu-container">
<el-menu mode="vertical" class="project-side-menu-instance" :unique-opened="uniqueOpened" :default-active="comDefaultActive" @select="menuSelect"
@open="subMenuOpen" @close="subMenuClose" ref="customElMenu">
<el-menu mode="vertical" class="project-side-menu-instance" :unique-opened="uniqueOpened" :default-active="createMenuIndex(comDefaultActive)"
@select="menuSelect" @open="subMenuOpen" @close="subMenuClose" ref="customElMenu">
<template v-for="(item,index) of tempMenuTree">
<project-menu-item :menuItem="item" :key="item.nodeValue">
<template :slot="`${item.nodeName}-${item.level}`" slot-scope="scope">
......@@ -101,6 +101,11 @@ export default {
const result = this.getCurrentData(menuPath);
this.$emit("select", menuPath, result);
},
createMenuIndex(index) {
if (index || index == "0") {
return index.toString();
}
},
getCurrentData(only) {
const _tempTree = JSON.parse(JSON.stringify(this.tempMenuTree));
if (_tempTree) {
......@@ -299,6 +304,13 @@ export default {
}
}
/* 禁用状态不触发 焦点 */
&.is-disabled {
&:focus {
color: unset !important;
}
}
.project-only-menu-title-container {
height: 32px;
line-height: unset;
......
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