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/procure/purchaseOrder/edit.vue | 4 admin-web/src/api/deptGoods/scrap.js | 62 ++++++ admin-web/src/views/departmentitem/itemscr/scrapping/edit.vue | 426 ++++++++++++++++++++++++++++------------------- admin-web/src/views/stock/transfer/transferApplication/edit.vue | 4 admin-web/src/views/departmentitem/itemdis/distribution/edit.vue | 15 - admin-web/src/views/stock/scrap/itemScrapping/edit.vue | 4 admin-web/src/views/stock/accessStock/outbound/edit.vue | 4 admin-web/public/static/config.js | 4 8 files changed, 329 insertions(+), 194 deletions(-) diff --git a/admin-web/public/static/config.js b/admin-web/public/static/config.js index 2c5f21a..b7e2788 100644 --- a/admin-web/public/static/config.js +++ b/admin-web/public/static/config.js @@ -4,8 +4,8 @@ // 涓婁紶璺緞 ftpUrl: 'https://yqzx.jinmingyuan.com/lowConsum',//寮�鍙� // 鎺ュ彛璇锋眰鍦板潃 - apiBaseURL: 'http://172.16.20.2:8083/lowConsum',//寮�鍙� - // apiBaseURL: 'http://172.16.60.155:8083/lowConsum',//寮�鍙� + // apiBaseURL: 'http://172.16.20.2:8083/lowConsum',//寮�鍙� + apiBaseURL: 'http://172.16.60.155:8083/lowConsum',//寮�鍙� // apiBaseURL: 'https://yqzx.jinmingyuan.com/lowConsum',//寮�鍙� debug: false //璋冭瘯寮�鍏� true鏃朵細杈撳嚭璇锋眰鏃ュ織 }; diff --git a/admin-web/src/api/deptGoods/scrap.js b/admin-web/src/api/deptGoods/scrap.js new file mode 100644 index 0000000..a75f649 --- /dev/null +++ b/admin-web/src/api/deptGoods/scrap.js @@ -0,0 +1,62 @@ +import request from '@/utils/request'; + +// 鐗╁搧鎶ュ簾 +// 鏍规嵁閮ㄩ棬銆佺墿鍝佹煡璇㈠垎鍙戝崟 +export function getFfOrderByGoodsIdAndDept(params) { + return request({ + url: '/pc/warehouse/procureModel/getFfOrderByGoodsIdAndDept', + method: 'get', + params, + }); +} +// 鏍规嵁鍒嗗彂鍗昳d鍜岀墿鍝佹煡璇㈠湪鐢ㄦ暟閲� 浠ュ強浣跨敤浜轰俊鎭� +export function getGoodsUseInfoByFfOrderAndGoodId(params) { + return request({ + url: '/pc/warehouse/procureModel/getGoodsUseInfoByFfOrderAndGoodId', + method: 'get', + params, + }); +} +// 鏂板 +export function scrappedAdd(data) { + return request({ + url: '/pc/l/wh/form/scrapped/add', + method: 'post', + data, + }); +} + +// 鍒楄〃 +export function scrappedList(params) { + return request({ + url: '/pc/l/wh/form/scrapped/list', + method: 'get', + params, + }); +} + +// 璇︽儏 +export function scrappedDetail(params) { + return request({ + url: '/pc/l/wh/form/scrapped/detail', + method: 'get', + params, + }); +} +// 瀵煎嚭 +export function scrappedExport(params) { + return request({ + url: '/pc/l/wh/form/scrapped/export', + method: 'get', + params, + }); +} + +// 鏄庣粏鍒楄〃 +export function scrappedListDetailList(params) { + return request({ + url: '/pc/l/wh/form/scrapped/list/detailList', + method: 'get', + params, + }); + } diff --git a/admin-web/src/views/departmentitem/itemdis/distribution/edit.vue b/admin-web/src/views/departmentitem/itemdis/distribution/edit.vue index 0bf076a..0e53b54 100644 --- a/admin-web/src/views/departmentitem/itemdis/distribution/edit.vue +++ b/admin-web/src/views/departmentitem/itemdis/distribution/edit.vue @@ -61,6 +61,7 @@ :options="categoryOptions" :props="{ value: 'id',emitPath: false }" :show-all-levels="false" + filterable clearable @change="categoryChange($event, goodsIndex)" style="width: 100%" @@ -101,8 +102,8 @@ <el-select v-model="goodsItem.modelsIds" multiple - :placeholder="goodsItem.baseCategoryId?'璇烽�夋嫨瑙勬牸鍨嬪彿':'璇峰厛閫夋嫨鐗╁搧鍚嶇О'" - :disabled="!goodsItem.baseCategoryId" + :placeholder="goodsItem.baseGoodsTemplateId?'璇烽�夋嫨瑙勬牸鍨嬪彿':'璇峰厛閫夋嫨鐗╁搧鍚嶇О'" + :disabled="!goodsItem.baseGoodsTemplateId" @change="modelChange($event, goodsIndex)" @remove-tag="modelRemoveTag($event, goodsIndex)" style="width: 100%" @@ -384,18 +385,12 @@ this.getgoodsModel(); }, - // 鑾峰彇鍏ュ簱浠撳簱鍒楄〃 + // 鑾峰彇閮ㄩ棬鍒楄〃 getdeptmentList() { departmentListAll({tenantId: this.userInfo.tenantId}) .then((res) => { this.departmentOptions = res; - if (!this.setting.id && res.length) { - this.formData.transferGoods.push(JSON.parse(JSON.stringify(this.goodsItem))); - } - if (this.departmentOptions.length && !this.formData.warehouseId) { - // 榛樿閫変腑绗竴涓粨搴� - this.formData.warehouseId = this.departmentOptions[0].id; - } + this.formData.transferGoods.push(JSON.parse(JSON.stringify(this.goodsItem))); }) .catch((err) => { console.log('err', err); diff --git a/admin-web/src/views/departmentitem/itemscr/scrapping/edit.vue b/admin-web/src/views/departmentitem/itemscr/scrapping/edit.vue index f2a78ba..a373d23 100644 --- a/admin-web/src/views/departmentitem/itemscr/scrapping/edit.vue +++ b/admin-web/src/views/departmentitem/itemscr/scrapping/edit.vue @@ -1,27 +1,31 @@ <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-input v-model="formData.departmentName" disabled></el-input> + <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="createName"> - <el-input v-model="formData.createName" disabled></el-input> + <el-form-item label="鎶ュ簾浜�" prop="operatorName"> + <el-input v-model="formData.operatorName" disabled></el-input> </el-form-item> </el-col> <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> @@ -38,124 +42,136 @@ <el-row :gutter="24"> <el-col :span="12"> <el-form-item - label="鐗╁搧鍒嗙被" - :prop="`goods[${goodsIndex}].baseCategoryIds`" - :rules="{ + label="鐗╁搧鍒嗙被" + :prop="`goods.${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="`goods[${goodsIndex}].baseGoodsTemplateId`" - :rules="rules.baseGoodsTemplateId" + label="鐗╁搧鍚嶇О" + :prop="`goods.${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> </el-col> - </el-row> - <el-row :gutter="24"> <el-col :span="12"> - <el-form-item label="閫夋嫨鍒嗗彂鍗�" :prop="`goods[${goodsIndex}].modelsIds`"> - <el-input v-if="!goodsItem.baseGoodsTemplateId" placeholder="璇峰厛鎷╃墿鍝佸悕绉�" readonly suffix-icon="el-icon-arrow-down" class="cursor-p"></el-input> - <div v-else @click="fenfaSetting.show=true"> - <el-input placeholder="璇烽�夋嫨" readonly suffix-icon="el-icon-arrow-down" class="cursor-p"></el-input> + <el-form-item + 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> </div> </el-form-item> </el-col> </el-row> <div 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-col :span="12"> <el-form-item label="瑙勬牸鍨嬪彿:" prop="baseGoodsModelsId" style="margin-bottom: 0"> - {{ getGoodsModelsName(mItem.baseGoodsModelsId) }} + {{ mItem[0].modelName }} </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="鍗曚綅:" prop="baseGoodsModelsId" style="margin-bottom: 0" label-width="80"> - 50 + {{ mItem[0].unit }} </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="鐗╁搧绫诲埆:" prop="baseGoodsModelsId" style="margin-bottom: 0" label-width="80"> - A绫� + {{ mItem[0].classification }} </el-form-item> </el-col> </el-row> - <el-table :data="mItem.models" :stripe="true"> + <el-table :data="mItem" :stripe="true"> <!-- A绫诲晢鍝佹樉绀� --> - <el-table-column prop="price" label="浣跨敤浜�" align="center" v-if="goodsItem.models.type===1"> + <el-table-column width="100" prop="price" label="浣跨敤浜�" align="center" v-if="mItem[0].nowUserName"> <template slot-scope="scope"> - {{ scope.row.worehouseCount }} + {{ scope.row.nowUserName }} </template> </el-table-column> - <el-table-column prop="price" label="鍒嗗彂鏁伴噺" align="center"> + <el-table-column width="100" prop="price" label="鍒嗗彂鏁伴噺" align="center"> <template slot-scope="scope"> - {{ scope.row.worehouseCount }} + {{ scope.row.goodsNum }} </template> </el-table-column> - <el-table-column prop="price" label="鍐嶇敤鏁伴噺" align="center"> + <el-table-column width="100" prop="price" label="鍦ㄧ敤鏁伴噺" align="center"> <template slot-scope="scope"> - {{ scope.row.worehouseCount }} + {{ scope.row.userUseCount }} </template> </el-table-column> <el-table-column prop="counts" label="鎶ュ簾鏁伴噺" align="center"> - <template slot-scope="scope"> + <template slot-scope="{row,$index}"> <el-form-item - label-width="0" - style="margin-bottom: 0" - :prop="`goods[${goodsIndex}].models[${scope.$index}].counts`" - :rules="rules.counts" + 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="scope.row.counts" - @change="countsChange($event, goodsIndex, scope.$index)" + type="number" + v-model.number="row.counts" ></el-input> </el-form-item> </template> </el-table-column> <el-table-column prop="counts" label="鎶ュ簾鍘熷洜" align="center"> - <template slot-scope="scope"> + <template slot-scope="{row,$index}"> +<!-- <el-form-item + label-width="0" + :prop="`goods.${goodsIndex}.models.${mIndex}.scrappedCode`" + :rules="[{required: true, message: '璇烽�夋嫨', trigger: 'change'}]" + >--> <el-form-item - label-width="0" - style="margin-bottom: 0" - :prop="`goods[${goodsIndex}].models[${scope.$index}].reason`" - :rules="rules.reason" + label-width="0" > - <el-select v-model="scope.row.reason" placeholder="璇烽�夋嫨"> + <el-select v-model="row.scrappedCode" placeholder="璇烽�夋嫨"> <el-option - v-for="item in reasonOptions" - :key="item.value" - :label="item.label" - :value="item.value" - @change="countsChange($event, goodsIndex, scope.$index)"> - </el-option> + v-for="item in scrapReasonOptions" + :key="item.dict_code" + :label="item.dict_label" + :value="item.dict_code" + /> </el-select> </el-form-item> </template> @@ -164,51 +180,56 @@ </div> <div class="btn-group"> <el-button - v-if="formData.goods.length > 1" - name="绉婚櫎" - type="danger" - plain - size="mini" - @click="removeGoods(goodsIndex)" - >绉婚櫎</el-button + 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" - >鏂板鐗╁搧</el-button + v-if="formData.goods.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> - <div v-if="fenfaSetting.show"> - <win-sm title="閫夋嫨鍒嗗彂鍗�" @close="fenfaSetting.show=false" :width="'800px'"> - <el-table :data="fenfaData"> - <el-table-column type="selection" width="55"> </el-table-column> - <el-table-column label="鍒嗗彂鍗曞彿" prop="businessFormCode"></el-table-column> - <el-table-column label="鐗╁搧鍚嶇О" prop="modelName"></el-table-column> - <el-table-column label="鍒嗗彂鏁伴噺" prop="fenfaCount"></el-table-column> - <el-table-column label="鍓╀綑鏁伴噺" prop="count"></el-table-column> - <el-table-column label="鍒嗗彂鏃堕棿" prop="time"></el-table-column> + <win-md v-if="fenfaSetting.show" title="閫夋嫨鍒嗗彂鍗�" @close="fenfaSetting.show=false" :width="'800px'"> + <el-table @current-change="handleCurrentChange" :data="fenfaData" highlight-current-row height="407"> + <el-table-column label="鍒嗗彂鍗曞彿" prop="businessFormCode" align="left"></el-table-column> + <el-table-column label="鐗╁搧鍚嶇О" prop="baseGoodsTemplateName" align="left"></el-table-column> + <el-table-column label="鍒嗗彂鏁伴噺" prop="totalCount" align="center"></el-table-column> + <el-table-column label="鍓╀綑鏁伴噺" prop="useCount" align="center"></el-table-column> + <el-table-column label="鍒嗗彂鏃堕棿" prop="inTime" width="160" align="center"> + <template slot-scope="{row}"> + {{ DateFormatter.LongToDateTime(row.inTime) }} + </template> + </el-table-column> </el-table> <div slot="footer" align="center" class="dialog-footer"> - <my-button name="鍙栨秷" site="form" @click="fenfaSetting.show=false" /> - <my-button name="纭畾" site="form" @click="handleConfirm" /> + <my-button name="鍙栨秷" site="form" + @click="fenfaSetting.show=false;fenfaSetting.baseGoodsTemplateId=null;curFenfa=null;fenfaData=[]"/> + <el-button @click="handleConfirm" type="primary" size="medium">纭畾</el-button> </div> - </win-sm> - </div> + </win-md> </win-md> </template> <script> -import {goodsTemplate, selectTenantWarehouse,} from '@/api/baseSetting/finsystenant'; +import {departmentListAll} from '@/api/system/deptment'; +import {goodsTemplate} from '@/api/baseSetting/finsystenant'; import {outputAdd} from '@/api/stock/accessStock'; import {getTree} from '@/api/foudation/classification'; import MyButton from '@/components/myButton/myButton'; @@ -217,53 +238,78 @@ import upload from '@/components/upload/index'; import {getUploadUrl} from '@/utils/base'; import {mapGetters} from 'vuex'; +import * as DateFormatter from '@/utils/DateFormatter'; +import {getFfOrderByGoodsIdAndDept, getGoodsUseInfoByFfOrderAndGoodId} from "@/api/deptGoods/scrap"; +import {getDicts} from "@/api/system/dict/data"; export default { - components: { MyButton, winMd, winSm, upload }, + components: {MyButton, winMd, winSm, upload}, props: { setting: { type: Object, - default: () => {}, + default: () => { + }, }, }, data() { // 鑷畾涔夋牎楠� // 鐗╁搧閲嶅鏍¢獙 - var checkGoodsTemplateId = (rule, value, callback) => { + var checkBusinessFormCode= (rule, value, callback) => { if (!value) { return callback(new Error('璇烽�夋嫨')); } - let temp = this.formData.goods.filter((v) => v.baseGoodsTemplateId == value); + let temp = this.formData.goods.filter((v) => v.businessFormCode == value); if (!temp || temp.length != 1) { - return callback(new Error('宸查�夎繃姝ょ墿鍝�')); + return callback(new Error('宸查�夎繃姝ゅ垎鍙戝崟')); } callback(); }; return { - loading: false, - warehouseOptions: [], // 鎶ュ簾浠撳簱鍒楄〃 + checkCounts: (rule, value, callback) => { + if (!rule.counts) { + return callback(new Error('璇疯緭鍏ユ姤搴熸暟閲�')); + } + 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('鍒嗗彂鏁伴噺涓嶈兘澶т簬鍓╀綑鏁伴噺'); + return callback(new Error('鎶ュ簾鏁伴噺涓嶈兘澶т簬鍦ㄧ敤鏁伴噺')); + } + callback(); + }, + DateFormatter: DateFormatter, + loading: true, + departmentOptions: [], // 閮ㄩ棬鍒楄〃 categoryOptions: [], // 鐗╁搧鍒嗙被鍒楄〃 modelList: [], //鍨嬪彿鍒楄〃 fenfaSetting: { show: false, + goodsIdx: null, + baseGoodsTemplateId: null, id: '', }, - fenfaData:[], + curFenfa: null, + fenfaData: [], formData: { - warehouseId: '', // 鎶ュ簾浠撳簱id + departmentId: '', // 鎶ュ簾閮ㄩ棬id dealTime: '', // 鎶ュ簾鏃堕棿 procureDoc: '', goods: [], }, goodsItem: { - baseCategoryIds: '', // 鍒嗙被缂栧彿鏁扮粍 + businessFormCode: '', // 鍒嗗彂鍗昳d + transBusinessId: '', // 鍒嗗彂鍗昳d baseCategoryId: '', // 鍒嗙被缂栧彿 baseGoodsTemplateId: '', // 鐗╁搧妯$増缂栧彿 goodsTemplateName: '', // 鐗╁搧妯$増鍚嶇О goodsOptions: [], // 鐗╁搧鍒楄〃select - modelsOptions: [], //瑙勬牸鍨嬪彿select models: [], // 鐗╁搧鍚嶇О - modelsIds: [], //瑙勬牸鍨嬪彿 }, modelsItem: { baseGoodsModelsId: '', // 瑙勬牸鍨嬪彿缂栧彿 @@ -272,14 +318,18 @@ unit: null, //鍗曚綅 }, rules: { - warehouseId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], - dealTime: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], - buyType: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], - baseCategoryIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], - baseGoodsTemplateId: [{ validator: checkGoodsTemplateId, trigger: ['blur', 'change'] }], - modelsIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], - counts: [{ required: true, message: '璇疯緭鍏�', trigger: 'change' }], - reason: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], + departmentId: [{required: true, message: '璇烽�夋嫨閮ㄩ棬', trigger: 'change'}], + dealTime: [{required: true, message: '璇烽�夋嫨', trigger: 'change'}], + procureDoc: [{required: true, message: '璇蜂笂浼�', trigger: 'change'}], + baseCategoryId: [{required: true, message: '璇烽�夋嫨', trigger: 'change'}], + baseGoodsTemplateId: [{ + required: true, + message: '璇烽�夋嫨鐗╁搧', + trigger: 'change' + }], + businessFormCode: [{required: true,message: '璇烽�夋嫨鍒嗗彂鍗�',trigger: 'change'}, {validator: checkBusinessFormCode, trigger: ['blur', 'change']}], + counts: [{required: true, message: '璇疯緭鍏�', trigger: 'change'}], + reason: [{required: true, message: '璇烽�夋嫨', trigger: 'change'}], }, uploadSettings: { @@ -293,7 +343,7 @@ disabled: false, // 鏄惁绂佺敤 type: 'picture', // text/picture }, - reasonOptions:[] // 鎶ュ簾鍘熷洜 + scrapReasonOptions: [] // 鎶ュ簾鍘熷洜 }; }, computed: { @@ -304,31 +354,29 @@ }, methods: { async init() { - this.getWarehouseList(); - this.getgoodsTemplate(); - // 鑾峰彇鐗╁搧鍒嗙被鍒楄〃 + await this.getdeptmentList(); const treeRes = await getTree(); this.categoryOptions = this.removeEmptyChildren(treeRes); - this.formData.departmentName = this.userInfo.sysDeptName; - this.formData.createName = this.userInfo.userName; + this.getgoodsTemplate(); + // 鑾峰彇鐗╁搧鍒嗙被鍒楄〃 + this.formData.departmentId = this.userInfo.sysDeptId; + this.formData.operatorName = this.userInfo.userName; + this.loading = false + getDicts('SCRAP_REASON').then((res) => { + this.scrapReasonOptions = res; + }); }, - // 鑾峰彇鎶ュ簾浠撳簱鍒楄〃 - getWarehouseList() { - selectTenantWarehouse({ agencyId: this.userInfo.tenantId }) - .then((res) => { - this.warehouseOptions = res; - if (res.length) { + // 鑾峰彇閮ㄩ棬鍒楄〃 + async getdeptmentList() { + await departmentListAll({tenantId: this.userInfo.tenantId}) + .then((res) => { + this.departmentOptions = res; this.formData.goods.push(JSON.parse(JSON.stringify(this.goodsItem))); - } - if (this.warehouseOptions.length && !this.formData.warehouseId) { - // 榛樿閫変腑绗竴涓粨搴� - this.formData.warehouseId = this.warehouseOptions[0].id; - } - }) - .catch((err) => { - console.log('err', err); - }); + }) + .catch((err) => { + console.log('err', err); + }); }, removeEmptyChildren(arr) { @@ -344,7 +392,7 @@ // 鑾峰彇鐗╁搧鍚嶇О鍒楄〃 getgoodsTemplate(id, index) { - goodsTemplate({ categoryId: id || '' }).then((res) => { + goodsTemplate({categoryId: id || ''}).then((res) => { if (index || index == 0) { this.$set(this.formData.goods[index], 'goodsOptions', res); } else { @@ -376,24 +424,37 @@ this.formData.goods[index].goodsOptions = []; this.formData.goods[index].baseGoodsTemplateId = ''; this.formData.goods[index].goodsTemplateName = ''; - this.formData.goods[index].modelsOptions = []; - this.formData.goods[index].modelsIds = []; this.formData.goods[index].models = []; - - this.formData.goods[index].baseCategoryId = e[e.length - 1]; // 鏍规嵁閫変腑鍒嗙被璇锋眰鐗╁搧鍚嶇О鍒楄〃 - this.getgoodsTemplate(e[e.length - 1], index); + this.getgoodsTemplate(e, index); }, // 鐗╁搧鍚嶇О鍒楄〃閫夋嫨 goodsTemplateChange(e, index) { - this.formData.goods[index].modelsOptions = []; - this.formData.goods[index].modelsIds = []; this.formData.goods[index].models = []; this.formData.goods[index].goodsTemplateName = this.getGoodsTemplateName(e); - }, + }, + showFenFa(index) { + this.loading = true + getFfOrderByGoodsIdAndDept({ + departmentId: this.formData.departmentId, + baseGoodsTemplateId: this.formData.goods[index].baseGoodsTemplateId + }).then(res => { + this.loading = false + if (!res || res.length === 0) { + this.$message.error('鏈煡璇㈠埌鍒嗗彂鍗�'); + return + } + this.fenfaSetting.show = true + this.fenfaSetting.baseGoodsTemplateId = this.formData.goods[index].baseGoodsTemplateId + this.fenfaSetting.goodsIdx = index + this.fenfaData = res + }).catch((err) => { + this.loading = false + }); + }, // 涓婁紶 uploadChange() { let arr = this.$refs.uploadRef.fileList; @@ -409,36 +470,51 @@ removeGoods(index) { this.formData.goods.splice(index, 1); }, - - // 鎶ュ簾鏁伴噺鏍¢獙 - countsChange(e, goodsIndex, index) { - const curItem = this.formData.goods[goodsIndex].models[index]; - const worehouseCount = curItem.worehouseCount; - if (e == 0) { - this.$message.warning('鏁伴涓嶈兘涓�0'); - curItem.counts = null; - } - if (e > worehouseCount) { - this.$message.warning('鏁伴瓒呰繃鐜版湁搴撳瓨'); - curItem.counts = worehouseCount > 0 ? worehouseCount : null; - } + handleCurrentChange(e) { + this.curFenfa = e }, - handleConfirm(){}, + handleConfirm() { + if (!this.curFenfa) { + this.$message.error('璇烽�夋嫨鍒嗗彂鍗�'); + return + } + getGoodsUseInfoByFfOrderAndGoodId({ + transBusinessId: this.curFenfa.transBusinessId, + baseGoodsTemplateId: this.fenfaSetting.baseGoodsTemplateId + }).then(res => { + if (res) { + let arr = [] + for (let resKey in res) { + const item = res[resKey] + item.map(t => { + t.counts = null + t.scrappedCode = null + }) + arr.push(item) + } + console.log(arr) + this.formData.goods[this.fenfaSetting.goodsIdx].models = arr + this.formData.goods[this.fenfaSetting.goodsIdx].businessFormCode = this.curFenfa.businessFormCode + } + this.fenfaSetting.show = false + }) + }, // 鎻愪氦 handleSubmit() { + console.log('this.formData', this.formData); this.$refs['ruleForm'].validate((valid) => { if (valid) { - console.log('this.formData', this.formData); + return; outputAdd(this.formData) - .then((res) => { - this.$message.success('淇濆瓨鎴愬姛锛�'); - this.close(); - this.$emit('search'); - }) - .catch((err) => { - console.log('edit err', err); - this.$message.error('淇濆瓨澶辫触'); - }); + .then((res) => { + this.$message.success('淇濆瓨鎴愬姛锛�'); + this.close(); + this.$emit('search'); + }) + .catch((err) => { + console.log('edit err', err); + this.$message.error('淇濆瓨澶辫触'); + }); } else { this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��'); } @@ -458,6 +534,7 @@ </script> <style scoped lang="scss"> @import url(../../../../styles/store.scss); + .cursor-p { ::v-deep { .el-input__inner { @@ -465,6 +542,7 @@ } } } + .card3 { border-radius: 2px; background: #ffffff; diff --git a/admin-web/src/views/stock/accessStock/outbound/edit.vue b/admin-web/src/views/stock/accessStock/outbound/edit.vue index 079826e..91eb146 100644 --- a/admin-web/src/views/stock/accessStock/outbound/edit.vue +++ b/admin-web/src/views/stock/accessStock/outbound/edit.vue @@ -102,8 +102,8 @@ v-model="goodsItem.modelsIds" multiple clearable - :placeholder="goodsItem.baseCategoryId?'璇烽�夋嫨瑙勬牸鍨嬪彿':'璇峰厛閫夋嫨鐗╁搧鍚嶇О'" - :disabled="!goodsItem.baseCategoryId" + :placeholder="goodsItem.baseGoodsTemplateId?'璇烽�夋嫨瑙勬牸鍨嬪彿':'璇峰厛閫夋嫨鐗╁搧鍚嶇О'" + :disabled="!goodsItem.baseGoodsTemplateId" @change="modelChange($event, goodsIndex)" @remove-tag="modelRemoveTag($event, goodsIndex)" @clear="modelRemoveTag(-1, goodsIndex)" diff --git a/admin-web/src/views/stock/procure/purchaseOrder/edit.vue b/admin-web/src/views/stock/procure/purchaseOrder/edit.vue index b934681..2726c9a 100644 --- a/admin-web/src/views/stock/procure/purchaseOrder/edit.vue +++ b/admin-web/src/views/stock/procure/purchaseOrder/edit.vue @@ -105,8 +105,8 @@ v-model="goodsItem.modelsIds" multiple clearable - :placeholder="goodsItem.baseCategoryId?'璇烽�夋嫨瑙勬牸鍨嬪彿':'璇峰厛閫夋嫨鐗╁搧鍚嶇О'" - :disabled="!goodsItem.baseCategoryId" + :placeholder="goodsItem.baseGoodsTemplateId?'璇烽�夋嫨瑙勬牸鍨嬪彿':'璇峰厛閫夋嫨鐗╁搧鍚嶇О'" + :disabled="!goodsItem.baseGoodsTemplateId" @change="modelChange($event, goodsIndex)" @remove-tag="modelRemoveTag($event, goodsIndex)" @clear="modelRemoveTag(-1, goodsIndex)" diff --git a/admin-web/src/views/stock/scrap/itemScrapping/edit.vue b/admin-web/src/views/stock/scrap/itemScrapping/edit.vue index 5fda39f..fb35d81 100644 --- a/admin-web/src/views/stock/scrap/itemScrapping/edit.vue +++ b/admin-web/src/views/stock/scrap/itemScrapping/edit.vue @@ -108,8 +108,8 @@ v-model="goodsItem.modelsIds" multiple clearable - :placeholder="goodsItem.baseCategoryId?'璇烽�夋嫨瑙勬牸鍨嬪彿':'璇峰厛閫夋嫨鐗╁搧鍚嶇О'" - :disabled="!goodsItem.baseCategoryId" + :placeholder="goodsItem.baseGoodsTemplateId?'璇烽�夋嫨瑙勬牸鍨嬪彿':'璇峰厛閫夋嫨鐗╁搧鍚嶇О'" + :disabled="!goodsItem.baseGoodsTemplateId" @change="modelChange($event, goodsIndex)" @remove-tag="modelRemoveTag($event, goodsIndex)" @clear="modelRemoveTag(-1, goodsIndex)" diff --git a/admin-web/src/views/stock/transfer/transferApplication/edit.vue b/admin-web/src/views/stock/transfer/transferApplication/edit.vue index a61c829..0fd2f9f 100644 --- a/admin-web/src/views/stock/transfer/transferApplication/edit.vue +++ b/admin-web/src/views/stock/transfer/transferApplication/edit.vue @@ -96,8 +96,8 @@ v-model="goodsItem.modelsIds" multiple clearable - :placeholder="goodsItem.baseCategoryId?'璇烽�夋嫨瑙勬牸鍨嬪彿':'璇峰厛閫夋嫨鐗╁搧鍚嶇О'" - :disabled="!goodsItem.baseCategoryId" + :placeholder="goodsItem.baseGoodsTemplateId?'璇烽�夋嫨瑙勬牸鍨嬪彿':'璇峰厛閫夋嫨鐗╁搧鍚嶇О'" + :disabled="!goodsItem.baseGoodsTemplateId" @change="modelChange($event, goodsIndex)" @remove-tag="modelRemoveTag($event, goodsIndex)" @clear="modelRemoveTag(-1, goodsIndex)" -- Gitblit v1.9.1