From 9497f101126c9f03dbd7917a3396696bdac6998c Mon Sep 17 00:00:00 2001 From: 石广澎 <shiguangpeng@163.com> Date: 星期五, 01 十二月 2023 10:56:43 +0800 Subject: [PATCH] feat: 部门物品 报废 --- admin-web/src/views/stock/transfer/transferApplication/edit.vue | 136 ++++++++++++++++++++++++++------------------- 1 files changed, 78 insertions(+), 58 deletions(-) diff --git a/admin-web/src/views/stock/transfer/transferApplication/edit.vue b/admin-web/src/views/stock/transfer/transferApplication/edit.vue index a990b13..0fd2f9f 100644 --- a/admin-web/src/views/stock/transfer/transferApplication/edit.vue +++ b/admin-web/src/views/stock/transfer/transferApplication/edit.vue @@ -1,6 +1,6 @@ <template> <win-md class="stock-edit" title="璋冩嫧鐢宠" @close="close" :width="'800px'"> - <el-form class="form" ref="ruleForm" :model="formData" :rules="rules" label-width="120px"> + <el-form v-loading="loading" class="form" ref="ruleForm" :model="formData" :rules="rules" label-width="120px"> <div class="main-w"> <el-row :gutter="24" class="headerHeight"> <el-col :span="12"> @@ -11,10 +11,11 @@ </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="璋冩嫧鏃堕棿" prop="createTime"> + <el-form-item label="璋冩嫧鏃堕棿" clearable prop="createTime"> <el-date-picker v-model="formData.createTime" type="datetime" + clearable value="yyyy-MM-dd HH:mm:ss" value-format="yyyyMMddHHmmss" placeholder="璇烽�夋嫨鏃ユ湡" @@ -27,7 +28,7 @@ <el-row :gutter="24" class="headerHeight"> <el-col :span="24"> <el-form-item label="璋冩嫧鎵嬬画" prop="procureDoc"> - <upload :settings="uploadSettings" @on-change="uploadChange"></upload> + <upload ref="uploadRef" :settings="uploadSettings" @on-change="uploadChange"></upload> </el-form-item> </el-col> </el-row> @@ -36,17 +37,20 @@ <el-col :span="12"> <el-form-item label="鐗╁搧鍒嗙被" - :prop="`transferGoods[${goodsIndex}].baseCategoryIds`" + :prop="`transferGoods.${goodsIndex}.baseCategoryId`" :rules="{ required: true, - message: '璇烽�夋嫨', + message: '璇烽�夋嫨鐗╁搧鍒嗙被', trigger: 'change', }" > <el-cascader - v-model="goodsItem.baseCategoryIds" + v-model="goodsItem.baseCategoryId" :options="categoryOptions" - :props="{ value: 'id' }" + :props="{ value: 'id',emitPath: false }" + :show-all-levels="false" + filterable + clearable @change="categoryChange($event, goodsIndex)" style="width: 100%" ></el-cascader> @@ -55,17 +59,14 @@ <el-col :span="12"> <el-form-item label="鐗╁搧鍚嶇О" - :prop="`transferGoods[${goodsIndex}].baseGoodsTemplateId`" - :rules="{ - required: true, - message: '璇烽�夋嫨', - trigger: 'change', - }" + :prop="`transferGoods.${goodsIndex}.baseGoodsTemplateId`" + :rules="rules.baseGoodsTemplateId" > <el-select - :value="goodsItem.baseGoodsTemplateId" - placeholder="璇峰厛鎷╃墿鍝佸垎绫�" + v-model="goodsItem.baseGoodsTemplateId" + :placeholder="goodsItem.baseCategoryId?'璇烽�夋嫨鐗╁搧':'璇峰厛閫夋嫨鐗╁搧鍒嗙被'" filterable + clearable :disabled="!goodsItem.baseCategoryId" style="width: 100%" @change="goodsTemplateChange($event, goodsIndex)" @@ -94,10 +95,12 @@ <el-select v-model="goodsItem.modelsIds" multiple - placeholder="璇峰厛鎷╃墿鍝佸悕绉�" - :disabled="!goodsItem.baseCategoryId" + clearable + :placeholder="goodsItem.baseGoodsTemplateId?'璇烽�夋嫨瑙勬牸鍨嬪彿':'璇峰厛閫夋嫨鐗╁搧鍚嶇О'" + :disabled="!goodsItem.baseGoodsTemplateId" @change="modelChange($event, goodsIndex)" @remove-tag="modelRemoveTag($event, goodsIndex)" + @clear="modelRemoveTag(-1, goodsIndex)" style="width: 100%" > <el-option @@ -173,14 +176,13 @@ </win-md> </template> <script> -import { transferAdd } from '@/api/stock/transfer'; -import { getCategorySelectTree, getTree, goodsTemplate, goodsModel } from '@/api/baseSetting/finsystenant'; -import { getParentTenant,queryWarehouseGoods } from '@/api/stock/transfer'; +import {getParentTenant, queryWarehouseGoods, transferAdd} from '@/api/stock/transfer'; +import {getCategorySelectTree, goodsModel, warehouseSelectNumber} from '@/api/baseSetting/finsystenant'; import MyButton from '@/components/myButton/myButton'; import winMd from '@/components/win/win-md'; import upload from '@/components/upload/index'; -import { getUploadUrl } from '@/utils/base'; -import { mapGetters } from 'vuex'; +import {getUploadUrl} from '@/utils/base'; +import {mapGetters} from 'vuex'; export default { components: { MyButton, winMd, upload }, @@ -191,13 +193,26 @@ }, }, data() { + // 鑷畾涔夋牎楠� + // 鐗╁搧閲嶅鏍¢獙 + var checkGoodsTemplateId = (rule, value, callback) => { + if (!value) { + return callback(new Error('璇烽�夋嫨')); + } + let temp = this.formData.transferGoods.filter((v) => v.baseGoodsTemplateId == value); + if (!temp || temp.length != 1) { + return callback(new Error('宸查�夎繃姝ょ墿鍝�')); + } + callback(); + }; return { - loading: false, + loading: true, agencyOptions: [], // 璋冩嫧鏈烘瀯 categoryOptions: [], // 鐗╁搧鍒嗙被鍒楄〃 modelList: [], //鍨嬪彿鍒楄〃 formData: { transferBusinessType: 0, // 鍗曟嵁绫诲瀷銆�0浠撳簱璋冩嫧锛�1閮ㄩ棬鍒嗗彂锛�2閮ㄩ棬鐗╁搧鍥為�� + procureDoc: '', outAgencyId: '', // 璋冩嫧鏈烘瀯id createTime: '', // 璋冩嫧鏃堕棿 transferGoods: [], @@ -219,11 +234,11 @@ unit: null, //鍗曚綅 }, rules: { - warehouseId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], + outAgencyId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], createTime: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], - + procureDoc: [{ required: true, message: '璇蜂笂浼犺皟鎷ㄦ墜缁�', trigger: 'change' }], baseCategoryIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], - baseGoodsTemplateId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], + baseGoodsTemplateId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' },{ validator: checkGoodsTemplateId, trigger: ['blur', 'change'] }], modelsIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], counts: [ { required: true, message: '璇疯緭鍏�', trigger: 'change' }, @@ -235,12 +250,11 @@ title: '涓婁紶', max: 20, // 鏈�澶уぇ灏忥紝鍗曚綅M num: 2, // 鏀寔涓婁紶鍥剧墖涓暟 - accept: '.jpg,.png', // 闄愬埗鏍煎紡 tip: '', // 鎻愮ず 榛樿锛歚鍙兘涓婁紶${this.defaultSettings.num}涓�${this.defaultSettings.accept}鏂囦欢锛屼笖涓嶈秴杩�${this.defaultSettings.max}kb` uploadUrl: getUploadUrl(), // 涓婁紶璺緞 multiple: true, // 鏄惁鏀寔鎵归噺涓婁紶 disabled: false, // 鏄惁绂佺敤 - type: 'text', // text/picture + type: 'picture', // text/picture }, }; }, @@ -252,18 +266,23 @@ }, methods: { async init() { - this.handegetParentTenant(); + await this.handegetParentTenant(); + await this.getCategoryTree(); + this.loading = false this.getgoodsTemplate(); this.getgoodsModel(); - this.getCategoryTree(); - this.formData.transferGoods.push(JSON.parse(JSON.stringify(this.goodsItem))); }, // 鑾峰彇涓婄骇鏈烘瀯 - handegetParentTenant() { - getParentTenant().then((res) => { - this.agencyOptions = [res]; - this.formData.outAgencyId = res.id; + async handegetParentTenant() { + await getParentTenant().then((res) => { + if (res.id != this.userInfo.tenantId) { + this.agencyOptions = [res]; + this.formData.outAgencyId = res.id; + this.formData.transferGoods.push(JSON.parse(JSON.stringify(this.goodsItem))); + } else { + this.$message.warning('鏃犱笂绾ф満鏋�'); + } }); }, @@ -332,21 +351,12 @@ this.formData.transferGoods[index].modelsOptions = []; this.formData.transferGoods[index].modelsIds = []; this.formData.transferGoods[index].models = []; - - this.formData.transferGoods[index].baseCategoryId = e[e.length - 1]; // 鏍规嵁閫変腑鍒嗙被璇锋眰鐗╁搧鍚嶇О鍒楄〃 - this.getgoodsTemplate(e[e.length - 1], index); + this.getgoodsTemplate(e, index); }, // 鐗╁搧鍚嶇О鍒楄〃閫夋嫨 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 = []; @@ -357,20 +367,31 @@ }, // 瑙勬牸鍨嬪彿閫夋嫨 - modelChange(e, index) { + async modelChange(e, index) { let arr = [...this.formData.transferGoods[index].models]; let str = JSON.stringify(arr); - e.forEach((item) => { + for (let item of e) { if (str.indexOf(item) == -1) { let temp = this.goodsModelAll.find((v) => v.id == item); - arr.push({ ...this.modelsItem, baseGoodsModelsId: item, unit: temp.unit }); + let num = await warehouseSelectNumber({ + baseGoodsModelsId: item, + warehouseType: 0, + states: 1, + buyType: 1, + agencyId: this.formData.outAgencyId, + }); + arr.push({ ...this.modelsItem, baseGoodsModelsId: item, unit: temp.unit, worehouseCount: num }); } - }); + } this.formData.transferGoods[index].models = arr; }, // 瑙勬牸鍨嬪彿绉婚櫎 modelRemoveTag(e, index) { + if(e===-1){ + this.formData.transferGoods[index].models = [] + return + } let arr = this.formData.transferGoods[index].models; let delIndex = arr.findIndex((v) => v.baseGoodsModelsId == e); this.formData.transferGoods[index].models.splice(delIndex, 1); @@ -378,7 +399,8 @@ // 涓婁紶 uploadChange(e) { - console.log('uploadChange', e); + let arr = this.$refs.uploadRef.fileList; + this.formData.procureDoc = JSON.stringify(arr); }, // 鐐瑰嚮鏂板鐗╁搧 @@ -395,9 +417,9 @@ countsChange(e, goodsIndex, index) { const curItem = this.formData.transferGoods[goodsIndex].models[index]; const worehouseCount = curItem.worehouseCount; - if(e==0) { + if (e == 0) { this.$message.warning('鏁伴噺涓嶈兘涓�0'); - curItem.counts = null + curItem.counts = null; } if (e > worehouseCount) { this.$message.warning('鏁伴噺瓒呰繃鐜版湁搴撳瓨'); @@ -409,14 +431,17 @@ handleSubmit() { this.$refs['ruleForm'].validate((valid) => { if (valid) { - console.log('this.formData', this.formData); + if(this.loading) return + this.loading = true transferAdd(this.formData) .then((res) => { + this.loading = false this.$message.success('淇濆瓨鎴愬姛锛�'); this.close(); this.$emit('search'); }) .catch((err) => { + this.loading = false console.log('edit err', err); this.$message.error('淇濆瓨澶辫触'); }); @@ -427,11 +452,6 @@ }, close() { - this.formData = { - warehouseId: '', // 璋冩嫧浠撳簱id - procureTime: '', // 璋冩嫧鏃堕棿 - transferGoods: [], - }; this.$emit('close'); }, }, -- Gitblit v1.9.1