明树Git Lab

Commit f034cb1c authored by zhanghan's avatar zhanghan

本地检查评价创建路由

parent de3122d4
......@@ -142,6 +142,39 @@ const routes = [
},
],
},
{
path: "/castbehind",
name: "castbehind",
title: "投后管理",
redirect: "/runningPeriod",
children: [
{
path: "/runningPeriod",
name: "runningPeriod",
title: "运营期投资检查",
component: () => import("@/views/castbehind/runningPeriod.vue"),
},
{
path: "/runningPeriodAdd",
name: "runningPeriodAdd",
title: "运营期投资检查",
component: () => import("@/views/castbehind/runningPeriodAdd.vue"),
},
{
path: "/evaluate",
name: "evaluate",
title: "投资后评价",
component: () => import("@/views/castbehind/evaluate.vue"),
},
{
path: "/evaluateAdd",
name: "evaluateAdd",
title: "投资后评价",
component: () => import("@/views/castbehind/evaluateAdd.vue"),
},
],
},
{
path: "/templateManage",
name: "templateManage",
......
<template>
<div class="manage-container">
<div class="manage-wrap">
<div class="manage-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="primary" @click="constructionAdd">新增</el-button>
</div>
</div>
<div class="manage-content" v-loading="loading">
<common-table
:autoHeight="true"
:maxRows="10"
:data="tableData"
:columns="tableColumns"
:total="total"
:current-page="currentPage"
:page-size="pageSize"
:index="true"
:indexLabel="'序号'"
title=""
:border="true"
@size-change="handleSizeChange"
@current-page-change="handleCurrentPageChange"
>
<template #operations="{ row, index }">
<el-button
link
type="primary"
size="small"
@click="previewStatement(row)"
>查看</el-button
>
<el-button
link
type="primary"
size="small"
@click="editStatement(row)"
>编辑</el-button
>
<el-button
link
type="danger"
size="small"
@click="deleteStatement(row)"
>删除</el-button
>
</template>
</common-table>
</div>
</div>
</div>
</template>
<script setup>
import { ref, onMounted, getCurrentInstance } from "vue";
import { useRouter } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import CommonTable from "@/components/common/commonTable.vue";
const router = useRouter();
const { proxy } = getCurrentInstance();
let tableData = ref([]);
let tableColumns = ref([
{
prop: "projectName",
label: "项目信息",
showOverflowTooltip: true,
},
{
prop: "operations",
label: "操作",
width: 170,
slot: "operations",
fixed: "right",
align: "center",
},
]);
let loading = ref(false);
let total = ref(0);
let currentPage = ref(1);
let pageSize = ref(10);
// 获取列表数据
const getStatementData = () => {
loading.value = true;
proxy.$post({
url: "/api/project/getJsqtzjcList",
data: {
page: currentPage.value,
pagesize: pageSize.value,
},
callback: (data) => {
console.log(data, "data");
tableData.value = data.rows;
total.value = data.count;
loading.value = false;
},
});
};
// 分页
const handleSizeChange = (size) => {
pageSize.value = size;
currentPage.value = 1;
getStatementData();
};
const handleCurrentPageChange = (page) => {
currentPage.value = page;
getStatementData();
};
const constructionAdd = () => {
router.push("/constructionAdd");
};
const editStatement = (item) => {
router.push({
name: "constructionAdd",
query: {
id: item.id,
},
});
};
const previewStatement = (item) => {
router.push({
name: "constructionAdd",
query: {
isPreview: true,
id: item.id,
},
});
};
const deleteStatement = (item) => {
ElMessageBox.confirm("确认删除该项?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
proxy.$post({
url: "/api/project/deleteJsqtzjc",
data: {
id: item.id,
},
callback: (data) => {
ElMessage.success("删除成功");
getStatementData();
},
});
})
.catch(() => {});
};
onMounted(() => {
getStatementData();
});
</script>
<style scoped lang="less">
@import "@/styles/manage.less";
</style>
<template>
<div class="add-project-container">
<div class="add-project-content" v-loading="loading">
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content">
<div class="project-tab-content">
<div class="tab-content">
<el-form :model="formData" :label-width="200" :disabled="isPreview">
<el-collapse v-model="activeCollapse">
<!-- 基本信息 -->
<el-collapse-item title="基本信息" name="基本信息">
<el-row :gutter="20">
<el-col :span="12">
<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.key"
:label="item.projectName"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="决策总投资 一次填报锁定">
<el-input
v-model="formData.jcztz"
placeholder="请输入决策总投资 一次填报锁定"
/>
</el-form-item>
</el-col> -->
</el-row>
<!-- <el-row :gutter="20">
<el-col :span="12">
<el-form-item label="资本金内部收益率(%) 一次填报锁定">
<el-input
v-model="formData.zbjnbsyl"
placeholder="请输入资本金内部收益率(%) 一次填报锁定"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="预测总投资">
<el-input
v-model="formData.ycztz"
placeholder="请输入预测总投资"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="确认总投资">
<el-input
v-model="formData.qrztz"
placeholder="请输入确认总投资"
/>
</el-form-item>
</el-col>
</el-row> -->
</el-collapse-item>
<!-- 投资(成本)分析会资料 -->
<el-collapse-item
title="投资(成本)分析会资料"
name="投资(成本)分析会资料"
>
<div class="tab-handle">
<el-button type="primary" @click="addjsqtzjcTzfxs"
>新增</el-button
>
</div>
<el-table
:data="jsqtzjcTzfxsList"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column type="index" width="60" label="序号" />
<el-table-column prop="jd" label="时间 ">
<template #default="scope">
<!-- <el-date-picker
v-model="scope.row.jd"
type="datetime"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择"
/> -->
<el-input
v-model="scope.row.jd"
placeholder="请按照 xx年xx季度 格式填写"
/>
</template>
</el-table-column>
<el-table-column prop="ycztz" label="当期预测总投资">
<template #default="scope">
<el-input
type="number"
v-model.number="scope.row.ycztz"
placeholder="请输入当期预测总投资"
/>
</template>
</el-table-column>
<el-table-column
prop="zbjnbsyl"
label="资本金内部收益率(%)"
>
<template #default="scope">
<el-input
v-model.number="scope.row.zbjnbsyl"
placeholder="请输入资本金内部收益率(%)"
/>
</template>
</el-table-column>
<el-table-column
prop="tzcbfxhzl"
label="投资(成本)分析会资料"
>
<template #default="scope">
<FileUploader
v-model="scope.row.tzcbfxhzl"
:isInline="true"
></FileUploader>
</template>
</el-table-column>
<el-table-column label="操作" width="60">
<template #default="scope">
<el-button
link
type="danger"
size="small"
@click="deletejsqtzjcTzfxs(scope.$index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
<!-- 专项检查 -->
<el-collapse-item title="专项检查" name="专项检查">
<div class="tab-handle">
<el-button type="primary" @click="addJsqtzjcZxjcs"
>新增</el-button
>
</div>
<el-table
:data="jsqtzjcZxjcsList"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column type="index" width="60" label="序号" />
<el-table-column prop="zxjcfl" label="专项检查类型">
<template #default="scope">
<el-select
v-model="scope.row.zxjcfl"
placeholder="请选择专项检查类型"
>
<el-option
v-for="item in options?.construction_classify"
:key="item.key"
:label="item.name"
:value="item.key"
></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column prop="jcjg" label="检查结果">
<template #default="scope">
<el-input
v-model.number="scope.row.jcjg"
placeholder="请输入检查结果"
/>
</template>
</el-table-column>
<el-table-column prop="zgcsqd" label="整改措施清单">
<template #default="scope">
<el-input
v-model.number="scope.row.zgcsqd"
placeholder="请输入整改措施清单"
/>
</template>
</el-table-column>
<el-table-column prop="fjcl" label="附件材料">
<template #default="scope">
<FileUploader
v-model="scope.row.fjcl"
:isInline="true"
></FileUploader>
</template>
</el-table-column>
<el-table-column label="操作" width="60">
<template #default="scope">
<el-button
link
type="danger"
size="small"
@click="deleteJsqtzjcZxjcs(scope.$index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
</el-collapse>
</el-form>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup>
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
import { useRouter, useRoute } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import FileUploader from "../../components/FileUploader/index.vue";
// 初始化全局变量
const router = useRouter();
const route = useRoute();
const { proxy } = getCurrentInstance();
// 折叠面板默认展开项
const activeCollapse = ref(["基本信息", "投资(成本)分析会资料", "专项检查"]);
// 表单数据
const formData = reactive({
projectName: "",
projectId: "",
del: 0, // 删除标记,0为正常
createdAt: "",
updatedAt: "",
});
// 加载状态
const loading = ref(false);
// 是否预览模式
const isPreview = ref(!!route.query.isPreview);
// 项目列表数据
const projectList = ref([]);
// 当前编辑的记录ID
const rcCgqyglId = ref(route.query.id || "");
// 投资(成本)分析会资料列表
const jsqtzjcTzfxsList = ref([]);
// 专项检查列表
const jsqtzjcZxjcsList = ref([]);
// ========== 投资(成本)分析会资料 操作方法 ==========
const addjsqtzjcTzfxs = () => {
jsqtzjcTzfxsList.value.push({
jd: "",
ycztz: "",
zbjnbsyl: "",
jsqtzjcTzfxs: [],
});
};
const deletejsqtzjcTzfxs = (index) => {
ElMessageBox.confirm("确认删除该项?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
jsqtzjcTzfxsList.value.splice(index, 1);
ElMessage.success("删除成功");
});
};
// ========== 专项检查 操作方法 ==========
const addJsqtzjcZxjcs = () => {
jsqtzjcZxjcsList.value.push({
zxjcfl: "",
jcjg: "",
zgcsqd: "",
fjcl: [],
});
};
const deleteJsqtzjcZxjcs = (index) => {
ElMessageBox.confirm("确认删除该项?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
jsqtzjcZxjcsList.value.splice(index, 1);
ElMessage.success("删除成功");
});
};
// ========== 通用方法 ==========
// 获取项目列表
const getProjectData = () => {
proxy.$post({
url: "/api/project/listProject",
data: {
page: 1,
pagesize: 1000,
attributes: [],
menuType: "xmjc",
},
callback: (data) => {
projectList.value = data.rows || [];
},
});
};
// 选择项目后同步项目名称
const changeProject = (val) => {
const selectItem = projectList.value.find((item) => item.id === val);
if (selectItem) {
formData.projectName = selectItem.projectName;
}
};
// 获取单条记录详情(编辑/预览)
const getJsqtzjcDetail = () => {
if (!rcCgqyglId.value) return;
loading.value = true;
proxy.$post({
url: "/api/project/getJsqtzjcInfo",
data: { id: rcCgqyglId.value },
callback: (data) => {
loading.value = false;
// 赋值基础表单数据
Object.assign(formData, data);
// 赋值列表数据
jsqtzjcTzfxsList.value = data.jsqtzjcTzfxs || [];
jsqtzjcZxjcsList.value = data.jsqtzjcZxjcs || [];
},
});
};
// 返回上一页
const backClick = () => {
router.back(-1);
};
// 保存/提交表单
const saveClick = () => {
// 基础校验
if (!formData.projectId) {
ElMessage.warning("请选择项目信息");
return;
}
loading.value = true;
// 区分新增/编辑
const url = rcCgqyglId.value
? "/api/project/updateJsqtzjc"
: "/api/project/createJsqtzjc";
// 组装提交数据
const submitData = {
...formData,
projectId: formData.projectId + "", // 确保为字符串类型
jsqtzjcTzfxs: jsqtzjcTzfxsList.value,
jsqtzjcZxjcs: jsqtzjcZxjcsList.value,
};
proxy.$post({
url: url,
data: submitData,
callback: () => {
loading.value = false;
ElMessage.success(rcCgqyglId.value ? "编辑成功" : "新增成功");
router.back(-1);
},
});
};
let options = ref();
// 页面初始化
onMounted(() => {
// 获取项目列表
getProjectData();
options.value = JSON.parse(sessionStorage.getItem("resourceData"));
// 如果有ID则加载详情
if (rcCgqyglId.value) {
getJsqtzjcDetail();
}
});
</script>
<style scoped lang="less">
@import "@/styles/verticalManages.less";
.tab-handle {
margin-bottom: 10px;
text-align: left;
}
.subtotal {
background-color: #f5f7fa;
height: 40px;
display: flex;
.label {
width: 100px;
height: 40px;
text-align: center;
line-height: 40px;
border-right: 1px solid #ebeef5;
}
.value {
padding-left: 16px;
width: 100%;
line-height: 40px;
}
}
</style>
<template>
<div class="manage-container">
<div class="manage-wrap">
<div class="manage-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="primary" @click="constructionAdd">新增</el-button>
</div>
</div>
<div class="manage-content" v-loading="loading">
<common-table
:autoHeight="true"
:maxRows="10"
:data="tableData"
:columns="tableColumns"
:total="total"
:current-page="currentPage"
:page-size="pageSize"
:index="true"
:indexLabel="'序号'"
title=""
:border="true"
@size-change="handleSizeChange"
@current-page-change="handleCurrentPageChange"
>
<template #operations="{ row, index }">
<el-button
link
type="primary"
size="small"
@click="previewStatement(row)"
>查看</el-button
>
<el-button
link
type="primary"
size="small"
@click="editStatement(row)"
>编辑</el-button
>
<el-button
link
type="danger"
size="small"
@click="deleteStatement(row)"
>删除</el-button
>
</template>
</common-table>
</div>
</div>
</div>
</template>
<script setup>
import { ref, onMounted, getCurrentInstance } from "vue";
import { useRouter } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import CommonTable from "@/components/common/commonTable.vue";
const router = useRouter();
const { proxy } = getCurrentInstance();
let tableData = ref([]);
let tableColumns = ref([
{
prop: "projectName",
label: "项目信息",
showOverflowTooltip: true,
},
{
prop: "operations",
label: "操作",
width: 170,
slot: "operations",
fixed: "right",
align: "center",
},
]);
let loading = ref(false);
let total = ref(0);
let currentPage = ref(1);
let pageSize = ref(10);
// 获取列表数据
const getStatementData = () => {
loading.value = true;
proxy.$post({
url: "/api/project/getYyqtzjcList",
data: {
page: currentPage.value,
pagesize: pageSize.value,
},
callback: (data) => {
console.log(data, "data");
tableData.value = data.rows;
total.value = data.count;
loading.value = false;
},
});
};
// 分页
const handleSizeChange = (size) => {
pageSize.value = size;
currentPage.value = 1;
getStatementData();
};
const handleCurrentPageChange = (page) => {
currentPage.value = page;
getStatementData();
};
const constructionAdd = () => {
router.push("/constructionAdd");
};
const editStatement = (item) => {
router.push({
name: "constructionAdd",
query: {
id: item.id,
},
});
};
const previewStatement = (item) => {
router.push({
name: "constructionAdd",
query: {
isPreview: true,
id: item.id,
},
});
};
const deleteStatement = (item) => {
ElMessageBox.confirm("确认删除该项?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
proxy.$post({
url: "/api/project/deleteYyqtzjc",
data: {
id: item.id,
},
callback: (data) => {
ElMessage.success("删除成功");
getStatementData();
},
});
})
.catch(() => {});
};
onMounted(() => {
getStatementData();
});
</script>
<style scoped lang="less">
@import "@/styles/manage.less";
</style>
<template>
<div class="add-project-container">
<div class="add-project-content" v-loading="loading">
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content">
<div class="project-tab-content">
<div class="tab-content">
<el-form :model="formData" :label-width="200" :disabled="isPreview">
<el-collapse v-model="activeCollapse">
<!-- 基本信息 -->
<el-collapse-item title="基本信息" name="基本信息">
<el-row :gutter="20">
<el-col :span="12">
<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.key"
:label="item.projectName"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="决策总投资 一次填报锁定">
<el-input
v-model="formData.jcztz"
placeholder="请输入决策总投资 一次填报锁定"
/>
</el-form-item>
</el-col> -->
</el-row>
<!-- <el-row :gutter="20">
<el-col :span="12">
<el-form-item label="资本金内部收益率(%) 一次填报锁定">
<el-input
v-model="formData.zbjnbsyl"
placeholder="请输入资本金内部收益率(%) 一次填报锁定"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="预测总投资">
<el-input
v-model="formData.ycztz"
placeholder="请输入预测总投资"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="确认总投资">
<el-input
v-model="formData.qrztz"
placeholder="请输入确认总投资"
/>
</el-form-item>
</el-col>
</el-row> -->
</el-collapse-item>
<!-- 投资(成本)分析会资料 -->
<el-collapse-item
title="投资(成本)分析会资料"
name="投资(成本)分析会资料"
>
<div class="tab-handle">
<el-button type="primary" @click="addjsqtzjcTzfxs"
>新增</el-button
>
</div>
<el-table
:data="jsqtzjcTzfxsList"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column type="index" width="60" label="序号" />
<el-table-column prop="jd" label="时间 ">
<template #default="scope">
<!-- <el-date-picker
v-model="scope.row.jd"
type="datetime"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择"
/> -->
<el-input
v-model="scope.row.jd"
placeholder="请按照 xx年xx季度 格式填写"
/>
</template>
</el-table-column>
<el-table-column prop="ycztz" label="当期预测总投资">
<template #default="scope">
<el-input
type="number"
v-model.number="scope.row.ycztz"
placeholder="请输入当期预测总投资"
/>
</template>
</el-table-column>
<el-table-column
prop="zbjnbsyl"
label="资本金内部收益率(%)"
>
<template #default="scope">
<el-input
v-model.number="scope.row.zbjnbsyl"
placeholder="请输入资本金内部收益率(%)"
/>
</template>
</el-table-column>
<el-table-column
prop="tzcbfxhzl"
label="投资(成本)分析会资料"
>
<template #default="scope">
<FileUploader
v-model="scope.row.tzcbfxhzl"
:isInline="true"
></FileUploader>
</template>
</el-table-column>
<el-table-column label="操作" width="60">
<template #default="scope">
<el-button
link
type="danger"
size="small"
@click="deletejsqtzjcTzfxs(scope.$index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
<!-- 专项检查 -->
<el-collapse-item title="专项检查" name="专项检查">
<div class="tab-handle">
<el-button type="primary" @click="addJsqtzjcZxjcs"
>新增</el-button
>
</div>
<el-table
:data="jsqtzjcZxjcsList"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column type="index" width="60" label="序号" />
<el-table-column prop="zxjcfl" label="专项检查类型">
<template #default="scope">
<el-select
v-model="scope.row.zxjcfl"
placeholder="请选择专项检查类型"
>
<el-option
v-for="item in options?.construction_classify"
:key="item.key"
:label="item.name"
:value="item.key"
></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column prop="jcjg" label="检查结果">
<template #default="scope">
<el-input
v-model.number="scope.row.jcjg"
placeholder="请输入检查结果"
/>
</template>
</el-table-column>
<el-table-column prop="zgcsqd" label="整改措施清单">
<template #default="scope">
<el-input
v-model.number="scope.row.zgcsqd"
placeholder="请输入整改措施清单"
/>
</template>
</el-table-column>
<el-table-column prop="fjcl" label="附件材料">
<template #default="scope">
<FileUploader
v-model="scope.row.fjcl"
:isInline="true"
></FileUploader>
</template>
</el-table-column>
<el-table-column label="操作" width="60">
<template #default="scope">
<el-button
link
type="danger"
size="small"
@click="deleteJsqtzjcZxjcs(scope.$index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
</el-collapse>
</el-form>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup>
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
import { useRouter, useRoute } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import FileUploader from "../../components/FileUploader/index.vue";
// 初始化全局变量
const router = useRouter();
const route = useRoute();
const { proxy } = getCurrentInstance();
// 折叠面板默认展开项
const activeCollapse = ref(["基本信息", "投资(成本)分析会资料", "专项检查"]);
// 表单数据
const formData = reactive({
projectName: "",
projectId: "",
del: 0, // 删除标记,0为正常
createdAt: "",
updatedAt: "",
});
// 加载状态
const loading = ref(false);
// 是否预览模式
const isPreview = ref(!!route.query.isPreview);
// 项目列表数据
const projectList = ref([]);
// 当前编辑的记录ID
const rcCgqyglId = ref(route.query.id || "");
// 投资(成本)分析会资料列表
const jsqtzjcTzfxsList = ref([]);
// 专项检查列表
const jsqtzjcZxjcsList = ref([]);
// ========== 投资(成本)分析会资料 操作方法 ==========
const addjsqtzjcTzfxs = () => {
jsqtzjcTzfxsList.value.push({
jd: "",
ycztz: "",
zbjnbsyl: "",
jsqtzjcTzfxs: [],
});
};
const deletejsqtzjcTzfxs = (index) => {
ElMessageBox.confirm("确认删除该项?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
jsqtzjcTzfxsList.value.splice(index, 1);
ElMessage.success("删除成功");
});
};
// ========== 专项检查 操作方法 ==========
const addJsqtzjcZxjcs = () => {
jsqtzjcZxjcsList.value.push({
zxjcfl: "",
jcjg: "",
zgcsqd: "",
fjcl: [],
});
};
const deleteJsqtzjcZxjcs = (index) => {
ElMessageBox.confirm("确认删除该项?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
jsqtzjcZxjcsList.value.splice(index, 1);
ElMessage.success("删除成功");
});
};
// ========== 通用方法 ==========
// 获取项目列表
const getProjectData = () => {
proxy.$post({
url: "/api/project/listProject",
data: {
page: 1,
pagesize: 1000,
attributes: [],
menuType: "xmjc",
},
callback: (data) => {
projectList.value = data.rows || [];
},
});
};
// 选择项目后同步项目名称
const changeProject = (val) => {
const selectItem = projectList.value.find((item) => item.id === val);
if (selectItem) {
formData.projectName = selectItem.projectName;
}
};
// 获取单条记录详情(编辑/预览)
const getJsqtzjcDetail = () => {
if (!rcCgqyglId.value) return;
loading.value = true;
proxy.$post({
url: "/api/project/getYyqtzjcInfo",
data: { id: rcCgqyglId.value },
callback: (data) => {
loading.value = false;
// 赋值基础表单数据
Object.assign(formData, data);
// 赋值列表数据
jsqtzjcTzfxsList.value = data.jsqtzjcTzfxs || [];
jsqtzjcZxjcsList.value = data.jsqtzjcZxjcs || [];
},
});
};
// 返回上一页
const backClick = () => {
router.back(-1);
};
// 保存/提交表单
const saveClick = () => {
// 基础校验
if (!formData.projectId) {
ElMessage.warning("请选择项目信息");
return;
}
loading.value = true;
// 区分新增/编辑
const url = rcCgqyglId.value
? "/api/project/updateYyqtzjc"
: "/api/project/createYyqtzjc";
// 组装提交数据
const submitData = {
...formData,
projectId: formData.projectId + "", // 确保为字符串类型
jsqtzjcTzfxs: jsqtzjcTzfxsList.value,
jsqtzjcZxjcs: jsqtzjcZxjcsList.value,
};
proxy.$post({
url: url,
data: submitData,
callback: () => {
loading.value = false;
ElMessage.success(rcCgqyglId.value ? "编辑成功" : "新增成功");
router.back(-1);
},
});
};
let options = ref();
// 页面初始化
onMounted(() => {
// 获取项目列表
getProjectData();
options.value = JSON.parse(sessionStorage.getItem("resourceData"));
// 如果有ID则加载详情
if (rcCgqyglId.value) {
getJsqtzjcDetail();
}
});
</script>
<style scoped lang="less">
@import "@/styles/verticalManages.less";
.tab-handle {
margin-bottom: 10px;
text-align: left;
}
.subtotal {
background-color: #f5f7fa;
height: 40px;
display: flex;
.label {
width: 100px;
height: 40px;
text-align: center;
line-height: 40px;
border-right: 1px solid #ebeef5;
}
.value {
padding-left: 16px;
width: 100%;
line-height: 40px;
}
}
</style>
......@@ -90,13 +90,17 @@
<el-row :gutter="20">
<!-- 股权结构 -->
<el-col :span="24">
<el-form-item label="股权结构">
<el-form-item
label="股权结构、资金来源及构成发生重大变化的报告及审批文件"
>
<FileUploader v-model="formData.gqjg" />
</el-form-item>
</el-col>
<!-- 资金来源及构成 -->
<!-- 接入财务金融部资本金出资台账,台账更新,系统上跟着更新 -->
<el-col :span="24">
<el-form-item label="资金来源及构成">
<el-form-item
label="接入财务金融部资本金出资台账,台账更新,系统上跟着更新"
>
<FileUploader v-model="formData.cwjr" />
</el-form-item>
</el-col>
......
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