明树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 = [ ...@@ -86,6 +86,18 @@ const routes = [
name: 'addStatement', name: 'addStatement',
title: '新增责任书', title: '新增责任书',
component: () => import('@/views/investingManage/addStatement.vue') 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 @@ ...@@ -127,80 +127,80 @@
} }
.el-tab-pane{ .el-tab-pane{
height: 100%; height: 100%;
.tab-content{ }
height: 100%; .tab-content{
overflow: auto; height: 100%;
padding: 0 10px; overflow: auto;
.col-title{ padding: 0 10px;
height: 24px; .col-title{
line-height: 24px; height: 24px;
font-weight: bold; line-height: 24px;
text-align: center; font-weight: bold;
} text-align: center;
.tab-handle{ }
margin: 10px 0; .tab-handle{
display: flex; margin: 10px 0;
justify-content: flex-end; display: flex;
} justify-content: flex-end;
.el-table{ }
margin-bottom: 10px; .el-table{
thead { margin-bottom: 10px;
color: #000; thead {
th{ color: #000;
background: #f5f7fa; th{
.cell{ background: #f5f7fa;
text-align: center; .cell{
}
}
}
.sums-column{
display: flex;
flex-direction: column;
justify-content: flex-start;
&>div{
height: 26px;
line-height: 26px;
text-align: center; text-align: center;
} }
} }
} }
.upload-file-wrap{ .sums-column{
display: flex; display: flex;
justify-content: space-between; flex-direction: column;
flex-wrap: wrap; justify-content: flex-start;
.file-name{ &>div{
flex: 1; height: 26px;
width: 0; line-height: 26px;
color: #409eff; text-align: center;
cursor: pointer;
-webkit-background-clip: text;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.delete-btn{
cursor: pointer;
color: #F56C6C;
} }
} }
.el-select__wrapper{ }
.el-select__selection.is-near{ .upload-file-wrap{
max-height: 120px; display: flex;
overflow: auto; 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{ .el-select__wrapper{
padding: 2px; .el-select__selection.is-near{
font-size: 12px; max-height: 120px;
cursor: pointer !important; overflow: auto;
color: var(--el-color-primary); }
font-weight: 500;
font-family: Arial, sans-serif;
display: inline-flex;
align-items: center;
} }
} }
.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{ .project-tab-content{
padding: 0 20px; padding: 0 20px;
height: 100%; height: 100%;
......
...@@ -10,7 +10,118 @@ ...@@ -10,7 +10,118 @@
</template> </template>
</div> </div>
</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>
</div> </div>
</template> </template>
...@@ -23,6 +134,14 @@ ...@@ -23,6 +134,14 @@
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
let token = ref("");
token.value = userStore.authToken || sessionStorage.getItem("authToken") || "";
const activeCollapse = reactive([
"投资额控制", "费用分项控制、阶段对比表"
]);
let formData = reactive({});
let loading = ref(false);
</script> </script>
......
...@@ -29,7 +29,11 @@ ...@@ -29,7 +29,11 @@
placeholder="请选择" placeholder="请选择"
render-after-expand render-after-expand
@node-click="changeZrslx" @node-click="changeZrslx"
/> >
<template #label>
<span>{{ selectedFullPath }}</span>
</template>
</el-tree-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
...@@ -107,6 +111,7 @@ ...@@ -107,6 +111,7 @@
<el-input-number v-model="formData.xmssqx" :min="0" :max="99999999999.99999999" <el-input-number v-model="formData.xmssqx" :min="0" :max="99999999999.99999999"
controls-position="right" controls-position="right"
></el-input-number> ></el-input-number>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
...@@ -127,7 +132,6 @@ ...@@ -127,7 +132,6 @@
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="责任书具体指标" name="责任书具体指标"> <el-collapse-item title="责任书具体指标" name="责任书具体指标">
<el-table :data="zrsjtzbData" style="width: 100%" empty-text="暂无数据" border <el-table :data="zrsjtzbData" style="width: 100%" empty-text="暂无数据" border
default-expand-all row-key="xh"
show-summary :summary-method="getSummaries" show-summary :summary-method="getSummaries"
> >
<el-table-column type="index" label="序号" width="60" /> <el-table-column type="index" label="序号" width="60" />
...@@ -329,11 +333,11 @@ ...@@ -329,11 +333,11 @@
</template> </template>
<script setup> <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 { useRouter, useRoute } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus"; import { ElMessage, ElMessageBox } from "element-plus";
import { useUserStore } from "@/stores/user.js"; import { useUserStore } from "@/stores/user.js";
import moment from "moment"; import moment from "moment";
const userStore = useUserStore(); const userStore = useUserStore();
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
...@@ -352,6 +356,31 @@ import moment from "moment"; ...@@ -352,6 +356,31 @@ import moment from "moment";
let zrslxProps = { let zrslxProps = {
label: "name" 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([]); let projectList = ref([]);
const getProjectData = () => { const getProjectData = () => {
...@@ -419,6 +448,18 @@ import moment from "moment"; ...@@ -419,6 +448,18 @@ import moment from "moment";
lsqkList = resourceData.lszxqk; lsqkList = resourceData.lszxqk;
statementId && getStatementInfo(); 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) => { const changeProject = (val) => {
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
<template #operations="{ row, index }"> <template #operations="{ row, index }">
<el-button link type="primary" size="small" @click="previewControl(row)">查看</el-button> <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="primary" size="small" @click="editControl(row)">编辑</el-button>
<el-button link type="danger" size="small" @click="deleteControl(row)">删除</el-button>
</template> </template>
</common-table> </common-table>
</div> </div>
...@@ -69,7 +70,7 @@ ...@@ -69,7 +70,7 @@
const getControlData = () => { const getControlData = () => {
loading.value = true; loading.value = true;
proxy.$post({ proxy.$post({
url: "/api/project/getTzmbzrsList", url: "/api/project/getTzkzList",
data: { data: {
page: currentPage.value, page: currentPage.value,
pagesize: pageSize.value pagesize: pageSize.value
......
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
}, },
{ {
prop: "xmssqx", prop: "xmssqx",
label: "项目实施期限", label: "项目实施期限(年)",
showOverflowTooltip: true, showOverflowTooltip: true,
width: 120 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