✨ 完善付款申请多结算行、结算导入编辑与计费规则展示
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -860,11 +860,14 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="运输单价" min-width="140" align="center">
|
||||
<template #default="{ row }">
|
||||
<span v-if="isTierUnitPrice(row)">-</span>
|
||||
<el-input-number
|
||||
v-else
|
||||
v-model="row.unitPrice"
|
||||
:min="0"
|
||||
:precision="2"
|
||||
:controls="false"
|
||||
:disabled="!isUnitPriceAdjustable(row)"
|
||||
@change="recalculateAdjustRow(row, 'unitPrice')"
|
||||
/>
|
||||
</template>
|
||||
@@ -1037,6 +1040,7 @@ import { getDictionary } from '@/api/system/dictbiz';
|
||||
import { h } from 'vue';
|
||||
import { mapGetters } from 'vuex';
|
||||
import { formatContractOptionLabel } from '@/utils/contract';
|
||||
import { isTierUnitPrice, isUnitPriceAdjustable } from '@/utils/settlement-adjust-rule';
|
||||
import { normalizeCurrencyCode } from '@/utils/currency';
|
||||
import { downloadFileByUrl } from '@/utils/util';
|
||||
import {
|
||||
@@ -1318,6 +1322,8 @@ export default {
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
isTierUnitPrice,
|
||||
isUnitPriceAdjustable,
|
||||
formatContractOptionLabel,
|
||||
hasPermission(code) {
|
||||
if (this.isAdmin) return true;
|
||||
@@ -2128,15 +2134,21 @@ export default {
|
||||
const settlementType = row.settlementType || this.form.settlementType || 'payable';
|
||||
const detailId = await resolveReceivablePayableDetailId(row, settlementType);
|
||||
if (!detailId) return this.$message.info('当前记录未找到对应的应收/应付明细');
|
||||
this.$router.push({ path: settlementDetailPath(settlementType), query: { detailId } });
|
||||
await this.$router.push({ path: settlementDetailPath(settlementType), query: { detailId } });
|
||||
this.closeDetailDialog();
|
||||
return;
|
||||
}
|
||||
if (column.prop === 'waybillNo') {
|
||||
const waybillId = await resolveWaybillId(row);
|
||||
if (!waybillId) return this.$message.info('当前记录未找到对应的运单详情');
|
||||
this.$router.push({ path: '/business/waybill-manage/detail', query: { id: waybillId } });
|
||||
await this.$router.push({ path: '/business/waybill-manage/detail', query: { id: waybillId } });
|
||||
this.closeDetailDialog();
|
||||
}
|
||||
},
|
||||
closeDetailDialog() {
|
||||
if (this.pageMode) return;
|
||||
this.visible = false;
|
||||
},
|
||||
resetDetailQuery(apply = true) {
|
||||
this.detailQuery = { documentNo: '', waybillNo: '', batchNo: '', cargoName: '' };
|
||||
if (apply) this.handleDetailQuery();
|
||||
@@ -2260,11 +2272,16 @@ export default {
|
||||
row.settlementAmountTax = Number(
|
||||
(hasFreightItem ? feeItemTotal : Number(row.freightAmount || 0) + feeItemTotal).toFixed(2)
|
||||
);
|
||||
if (changedField && this.adjust.sourceDetailId && (row.sourceFeeId || row.id)) {
|
||||
this.scheduleSourceAdjustCalculation(row);
|
||||
if (
|
||||
['transportQuantity', 'mileage', 'unitPrice'].includes(changedField) &&
|
||||
this.adjust.sourceDetailId &&
|
||||
(row.sourceFeeId || row.id) &&
|
||||
(changedField !== 'unitPrice' || isUnitPriceAdjustable(row))
|
||||
) {
|
||||
this.scheduleSourceAdjustCalculation(row, changedField);
|
||||
}
|
||||
},
|
||||
scheduleSourceAdjustCalculation(row) {
|
||||
scheduleSourceAdjustCalculation(row, changedField) {
|
||||
if (row.adjustCalculateTimer) clearTimeout(row.adjustCalculateTimer);
|
||||
row.adjustCalculateVersion = Number(row.adjustCalculateVersion || 0) + 1;
|
||||
row.calculating = true;
|
||||
@@ -2277,6 +2294,8 @@ export default {
|
||||
feeId: row.sourceFeeId || row.id,
|
||||
transportQuantity: Number(row.transportQuantity || 0),
|
||||
mileage: Number(row.mileage || 0),
|
||||
unitPrice: row.unitPrice === null || row.unitPrice === '' ? null : Number(row.unitPrice),
|
||||
changedField,
|
||||
freightAmount: Number(row.freightAmount || 0),
|
||||
feeItems: Object.fromEntries(
|
||||
Object.entries(row.feeItems || {}).map(([name, amount]) => [name, Number(amount || 0)])
|
||||
@@ -2288,6 +2307,9 @@ export default {
|
||||
row.feeItems = Object.fromEntries(
|
||||
Object.entries(data.feeItems || {}).map(([name, amount]) => [name, Number(amount || 0)])
|
||||
);
|
||||
if (!isTierUnitPrice(row) && data.unitPrice !== undefined && data.unitPrice !== null) {
|
||||
row.unitPrice = Number(data.unitPrice);
|
||||
}
|
||||
row.adjustAmount = Number(data.adjustAmount || 0);
|
||||
row.settlementAmountTax = Number(data.afterAmount || 0);
|
||||
} catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user