diff --git a/src/views/project-management/contract/expense-contract/ContractDetail.vue b/src/views/project-management/contract/expense-contract/ContractDetail.vue index 56f99f1..8ac7258 100644 --- a/src/views/project-management/contract/expense-contract/ContractDetail.vue +++ b/src/views/project-management/contract/expense-contract/ContractDetail.vue @@ -18,6 +18,10 @@ ¥{{ (contractDetail.amount || 0).toLocaleString() }} + + {{ contractDetail.category || '-' }} + + ¥{{ (contractDetail.receivedAmount || 0).toLocaleString() }} @@ -74,6 +78,7 @@ interface ContractDetail { code: string projectId: string type: string + category?: string productService: string paymentDate: string | null performanceDeadline: string | null diff --git a/src/views/project-management/contract/expense-contract/ContractEdit.vue b/src/views/project-management/contract/expense-contract/ContractEdit.vue index 5908dcb..9f3daf5 100644 --- a/src/views/project-management/contract/expense-contract/ContractEdit.vue +++ b/src/views/project-management/contract/expense-contract/ContractEdit.vue @@ -46,6 +46,21 @@ + + + + + 框架协议 + 单次合同 + 三年长协 + 两年长协 + 派工单 + + + + + + diff --git a/src/views/project-management/contract/expense-contract/index.vue b/src/views/project-management/contract/expense-contract/index.vue index 3f2e5f0..1264f42 100644 --- a/src/views/project-management/contract/expense-contract/index.vue +++ b/src/views/project-management/contract/expense-contract/index.vue @@ -135,6 +135,7 @@ interface ContractItem { code: string projectId: string type: string + category?: string productService: string paymentDate: string | null performanceDeadline: string | null @@ -165,6 +166,7 @@ const searchForm = reactive({ contractCode: '', client: '', status: '', + category: '', signDateRange: [] as [string, string] | [], page: 1, size: 10, @@ -196,6 +198,21 @@ const queryFormColumns = [ ], }, }, + { + field: 'category', + label: '合同类别', + type: 'select' as const, + props: { + placeholder: '请选择合同类别', + options: [ + { label: '框架协议', value: '框架协议' }, + { label: '单次合同', value: '单次合同' }, + { label: '三年长协', value: '三年长协' }, + { label: '两年长协', value: '两年长协' }, + { label: '派工单', value: '派工单' } + ] + } + }, { field: 'signDateRange', label: '签署时间', @@ -218,6 +235,7 @@ const tableColumns: TableColumnData[] = [ { title: '签署日期', dataIndex: 'signDate', slotName: 'signDate', width: 120 }, { title: '履约期限', dataIndex: 'performanceDeadline', slotName: 'performanceDeadline', width: 120 }, { title: '付款日期', dataIndex: 'paymentDate', slotName: 'paymentDate', width: 120 }, + { title: '合同类别', dataIndex: 'category', width: 120 }, { title: '合同状态', dataIndex: 'contractStatus', slotName: 'status', width: 100 }, { title: '销售人员', dataIndex: 'salespersonName', width: 100 }, { title: '销售部门', dataIndex: 'salespersonDeptName', width: 100 }, @@ -239,6 +257,7 @@ const fetchContractList = async () => { code: searchForm.contractCode, customer: searchForm.client, contractStatus: searchForm.status, + category: (searchForm as any).category || undefined, signDateStart: Array.isArray(searchForm.signDateRange) && searchForm.signDateRange.length === 2 ? searchForm.signDateRange[0] : undefined, signDateEnd: Array.isArray(searchForm.signDateRange) && searchForm.signDateRange.length === 2 ? searchForm.signDateRange[1] : undefined, } @@ -325,6 +344,8 @@ const reset = () => { status: '', signDateRange: [], page: 1, + category: '', + size: 10, }) pagination.current = 1 @@ -354,6 +375,7 @@ const newContractData = ref({ code: '', projectId: '', type: '支出合同', + category: '', productService: '', paymentDate: null, performanceDeadline: null, @@ -387,6 +409,7 @@ const openAddModal = () => { code: '', projectId: '', type: '支出合同', + category: '', productService: '', paymentDate: null, performanceDeadline: null, @@ -444,6 +467,7 @@ const handleAddSubmit = async () => { salespersonId: (newContractData.value as any).salespersonId || '', signDate: newContractData.value.signDate || null, type: newContractData.value.type || '支出合同', + category: newContractData.value.category || '', } // 如果没有合同ID则不传 @@ -535,6 +559,7 @@ const handleEditSubmit = async () => { productService: editedContractData.value.productService || '', projectId: editedContractData.value.projectId || '', salespersonId: editedContractData.value.salespersonId || '', + category: editedContractData.value.category || '', signDate: editedContractData.value.signDate || null, type: editedContractData.value.type || '', }; diff --git a/src/views/project-management/contract/revenue-contract/ContractDetail.vue b/src/views/project-management/contract/revenue-contract/ContractDetail.vue index 56f99f1..8ac7258 100644 --- a/src/views/project-management/contract/revenue-contract/ContractDetail.vue +++ b/src/views/project-management/contract/revenue-contract/ContractDetail.vue @@ -18,6 +18,10 @@ ¥{{ (contractDetail.amount || 0).toLocaleString() }} + + {{ contractDetail.category || '-' }} + + ¥{{ (contractDetail.receivedAmount || 0).toLocaleString() }} @@ -74,6 +78,7 @@ interface ContractDetail { code: string projectId: string type: string + category?: string productService: string paymentDate: string | null performanceDeadline: string | null diff --git a/src/views/project-management/contract/revenue-contract/ContractEdit.vue b/src/views/project-management/contract/revenue-contract/ContractEdit.vue index d1a4ae5..d5be870 100644 --- a/src/views/project-management/contract/revenue-contract/ContractEdit.vue +++ b/src/views/project-management/contract/revenue-contract/ContractEdit.vue @@ -46,6 +46,20 @@ + + + + + 框架协议 + 单次合同 + 三年长协 + 两年长协 + 派工单 + + + + + diff --git a/src/views/project-management/contract/revenue-contract/index.vue b/src/views/project-management/contract/revenue-contract/index.vue index eaa3b9a..69e4bbb 100644 --- a/src/views/project-management/contract/revenue-contract/index.vue +++ b/src/views/project-management/contract/revenue-contract/index.vue @@ -136,6 +136,7 @@ interface ContractItem { code: string projectId: string type: string + category?: string productService: string paymentDate: string | null performanceDeadline: string | null @@ -166,6 +167,7 @@ const searchForm = reactive({ contractCode: '', client: '', status: '', + category: '', signDateRange: [] as [string, string] | [], page: 1, size: 10, @@ -186,6 +188,17 @@ const queryFormColumns = [ ], }, }, + { field: 'category', label: '合同类别', type: 'select' as const, props: { + placeholder: '请选择合同类别', + options: [ + { label: '框架协议', value: '框架协议' }, + { label: '单次合同', value: '单次合同' }, + { label: '三年长协', value: '三年长协' }, + { label: '两年长协', value: '两年长协' }, + { label: '派工单', value: '派工单' }, + ], + } + }, { field: 'signDateRange', label: '签署时间', type: 'range-picker' as const, props: { placeholder: ['开始日期', '结束日期'], format: 'YYYY-MM-DD', } @@ -198,6 +211,7 @@ const tableColumns: TableColumnData[] = [ { title: '项目名称', dataIndex: 'projectName', width: 250, ellipsis: true, tooltip: true }, { title: '客户名称', dataIndex: 'customer', width: 200, ellipsis: true, tooltip: true }, { title: '合同金额', dataIndex: 'amount', slotName: 'contractAmount', width: 120 }, + { title: '合同类别', dataIndex: 'category', width: 120 }, { title: '已收款金额', dataIndex: 'receivedAmount', slotName: 'receivedAmount', width: 120 }, { title: '未收款金额', dataIndex: 'pendingAmount', width: 120 }, { title: '签署日期', dataIndex: 'signDate', slotName: 'signDate', width: 120 }, @@ -312,6 +326,9 @@ const fetchContractList = async () => { pageSize: searchForm.size, code: searchForm.contractCode, customer: searchForm.client, + + category: (searchForm as any).category || undefined, + contractStatus: searchForm.status, signDateStart: Array.isArray(searchForm.signDateRange) && searchForm.signDateRange.length === 2 ? searchForm.signDateRange[0] : undefined, signDateEnd: Array.isArray(searchForm.signDateRange) && searchForm.signDateRange.length === 2 ? searchForm.signDateRange[1] : undefined, @@ -393,6 +410,7 @@ const reset = () => { contractCode: '', client: '', status: '', + category: '', signDateRange: [], page: 1, size: 10, @@ -421,6 +439,7 @@ const showAddModal = ref(false) const newContractData = ref({ contractId: '', customer: '', code: '', projectId: '', type: '收入合同', productService: '', paymentDate: null, performanceDeadline: null, + category: '', paymentAddress: '', amount: 0, accountNumber: '', notes: '', contractStatus: '未执行', contractText: '', projectName: '', salespersonName: null, salespersonDeptName: '', settlementAmount: null, @@ -432,6 +451,7 @@ const openAddModal = () => { Object.assign(newContractData.value, { contractId: '', customer: '', code: '', projectId: '', type: '收入合同', productService: '', paymentDate: null, performanceDeadline: null, + category: '', paymentAddress: '', amount: 0, accountNumber: '', notes: '', contractStatus: '未执行', contractText: '', projectName: '', salespersonName: null, salespersonDeptName: '', settlementAmount: null, @@ -464,6 +484,7 @@ const handleAddSubmit = async () => { // 新建时不传 projectId,而是传项目名称 projectName: newContractData.value.projectName || '', salespersonId: (newContractData.value as any).salespersonId || '', + category: newContractData.value.category || '', signDate: newContractData.value.signDate || null, type: newContractData.value.type || '收入合同', } @@ -534,6 +555,7 @@ const handleEditSubmit = async () => { productService: editedContractData.value.productService || '', projectId: editedContractData.value.projectId || '', salespersonId: editedContractData.value.salespersonId || '', + category: editedContractData.value.category || '', signDate: editedContractData.value.signDate || null, type: editedContractData.value.type || '', }; diff --git a/src/views/system/role/RoleAddDrawer.vue b/src/views/system/role/RoleAddDrawer.vue index f3ea6e2..e44f9d9 100644 --- a/src/views/system/role/RoleAddDrawer.vue +++ b/src/views/system/role/RoleAddDrawer.vue @@ -22,8 +22,8 @@ - - + + diff --git a/src/views/system/user/UserAddDrawer.vue b/src/views/system/user/UserAddDrawer.vue index addf87d..2ff5d83 100644 --- a/src/views/system/user/UserAddDrawer.vue +++ b/src/views/system/user/UserAddDrawer.vue @@ -15,6 +15,7 @@