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