@@ -3,10 +3,10 @@
|
||||
<el-dialog v-model="dialogOpen" class="generate-dialog" title="生成应收账单" width="1200px" append-to-body destroy-on-close>
|
||||
<el-form ref="generateFormRef" :model="generateForm" :rules="generateRules" label-width="110px" class="generate-form">
|
||||
<el-row :gutter="16">
|
||||
<el-col :span="8"><el-form-item label="客户" prop="customerId"><customer-select :fetch-options="listArBillGenerateCustomerOptions" v-model="generateForm.customerId" placeholder="请输入客户名称或代码搜索" :remote-search="true" :page-size="20" @change="handleCustomerChange" /></el-form-item></el-col>
|
||||
<el-col :span="8"><el-form-item label="币种" prop="currency"><el-select v-model="generateForm.currency" placeholder="请选择币种" style="width: 100%;" @change="handleCurrencyChange"><el-option label="人民币 CNY" value="CNY" /><el-option label="美元 USD" value="USD" /></el-select></el-form-item></el-col>
|
||||
<el-col :span="8"><el-form-item label="账单截止日" prop="cutoffDate"><el-date-picker v-model="generateForm.cutoffDate" type="date" value-format="YYYY-MM-DD" placeholder="请选择账单截止日" style="width: 100%;" @change="resetPreview" /></el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-col :span="6"><el-form-item label="客户" prop="customerId"><customer-select :fetch-options="listArBillGenerateCustomerOptions" v-model="generateForm.customerId" placeholder="请输入客户名称或代码搜索" :remote-search="true" :page-size="20" @change="handleCustomerChange" /></el-form-item></el-col>
|
||||
<el-col :span="7"><el-form-item label="币种" prop="currency"><el-select v-model="generateForm.currency" placeholder="请选择币种" style="width: 100%;" @change="handleCurrencyChange"><el-option label="人民币 CNY" value="CNY" /><el-option label="美元 USD" value="USD" /></el-select></el-form-item></el-col>
|
||||
<el-col :span="11"><el-form-item label="账单截止日" prop="cutoffDate"><div class="cutoff-date-controls"><el-select v-model="generateForm.dateType" class="cutoff-date-type" @change="resetPreview"><el-option label="计费时间" value="BIZ_DATE" /><el-option label="收货时间" value="PICKUP_DATE" /></el-select><el-date-picker v-model="generateForm.cutoffDate" class="cutoff-date-picker" type="date" value-format="YYYY-MM-DD" placeholder="请选择账单截止日" @change="resetPreview" /></div></el-form-item></el-col>
|
||||
<el-col :span="9">
|
||||
<el-form-item label="单号">
|
||||
<div class="order-identifier-input">
|
||||
<el-input v-model="generateForm.orderOrTrackingNo" type="textarea" :rows="4" resize="vertical" placeholder="请输入订单号、运单号或转单号" clearable />
|
||||
@@ -70,7 +70,7 @@
|
||||
<el-table-column prop="trackingNo" label="运单号" min-width="140" show-overflow-tooltip />
|
||||
<el-table-column prop="transferNo" label="转单号" min-width="240" show-overflow-tooltip />
|
||||
<el-table-column prop="customerName" label="客户" min-width="130" show-overflow-tooltip />
|
||||
<el-table-column prop="bizDate" label="业务日期" width="170" :formatter="formatDateColumn" />
|
||||
<el-table-column :prop="dateColumnProp" :label="dateColumnLabel" width="170" :formatter="formatDateColumn" />
|
||||
<el-table-column prop="productName" label="产品" min-width="140" show-overflow-tooltip />
|
||||
<el-table-column prop="countryName" label="国家/地区" min-width="110" show-overflow-tooltip />
|
||||
<el-table-column prop="actualWeight" label="实际重(kg)" width="105" align="right" :formatter="formatNumberColumn" />
|
||||
@@ -110,7 +110,7 @@
|
||||
<el-table-column prop="trackingNo" label="运单号" min-width="180" show-overflow-tooltip />
|
||||
<el-table-column prop="transferNo" label="转单号" min-width="180" show-overflow-tooltip />
|
||||
<el-table-column prop="customerName" label="客户" min-width="150" show-overflow-tooltip />
|
||||
<el-table-column prop="bizDate" label="业务日期" width="170" :formatter="formatDateColumn" />
|
||||
<el-table-column :prop="dateColumnProp" :label="dateColumnLabel" width="170" :formatter="formatDateColumn" />
|
||||
<el-table-column prop="incomeTotal" label="应收金额" width="130" align="right" :formatter="formatNumberColumn" />
|
||||
<el-table-column prop="currency" label="币种" width="80" />
|
||||
</el-table>
|
||||
@@ -202,7 +202,7 @@ const bankAccount = ref(null)
|
||||
const generateRequestId = ref('')
|
||||
const generateFormRef = ref()
|
||||
const billNameFormRef = ref()
|
||||
const generateForm = reactive({ customerId: '', customerCode: '', customerName: '', cutoffDate: '', currency: 'CNY', orderOrTrackingNo: '' })
|
||||
const generateForm = reactive({ customerId: '', customerCode: '', customerName: '', cutoffDate: '', dateType: 'BIZ_DATE', currency: 'CNY', orderOrTrackingNo: '' })
|
||||
const billNameForm = reactive({ billName: '' })
|
||||
const generateRules = {
|
||||
customerId: [{ required: true, message: '客户不能为空', trigger: 'change' }],
|
||||
@@ -211,6 +211,8 @@ const generateRules = {
|
||||
}
|
||||
const billNameRules = { billName: [{ required: true, message: '请输入账单名称', trigger: 'blur' }] }
|
||||
const selectedAmount = computed(() => selectedRows.value.reduce((sum, row) => sum + (Number(row.incomeTotal) || 0), 0))
|
||||
const dateColumnProp = computed(() => generateForm.dateType === 'PICKUP_DATE' ? 'pickupDate' : 'bizDate')
|
||||
const dateColumnLabel = computed(() => generateForm.dateType === 'PICKUP_DATE' ? '收货时间' : '计费时间')
|
||||
const allSelected = computed(() => selectionMode.value === AR_BILL_SELECTION_MODE.ALL_MATCHED)
|
||||
const displaySelectedCount = computed(() => selectionMode.value === AR_BILL_SELECTION_MODE.ALL_MATCHED
|
||||
? Math.max(previewTotal.value - confirmedExcludeCount.value, 0) : selectedRows.value.length)
|
||||
@@ -225,7 +227,7 @@ watch(() => props.modelValue, visible => {
|
||||
|
||||
// 每次打开生成弹窗都重新建立一次查询快照,避免复用上一次的选中订单。
|
||||
function openGenerate() {
|
||||
Object.assign(generateForm, { customerId: '', customerCode: '', customerName: '', cutoffDate: '', currency: 'CNY', orderOrTrackingNo: '' })
|
||||
Object.assign(generateForm, { customerId: '', customerCode: '', customerName: '', cutoffDate: '', dateType: 'BIZ_DATE', currency: 'CNY', orderOrTrackingNo: '' })
|
||||
Object.assign(billNameForm, { billName: '' })
|
||||
billNameOpen.value = false
|
||||
resetPreview()
|
||||
@@ -290,6 +292,7 @@ function buildGenerateQuery() {
|
||||
customerCode: generateForm.customerCode?.trim() || undefined,
|
||||
customerName: generateForm.customerName?.trim() || undefined,
|
||||
billPeriodEnd: generateForm.cutoffDate,
|
||||
dateType: generateForm.dateType || 'BIZ_DATE',
|
||||
currency: generateForm.currency || undefined,
|
||||
orderOrTrackingNo: generateForm.orderOrTrackingNo?.trim() || undefined
|
||||
}
|
||||
@@ -546,6 +549,9 @@ function createRequestId() { return globalThis.crypto?.randomUUID?.() || `ar-${D
|
||||
.generate-dialog :deep(.el-dialog__body) { padding: 18px 24px 10px; }
|
||||
.generate-form { padding: 4px 6px 0; border: 1px solid var(--el-border-color-lighter); border-radius: 8px; background: var(--el-fill-color-blank); }
|
||||
.generate-form :deep(.el-form-item) { margin-bottom: 16px; }
|
||||
.cutoff-date-controls { display: flex; align-items: center; width: 100%; gap: 8px; }
|
||||
.cutoff-date-type { flex: 0 0 120px; }
|
||||
.cutoff-date-picker { flex: 1 1 auto; min-width: 180px; }
|
||||
.order-identifier-input { position: relative; width: 100%; }
|
||||
.order-identifier-input :deep(.el-textarea__inner) { padding-right: 48px; }
|
||||
.order-identifier-clear { position: absolute; top: 4px; right: 6px; z-index: 1; padding: 2px 4px; }
|
||||
|
||||
Reference in New Issue
Block a user