From 2096ac6f7379d75001b610c2de1fa380abd09519 Mon Sep 17 00:00:00 2001 From: futian.liu <liufutianyoo@163.com> Date: 星期二, 12 十二月 2023 16:13:44 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- admin-web/src/views/departmentitem/itemscr/scrapping/edit.vue | 231 ++++++++++++++++++++++++++++----------------------------- 1 files changed, 114 insertions(+), 117 deletions(-) diff --git a/admin-web/src/views/departmentitem/itemscr/scrapping/edit.vue b/admin-web/src/views/departmentitem/itemscr/scrapping/edit.vue index 969e3f5..fe8b798 100644 --- a/admin-web/src/views/departmentitem/itemscr/scrapping/edit.vue +++ b/admin-web/src/views/departmentitem/itemscr/scrapping/edit.vue @@ -20,12 +20,12 @@ <el-col :span="12"> <el-form-item label="鎶ュ簾鏃堕棿" prop="dealTime"> <el-date-picker - v-model="formData.dealTime" - type="datetime" - value="yyyy-MM-dd HH:mm:ss" - value-format="yyyyMMddHHmmss" - placeholder="璇烽�夋嫨鏃ユ湡" - style="width: 100%" + v-model="formData.dealTime" + type="datetime" + value="yyyy-MM-dd HH:mm:ss" + value-format="yyyyMMddHHmmss" + placeholder="璇烽�夋嫨鏃ユ湡" + style="width: 100%" > </el-date-picker> </el-form-item> @@ -42,64 +42,64 @@ <el-row :gutter="24"> <el-col :span="12"> <el-form-item - label="鐗╁搧鍒嗙被" - :prop="`goods.${goodsIndex}.baseCategoryId`" - :rules="{ + label="鐗╁搧鍒嗙被" + :prop="`goods.${goodsIndex}.baseCategoryId`" + :rules="{ required: true, message: '璇烽�夋嫨鐗╁搧鍒嗙被', trigger: 'change', }" > <el-cascader - v-model="goodsItem.baseCategoryId" - :options="categoryOptions" - :props="{ value: 'id',emitPath: false }" - :show-all-levels="false" - filterable - clearable - @change="categoryChange($event, goodsIndex)" - style="width: 100%" + v-model="goodsItem.baseCategoryId" + :options="categoryOptions" + :props="{ value: 'id',emitPath: false }" + :show-all-levels="false" + filterable + clearable + @change="categoryChange($event, goodsIndex)" + style="width: 100%" ></el-cascader> </el-form-item> </el-col> <el-col :span="12"> <el-form-item - label="鐗╁搧鍚嶇О" - :prop="`goods.${goodsIndex}.baseGoodsTemplateId`" - :rules="rules.baseGoodsTemplateId" + label="鐗╁搧鍚嶇О" + :prop="`goods.${goodsIndex}.baseGoodsTemplateId`" + :rules="rules.baseGoodsTemplateId" > <el-select - v-model="goodsItem.baseGoodsTemplateId" - :placeholder="goodsItem.baseCategoryId?'璇烽�夋嫨鐗╁搧':'璇峰厛閫夋嫨鐗╁搧鍒嗙被'" - filterable - clearable - :disabled="!goodsItem.baseCategoryId" - style="width: 100%" - @change="goodsTemplateChange($event, goodsIndex)" + v-model="goodsItem.baseGoodsTemplateId" + :placeholder="goodsItem.baseCategoryId?'璇烽�夋嫨鐗╁搧':'璇峰厛閫夋嫨鐗╁搧鍒嗙被'" + filterable + clearable + :disabled="!goodsItem.baseCategoryId" + style="width: 100%" + @change="goodsTemplateChange($event, goodsIndex)" > <el-option - v-for="item in goodsItem.goodsOptions" - :key="item.id" - :label="item.goodsName" - :value="item.id" + v-for="item in goodsItem.goodsOptions" + :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="`goods.${goodsIndex}.businessFormCode`" - :rules="rules.businessFormCode"> + label="閫夋嫨鍒嗗彂鍗�" + :prop="`goods.${goodsIndex}.businessFormCode`" + :rules="rules.businessFormCode"> <div @click="showFenFa(goodsIndex)"> <el-input - placeholder="璇烽�夋嫨鍒嗗彂鍗�" - readonly - v-model="goodsItem.businessFormCode" - :placeholder="goodsItem.baseGoodsTemplateId?'璇烽�夋嫨鍒嗗彂鍗�':'璇峰厛閫夋嫨鐗╁搧'" - :disabled="!goodsItem.baseGoodsTemplateId" - suffix-icon="el-icon-arrow-down" - class="cursor-p"></el-input> + placeholder="璇烽�夋嫨鍒嗗彂鍗�" + readonly + v-model="goodsItem.businessFormCode" + :placeholder="goodsItem.baseGoodsTemplateId?'璇烽�夋嫨鍒嗗彂鍗�':'璇峰厛閫夋嫨鐗╁搧'" + :disabled="!goodsItem.baseGoodsTemplateId" + suffix-icon="el-icon-arrow-down" + class="cursor-p"></el-input> </div> </el-form-item> </el-col> @@ -142,15 +142,16 @@ <el-table-column prop="counts" label="鎶ュ簾鏁伴噺" align="center"> <template slot-scope="{row,$index}"> <el-form-item - label-width="0" - :prop="`goods.${goodsIndex}.models.${mIndex}.counts`" - :rules="[ + label-width="0" + :prop="`goods.${goodsIndex}.models.${mIndex}.counts`" + :rules="[ {validator: checkCounts,counts:row.counts,userUseCount: row.userUseCount, trigger: ['blur', 'change']} ]" > <el-input - type="number" - v-model.number="row.counts" + clearable + type="number" + v-model.number="row.counts" ></el-input> </el-form-item> </template> @@ -158,18 +159,18 @@ <el-table-column prop="counts" label="鎶ュ簾鍘熷洜" align="center"> <template slot-scope="{row,$index}"> <el-form-item - label-width="0" - :prop="`goods.${goodsIndex}.models.${mIndex}.scrappedCode`" - :rules="[ - {validator: checkReason,scrappedCode:row.scrappedCode, trigger: ['blur', 'change']} + label-width="0" + :prop="`goods.${goodsIndex}.models.${mIndex}.scrappedCode`" + :rules="[ + {validator: checkReason,counts:row.counts,scrappedCode:row.scrappedCode, trigger: ['blur', 'change']} ]" > - <el-select v-model="row.scrappedCode" placeholder="璇烽�夋嫨"> + <el-select v-model="row.scrappedCode" clearable placeholder="璇烽�夋嫨"> <el-option - v-for="item in scrapReasonOptions" - :key="item.dict_code" - :label="item.dict_label" - :value="item.dict_code" + v-for="item in scrapReasonOptions" + :key="item.dict_code" + :label="item.dict_label" + :value="item.dict_code" /> </el-select> </el-form-item> @@ -179,22 +180,22 @@ </div> <div class="btn-group"> <el-button - v-if="formData.goods.length > 1" - name="绉婚櫎" - type="danger" - plain - size="mini" - @click="removeGoods(goodsIndex)" + v-if="formData.goods.length > 1" + name="绉婚櫎" + type="danger" + plain + size="mini" + @click="removeGoods(goodsIndex)" >绉婚櫎 </el-button > <el-button - v-if="formData.goods.length - 1 == goodsIndex" - name="鏂板鐗╁搧" - type="primary" - plain - size="mini" - @click="addGoods" + v-if="formData.goods.length - 1 == goodsIndex" + name="鏂板鐗╁搧" + type="primary" + plain + size="mini" + @click="addGoods" >鏂板鐗╁搧 </el-button > @@ -229,7 +230,7 @@ <script> import {departmentListAll} from '@/api/system/deptment'; import {goodsTemplate} from '@/api/baseSetting/finsystenant'; -import {scrappedAdd} from '@/api/stock/deptScrap'; +import {scrappedAdd} from '@/api/deptGoods/scrap'; import {getTree} from '@/api/foudation/classification'; import MyButton from '@/components/myButton/myButton'; import winMd from '@/components/win/win-md'; @@ -251,30 +252,14 @@ }, }, data() { - // 鑷畾涔夋牎楠� - // 鐗╁搧閲嶅鏍¢獙 - var checkBusinessFormCode = (rule, value, callback) => { - if (!value) { - return callback(new Error('璇烽�夋嫨')); - } - let temp = this.formData.goods.filter((v) => v.businessFormCode == value); - if (!temp || temp.length != 1) { - return callback(new Error('宸查�夎繃姝ゅ垎鍙戝崟')); - } - callback(); - }; return { checkCounts: (rule, value, callback) => { if (!rule.counts) { - return callback(new Error('璇疯緭鍏ユ姤搴熸暟閲�')); + return callback(); } if (!Number.isInteger(rule.counts)) { // this.$message.warning('璇疯緭鍏ユ暟瀛楀��'); return callback(new Error('璇疯緭鍏ユ暟瀛楀��')); - } - if (rule.counts < 1) { - // this.$message.warning('鏁板瓧鍊间笉鑳戒负0'); - return callback(new Error('鏁板瓧鍊煎繀椤诲ぇ浜�0')); } if (rule.counts > rule.userUseCount) { // this.$message.warning('鍒嗗彂鏁伴噺涓嶈兘澶т簬鍓╀綑鏁伴噺'); @@ -283,7 +268,7 @@ callback(); }, checkReason: (rule, value, callback) => { - if (!rule.scrappedCode) { + if (rule.counts && !rule.scrappedCode) { return callback(new Error('璇烽�夋嫨鎶ュ簾鍘熷洜')); } callback(); @@ -303,7 +288,7 @@ fenfaData: [], formData: { departmentId: '', // 鎶ュ簾閮ㄩ棬id - dealTime: '', // 鎶ュ簾鏃堕棿 + dealTime: DateFormatter.formatDate(new Date(), 'yyyyMMddhhmmss'), // 鎶ュ簾鏃堕棿 procureDoc: '', goods: [], }, @@ -332,11 +317,7 @@ message: '璇烽�夋嫨鐗╁搧', trigger: 'change' }], - businessFormCode: [{ - required: true, - message: '璇烽�夋嫨鍒嗗彂鍗�', - trigger: 'change' - }, {validator: checkBusinessFormCode, trigger: ['blur', 'change']}], + businessFormCode: [{required: true, message: '璇烽�夋嫨鍒嗗彂鍗�', trigger: 'change'}], counts: [{required: true, message: '璇疯緭鍏�', trigger: 'change'}], reason: [{required: true, message: '璇烽�夋嫨', trigger: 'change'}], }, @@ -350,7 +331,6 @@ uploadUrl: getUploadUrl(), // 涓婁紶璺緞 multiple: true, // 鏄惁鏀寔鎵归噺涓婁紶 disabled: false, // 鏄惁绂佺敤 - type: 'picture', // text/picture }, scrapReasonOptions: [] // 鎶ュ簾鍘熷洜 }; @@ -379,13 +359,13 @@ // 鑾峰彇閮ㄩ棬鍒楄〃 async getdeptmentList() { await departmentListAll({tenantId: this.userInfo.tenantId}) - .then((res) => { - this.departmentOptions = res; - this.formData.goods.push(JSON.parse(JSON.stringify(this.goodsItem))); - }) - .catch((err) => { - console.log('err', err); - }); + .then((res) => { + this.departmentOptions = res; + this.formData.goods.push(JSON.parse(JSON.stringify(this.goodsItem))); + }) + .catch((err) => { + console.log('err', err); + }); }, removeEmptyChildren(arr) { @@ -432,6 +412,7 @@ categoryChange(e, index) { this.formData.goods[index].goodsOptions = []; this.formData.goods[index].baseGoodsTemplateId = ''; + this.formData.goods[index].businessFormCode = ''; this.formData.goods[index].goodsTemplateName = ''; this.formData.goods[index].models = []; // 鏍规嵁閫変腑鍒嗙被璇锋眰鐗╁搧鍚嶇О鍒楄〃 @@ -441,9 +422,8 @@ // 鐗╁搧鍚嶇О鍒楄〃閫夋嫨 goodsTemplateChange(e, index) { this.formData.goods[index].models = []; - this.formData.goods[index].goodsTemplateName = this.getGoodsTemplateName(e); - + this.formData.goods[index].businessFormCode = ''; }, showFenFa(index) { this.loading = true @@ -487,6 +467,13 @@ this.$message.error('璇烽�夋嫨鍒嗗彂鍗�'); return } + let bIdx = this.formData.goods.findIndex((v) => v.businessFormCode == this.curFenfa.businessFormCode); + let gIdx = this.formData.goods.findIndex((v) => v.baseGoodsTemplateId == this.fenfaSetting.baseGoodsTemplateId); + + if (gIdx !== -1 && gIdx !== this.fenfaSetting.goodsIdx && bIdx !== -1 && bIdx !== this.fenfaSetting.goodsIdx) { + this.$message.error('鍚屼竴涓墿鍝佷笉鑳介�夋嫨鐩稿悓鐨勫垎鍙戝崟'); + return; + } getGoodsUseInfoByFfOrderAndGoodId({ transBusinessId: this.curFenfa.transBusinessId, baseGoodsTemplateId: this.fenfaSetting.baseGoodsTemplateId @@ -513,26 +500,36 @@ this.$refs['ruleForm'].validate((valid) => { if (valid) { let params = JSON.parse(JSON.stringify(this.formData)) - params.goods.map((g,gid)=>{ + params.goods.map(g => { delete g.goodsOptions - let arr=[] - g.models.map(m=>{ - arr=arr.concat(m) + let arr = [] + g.models.map(m => { + m.map(item=>{ + if(item.counts&&item.counts>0){ + arr.push(item) + } + }) }) g.models = arr }) - // console.log('params', params); - // return + params.goods = params.goods.filter(g=>g.models.length>0) + if(params.goods.length===0){ + this.$message.error('璇疯嚦灏戝~鍐欎竴涓姤搴熺墿鍝�'); + return; + } + if (this.loading) return + this.loading = true scrappedAdd(params) - .then((res) => { - this.$message.success('淇濆瓨鎴愬姛锛�'); - this.close(); - this.$emit('search'); - }) - .catch((err) => { - console.log('edit err', err); - this.$message.error('淇濆瓨澶辫触'); - }); + .then((res) => { + this.loading = false + this.$message.success('淇濆瓨鎴愬姛锛�'); + this.close(); + this.$emit('search'); + }) + .catch((err) => { + this.loading = false + this.$message.error('淇濆瓨澶辫触'); + }); } else { this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��'); } -- Gitblit v1.9.1