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 <cursoragent@cursor.com>
This commit is contained in:
1 parent
5b7a9f2f8f
commit
8f032488a4
1 file changed
+25
-8
@@ -291,6 +291,7 @@
|
||||
<th class="col-expense">费用项目<span class="th-required">*</span></th>
|
||||
<th class="col-amount">金额(元)<span class="th-required">*</span></th>
|
||||
<th class="col-remark">报销事由<span class="th-required">*</span></th>
|
||||
<th class="col-occur">发生时间</th>
|
||||
<th class="col-action">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -321,6 +322,16 @@
|
||||
<td class="col-remark">
|
||||
<el-input v-model="line.remark" placeholder="请输入报销事由" />
|
||||
</td>
|
||||
<td class="col-occur">
|
||||
<el-date-picker
|
||||
v-model="line.occurDate"
|
||||
type="date"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="可选"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
/>
|
||||
</td>
|
||||
<td class="col-action">
|
||||
<el-button
|
||||
v-if="addForm.details.length > 1"
|
||||
@@ -523,6 +534,9 @@
|
||||
<el-table-column prop="remark" label="报销事由" min-width="140" align="left" header-align="center">
|
||||
<template #default="{ row }">{{ row.remark || '-' }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="occurDate" label="发生时间" min-width="120" align="center" header-align="center">
|
||||
<template #default="{ row }">{{ row.occurDate || '—' }}</template>
|
||||
</el-table-column>
|
||||
</ListTable>
|
||||
</div>
|
||||
|
||||
@@ -649,6 +663,7 @@ interface DetailLine {
|
||||
expenseItemId: string
|
||||
amount: number | string
|
||||
remark: string
|
||||
occurDate: string
|
||||
}
|
||||
|
||||
const loadingMap = reactive<Record<string, boolean>>({})
|
||||
@@ -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<Record<string, any>>({})
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user