From a12fcea86d56d5869bd2d37e689589d1c928218a Mon Sep 17 00:00:00 2001 From: yueli Date: Wed, 9 Sep 2026 16:19:45 +0800 Subject: [PATCH] =?UTF-8?q?fix(borrow,outbound):=20=E5=BA=93=E7=AE=A1?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E5=BF=85=E6=98=BE=E5=AE=A1=E6=89=B9=E4=BA=BA?= =?UTF-8?q?=20+=20HTTP400=E5=8E=BB=E9=87=8Dtoast?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 审批人 el-form-item 显隐加入 role==WAREHOUSE_MGR 判断 - 提交 catch 仅对无响应(网络)弹错,HTTP错误由全局拦截器按后端 data.msg 弹一次,避免重复 --- .../src/views/borrow/apply/index.vue | 24 +++++++++++-------- .../src/views/outbound/Selection.vue | 24 +++++++++++-------- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/inventory-web/src/views/borrow/apply/index.vue b/inventory-web/src/views/borrow/apply/index.vue index dc95fc2..e5ac3fe 100644 --- a/inventory-web/src/views/borrow/apply/index.vue +++ b/inventory-web/src/views/borrow/apply/index.vue @@ -394,7 +394,7 @@ - +
以下物料需审批出库/借库:{{ approvalNeedText }},请选择审批人
@@ -1058,8 +1058,8 @@ const openRequestDialog = () => { requestApproverId.value = null requestExpectedReturn.value = '' requestIndefinite.value = false - approvalNeedVisible.value = false // 打开时默认隐藏审批人,命中需审批时由预检显示 - approvalNeedText.value = '' + approvalNeedVisible.value = (userStore.role || '').toUpperCase() === 'WAREHOUSE_MGR' // 库管代建默认显示审批人 + approvalNeedText.value = approvalNeedVisible.value ? '库管代建借库申请需审批,请选择审批人' : '' loadApprovers() requestDialogVisible.value = true } @@ -1125,19 +1125,22 @@ const confirmSubmitRequest = async () => { is_indefinite: requestIndefinite.value })) - // ★ 提交前预检:判断所选物料是否需审批 → 只有需审批才显示并必选审批人 - let needApproval = false + // ★ 提交前预检:库管(WAREHOUSE_MGR)代建一律需审批;否则命中需审批物料才需审批 + const isKeeper = (userStore.role || '').toUpperCase() === 'WAREHOUSE_MGR' + let needApproval = isKeeper let flagged: any[] = [] try { const chk: any = await checkBorrowApproval({ items }) - needApproval = !!chk?.data?.need_approval + needApproval = needApproval || !!chk?.data?.need_approval flagged = chk?.data?.materials || [] - } catch (e) { needApproval = false; flagged = [] } + } catch (e) { flagged = [] } approvalNeedVisible.value = needApproval - approvalNeedText.value = flagged.map((m: any) => `${m.name}(${m.spec_model || '-'})`).join(';') + approvalNeedText.value = isKeeper && flagged.length === 0 + ? '库管代建借库申请需审批,请选择审批人' + : flagged.map((m: any) => `${m.name}(${m.spec_model || '-'})`).join(';') if (needApproval && !requestApproverId.value) { - ElMessage.warning(`以下物料需审批出库/借库:${approvalNeedText.value}。请先选择审批人`) + ElMessage.warning(`${approvalNeedText.value}。请先选择审批人`) return } @@ -1155,7 +1158,8 @@ const confirmSubmitRequest = async () => { approvalNeedText.value = '' ElMessage.success('借库申请已提交(含需审批物料时将进入审批,否则直接交库管执行)') } catch (err: any) { - ElMessage.error(err?.message || err?.msg || '提交申请失败,请重试') + // 拦截器已按后端 data.msg 弹出业务错误(如“库管代建…必须选择审批人”),HTTP 错误不再重复提示 + if (!err?.response) ElMessage.error('网络异常,请重试') } finally { requestSubmitting.value = false } diff --git a/inventory-web/src/views/outbound/Selection.vue b/inventory-web/src/views/outbound/Selection.vue index edb08d2..efd2c6d 100644 --- a/inventory-web/src/views/outbound/Selection.vue +++ b/inventory-web/src/views/outbound/Selection.vue @@ -409,7 +409,7 @@
- +
以下物料需审批出库/借库:{{ approvalNeedText }},请选择审批人
@@ -1085,8 +1085,8 @@ const openRequestDialog = () => { } requestRemark.value = '' requestApproverId.value = null - approvalNeedVisible.value = false // 打开时默认隐藏审批人,命中需审批时由预检显示 - approvalNeedText.value = '' + approvalNeedVisible.value = (userStore.role || '').toUpperCase() === 'WAREHOUSE_MGR' // 库管代建默认显示审批人 + approvalNeedText.value = approvalNeedVisible.value ? '库管代建出库申请需审批,请选择审批人' : '' loadApprovers() requestDialogVisible.value = true } @@ -1124,19 +1124,22 @@ const confirmSubmitRequest = async () => { quantity: item.export_quantity || 0 })) - // ★ 提交前预检:判断所选物料是否需审批 → 只有需审批才显示并必选审批人 - let needApproval = false + // ★ 提交前预检:库管(WAREHOUSE_MGR)代建一律需审批;否则命中需审批物料才需审批 + const isKeeper = (userStore.role || '').toUpperCase() === 'WAREHOUSE_MGR' + let needApproval = isKeeper let flagged: any[] = [] try { const chk: any = await checkOutboundApproval({ items }) - needApproval = !!chk?.data?.need_approval + needApproval = needApproval || !!chk?.data?.need_approval flagged = chk?.data?.materials || [] - } catch (e) { needApproval = false; flagged = [] } + } catch (e) { flagged = [] } approvalNeedVisible.value = needApproval - approvalNeedText.value = flagged.map((m: any) => `${m.name}(${m.spec_model || '-'})`).join(';') + approvalNeedText.value = isKeeper && flagged.length === 0 + ? '库管代建出库申请需审批,请选择审批人' + : flagged.map((m: any) => `${m.name}(${m.spec_model || '-'})`).join(';') if (needApproval && !requestApproverId.value) { - ElMessage.warning(`以下物料需审批出库/借库:${approvalNeedText.value}。请先选择审批人`) + ElMessage.warning(`${approvalNeedText.value}。请先选择审批人`) return } @@ -1156,7 +1159,8 @@ const confirmSubmitRequest = async () => { approvalNeedText.value = '' ElMessage.success('出库申请已提交(含需审批物料时将进入审批,否则直接交库管执行)') } catch (err: any) { - ElMessage.error(err?.message || err?.msg || '提交申请失败,请重试') + // 拦截器已按后端 data.msg 弹出业务错误(如“库管代建…必须选择审批人”),HTTP 错误不再重复提示 + if (!err?.response) ElMessage.error('网络异常,请重试') } finally { requestSubmitting.value = false }