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