瀏覽代碼

fix(订单表单): 修复库存校验逻辑并优化不足提示样式

yz 3 周之前
父節點
當前提交
77154bd353

+ 2 - 1
src/components/order-form/material-detail-mixin.js

@@ -424,6 +424,7 @@ export default {
      * 使用品牌库存接口搜索物料
      * @description 调用品牌库存汇总列表接口,按名称等关键字进行搜索
      * @param {string} keyword - 搜索关键词
+     * @this {MaterialDetailTableComponent & Vue}
      * @returns {Promise<void>}
      */
     async searchBrandStock(keyword) {
@@ -462,7 +463,7 @@ export default {
             warehouseId: item.storageId,
             warehouseCode: '',
             warehouseName: item.storageName,
-            availableQuantity: parseFloat(item.balanceQuantity || '0') || 0,
+            availableQuantity: parseFloat(item.storeInventory || '0') || 0,
             // 保留原始数据以备后用
             _raw: item
           }))

+ 15 - 0
src/components/order-form/order-form-mixin.js

@@ -879,6 +879,21 @@ export default {
           return
         }
 
+        // 库存校验:订单数量不得超过可用数量(可用数量=storeInventory 映射而来)
+        const exceededItems = (this.materialDetails || []).filter(it => Number(it.orderQuantity || 0) > Number(it.availableQuantity || 0))
+        if (exceededItems.length > 0) {
+          const detailText = exceededItems
+            .slice(0, 5)
+            .map(it => `${it.itemName || it.itemCode || '物料'}:订单数量 ${Number(it.orderQuantity || 0)} > 可用数量 ${Number(it.availableQuantity || 0)}`)
+            .join('\n')
+          await this.$alert(
+            `库存不足,以下物料订单数量超过可用数量:\n${detailText}${exceededItems.length > 5 ? '\n...' : ''}`,
+            '库存不足',
+            { customClass: 'order-stock-alert' }
+          )
+          return
+        }
+
         this.saveLoading = true
 
         // 准备提交数据

+ 8 - 0
src/styles/element-ui.scss

@@ -69,3 +69,11 @@
 .el-divider--horizontal {
   margin: 12px 0 !important;
 }
+
+/* 订单库存不足弹窗:让 \n 生效为换行 */
+.order-stock-alert {
+  .el-message-box__message,
+  .el-message-box__message p {
+    white-space: pre-line; // 识别 \n 为换行
+  }
+}