From e908aead856e1da187a27ae6b5f48eaf106d2acf Mon Sep 17 00:00:00 2001
From: 石广澎 <shiguangpeng@163.com>
Date: 星期六, 02 十二月 2023 20:30:13 +0800
Subject: [PATCH] fix: 库存预警编辑问题修复

---
 admin-web/src/views/stock/ledger/inventoryAlert/edit.vue |  147 +++++++++++++++++++++++++++----------------------
 1 files changed, 81 insertions(+), 66 deletions(-)

diff --git a/admin-web/src/views/stock/ledger/inventoryAlert/edit.vue b/admin-web/src/views/stock/ledger/inventoryAlert/edit.vue
index acbd321..623a650 100644
--- a/admin-web/src/views/stock/ledger/inventoryAlert/edit.vue
+++ b/admin-web/src/views/stock/ledger/inventoryAlert/edit.vue
@@ -5,10 +5,10 @@
         <el-col :span="12">
           <el-form-item label="棰勮浠撳簱" prop="baseWarehouseId">
             <el-select
-                v-model="formData.baseWarehouseId"
-                placeholder="璇烽�夋嫨棰勮浠撳簱"
-                style="width: 100%"
-                :disabled="type == 'edit'"
+              v-model="formData.baseWarehouseId"
+              placeholder="璇烽�夋嫨棰勮浠撳簱"
+              style="width: 100%"
+              :disabled="type == 'edit'"
             >
               <el-option v-for="item in warehouses" :key="item.id" :label="item.warehouseName" :value="item.id"/>
             </el-select>
@@ -17,15 +17,15 @@
         <el-col :span="12">
           <el-form-item label="鐗╁搧鍒嗙被" prop="baseCategoryId">
             <el-cascader
-                v-model="formData.baseCategoryId"
-                :options="categoryOptions"
-                :props="{ value: 'id',emitPath: false }"
-                :show-all-levels="false"
-                filterable
-                clearable
-                @change="categoryChange"
-                style="width: 100%"
-                :disabled="type == 'edit'"
+              v-model="formData.baseCategoryId"
+              :options="categoryOptions"
+              :props="{ value: 'id',emitPath: false }"
+              :show-all-levels="false"
+              filterable
+              clearable
+              @change="categoryChange"
+              style="width: 100%"
+              :disabled="type == 'edit'"
             ></el-cascader>
           </el-form-item>
         </el-col>
@@ -34,19 +34,19 @@
         <el-col :span="12">
           <el-form-item label="鐗╁搧鍚嶇О" prop="baseGoodsTemplateId">
             <el-select
-                :value="formData.baseGoodsTemplateId"
-                :placeholder="formData.baseCategoryId?'璇烽�夋嫨鐗╁搧':'璇峰厛閫夋嫨鐗╁搧鍒嗙被'"
-                filterable
-                clearable
-                :disabled="!formData.baseCategoryId || type == 'edit'"
-                @change="goodsTemplateChange"
-                style="width: 100%"
+              :value="formData.baseGoodsTemplateId"
+              :placeholder="formData.baseCategoryId?'璇烽�夋嫨鐗╁搧':'璇峰厛閫夋嫨鐗╁搧鍒嗙被'"
+              filterable
+              clearable
+              :disabled="!formData.baseCategoryId || type == 'edit'"
+              @change="goodsTemplateChange"
+              style="width: 100%"
             >
               <el-option
-                  v-for="item in goodsTemplatelOptions"
-                  :key="item.id"
-                  :label="item.goodsName"
-                  :value="item.id"
+                v-for="item in goodsTemplatelOptions"
+                :key="item.id"
+                :label="item.goodsName"
+                :value="item.id"
               />
             </el-select>
           </el-form-item>
@@ -54,22 +54,22 @@
         <el-col :span="12">
           <el-form-item label="瑙勬牸鍨嬪彿" prop="modelsIds">
             <el-select
-                v-model="formData.modelsIds"
-                multiple
-                clearable
-                :disabled="!formData.baseGoodsTemplateId || type == 'edit'"
-                :placeholder="formData.baseCategoryId?'璇烽�夋嫨瑙勬牸鍨嬪彿':'璇峰厛閫夋嫨鐗╁搧鍚嶇О'"
-                @change="modelChange"
-                @remove-tag="modelRemoveTag"
-                @clear="modelRemoveTag(-1)"
-                style="width: 100%"
+              v-model="formData.modelsIds"
+              multiple
+              clearable
+              :disabled="!formData.baseGoodsTemplateId || type == 'edit'"
+              :placeholder="formData.baseCategoryId?'璇烽�夋嫨瑙勬牸鍨嬪彿':'璇峰厛閫夋嫨鐗╁搧鍚嶇О'"
+              @change="modelChange"
+              @remove-tag="modelRemoveTag"
+              @clear="modelRemoveTag(-1)"
+              style="width: 100%"
             >
               <el-option v-for="item in modelsOptions" :key="item.id" :label="item.modelName" :value="item.id"/>
             </el-select>
           </el-form-item>
         </el-col>
       </el-row>
-      <el-row v-if="type == 'edit'">
+      <el-row v-if="type === 'edit'">
         <el-col :span="12">
           <el-form-item label="淇濆簳搴撳瓨" prop="lowerLimit">
             <el-input placeholder="璇疯緭鍏�" v-model.number="formData.lowerLimit"></el-input>
@@ -81,36 +81,36 @@
           </el-form-item>
         </el-col>
       </el-row>
-      <el-table v-if="type != 'edit'" :data="formData.models" :stripe="true">
+      <el-table v-else :data="formData.models" :stripe="true">
         <el-table-column prop="baseGoodsModelsId" label="瑙勬牸鍨嬪彿" align="center">
           <template slot-scope="scope">
             {{ getGoodsModelsName(scope.row.baseGoodsModelsId) }}
           </template>
         </el-table-column>
         <el-table-column prop="lowerLimit" label="淇濆簳搴撳瓨" align="center">
