From 02f85f84ce3d2212736e231c376dd084a7153783 Mon Sep 17 00:00:00 2001 From: 石广澎 <shiguangpeng@163.com> Date: 星期四, 30 十一月 2023 15:09:15 +0800 Subject: [PATCH] feat: 库存管理 出库管理、采购管理、报废管理 新增时物品查询增加机构限制 --- admin-web/src/views/stock/ledger/inventoryAlert/edit.vue | 173 ++++++++++++++++++++++++++++++++------------------------- 1 files changed, 96 insertions(+), 77 deletions(-) diff --git a/admin-web/src/views/stock/ledger/inventoryAlert/edit.vue b/admin-web/src/views/stock/ledger/inventoryAlert/edit.vue index 37e396f..acbd321 100644 --- a/admin-web/src/views/stock/ledger/inventoryAlert/edit.vue +++ b/admin-web/src/views/stock/ledger/inventoryAlert/edit.vue @@ -1,28 +1,31 @@ <template> - <win-md :title="`${setting.title}棰勮璁剧疆`" @close="close" :width="'800px'"> + <win-md :title="`${setting.title}棰勮璁剧疆`" @close="close" :width="'800px'" :loading="loading"> <el-form ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="100px"> <el-row :gutter="24"> <el-col :span="12"> - <el-form-item label="鍏ュ簱浠撳簱" prop="baseWarehouseId"> + <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-option v-for="item in warehouses" :key="item.id" :label="item.warehouseName" :value="item.id"/> </el-select> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="鐗╁搧鍒嗙被" prop="baseCategoryIds"> + <el-form-item label="鐗╁搧鍒嗙被" prop="baseCategoryId"> <el-cascader - v-model="formData.baseCategoryIds" - :options="categoryOptions" - :props="{ value: 'id' }" - @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> @@ -31,18 +34,19 @@ <el-col :span="12"> <el-form-item label="鐗╁搧鍚嶇О" prop="baseGoodsTemplateId"> <el-select - :value="formData.baseGoodsTemplateId" - placeholder="璇峰厛鎷╃墿鍝佸垎绫�" - filterable - :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> @@ -50,15 +54,17 @@ <el-col :span="12"> <el-form-item label="瑙勬牸鍨嬪彿" prop="modelsIds"> <el-select - v-model="formData.modelsIds" - multiple - :disabled="!formData.baseGoodsTemplateId || type == 'edit'" - placeholder="璇峰厛鎷╃墿鍝佸悕绉�" - @change="modelChange" - @remove-tag="modelRemoveTag" - 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-option v-for="item in modelsOptions" :key="item.id" :label="item.modelName" :value="item.id"/> </el-select> </el-form-item> </el-col> @@ -84,10 +90,10 @@ <el-table-column prop="lowerLimit" label="淇濆簳搴撳瓨" align="center"> <template slot-scope="scope"> <el-form-item - v-if="scope.row.lowerLimit || scope.row.upperLimit" - label-width="0" - :prop="`models[${scope.$index}].lowerLimit`" - :rules="rules.lowerLimit" + v-if="scope.row.lowerLimit || scope.row.upperLimit" + label-width="0" + :prop="`models[${scope.$index}].lowerLimit`" + :rules="rules.lowerLimit" > <el-input v-model.number="scope.row.lowerLimit"></el-input> </el-form-item> @@ -97,10 +103,10 @@ <el-table-column prop="upperLimit" label="灏侀《搴撳瓨" align="center"> <template slot-scope="scope"> <el-form-item - v-if="scope.row.lowerLimit || scope.row.upperLimit" - label-width="0" - :prop="`models[${scope.$index}].upperLimit`" - :rules="rules.upperLimit" + v-if="scope.row.lowerLimit || scope.row.upperLimit" + label-width="0" + :prop="`models[${scope.$index}].upperLimit`" + :rules="rules.upperLimit" > <el-input v-model.number="scope.row.upperLimit"></el-input> </el-form-item> @@ -110,8 +116,8 @@ </el-table> </el-form> <div slot="footer" align="center" class="dialog-footer"> - <my-button name="鍙栨秷" site="form" @click="close" /> - <my-button name="淇濆瓨" site="form" @click="save" /> + <my-button name="鍙栨秷" site="form" @click="close"/> + <my-button name="淇濆瓨" site="form" @click="save"/> </div> </win-md> </template> @@ -131,15 +137,17 @@ import {findParentIds} from '@/utils/index'; export default { - components: { winMd, myButton }, + components: {winMd, myButton}, props: { setting: { type: Object, - default: () => {}, + default: () => { + }, }, }, data() { return { + loading: true, type: '', warehouses: [], // 鍏ュ簱浠撳簱鍒楄〃 agencyOptions: [], // 璋冩嫧鏈烘瀯 @@ -156,16 +164,17 @@ models: [], }, rules: { - baseCategoryIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }], - baseGoodsTemplateId: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }], - modelsIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }], + baseWarehouseId: [{required: true, message: '璇烽�夋嫨棰勮浠撳簱', trigger: 'change'}], + baseCategoryId: [{required: true, message: '璇烽�夋嫨鐗╁搧鍒嗙被', trigger: 'change'}], + baseGoodsTemplateId: [{required: true, message: '璇烽�夋嫨鐗╁搧', trigger: 'change'}], + modelsIds: [{required: true, message: '璇烽�夋嫨瑙勬牸鍨嬪彿', trigger: 'change'}], lowerLimit: [ - { required: true, message: '璇疯緭鍏�', trigger: 'blur' }, - { type: 'number', message: '璇疯緭鍏ユ暟瀛楀��', trigger: 'blur' }, + {required: true, message: '璇疯緭鍏�', trigger: 'blur'}, + {type: 'number', message: '璇疯緭鍏ユ暟瀛楀��', trigger: 'blur'}, ], upperLimit: [ - { required: true, message: '璇疯緭鍏�', trigger: 'blur' }, - { type: 'number', message: '璇疯緭鍏ユ暟瀛楀��', trigger: 'blur' }, + {required: true, message: '璇疯緭鍏�', trigger: 'blur'}, + {type: 'number', message: '璇疯緭鍏ユ暟瀛楀��', trigger: 'blur'}, ], }, }; @@ -178,13 +187,14 @@ }, methods: { async init() { + await this.getWarehouseList(); + await this.getCategoryTree(); if (this.setting.id) { this.type = 'edit'; - const detail = await warningConfigGetById({ id: this.setting.id }); - await this.getCategoryTree(); + const detail = await warningConfigGetById({id: this.setting.id}); this.formData = Object.assign({}, detail); // 鍒嗙被鍙嶆樉 - let res = await queryGoodsModelInfo({ baseGoodsModelsId: this.formData.baseGoodsModelsId }); + let res = await queryGoodsModelInfo({baseGoodsModelsId: this.formData.baseGoodsModelsId}); this.formData.baseCategoryId = res[0].categoryId; this.formData.baseCategoryIds = findParentIds(this.categoryOptions, this.formData.baseCategoryId); // 鐗╁搧鍚嶇О鍙嶆樉 @@ -193,24 +203,22 @@ this.getgoodsModel(this.formData.baseGoodsTemplateId); this.formData.modelsIds = [this.formData.baseGoodsModelsId]; this.getWarehouseList(); - } else { - this.getWarehouseList(); - this.getCategoryTree(); } + this.loading = false }, // 鑾峰彇鍏ュ簱浠撳簱鍒楄〃 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); - }); + 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); + }); }, getCategoryTree() { @@ -224,14 +232,14 @@ // 鑾峰彇鐗╁搧鍚嶇О鍒楄〃 getgoodsTemplate(id) { - goodsTemplate({ categoryId: id || '', agencyId: this.userInfo.tenantId }).then((res) => { + goodsTemplate({categoryId: id || '', agencyId: this.userInfo.tenantId}).then((res) => { this.goodsTemplatelOptions = res; }); }, // 瑙勬牸鍨嬪彿 getgoodsModel(id) { - goodsModel({ goodsTemplatesId: id || '' }).then((res) => { + goodsModel({goodsTemplatesId: id || ''}).then((res) => { this.modelsOptions = res; }); }, @@ -247,23 +255,19 @@ // 鐗╁搧鍒嗙被閫夋嫨 categoryChange(e) { - if (!e) return; this.goodsTemplatelOptions = []; this.modelsOptions = []; this.formData.baseGoodsTemplateId = ''; this.formData.modelsIds = []; this.formData.models = []; - - this.formData.baseCategoryId = e[e.length - 1]; // 鏍规嵁閫変腑鍒嗙被璇锋眰鐗╁搧鍚嶇О鍒楄〃 - this.getgoodsTemplate(this.formData.baseCategoryId); + this.getgoodsTemplate(e); }, // 鐗╁搧鍚嶇О鍒楄〃閫夋嫨 goodsTemplateChange(e) { this.formData.modelsIds = []; this.formData.models = []; - this.formData.baseGoodsTemplateId = e; // 鏍规嵁閫変腑鐗╁搧鍚嶇Оid鑾峰彇瑙勬牸鍨嬪彿鍒楄〃 this.getgoodsModel(e); @@ -286,24 +290,31 @@ let str = JSON.stringify(arr); e.forEach((item, index) => { if (str && !str.includes(item)) { - arr.push({ baseGoodsModelsId: item, lowerLimit: null, upperLimit: null }); + arr.push({baseGoodsModelsId: item, lowerLimit: null, upperLimit: null}); } }); }, // 瑙勬牸鍨嬪彿绉婚櫎 modelRemoveTag(e) { + if (e === -1) { + this.formData.models = [] + return + } let delIndex = this.formData.models.findIndex((v) => v.baseGoodsModelsId == e); this.formData.models.splice(delIndex, 1); }, - getEditInfo(id) {}, + getEditInfo(id) { + }, close() { this.$emit('close'); }, save() { this.$refs.ruleForm.validate((valid) => { if (valid) { + if (this.loading) return + this.loading = true; if (this.setting.id) { // 缂栬緫鎺ュ彛 const params = { @@ -312,9 +323,13 @@ upperLimit: this.formData.upperLimit, }; warningConfigUpd(params).then((res) => { + this.loading = false; this.$message.success('淇濆瓨鎴愬姛锛�'); this.close(); this.$emit('search'); + }).catch((err) => { + this.loading = false; + this.$message.error('淇濆瓨澶辫触'); }); } else { const params = { @@ -324,9 +339,13 @@ modelConfigStr: JSON.stringify(this.formData.models), }; warningConfigAdd(params).then((res) => { + this.loading = false; this.$message.success('淇濆瓨鎴愬姛锛�'); this.close(); this.$emit('search'); + }).catch((err) => { + this.loading = false; + this.$message.error('淇濆瓨澶辫触'); }); } } else { -- Gitblit v1.9.1