|
|
@@ -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
|
|
|
}
|