修改
This commit is contained in:
+18
-47
@@ -62,12 +62,6 @@
|
||||
<div class="balance-sub" :style="tempCreditPeriodExpired ? 'color: var(--el-color-danger);' : ''">{{ tempCreditPeriodText }}</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
<el-col :xs="12" :sm="8" :md="4">
|
||||
<el-card shadow="hover" class="balance-card">
|
||||
<div class="balance-label">已用额度</div>
|
||||
<div class="balance-value danger">{{ formatMoney(currentAccount.usedCredit) }}</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
<el-col :xs="12" :sm="8" :md="4">
|
||||
<el-card shadow="hover" class="balance-card">
|
||||
<div class="balance-label">可用额度</div>
|
||||
@@ -796,7 +790,7 @@
|
||||
>
|
||||
<el-alert type="info" :closable="false" class="credit-tip">
|
||||
<div>当前{{ creditDialog.form.creditType === 'TEMP' ? '临时额度' : '信用额度' }}:
|
||||
<b>{{ formatMoney(creditBefore) }}</b>,已用额度:<b>{{ formatMoney(currentAccount.usedCredit) }}</b></div>
|
||||
<b>{{ formatMoney(creditBefore) }}</b>,账户余额:<b>{{ formatMoney(currentAccount.balance) }}</b>,可用额度:<b>{{ availableCredit }}</b></div>
|
||||
</el-alert>
|
||||
<el-form ref="creditFormRef" :model="creditDialog.form" :rules="creditRules" label-width="100px">
|
||||
<el-row>
|
||||
@@ -853,7 +847,7 @@
|
||||
<div class="rate-tip">
|
||||
{{ creditDialog.form.creditType === 'TEMP'
|
||||
? '失效日当天仍有效,次日访问账户时自动清零并记到期流水'
|
||||
: '信用额度失效日期必填;失效日当天仍有效,次日自动清零,已用额度未回款时将形成超额欠费(可继续计费,请及时催收)' }}
|
||||
: '信用额度失效日期必填;失效日当天仍有效,次日自动清零;额度失效后可用额度相应减少,若账户余额为负将形成欠费(可继续计费,请及时催收回款)' }}
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@@ -877,17 +871,12 @@
|
||||
<b :class="creditAfter < 0 ? 'money-out' : 'money-in'">{{ formatMoney(creditAfter) }}</b>
|
||||
</div>
|
||||
<div>调整后授信总额:<b>{{ formatMoney(totalCreditAfter) }}</b>
|
||||
(可用 = 授信总额 - 已用 {{ formatMoney(currentAccount.usedCredit) }})</div>
|
||||
(可用 = 账户余额 {{ formatMoney(currentAccount.balance) }} + 授信总额 + 额外额度)</div>
|
||||
<el-alert
|
||||
v-if="creditAfter < 0"
|
||||
type="error" :closable="false"
|
||||
title="调整后额度不能为负数" class="credit-alert"
|
||||
/>
|
||||
<el-alert
|
||||
v-else-if="totalCreditAfter < (Number(currentAccount.usedCredit) || 0)"
|
||||
type="error" :closable="false"
|
||||
title="授信总额不能小于已用额度" class="credit-alert"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<template #footer>
|
||||
@@ -960,9 +949,9 @@
|
||||
placeholder="选填,最多255字" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-alert type="warning" :closable="false">
|
||||
<el-alert type="info" :closable="false">
|
||||
<template title>
|
||||
核销后账户余额变为 CNY {{ woAfterBalance }},同步释放等额已用额度;余额不足时无法提交。
|
||||
核销仅更新账单已核销/未核销金额与状态,不再扣减账户余额;资金变动由收款/计费入口产生。
|
||||
</template>
|
||||
</el-alert>
|
||||
<template #footer>
|
||||
@@ -975,8 +964,8 @@
|
||||
<el-dialog title="反核销(取消余额核销)" v-model="cancelWoDialog.visible" width="480px" append-to-body>
|
||||
<el-alert type="warning" :closable="false" class="credit-tip">
|
||||
<span v-if="cancelWoDialog.row">
|
||||
反核销后,核销金额 CNY {{ formatMoney(cancelWoDialog.row.writeoffAmount) }} 将退回客户账户余额,
|
||||
账单「{{ cancelWoDialog.row.billNo }}」恢复为未核销,已用额度同步加回。
|
||||
反核销后,账单「{{ cancelWoDialog.row.billNo }}」恢复为未核销状态(核销金额 CNY {{ formatMoney(cancelWoDialog.row.writeoffAmount) }});
|
||||
口径变更后不再回补账户余额、不再变动已用额度。
|
||||
</span>
|
||||
</el-alert>
|
||||
<el-form label-width="100px" class="wo-form">
|
||||
@@ -1090,8 +1079,9 @@ function creditChangeTag(v) {
|
||||
return { INIT: '', ADJUST: 'primary', EXPIRE: 'danger', OCCUPY: 'warning', RELEASE: 'success' }[v] || 'info'
|
||||
}
|
||||
/**
|
||||
* 是否为授信占用/释放流水。
|
||||
* 占用/释放流水的 变动前/变动额/变动后 记的是【已用额度】维度;
|
||||
* 是否为授信占用/释放流水(历史数据)。
|
||||
* 口径变更(2026-09-23)后计费不再产生 OCCUPY/RELEASE 流水,改为写余额流水;
|
||||
* 历史占用/释放流水的 变动前/变动额/变动后 记的是【已用额度】维度,
|
||||
* INIT/ADJUST/EXPIRE 流水这三列记的是【授信额度】(信用/临时额度)维度。
|
||||
*/
|
||||
function isCreditUsageFlow(changeType) {
|
||||
@@ -1127,17 +1117,17 @@ const currentAccount = computed(() => {
|
||||
return accountList.value.find(a => a.currency === 'CNY') || {}
|
||||
})
|
||||
|
||||
/** 可用额度数值 = 总额度 + 临时额度 - 已用额度(可能为负,表示临时额度到期/占用超授信总额) */
|
||||
/** 可用额度数值 = 账户余额 + 信用额度 + 额外额度(可能为负,表示欠费;口径变更后不再扣减已用额度) */
|
||||
const availableCreditValue = computed(() => {
|
||||
const a = currentAccount.value
|
||||
const balance = Number(a.balance) || 0
|
||||
const total = Number(a.totalCredit) || 0
|
||||
const extra = Number(a.extraCredit) || 0
|
||||
const used = Number(a.usedCredit) || 0
|
||||
return total + extra - used
|
||||
return balance + total + extra
|
||||
})
|
||||
/** 可用额度展示文本 */
|
||||
const availableCredit = computed(() => formatMoney(availableCreditValue.value))
|
||||
/** 是否处于超额状态(已用额度超过授信总额,可用为负;不拦截计费,后续做超额提醒) */
|
||||
/** 是否处于欠费状态(可用额度为负;不拦截计费,允许负余额继续计费) */
|
||||
const availableOverLimit = computed(() => availableCreditValue.value < 0)
|
||||
|
||||
/** 临时额度有效期文案 */
|
||||
@@ -1274,11 +1264,6 @@ function submitAdjustCredit() {
|
||||
proxy.$modal.msgError('调整后额度不能为负数')
|
||||
return
|
||||
}
|
||||
const used = Number(currentAccount.value.usedCredit) || 0
|
||||
if (totalCreditAfter.value < used) {
|
||||
proxy.$modal.msgError('调整后授信总额不能小于已用额度 ' + formatMoney(used))
|
||||
return
|
||||
}
|
||||
if (creditAfter.value === creditBefore.value) {
|
||||
proxy.$modal.msgError('额度未发生变化,无需调整')
|
||||
return
|
||||
@@ -1852,12 +1837,6 @@ function loadBillWriteoffData() {
|
||||
const woSubmitLoading = ref(false)
|
||||
const woDialog = reactive({ visible: false, bill: null, form: {}, accountLoading: false })
|
||||
let writeoffAccountRequestSerial = 0
|
||||
/** 核销后余额预览(不为负则可提交) */
|
||||
const woAfterBalance = computed(() => {
|
||||
const balance = Number(currentAccount.value.balance) || 0
|
||||
const amount = Number(woDialog.form.writeoffAmount) || 0
|
||||
return formatMoney(balance - amount)
|
||||
})
|
||||
|
||||
async function openWriteoffDialog(row) {
|
||||
const customerId = Number(route.query.customerId)
|
||||
@@ -1868,28 +1847,25 @@ async function openWriteoffDialog(row) {
|
||||
|
||||
woDialog.bill = row
|
||||
const unwritten = Number(row.unwrittenAmount) || 0
|
||||
// 口径变更后核销不再扣减余额,默认核销金额取账单未核销金额
|
||||
woDialog.form = {
|
||||
arBillId: row.arBillId,
|
||||
customerId,
|
||||
// 余额接口返回前先显示 0,避免使用旧余额或在余额为 0 时错误带出整笔未核销金额。
|
||||
writeoffAmount: 0,
|
||||
writeoffAmount: unwritten,
|
||||
writeoffDate: proxy.parseTime(new Date(), '{y}-{m}-{d}'),
|
||||
remark: ''
|
||||
}
|
||||
woDialog.visible = true
|
||||
|
||||
// 必须等待余额刷新完成后再计算默认金额,避免异步请求尚未返回就读取旧余额。
|
||||
// 仍刷新账户余额供展示,但不再限制核销金额
|
||||
const requestSerial = ++writeoffAccountRequestSerial
|
||||
woDialog.accountLoading = true
|
||||
try {
|
||||
const res = await listAccount(customerId)
|
||||
if (requestSerial !== writeoffAccountRequestSerial) return
|
||||
accountList.value = res.data || []
|
||||
const balance = Math.max(0, Number(currentAccount.value.balance) || 0)
|
||||
woDialog.form.writeoffAmount = Math.min(unwritten, balance)
|
||||
} catch (e) {
|
||||
if (requestSerial !== writeoffAccountRequestSerial) return
|
||||
woDialog.form.writeoffAmount = 0
|
||||
proxy.$modal.msgError('账户余额刷新失败,请稍后重试')
|
||||
} finally {
|
||||
if (requestSerial === writeoffAccountRequestSerial) woDialog.accountLoading = false
|
||||
@@ -1915,11 +1891,6 @@ function submitWriteoff() {
|
||||
proxy.$modal.msgError('核销金额不能超过账单未核销金额 ' + formatMoney(unwritten))
|
||||
return
|
||||
}
|
||||
const balance = Number(currentAccount.value.balance) || 0
|
||||
if (amount > balance) {
|
||||
proxy.$modal.msgError('账户余额不足,当前余额 CNY ' + formatMoney(balance) + ',请先登记收款并审核')
|
||||
return
|
||||
}
|
||||
woSubmitLoading.value = true
|
||||
balanceWriteoff(woDialog.form).then(() => {
|
||||
proxy.$modal.msgSuccess('核销成功:账单已核销 CNY ' + formatMoney(amount))
|
||||
@@ -1949,7 +1920,7 @@ function submitCancelWriteoff() {
|
||||
}
|
||||
cancelWoLoading.value = true
|
||||
cancelBalanceWriteoff(cancelWoDialog.row.writeoffId, remark).then(() => {
|
||||
proxy.$modal.msgSuccess('反核销成功,余额已退回')
|
||||
proxy.$modal.msgSuccess('反核销成功,账单已恢复未核销')
|
||||
cancelWoDialog.visible = false
|
||||
loadBillWriteoffData()
|
||||
getFlowList()
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
<el-table-column v-if="isColVisible('creditEd')" label="信用额度" align="center" prop="creditEd">
|
||||
<template #default="scope">
|
||||
<span v-if="Number(scope.row.creditEd) < 0" style="color: var(--el-color-danger); font-weight: 600;"
|
||||
title="已用额度超过授信总额(如临时额度已到期),客户回款核销后恢复">
|
||||
title="信用额度异常(如临时额度到期失效),请核查客户额度">
|
||||
{{ scope.row.creditEd }}
|
||||
</span>
|
||||
<span v-else>{{ scope.row.creditEd }}</span>
|
||||
|
||||
Reference in New Issue
Block a user