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