diff --git a/src/views/project-management/contract/expense-contract/ContractDetail.vue b/src/views/project-management/contract/expense-contract/ContractDetail.vue index dbba383..56f99f1 100644 --- a/src/views/project-management/contract/expense-contract/ContractDetail.vue +++ b/src/views/project-management/contract/expense-contract/ContractDetail.vue @@ -50,6 +50,11 @@ {{ contractDetail.notes }} + + + {{ contractDetail.contractText || '—' }} + +
diff --git a/src/views/project-management/contract/expense-contract/ContractEdit.vue b/src/views/project-management/contract/expense-contract/ContractEdit.vue index d3d9c06..78278fe 100644 --- a/src/views/project-management/contract/expense-contract/ContractEdit.vue +++ b/src/views/project-management/contract/expense-contract/ContractEdit.vue @@ -7,16 +7,8 @@ - - + + diff --git a/src/views/project-management/contract/expense-contract/index.vue b/src/views/project-management/contract/expense-contract/index.vue index ccae4f8..ad3286e 100644 --- a/src/views/project-management/contract/expense-contract/index.vue +++ b/src/views/project-management/contract/expense-contract/index.vue @@ -426,7 +426,8 @@ const handleAddSubmit = async () => { paymentDate: newContractData.value.paymentDate || null, performanceDeadline: newContractData.value.performanceDeadline || null, productService: newContractData.value.productService || '', - projectId: newContractData.value.projectId || '', + // 新建时不传 projectId,而是传项目名称,后续立项再建项目 + projectName: newContractData.value.projectName || '', salespersonId: (newContractData.value as any).salespersonId || '', signDate: newContractData.value.signDate || null, type: newContractData.value.type || '支出合同', @@ -525,7 +526,7 @@ const handleEditSubmit = async () => { type: editedContractData.value.type || '', }; - console.log('Edited Contract Data:', requestData); // 打印请求数据以便调试 + // console.log('Edited Contract Data:', requestData); // 打印请求数据以便调试 // 修改此处,直接向 /contract 发送 PUT 请求 const response = await http.put('/contract', requestData); diff --git a/src/views/project-management/contract/revenue-contract/ContractDetail.vue b/src/views/project-management/contract/revenue-contract/ContractDetail.vue index dbba383..56f99f1 100644 --- a/src/views/project-management/contract/revenue-contract/ContractDetail.vue +++ b/src/views/project-management/contract/revenue-contract/ContractDetail.vue @@ -50,6 +50,11 @@ {{ contractDetail.notes }} + + + {{ contractDetail.contractText || '—' }} + +
diff --git a/src/views/project-management/contract/revenue-contract/ContractEdit.vue b/src/views/project-management/contract/revenue-contract/ContractEdit.vue index caf1c1c..b4802c6 100644 --- a/src/views/project-management/contract/revenue-contract/ContractEdit.vue +++ b/src/views/project-management/contract/revenue-contract/ContractEdit.vue @@ -7,16 +7,8 @@ - - + + diff --git a/src/views/project-management/contract/revenue-contract/index.vue b/src/views/project-management/contract/revenue-contract/index.vue index 1c80b57..6c70c57 100644 --- a/src/views/project-management/contract/revenue-contract/index.vue +++ b/src/views/project-management/contract/revenue-contract/index.vue @@ -148,38 +148,18 @@ interface ContractItem { // 搜索表单 const searchForm = reactive({ - contractName: '', contractCode: '', client: '', status: '', - signDate: '', + signDateRange: [] as [string, string] | [], page: 1, size: 10, }) // 查询条件配置 const queryFormColumns = [ - { - field: 'contractName', - label: '合同名称', - type: 'input' as const, - props: { - placeholder: '请输入合同名称', - }, - }, - { - field: 'client', - label: '客户', - type: 'input' as const, - props: { - placeholder: '请输入客户名称', - }, - }, - { - field: 'status', - label: '合同状态', - type: 'select' as const, - props: { + { field: 'client', label: '客户', type: 'input' as const, props: { placeholder: '请输入客户名称' } }, + { field: 'status', label: '合同状态', type: 'select' as const, props: { placeholder: '请选择合同状态', options: [ { label: '未确认', value: '未确认' }, @@ -191,6 +171,10 @@ const queryFormColumns = [ ], }, }, + { field: 'signDateRange', label: '签署时间', type: 'range-picker' as const, props: { + placeholder: ['开始时间', '结束时间'], showTime: true, format: 'YYYY-MM-DD HH:mm:ss', + } + }, ] // 表格列配置 @@ -222,27 +206,39 @@ const fetchContractList = async () => { const params = { page: searchForm.page, pageSize: searchForm.size, - contractName: searchForm.contractName, code: searchForm.contractCode, customer: searchForm.client, contractStatus: searchForm.status, - signDate: searchForm.signDate, + 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, } const response = await http.get('/contract/list', params) if (response.code === 200) { - // 过滤出类型为"收入合同"的数据 const allContracts = response.rows || [] - const revenueContracts = allContracts.filter((item: ContractItem) => item.type === '收入合同') + let revenueContracts = allContracts.filter((item: ContractItem) => item.type === '收入合同') + + // 如果后端未按时间段过滤,则在前端兜底过滤 + const range = Array.isArray(searchForm.signDateRange) && searchForm.signDateRange.length === 2 ? searchForm.signDateRange : null + if (range) { + const [start, end] = range + const s = new Date(start as any).getTime(), e = new Date(end as any).getTime() + if (!Number.isNaN(s) && !Number.isNaN(e)) { + revenueContracts = revenueContracts.filter((item: ContractItem) => { + if (!item.signDate) return false + const t = new Date(item.signDate as any).getTime() + return !Number.isNaN(t) && t >= s && t <= e + }) + } + } - // 计算未收款金额 dataList.value = revenueContracts.map((item: ContractItem) => ({ ...item, pendingAmount: (item.amount || 0) - (item.receivedAmount || 0), })) - pagination.total = Number.parseInt(response.total) || 0 + pagination.total = dataList.value.length } else { Message.error(response.msg || '获取合同列表失败') dataList.value = [] @@ -290,11 +286,10 @@ const search = async () => { const reset = () => { Object.assign(searchForm, { - contractName: '', contractCode: '', client: '', status: '', - signDate: '', + signDateRange: [], page: 1, size: 10, }) @@ -362,7 +357,8 @@ const handleAddSubmit = async () => { paymentDate: newContractData.value.paymentDate || null, performanceDeadline: newContractData.value.performanceDeadline || null, productService: newContractData.value.productService || '', - projectId: newContractData.value.projectId || '', + // 新建时不传 projectId,而是传项目名称 + projectName: newContractData.value.projectName || '', salespersonId: (newContractData.value as any).salespersonId || '', signDate: newContractData.value.signDate || null, type: newContractData.value.type || '收入合同',