明树Git Lab

Commit dd63132b authored by zhanghan's avatar zhanghan

日常信息报送 投委会档案 开发完毕

parent e91d68aa
Pipeline #106733 passed with stage
in 18 seconds
...@@ -372,7 +372,6 @@ const saveClick = () => { ...@@ -372,7 +372,6 @@ const saveClick = () => {
}, },
error: () => { error: () => {
loading.value = false; loading.value = false;
ElMessage.error("操作失败,请稍后重试");
}, },
}); });
}; };
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<div class="manage-header"> <div class="manage-header">
<div class="header-left"></div> <div class="header-left"></div>
<div class="header-right"> <div class="header-right">
<el-button type="primary" @click="investmentAdd">新增</el-button> <el-button type="primary" @click="everydayAdd">新增</el-button>
</div> </div>
</div> </div>
<div class="manage-content" v-loading="loading"> <div class="manage-content" v-loading="loading">
...@@ -64,46 +64,31 @@ const { proxy } = getCurrentInstance(); ...@@ -64,46 +64,31 @@ const { proxy } = getCurrentInstance();
let tableData = ref([]); let tableData = ref([]);
let tableColumns = ref([ let tableColumns = ref([
{ {
prop: "itemName", prop: "wjmc",
label: "事项名称", label: "文件名称",
showOverflowTooltip: true, showOverflowTooltip: true,
}, },
{ {
prop: "itemType", prop: "nd",
label: "事项类型", label: "报送年度",
showOverflowTooltip: true,
},
{
prop: "planYear",
label: "编制年度",
showOverflowTooltip: true,
},
{
prop: "planCycle",
label: "规划周期(年)",
showOverflowTooltip: true,
},
{
prop: "planUnit",
label: "编制单位",
showOverflowTooltip: true, showOverflowTooltip: true,
}, },
{ {
prop: "leadingDepartment", prop: "bzr",
label: "牵头部门", label: "编制人",
showOverflowTooltip: true, showOverflowTooltip: true,
}, },
{ {
prop: "creatorName", prop: "bzrbm",
label: "填报人", label: "编制人部门",
showOverflowTooltip: true, showOverflowTooltip: true,
}, },
{ {
prop: "creatorTime", prop: "fjscLen",
label: "填报时间", label: "附件",
showOverflowTooltip: true, showOverflowTooltip: true,
}, },
{ {
prop: "operations", prop: "operations",
label: "操作", label: "操作",
...@@ -121,7 +106,7 @@ let pageSize = ref(10); ...@@ -121,7 +106,7 @@ let pageSize = ref(10);
const getStatementData = () => { const getStatementData = () => {
loading.value = true; loading.value = true;
proxy.$post({ proxy.$post({
url: "/api/project/getTzghList", url: "/api/project/getXxbsList",
data: { data: {
page: currentPage.value, page: currentPage.value,
pagesize: pageSize.value, pagesize: pageSize.value,
...@@ -148,12 +133,12 @@ const handleCurrentPageChange = (page) => { ...@@ -148,12 +133,12 @@ const handleCurrentPageChange = (page) => {
currentPage.value = page; currentPage.value = page;
getStatementData(); getStatementData();
}; };
const investmentAdd = () => { const everydayAdd = () => {
router.push("/investmentAdd"); router.push("/everydayAdd");
}; };
const editStatement = (item) => { const editStatement = (item) => {
router.push({ router.push({
name: "investmentAdd", name: "everydayAdd",
query: { query: {
id: item.id, id: item.id,
}, },
...@@ -161,7 +146,7 @@ const editStatement = (item) => { ...@@ -161,7 +146,7 @@ const editStatement = (item) => {
}; };
const previewStatement = (item) => { const previewStatement = (item) => {
router.push({ router.push({
name: "investmentAdd", name: "everydayAdd",
query: { query: {
isPreview: true, isPreview: true,
id: item.id, id: item.id,
...@@ -176,7 +161,7 @@ const deleteStatement = (item) => { ...@@ -176,7 +161,7 @@ const deleteStatement = (item) => {
}) })
.then(() => { .then(() => {
proxy.$post({ proxy.$post({
url: "/api/project/deleteTzgh", url: "/api/project/deleteXxbs",
data: { data: {
id: item.id, id: item.id,
}, },
......
...@@ -13,31 +13,24 @@ ...@@ -13,31 +13,24 @@
<div class="tabs-content"> <div class="tabs-content">
<div class="project-tab-content"> <div class="project-tab-content">
<div class="tab-content"> <div class="tab-content">
<!-- 表单模型绑定表字段formData,保留原有布局/禁用逻辑 -->
<el-form :model="formData" :label-width="200" :disabled="isPreview"> <el-form :model="formData" :label-width="200" :disabled="isPreview">
<el-row :gutter="20"> <el-row :gutter="20">
<!-- 事项名称 --> <!-- 文件名称 → 绑定wjmc -->
<el-col :span="12"> <el-col :span="12">
<el-form-item label="事项名称"> <el-form-item label="文件名称">
<el-input <el-input
v-model="formData.itemName" v-model="formData.wjmc"
placeholder="请输入事项名称" placeholder="请输入文件名称"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<!-- 事项类型 -->
<el-col :span="12"> <!-- 编制年度 → 绑定nd -->
<el-form-item label="事项类型">
<el-input
v-model="formData.itemType"
placeholder="请输入事项类型(如:年度/五年)"
/>
</el-form-item>
</el-col>
<!-- 编制年度 -->
<el-col :span="12"> <el-col :span="12">
<el-form-item label="编制年度"> <el-form-item label="编制年度">
<el-date-picker <el-date-picker
v-model="formData.planYear" v-model="formData.nd"
type="year" type="year"
format="YYYY" format="YYYY"
value-format="YYYY" value-format="YYYY"
...@@ -46,76 +39,31 @@ ...@@ -46,76 +39,31 @@
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<!-- 规划周期(年) -->
<el-col :span="12"> <!-- 编制人 → 绑定bzr -->
<el-form-item label="规划周期(年)">
<el-input-number
v-model="formData.planCycle"
placeholder="请输入规划周期"
:min="1"
:max="100"
style="width: 100%"
/>
<span class="input-tip">单位:年</span>
</el-form-item>
</el-col>
<!-- 编制单位 -->
<el-col :span="12">
<el-form-item label="编制单位">
<el-input
v-model="formData.planUnit"
placeholder="请输入编制单位"
/>
</el-form-item>
</el-col>
<!-- 牵头部门 -->
<el-col :span="12"> <el-col :span="12">
<el-form-item label="牵头部门"> <el-form-item label="编制人">
<el-input <el-input
v-model="formData.leadingDepartment" v-model="formData.bzr"
placeholder="请输入牵头部门" placeholder="请输入编制人"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<!-- 填报人 -->
<!-- 编制人部门 → 绑定bzrbm -->
<el-col :span="12"> <el-col :span="12">
<el-form-item label="填报人"> <el-form-item label="编制人部门">
<el-input <el-input
v-model="formData.creatorName" v-model="formData.bzrbm"
placeholder="请输入填报人姓名" placeholder="请输入编制人部门"
/>
</el-form-item>
</el-col>
<!-- 填报时间 -->
<el-col :span="12">
<el-form-item label="填报时间">
<el-date-picker
v-model="formData.creatorTime"
type="date"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
placeholder="请选择填报时间"
picker-options="{ disabledDate: (date) => date > new Date() }"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<!-- 附件上传区域 - 上级单位投资规划 --> <!-- 附件 → 绑定fjsc -->
<el-col :span="24"> <el-col :span="24">
<el-form-item label="上级单位投资规划" label-width="200"> <el-form-item label="附件" label-width="200">
<FileUploader v-model="formData.sjdwtzgh" /> <FileUploader v-model="formData.fjsc" />
</el-form-item>
</el-col>
<!-- 附件上传区域 - 本级单位投资规划 -->
<el-col :span="24">
<el-form-item label="本级单位投资规划" label-width="200">
<FileUploader v-model="formData.bjdwtzgh" />
</el-form-item>
</el-col>
<!-- 附件上传区域 - 其他材料 -->
<el-col :span="24">
<el-form-item label="其他材料" label-width="200">
<FileUploader v-model="formData.qtcl" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -131,112 +79,90 @@ ...@@ -131,112 +79,90 @@
import { reactive, ref, onMounted, getCurrentInstance } from "vue"; import { reactive, ref, onMounted, getCurrentInstance } 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 FileUploader from "../../components/FileUploader/index.vue"; import FileUploader from "../../components/FileUploader/index.vue";
// 路由&全局实例 // 路由&全局实例(原有逻辑保留)
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
// ========== 核心状态 ========== // ========== 核心状态(删除无用变量,匹配表名命名) ==========
const loading = ref(false); // 加载状态 const loading = ref(false); // 加载状态
const isPreview = ref(!!route.query.isPreview); // 是否预览模式 const isPreview = ref(!!route.query.isPreview); // 是否预览模式
const rcTzghId = ref(route.query.id || ""); // 投资规划记录ID(匹配表名) const rcXxbsId = ref(route.query.id || ""); // 建设期投资检查记录ID(匹配表名RcXxbs)
const options = ref({}); // 预留配置项,后续有下拉可扩展 // 所属项目ID/主表ID(从路由传参/全局获取,根据实际业务调整,这里预留)
const projectId = ref(route.query.projectId || "");
const sourceId = ref(route.query.sourceId || "");
// ========== 表单核心数据(完全匹配RcTzgh表结构) ========== // ========== 表单核心数据(完全匹配RcXxbs表结构,无冗余字段) ==========
const formData = reactive({ const formData = reactive({
itemName: "", // 事项名称 wjmc: "", // 文件名称
itemType: "", // 事项类型 nd: "", // 编制年度(YYYY格式,匹配表的DATE类型)
planYear: "", // 编制年度(YYYY格式) bzr: "", // 编制人
planCycle: "", // 规划周期(年) bzrbm: "", // 编制人部门
planUnit: "", // 编制单位 fjsc: [], // 附件上传(JSON类型,匹配表的JSON)
leadingDepartment: "", // 牵头部门 projectId: "", // 所属项目ID(隐藏字段,提交传值)
creatorName: "", // 填报人 sourceId: "", // 所属主表id(隐藏字段,提交传值)
creatorTime: "", // 填报时间 del: 0, // 删除标识,默认0(正常)
sjdwtzgh: [], // 上级单位投资规划(附件JSON) creator: proxy.$store?.getters?.userId || "", // 创建人ID(从全局状态取,无则空)
bjdwtzgh: [], // 本级单位投资规划(附件JSON)
qtcl: [], // 其他材料(附件JSON)
creator: proxy.$store?.getters?.userId || "", // 创建人ID(从全局状态取,可根据实际调整)
del: 0, // 删除标识,默认正常
}); });
// ========== 接口请求 ========== // ========== 接口请求(匹配建设期投资检查业务,修改接口名/地址) ==========
// 获取投资规划单条记录详情(编辑/预览时用) // 获取建设期投资检查单条记录详情(编辑/预览时用)
const getRcTzghDetail = () => { const getRcXxbsDetail = () => {
loading.value = true; loading.value = true;
proxy.$post({ proxy.$post({
url: "/api/project/getTzgh", // 匹配投资规划接口 url: "/api/project/getXxbs", // 替换为实际的【建设期投资检查】详情接口
data: { id: rcTzghId.value }, data: { id: rcXxbsId.value },
callback: (data) => { callback: (data) => {
loading.value = false; loading.value = false;
// 接口返回数据直接赋值(字段完全匹配,无需额外转换)
Object.assign(formData, data); Object.assign(formData, data);
// 处理时间/数字格式,避免渲染报错 // 附件字段容错:确保是数组
formData.planYear = data.planYear || ""; formData.fjsc = data.fjsc || [];
formData.planCycle = Number(data.planCycle) || "";
formData.creatorTime = data.creatorTime || "";
// 附件数组默认值
formData.sjdwtzgh = data.sjdwtzgh || [];
formData.bjdwtzgh = data.bjdwtzgh || [];
formData.qtcl = data.qtcl || [];
}, },
error: () => (loading.value = false), error: () => (loading.value = false),
}); });
}; };
// ========== 页面操作方法 ========== // ========== 页面操作方法(保留原有交互,删除无用校验) ==========
// 返回上一页 // 返回上一页
const backClick = () => { const backClick = () => {
router.back(-1); router.back(-1);
}; };
// 保存/提交表单(新增/编辑统一处理) // 保存/提交表单(新增/编辑统一处理,无冗余校验
const saveClick = () => { const saveClick = () => {
// // 简单表单校验 // 赋值隐藏字段(所属项目/主表ID,根据实际业务调整赋值逻辑)
// if (!formData.itemName || !formData.itemType || !formData.planYear) { formData.projectId = projectId.value;
// ElMessage.warning("请填写必填的事项名称、事项类型、编制年度"); formData.sourceId = sourceId.value;
// return;
// }
// if (
// !formData.planCycle ||
// !formData.planUnit ||
// !formData.leadingDepartment
// ) {
// ElMessage.warning("请填写必填的规划周期、编制单位、牵头部门");
// return;
// }
// if (!formData.creatorName || !formData.creatorTime) {
// ElMessage.warning("请填写必填的填报人、填报时间");
// return;
// }
loading.value = true; loading.value = true;
// 匹配投资规划的新增/编辑接口 // 新增/编辑接口区分(匹配建设期投资检查业务)
const url = rcTzghId.value const url = rcXxbsId.value
? "/api/project/updateTzgh" ? "/api/project/updateXxbs" // 编辑接口
: "/api/project/createTzgh"; : "/api/project/createXxbs"; // 新增接口
proxy.$post({ proxy.$post({
url: url, url: url,
data: { ...formData }, data: { ...formData },
callback: () => { callback: () => {
loading.value = false; loading.value = false;
ElMessage.success( ElMessage.success(rcXxbsId.value ? "编辑成功" : "新增成功");
rcTzghId.value ? "投资规划编辑成功" : "投资规划新增成功"
);
router.back(-1); router.back(-1);
}, },
error: (err) => { error: () => {
loading.value = false; loading.value = false;
ElMessage.error(err.msg || "操作失败,请稍后重试");
}, },
}); });
}; };
// ========== 页面初始化 ========== // ========== 页面初始化(仅编辑/预览时加载详情,无冗余逻辑) ==========
onMounted(() => { onMounted(() => {
// 编辑/预览模式,加载投资规划详情数据 // 有记录ID时,加载详情数据(编辑/预览)
if (rcTzghId.value) { if (rcXxbsId.value) {
getRcTzghDetail(); getRcXxbsDetail();
} }
}); });
</script> </script>
...@@ -266,17 +192,11 @@ onMounted(() => { ...@@ -266,17 +192,11 @@ onMounted(() => {
border-bottom: 1px solid #ebeef5; border-bottom: 1px solid #ebeef5;
} }
// 表单样式优化 // 表单样式优化(保留原有,无冗余)
:deep(.el-form-item__label) { :deep(.el-form-item__label) {
font-weight: 500; font-weight: 500;
} }
// 数字输入框提示文字 // 附件上传区域间距(保留原有)
.input-tip {
margin-left: 8px;
color: #909399;
font-size: 12px;
}
// 附件上传区域间距
:deep(.el-upload) { :deep(.el-upload) {
margin-bottom: 10px; margin-bottom: 10px;
} }
......
...@@ -91,9 +91,9 @@ ...@@ -91,9 +91,9 @@
<el-form-item label="填报时间"> <el-form-item label="填报时间">
<el-date-picker <el-date-picker
v-model="formData.creatorTime" v-model="formData.creatorTime"
type="date" type="datetime"
format="YYYY-MM-DD" format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择填报时间" placeholder="请选择填报时间"
picker-options="{ disabledDate: (date) => date > new Date() }" picker-options="{ disabledDate: (date) => date > new Date() }"
/> />
...@@ -227,7 +227,6 @@ const saveClick = () => { ...@@ -227,7 +227,6 @@ const saveClick = () => {
}, },
error: (err) => { error: (err) => {
loading.value = false; loading.value = false;
ElMessage.error(err.msg || "操作失败,请稍后重试");
}, },
}); });
}; };
......
...@@ -143,7 +143,6 @@ const saveClick = () => { ...@@ -143,7 +143,6 @@ const saveClick = () => {
}, },
error: () => { error: () => {
loading.value = false; loading.value = false;
ElMessage.error("操作失败,请稍后重试");
}, },
}); });
}; };
......
...@@ -125,7 +125,8 @@ const getStatementData = () => { ...@@ -125,7 +125,8 @@ const getStatementData = () => {
tableData.value = data.rows.map((it) => { tableData.value = data.rows.map((it) => {
return { return {
...it, ...it,
fjscLen: it.fjsc?.length + "个", meetingMinutesAttachmentLen:
it.meetingMinutesAttachment?.length + "份",
}; };
}); });
total.value = data.count; total.value = data.count;
......
...@@ -170,17 +170,17 @@ const saveClick = () => { ...@@ -170,17 +170,17 @@ const saveClick = () => {
loading.value = true; loading.value = true;
// 投委会管理专属新增/编辑接口 // 投委会管理专属新增/编辑接口
console.log(rcTwhglId.value, "rcTwhglId.value");
const url = rcTwhglId.value const url = rcTwhglId.value
? "/api/project/updateRcTwhgl" ? "/api/project/updateTwhgl"
: "/api/project/createRcTwhgl"; : "/api/project/createTwhgl";
proxy.$post({ proxy.$post({
url: url, url: url,
data: { ...formData }, data: { ...formData },
callback: () => { callback: () => {
loading.value = false; loading.value = false;
ElMessage.success( ElMessage.success(rcTwhglId.value ? "编辑成功" : "新增成功");
rcTwhglId.value ? "投委会记录编辑成功" : "投委会记录新增成功"
);
router.back(-1); router.back(-1);
}, },
error: (err) => { error: (err) => {
...@@ -188,8 +188,6 @@ const saveClick = () => { ...@@ -188,8 +188,6 @@ const saveClick = () => {
// 唯一键冲突特殊提示(会议编号重复) // 唯一键冲突特殊提示(会议编号重复)
if (err.msg?.includes("unique") || err.msg?.includes("重复")) { if (err.msg?.includes("unique") || err.msg?.includes("重复")) {
ElMessage.error("会议编号已存在,请更换唯一编号后重试"); ElMessage.error("会议编号已存在,请更换唯一编号后重试");
} else {
ElMessage.error(err.msg || "操作失败,请稍后重试");
} }
}, },
}); });
......
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