From 9834dbff448908d2008d8c52a2544aad00c099b1 Mon Sep 17 00:00:00 2001 From: haoyahui <2032914783@qq.com> Date: 星期三, 22 十一月 2023 17:34:26 +0800 Subject: [PATCH] 库存盘点, 异常明细,报废管理 --- admin-web/src/views/stock/ledger/alertQuery/index.vue | 16 admin-web/src/views/stock/transfer/transferdetails/index.vue | 38 - admin-web/src/views/stock/inventorycount/inventorytask/index.vue | 20 admin-web/src/views/stock/ledger/inventoryQuery/index.vue | 24 admin-web/src/views/stock/procure/receiptDetails/index.vue | 32 admin-web/src/views/stock/procure/purchaseOrder/index.vue | 25 admin-web/src/api/stock/inventory.js | 11 admin-web/src/views/stock/transfer/transferApplication/edit.vue | 33 admin-web/src/views/stock/transfer/transferissue/index.vue | 14 admin-web/src/views/stock/inventorycount/exceptionDetails/index.vue | 155 +++--- admin-web/src/views/stock/scrap/itemScrapping/detail.vue | 57 - admin-web/src/views/stock/scrap/itemScrapping/edit.vue | 246 ++++------ admin-web/src/views/stock/inventorycount/inventorytask/detail.vue | 41 - admin-web/src/views/stock/transfer/transferApplication/index.vue | 13 admin-web/src/views/stock/ledger/ledgerQuery/index.vue | 27 - admin-web/src/views/stock/ledger/inventoryAlert/index.vue | 83 ++- admin-web/src/utils/stockType.js | 34 + admin-web/src/views/stock/accessStock/outbound/index.vue | 16 admin-web/src/views/stock/scrap/itemScrapping/index.vue | 87 --- admin-web/src/views/stock/scrap/scrapDetails/index.vue | 141 +++-- admin-web/src/views/stock/ledger/inventoryAlert/edit.vue | 4 admin-web/src/views/stock/accessStock/outboundDetails/index.vue | 51 - admin-web/src/views/stock/inventorycount/inventorytask/inventory.vue | 33 23 files changed, 592 insertions(+), 609 deletions(-) diff --git a/admin-web/src/api/stock/inventory.js b/admin-web/src/api/stock/inventory.js index c9c371f..a3348c8 100644 --- a/admin-web/src/api/stock/inventory.js +++ b/admin-web/src/api/stock/inventory.js @@ -32,7 +32,7 @@ }); } -// 缂栬緫 +// 鐩樼偣璇︽儏 export function inventoryDetail(params) { return request({ url: '/pc/l/wh/form/inventory/detail', @@ -76,3 +76,12 @@ params, }); } + +// 鏌ヨ鐩樼偣鍗曠墿鍝� +export function inventoryGoodsList(params) { + return request({ + url: '/pc/l/wh/form/inventory/goods/list', + method: 'get', + params, + }); +} \ No newline at end of file diff --git a/admin-web/src/utils/stockType.js b/admin-web/src/utils/stockType.js index 9af85c4..e721978 100644 --- a/admin-web/src/utils/stockType.js +++ b/admin-web/src/utils/stockType.js @@ -1,9 +1,27 @@ -function stockType(str, selStr,color) { - color=color||'#F3595A' - //str涓鸿鏀瑰彉棰滆壊鐨勫瓧绗︼紙浼犲叆鐨勫弬鏁帮級 - //selStr鏄寚瀹氱殑瀛楃涓� - let res = new RegExp('(' + str + ')', 'g'); - return selStr.replace(res, `<span style='color:${color}'>${str}</span>`); +function stockType(row) { + let result = ''; + let arr = ['閲囪喘鍏ュ簱', '璋冩嫧', '鍏朵粬鍑哄簱', '閮ㄩ棬鍒嗗彂', '鎶ュ簾鍑哄簱', '閮ㄩ棬鐗╁搧鍥為��浠撳簱', '鐗╁搧鐩樼偣']; + if (row.businessType == 7) { + if (row.thisType == 1) { + result = '鐩樼泩鍏ュ簱'; + } else { + result = '鐩樹簭鍑哄簱'; + } + } else if (row.businessType == 2) { + if (row.thisType == 1) { + result = '璋冩嫧鍏ュ簱'; + } else { + result = '璋冩嫧鍑哄簱'; + } + } else if (row.businessType == 4) { + if (row.thisType == 1) { + result = '閫�杩樺叆搴�'; + } else { + result = '鐢抽鍑哄簱'; + } + } else { + result = arr[row.businessType - 1]; } - export default stockType; - \ No newline at end of file + return result +} +export default stockType; diff --git a/admin-web/src/views/stock/accessStock/outbound/index.vue b/admin-web/src/views/stock/accessStock/outbound/index.vue index 32d8b6a..b6ce027 100644 --- a/admin-web/src/views/stock/accessStock/outbound/index.vue +++ b/admin-web/src/views/stock/accessStock/outbound/index.vue @@ -83,6 +83,7 @@ import edit from './edit'; import detail from './detail'; import listPage from '../../../mixins/listPage' +import SettingIplatform from '@/utils/settingIplatform'; export default { name: 'index', @@ -101,11 +102,17 @@ defaultValue: '', }, { - type: 'text', - dataIndex: 'goodsName', + type: 'select', + dataIndex: 'goodsTemplateId', label: '鐗╁搧鍚嶇О', - placeholder: '鍙ā绯婃悳绱�', + placeholder: '璇疯緭鍏�', defaultValue: '', + options: [], + optionsConfig: { + label: 'goodsName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/goods/template/query/goodsTemplate', + }, }, { type: 'cascader', @@ -138,6 +145,9 @@ ], }; }, + created(){ + this.fetchData() + }, methods: { fetchData() { this.loading = true; diff --git a/admin-web/src/views/stock/accessStock/outboundDetails/index.vue b/admin-web/src/views/stock/accessStock/outboundDetails/index.vue index 2c0cf43..e0d322f 100644 --- a/admin-web/src/views/stock/accessStock/outboundDetails/index.vue +++ b/admin-web/src/views/stock/accessStock/outboundDetails/index.vue @@ -48,20 +48,16 @@ }, { type: 'select', - dataIndex: 'thisType', + dataIndex: 'flowType', label: '绫诲瀷', placeholder: '璇烽�夋嫨', defaultValue: '', - options: [ - { - label: '閲囪喘鍏ュ簱', - value: 1, - }, - { - label: '閫�杩樺叆搴�', - value: 2, - }, - ], + options: [], + optionsConfig: { + label: 'dict_label', + value: 'dict_value', + url: SettingIplatform.apiBaseURL + '/permit/dict/data/type/FLOW_TYPE', + }, }, { type: 'select', @@ -70,6 +66,12 @@ placeholder: '璇烽�夋嫨', defaultValue: '', options: [], + cascader: [{ key: 'baseGoodsModelsId', queryKey: 'goodsTemplatesId' }], + optionsConfig: { + label: 'goodsName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/goods/template/query/goodsTemplate', + }, }, { type: 'select', @@ -78,6 +80,11 @@ placeholder: '璇烽�夋嫨', defaultValue: '', options: [], + optionsConfig: { + label: 'modelName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/goods/models/query/goodsModel', + }, }, { type: 'cascader', @@ -193,30 +200,8 @@ }; }, created() { - this.initSearch(); }, methods: { - initSearch() { - this.items.map(async (item) => { - if (item.label == '鐗╁搧鍚嶇О') { - let res = await goodsTemplate(); - item.options = res.map((v) => { - v.label = v.goodsName; - v.value = v.id; - return v; - }); - } - if (item.label == '瑙勬牸鍨嬪彿') { - let res = await goodsModel(); - item.options = res.map((v) => { - v.label = v.modelName; - v.value = v.id; - return v; - }); - } - return item; - }); - }, showDetail(row) { this.detailSetting.id = row.id; this.detailSetting.info = JSON.stringify(row); diff --git a/admin-web/src/views/stock/inventorycount/exceptionDetails/index.vue b/admin-web/src/views/stock/inventorycount/exceptionDetails/index.vue index bcaf8ee..3c1b726 100644 --- a/admin-web/src/views/stock/inventorycount/exceptionDetails/index.vue +++ b/admin-web/src/views/stock/inventorycount/exceptionDetails/index.vue @@ -26,8 +26,9 @@ import * as finsystenant from '@/api/baseSetting/finsystenant'; import { getBaseUrl } from '@/utils/base'; import { mapGetters } from 'vuex'; -import { selectTenantWarehouse,goodsModel } from '@/api/baseSetting/finsystenant'; +import { selectTenantWarehouse, goodsModel } from '@/api/baseSetting/finsystenant'; import { getDicts } from '@/api/system/dict/data'; +import * as DateFormatter from '@/utils/DateFormatter'; export default { name: 'index', @@ -52,21 +53,38 @@ placeholder: '璇烽�夋嫨', defaultValue: '', options: [], - }, - { - type: 'text', - dataIndex: 'goodsTemplateName', - label: '鐗╁搧鍚嶇О', - placeholder: '璇疯緭鍏�', - defaultValue: '', + optionsConfig: { + label: 'warehouseName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/warehouse/select/tenant_warehouse', + }, }, { type: 'select', - dataIndex: 'warehouseId', - label: '瑙勬牸鍨嬪彿', - placeholder: '璇烽�夋嫨', + dataIndex: 'goodsTemplateId', + label: '鐗╁搧鍚嶇О', + placeholder: '璇疯緭鍏�', defaultValue: '', options: [], + cascader: [{ key: 'baseGoodsModelsId', queryKey: 'goodsTemplatesId' }], + optionsConfig: { + label: 'goodsName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/goods/template/query/goodsTemplate', + }, + }, + { + type: 'select', + dataIndex: 'baseGoodsModelsId', + label: '瑙勬牸鍨嬪彿', + placeholder: '璇疯緭鍏�', + defaultValue: '', + options: [], + optionsConfig: { + label: 'modelName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/goods/models/query/goodsModel', + }, }, { type: 'select', @@ -74,16 +92,20 @@ label: '绫诲瀷', placeholder: '璇烽�夋嫨', defaultValue: '', - options: [{ - label:'鍏ㄩ儴', - value:'' - },{ - label:'鐩樼泩', - value:'1' - },{ - label:'鐩樹簭', - value:'2' - }], + options: [ + { + label: '鍏ㄩ儴', + value: '', + }, + { + label: '鐩樼泩', + value: '1', + }, + { + label: '鐩樹簭', + value: '2', + }, + ], }, { type: 'select', @@ -91,20 +113,24 @@ label: '鍑哄叆搴撶被鍨�', placeholder: '璇烽�夋嫨', defaultValue: '', - options: [{ - label:'鍏ㄩ儴', - value:'' - },{ - label:'鐩樼泩鍏ュ簱', - value:'1' - },{ - label:'鐩樹簭鍑哄簱', - value:'2' - }], + options: [ + { + label: '鍏ㄩ儴', + value: '', + }, + { + label: '鐩樼泩鍏ュ簱', + value: '1', + }, + { + label: '鐩樹簭鍑哄簱', + value: '2', + }, + ], }, { type: 'text', - dataIndex: 'baseGoodsModelsId', + dataIndex: 'businessFormCode', label: '鍗曞彿', placeholder: '璇疯緭鍏�', defaultValue: '', @@ -133,10 +159,6 @@ treeDataList: [], // 鎼滅储鏉′欢 filterFrom: { - tenantId: null, - userName: null, - userPhone: null, - status: 1, }, // 琛ㄦ牸鏁版嵁 table: { @@ -158,18 +180,32 @@ }, // 鍒椾俊鎭� columns: [ - { title: '浠撳簱', field: 'warehouseFormCode', align: 'left' }, + { title: '浠撳簱', field: 'warehouseName', align: 'left' }, { title: '鐗╁搧鍚嶇О', field: 'goodsTemplateName', align: 'center' }, - { title: '瑙勬牸鍨嬪彿', field: 'lv', align: 'center' }, - { title: '绫诲瀷', field: 'lv', align: 'center' }, - { title: '搴撳瓨鏁伴噺', field: 'summary', align: 'left' }, - { title: '鐩樼偣鏁伴噺', field: 'summary', align: 'left' }, - { title: '寮傚父鏁伴噺', field: 'summary', align: 'left' }, - { title: '鍑哄叆搴撶被鍨�', field: 'summary', align: 'left' }, - { title: '鍑哄叆搴撳崟鍙�', field: 'summary', align: 'left' }, + { title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'center' }, + { title: '绫诲瀷', field: 'inventoryResultType', align: 'center' }, + { title: '搴撳瓨鏁伴噺', field: 'initCounts', align: 'left' }, + { title: '鐩樼偣鏁伴噺', field: 'inventoryCounts', align: 'left' }, + { title: '寮傚父鏁伴噺', field: 'errorCounts', align: 'left' }, + { + title: '鍑哄叆搴撶被鍨�', + field: 'inventoryType', + align: 'left', + formatter: (row) => { + return { value: row.inventoryType, type: row.inventoryType && row.inventoryType.includes('鐩樼泩') ? 'success' : 'danger' }; + }, + }, + { title: '鍑哄叆搴撳崟鍙�', field: 'warehouseFormCode', align: 'left' }, { title: '鏈烘瀯', field: 'agencyName', align: 'left' }, { title: '鎿嶄綔浜�', field: 'operatorName', align: 'left' }, - { title: '鎿嶄綔鏃堕棿', field: 'summary', align: 'left' }, + { + title: '鎿嶄綔鏃堕棿', + field: 'operatorTime', + align: 'center', + formatter: (row) => { + return { value: row.operatorTime ? DateFormatter.LongToDateTime(row.operatorTime) : '-' }; + }, + }, ], // 鎿嶄綔淇℃伅 operation: { @@ -194,35 +230,8 @@ computed: { ...mapGetters(['userInfo']), }, - created() { - this.initQuery(); - }, + created() {}, methods: { - initQuery() { - selectTenantWarehouse({ agencyId: this.userInfo.tenantId }).then((res) => { - this.items.forEach((v) => { - if (v.label == '鐩樼偣浠撳簱') { - v.options = res.map((item) => { - item.label = item.warehouseName; - item.value = item.id; - return item; - }); - } - }); - }); - goodsModel().then((res) => { - this.items.forEach((v) => { - if (v.label == '瑙勬牸鍨嬪彿') { - v.options = res.map((item) => { - item.label = item.modelName; - item.value = item.id; - return item; - }); - } - }); - }); - - }, showAudit(row) { this.editSetting.id = row.id; this.editSetting.info = JSON.stringify(row); diff --git a/admin-web/src/views/stock/inventorycount/inventorytask/detail.vue b/admin-web/src/views/stock/inventorycount/inventorytask/detail.vue index 4c66b66..34f314d 100644 --- a/admin-web/src/views/stock/inventorycount/inventorytask/detail.vue +++ b/admin-web/src/views/stock/inventorycount/inventorytask/detail.vue @@ -2,27 +2,23 @@ <win-md :title="setting.title" @close="close" :width="'1200px'"> <el-row :gutter="20" style="margin-bottom: 20px" type="flex" align="middle"> <el-col :span="6">鐩樼偣鍗曞彿锛歿{ formData.businessFormCode }}</el-col> - <el-col :span="6">鐩樼偣浠诲姟锛歿{ formData.businessTaskCode }}</el-col> - <el-col :span="6">鐩樼偣浠撳簱锛歿{ formData.warehouseId }}</el-col> + <el-col :span="6">鐩樼偣浠诲姟锛歿{ formData.businessFormName }}</el-col> + <el-col :span="6">鐩樼偣浠撳簱锛歿{ formData.warehouseName }}</el-col> </el-row> - <el-table v-loading="loading" :data="formData.tableData" height="100%" :stripe="true" class="the-table"> + <el-table v-loading="loading" :data="formData.formInventoryGoodsList" height="500" :stripe="true" class="the-table"> <el-table-column prop="goodsTemplateName" label="鐗╁搧鍚嶇О"> </el-table-column> - <el-table-column prop="baseGoodsModelsId" label="鍨嬪彿" align="center"> </el-table-column> - <el-table-column prop="inventoryCounts" label="搴旂洏鏁伴噺" align="center"></el-table-column> - <el-table-column prop="inventoryCounts" label="瀹炵洏鏁伴噺" align="center"></el-table-column> - <el-table-column prop="inventoryCounts" label="鐘舵��" align="center"></el-table-column> + <el-table-column prop="baseGoodsModelsName" label="鍨嬪彿" align="center"> </el-table-column> + <el-table-column prop="inventoryCount" label="搴旂洏鏁伴噺" align="center"></el-table-column> + <el-table-column prop="realNum" label="瀹炵洏鏁伴噺" align="center"></el-table-column> + <el-table-column prop="states" label="鐘舵��" align="center"></el-table-column> </el-table> - - <div slot="footer" align="center" class="dialog-footer"> - <my-button name="鏆傚瓨" site="form" type="primary" @click="close" /> - <my-button name="瀹屾垚鐩樼偣" site="form" type="success" @click="save" /> - </div> </win-md> </template> <script> import winMd from '@/components/win/win-md'; import myButton from '@/components/myButton/myButton'; +import { inventoryDetail } from '@/api/stock/inventory'; export default { components: { winMd, myButton }, props: { @@ -36,25 +32,16 @@ loading: false, formData: { businessFormCode: '2023080812', - businessTaskCode: '2023骞�9鏈堢洏鐐瑰崟', - warehouseId: '寮�灏佸競浠撳簱', - tableData: [], + businessFormName: '2023骞�9鏈堢洏鐐瑰崟', + warehouseName: '寮�灏佸競浠撳簱', + formInventoryGoodsList: [], }, }; }, created() { - for (let i = 0; i < 10; i++) { - this.formData.tableData.push({ - goodsTemplateName: '鏂戒箰榛戣壊纰崇矇', - baseGoodsModelsId: '鏂戒箰c2201', - classification: 'A', - unit: '濂�', - kc: 10, - price: 20, - inventoryResult: 200, - inventoryCounts: 0, - }); - } + inventoryDetail({ id: this.setting.id }).then((res) => { + this.formData = res; + }); }, methods: { close() { diff --git a/admin-web/src/views/stock/inventorycount/inventorytask/index.vue b/admin-web/src/views/stock/inventorycount/inventorytask/index.vue index c137a58..4e02bcb 100644 --- a/admin-web/src/views/stock/inventorycount/inventorytask/index.vue +++ b/admin-web/src/views/stock/inventorycount/inventorytask/index.vue @@ -21,6 +21,7 @@ @close="inventorySetting.show = false" @search="search" /> + <detail v-if="inventoryDetail.show" :setting="inventoryDetail" @close="inventoryDetail.show = false" @search="search" /> </el-card> </el-container> </el-container> @@ -38,6 +39,7 @@ import SettingIplatform from '@/utils/settingIplatform'; import edit from './edit'; import inventory from './inventory'; +import detail from './detail'; import * as finsystenant from '@/api/baseSetting/finsystenant'; import myImport from '@/views/components/myImport'; import { getBaseUrl } from '@/utils/base'; @@ -48,7 +50,7 @@ export default { name: 'index', - components: { MyButton, MyTableV2, edit, myImport, inventory }, + components: { MyButton, MyTableV2, edit, myImport, inventory,detail }, data() { return { // 鎼滅储妗� @@ -122,6 +124,12 @@ show: false, }, inventorySetting: { + title: '', + id: '', + orgId: '', + show: false, + }, + inventoryDetail:{ title: '', id: '', orgId: '', @@ -338,14 +346,14 @@ showInventory(row) { this.inventorySetting.id = row.id; this.inventorySetting.info = JSON.stringify(row); - this.inventorySetting.title = '鐩樼偣'; + this.inventorySetting.title = '鐩樼偣浠诲姟'; this.inventorySetting.show = true; }, showInventoryDetail(row) { - this.inventorySetting.id = row.id; - this.inventorySetting.info = JSON.stringify(row); - this.inventorySetting.title = '鐩樼偣'; - this.inventorySetting.show = true; + this.inventoryDetail.id = row.id; + this.inventoryDetail.info = JSON.stringify(row); + this.inventoryDetail.title = '鐩樼偣璇︽儏'; + this.inventoryDetail.show = true; }, // 鏌ヨtable鍒楄〃 search(pageNum) { diff --git a/admin-web/src/views/stock/inventorycount/inventorytask/inventory.vue b/admin-web/src/views/stock/inventorycount/inventorytask/inventory.vue index 45ecc56..fa31464 100644 --- a/admin-web/src/views/stock/inventorycount/inventorytask/inventory.vue +++ b/admin-web/src/views/stock/inventorycount/inventorytask/inventory.vue @@ -13,7 +13,7 @@ v-loading="loading" :data="formData.formInventoryGoodsList" :rules="rules" - height="400" + height="500" :stripe="true" class="the-table" > @@ -46,7 +46,7 @@ <script> import winMd from '@/components/win/win-md'; import myButton from '@/components/myButton/myButton'; -import { inventoryQuery, inventoryTemporaryStorage, inventoryFinish } from '@/api/stock/inventory'; +import { inventoryQuery, inventoryTemporaryStorage, inventoryFinish, inventoryDetail } from '@/api/stock/inventory'; export default { components: { winMd, myButton }, props: { @@ -78,35 +78,30 @@ console.log('info', info); if (info.states == 1) { // 缁х画鐩樼偣 - + inventoryDetail({ id: this.setting.id }).then((res) => { + this.formData = res; + this.formData.id = this.setting.id; + }); } else { inventoryQuery({ id: this.setting.id }).then((res) => { this.formData = res; this.formData.id = this.setting.id; }); } - inventoryQuery({ id: this.setting.id }).then((res) => { - this.formData = res; - this.formData.id = this.setting.id; - }); }, methods: { close() { this.$emit('close'); }, staging() { - this.$refs['ruleForm'].validate((valid) => { - if (valid) { - const params = { - ...this.formData, - inventoryGoodsList: this.formData.formInventoryGoodsList, - }; - inventoryTemporaryStorage(params).then(() => { - this.$message.success('鏆傚瓨鎴愬姛锛�'); - this.close(); - this.$emit('search'); - }); - } + const params = { + id: this.formData.id, + inventoryGoodsList: this.formData.formInventoryGoodsList, + }; + inventoryTemporaryStorage(params).then(() => { + this.$message.success('鏆傚瓨鎴愬姛锛�'); + this.close(); + this.$emit('search'); }); }, save() { diff --git a/admin-web/src/views/stock/ledger/alertQuery/index.vue b/admin-web/src/views/stock/ledger/alertQuery/index.vue index 0c53e12..b4afedf 100644 --- a/admin-web/src/views/stock/ledger/alertQuery/index.vue +++ b/admin-web/src/views/stock/ledger/alertQuery/index.vue @@ -83,12 +83,16 @@ label: '绫诲埆', placeholder: '璇烽�夋嫨', defaultValue: '', - options: [], - optionsConfig: { - label: 'dict_label', - value: 'dict_value', - url: SettingIplatform.apiBaseURL + '/permit/dict/data/type/GOODS_PRICE', - }, + options: [{ + label:'A', + value:'1' + },{ + label:'B', + value:'2' + },{ + label:'C', + value:'3' + }], }, ], // 鏍戞暟鎹� diff --git a/admin-web/src/views/stock/ledger/inventoryAlert/edit.vue b/admin-web/src/views/stock/ledger/inventoryAlert/edit.vue index 18be030..e23fe53 100644 --- a/admin-web/src/views/stock/ledger/inventoryAlert/edit.vue +++ b/admin-web/src/views/stock/ledger/inventoryAlert/edit.vue @@ -91,7 +91,7 @@ > <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> + <el-input v-else v-model.number="scope.row.lowerLimit" style="margin-bottom: 18px;"></el-input> </template> </el-table-column> <el-table-column prop="upperLimit" label="灏侀《搴撳瓨" align="center"> @@ -104,7 +104,7 @@ > <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> + <el-input v-else v-model.number="scope.row.upperLimit" style="margin-bottom: 18px;"></el-input> </template> </el-table-column> </el-table> diff --git a/admin-web/src/views/stock/ledger/inventoryAlert/index.vue b/admin-web/src/views/stock/ledger/inventoryAlert/index.vue index bedff7b..150b2fb 100644 --- a/admin-web/src/views/stock/ledger/inventoryAlert/index.vue +++ b/admin-web/src/views/stock/ledger/inventoryAlert/index.vue @@ -18,6 +18,11 @@ </el-card> </el-container> </el-container> + <my-import + :import-setting="importSetting" + :dialog-show="importSetting.dialogShow" + :dialog-title="importSetting.dialogTitle" + /> </div> </template> @@ -29,13 +34,13 @@ import myImport from '@/views/components/myImport'; import { getBaseUrl } from '@/utils/base'; import { selectTenantWarehouse, treeList } from '@/api/baseSetting/finsystenant'; -import {warningConfigGetDel} from '@/api/stock/ledger' +import { warningConfigGetDel } from '@/api/stock/ledger'; import { getDicts } from '@/api/system/dict/data'; import { mapGetters } from 'vuex'; export default { name: 'index', - components: { MyButton, MyTableV2, edit }, + components: { MyButton, MyTableV2, edit,myImport }, data() { return { // 鎼滅储妗� @@ -47,7 +52,10 @@ placeholder: '璇烽�夋嫨', defaultValue: '', options: [], - cascader: [{key:'warehouseId',queryKey: 'agencyId'},{key:'goodsTemplateId',queryKey: 'agencyId'}], + cascader: [ + { key: 'warehouseId', queryKey: 'agencyId' }, + { key: 'goodsTemplateId', queryKey: 'agencyId' }, + ], optionsConfig: { url: '/pc/fin/sys/tenant/select/tree_fin_tenant', props: null }, }, { @@ -60,17 +68,17 @@ optionsConfig: { label: 'warehouseName', value: 'id', - url: SettingIplatform.apiBaseURL + '/pc/base/warehouse/select/tenant_warehouse' + url: SettingIplatform.apiBaseURL + '/pc/base/warehouse/select/tenant_warehouse', }, }, { type: 'select', - dataIndex: 'goodsTemplateId', + dataIndex: 'baseGoodsTemplateId', label: '鐗╁搧鍚嶇О', placeholder: '璇疯緭鍏�', defaultValue: '', options: [], - cascader: [{key:'categoryId',queryKey: 'goodsTemplatesId'}], + cascader: [{ key: 'categoryId', queryKey: 'goodsTemplatesId' }], optionsConfig: { label: 'goodsName', value: 'id', @@ -78,16 +86,17 @@ }, }, { - type: 'select', + type: 'cascader', dataIndex: 'categoryId', label: '鍒嗙被', placeholder: '璇烽�夋嫨', defaultValue: '', options: [], optionsConfig: { - label: 'modelName', + label: 'label', value: 'id', - url: SettingIplatform.apiBaseURL + '/pc/base/goods/models/query/goodsModel' + url: SettingIplatform.apiBaseURL + '/pc/base/category/select/tree', + props: { checkStrictly: false }, }, }, { @@ -96,16 +105,36 @@ label: '绫诲埆', placeholder: '璇烽�夋嫨', defaultValue: '', - options: [], - optionsConfig: { - label: 'dict_label', - value: 'dict_value', - url: SettingIplatform.apiBaseURL + '/permit/dict/data/type/GOODS_PRICE', - }, + options: [{ + label:'A', + value:'1' + },{ + label:'B', + value:'2' + },{ + label:'C', + value:'3' + }], }, ], - // 鏍戞暟鎹� - treeDataList: [], + // 瀵煎叆 + importSetting: { + dialogTitle: '瀵煎叆', + dialogShow: false, + fileSettings: { + data: {}, + uploadUrl: getBaseUrl()+"/pc/fin/sys/tenant/import", // 涓婁紶鍦板潃 + accept: '.xls', // 鏍煎紡 + type: 'text', // 鍥炴樉褰㈠紡 + loading: false // 瀵煎叆鏁堟灉 + }, + /* 妯℃澘涓嬭浇 */ + templateSettings: { + templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О + templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate' // 涓嬭浇鍦板潃 + }, + onSuccess: null + }, // 鎼滅储鏉′欢 filterFrom: { warehouseType: 0, @@ -140,9 +169,9 @@ }, }, { - name: '瀵煎嚭', + name: '瀵煎叆', click: () => { - this.handleExport(); + this.importOrg(); }, }, ], @@ -193,8 +222,7 @@ computed: { ...mapGetters(['userInfo']), }, - created() { - }, + created() {}, methods: { del(row) { this.$modal.confirm('鏄惁纭鍒犻櫎姝ゆ潯鐨勬暟鎹悧锛�').then(() => { @@ -216,6 +244,19 @@ this.editSetting.title = '缂栬緫'; this.editSetting.show = true; }, + // 瀵煎叆 + importOrg() { + this.importSetting.dialogShow = true; + this.importSetting.onSuccess = (response, callBack) => { + if (response.code === 1) { + this.$message.success(response.msg); + this.search(1); + } else { + this.$message.warning(response.msg); + } + callBack(); + }; + }, // 鏌ヨtable鍒楄〃 search(pageNum) { if (pageNum != undefined) { diff --git a/admin-web/src/views/stock/ledger/inventoryQuery/index.vue b/admin-web/src/views/stock/ledger/inventoryQuery/index.vue index 178681a..56f4188 100644 --- a/admin-web/src/views/stock/ledger/inventoryQuery/index.vue +++ b/admin-web/src/views/stock/ledger/inventoryQuery/index.vue @@ -75,16 +75,17 @@ }, }, { - type: 'select', + type: 'cascader', dataIndex: 'categoryId', label: '鍒嗙被', placeholder: '璇烽�夋嫨', defaultValue: '', options: [], optionsConfig: { - label: 'modelName', + label: 'label', value: 'id', - url: SettingIplatform.apiBaseURL + '/pc/base/goods/models/query/goodsModel' + url: SettingIplatform.apiBaseURL + '/pc/base/category/select/tree', + props:{checkStrictly:false} }, }, { @@ -93,12 +94,16 @@ label: '绫诲埆', placeholder: '璇烽�夋嫨', defaultValue: '', - options: [], - optionsConfig: { - label: 'dict_label', - value: 'dict_value', - url: SettingIplatform.apiBaseURL + '/permit/dict/data/type/GOODS_PRICE', - }, + options: [{ + label:'A', + value:'1' + },{ + label:'B', + value:'2' + },{ + label:'C', + value:'3' + }], }, ], // 鏍戞暟鎹� @@ -158,7 +163,6 @@ }; }, created() { - // this.initQuery(); }, methods: { // 瀵煎嚭 diff --git a/admin-web/src/views/stock/ledger/ledgerQuery/index.vue b/admin-web/src/views/stock/ledger/ledgerQuery/index.vue index 59c1aac..16a2193 100644 --- a/admin-web/src/views/stock/ledger/ledgerQuery/index.vue +++ b/admin-web/src/views/stock/ledger/ledgerQuery/index.vue @@ -34,6 +34,7 @@ import { getCategorySelectTree, goodsModel } from '@/api/baseSetting/finsystenant'; import { getDicts } from '@/api/system/dict/data'; import * as DateFormatter from '@/utils/DateFormatter'; +import stockType from '@/utils/stockType' export default { name: 'index', @@ -75,7 +76,7 @@ placeholder: '璇疯緭鍏�', defaultValue: '', options: [], - cascader: [{ key: 'categoryId', queryKey: 'goodsTemplatesId' }], + cascader: [{ key: 'baseGoodsModelsId', queryKey: 'goodsTemplatesId' }], optionsConfig: { label: 'goodsName', value: 'id', @@ -110,20 +111,20 @@ }, { type: 'text', - dataIndex: 'name', + dataIndex: 'businessFormCode', label: '鍗曞彿', placeholder: '璇疯緭鍏�', defaultValue: '', }, { type: 'date-picker', - dataIndex: 'val1', + dataIndex: 'dealTimeStart', label: '鏃堕棿', defaultValue: '', }, { type: 'date-picker', - dataIndex: 'val2', + dataIndex: 'dealTimeEnd', label: '鑷�', defaultValue: '', }, @@ -190,23 +191,7 @@ field: 'summary', align: 'left', formatter: (row) => { - let result = ''; - let arr = ['閲囪喘鍏ュ簱', '璋冩嫧', '鍏朵粬鍑哄簱', '閮ㄩ棬鍒嗗彂', '鎶ュ簾鍑哄簱', '閮ㄩ棬鐗╁搧鍥為��浠撳簱', '鐗╁搧鐩樼偣']; - if (row.businessType == 7) { - if (this.thisType == 1) { - result = '鐩樼泩鍏ュ簱'; - } else { - result = '鐩樹簭鍑哄簱'; - } - }else if(this.businessType == 2) { - if (this.thisType == 1) { - result = '璋冩嫧鍏ュ簱'; - } else { - result = '璋冩嫧鍑哄簱'; - } - }else { - result = arr[row.businessType - 1]; - } + let result = stockType(row) return { value: result }; }, }, diff --git a/admin-web/src/views/stock/procure/purchaseOrder/index.vue b/admin-web/src/views/stock/procure/purchaseOrder/index.vue index 33b64a6..7000dc4 100644 --- a/admin-web/src/views/stock/procure/purchaseOrder/index.vue +++ b/admin-web/src/views/stock/procure/purchaseOrder/index.vue @@ -140,12 +140,25 @@ placeholder: '璇疯緭鍏�', defaultValue: '', }, + // { + // type: 'text', + // dataIndex: 'goodsTemplateName', + // label: '鐗╁搧鍚嶇О', + // placeholder: '鍙ā绯婃悳绱�', + // defaultValue: '', + // }, { - type: 'text', - dataIndex: 'goodsTemplateName', + type: 'select', + dataIndex: 'goodsTemplateId', label: '鐗╁搧鍚嶇О', - placeholder: '鍙ā绯婃悳绱�', + placeholder: '璇疯緭鍏�', defaultValue: '', + options: [], + optionsConfig: { + label: 'goodsName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/goods/template/query/goodsTemplate', + }, }, { type: 'cascader', @@ -219,6 +232,9 @@ }, }; }, + created(){ + this.fetchData() + }, methods: { fetchData() { this.loading = true; @@ -287,9 +303,6 @@ } if (this.filterFrom.incomeTimeEnd) { this.filterFrom.incomeTimeEnd = this.filterFrom.incomeTimeEnd.replace(/\-/g, ''); - } - if (this.filterFrom.agencyId && this.filterFrom.agencyId.length) { - this.filterFrom.agencyId = this.filterFrom.agencyId[this.filterFrom.agencyId.length - 1]; } this.search(1); }, diff --git a/admin-web/src/views/stock/procure/receiptDetails/index.vue b/admin-web/src/views/stock/procure/receiptDetails/index.vue index 7f80beb..67a4754 100644 --- a/admin-web/src/views/stock/procure/receiptDetails/index.vue +++ b/admin-web/src/views/stock/procure/receiptDetails/index.vue @@ -52,19 +52,31 @@ defaultValue: '', }, { - type: 'text', - dataIndex: 'goodsTemplateName', + type: 'select', + dataIndex: 'goodsTemplateId', label: '鐗╁搧鍚嶇О', placeholder: '璇疯緭鍏�', defaultValue: '', + options: [], + cascader: [{ key: 'baseGoodsModelsId', queryKey: 'goodsTemplatesId' }], + optionsConfig: { + label: 'goodsName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/goods/template/query/goodsTemplate', + }, }, { type: 'select', dataIndex: 'baseGoodsModelsId', label: '瑙勬牸鍨嬪彿', - placeholder: '璇烽�夋嫨', + placeholder: '璇疯緭鍏�', defaultValue: '', options: [], + optionsConfig: { + label: 'modelName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/goods/models/query/goodsModel', + }, }, { type: 'cascader', @@ -206,17 +218,6 @@ }; }, created() { - // 鎼滅储妗嗚鏍煎瀷鍙� - goodsModel().then((res) => { - this.items.forEach((v) => { - if (v.label == '瑙勬牸鍨嬪彿') { - v.options = res.map((item) => { - (item.label = item.modelName), (item.value = item.id); - return item; - }); - } - }); - }); }, methods: { //瀵煎叆 @@ -279,9 +280,6 @@ } if (this.filterFrom.incomeTimeEnd) { this.filterFrom.incomeTimeEnd = this.filterFrom.incomeTimeEnd.replace(/\-/g, ''); - } - if (params.agencyId && params.agencyId.length) { - this.filterFrom.agencyId = params.agencyId[params.agencyId.length - 1]; } this.search(1); }, diff --git a/admin-web/src/views/stock/scrap/itemScrapping/detail.vue b/admin-web/src/views/stock/scrap/itemScrapping/detail.vue index c6b0a1e..ca33631 100644 --- a/admin-web/src/views/stock/scrap/itemScrapping/detail.vue +++ b/admin-web/src/views/stock/scrap/itemScrapping/detail.vue @@ -6,7 +6,7 @@ <span>{{ detail.businessFormCode }}</span> </el-col> <el-col :span="8"> - <span>鎶ュ簾浠撳簱锛�</span> + <span>浠撳簱锛�</span> <span>{{ detail.warehouseName }}</span> </el-col> <el-col :span="8"> @@ -16,33 +16,23 @@ </el-row> <el-row :gutter="20" style="margin-top: 20px"> <el-col :span="8"> - <span>鐘舵�侊細</span> - <span>{{ detail.states == 1 ? '寰呮姤搴�' : '宸叉姤搴�' }}</span> - </el-col> - <el-col :span="8"> <span>鍒涘缓浜猴細</span> - <span>{{ detail.buyerName }}</span> + <span>{{ detail.operatorName }}</span> </el-col> <el-col :span="8"> <span>鎶ュ簾鏃堕棿锛�</span> - <span>{{ detail.incomeTime | formatTime }}</span> - </el-col> - </el-row> - <el-row :gutter="20" style="margin-top: 20px"> - <el-col class="img-row" :span="12"> - <span>鎶ュ簾绫诲瀷锛�</span> - <span>{{ detail.buyType == 1 ? '闆嗛噰' : '鑷噰' }}</span> + <span>{{ detail.dealTime | formatTime }}</span> </el-col> </el-row> <el-row :gutter="20" style="margin-top: 20px"> <el-col class="img-row" :span="24"> - <span>鎶ュ簾鎵嬬画鐓х墖锛�</span> + <span>鎶ュ簾鎵嬬画锛�</span> <div class="img-box" v-for="(item, index) in fileList" :key="index" @click="handlePreview(item)"> <img class="img" :src="getUrl(item.path)" alt="" /> </div> </el-col> </el-row> - <div class="goods-card" v-for="(goodsItem, goodsIndex) in detail.procureGoods" :key="goodsIndex"> + <div class="goods-card" v-for="(goodsItem, goodsIndex) in detail.scrappedGoodsInfo" :key="goodsIndex"> <el-row :gutter="20"> <el-col :span="8"> <span>鐗╁搧鍒嗙被锛�</span> @@ -52,12 +42,8 @@ <span>鐗╁搧鍚嶇О锛�</span> <span>{{ goodsItem.goodsTemplateName }}</span> </el-col> - <el-col :span="8"> - <span>渚涜揣鍟嗭細</span> - <span>{{ goodsItem.supplier }}</span> - </el-col> </el-row> - <el-table :data="goodsItem.models" :stripe="true" style="margin-top: 20px"> + <el-table :data="goodsItem.scrappedGoodsInfo" :stripe="true" style="margin-top: 20px"> <el-table-column prop="baseGoodsModelsName" label="瑙勬牸鍨嬪彿" align="center"> <template slot-scope="scope"> {{ scope.row.baseGoodsModelsName }} @@ -68,19 +54,14 @@ {{ scope.row.unit }} </template> </el-table-column> - <el-table-column prop="price" label="鍗曚环" align="center"> - <template slot-scope="scope"> - {{ scope.row.price }} - </template> - </el-table-column> <el-table-column prop="counts" label="鎶ュ簾鏁伴噺" align="center"> <template slot-scope="scope"> {{ scope.row.counts }} </template> </el-table-column> - <el-table-column prop="counts" label="閲戦" align="center"> + <el-table-column prop="scrappedCode" label="鎶ュ簾鍘熷洜" align="center"> <template slot-scope="scope"> - {{ (scope.row.price * scope.row.counts).toFixed(2) }} + {{ getDictName(scope.row.scrappedCode) }} </template> </el-table-column> </el-table> @@ -99,12 +80,13 @@ </win-md> </template> <script> -import { procureDetail } from '@/api/stock/procure/purchaseOrder'; +import { scrappedDetail } from '@/api/stock/scrap'; import winMd from '@/components/win/win-md'; import * as DateFormatter from '@/utils/DateFormatter'; import { getDownUrl } from '@/utils/base'; import Viewer from 'viewerjs'; import 'viewerjs/dist/viewer.css'; +import { getDicts } from '@/api/system/dict/data'; let viewer = null; @@ -119,6 +101,7 @@ }, data() { return { + scrapReasonOptions: [], fileList: [], detail: { baseCategoryName: '', @@ -130,8 +113,7 @@ states: '', createName: '', time: '', - procureGoods: [{}, {}], - fileKey: Math.random(), + scrappedGoodsInfo: [], }, }; }, @@ -142,15 +124,22 @@ }, }, created() { - procureDetail({ id: this.setting.id }).then((res) => { + scrappedDetail({ id: this.setting.id }).then((res) => { this.detail = res; this.fileList = this.detail.procureDoc ? JSON.parse(this.detail.procureDoc) : []; this.$nextTick(() => { this.initPreviewImg(); }); }); + getDicts('SCRAP_REASON').then((res) => { + this.scrapReasonOptions = res; + }); }, methods: { + getDictName(code) { + let item = this.scrapReasonOptions.find(v=>v.dict_value==code) + return item ? item.dict_label : '' + }, initPreviewImg() { if (viewer != null) { viewer.destroy(); @@ -172,12 +161,6 @@ index++; } } - // this.fileList.forEach((f, i) => { - // if (file.uid == f.uid) { - // index = i - // } - // }) - // document.querySelector('#uploadPreviewImages').children[0].click() viewer.view(index); }, checkImg(name) { diff --git a/admin-web/src/views/stock/scrap/itemScrapping/edit.vue b/admin-web/src/views/stock/scrap/itemScrapping/edit.vue index c24c442..a4846ec 100644 --- a/admin-web/src/views/stock/scrap/itemScrapping/edit.vue +++ b/admin-web/src/views/stock/scrap/itemScrapping/edit.vue @@ -1,29 +1,31 @@ <template> - <win-md class="stock-edit" :title="`${setting.title}鎶ュ簾鎶ュ簾`" @close="close" :width="'800px'"> + <win-md class="stock-edit" :title="`${setting.title}鎶ュ簾`" @close="close" :width="'800px'"> <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-form-item label="鏈烘瀯" prop="agencyName"> <el-input :value="formData.agencyName" disabled></el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="鎶ュ簾浠撳簱" prop="warehouseId"> - <el-input :value="formData.warehouseName" disabled></el-input> + <el-select v-model="formData.warehouseId" placeholder="璇烽�夋嫨" style="width: 100%"> + <el-option v-for="item in warehouses" :key="item.id" :label="item.warehouseName" :value="item.id" /> + </el-select> </el-form-item> </el-col> </el-row> <el-row :gutter="24" class="headerHeight"> <el-col :span="12"> - <el-form-item label="鎶ュ簾浜�" prop="buyType"> + <el-form-item label="鎶ュ簾浜�" prop="operatorName"> <el-input :value="formData.operatorName" disabled></el-input> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="鎶ュ簾鏃堕棿" prop="procureTime"> + <el-form-item label="鎶ュ簾鏃堕棿" prop="dealTime"> <el-date-picker - v-model="formData.procureTime" + v-model="formData.dealTime" type="datetime" value="yyyy-MM-dd HH:mm:ss" value-format="yyyyMMddHHmmss" @@ -36,17 +38,17 @@ </el-row> <el-row :gutter="24" class="headerHeight"> <el-col :span="24"> - <el-form-item label="鎶ュ簾瀹℃壒鎵嬬画" prop="procureDoc"> + <el-form-item label="鎶ュ簾瀹℃壒鎵嬬画" prop="uploadFiles"> <upload ref="uploadRef" :values="fileList" :settings="uploadSettings" @on-change="uploadChange"></upload> </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.scrappedGoodsInfo" :key="goodsIndex"> <el-row :gutter="24"> <el-col :span="12"> <el-form-item label="鐗╁搧鍒嗙被" - :prop="`procureGoods[${goodsIndex}].baseCategoryIds`" + :prop="`scrappedGoodsInfo[${goodsIndex}].baseCategoryIds`" :rules="{ required: true, message: '璇烽�夋嫨', @@ -65,12 +67,8 @@ <el-col :span="12"> <el-form-item label="鐗╁搧鍚嶇О" - :prop="`procureGoods[${goodsIndex}].baseGoodsTemplateId`" - :rules="{ - required: true, - message: '璇烽�夋嫨', - trigger: 'change', - }" + :prop="`scrappedGoodsInfo[${goodsIndex}].baseGoodsTemplateId`" + :rules="rules.baseGoodsTemplateId" > <el-select v-model="goodsItem.baseGoodsTemplateId" @@ -94,7 +92,7 @@ <el-col :span="12"> <el-form-item label="瑙勬牸鍨嬪彿" - :prop="`procureGoods[${goodsIndex}].modelsIds`" + :prop="`scrappedGoodsInfo[${goodsIndex}].modelsIds`" :rules="{ required: true, message: '璇烽�夋嫨', @@ -120,33 +118,38 @@ </el-form-item> </el-col> </el-row> - <el-table :data="goodsItem.models" :stripe="true"> + <el-table :data="goodsItem.scrappedGoodsList" :stripe="true"> <el-table-column prop="baseGoodsModelsId" label="鍨嬪彿" align="center"> <template slot-scope="scope"> {{ getGoodsModelsName(scope.row.baseGoodsModelsId) }} </template> </el-table-column> - <el-table-column prop="price" label="鍓╀綑鏁伴噺" align="center"> + <el-table-column prop="total" label="鍓╀綑鏁伴噺" align="center"> <template slot-scope="scope"> - <el-input type="number" v-model="scope.row.price"></el-input> + {{ scope.row.total }} </template> </el-table-column> <el-table-column prop="counts" label="鎶ュ簾鏁伴噺" align="center"> <template slot-scope="scope"> - <el-input type="number" v-model="scope.row.counts"></el-input> + <el-input v-model.number="scope.row.counts"></el-input> </template> </el-table-column> - <el-table-column prop="counts" label="鎶ュ簾鍘熷洜" align="center"> + <el-table-column prop="scrappedCode" label="鎶ュ簾鍘熷洜" align="center"> <template slot-scope="scope"> - <el-select v-model="scope.row.modelsIds" multiple placeholder="璇烽�夋嫨"> - <el-option v-for="item in []" :key="item.id" :label="item.label" :value="item.id" /> + <el-select v-model="scope.row.scrappedCode" placeholder="璇烽�夋嫨"> + <el-option + v-for="item in scrapReasonOptions" + :key="item.dict_value" + :label="item.dict_label" + :value="item.dict_value" + /> </el-select> </template> </el-table-column> </el-table> <div class="btn-group"> <el-button - v-if="formData.procureGoods.length > 1" + v-if="formData.scrappedGoodsInfo.length > 1" name="绉婚櫎" type="danger" plain @@ -155,7 +158,7 @@ >绉婚櫎</el-button > <el-button - v-if="formData.procureGoods.length - 1 == goodsIndex" + v-if="formData.scrappedGoodsInfo.length - 1 == goodsIndex" name="鏂板鐗╁搧" type="primary" plain @@ -174,21 +177,21 @@ </win-md> </template> <script> +import { scrappedAdd } from '@/api/stock/scrap'; import { goodsTemplate, - procureAdd, - procureEdit, selectTenantWarehouse, goodsModel, - procureDetail, -} from '@/api/stock/procure/purchaseOrder'; + warehouseSelectNumber, +} from '@/api/baseSetting/finsystenant'; 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 { getUploadUrl } from '@/utils/base'; import { mapGetters } from 'vuex'; import SettingIplatform from '../../../../../public/static/config'; +import { getDicts } from '@/api/system/dict/data'; export default { components: { MyButton, winMd, upload }, @@ -199,29 +202,29 @@ }, }, data() { + // 鑷畾涔夋牎楠� + // 鐗╁搧閲嶅鏍¢獙 + var checkGoodsTemplateId = (rule, value, callback) => { + if (!value) { + return callback(new Error('璇烽�夋嫨')); + } + let temp = this.formData.scrappedGoodsInfo.filter((v) => v.baseGoodsTemplateId == value); + if (!temp || temp.length != 1) { + return callback(new Error('宸查�夎繃姝ょ墿鍝�')); + } + callback(); + }; return { - visible: false, loading: false, - buyTypeOptions: [ - { - label: '闆嗛噰', - value: '1', - }, - { - label: '鑷噰', - value: '2', - }, - ], fileList: [], warehouses: [], // 鎶ュ簾浠撳簱鍒楄〃 categoryOptions: [], // 鐗╁搧鍒嗙被鍒楄〃 - modelList: [], //鍨嬪彿鍒楄〃 + scrapReasonOptions: [], // 鎶ュ簾鍘熷洜鍒楄〃 formData: { - procureDoc: '', + uploadFiles: '', warehouseId: '', // 鎶ュ簾浠撳簱id - procureTime: '', // 鎶ュ簾鏃堕棿 - buyType: '2', // 鎶ュ簾鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛� - procureGoods: [], + dealTime: '', // 鎶ュ簾鏃堕棿 + scrappedGoodsInfo: [], }, goodsItem: { baseCategoryIds: '', // 鍒嗙被缂栧彿鏁扮粍 @@ -231,21 +234,17 @@ sort: '', // 鏄剧ず椤哄簭 goodsOptions: [], // 鐗╁搧鍒楄〃select modelsOptions: [], //瑙勬牸鍨嬪彿select - models: [], // 鐗╁搧鍚嶇О + scrappedGoodsList: [], // 鐗╁搧鍚嶇О modelsIds: [], //瑙勬牸鍨嬪彿 - }, - modelsItem: { - baseGoodsModelsId: '', // 瑙勬牸鍨嬪彿缂栧彿 - counts: 0, // 鎿嶄綔鏁伴噺 }, rules: { warehouseId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], - procureTime: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], + dealTime: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], buyType: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], - procureDoc: [{ required: true, message: '璇蜂笂浼�', trigger: 'change' }], + uploadFiles: [{ required: true, message: '璇蜂笂浼�', trigger: 'change' }], baseCategoryIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], - baseGoodsTemplateId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], + baseGoodsTemplateId: [{ validator: checkGoodsTemplateId, trigger: ['blur', 'change'] }], modelsIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], }, @@ -274,14 +273,15 @@ this.getgoodsTemplate(); this.getgoodsModel(); this.getCategoryTree(); - this.formData.procureGoods.push(JSON.parse(JSON.stringify(this.goodsItem))); - this.formData.operatorId = this.userInfo.userCode; + this.formData.scrappedGoodsInfo.push(JSON.parse(JSON.stringify(this.goodsItem))); + this.formData.operatorId = this.userInfo.id; this.formData.operatorName = this.userInfo.userName; this.formData.agencyId = this.userInfo.tenantId; this.formData.agencyName = this.userInfo.tenantName; - this.formData.warehouseId = this.userInfo.tenantId; - this.formData.warehouseName = this.userInfo.tenantName; this.formData.warehouseType = 0; + getDicts('SCRAP_REASON').then((res) => { + this.scrapReasonOptions = res; + }); }, async getCategoryTree() { // 鑾峰彇鐗╁搧鍒嗙被鍒楄〃 @@ -319,7 +319,7 @@ getgoodsTemplate(id, index) { goodsTemplate({ categoryId: id || '' }).then((res) => { if (index || index == 0) { - this.$set(this.formData.procureGoods[index], 'goodsOptions', res); + this.$set(this.formData.scrappedGoodsInfo[index], 'goodsOptions', res); } else { this.goodsTemplatelAll = res; } @@ -330,7 +330,7 @@ getgoodsModel(id, index) { goodsModel({ goodsTemplatesId: id || '' }).then((res) => { if (index || index == 0) { - this.$set(this.formData.procureGoods[index], 'modelsOptions', res); + this.$set(this.formData.scrappedGoodsInfo[index], 'modelsOptions', res); } else { this.goodsModelAll = res; } @@ -357,63 +357,70 @@ // 鐗╁搧鍒嗙被閫夋嫨 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.scrappedGoodsInfo[index].goodsOptions = []; + this.formData.scrappedGoodsInfo[index].baseGoodsTemplateId = ''; + this.formData.scrappedGoodsInfo[index].goodsTemplateName = ''; + this.formData.scrappedGoodsInfo[index].modelsOptions = []; + this.formData.scrappedGoodsInfo[index].modelsIds = []; + this.formData.scrappedGoodsInfo[index].scrappedGoodsList = []; - this.formData.procureGoods[index].baseCategoryId = e[e.length - 1]; + this.formData.scrappedGoodsInfo[index].baseCategoryId = e[e.length - 1]; // 鏍规嵁閫変腑鍒嗙被璇锋眰鐗╁搧鍚嶇О鍒楄〃 this.getgoodsTemplate(e[e.length - 1], index); }, // 鐗╁搧鍚嶇О鍒楄〃 goodsTemplateChange(e, index) { - this.formData.procureGoods[index].modelsOptions = []; - this.formData.procureGoods[index].modelsIds = []; - this.formData.procureGoods[index].models = []; + this.formData.scrappedGoodsInfo[index].modelsOptions = []; + this.formData.scrappedGoodsInfo[index].modelsIds = []; + this.formData.scrappedGoodsInfo[index].scrappedGoodsList = []; - this.formData.procureGoods[index].goodsTemplateName = this.getGoodsTemplateName(e); + this.formData.scrappedGoodsInfo[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.scrappedGoodsInfo[index].scrappedGoodsList]; 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({ + warehouseId: this.formData.warehouseId, + baseGoodsModelsId: item, + warehouseType: 0, + states: 1, + buyType: null, + }); + arr.push({ baseGoodsModelsId: item, total: num, counts: null, scrappedCode: null }); } - }); - this.formData.procureGoods[index].models = arr; + } + this.formData.scrappedGoodsInfo[index].scrappedGoodsList = arr; }, // 瑙勬牸鍨嬪彿绉婚櫎 modelRemoveTag(e, index) { - let arr = this.formData.procureGoods[index].models; + let arr = this.formData.scrappedGoodsInfo[index].scrappedGoodsList; let delIndex = arr.findIndex((v) => v.baseGoodsModelsId == e); - this.formData.procureGoods[index].models.splice(delIndex, 1); + this.formData.scrappedGoodsInfo[index].scrappedGoodsList.splice(delIndex, 1); }, // 涓婁紶 uploadChange() { let arr = this.$refs.uploadRef.fileList; - this.formData.procureDoc = JSON.stringify(arr); + this.formData.uploadFiles = JSON.stringify(arr); }, // 鐐瑰嚮鏂板鐗╁搧 addGoods() { - this.formData.procureGoods.push(JSON.parse(JSON.stringify(this.goodsItem))); + this.formData.scrappedGoodsInfo.push(JSON.parse(JSON.stringify(this.goodsItem))); }, // 鐐瑰嚮绉婚櫎 removeGoods(index) { - this.formData.procureGoods.splice(index, 1); + this.formData.scrappedGoodsInfo.splice(index, 1); }, // 鎻愪氦 @@ -421,29 +428,16 @@ this.$refs['ruleForm'].validate((valid) => { if (valid) { console.log('this.formData', this.formData); - if (!this.setting.id) { - procureAdd(this.formData) - .then((res) => { - this.$message.success('淇濆瓨鎴愬姛锛�'); - this.close(); - this.$emit('search'); - }) - .catch((err) => { - console.log('create err', err); - 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('淇濆瓨澶辫触'); - }); - } + scrappedAdd(this.formData) + .then((res) => { + this.$message.success('淇濆瓨鎴愬姛锛�'); + this.close(); + this.$emit('search'); + }) + .catch((err) => { + console.log('create err', err); + this.$message.error('淇濆瓨澶辫触'); + }); } else { this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��'); } @@ -453,46 +447,10 @@ close() { this.formData = { warehouseId: '', // 鎶ュ簾浠撳簱id - procureTime: '', // 鎶ュ簾鏃堕棿 - procureGoods: [], + dealTime: '', // 鎶ュ簾鏃堕棿 + scrappedGoodsInfo: [], }; this.$emit('close'); - }, - - // 閫氳繃瀛愰泦id鏌ュ埌鎵�浠ョ浉鍏崇埗绾d骞惰繑鍥炴暟缁� - findParentIds(dataSource, nodeId) { - const parentIds = [nodeId]; // 鐢ㄤ簬瀛樺偍鎵�鏈夌埗鑺傜偣ID鐨勬暟缁� - - // 瀹氫箟涓�涓�掑綊鍑芥暟锛岀敤浜庨亶鍘嗘暣妫垫爲骞舵煡鎵惧瓙鑺傜偣鐨勬墍鏈夌埗鑺傜偣 - function traverse(node, nodeId) { - if (node.id === nodeId) { - // 濡傛灉褰撳墠鑺傜偣鐨処D绛変簬瀛愯妭鐐圭殑ID锛屽垯琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣锛屽彲浠ュ紑濮嬪悜涓婃煡鎵剧埗鑺傜偣 - return true; // 杩斿洖true琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣 - } - - if (node.children) { - // 濡傛灉褰撳墠鑺傜偣鏈夊瓙鑺傜偣锛屽垯缁х画閬嶅巻瀛愯妭鐐� - for (const childNode of node.children) { - if (traverse(childNode, nodeId)) { - // 濡傛灉鍦ㄥ瓙鑺傜偣涓壘鍒颁簡瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欏皢褰撳墠鑺傜偣鐨処D娣诲姞鍒扮埗鑺傜偣ID鏁扮粍涓紝骞惰繑鍥瀟rue琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣 - parentIds.unshift(node.id); - return true; - } - } - } - - return false; // 濡傛灉褰撳墠鑺傜偣涓嶆槸瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欒繑鍥瀎alse - } - - // 浠庢牴鑺傜偣寮�濮嬮亶鍘嗘暣妫垫爲锛屽苟璋冪敤閫掑綊鍑芥暟鏌ユ壘瀛愯妭鐐圭殑鎵�鏈夌埗鑺傜偣 - for (const node of dataSource) { - if (traverse(node, nodeId)) { - // 濡傛灉鍦ㄥ綋鍓嶈妭鐐圭殑瀛愭爲涓壘鍒颁簡瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欑洿鎺ラ��鍑哄惊鐜� - break; - } - } - - return parentIds; // 杩斿洖鎵�鏈夌埗鑺傜偣ID鐨勬暟缁� }, }, }; diff --git a/admin-web/src/views/stock/scrap/itemScrapping/index.vue b/admin-web/src/views/stock/scrap/itemScrapping/index.vue index 5263192..4f2565c 100644 --- a/admin-web/src/views/stock/scrap/itemScrapping/index.vue +++ b/admin-web/src/views/stock/scrap/itemScrapping/index.vue @@ -21,9 +21,7 @@ <div class="card-header-left"> <span>鎶ュ簾鍗曞彿锛�</span> <span class="value">{{ item.businessFormCode }}</span> - <div class="states" :class="item.states == 1 ? '' : 'states-success'"> - {{ item.states == 1 ? '寰呮姤搴�' : '宸叉姤搴�' }} - </div> + </div> <div class="card-header-right"> <el-button site="form" type="success" size="mini" @click="handleExport(item)" @@ -35,15 +33,15 @@ </div> </div> <div class="one-hed"> - <div class="box"><span class="span-two">鏈烘瀯锛�</span>{{ item.agencyId }}</div> - <div class="box"><span class="span-two">鎿嶄綔浜猴細</span>{{ item.buyerName }}</div> + <div class="box"><span class="span-two">鏈烘瀯锛�</span>{{ item.agencyName }}</div> + <div class="box"><span class="span-two">鎿嶄綔浜猴細</span>{{ item.operatorName }}</div> <div class="box"> - <span class="span-two">鎶ュ簾鏃堕棿锛�</span>{{ item.procureTime | formatTime }} + <span class="span-two">鎶ュ簾鏃堕棿锛�</span>{{ item.dealTime | formatTime }} </div> </div> <div class="card-end"> - <div v-for="(just, index) in item.fromProcureTemplateInfoList" :key="index" class="item"> - <div class="name">{{ just.goodsTemplateName }}</div> + <div v-for="(just, index) in item.goodTemplateInfo" :key="index" class="item"> + <div class="name">{{ just.goodsName }}</div> <div class="value-box"> <div class="value-box-item"> <span class="label">鏁伴噺锛�</span> @@ -86,20 +84,14 @@ @close="detailSetting.show = false" ref="detailRef" ></detail> - <my-import - :import-setting="importSetting" - :dialog-show="importSetting.dialogShow" - :dialog-title="importSetting.dialogTitle" - /> </div> </template> <script> -import { procureList, procureDel, procureIncome } from '@/api/stock/procure/purchaseOrder'; +import { scrappedList, } from '@/api/stock/scrap'; import { getTree } from '@/api/baseSetting/finsystenant'; import MyButton from '@/components/myButton/myButton'; import SettingIplatform from '@/utils/settingIplatform'; -import myImport from '@/views/components/myImport'; import edit from './edit'; import detail from './detail'; import { getBaseUrl } from '@/utils/base'; @@ -107,7 +99,7 @@ export default { name: 'index', - components: { MyButton, myImport, edit, detail }, + components: { MyButton, edit, detail }, data() { return { loading: false, @@ -123,11 +115,17 @@ defaultValue: '', }, { - type: 'text', - dataIndex: 'goodsTemplateName', + type: 'select', + dataIndex: 'goodsTemplateId', label: '鐗╁搧鍚嶇О', - placeholder: '鍙ā绯婃悳绱�', + placeholder: '璇疯緭鍏�', defaultValue: '', + options: [], + optionsConfig: { + label: 'goodsName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/goods/template/query/goodsTemplate', + }, }, { type: 'cascader', @@ -159,24 +157,6 @@ userName: null, userPhone: null, states: null, - }, - // 瀵煎叆 - importSetting: { - dialogTitle: '瀵煎叆', - dialogShow: false, - fileSettings: { - data: {}, - uploadUrl: getBaseUrl() + '/pc/fin/sys/tenant/import', // 涓婁紶鍦板潃 - accept: '.xls', // 鏍煎紡 - type: 'text', // 鍥炴樉褰㈠紡 - loading: false, // 瀵煎叆鏁堟灉 - }, - /* 妯℃澘涓嬭浇 */ - templateSettings: { - templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О - templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate', // 涓嬭浇鍦板潃 - }, - onSuccess: null, }, editSetting: { title: '', @@ -211,7 +191,7 @@ methods: { fetchData() { this.loading = true; - procureList({ + scrappedList({ pageNum: this.pageNum, pageSize: this.pageSize, ...this.filterFrom, @@ -245,38 +225,10 @@ this.editSetting.title = '鏂板'; this.editSetting.show = true; }, - // 缂栬緫 - handleEdit(row) { - this.editSetting.id = row.id; - this.editSetting.info = null; - this.editSetting.title = '缂栬緫'; - this.editSetting.show = true; - }, // 璇︽儏 handleDetail(row) { this.detailSetting.id = row.id; this.detailSetting.show = true; - }, - // 鎶ュ簾 - handleIncome(row) { - this.$confirm(`鎮ㄧ‘瀹� 鍗曞彿锛�${row.businessFormCode} 鎶ュ簾鍚�?`, '鎶ュ簾鎶ュ簾').then(() => { - procureIncome({ id: row.id }) - .then((res) => { - this.$message.success('鎶ュ簾鎴愬姛锛�'); - this.search(); - }) - .catch(() => {}); - }); - }, - del(row) { - this.$modal.confirm('鏄惁纭鍒犻櫎鎶ュ簾鍗曞彿涓�"' + row.businessFormCode + '"鐨勬暟鎹悧锛�').then(() => { - procureDel({ id: row.id }) - .then((res) => { - this.$message.success('鍒犻櫎鎴愬姛锛�'); - this.search(); - }) - .catch(() => {}); - }); }, // 鍒嗛〉 handleSizeChange(pageSize) { @@ -306,9 +258,6 @@ } if (this.filterFrom.incomeTimeEnd) { this.filterFrom.incomeTimeEnd = this.filterFrom.incomeTimeEnd.replace(/\-/g, ''); - } - if (this.filterFrom.agencyId.length) { - this.filterFrom.agencyId = this.filterFrom.agencyId[this.filterFrom.agencyId.length - 1]; } this.search(1); }, diff --git a/admin-web/src/views/stock/scrap/scrapDetails/index.vue b/admin-web/src/views/stock/scrap/scrapDetails/index.vue index 257a248..d694dca 100644 --- a/admin-web/src/views/stock/scrap/scrapDetails/index.vue +++ b/admin-web/src/views/stock/scrap/scrapDetails/index.vue @@ -10,7 +10,7 @@ <el-row style="margin-top: 15px"> <el-col> <!--鍒楄〃--> - <my-table-v2 ref="myTable" :filter="filterFrom" :table="table"/> + <my-table-v2 ref="myTable" :filter="filterFrom" :table="table" /> </el-col> </el-row> </el-card> @@ -31,17 +31,18 @@ </template> <script> -import MyTableV2 from "@/components/myTable/myTableV2"; -import MyButton from "@/components/myButton/myButton"; +import MyTableV2 from '@/components/myTable/myTableV2'; +import MyButton from '@/components/myButton/myButton'; import SettingIplatform from '@/utils/settingIplatform'; -import * as finsystenant from '@/api/baseSetting/finsystenant' -import myImport from '@/views/components/myImport' +import * as finsystenant from '@/api/baseSetting/finsystenant'; +import myImport from '@/views/components/myImport'; import detail from '../itemScrapping/detail'; -import {getBaseUrl} from '@/utils/base'; +import { getBaseUrl } from '@/utils/base'; +import * as DateFormatter from '@/utils/DateFormatter'; export default { - name: "index", - components: {MyButton, MyTableV2, myImport,detail}, + name: 'index', + components: { MyButton, MyTableV2, myImport, detail }, data() { return { // 鎼滅储妗� @@ -51,22 +52,35 @@ dataIndex: 'name', label: '鍗曞彿', placeholder: '璇疯緭鍏�', - defaultValue: '' + defaultValue: '', }, + { - type: 'text', - dataIndex: 'name', + type: 'select', + dataIndex: 'goodsTemplateId', label: '鐗╁搧鍚嶇О', placeholder: '璇疯緭鍏�', - defaultValue: '' + defaultValue: '', + options: [], + cascader: [{ key: 'baseGoodsModelsId', queryKey: 'goodsTemplatesId' }], + optionsConfig: { + label: 'goodsName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/goods/template/query/goodsTemplate', + }, }, { type: 'select', - dataIndex: 'warehouseId', + dataIndex: 'baseGoodsModelsId', label: '瑙勬牸鍨嬪彿', - placeholder: '璇烽�夋嫨', + placeholder: '璇疯緭鍏�', defaultValue: '', options: [], + optionsConfig: { + label: 'modelName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/goods/models/query/goodsModel', + }, }, { type: 'cascader', @@ -82,7 +96,7 @@ dataIndex: 'name', label: '鍒涘缓浜�', placeholder: '璇疯緭鍏�', - defaultValue: '' + defaultValue: '', }, { type: 'date-picker', @@ -104,25 +118,25 @@ tenantId: null, userName: null, userPhone: null, - status: 1 + status: 1, }, // 瀵煎叆 importSetting: { - dialogTitle: '瀵煎叆', - dialogShow: false, - fileSettings: { - data: {}, - uploadUrl: getBaseUrl()+"/pc/fin/sys/tenant/import", // 涓婁紶鍦板潃 - accept: '.xls', // 鏍煎紡 - type: 'text', // 鍥炴樉褰㈠紡 - loading: false // 瀵煎叆鏁堟灉 - }, - /* 妯℃澘涓嬭浇 */ - templateSettings: { - templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О - templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate' // 涓嬭浇鍦板潃 - }, - onSuccess: null + dialogTitle: '瀵煎叆', + dialogShow: false, + fileSettings: { + data: {}, + uploadUrl: getBaseUrl() + '/pc/fin/sys/tenant/import', // 涓婁紶鍦板潃 + accept: '.xls', // 鏍煎紡 + type: 'text', // 鍥炴樉褰㈠紡 + loading: false, // 瀵煎叆鏁堟灉 + }, + /* 妯℃澘涓嬭浇 */ + templateSettings: { + templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О + templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate', // 涓嬭浇鍦板潃 + }, + onSuccess: null, }, editSetting: { title: '', @@ -134,28 +148,36 @@ table: { showIndex: true, // 鏄惁鏄剧ず搴忓彿 expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁 - url: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/select/list', // 璇锋眰鍦板潃 + url: SettingIplatform.apiBaseURL + '/pc/l/wh/form/scrapped/list/detailList', // 璇锋眰鍦板潃 // 宸ュ叿鏉� tools: { - columnsCtrl: {// 鍒楁帶鍒舵寜閽� - show: false + columnsCtrl: { + // 鍒楁帶鍒舵寜閽� + show: false, }, - generalExport: {// 閫氱敤瀵煎嚭鎸夐挳 - show: false + generalExport: { + // 閫氱敤瀵煎嚭鎸夐挳 + show: false, }, // 鑷畾涔夊伐鍏锋潯鎸夐挳 - custom: [ - ] + custom: [], }, // 鍒椾俊鎭� columns: [ - {title: '鍗曞彿', field: 'name', align: 'left',}, - {title: '鐗╁搧鍚嶇О', field: 'code', align: 'center'}, - {title: '瑙勬牸鍨嬪彿', field: 'lv', align: 'center', }, - {title: '鎶ュ簾鏁伴噺', field: 'lv', align: 'center', }, - {title: '鎵�灞炴満鏋�', field: 'summary', align: 'left',}, - {title: '鍒涘缓浜�', field: 'summary', align: 'left',}, - {title: '鎿嶄綔鏃堕棿', field: 'summary', align: 'left',}, + { title: '鍗曞彿', field: 'businessFormCode', align: 'left' }, + { title: '鐗╁搧鍚嶇О', field: 'goodsTemplateName', align: 'center' }, + { title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'center' }, + { title: '鎶ュ簾鏁伴噺', field: 'lv', align: 'center' }, + { title: '鎵�灞炴満鏋�', field: 'agencyName', align: 'left' }, + { title: '鍒涘缓浜�', field: 'operatorName', align: 'left' }, + { + title: '鎿嶄綔鏃堕棿', + field: 'dealTime', + align: 'left', + formatter: (row) => { + return { value: DateFormatter.LongToDateTime(row.dealTime) }; + }, + }, ], // 鎿嶄綔淇℃伅 operation: { @@ -177,19 +199,18 @@ small: false, pageNum: 1, pageSize: 10, - total: 0 - } - } + total: 0, + }, + }, }, detailSetting: { title: '璇︽儏', id: '', show: false, }, - } + }; }, - created() { - }, + created() {}, methods: { showDetail(row) { this.detailSetting.id = row.id; @@ -198,19 +219,17 @@ // 鏌ヨtable鍒楄〃 search(pageNum) { if (pageNum != undefined) { - this.$refs.myTable.search(pageNum) + this.$refs.myTable.search(pageNum); } else { - this.$refs.myTable.search() + this.$refs.myTable.search(); } }, fifterForm(params) { - this.filterFrom = Object.assign(this.filterFrom, params) - this.search(1) - } - } -} + this.filterFrom = Object.assign(this.filterFrom, params); + this.search(1); + }, + }, +}; </script> -<style scoped> - -</style> +<style scoped></style> diff --git a/admin-web/src/views/stock/transfer/transferApplication/edit.vue b/admin-web/src/views/stock/transfer/transferApplication/edit.vue index e09140b..2921487 100644 --- a/admin-web/src/views/stock/transfer/transferApplication/edit.vue +++ b/admin-web/src/views/stock/transfer/transferApplication/edit.vue @@ -56,14 +56,10 @@ <el-form-item label="鐗╁搧鍚嶇О" :prop="`transferGoods[${goodsIndex}].baseGoodsTemplateId`" - :rules="{ - required: true, - message: '璇烽�夋嫨', - trigger: 'change', - }" + :rules="rules.baseGoodsTemplateId" > <el-select - :value="goodsItem.baseGoodsTemplateId" + v-model="goodsItem.baseGoodsTemplateId" placeholder="璇峰厛鎷╃墿鍝佸垎绫�" filterable :disabled="!goodsItem.baseCategoryId" @@ -191,6 +187,18 @@ }, }, 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, agencyOptions: [], // 璋冩嫧鏈烘瀯 @@ -223,7 +231,7 @@ createTime: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], baseCategoryIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], - baseGoodsTemplateId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], + baseGoodsTemplateId: [{ validator: checkGoodsTemplateId, trigger: ['blur', 'change'] }], modelsIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], counts: [ { required: true, message: '璇疯緭鍏�', trigger: 'change' }, @@ -265,8 +273,8 @@ this.agencyOptions = [res]; this.formData.outAgencyId = res.id; this.formData.transferGoods.push(JSON.parse(JSON.stringify(this.goodsItem))); - }else{ - this.$message.warning('鏃犱笂绾ф満鏋�') + } else { + this.$message.warning('鏃犱笂绾ф満鏋�'); } }); }, @@ -344,13 +352,6 @@ // 鐗╁搧鍚嶇О鍒楄〃閫夋嫨 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 = []; diff --git a/admin-web/src/views/stock/transfer/transferApplication/index.vue b/admin-web/src/views/stock/transfer/transferApplication/index.vue index 6720ce6..b514269 100644 --- a/admin-web/src/views/stock/transfer/transferApplication/index.vue +++ b/admin-web/src/views/stock/transfer/transferApplication/index.vue @@ -129,6 +129,7 @@ import listPage from '../../../mixins/listPage'; import transfer from '../../../mixins/transfer'; import { commonsApi } from '@/api/commonsApi'; +import SettingIplatform from '@/utils/settingIplatform'; export default { name: 'index', @@ -149,11 +150,17 @@ defaultValue: '', }, { - type: 'text', - dataIndex: 'goodsTemplateName', + type: 'select', + dataIndex: 'goodsTemplateId', label: '鐗╁搧鍚嶇О', - placeholder: '鍙ā绯婃悳绱�', + placeholder: '璇疯緭鍏�', defaultValue: '', + options: [], + optionsConfig: { + label: 'goodsName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/goods/template/query/goodsTemplate', + }, }, { type: 'select', diff --git a/admin-web/src/views/stock/transfer/transferdetails/index.vue b/admin-web/src/views/stock/transfer/transferdetails/index.vue index ddb044c..0817f63 100644 --- a/admin-web/src/views/stock/transfer/transferdetails/index.vue +++ b/admin-web/src/views/stock/transfer/transferdetails/index.vue @@ -52,19 +52,31 @@ defaultValue: '', }, { - type: 'text', - dataIndex: 'goodsName', + type: 'select', + dataIndex: 'goodsTemplateId', label: '鐗╁搧鍚嶇О', placeholder: '璇疯緭鍏�', defaultValue: '', + options: [], + cascader: [{ key: 'baseGoodsModelsId', queryKey: 'goodsTemplatesId' }], + optionsConfig: { + label: 'goodsName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/goods/template/query/goodsTemplate', + }, }, { type: 'select', dataIndex: 'baseGoodsModelsId', label: '瑙勬牸鍨嬪彿', - placeholder: '璇烽�夋嫨', + placeholder: '璇疯緭鍏�', defaultValue: '', options: [], + optionsConfig: { + label: 'modelName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/goods/models/query/goodsModel', + }, }, { type: 'cascader', @@ -218,22 +230,8 @@ }; }, created() { - this.initSearch(); }, methods: { - initSearch() { - this.items.map(async (item) => { - if (item.label == '瑙勬牸鍨嬪彿') { - let res = await goodsModel(); - item.options = res.map((v) => { - v.label = v.modelName; - v.value = v.id; - return v; - }); - } - return item; - }); - }, showDetail(row) { this.detailSetting.id = row.id; this.detailSetting.info = JSON.stringify(row); @@ -250,12 +248,6 @@ }, fifterForm(params) { this.filterFrom = Object.assign(this.filterFrom, params); - if (this.filterFrom.outAgencyId && this.filterFrom.outAgencyId.length) { - this.filterFrom.outAgencyId = this.filterFrom.outAgencyId[this.filterFrom.outAgencyId.length - 1]; - } - if (this.filterFrom.inAgencyId && this.filterFrom.inAgencyId.length) { - this.filterFrom.inAgencyId = this.filterFrom.inAgencyId[this.filterFrom.inAgencyId.length - 1]; - } if (this.filterFrom.createTimeStart) { this.filterFrom.createTimeStart = this.filterFrom.createTimeStart.replace(/\-/g, ''); } diff --git a/admin-web/src/views/stock/transfer/transferissue/index.vue b/admin-web/src/views/stock/transfer/transferissue/index.vue index f938a91..c151048 100644 --- a/admin-web/src/views/stock/transfer/transferissue/index.vue +++ b/admin-web/src/views/stock/transfer/transferissue/index.vue @@ -109,6 +109,7 @@ import listPage from '../../../mixins/listPage'; import transfer from '../../../mixins/transfer'; import { commonsApi } from '@/api/commonsApi'; +import SettingIplatform from '@/utils/settingIplatform'; export default { name: 'index', @@ -129,11 +130,18 @@ defaultValue: '', }, { - type: 'text', - dataIndex: 'goodsTemplateName', + type: 'select', + dataIndex: 'goodsTemplateId', label: '鐗╁搧鍚嶇О', - placeholder: '鍙ā绯婃悳绱�', + placeholder: '璇疯緭鍏�', defaultValue: '', + options: [], + cascader: [{ key: 'baseGoodsModelsId', queryKey: 'goodsTemplatesId' }], + optionsConfig: { + label: 'goodsName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/goods/template/query/goodsTemplate', + }, }, { type: 'cascader', -- Gitblit v1.9.1