fix: align audit and dispatch workflows and release failed requests
This commit is contained in:
@@ -83,7 +83,7 @@ async function uploadFiles() {
|
||||
pendingFiles.value.shift()
|
||||
}
|
||||
} catch (cause) { if (!disposed && scope === epoch) writeError.value = getApiErrorDetails(cause, '凭证上传未完成;已成功上传的凭证已保留,尚未登记付款') }
|
||||
finally { if (scope === epoch) uploading.value = false }
|
||||
finally { if (scope === epoch) { uploading.value = false; pendingFiles.value = [] } }
|
||||
}
|
||||
async function submit() {
|
||||
const chosen = pending.value?.action ?? action.value
|
||||
@@ -113,7 +113,7 @@ async function submit() {
|
||||
if (disposed || scope !== epoch) return
|
||||
if (cause instanceof ApiResponseError && (/^A04/.test(cause.code) || ['FIN_400', 'FIN_404', 'FIN_409'].includes(cause.code))) pending.value = null
|
||||
writeError.value = getApiErrorDetails(cause, '财务操作未完成,请保留输入并重试')
|
||||
} finally { if (scope === epoch) saving.value = false }
|
||||
} finally { pending.value = null; if (scope === epoch) saving.value = false }
|
||||
}
|
||||
async function loadRecords() {
|
||||
const request = ++recordsRequest, scope = epoch, current = tab.value
|
||||
@@ -154,8 +154,8 @@ onBeforeUnmount(() => { disposed = true; epoch++; readRequest++; recordsRequest+
|
||||
<template v-else>
|
||||
<div class="ledger-actions"><el-button :disabled="loading || saving || uploading" @click="load">刷新费用</el-button><el-button @click="tab = 'current'">费用详情</el-button><el-button @click="tab = 'history'">操作历史</el-button><el-button @click="tab = 'payments'">付款流水</el-button></div>
|
||||
<LoadErrorState v-if="error" title="公司费用读取失败" :message="error.message" @retry="load"><template #details><ApiErrorMeta :details="error" /></template></LoadErrorState>
|
||||
<LoadErrorState v-if="writeError" title="财务操作未完成" :message="writeError.message" @retry="pendingFiles.length ? uploadFiles() : submit()"><template #details><ApiErrorMeta :details="writeError" /></template></LoadErrorState>
|
||||
<p v-if="pending">上次操作结果尚未确认。重试使用原版本、原内容和原请求键。</p>
|
||||
<LoadErrorState v-if="writeError" title="财务操作未完成" :message="writeError.message" :show-retry="false"><template #details><ApiErrorMeta :details="writeError" /></template></LoadErrorState>
|
||||
|
||||
<template v-if="tab === 'current' && cost">
|
||||
<p>{{ cost.costNo }} · {{ statusLabels[cost.status] }} · {{ cost.supplierName }}</p>
|
||||
<p>{{ cost.source.feeName }} · {{ cost.source.businessDate }} · 原币 {{ cost.source.originalCurrency }} {{ cost.source.originalAmount.toFixed(2) }}</p>
|
||||
@@ -172,8 +172,7 @@ onBeforeUnmount(() => { disposed = true; epoch++; readRequest++; recordsRequest+
|
||||
<input v-if="access.can(permissions.upload)" type="file" accept="image/png,image/jpeg" multiple :disabled="busy" aria-label="上传公司付款凭证" @change="selectFiles" />
|
||||
<p v-else>登记新付款需公司付款凭证上传权限。</p>
|
||||
<p v-for="file in vouchers" :key="file.fileId">已上传:{{ file.fileName }}</p>
|
||||
<p v-if="pendingFiles.length">{{ pendingFiles.length }} 张凭证待完成上传。</p>
|
||||
<el-button v-if="pendingFiles.length" :disabled="busy" @click="uploadFiles">重试剩余凭证</el-button>
|
||||
|
||||
</el-form-item>
|
||||
<el-form-item label="付款说明(选填)" class="ledger-wide"><el-input v-model="form.remark" type="textarea" maxlength="1000" placeholder="补充本次付款用途或说明" /></el-form-item>
|
||||
</template>
|
||||
@@ -181,7 +180,7 @@ onBeforeUnmount(() => { disposed = true; epoch++; readRequest++; recordsRequest+
|
||||
</el-form>
|
||||
<template v-if="action">
|
||||
<p>{{ action === 'pay' ? '确认实际付款及凭证后登记。此操作不会发起银行转账。' : action === 'void' ? '确认作废这笔未付款费用;历史记录保留,重新登记须重新入账。' : '确认将这笔公司费用入账为应付;不会自动付款。' }}</p>
|
||||
<el-button :loading="saving" :disabled="uploading || !access.can(permissions[action])" :type="action === 'void' ? 'danger' : 'primary'" @click="submit">{{ pending ? '重试原操作' : '确认操作' }}</el-button>
|
||||
<el-button :loading="saving" :disabled="uploading || !access.can(permissions[action])" :type="action === 'void' ? 'danger' : 'primary'" @click="submit">{{ '确认操作' }}</el-button>
|
||||
<el-button :disabled="busy" @click="action = null">取消操作</el-button>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user