From 8f032488a4fc662d7c56b7322f3d948b217fd021 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Mon, 17 Aug 2026 16:00:01 +0800 Subject: [PATCH] feat(web-admin): add optional occur date on reimburse apply details Allow picking YYYY-MM-DD per detail line and show it in the view dialog. Co-authored-by: Cursor --- .../src/views/bx/reimburse/apply/index.vue | 33 ++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/web-admin/src/views/bx/reimburse/apply/index.vue b/web-admin/src/views/bx/reimburse/apply/index.vue index f312e053e..28e8b4166 100644 --- a/web-admin/src/views/bx/reimburse/apply/index.vue +++ b/web-admin/src/views/bx/reimburse/apply/index.vue @@ -291,6 +291,7 @@ 费用项目* 金额(元)* 报销事由* + 发生时间 操作 @@ -321,6 +322,16 @@ + + + + + + @@ -649,6 +663,7 @@ interface DetailLine { expenseItemId: string amount: number | string remark: string + occurDate: string } const loadingMap = reactive>({}) @@ -759,7 +774,7 @@ const addForm = reactive({ reimburseDate: todayYmd(), title: '', remark: '', - details: [{ expenseItemId: '', amount: '' as number | string, remark: '' }] as DetailLine[] + details: [{ expenseItemId: '', amount: '' as number | string, remark: '', occurDate: '' }] as DetailLine[] }) const viewData = ref>({}) @@ -1014,7 +1029,7 @@ async function openAddDialog() { addForm.reimburseDate = todayYmd() addForm.title = '' addForm.remark = '' - addForm.details = [{ expenseItemId: '', amount: '', remark: '' }] + addForm.details = [{ expenseItemId: '', amount: '', remark: '', occurDate: '' }] selectedInvoicePicks.value = [] editingId.value = null titleAutoLinked.value = true @@ -1100,10 +1115,11 @@ async function openEditDialog(row: any) { addForm.details = (data.details || []).map((d: any) => ({ expenseItemId: d.expenseId, amount: d.amount, - remark: d.remark || '' + remark: d.remark || '', + occurDate: d.occurDate || '' })) if (addForm.details.length === 0) { - addForm.details = [{ expenseItemId: '', amount: '', remark: '' }] + addForm.details = [{ expenseItemId: '', amount: '', remark: '', occurDate: '' }] } editingId.value = row.id const invoices = Array.isArray(data.invoices) ? data.invoices : [] @@ -1119,7 +1135,7 @@ async function openEditDialog(row: any) { } function addDetailLine() { - addForm.details.push({ expenseItemId: '', amount: '', remark: '' }) + addForm.details.push({ expenseItemId: '', amount: '', remark: '', occurDate: '' }) } function removeDetailLine(index: number) { @@ -1227,7 +1243,7 @@ type AddPayload = { remark: string invoiceIds: string[] invoiceLinks: { invoiceId: string; attachmentId: string }[] - details: { expenseItemId: string; amount: number; remark: string }[] + details: { expenseItemId: string; amount: number; remark: string; occurDate?: string }[] } function buildAddPayload(): AddPayload | null { @@ -1256,7 +1272,8 @@ function buildAddPayload(): AddPayload | null { details: validDetails.map((d) => ({ expenseItemId: String(d.expenseItemId), amount: Number(d.amount), - remark: String(d.remark).trim() + remark: String(d.remark).trim(), + occurDate: d.occurDate ? String(d.occurDate) : undefined })) } } @@ -1267,7 +1284,7 @@ function resetAddForm() { addForm.reimburseDate = todayYmd() addForm.title = '' addForm.remark = '' - addForm.details = [{ expenseItemId: '', amount: '', remark: '' }] + addForm.details = [{ expenseItemId: '', amount: '', remark: '', occurDate: '' }] selectedInvoicePicks.value = [] editingId.value = null }