feat(ctr): 优化合同管理功能

- 支出合同和收入合同页面移除项目ID相关字段
- 合同列表页面添加当前项目ID筛选条件
- 合同表单页面禁用某些字段的编辑
- 优化合同类型页面的表单布局和提示信息
- 添加对当前项目变更的监听,自动刷新合同列表
This commit is contained in:
tcy
2025-08-21 16:35:24 +08:00
parent 5e162ef59d
commit f0577d7d27
3 changed files with 62 additions and 27 deletions

View File

@ -5,9 +5,9 @@
<div v-show="showSearch" class="mb-[10px]">
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="项目ID" prop="projectId">
<!-- <el-form-item label="项目ID" prop="projectId">
<el-input v-model="queryParams.projectId" placeholder="请输入项目ID" clearable @keyup.enter="handleQuery" />
</el-form-item>
</el-form-item> -->
<el-form-item label="合同编号" prop="contractCode">
<el-input v-model="queryParams.contractCode" placeholder="请输入合同编号" clearable @keyup.enter="handleQuery" />
</el-form-item>
@ -54,7 +54,7 @@
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="主键ID" align="center" prop="id" v-if="true" /> -->
<el-table-column type="index" width="50" label="序号" />
<el-table-column label="项目ID" align="center" prop="projectId" />
<!-- <el-table-column label="项目ID" align="center" prop="projectId" /> -->
<el-table-column label="合同编号" align="center" prop="contractCode" />
<el-table-column label="合同类型" align="center" prop="contractType">
<template #default="scope">
@ -122,7 +122,10 @@
import { listIncomeContract, getIncomeContract, delIncomeContract, addIncomeContract, updateIncomeContract, getFileList } from '@/api/ctr/incomeContract';
import { IncomeContractVO, IncomeContractQuery, IncomeContractForm } from '@/api/ctr/incomeContract/types';
import FileList from '@/components/FileList/index.vue';
import useUserStore from '@/store/modules/user';
const { proxy } = getCurrentInstance();
const userStore = useUserStore();
const currentProject = computed(() => userStore.selectedProject);
const { expenses_contract_type, income_contract_type } = toRefs(
proxy?.useDict('income_contract_type', 'expenses_contract_type')
@ -159,7 +162,7 @@ const data = reactive<PageData<IncomeContractForm, IncomeContractQuery>>({
queryParams: {
pageNum: 1,
pageSize: 10,
projectId: undefined,
projectId: currentProject.value?.id,
contractCode: undefined,
contractType: undefined,
contractOwner: undefined,
@ -284,4 +287,17 @@ const handleShowFileList = async (row: IncomeContractVO) => {
onMounted(() => {
getList();
});
// 监听项目id刷新数据
const listeningProject = watch(
() => currentProject.value?.id,
(nid, oid) => {
queryParams.value.projectId = nid;
form.value.projectId = nid;
getList();
}
);
onUnmounted(() => {
listeningProject();
});
</script>