明树Git Lab

Commit b5228558 authored by yangyajing's avatar yangyajing

责任书类型显示已选项全路径名称

parent 4dac1ac3
Pipeline #106058 passed with stage
in 16 seconds
......@@ -86,6 +86,18 @@ const routes = [
name: 'addStatement',
title: '新增责任书',
component: () => import('@/views/investingManage/addStatement.vue')
},
{
path: "/targetControl",
name: "targetControl",
title: "投资控制",
component: () => import('@/views/investingManage/targetControl.vue')
},
{
path: '/addControl',
name: 'addControl',
title: '新增投资控制',
component: () => import('@/views/investingManage/addControl.vue')
}
]
},
......
......@@ -127,80 +127,80 @@
}
.el-tab-pane{
height: 100%;
.tab-content{
height: 100%;
overflow: auto;
padding: 0 10px;
.col-title{
height: 24px;
line-height: 24px;
font-weight: bold;
text-align: center;
}
.tab-handle{
margin: 10px 0;
display: flex;
justify-content: flex-end;
}
.el-table{
margin-bottom: 10px;
thead {
color: #000;
th{
background: #f5f7fa;
.cell{
text-align: center;
}
}
}
.sums-column{
display: flex;
flex-direction: column;
justify-content: flex-start;
&>div{
height: 26px;
line-height: 26px;
}
.tab-content{
height: 100%;
overflow: auto;
padding: 0 10px;
.col-title{
height: 24px;
line-height: 24px;
font-weight: bold;
text-align: center;
}
.tab-handle{
margin: 10px 0;
display: flex;
justify-content: flex-end;
}
.el-table{
margin-bottom: 10px;
thead {
color: #000;
th{
background: #f5f7fa;
.cell{
text-align: center;
}
}
}
.upload-file-wrap{
.sums-column{
display: flex;
justify-content: space-between;
flex-wrap: wrap;
.file-name{
flex: 1;
width: 0;
color: #409eff;
cursor: pointer;
-webkit-background-clip: text;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.delete-btn{
cursor: pointer;
color: #F56C6C;
flex-direction: column;
justify-content: flex-start;
&>div{
height: 26px;
line-height: 26px;
text-align: center;
}
}
.el-select__wrapper{
.el-select__selection.is-near{
max-height: 120px;
overflow: auto;
}
}
.upload-file-wrap{
display: flex;
justify-content: space-between;
flex-wrap: wrap;
.file-name{
flex: 1;
width: 0;
color: #409eff;
cursor: pointer;
-webkit-background-clip: text;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.delete-btn{
cursor: pointer;
color: #F56C6C;
}
}
.always-click{
padding: 2px;
font-size: 12px;
cursor: pointer !important;
color: var(--el-color-primary);
font-weight: 500;
font-family: Arial, sans-serif;
display: inline-flex;
align-items: center;
.el-select__wrapper{
.el-select__selection.is-near{
max-height: 120px;
overflow: auto;
}
}
}
.always-click{
padding: 2px;
font-size: 12px;
cursor: pointer !important;
color: var(--el-color-primary);
font-weight: 500;
font-family: Arial, sans-serif;
display: inline-flex;
align-items: center;
}
.project-tab-content{
padding: 0 20px;
height: 100%;
......
......@@ -10,7 +10,118 @@
</template>
</div>
</div>
<div class="tabs-content"></div>
<div class="tabs-content">
<div class="project-tab-content">
<div class="tab-content">
<el-form :model="formData" :label-width="130" :disabled="isPreview">
<el-collapse v-model="activeCollapse">
<el-collapse-item title="投资额控制" name="投资额控制">
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="项目信息" required>
<el-select v-model="formData.projectId" placeholder="请选择" no-data-text="暂无数据"
@change="changeProject"
>
<el-option v-for="item in projectList" :key="item.id"
:label="item.projectName" :value="item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="费用分项控制、阶段对比表" :label-width="200"></el-form-item>
<el-table :data="tzekzData" style="width: 100%" empty-text="暂无数据" border>
<el-table-column type="index" label="序号" width="60" />
<el-table-column prop="xm" label="项目">
<template #default="scope">
<el-input v-model="scope.row.xm" />
</template>
</el-table-column>
<el-table-column prop="zbgs" label="招标估算" width="180">
<template #default="scope">
<el-input-number v-model="scope.row.zbgs" :min="0" :max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column prop="jcgs" label="决策估算" width="180">
<template #default="scope">
<el-input-number v-model="scope.row.jcgs" :min="0" :max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column prop="pfgusuan" label="批复估算" width="180">
<template #default="scope">
<el-input-number v-model="scope.row.pfgusuan" :min="0" :max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column prop="pfgs" label="批复概算" width="180">
<template #default="scope">
<el-input-number v-model="scope.row.pfgs" :min="0" :max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column prop="tkjgs" label="同口径概算" width="180">
<template #default="scope">
<el-input-number v-model="scope.row.tkjgs" :min="0" :max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column prop="pfys" label="批复预算" width="180">
<template #default="scope">
<el-input-number v-model="scope.row.pfys" :min="0" :max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column prop="zbqy" label="招标签约" width="180">
<template #default="scope">
<el-input-number v-model="scope.row.zbqy" :min="0" :max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column prop="sqyc" label="上期预测" width="180">
<template #default="scope">
<el-input-number v-model="scope.row.sqyc" :min="0" :max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column prop="bqyc" label="本期预测" width="180">
<template #default="scope">
<el-input-number v-model="scope.row.bqyc" :min="0" :max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column prop="bqjsq" label="本期-上期" width="180">
<template #default="scope">
<el-input-number v-model="scope.row.bqjsq" :min="0" :max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column prop="cysm" label="本期较上期差异原因说明">
<template #default="scope">
<el-input v-model="scope.row.cysm" type="textarea" />
</template>
</el-table-column>
</el-table>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="费用分项控制、阶段对比表" name="费用分项控制、阶段对比表"></el-collapse-item>
</el-collapse>
</el-form>
</div>
</div>
</div>
</div>
</div>
</template>
......@@ -23,6 +134,14 @@
const router = useRouter();
const route = useRoute();
const { proxy } = getCurrentInstance();
let token = ref("");
token.value = userStore.authToken || sessionStorage.getItem("authToken") || "";
const activeCollapse = reactive([
"投资额控制", "费用分项控制、阶段对比表"
]);
let formData = reactive({});
let loading = ref(false);
</script>
......
......@@ -29,7 +29,11 @@
placeholder="请选择"
render-after-expand
@node-click="changeZrslx"
/>
>
<template #label>
<span>{{ selectedFullPath }}</span>
</template>
</el-tree-select>
</el-form-item>
</el-col>
<el-col :span="12">
......@@ -107,6 +111,7 @@
<el-input-number v-model="formData.xmssqx" :min="0" :max="99999999999.99999999"
controls-position="right"
></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12">
......@@ -127,7 +132,6 @@
</el-collapse-item>
<el-collapse-item title="责任书具体指标" name="责任书具体指标">
<el-table :data="zrsjtzbData" style="width: 100%" empty-text="暂无数据" border
default-expand-all row-key="xh"
show-summary :summary-method="getSummaries"
>
<el-table-column type="index" label="序号" width="60" />
......@@ -329,11 +333,11 @@
</template>
<script setup>
import { reactive, ref, onMounted, getCurrentInstance, h } from "vue";
import { reactive, ref, onMounted, getCurrentInstance, h, watch } from "vue";
import { useRouter, useRoute } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import { useUserStore } from "@/stores/user.js";
import moment from "moment";
import moment from "moment";
const userStore = useUserStore();
const router = useRouter();
const route = useRoute();
......@@ -352,6 +356,31 @@ import moment from "moment";
let zrslxProps = {
label: "name"
}
let selectedFullPath = ref(""); //已选项的全路径名称
watch(() => formData.zrslx, (newVal) => {
if (newVal) {
selectedFullPath.value = getFullPathById(newVal);
} else {
selectedFullPath.value = "";
}
})
// 构建节点映射表
const nodeMap = new Map()
let buildNodeMap;
const getFullPathById = (id) => {
const node = nodeMap.get(id)
if (!node) return ''
const path = []
let current = node
while (current) {
path.unshift(current.name)
current = current.parent
}
return path.join(' / ')
}
// 项目列表
let projectList = ref([]);
const getProjectData = () => {
......@@ -419,6 +448,18 @@ import moment from "moment";
lsqkList = resourceData.lszxqk;
statementId && getStatementInfo();
buildNodeMap = (nodes, parent = null) => {
nodes.forEach(node => {
node.parent = parent
nodeMap.set(node.key, node)
if (node.children && node.children.length > 0) {
buildNodeMap(node.children, node)
}
})
}
// 初始化构建映射
buildNodeMap(zrslxList);
});
// 选择关联项目,同步相关字段信息
const changeProject = (val) => {
......
......@@ -26,6 +26,7 @@
<template #operations="{ row, index }">
<el-button link type="primary" size="small" @click="previewControl(row)">查看</el-button>
<el-button link type="primary" size="small" @click="editControl(row)">编辑</el-button>
<el-button link type="danger" size="small" @click="deleteControl(row)">删除</el-button>
</template>
</common-table>
</div>
......@@ -69,7 +70,7 @@
const getControlData = () => {
loading.value = true;
proxy.$post({
url: "/api/project/getTzmbzrsList",
url: "/api/project/getTzkzList",
data: {
page: currentPage.value,
pagesize: pageSize.value
......
......@@ -68,7 +68,7 @@
},
{
prop: "xmssqx",
label: "项目实施期限",
label: "项目实施期限(年)",
showOverflowTooltip: true,
width: 120
},
......
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