From b4adff68a07b783fc90da1c9370d8be5f383e700 Mon Sep 17 00:00:00 2001 From: 黎星凯 <13949086503@163.com> Date: 星期三, 08 五月 2024 13:46:34 +0800 Subject: [PATCH] 20240528修改: bug41、42、43修改 领用单(分发单),调拨单,流程优化 --- admin-web/src/views/departmentitem/itemdis/distribution/edit.vue | 573 ++++++++++++++++++++++++++++++--------------------------- 1 files changed, 301 insertions(+), 272 deletions(-) diff --git a/admin-web/src/views/departmentitem/itemdis/distribution/edit.vue b/admin-web/src/views/departmentitem/itemdis/distribution/edit.vue index ac9c234..d85c8d9 100644 --- a/admin-web/src/views/departmentitem/itemdis/distribution/edit.vue +++ b/admin-web/src/views/departmentitem/itemdis/distribution/edit.vue @@ -1,36 +1,37 @@ <template> - <win-md class="stock-edit" title="鐗╁搧鍒嗗彂" @close="close" :width="'800px'"> + <win-md class="stock-edit" title="鐗╁搧鍒嗗彂" @close="close" width="900px" :loading="loading"> <el-form 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"> - <el-form-item label="閮ㄩ棬" prop="warehouseId"> - <el-select v-model="formData.warehouseId" placeholder="璇烽�夋嫨" style="width: 100%"> - <el-option v-for="item in departmentOptions" :key="item.id" :label="item.name" :value="item.id" /> + <el-form-item label="閮ㄩ棬" prop="departmentId"> + <el-select ref="department" v-model="formData.departmentId" clearable placeholder="璇烽�夋嫨" style="width: 100%"> + <el-option v-for="item in departmentOptions" :key="item.id" :label="item.name" :value="item.id" + clearable/> </el-select> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="棰嗗彇浜�" prop="warehouseId"> - <el-input v-model="formData.warehouseId" placeholder="璇疯緭鍏�"></el-input> + <el-form-item label="棰嗗彇浜�" prop="operatorName"> + <el-input v-model="formData.operatorName" placeholder="璇疯緭鍏�" clearable></el-input> </el-form-item> </el-col> </el-row> <el-row :gutter="24" class="headerHeight"> <el-col :span="12"> - <el-form-item label="鑱旂郴鐢佃瘽" prop="buyType"> - <el-input v-model.number="formData.buyType" placeholder="璇疯緭鍏�"></el-input> + <el-form-item label="鑱旂郴鐢佃瘽" prop="tel"> + <el-input v-model.number="formData.tel" placeholder="璇疯緭鍏�" clearable></el-input> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="閲囪喘鏃堕棿" prop="procureTime"> + <el-form-item label="棰嗗彇鏃堕棿" prop="createTime"> <el-date-picker - v-model="formData.procureTime" - type="datetime" - value="yyyy-MM-dd HH:mm:ss" - value-format="yyyyMMddHHmmss" - placeholder="璇烽�夋嫨鏃ユ湡" - style="width: 100%" + v-model="formData.createTime" + type="datetime" + clearable + value-format="yyyyMMddHHmmss" + placeholder="璇烽�夋嫨鏃ユ湡" + style="width: 100%" > </el-date-picker> </el-form-item> @@ -43,46 +44,50 @@ </el-form-item> </el-col> </el-row> - <div class="goods-card" v-for="(goodsItem, goodsIndex) in formData.procureGoods" :key="goodsIndex"> + <div class="goods-card" v-for="(goodsItem, goodsIndex) in formData.transferGoods" :key="goodsIndex"> <el-row :gutter="24"> <el-col :span="12"> <el-form-item - label="鐗╁搧鍒嗙被" - :prop="`procureGoods[${goodsIndex}].baseCategoryIds`" - :rules="{ + label="鐗╁搧鍒嗙被" + :prop="`transferGoods.${goodsIndex}.baseCategoryId`" + :rules="{ required: true, - message: '璇烽�夋嫨', + message: '璇烽�夋嫨鐗╁搧鍒嗙被', trigger: 'change', }" > <el-cascader - v-model="goodsItem.baseCategoryIds" - :options="categoryOptions" - :props="{ value: 'id' }" - @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="`procureGoods[${goodsIndex}].baseGoodsTemplateId`" - :rules="rules.baseGoodsTemplateId" + label="鐗╁搧鍚嶇О" + :prop="`transferGoods.${goodsIndex}.baseGoodsTemplateId`" + :rules="rules.baseGoodsTemplateId" > <el-select - v-model="goodsItem.baseGoodsTemplateId" - placeholder="璇峰厛鎷╃墿鍝佸垎绫�" - filterable - :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> @@ -91,136 +96,157 @@ <el-row :gutter="24"> <el-col :span="12"> <el-form-item - label="瑙勬牸鍨嬪彿" - :prop="`procureGoods[${goodsIndex}].modelsIds`" - :rules="{required: true,message: '璇烽�夋嫨',trigger: 'change',}"> + label="瑙勬牸鍨嬪彿" + :prop="`transferGoods.${goodsIndex}.modelsIds`" + :rules="{required: true,message: '璇烽�夋嫨瑙勬牸鍨嬪彿',trigger: 'change',}"> <el-select - v-model="goodsItem.modelsIds" - multiple - placeholder="璇峰厛鎷╃墿鍝佸悕绉�" - :disabled="!goodsItem.baseCategoryId" - @change="modelChange($event, goodsIndex)" - @remove-tag="modelRemoveTag($event, goodsIndex)" - style="width: 100%" + v-model="goodsItem.modelsIds" + multiple + :placeholder="goodsItem.baseGoodsTemplateId?'璇烽�夋嫨瑙勬牸鍨嬪彿':'璇峰厛閫夋嫨鐗╁搧鍚嶇О'" + :disabled="!goodsItem.baseGoodsTemplateId" + @change="modelChange($event, goodsIndex)" + @remove-tag="modelRemoveTag($event, goodsIndex)" + style="width: 100%" > <el-option - v-for="item in goodsItem.modelsOptions" - :key="item.id" - :label="item.modelName" - :value="item.id" + v-for="item in goodsItem.modelsOptions" + :key="item.id" + :label="item.modelName" + :value="item.id" /> </el-select> </el-form-item> </el-col> </el-row> <el-row class="card3" v-for="(mItem, mIndex) in goodsItem.models" :key="mIndex"> - <el-row :gutter="24" type="flex" align="middle" style="height: 50px"> - <el-col :span="8"> - <el-form-item label="瑙勬牸鍨嬪彿:" prop="baseGoodsModelsId" style="margin-bottom: 0"> - {{ getGoodsModelsName(mItem.baseGoodsModelsId) }} - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="鍓╀綑鏁伴噺:" prop="baseGoodsModelsId" style="margin-bottom: 0" label-width="80"> - 50 - </el-form-item> - </el-col> - <!--A绫诲晢鍝� --> - <el-col :span="24" v-if="goodsItem.type===1"> - <el-table :data="mItem.clist" :stripe="true" > - <el-table-column prop="count" label="鍒嗗彂鏁伴噺" align="center"> - <template slot-scope="scope"> - <el-input v-model="scope.row.count"></el-input> - </template> - </el-table-column> - <el-table-column prop="count" label="浣跨敤浜�" align="center"> - <template slot-scope="scope"> - <el-input v-model="scope.row.user" maxlength="20"></el-input> - </template> - </el-table-column> - <el-table-column prop="count" label="鑱旂郴鐢佃瘽" align="center"> - <template slot-scope="scope"> - <el-input v-model.number="scope.row.phone" maxlength="11"></el-input> - </template> - </el-table-column> - <el-table-column align="left" width="60"> - <template slot-scope="scope"> - <i - v-if="mItem.clist.length > 1" + <el-col style="padding: 15px 0" :span="10"> + <el-form-item label="瑙勬牸鍨嬪彿:" style="margin-bottom: 0"> + {{ getGoodsModelsName(mItem.baseGoodsModelsId) }} + </el-form-item> + </el-col> + <el-col style="padding: 15px 0" :span="4"> + <el-form-item label="鍓╀綑鏁伴噺:" style="margin-bottom: 0" label-width="80"> + {{ mItem.worehouseCount }} + </el-form-item> + </el-col> + <!--A绫诲晢鍝� --> + <el-col :span="24" v-if="goodsItem.classification==='A'"> + <el-table :data="mItem.procureModelUserList" :stripe="true"> + <el-table-column label="鍒嗗彂鏁伴噺" align="center"> + <template slot-scope="{$index,row}"> + <el-form-item + :prop="`transferGoods.${goodsIndex}.models.${mIndex}.procureModelUserList.${$index}.goodsNum`" + :rules="[ + {validator: checkCounts,type: 1, userList: mItem.procureModelUserList,worehouseCount: mItem.worehouseCount, trigger: ['blur', 'change']} + ]" + label-width="0" + > + <el-input v-model.number="row.goodsNum" style="width: 100%"></el-input> + </el-form-item> + </template> + </el-table-column> + <el-table-column prop="nowUserName" label="浣跨敤浜�" align="center"> + <template slot-scope="{$index,row}"> + <el-form-item + :prop="`transferGoods.${goodsIndex}.models.${mIndex}.procureModelUserList.${$index}.nowUserName`" + :rules="[{required: true, message: '璇疯緭鍏ヤ娇鐢ㄤ汉濮撳悕', trigger: ['blur', 'change']}]" + label-width="0" + > + <el-input v-model="row.nowUserName" style="width: 100%"></el-input> + </el-form-item> + </template> + </el-table-column> + <el-table-column prop="nowUserPhone" label="鑱旂郴鐢佃瘽" align="center"> + <template slot-scope="{$index,row}"> + <el-form-item + :prop="`transferGoods.${goodsIndex}.models.${mIndex}.procureModelUserList.${$index}.nowUserPhone`" + :rules="[{required: true, message: '璇疯緭鍏ヨ仈绯荤數璇�', trigger: ['blur', 'change']}]" + label-width="0" + > + <el-input v-model="row.nowUserPhone" style="width: 100%"></el-input> + </el-form-item> + </template> + </el-table-column> + <el-table-column align="left" width="60"> + <template slot-scope="scope"> + <i + v-if="mItem.procureModelUserList.length > 1" class="el-icon-remove-outline" style="color: #f56c6c; font-size: 16px; cursor: pointer" @click="handleDel(goodsIndex, mIndex, scope.$index)" - ></i> - <i - v-if="mItem.clist.length - 1 == scope.$index" + ></i> + <i + v-if="mItem.procureModelUserList.length - 1 == scope.$index" class="el-icon-circle-plus-outline" style="color: #0d997c; font-size: 16px; cursor: pointer" @click="handleAdd(goodsIndex, mIndex, scope.$index)" - ></i> - </template> - </el-table-column> - </el-table> - </el-col> - <!--BC绫诲晢鍝� --> - <el-col :span="10" v-else> - <el-form-item label="鍒嗗彂鏁伴噺:" prop="baseGoodsModelsId" style="margin-bottom: 0" label-width="80"> - <el-input v-model.number="mItem.count" style="width: 160px;"></el-input> - </el-form-item> - </el-col> - </el-row> + ></i> + </template> + </el-table-column> + </el-table> + </el-col> + <!--BC绫诲晢鍝� --> + <el-col style="padding: 15px 0" :span="10" v-else> + <el-form-item + label="鍒嗗彂鏁伴噺:" + :prop="`transferGoods.${goodsIndex}.models.${mIndex}.counts`" + :rules="[ + {validator: checkCounts, type: 2,worehouseCount: mItem.worehouseCount, trigger: ['blur', 'change']} + ]" + style="margin-bottom: 0" label-width="80"> + <el-input v-model.number="mItem.counts" style="width: 160px;"></el-input> + </el-form-item> + </el-col> </el-row> <div class="btn-group"> <el-button - v-if="formData.procureGoods.length > 1" - name="绉婚櫎" - type="danger" - plain - size="mini" - @click="removeGoods(goodsIndex)" - >绉婚櫎</el-button> + v-if="formData.transferGoods.length > 1" + name="绉婚櫎" + type="danger" + plain + size="mini" + @click="removeGoods(goodsIndex)" + >绉婚櫎 + </el-button> <el-button - v-if="formData.procureGoods.length - 1 == goodsIndex" - name="鏂板鐗╁搧" - type="primary" - plain - size="mini" - @click="addGoods" - >鏂板鐗╁搧</el-button> + v-if="formData.transferGoods.length - 1 == goodsIndex" + name="鏂板鐗╁搧" + type="primary" + plain + size="mini" + @click="addGoods" + >鏂板鐗╁搧 + </el-button> </div> </div> </div> </el-form> <div slot="footer" align="center" class="dialog-footer"> - <my-button name="鍙栨秷" site="form" @click="close" /> - <my-button name="淇濆瓨" site="form" @click="handleSubmit" /> + <my-button name="鍙栨秷" site="form" @click="close"/> + <my-button name="淇濆瓨" site="form" @click="handleSubmit"/> </div> </win-md> </template> <script> -import { - goodsTemplate, - procureAdd, - procureEdit, - selectTenantWarehouse, - goodsModel, - procureDetail, -} from '@/api/stock/procure/purchaseOrder'; -import { departmentListAll } from '@/api/system/deptment'; -import { getTree } from '@/api/foudation/classification'; +import {goodsModel, goodsTemplate,} from '@/api/stock/procure/purchaseOrder'; +import {transferAdd} from '@/api/stock/transfer'; +import {departmentListAll} from '@/api/system/deptment'; +import {getTree} from '@/api/foudation/classification'; import MyButton from '@/components/myButton/myButton'; import winMd from '@/components/win/win-md'; import upload from '@/components/upload/index'; -import { getUploadUrl, getDownUrl } from '@/utils/base'; -import { findParentIds } from '@/utils/index'; -import { mapGetters } from 'vuex'; +import {getUploadUrl} from '@/utils/base'; +import {mapGetters} from 'vuex'; import * as DateFormatter from '@/utils/DateFormatter'; +import {warehouseAllSelectNumber} from "@/api/baseSetting/finsystenant"; export default { - components: { MyButton, winMd, upload }, + components: {MyButton, winMd, upload}, props: { setting: { type: Object, - default: () => {}, + default: () => { + }, }, }, data() { @@ -230,57 +256,61 @@ if (!value) { return callback(new Error('璇烽�夋嫨')); } - let temp = this.formData.procureGoods.filter((v) => v.baseGoodsTemplateId == value); + let temp = this.formData.transferGoods.filter((v) => v.baseGoodsTemplateId == value); if (!temp || temp.length != 1) { return callback(new Error('宸查�夎繃姝ょ墿鍝�')); } callback(); }; - // 鏁伴噺鏍¢獙 - var checkCounts = (rule, value, callback) => { - console.log(value); - if (!value) { - return callback(new Error('璇疯緭鍏�')); - } - if (!Number.isInteger(value)) { - this.$message.warning('璇疯緭鍏ユ暟瀛楀��'); - return callback(new Error('璇疯緭鍏ユ暟瀛楀��')); - } - if (value == 0) { - this.$message.warning('鏁板瓧鍊间笉鑳戒负0'); - return callback(new Error('鏁板瓧鍊间笉鑳戒负0')); - } - callback(); - }; return { - loading: false, - buyTypeOptions: [ - { - label: '闆嗛噰', - value: '1', - }, - { - label: '鑷噰', - value: '2', - }, - ], + checkCounts: (rule, value, callback) => { + if (!value) { + return callback(new Error('璇疯緭鍏ュ垎鍙戞暟閲�')); + } + if (!Number.isInteger(value)) { + // this.$message.warning('璇疯緭鍏ユ暟瀛楀��'); + return callback(new Error('璇疯緭鍏ユ暟瀛楀��')); + } + if (value < 1) { + // this.$message.warning('鏁板瓧鍊间笉鑳戒负0'); + return callback(new Error('鏁板瓧鍊煎繀椤诲ぇ浜�0')); + } + if (value > rule.worehouseCount) { + // this.$message.warning('鍒嗗彂鏁伴噺涓嶈兘澶т簬鍓╀綑鏁伴噺'); + return callback(new Error('鍒嗗彂鏁伴噺涓嶈兘澶т簬鍓╀綑鏁伴噺')); + } + if(rule.type===1){ + let sum = 0 + rule.userList.map(item=>{ + sum+=(item.goodsNum||0) + }) + if (sum > rule.worehouseCount) { + // this.$message.warning('鍒嗗彂鏁伴噺鎬诲拰涓嶈兘澶т簬鍓╀綑鏁伴噺'); + return callback(new Error('鍒嗗彂鏁伴噺鎬诲拰涓嶈兘澶т簬鍓╀綑鏁伴噺')); + } + } + callback(); + }, + loading: true, fileList: [], departmentOptions: [], // 閮ㄩ棬鍒楄〃 categoryOptions: [], // 鐗╁搧鍒嗙被鍒楄〃 modelList: [], //鍨嬪彿鍒楄〃 formData: { + transferBusinessType: 1, // 鍗曟嵁绫诲瀷銆�0浠撳簱璋冩嫧锛�1閮ㄩ棬鍒嗗彂锛�2閮ㄩ棬鐗╁搧鍥為�� + departmentId: '', // 閮ㄩ棬id + departmentName: '', // 閮ㄩ棬鍚嶇О + operatorName: '', // 棰嗗彇浜� + tel: '', // 鑱旂郴鐢佃瘽 + createTime: DateFormatter.formatDate(new Date(), 'yyyyMMddhhmmss'), // 鍒嗗彂鏃堕棿 procureDoc: '', - warehouseId: '', // 鍏ュ簱浠撳簱id - procureTime: DateFormatter.formatDate(new Date()), // 閲囪喘鏃堕棿 - procureGoods: [], + transferGoods: [], }, goodsItem: { - baseCategoryIds: '', // 鍒嗙被缂栧彿鏁扮粍 baseCategoryId: '', // 鍒嗙被缂栧彿 + classification: '', baseGoodsTemplateId: '', // 鐗╁搧妯$増缂栧彿 goodsTemplateName: '', // 鐗╁搧妯$増鍚嶇О - supplier: '', // 渚涘簲鍟� - sort: '', // 鏄剧ず椤哄簭 goodsOptions: [], // 鐗╁搧鍒楄〃select modelsOptions: [], //瑙勬牸鍨嬪彿select models: [], // 鐗╁搧鍚嶇О @@ -288,35 +318,53 @@ }, modelsItem: { baseGoodsModelsId: '', // 瑙勬牸鍨嬪彿缂栧彿 - syCount: '', + procureModelUserList: [], + counts: '', }, clistItem: { - count: null, - user: null, - phone: null, + goodsNum: null, + nowUserName: null, + nowUserPhone: null, }, rules: { - warehouseId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], - procureTime: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], - buyType: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], - - procureDoc: [{ required: true, message: '璇蜂笂浼�', trigger: 'change' }], - baseCategoryIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], - baseGoodsTemplateId: [{ validator: checkGoodsTemplateId, trigger: ['blur', 'change'] }], - modelsIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], - counts: [{ validator: checkCounts, trigger: 'blur' }], + departmentId: [{required: true, message: '璇烽�夋嫨閮ㄩ棬', trigger: 'change'}], + operatorName: [{required: true, message: '璇峰~鍐欓鍙栦汉', trigger: 'blur'}], + tel: [{required: true, message: '璇峰~鍐欒仈绯荤數璇�', trigger: 'blur'}], + createTime: [{required: true, message: '璇烽�夋嫨鍒嗗彂鏃堕棿', trigger: 'change'}], + // 澧炲姞浜嗗垎鍙戠殑涓棿娴佺▼锛岃嫢鍚庢湡搴忓彿姝ゆ祦绋嬶紙涓嬭浇鍒嗗彂鍗曪紝涓婁紶鍒嗗彂鍗曪級鍒欐敞鎺塸rocureDoc + procureDoc: [{required: true, message: '璇蜂笂浼犲鎵规墜缁�', trigger: 'change'}], + baseCategoryIds: [{required: true, message: '璇烽�夋嫨', trigger: 'change'}], + baseGoodsTemplateId: [{required: true, message: '璇烽�夋嫨', trigger: 'change'},{validator: checkGoodsTemplateId, trigger: ['blur', 'change']}], + modelsIds: [{required: true, message: '璇烽�夋嫨', trigger: 'change'}], + transferGoods: [ + { + models: [ + { + counts: [ + {required: true, message: '璇疯緭鍏�', trigger: 'change'}, + {type: 'number', message: '鏁伴噺蹇呴』涓烘暣鏁�'}, + ], + procureModelUserList: [ + { + goodsNum: [{required: true, message: '璇疯緭鍏�', trigger: 'blur'}], + nowUserName: [{required: true, message: '璇疯緭鍏�', trigger: 'blur'}], + nowUserPhone: [{required: true, message: '璇疯緭鍏�', trigger: 'blur'}], + } + ] + } + ] + } + ] }, uploadSettings: { title: '涓婁紶', max: 20, // 鏈�澶уぇ灏忥紝鍗曚綅M num: 10, // 鏀寔涓婁紶鍥剧墖涓暟 - accept: '.jpg,.png', // 闄愬埗鏍煎紡 tip: '', // 鎻愮ず 榛樿锛歚鍙兘涓婁紶${this.defaultSettings.num}涓�${this.defaultSettings.accept}鏂囦欢锛屼笖涓嶈秴杩�${this.defaultSettings.max}kb` uploadUrl: getUploadUrl(), // 涓婁紶璺緞 multiple: true, // 鏄惁鏀寔鎵归噺涓婁紶 disabled: false, // 鏄惁绂佺敤 - type: 'picture', // text/picture }, }; }, @@ -328,54 +376,25 @@ }, methods: { async init() { - this.getdeptmentList(); - this.getgoodsTemplate(); - this.getgoodsModel(); + await this.getdeptmentList(); // 鑾峰彇鐗╁搧鍒嗙被鍒楄〃 const treeRes = await getTree(); this.categoryOptions = this.removeEmptyChildren(treeRes); - if (this.setting.id) { - const detail = await procureDetail({ id: this.setting.id }); - this.formData = Object.assign(this.formData, detail); - if (this.formData.procureDoc) { - this.fileList = JSON.parse(this.formData.procureDoc); - } - this.$set(this.formData, 'buyType', this.formData.buyType.toString()); - this.formData.procureTime = this.formData.procureTime.toString(); - this.formData.procureGoods.map((item, index) => { - // 鏍规嵁瀛愰泦ID鎷兼帴鐗╁搧鍒嗙被鍒楄〃 - item.baseCategoryIds = findParentIds(this.categoryOptions, item.baseCategoryId); - this.$set( - this.formData.procureGoods[index], - 'modelsIds', - item.models.map((v) => v.baseGoodsModelsId), - ); - this.getgoodsTemplate(item.baseCategoryId, index); - this.getgoodsModel(item.baseGoodsTemplateId, index); - item.models.forEach((child, childIndex) => { - this.$set(this.formData.procureGoods[index].models[childIndex], 'priceYuan', child.price / 100); - }); - return item; - }); - } + this.loading = false + this.getgoodsTemplate(); + this.getgoodsModel(); }, - // 鑾峰彇鍏ュ簱浠撳簱鍒楄〃 + // 鑾峰彇閮ㄩ棬鍒楄〃 getdeptmentList() { - departmentListAll({ agencyId: this.userInfo.tenantId }) - .then((res) => { - this.departmentOptions = res; - if (!this.setting.id && res.length) { - this.formData.procureGoods.push(JSON.parse(JSON.stringify(this.goodsItem))); - } - if (this.departmentOptions.length && !this.formData.warehouseId) { - // 榛樿閫変腑绗竴涓粨搴� - this.formData.warehouseId = this.departmentOptions[0].id; - } - }) - .catch((err) => { - console.log('err', err); - }); + departmentListAll({tenantId: this.userInfo.tenantId}) + .then((res) => { + this.departmentOptions = res; + this.formData.transferGoods.push(JSON.parse(JSON.stringify(this.goodsItem))); + }) + .catch((err) => { + console.log('err', err); + }); }, removeEmptyChildren(arr) { @@ -391,9 +410,10 @@ // 鑾峰彇鐗╁搧鍚嶇О鍒楄〃 getgoodsTemplate(id, index) { - goodsTemplate({ categoryId: id || '' }).then((res) => { + goodsTemplate({categoryId: id || '', agencyId: this.userInfo.tenantId}).then((res) => { if (index || index == 0) { - this.$set(this.formData.procureGoods[index], 'goodsOptions', res); + this.$set(this.formData.transferGoods[index], 'goodsOptions', res); + this.$set(this.formData.transferGoods[index], 'classification', res[0].classification); } else { this.goodsTemplatelAll = res; } @@ -402,9 +422,9 @@ // 瑙勬牸鍨嬪彿 getgoodsModel(id, index) { - goodsModel({ goodsTemplatesId: id || '' }).then((res) => { + goodsModel({goodsTemplatesId: id || '', agencyId: this.userInfo.tenantId}).then((res) => { if (index || index == 0) { - this.$set(this.formData.procureGoods[index], 'modelsOptions', res); + this.$set(this.formData.transferGoods[index], 'modelsOptions', res); } else { this.goodsModelAll = res; } @@ -431,60 +451,64 @@ // 鐗╁搧鍒嗙被閫夋嫨 categoryChange(e, index) { - this.formData.procureGoods[index].goodsOptions = []; - this.formData.procureGoods[index].baseGoodsTemplateId = ''; - this.formData.procureGoods[index].goodsTemplateName = ''; - this.formData.procureGoods[index].modelsOptions = []; - this.formData.procureGoods[index].modelsIds = []; - this.formData.procureGoods[index].models = []; - - this.formData.procureGoods[index].baseCategoryId = e[e.length - 1]; + this.formData.transferGoods[index].goodsOptions = []; + this.formData.transferGoods[index].baseGoodsTemplateId = ''; + this.formData.transferGoods[index].goodsTemplateName = ''; + this.formData.transferGoods[index].modelsOptions = []; + this.formData.transferGoods[index].modelsIds = []; + this.formData.transferGoods[index].models = []; // 鏍规嵁閫変腑鍒嗙被璇锋眰鐗╁搧鍚嶇О鍒楄〃 - this.getgoodsTemplate(e[e.length - 1], index); + this.getgoodsTemplate(e, index); }, // 鐗╁搧鍚嶇О鍒楄〃 goodsTemplateChange(e, index) { - this.formData.procureGoods[index].modelsOptions = []; - this.formData.procureGoods[index].modelsIds = []; - this.formData.procureGoods[index].models = []; + this.formData.transferGoods[index].modelsOptions = []; + this.formData.transferGoods[index].modelsIds = []; + this.formData.transferGoods[index].models = []; - this.formData.procureGoods[index].goodsTemplateName = this.getGoodsTemplateName(e); + this.formData.transferGoods[index].goodsTemplateName = this.getGoodsTemplateName(e); // 鏍规嵁閫変腑鐗╁搧鍚嶇Оid鑾峰彇瑙勬牸鍨嬪彿鍒楄〃 this.getgoodsModel(e, index); }, // 瑙勬牸鍨嬪彿閫夋嫨 - modelChange(e, index) { - let arr = [...this.formData.procureGoods[index].models]; + async modelChange(e, index) { + let arr = [...this.formData.transferGoods[index].models]; let str = JSON.stringify(arr); - e.forEach((item) => { - if (str.indexOf(item) == -1) { - let clist = [JSON.parse(JSON.stringify(this.clistItem))]; - arr.push({ ...this.modelsItem, baseGoodsModelsId: item, clist }); + for (const item of e) { + if (str.indexOf(item) === -1) { + let num = await warehouseAllSelectNumber({ + baseGoodsModelsId: item, + states: 1, + agencyId: this.userInfo.tenantId, + }); + let procureModelUserList = [JSON.parse(JSON.stringify(this.clistItem))]; + arr.push({...this.modelsItem, baseGoodsModelsId: item, procureModelUserList, worehouseCount: num}); + // arr.push({...this.modelsItem, baseGoodsModelsId: item, procureModelUserList}); } - }); - this.formData.procureGoods[index].models = arr; + } + this.formData.transferGoods[index].models = arr; }, // 瑙勬牸鍨嬪彿绉婚櫎 modelRemoveTag(e, index) { - let arr = this.formData.procureGoods[index].models; + let arr = this.formData.transferGoods[index].models; let delIndex = arr.findIndex((v) => v.baseGoodsModelsId == e); - this.formData.procureGoods[index].models.splice(delIndex, 1); + this.formData.transferGoods[index].models.splice(delIndex, 1); }, //鍨嬪彿鍒嗗彂鏂板 handleAdd(goodsIndex, mIndex, cIndex) { - this.formData.procureGoods[goodsIndex].models[mIndex].clist.push(JSON.parse(JSON.stringify(this.clistItem))); + this.formData.transferGoods[goodsIndex].models[mIndex].procureModelUserList.push(JSON.parse(JSON.stringify(this.clistItem))); }, handleDel(goodsIndex, mIndex, cIndex) { - this.formData.procureGoods[goodsIndex].models[mIndex].clist.splice(cIndex, 1); + this.formData.transferGoods[goodsIndex].models[mIndex].procureModelUserList.splice(cIndex, 1); }, // 浠锋牸input鐩戝惉 杞负鍒� priceChange(e, goodsIndex, index) { - this.formData.procureGoods[goodsIndex].models[index].price = e * 100; + this.formData.transferGoods[goodsIndex].models[index].price = e * 100; }, // 涓婁紶 @@ -495,43 +519,47 @@ // 鐐瑰嚮鏂板鐗╁搧 addGoods() { - this.formData.procureGoods.push(JSON.parse(JSON.stringify(this.goodsItem))); + this.formData.transferGoods.push(JSON.parse(JSON.stringify(this.goodsItem))); }, // 鐐瑰嚮绉婚櫎 removeGoods(index) { - this.formData.procureGoods.splice(index, 1); + this.formData.transferGoods.splice(index, 1); }, // 鎻愪氦 handleSubmit() { + console.log('formData', this.formData); this.$refs['ruleForm'].validate((valid) => { if (valid) { - console.log('formData', this.formData); - debugger; - if (!this.setting.id) { - procureAdd(this.formData) + this.formData.transferGoods.map(goods => { + goods.models.map(mod => { + if (goods.classification === 'A') { + let counts = 0 + mod.procureModelUserList.map(user => { + counts += parseInt(user.goodsNum || '0') + }) + mod.counts = counts + } + }) + }) + + this.formData.departmentName = this.$refs.department.selected.currentLabel + this.formData.outAgencyId = this.userInfo.tenantId + 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('create err', err); - this.$message.error('淇濆瓨澶辫触'); + //this.$message.error('淇濆瓨澶辫触'); }); - } else { - procureEdit(this.formData) - .then((res) => { - this.$message.success('淇濆瓨鎴愬姛锛�'); - this.close(); - this.$emit('search'); - }) - .catch((err) => { - console.log('edit err', err); - this.$message.error('淇濆瓨澶辫触'); - }); - } } else { this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��'); } @@ -542,7 +570,7 @@ this.formData = { warehouseId: '', // 鍏ュ簱浠撳簱id procureTime: '', // 閲囪喘鏃堕棿 - procureGoods: [], + transferGoods: [], }; this.$emit('close'); }, @@ -551,6 +579,7 @@ </script> <style scoped lang="scss"> @import url(../../../../styles/store.scss); + .card3 { border-radius: 2px; background: #ffffff; -- Gitblit v1.9.1