From baef3688403d7fb1f6f752380aaf31a206494714 Mon Sep 17 00:00:00 2001
From: Maple <869445424@qq.com>
Date: Tue, 12 Aug 2025 10:27:00 +0800
Subject: [PATCH] =?UTF-8?q?fix:=E6=94=AF=E5=87=BA=E5=90=88=E5=90=8C?=
=?UTF-8?q?=E5=92=8C=E6=94=B6=E5=85=A5=E5=90=88=E5=90=8C=E7=9A=84=E5=AE=8C?=
=?UTF-8?q?=E5=96=84=EF=BC=8C=E4=BF=AE=E5=A4=8D=E4=BA=86=E4=B8=80=E4=BA=9B?=
=?UTF-8?q?bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../expense-contract/ContractDetail.vue | 5 ++
.../expense-contract/ContractEdit.vue | 12 +---
.../contract/expense-contract/index.vue | 5 +-
.../revenue-contract/ContractDetail.vue | 5 ++
.../revenue-contract/ContractEdit.vue | 12 +---
.../contract/revenue-contract/index.vue | 60 +++++++++----------
6 files changed, 45 insertions(+), 54 deletions(-)
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 || '收入合同',