明树Git Lab

Commit 09e7c682 authored by zhanghan's avatar zhanghan

责任书书写完成

parent c76a6f19
Pipeline #108765 passed with stage
in 19 seconds
...@@ -286,6 +286,9 @@ ...@@ -286,6 +286,9 @@
font-size: 12px; font-size: 12px;
color: #969696; color: #969696;
} }
.el-form-item {
margin-bottom: 4px;
}
.el-form-item__label { .el-form-item__label {
min-width: 100px; min-width: 100px;
font-weight: 400; font-weight: 400;
......
...@@ -309,6 +309,9 @@ ...@@ -309,6 +309,9 @@
} }
// ==========================设置定制化样式 start ========================== // ==========================设置定制化样式 start ==========================
.el-form-item {
margin-bottom: 4px;
}
.el-form-item__label { .el-form-item__label {
min-width: 100px; min-width: 100px;
font-weight: 400; font-weight: 400;
......
This diff is collapsed.
...@@ -7,20 +7,14 @@ ...@@ -7,20 +7,14 @@
<div class="tab-content"> <div class="tab-content">
<el-form :model="formData" label-width="150" :disabled="isPreview"> <el-form :model="formData" label-width="150" :disabled="isPreview">
<el-collapse v-model="activeCollapse"> <el-collapse v-model="activeCollapse">
<!-- 选择类型 --> <!-- 移除原有的选择类型折叠面板 -->
<el-collapse-item title="选择类型" name="选择类型"> <el-collapse-item title="登记类型" name="登记类型">
<el-row :gutter="20"> <el-form-item label="登记类型">
<el-col :span="12"> <el-tag v-if="formData.djlx == 1">中止</el-tag>
<el-form-item label="请选择登记类型" required> <el-tag v-if="formData.djlx == 2">重启</el-tag>
<el-radio-group v-model="formData.djlx"> <el-tag v-if="formData.djlx == 3">终止</el-tag>
<el-radio value="1">中止</el-radio> <el-tag v-if="formData.djlx == 4">退出</el-tag>
<el-radio value="2">重启</el-radio>
<el-radio value="3">终止</el-radio>
<el-radio value="4">退出</el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
</el-col>
</el-row>
</el-collapse-item> </el-collapse-item>
<!-- 基本信息 --> <!-- 基本信息 -->
...@@ -742,11 +736,47 @@ ...@@ -742,11 +736,47 @@
</div> </div>
</div> </div>
</div> </div>
<!-- 新增:选择类型弹窗 -->
<el-dialog
v-model="showTypeDialog"
title="选择登记类型"
width="500px"
:close-on-click-modal="false"
:close-on-press-escape="false"
:show-close="false"
>
<el-form :model="formData" label-width="140">
<el-form-item
style="margin-bottom: 24px"
label="请选择登记类型"
required
>
<el-radio-group v-model="formData.djlx">
<el-radio value="1">中止</el-radio>
<el-radio value="2">重启</el-radio>
<el-radio value="3">终止</el-radio>
<el-radio value="4">退出</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="showTypeDialog = false">取 消</el-button>
<el-button type="primary" @click="confirmType">确 定</el-button>
</template>
</el-dialog>
</div> </div>
</template> </template>
<script setup> <script setup>
import { reactive, ref, onMounted, getCurrentInstance, watch } from "vue"; import {
reactive,
ref,
onMounted,
getCurrentInstance,
watch,
nextTick,
} from "vue";
import { useRouter, useRoute } from "vue-router"; import { useRouter, useRoute } from "vue-router";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import DynamicTable from "@/components/FormDynamicTable/index.vue"; import DynamicTable from "@/components/FormDynamicTable/index.vue";
...@@ -824,7 +854,6 @@ const { proxy } = getCurrentInstance(); ...@@ -824,7 +854,6 @@ const { proxy } = getCurrentInstance();
// ========== 基础配置 ========== // ========== 基础配置 ==========
const activeCollapse = ref([ const activeCollapse = ref([
"选择类型",
"基本信息", "基本信息",
"项目中止内容", "项目中止内容",
"项目重启内容", "项目重启内容",
...@@ -832,12 +861,15 @@ const activeCollapse = ref([ ...@@ -832,12 +861,15 @@ const activeCollapse = ref([
"项目退出内容", "项目退出内容",
"项目投资效益", "项目投资效益",
"资金构成", "资金构成",
"登记类型",
"财务评价指标", "财务评价指标",
]); ]);
const loading = ref(false); const loading = ref(false);
const isPreview = ref(!!route.query.isPreview); const isPreview = ref(!!route.query.isPreview);
const projectList = ref([]); const projectList = ref([]);
const rcCgqyglId = ref(route.query.id || ""); const rcCgqyglId = ref(route.query.id || "");
// 新增:控制类型选择弹窗显示
const showTypeDialog = ref(false);
// ========== 表单数据(完全适配原有后端字段) ========== // ========== 表单数据(完全适配原有后端字段) ==========
const formData = reactive({ const formData = reactive({
...@@ -855,31 +887,6 @@ const formData = reactive({ ...@@ -855,31 +887,6 @@ const formData = reactive({
njfglmc2: "", njfglmc2: "",
}, },
], ],
projectId: "",
projectName: "",
djlx: "",
projectCode: "",
sfybb: "",
sbdw: "",
ssejqy: "",
tzsxyjfl: "",
tzsxejfl: "",
tzbk: "",
jnw: "",
cwbblx: "",
xmgsqc: "",
xmjsqy: 0,
yynxn: 0,
xmkgsjyj: "",
xmjgsjyj: "",
tcsqrq: "",
tcrq: "",
yjwcsj: "",
tblxr: "",
tblxrdh: "",
dqjzc: 0.0,
jsnrjgm: "",
cgRatio: "",
// 资金构成(使用原有zjgc字段,默认初始化表格结构) // 资金构成(使用原有zjgc字段,默认初始化表格结构)
zjgc: [ zjgc: [
...@@ -924,44 +931,23 @@ const formData = reactive({ ...@@ -924,44 +931,23 @@ const formData = reactive({
{ index: "", label: "批复总投资", unit: "万元", value: "", editable: true }, { index: "", label: "批复总投资", unit: "万元", value: "", editable: true },
], ],
// 财务评价指标(使用原有字段)
jcxmtznbsylsq: "",
xmzbjnbsyl: "",
xmtzhsq: "",
sjycxmqtznbsylsq: "",
ycxmzbjnbsylsh: "",
// 项目中止
zzyy: "",
zzxxyy: "",
qtsm: "",
xmzzbg: [], xmzzbg: [],
qtxgzccl: [], qtxgzccl: [],
bpbbwjlj: [], bpbbwjlj: [],
// 项目重启
jhcqsj: "",
cqyy: "", cqyy: "",
xmcqbg: [], xmcqbg: [],
jcwj: [], jcwj: [],
// 项目终止
zhongzyy: "",
zhongzyyxxfx: "",
xmssxz: "",
knfsdfljfhjjss: "",
xmzhongzbg: [],
// 项目退出
zmjz: 0.0,
tcphsr: 0.0,
ysdtcphzj: 0.0,
czdwt: "",
xxbgzcs: "",
tcyy: "",
tcyyxxfx: "",
}); });
// ========== 新增:弹窗确认选择类型 ==========
const confirmType = () => {
if (!formData.djlx) {
return ElMessage.warning("请选择登记类型");
}
showTypeDialog.value = false;
};
// ========== 新增:资金构成变更处理方法 ========== // ========== 新增:资金构成变更处理方法 ==========
const handleZjgcChange = (row) => { const handleZjgcChange = (row) => {
// 1. 批复总投资变更 → 同步到投资总额(万元)-审批时 // 1. 批复总投资变更 → 同步到投资总额(万元)-审批时
...@@ -1021,37 +1007,37 @@ const changeProject = (val) => { ...@@ -1021,37 +1007,37 @@ const changeProject = (val) => {
loading.value = false; loading.value = false;
if (!data) return; if (!data) return;
// 回填基础信息 // // 回填基础信息
formData.projectName = data.projectName || ""; // formData.projectName = data.projectName || "";
formData.sbdw = data.sbdw || ""; // formData.sbdw = data.sbdw || "";
formData.xmgsqc = data.xmgsqc || ""; // formData.xmgsqc = data.xmgsqc || "";
formData.xmkgsjyj = data.xmkgsjyj || ""; // formData.xmkgsjyj = data.xmkgsjyj || "";
formData.xmjgsjyj = data.xmjgsjyj || ""; // formData.xmjgsjyj = data.xmjgsjyj || "";
formData.yynxn = data.yynxn || 0; // formData.yynxn = data.yynxn || 0;
formData.xmjsqy = data.xmjsqy || 0; // formData.xmjsqy = data.xmjsqy || 0;
// 回填项目投资效益表格数据 // // 回填项目投资效益表格数据
formData.projectGdxxs[0].njfcgblqk_nt = // formData.projectGdxxs[0].njfcgblqk_nt =
data.projectXmtzzes?.at(1)?.children?.at(0)?.rmbjj || ""; // data.projectXmtzzes?.at(1)?.children?.at(0)?.rmbjj || "";
formData.projectGdxxs[0].njfcgbl = // formData.projectGdxxs[0].njfcgbl =
data.projectXmtzzes?.at(2)?.rmbjj || ""; // data.projectXmtzzes?.at(2)?.rmbjj || "";
formData.projectGdxxs[0].jjcgbl = data.projectCwpjzbs?.at(0)?.num || ""; // formData.projectGdxxs[0].jjcgbl = data.projectCwpjzbs?.at(0)?.num || "";
formData.projectGdxxs[0].jjcgbl2 = data.projectCwpjzbs?.at(1)?.num || ""; // formData.projectGdxxs[0].jjcgbl2 = data.projectCwpjzbs?.at(1)?.num || "";
// 回填资金构成(兼容后端返回的zjgc数据) // // 回填资金构成(兼容后端返回的zjgc数据)
if (data.zjgc && Array.isArray(data.zjgc)) { // if (data.zjgc && Array.isArray(data.zjgc)) {
formData.zjgc = data.zjgc.map((item) => ({ // formData.zjgc = data.zjgc.map((item) => ({
...item, // ...item,
editable: item.editable !== false, // editable: item.editable !== false,
})); // }));
} // }
// 回填财务评价指标 // // 回填财务评价指标
formData.jcxmtznbsylsq = data.jcxmtznbsylsq || ""; // formData.jcxmtznbsylsq = data.jcxmtznbsylsq || "";
formData.xmzbjnbsyl = data.xmzbjnbsyl || ""; // formData.xmzbjnbsyl = data.xmzbjnbsyl || "";
formData.xmtzhsq = data.xmtzhsq || ""; // formData.xmtzhsq = data.xmtzhsq || "";
formData.sjycxmqtznbsylsq = data.sjycxmqtznbsylsq || ""; // formData.sjycxmqtznbsylsq = data.sjycxmqtznbsylsq || "";
formData.ycxmzbjnbsylsh = data.ycxmzbjnbsylsh || ""; // formData.ycxmzbjnbsylsh = data.ycxmzbjnbsylsh || "";
}, },
error: () => { error: () => {
loading.value = false; loading.value = false;
...@@ -1144,6 +1130,13 @@ const getJsqtzjcDetail = () => { ...@@ -1144,6 +1130,13 @@ const getJsqtzjcDetail = () => {
}, },
]; ];
} }
// 编辑状态下如果已有类型值,不弹出弹窗;否则弹出
if (!isPreview.value) {
nextTick(() => {
showTypeDialog.value = true;
});
}
}, },
error: () => { error: () => {
loading.value = false; loading.value = false;
...@@ -1154,6 +1147,13 @@ const getJsqtzjcDetail = () => { ...@@ -1154,6 +1147,13 @@ const getJsqtzjcDetail = () => {
// ========== 保存表单 ========== // ========== 保存表单 ==========
const saveClick = () => { const saveClick = () => {
// 新增:保存前校验类型是否选择
if (!formData.djlx) {
ElMessage.warning("请先选择登记类型");
showTypeDialog.value = true;
return;
}
if (!formData.projectId) return ElMessage.warning("请选择项目信息"); if (!formData.projectId) return ElMessage.warning("请选择项目信息");
loading.value = true; loading.value = true;
const url = rcCgqyglId.value const url = rcCgqyglId.value
...@@ -1186,9 +1186,23 @@ const backClick = () => router.back(-1); ...@@ -1186,9 +1186,23 @@ const backClick = () => router.back(-1);
onMounted(() => { onMounted(() => {
getProjectData(); getProjectData();
// 非预览状态下自动弹出类型选择弹窗
if (!isPreview.value) {
if (rcCgqyglId.value) { if (rcCgqyglId.value) {
// 编辑/预览:拉取接口数据 // 编辑状态:先获取详情,再判断是否弹出
getJsqtzjcDetail(); getJsqtzjcDetail();
} else {
// 新增状态:直接弹出
nextTick(() => {
showTypeDialog.value = true;
});
}
} else {
// 预览状态:获取详情但不弹出弹窗
if (rcCgqyglId.value) {
getJsqtzjcDetail();
}
} }
}); });
</script> </script>
......
...@@ -86,14 +86,14 @@ let tableColumns = ref([ ...@@ -86,14 +86,14 @@ let tableColumns = ref([
showOverflowTooltip: true, showOverflowTooltip: true,
}, },
{ {
prop: "xmkgrq", prop: "xmtcsj",
label: "项目开工日期", label: "项目投产时间",
showOverflowTooltip: true, showOverflowTooltip: true,
width: 170, width: 170,
}, },
{ {
prop: "xmssqx", prop: "jhjgsj",
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