From 13b0bad30ef1df53492cbab1c1b99dfc02dee63f Mon Sep 17 00:00:00 2001 From: haoyahui <2032914783@qq.com> Date: 星期二, 21 十一月 2023 17:51:16 +0800 Subject: [PATCH] 台账管理,盘点任务开发 --- admin-web/src/views/stock/ledger/inventoryAlert/edit.vue | 283 ++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 193 insertions(+), 90 deletions(-) diff --git a/admin-web/src/views/stock/ledger/inventoryAlert/edit.vue b/admin-web/src/views/stock/ledger/inventoryAlert/edit.vue index 93fcd42..18be030 100644 --- a/admin-web/src/views/stock/ledger/inventoryAlert/edit.vue +++ b/admin-web/src/views/stock/ledger/inventoryAlert/edit.vue @@ -3,54 +3,108 @@ <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="鐗╁搧鍒嗙被"> + <el-form-item label="鍏ュ簱浠撳簱" prop="baseWarehouseId"> + <el-select + 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> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鐗╁搧鍒嗙被" prop="baseCategoryIds"> <el-cascader v-model="formData.baseCategoryIds" :options="categoryOptions" :props="{ value: 'id' }" + @change="categoryChange" style="width: 100%" + :disabled="type == 'edit'" ></el-cascader> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="鐗╁搧鍚嶇О"> - <el-select - :value="formData.baseGoodsTemplateId" - placeholder="璇峰厛鎷╃墿鍝佸垎绫�" - filterable - style="width: 100%" - > - <el-option v-for="item in goodsTemplatelAll" :key="item.id" :label="item.goodsName" :value="item.id" /> - </el-select> </el-form-item> </el-col> </el-row> <el-row :gutter="24"> <el-col :span="12"> - <el-form-item label="瑙勬牸鍨嬪彿"> + <el-form-item label="鐗╁搧鍚嶇О" prop="baseGoodsTemplateId"> + <el-select + :value="formData.baseGoodsTemplateId" + placeholder="璇峰厛鎷╃墿鍝佸垎绫�" + filterable + :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" + /> + </el-select> + </el-form-item> + </el-col> + <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($event)" - @remove-tag="modelRemoveTag($event)" + @change="modelChange" + @remove-tag="modelRemoveTag" style="width: 100%" > - <el-option v-for="item in goodsModelAll" :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> </el-row> - <el-table :data="formData.models" :stripe="true"> - <el-table-column prop="baseGoodsModelsId" label="瑙勬牸鍨嬪彿" align="center"> </el-table-column> - <el-table-column prop="bdcount" label="淇濆簳搴撳瓨" align="center"> + <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> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="灏侀《搴撳瓨" prop="upperLimit"> + <el-input placeholder="璇疯緭鍏�" v-model.number="formData.upperLimit"></el-input> + </el-form-item> + </el-col> + </el-row> + <el-table v-if="type != 'edit'" :data="formData.models" :stripe="true"> + <el-table-column prop="baseGoodsModelsId" label="瑙勬牸鍨嬪彿" align="center"> <template slot-scope="scope"> - <el-input v-model="scope.row.bdcount"></el-input> + {{ getGoodsModelsName(scope.row.baseGoodsModelsId) }} </template> </el-table-column> - <el-table-column prop="count" label="灏侀《搴撳瓨" align="center"> + <el-table-column prop="lowerLimit" label="淇濆簳搴撳瓨" align="center"> <template slot-scope="scope"> - <el-input v-model="scope.row.count"></el-input> + <el-form-item + 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> + <el-input v-else v-model.number="scope.row.lowerLimit"></el-input> + </template> + </el-table-column> + <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" + > + <el-input v-model.number="scope.row.upperLimit"></el-input> + </el-form-item> + <el-input v-else v-model.number="scope.row.upperLimit"></el-input> </template> </el-table-column> </el-table> @@ -65,13 +119,22 @@ <script> import winMd from '@/components/win/win-md'; import myButton from '@/components/myButton/myButton'; -import * as finsystenant from '@/api/baseSetting/finsystenant'; import { getCategorySelectTree, goodsModel, warehouseSelectNumber, goodsTemplate, + selectTenantWarehouse, + queryGoodsModelInfo, } from '@/api/baseSetting/finsystenant'; +import { + warningConfigAdd, + warningConfigUpd, + warningConfigGetById, + warningConfigGetConfigList, +} from '@/api/stock/ledger'; +import { mapGetters } from 'vuex'; +import { findParentIds } from '@/utils/index'; export default { components: { winMd, myButton }, @@ -83,92 +146,133 @@ }, data() { return { + type: '', + warehouses: [], // 鍏ュ簱浠撳簱鍒楄〃 agencyOptions: [], // 璋冩嫧鏈烘瀯 categoryOptions: [], // 鐗╁搧鍒嗙被鍒楄〃 - modelList: [], //鍨嬪彿鍒楄〃 + goodsTemplatelOptions: [], //鐗╁搧鍚嶇О + modelsOptions: [], //鍨嬪彿鍒楄〃 formData: { + warehouseType: 0, //浠撳簱绫诲瀷0鏈烘瀯1閮ㄩ棬 + baseWarehouseId: '', //浠撳簱缂栧彿 baseCategoryIds: '', // 鍒嗙被缂栧彿鏁扮粍 baseCategoryId: '', // 鍒嗙被缂栧彿 - baseGoodsTemplateId: '', // 鐗╁搧妯$増缂栧彿 + baseGoodsTemplateId: '', // 鐗╁搧鍚嶇О妯$増缂栧彿 modelsIds: [], //瑙勬牸鍨嬪彿 models: [], }, - modelsItem: { - baseGoodsModelsId: '', // 瑙勬牸鍨嬪彿缂栧彿 - worehouseCount: 0, - counts: 0, // 鎿嶄綔鏁伴噺 - }, rules: { - code: [{ required: true, message: '璇疯緭鍏ユ満鏋勭紪鍙�', trigger: 'blur' }], - name: [{ required: true, message: '璇疯緭鍏ユ満鏋勫悕绉�', trigger: 'blur' }], - status: [{ required: true, message: '璇烽�夋嫨鐘舵��', trigger: 'blur' }], + baseCategoryIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }], + baseGoodsTemplateId: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }], + modelsIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }], + lowerLimit: [ + { required: true, message: '璇疯緭鍏�', trigger: 'blur' }, + { type: 'number', message: '璇疯緭鍏ユ暟瀛楀��', trigger: 'blur' }, + ], + upperLimit: [ + { required: true, message: '璇疯緭鍏�', trigger: 'blur' }, + { type: 'number', message: '璇疯緭鍏ユ暟瀛楀��', trigger: 'blur' }, + ], }, }; }, + computed: { + ...mapGetters(['userInfo']), + }, created() { - if (this.setting.info) { - this.formData = Object.assign({}, JSON.parse(this.setting.info)); - } this.init(); }, methods: { async init() { - this.getCategoryTree(); - this.getgoodsTemplate(); - this.getgoodsModel(); + if (this.setting.id) { + this.type = 'edit'; + const detail = await warningConfigGetById({ id: this.setting.id }); + await this.getCategoryTree(); + 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); + // 鐗╁搧鍚嶇О鍙嶆樉 + this.getgoodsTemplate(this.formData.baseCategoryId); + // 瑙勬牸鍨嬪彿鍙嶆樉 + this.getgoodsModel(this.formData.baseGoodsTemplateId); + this.formData.modelsIds = [this.formData.baseGoodsModelsId]; + this.getWarehouseList(); + } else { + this.getWarehouseList(); + this.getCategoryTree(); + } + }, + // 鑾峰彇鍏ュ簱浠撳簱鍒楄〃 + 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); + }); }, - async getCategoryTree() { + getCategoryTree() { // 鑾峰彇鐗╁搧鍒嗙被鍒楄〃 - const treeRes = await getCategorySelectTree(); - this.categoryOptions = this.removeEmptyChildren(treeRes); - console.log('categoryOptions', this.categoryOptions); + return new Promise(async (resolve) => { + const treeRes = await getCategorySelectTree(); + this.categoryOptions = this.removeEmptyChildren(treeRes); + resolve(); + }); }, // 鑾峰彇鐗╁搧鍚嶇О鍒楄〃 getgoodsTemplate(id) { - goodsTemplate({ categoryId: id || '', agencyId: this.formData.outAgencyId }).then((res) => { - this.goodsTemplatelAll = res; + goodsTemplate({ categoryId: id || '', agencyId: this.userInfo.tenantId }).then((res) => { + this.goodsTemplatelOptions = res; }); }, // 瑙勬牸鍨嬪彿 getgoodsModel(id) { goodsModel({ goodsTemplatesId: id || '' }).then((res) => { - this.goodsModelAll = res; + this.modelsOptions = res; }); + }, + + // 鏍规嵁瑙勬牸鍨嬪彿id鑾峰彇鍚嶅瓧 + getGoodsModelsName(id) { + let item = this.modelsOptions.find((v) => v.id == id); + if (item) { + return item.modelName; + } + return; }, // 鐗╁搧鍒嗙被閫夋嫨 categoryChange(e) { - this.formData.goodsOptions = []; + if (!e) return; + this.goodsTemplatelOptions = []; + this.modelsOptions = []; this.formData.baseGoodsTemplateId = ''; - this.formData.goodsTemplateName = ''; - this.formData.modelsOptions = []; this.formData.modelsIds = []; this.formData.models = []; - this.formData.transferGoods.baseCategoryId = e[e.length - 1]; + this.formData.baseCategoryId = e[e.length - 1]; // 鏍规嵁閫変腑鍒嗙被璇锋眰鐗╁搧鍚嶇О鍒楄〃 - this.getgoodsTemplate(e[e.length - 1]); + this.getgoodsTemplate(this.formData.baseCategoryId); }, // 鐗╁搧鍚嶇О鍒楄〃閫夋嫨 - goodsTemplateChange(e, index) { - let temp = this.formData.transferGoods.find((v) => v.baseGoodsTemplateId == e); - if (temp) { - this.$message.warning('宸查�夎繃姝ょ墿鍝�'); - return; - } else { - this.formData.transferGoods[index].baseGoodsTemplateId = e; - } - this.formData.transferGoods[index].modelsOptions = []; - this.formData.transferGoods[index].modelsIds = []; - this.formData.transferGoods[index].models = []; + goodsTemplateChange(e) { + this.formData.modelsIds = []; + this.formData.models = []; - this.formData.transferGoods[index].goodsTemplateName = this.getGoodsTemplateName(e); + this.formData.baseGoodsTemplateId = e; // 鏍规嵁閫変腑鐗╁搧鍚嶇Оid鑾峰彇瑙勬牸鍨嬪彿鍒楄〃 - this.getgoodsModel(e, index); + this.getgoodsModel(e); }, removeEmptyChildren(arr) { @@ -184,20 +288,18 @@ // 瑙勬牸鍨嬪彿閫夋嫨 modelChange(e) { - let arr = [...this.formData.models]; + let arr = this.formData.models; let str = JSON.stringify(arr); - e.forEach((item) => { - if (str.indexOf(item) == -1) { - arr.push({ baseGoodsModelsId: item, bdcount: null,count:null }); + e.forEach((item, index) => { + if (str && !str.includes(item)) { + arr.push({ baseGoodsModelsId: item, lowerLimit: null, upperLimit: null }); } }); - this.formData.models = arr; }, // 瑙勬牸鍨嬪彿绉婚櫎 modelRemoveTag(e) { - let arr = this.formData.models; - let delIndex = arr.findIndex((v) => v.baseGoodsModelsId == e); + let delIndex = this.formData.models.findIndex((v) => v.baseGoodsModelsId == e); this.formData.models.splice(delIndex, 1); }, @@ -208,28 +310,29 @@ save() { this.$refs.ruleForm.validate((valid) => { if (valid) { - const params = Object.assign({}, this.formData); if (this.setting.id) { // 缂栬緫鎺ュ彛 - finsystenant.edit(params).then((res) => { - if (res) { - this.$message.success('淇濆瓨鎴愬姛锛�'); - this.close(); - this.$emit('search'); - } else { - this.$message.error('淇濆瓨澶辫触'); - } + const params = { + id: this.setting.id, + lowerLimit: this.formData.lowerLimit, + upperLimit: this.formData.upperLimit, + }; + warningConfigUpd(params).then((res) => { + this.$message.success('淇濆瓨鎴愬姛锛�'); + this.close(); + this.$emit('search'); }); } else { - params.orgId = this.setting.orgId; - finsystenant.add(params).then((res) => { - if (res) { - this.$message.success('淇濆瓨鎴愬姛锛�'); - this.close(); - this.$emit('search'); - } else { - this.$message.error('淇濆瓨澶辫触'); - } + const params = { + warehouseType: this.formData.warehouseType, + baseWarehouseId: this.formData.baseWarehouseId, + baseGoodsTemplateId: this.formData.baseGoodsTemplateId, + modelConfigStr: JSON.stringify(this.formData.models), + }; + warningConfigAdd(params).then((res) => { + this.$message.success('淇濆瓨鎴愬姛锛�'); + this.close(); + this.$emit('search'); }); } } else { -- Gitblit v1.9.1