-          <template slot-scope="scope">
+          <template slot-scope="{row,$index}">
             <el-form-item
-                v-if="scope.row.lowerLimit || scope.row.upperLimit"
-                label-width="0"
-                :prop="`models[${scope.$index}].lowerLimit`"
-                :rules="rules.lowerLimit"
+              label-width="0"
+              :prop="`models.${$index}.lowerLimit`"
+              :rules="[
+                  {validator: checkCounts,type: 1, lowerLimit: row.lowerLimit,upperLimit: row.upperLimit, trigger: ['blur', 'change']}
+                ]"
             >
-              <el-input v-model.number="scope.row.lowerLimit"></el-input>
+              <el-input v-model.number="row.lowerLimit"></el-input>
             </el-form-item>
-            <el-input v-else v-model.number="scope.row.lowerLimit" style="margin-bottom: 18px;"></el-input>
           </template>
         </el-table-column>
         <el-table-column prop="upperLimit" label="灏侀《搴撳瓨" align="center">
-          <template slot-scope="scope">
+          <template slot-scope="{row,$index}">
             <el-form-item
-                v-if="scope.row.lowerLimit || scope.row.upperLimit"
-                label-width="0"
-                :prop="`models[${scope.$index}].upperLimit`"
-                :rules="rules.upperLimit"
+              label-width="0"
+              :prop="`models.${$index}.upperLimit`"
+              :rules="[
+                  {validator: checkCounts,type: 2, lowerLimit: row.lowerLimit,upperLimit: row.upperLimit, trigger: ['blur', 'change']}
+                ]"
             >
-              <el-input v-model.number="scope.row.upperLimit"></el-input>
+              <el-input v-model.number="row.upperLimit"></el-input>
             </el-form-item>
-            <el-input v-else v-model.number="scope.row.upperLimit" style="margin-bottom: 18px;"></el-input>
           </template>
         </el-table-column>
       </el-table>
@@ -147,6 +147,22 @@
   },
   data() {
     return {
+      checkCounts: (rule, value, callback) => {
+        let val = rule.type === 1 ? rule.lowerLimit : rule.upperLimit
+        if (!val) {
+          return callback(new Error(rule.type === 1 ? '璇疯緭鍏ヤ繚搴曟暟閲�' : '璇疯緭鍏ュ皝椤舵暟閲�'));
+        }
+        if (!Number.isInteger(val)) {
+          return callback(new Error('璇疯緭鍏ユ暟瀛楀��'));
+        }
+        if (val < 1) {
+          return callback(new Error('鏁板瓧鍊煎繀椤诲ぇ浜�0'));
+        }
+        if (rule.lowerLimit && rule.upperLimit && rule.lowerLimit >= rule.upperLimit) {
+          return callback(new Error(rule.type === 1 ? '淇濆簳搴撳瓨蹇呴』灏忎簬灏侀《搴撳瓨' : '灏侀《搴撳瓨蹇呴』澶т簬淇濆簳搴撳瓨'));
+        }
+        callback();
+      },
       loading: true,
       type: '',
       warehouses: [], // 鍏ュ簱浠撳簱鍒楄〃
@@ -192,16 +208,15 @@
       if (this.setting.id) {
         this.type = 'edit';
         const detail = await warningConfigGetById({id: this.setting.id});
-        this.formData = Object.assign({}, detail);
         // 鍒嗙被鍙嶆樉
-        let res = await queryGoodsModelInfo({baseGoodsModelsId: this.formData.baseGoodsModelsId});
-        this.formData.baseCategoryId = res[0].categoryId;
-        this.formData.baseCategoryIds = findParentIds(this.categoryOptions, this.formData.baseCategoryId);
+        let res = await queryGoodsModelInfo({baseGoodsModelsId: detail.baseGoodsModelsId});
+        detail.baseCategoryId = res[0].categoryId
         // 鐗╁搧鍚嶇О鍙嶆樉
-        this.getgoodsTemplate(this.formData.baseCategoryId);
+        this.getgoodsTemplate(detail.baseCategoryId);
         // 瑙勬牸鍨嬪彿鍙嶆樉
-        this.getgoodsModel(this.formData.baseGoodsTemplateId);
-        this.formData.modelsIds = [this.formData.baseGoodsModelsId];
+        this.getgoodsModel(detail.baseGoodsTemplateId);
+        this.formData = Object.assign({}, detail);
+        this.formData.modelsIds = [detail.baseGoodsModelsId];
         this.getWarehouseList();
       }
       this.loading = false
@@ -209,16 +224,16 @@
     // 鑾峰彇鍏ュ簱浠撳簱鍒楄〃
     getWarehouseList() {
       selectTenantWarehouse({agencyId: this.userInfo.tenantId})
-          .then((res) => {
-            this.warehouses = res;
-            if (this.warehouses.length && !this.formData.baseWarehouseId) {
-              // 榛樿閫変腑绗竴涓粨搴�
-              this.formData.baseWarehouseId = this.warehouses[0].id;
-            }
-          })
-          .catch((err) => {
-            console.log('err', err);
-          });
+        .then((res) => {
+          this.warehouses = res;
+          if (this.warehouses.length && !this.formData.baseWarehouseId) {
+            // 榛樿閫変腑绗竴涓粨搴�
+            this.formData.baseWarehouseId = this.warehouses[0].id;
+          }
+        })
+        .catch((err) => {
+          console.log('err', err);
+        });
     },
 
     getCategoryTree() {

--
Gitblit v1.9.1