From 13b0bad30ef1df53492cbab1c1b99dfc02dee63f Mon Sep 17 00:00:00 2001 From: haoyahui <2032914783@qq.com> Date: 星期二, 21 十一月 2023 17:51:16 +0800 Subject: [PATCH] 台账管理,盘点任务开发 --- admin-web/src/views/stock/ledger/alertQuery/index.vue | 214 ++++----- admin-web/src/views/stock/inventorycount/inventorytask/index.vue | 73 ++ admin-web/src/views/stock/ledger/inventoryQuery/index.vue | 83 +-- admin-web/src/api/stock/inventory.js | 6 admin-web/src/utils/settingIplatform.js | 4 admin-web/src/views/stock/inventorycount/exceptionDetails/index.vue | 18 admin-web/src/views/stock/scrap/itemScrapping/edit.vue | 4 admin-web/src/views/stock/ledger/ledgerQuery/index.vue | 152 +++--- /dev/null | 111 ----- admin-web/src/views/stock/ledger/inventoryAlert/index.vue | 142 ++--- admin-web/src/api/baseSetting/finsystenant.js | 9 admin-web/src/utils/stockType.js | 9 admin-web/src/api/stock/ledger.js | 57 ++ admin-web/src/views/stock/ledger/inventoryAlert/edit.vue | 283 ++++++++---- admin-web/src/views/stock/accessStock/outboundDetails/index.vue | 1 admin-web/src/views/stock/inventorycount/inventorytask/inventory.vue | 137 ++++-- admin-web/public/static/config.js | 4 17 files changed, 704 insertions(+), 603 deletions(-) diff --git a/admin-web/public/static/config.js b/admin-web/public/static/config.js index 60dfb72..78c156c 100644 --- a/admin-web/public/static/config.js +++ b/admin-web/public/static/config.js @@ -14,8 +14,8 @@ // 鎺ュ彛璇锋眰鍦板潃 // apiBaseURL: 'http://116.198.39.83:8082/progress', // 姝e紡 // apiBaseURL: 'http://172.16.60.90:8082/progress',//寮�鍙� - // apiBaseURL: 'http://172.16.20.2:8083/lowConsum',//寮�鍙� - apiBaseURL: 'https://yqzx.jinmingyuan.com/lowConsum',//寮�鍙� + apiBaseURL: 'http://172.16.20.2:8083/lowConsum',//寮�鍙� + // apiBaseURL: 'https://yqzx.jinmingyuan.com/lowConsum',//寮�鍙� // apiBaseURL: 'https://jmy.jinmingyuan.com/progress',// 娴嬭瘯, // socket杩炴帴 wsSocketUrl: VUE_APP_WS_URL, diff --git a/admin-web/src/api/baseSetting/finsystenant.js b/admin-web/src/api/baseSetting/finsystenant.js index d4087b1..5da26d1 100644 --- a/admin-web/src/api/baseSetting/finsystenant.js +++ b/admin-web/src/api/baseSetting/finsystenant.js @@ -194,4 +194,13 @@ method: 'get', params, }); +} + +// 鏍规嵁鐗╁搧鍨嬪彿鏌ヨ鐗╁搧淇℃伅 +export function queryGoodsModelInfo(params) { + return request({ + url: '/pc/base/goods/models/queryGoodsModelInfo', + method: 'get', + params, + }); } \ No newline at end of file diff --git a/admin-web/src/api/stock/inventory.js b/admin-web/src/api/stock/inventory.js index d66e130..c9c371f 100644 --- a/admin-web/src/api/stock/inventory.js +++ b/admin-web/src/api/stock/inventory.js @@ -44,7 +44,7 @@ // 鐩樼偣鏆傚瓨 export function inventoryTemporaryStorage(data) { return request({ - url: '/pc/l/wh/form/inventory/temporaryStorage', + url: '/pc/l/wh/form/inventory/temporary/storage', method: 'post', data, }); @@ -69,9 +69,9 @@ } // 鐩樼偣 -export function inventorySelectPdList(params) { +export function inventoryQuery(params) { return request({ - url: '/pc/l/wh/form/inventory/select/pdList', + url: '/pc/l/wh/form/inventory/query', method: 'get', params, }); diff --git a/admin-web/src/api/stock/ledger.js b/admin-web/src/api/stock/ledger.js index 86e4828..577fdb2 100644 --- a/admin-web/src/api/stock/ledger.js +++ b/admin-web/src/api/stock/ledger.js @@ -1,6 +1,6 @@ import request from '@/utils/request'; -// 鍗曟嵁鏂板 +// 搴撳瓨鏌ヨ瀵煎嚭 export function doExport(params) { return request({ url: '/pc/fin/warehouse/ledger/getListExport', @@ -9,3 +9,58 @@ params, }); } + +// 棰勮璁剧疆 +// 鍒楄〃 +export function warningConfigGetList(params) { + return request({ + url: '/pc/warehouse/warningConfig/getList', + method: 'get', + params, + }); +} + +// 鏂板 +export function warningConfigAdd(data) { + return request({ + url: '/pc/warehouse/warningConfig/add', + method: 'post', + data, + }); +} + +// 缂栬緫 +export function warningConfigUpd(data) { + return request({ + url: '/pc/warehouse/warningConfig/upd', + method: 'post', + data, + }); +} + +// 缂栬緫鍥炴樉 +export function warningConfigGetById(params) { + return request({ + url: '/pc/warehouse/warningConfig/getById', + method: 'get', + params, + }); +} + +// 鍒犻櫎 +export function warningConfigGetDel(data) { + return request({ + url: '/pc/warehouse/warningConfig/del', + method: 'delete', + data, + }); +} + +// 鏌ヨ宸叉湁閰嶇疆 +export function warningConfigGetConfigList(params) { + return request({ + url: '/pc/warehouse/warningConfig/getConfigList', + method: 'get', + params, + }); +} diff --git a/admin-web/src/utils/settingIplatform.js b/admin-web/src/utils/settingIplatform.js index 366a244..3e3b152 100644 --- a/admin-web/src/utils/settingIplatform.js +++ b/admin-web/src/utils/settingIplatform.js @@ -14,8 +14,8 @@ // apiBaseURL: 'http://116.198.39.83:8082/progress', // 姝e紡 // apiBaseURL: 'http://172.16.60.90:8082/progress',//寮�鍙� // apiBaseURL: 'http://172.16.60.175:8083/lowConsum',//寮�鍙� - // apiBaseURL: 'http://172.16.20.2:8083/lowConsum',//寮�鍙� - apiBaseURL: 'https://yqzx.jinmingyuan.com/lowConsum',//寮�鍙� + apiBaseURL: 'http://172.16.20.2:8083/lowConsum',//寮�鍙� + // apiBaseURL: 'https://yqzx.jinmingyuan.com/lowConsum',//寮�鍙� // apiBaseURL: 'https://jmy.jinmingyuan.com/progress',// 娴嬭瘯, // socket杩炴帴 wsSocketUrl: VUE_APP_WS_URL, diff --git a/admin-web/src/utils/stockType.js b/admin-web/src/utils/stockType.js new file mode 100644 index 0000000..9af85c4 --- /dev/null +++ b/admin-web/src/utils/stockType.js @@ -0,0 +1,9 @@ +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>`); + } + export default stockType; + \ No newline at end of file diff --git a/admin-web/src/views/stock/accessStock/outboundDetails/edit.vue b/admin-web/src/views/stock/accessStock/outboundDetails/edit.vue deleted file mode 100644 index 37b0db9..0000000 --- a/admin-web/src/views/stock/accessStock/outboundDetails/edit.vue +++ /dev/null @@ -1,111 +0,0 @@ -<template> - <win-sm :title="setting.title" @close="close" :width="'800px'"> - <el-form ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="100px"> - <el-form-item label="缂栧彿" prop="code"> - <el-input disabled v-model="formData.code" clearable maxlength="20" show-word-limit style="width: 100%"/> - </el-form-item> - <el-form-item label="浠撳簱鍚嶇О" prop="name"> - <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/> - </el-form-item> - <el-form-item label="鍦板潃" > - <el-input v-model="formData.adss" clearable maxlength="20" show-word-limit style="width: 100%"/> - </el-form-item> - <el-form-item label="鐘舵��" prop="status"> - <el-switch - v-model="formData.status" - active-color="#0d997c" - inactive-color="#C0CCDA"> - </el-switch> - </el-form-item> - </el-form> - <div slot="footer" align="center" class="dialog-footer"> - <my-button name="鍙栨秷" site="form" @click="close"/> - <my-button name="淇濆瓨" site="form" @click="save"/> - </div> - </win-sm> -</template> - -<script> -import winSm from '@/components/win/win-sm' -import myButton from '@/components/myButton/myButton' -import * as finsystenant from '@/api/baseSetting/finsystenant' - -export default { - components: {winSm, myButton}, - props: { - setting: { - type: Object, - default: () => { - } - } - }, - data() { - return { - checkAll: false, - checkedList: [], - formData: { - code: '', - name: '', - status: true, - summary: '', - }, - rules: { - code: [ - {required: true, message: '璇疯緭鍏ユ満鏋勭紪鍙�', trigger: 'blur'} - ], - name: [ - {required: true, message: '璇疯緭鍏ユ満鏋勫悕绉�', trigger: 'blur'} - ], - status: [ - {required: true, message: '璇烽�夋嫨鐘舵��', trigger: 'blur'} - ] - } - } - }, - created() { - if(this.setting.info){ - this.formData = Object.assign({},JSON.parse(this.setting.info)) - } - }, - methods: { - getEditInfo(id){ - - }, - close() { - this.$emit('close') - }, - save() { - this.$refs.ruleForm.validate((valid) => { - if (valid) { - const params = Object.assign({}, this.formData) - if(this.setting.id){ - // 缂栬緫鎺ュ彛 - finsystenant.edit(params).then(res => { - if (res) { - this.$message.success('淇濆瓨鎴愬姛锛�') - this.close() - this.$emit('search') - } else { - this.$message.error('淇濆瓨澶辫触') - } - }) - }else{ - params.orgId = this.setting.orgId - finsystenant.add(params).then(res => { - if (res) { - this.$message.success('淇濆瓨鎴愬姛锛�') - this.close() - this.$emit('search') - } else { - this.$message.error('淇濆瓨澶辫触') - } - }) - } - } else { - this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��') - } - }) - } - } -} -</script> diff --git a/admin-web/src/views/stock/accessStock/outboundDetails/index.vue b/admin-web/src/views/stock/accessStock/outboundDetails/index.vue index 58e8656..2c0cf43 100644 --- a/admin-web/src/views/stock/accessStock/outboundDetails/index.vue +++ b/admin-web/src/views/stock/accessStock/outboundDetails/index.vue @@ -30,6 +30,7 @@ import myImport from '@/views/components/myImport'; import { goodsTemplate, goodsModel } from '@/api/baseSetting/finsystenant'; import { outputDtailList } from '@/api/stock/accessStock'; +import * as DateFormatter from '@/utils/DateFormatter'; export default { name: 'index', diff --git a/admin-web/src/views/stock/inventorycount/exceptionDetails/index.vue b/admin-web/src/views/stock/inventorycount/exceptionDetails/index.vue index a13fad2..bcaf8ee 100644 --- a/admin-web/src/views/stock/inventorycount/exceptionDetails/index.vue +++ b/admin-web/src/views/stock/inventorycount/exceptionDetails/index.vue @@ -55,7 +55,7 @@ }, { type: 'text', - dataIndex: 'name', + dataIndex: 'goodsTemplateName', label: '鐗╁搧鍚嶇О', placeholder: '璇疯緭鍏�', defaultValue: '', @@ -104,27 +104,27 @@ }, { type: 'text', - dataIndex: 'name', + dataIndex: 'baseGoodsModelsId', label: '鍗曞彿', placeholder: '璇疯緭鍏�', defaultValue: '', }, { type: 'text', - dataIndex: 'name', + dataIndex: 'operatorName', label: '鎿嶄綔浜�', placeholder: '璇疯緭鍏�', defaultValue: '', }, { type: 'date-picker', - dataIndex: 'incomeTimeStart', + dataIndex: 'startTime', label: '鏃堕棿', defaultValue: '', }, { type: 'date-picker', - dataIndex: 'incomeTimeEnd', + dataIndex: 'endTime', label: '鑷�', defaultValue: '', }, @@ -158,8 +158,8 @@ }, // 鍒椾俊鎭� columns: [ - { title: '浠撳簱', field: 'name', align: 'left' }, - { title: '鐗╁搧鍚嶇О', field: 'WAREHOUSE_NAME', align: 'center' }, + { title: '浠撳簱', field: 'warehouseFormCode', align: 'left' }, + { title: '鐗╁搧鍚嶇О', field: 'goodsTemplateName', align: 'center' }, { title: '瑙勬牸鍨嬪彿', field: 'lv', align: 'center' }, { title: '绫诲瀷', field: 'lv', align: 'center' }, { title: '搴撳瓨鏁伴噺', field: 'summary', align: 'left' }, @@ -167,8 +167,8 @@ { 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: 'agencyName', align: 'left' }, + { title: '鎿嶄綔浜�', field: 'operatorName', align: 'left' }, { title: '鎿嶄綔鏃堕棿', field: 'summary', align: 'left' }, ], // 鎿嶄綔淇℃伅 diff --git a/admin-web/src/views/stock/inventorycount/inventorytask/index.vue b/admin-web/src/views/stock/inventorycount/inventorytask/index.vue index dbe6bdf..c137a58 100644 --- a/admin-web/src/views/stock/inventorycount/inventorytask/index.vue +++ b/admin-web/src/views/stock/inventorycount/inventorytask/index.vue @@ -42,9 +42,9 @@ import myImport from '@/views/components/myImport'; import { getBaseUrl } from '@/utils/base'; import { selectTenantWarehouse } from '@/api/baseSetting/finsystenant'; -import { inventoryListApi,inventoryDel } from '@/api/stock/inventory'; +import { inventoryListApi, inventoryDel } from '@/api/stock/inventory'; import * as DateFormatter from '@/utils/DateFormatter'; -import {mapGetters} from 'vuex' +import { mapGetters } from 'vuex'; export default { name: 'index', @@ -193,13 +193,14 @@ // 鎿嶄綔淇℃伅 operation: { show: true, // 鏄剧ず鎿嶄綔鍒� + align: 'left', width: '220', // 鍒楀 attr: [ { title: '缂栬緫', - hidden:(row)=>{ - if(row.states!=0){ - return true + hidden: (row) => { + if (row.states != 0) { + return true; } }, events: (row) => { @@ -208,9 +209,9 @@ }, { title: '鍒犻櫎', - hidden:(row)=>{ - if(row.states!=0){ - return true + hidden: (row) => { + if (row.states != 0) { + return true; } }, events: (row) => { @@ -220,13 +221,49 @@ { title: '鐩樼偣', type: 'success', - hidden:(row)=>{ - if(row.states!=0){ - return true + hidden: (row) => { + if (row.states != 0) { + return true; } }, events: (row) => { this.showInventory(row); + }, + }, + { + title: '缁х画鐩樼偣', + type: 'success', + hidden: (row) => { + if (row.states != 1) { + return true; + } + }, + events: (row) => { + this.showInventory(row); + }, + }, + { + title: '鐩樼偣璇︽儏', + type: 'info', + hidden: (row) => { + if (row.states != 2) { + return true; + } + }, + events: (row) => { + this.showInventoryDetail(row); + }, + }, + { + title: '鐢熶骇鐩樼偣琛�', + type: 'primary', + hidden: (row) => { + if (row.states != 2) { + return true; + } + }, + events: (row) => { + this.showInventoryDetail(row); }, }, ], @@ -244,11 +281,11 @@ }, }; }, - computed:{ - ...mapGetters(['userInfo']) + computed: { + ...mapGetters(['userInfo']), }, created() { - selectTenantWarehouse({agencyId: this.userInfo.tenantId}).then((res) => { + selectTenantWarehouse({ agencyId: this.userInfo.tenantId }).then((res) => { this.items.forEach((v) => { if (v.label == '鐩樼偣浠撳簱') { v.options = res.map((item) => { @@ -304,6 +341,12 @@ 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; + }, // 鏌ヨtable鍒楄〃 search(pageNum) { if (pageNum != undefined) { @@ -314,7 +357,7 @@ }, fifterForm(params) { this.filterFrom = Object.assign(this.filterFrom, params); - + if (this.filterFrom.startTime) { this.filterFrom.startTime = this.filterFrom.startTime.replace(/\-/g, ''); } diff --git a/admin-web/src/views/stock/inventorycount/inventorytask/inventory.vue b/admin-web/src/views/stock/inventorycount/inventorytask/inventory.vue index 4d91a20..45ecc56 100644 --- a/admin-web/src/views/stock/inventorycount/inventorytask/inventory.vue +++ b/admin-web/src/views/stock/inventorycount/inventorytask/inventory.vue @@ -1,30 +1,43 @@ <template> <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="3" :offset="3"> - <my-button name="瀵煎嚭鐩樼偣鍗�" site="form" size="medium" type="primary" /> - </el-col> - </el-row> - <el-table v-loading="loading" :data="formData.tableData" height="100%" :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="classification" label="绫诲埆"> </el-table-column> - <el-table-column prop="unit" label="鍗曚綅" align="center"> </el-table-column> - <el-table-column prop="kc" label="搴旀湁搴撳瓨" align="center"> </el-table-column> - <el-table-column prop="price" label="鍗曚环" align="center"> </el-table-column> - <el-table-column prop="inventoryResult" label="閲戦" align="center"> </el-table-column> - <el-table-column prop="inventoryCounts" label="瀹炵洏鏁伴噺" align="center"> - <template slot-scope="scope"> - <el-input v-model="scope.row.inventoryCounts"></el-input> - </template> - </el-table-column> - </el-table> + <el-form class="form" ref="ruleForm" :model="formData" :rules="rules"> + <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.businessFormName }}</el-col> + <el-col :span="6">鐩樼偣浠撳簱锛歿{ formData.warehouseName }}</el-col> + <el-col :span="3" :offset="3"> + <my-button name="瀵煎嚭鐩樼偣鍗�" site="form" size="medium" type="primary" /> + </el-col> + </el-row> + <el-table + v-loading="loading" + :data="formData.formInventoryGoodsList" + :rules="rules" + height="400" + :stripe="true" + class="the-table" + > + <el-table-column prop="goodsTemplateName" label="鐗╁搧鍚嶇О"> </el-table-column> + <el-table-column prop="baseGoodsModelsName" label="鍨嬪彿" align="center"> </el-table-column> + <el-table-column prop="type" label="绫诲埆"> </el-table-column> + <el-table-column prop="unit" 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"> + <template slot-scope="scope"> + <el-form-item + label-width="0" + :prop="`formInventoryGoodsList[${scope.$index}].realNum`" + :rules="rules.realNum" + > + <el-input v-model.number="scope.row.realNum" maxlength="8"></el-input> + </el-form-item> + </template> + </el-table-column> + </el-table> + </el-form> <div slot="footer" align="center" class="dialog-footer"> - <my-button name="鏆傚瓨" site="form" type="primary" @click="close" /> + <my-button name="鏆傚瓨" site="form" type="primary" @click="staging" /> <my-button name="瀹屾垚鐩樼偣" site="form" type="success" @click="save" /> </div> </win-md> @@ -33,7 +46,7 @@ <script> import winMd from '@/components/win/win-md'; import myButton from '@/components/myButton/myButton'; -import { inventorySelectPdList,inventoryTemporaryStorage,inventoryFinish } from '@/api/stock/inventory'; +import { inventoryQuery, inventoryTemporaryStorage, inventoryFinish } from '@/api/stock/inventory'; export default { components: { winMd, myButton }, props: { @@ -45,38 +58,72 @@ data() { return { loading: false, + btnLoading: false, formData: { - businessFormCode: '2023080812', - businessTaskCode: '2023骞�9鏈堢洏鐐瑰崟', - warehouseId: '寮�灏佸競浠撳簱', - tableData: [], + businessFormCode: '', + businessFormName: '', + warehouseName: '', + formInventoryGoodsList: [], + }, + rules: { + realNum: [ + { required: true, message: '璇疯緭鍏�', trigger: 'blur' }, + { type: 'number', message: '璇疯緭鍏ユ暟瀛楀��' }, + ], }, }; }, 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, - // }); - // } - inventorySelectPdList({id:this.setting.id}).then(res=>{ - this.formData = res - }) + const info = JSON.parse(this.setting.info); + console.log('info', info); + if (info.states == 1) { + // 缁х画鐩樼偣 + + } 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'); + }); + } + }); + }, save() { - - } + this.$refs['ruleForm'].validate((valid) => { + if (valid) { + const params = { + ...this.formData, + inventoryGoodsList: this.formData.formInventoryGoodsList, + }; + inventoryFinish(params).then(() => { + this.$message.success('鏆傚瓨鎴愬姛锛�'); + this.close(); + this.$emit('search'); + }); + } + }); + }, }, }; </script> diff --git a/admin-web/src/views/stock/ledger/alertQuery/edit.vue b/admin-web/src/views/stock/ledger/alertQuery/edit.vue deleted file mode 100644 index 37b0db9..0000000 --- a/admin-web/src/views/stock/ledger/alertQuery/edit.vue +++ /dev/null @@ -1,111 +0,0 @@ -<template> - <win-sm :title="setting.title" @close="close" :width="'800px'"> - <el-form ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="100px"> - <el-form-item label="缂栧彿" prop="code"> - <el-input disabled v-model="formData.code" clearable maxlength="20" show-word-limit style="width: 100%"/> - </el-form-item> - <el-form-item label="浠撳簱鍚嶇О" prop="name"> - <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/> - </el-form-item> - <el-form-item label="鍦板潃" > - <el-input v-model="formData.adss" clearable maxlength="20" show-word-limit style="width: 100%"/> - </el-form-item> - <el-form-item label="鐘舵��" prop="status"> - <el-switch - v-model="formData.status" - active-color="#0d997c" - inactive-color="#C0CCDA"> - </el-switch> - </el-form-item> - </el-form> - <div slot="footer" align="center" class="dialog-footer"> - <my-button name="鍙栨秷" site="form" @click="close"/> - <my-button name="淇濆瓨" site="form" @click="save"/> - </div> - </win-sm> -</template> - -<script> -import winSm from '@/components/win/win-sm' -import myButton from '@/components/myButton/myButton' -import * as finsystenant from '@/api/baseSetting/finsystenant' - -export default { - components: {winSm, myButton}, - props: { - setting: { - type: Object, - default: () => { - } - } - }, - data() { - return { - checkAll: false, - checkedList: [], - formData: { - code: '', - name: '', - status: true, - summary: '', - }, - rules: { - code: [ - {required: true, message: '璇疯緭鍏ユ満鏋勭紪鍙�', trigger: 'blur'} - ], - name: [ - {required: true, message: '璇疯緭鍏ユ満鏋勫悕绉�', trigger: 'blur'} - ], - status: [ - {required: true, message: '璇烽�夋嫨鐘舵��', trigger: 'blur'} - ] - } - } - }, - created() { - if(this.setting.info){ - this.formData = Object.assign({},JSON.parse(this.setting.info)) - } - }, - methods: { - getEditInfo(id){ - - }, - close() { - this.$emit('close') - }, - save() { - this.$refs.ruleForm.validate((valid) => { - if (valid) { - const params = Object.assign({}, this.formData) - if(this.setting.id){ - // 缂栬緫鎺ュ彛 - finsystenant.edit(params).then(res => { - if (res) { - this.$message.success('淇濆瓨鎴愬姛锛�') - this.close() - this.$emit('search') - } else { - this.$message.error('淇濆瓨澶辫触') - } - }) - }else{ - params.orgId = this.setting.orgId - finsystenant.add(params).then(res => { - if (res) { - this.$message.success('淇濆瓨鎴愬姛锛�') - this.close() - this.$emit('search') - } else { - this.$message.error('淇濆瓨澶辫触') - } - }) - } - } else { - this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��') - } - }) - } - } -} -</script> diff --git a/admin-web/src/views/stock/ledger/alertQuery/index.vue b/admin-web/src/views/stock/ledger/alertQuery/index.vue index 1bd1040..0c53e12 100644 --- a/admin-web/src/views/stock/ledger/alertQuery/index.vue +++ b/admin-web/src/views/stock/ledger/alertQuery/index.vue @@ -10,67 +10,85 @@ <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> </el-container> </el-container> - <my-import - :import-setting="importSetting" - :dialog-show="importSetting.dialogShow" - :dialog-title="importSetting.dialogTitle" - /> </div> </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 {getBaseUrl} from '@/utils/base'; -import { selectTenantWarehouse, getCategorySelectTree } from '@/api/baseSetting/finsystenant'; +import * as finsystenant from '@/api/baseSetting/finsystenant'; +import { goodsModel, getCategorySelectTree } from '@/api/baseSetting/finsystenant'; import { getDicts } from '@/api/system/dict/data'; +import * as DateFormatter from '@/utils/DateFormatter'; export default { - name: "index", - components: {MyButton, MyTableV2, myImport}, + name: 'index', + components: { MyButton, MyTableV2 }, data() { return { // 鎼滅储妗� items: [ { - type: 'text', - dataIndex: 'name', - label: '鐗╁搧鍚嶇О', - placeholder: '璇疯緭鍏�', - defaultValue: '' - }, - { - type: 'select', - dataIndex: 'status', - label: '瑙勬牸鍨嬪彿', - placeholder: '璇烽�夋嫨', - defaultValue: '', - options: [] - }, - { - type: 'select', - dataIndex: 'status', + type: 'cascader', + dataIndex: 'categoryId', label: '鍒嗙被', placeholder: '璇烽�夋嫨', defaultValue: '', - options: [] + options: [], + cascader: [{key:'baseGoodsModelsId',queryKey: 'goodsTemplatesId'}], + optionsConfig: { + label: 'label', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/category/select/tree', + props:{checkStrictly:false} + }, }, { type: 'select', - dataIndex: 'status', + 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', + dataIndex: 'costType', label: '绫诲埆', placeholder: '璇烽�夋嫨', defaultValue: '', - options: [] + options: [], + optionsConfig: { + label: 'dict_label', + value: 'dict_value', + url: SettingIplatform.apiBaseURL + '/permit/dict/data/type/GOODS_PRICE', + }, }, ], // 鏍戞暟鎹� @@ -80,25 +98,7 @@ tenantId: null, userName: null, userPhone: null, - 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 + status: 1, }, editSetting: { title: '', @@ -110,29 +110,48 @@ table: { showIndex: true, // 鏄惁鏄剧ず搴忓彿 expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁 - url: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/select/list', // 璇锋眰鍦板潃 + url: SettingIplatform.apiBaseURL + '/pc/warehouse/warning/getList', // 璇锋眰鍦板潃 // 宸ュ叿鏉� 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: 'summary', align: 'left',}, + { title: '鐗╁搧鍚嶇О', field: 'baseGoodsTemplateName', align: 'left' }, + { title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'center' }, + { title: '鍗曚綅', field: 'unit', align: 'center' }, + { title: '褰撳墠搴撳瓨', field: 'warehouseCount', align: 'center' }, + { title: '淇濆簳搴撳瓨', field: 'lowerLimit', align: 'left' }, + { title: '灏侀《搴撳瓨', field: 'upperLimit', align: 'left' }, + { + title: '鐘舵��', + field: 'warningType', + align: 'left', + formatter: (row) => { + return { + type: row.warningType == 1 ? 'warning' : 'danger', + value: row.warningType == 1 ? '搴撳瓨宸茶秴' : '棰勮缂鸿揣', + }; //棰勮绫诲瀷锛�1=搴撳瓨宸茶秴锛�2=棰勮缂鸿揣锛� + }, + }, + { + title: '棰勮鏃堕棿', + field: 'warningTime', + align: 'left', + width: 160, + formatter: (row) => { + return { value: DateFormatter.LongToDateTime(row.warningTime) }; + }, + }, ], paging: { show: true, // 鏄剧ず鍒嗛〉 @@ -141,70 +160,41 @@ small: false, pageNum: 1, pageSize: 10, - total: 0 - } - } + total: 0, + }, + }, }, - } + }; }, created() { - this.initQuery(); }, methods: { - initQuery() { - getDicts('GOODS_PRICE').then((res) => { - this.items.forEach((v) => { - if (v.label == '绫诲埆') { - v.options = res.map((v) => { - v.label = v.dict_label; - v.value = v.dict_value; - return v; - }); - } - }); - }); - getCategorySelectTree().then((res) => { - this.items.forEach((v) => { - if (v.label == '鍒嗙被') { - v.options = res.map((item) => { - item.label = item.label; - item.vlaue = item.id; - return item; - }); - } - }); - }); - }, del(row) { this.$modal .confirm('鏄惁纭鍒犻櫎鍚嶇О涓�"' + row.name + '"鐨勬満鏋勫悧锛�') .then(function () { - finsystenant.del({id: row.id}).then((res) => { - }); + finsystenant.del({ id: row.id }).then((res) => {}); }) .then((res) => { this.$message.success('鍒犻櫎鎴愬姛锛�'); - this.search() + this.search(); }) - .catch(() => { - }); + .catch(() => {}); }, // 鏌ヨ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/ledger/inventoryAlert/edit.vue b/admin-web/src/views/stock/ledger/inventoryAlert/edit.vue index 93fcd42..18be030 100644 --- a/admin-web/src/views/stock/ledger/inventoryAlert/edit.vue +++ b/admin-web/src/views/stock/ledger/inventoryAlert/edit.vue @@ -3,54 +3,108 @@ <el-form ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="100px"> <el-row :gutter="24"> <el-col :span="12"> - <el-form-item label="鐗╁搧鍒嗙被"> + <el-form-item label="鍏ュ簱浠撳簱" prop="baseWarehouseId"> + <el-select + v-model="formData.baseWarehouseId" + placeholder="璇烽�夋嫨" + style="width: 100%" + :disabled="type == 'edit'" + > + <el-option v-for="item in warehouses" :key="item.id" :label="item.warehouseName" :value="item.id" /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鐗╁搧鍒嗙被" prop="baseCategoryIds"> <el-cascader v-model="formData.baseCategoryIds" :options="categoryOptions" :props="{ value: 'id' }" + @change="categoryChange" style="width: 100%" + :disabled="type == 'edit'" ></el-cascader> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="鐗╁搧鍚嶇О"> - <el-select - :value="formData.baseGoodsTemplateId" - placeholder="璇峰厛鎷╃墿鍝佸垎绫�" - filterable - style="width: 100%" - > - <el-option v-for="item in goodsTemplatelAll" :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="瑙勬牸鍨嬪彿"> + <el-form-item label="鐗╁搧鍚嶇О" prop="baseGoodsTemplateId"> + <el-select + :value="formData.baseGoodsTemplateId" + placeholder="璇峰厛鎷╃墿鍝佸垎绫�" + filterable + :disabled="!formData.baseCategoryId || type == 'edit'" + @change="goodsTemplateChange" + style="width: 100%" + > + <el-option + v-for="item in goodsTemplatelOptions" + :key="item.id" + :label="item.goodsName" + :value="item.id" + /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="瑙勬牸鍨嬪彿" prop="modelsIds"> <el-select v-model="formData.modelsIds" multiple + :disabled="!formData.baseGoodsTemplateId || type == 'edit'" placeholder="璇峰厛鎷╃墿鍝佸悕绉�" - @change="modelChange($event)" - @remove-tag="modelRemoveTag($event)" + @change="modelChange" + @remove-tag="modelRemoveTag" style="width: 100%" > - <el-option v-for="item in goodsModelAll" :key="item.id" :label="item.modelName" :value="item.id" /> + <el-option v-for="item in modelsOptions" :key="item.id" :label="item.modelName" :value="item.id" /> </el-select> </el-form-item> </el-col> </el-row> - <el-table :data="formData.models" :stripe="true"> - <el-table-column prop="baseGoodsModelsId" label="瑙勬牸鍨嬪彿" align="center"> </el-table-column> - <el-table-column prop="bdcount" label="淇濆簳搴撳瓨" align="center"> + <el-row v-if="type == 'edit'"> + <el-col :span="12"> + <el-form-item label="淇濆簳搴撳瓨" prop="lowerLimit"> + <el-input placeholder="璇疯緭鍏�" v-model.number="formData.lowerLimit"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="灏侀《搴撳瓨" prop="upperLimit"> + <el-input placeholder="璇疯緭鍏�" v-model.number="formData.upperLimit"></el-input> + </el-form-item> + </el-col> + </el-row> + <el-table v-if="type != 'edit'" :data="formData.models" :stripe="true"> + <el-table-column prop="baseGoodsModelsId" label="瑙勬牸鍨嬪彿" align="center"> <template slot-scope="scope"> - <el-input v-model="scope.row.bdcount"></el-input> + {{ getGoodsModelsName(scope.row.baseGoodsModelsId) }} </template> </el-table-column> - <el-table-column prop="count" label="灏侀《搴撳瓨" align="center"> + <el-table-column prop="lowerLimit" label="淇濆簳搴撳瓨" align="center"> <template slot-scope="scope"> - <el-input v-model="scope.row.count"></el-input> + <el-form-item + v-if="scope.row.lowerLimit || scope.row.upperLimit" + label-width="0" + :prop="`models[${scope.$index}].lowerLimit`" + :rules="rules.lowerLimit" + > + <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> + </template> + </el-table-column> + <el-table-column prop="upperLimit" label="灏侀《搴撳瓨" align="center"> + <template slot-scope="scope"> + <el-form-item + v-if="scope.row.lowerLimit || scope.row.upperLimit" + label-width="0" + :prop="`models[${scope.$index}].upperLimit`" + :rules="rules.upperLimit" + > + <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> </template> </el-table-column> </el-table> @@ -65,13 +119,22 @@ <script> import winMd from '@/components/win/win-md'; import myButton from '@/components/myButton/myButton'; -import * as finsystenant from '@/api/baseSetting/finsystenant'; import { getCategorySelectTree, goodsModel, warehouseSelectNumber, goodsTemplate, + selectTenantWarehouse, + queryGoodsModelInfo, } from '@/api/baseSetting/finsystenant'; +import { + warningConfigAdd, + warningConfigUpd, + warningConfigGetById, + warningConfigGetConfigList, +} from '@/api/stock/ledger'; +import { mapGetters } from 'vuex'; +import { findParentIds } from '@/utils/index'; export default { components: { winMd, myButton }, @@ -83,92 +146,133 @@ }, data() { return { + type: '', + warehouses: [], // 鍏ュ簱浠撳簱鍒楄〃 agencyOptions: [], // 璋冩嫧鏈烘瀯 categoryOptions: [], // 鐗╁搧鍒嗙被鍒楄〃 - modelList: [], //鍨嬪彿鍒楄〃 + goodsTemplatelOptions: [], //鐗╁搧鍚嶇О + modelsOptions: [], //鍨嬪彿鍒楄〃 formData: { + warehouseType: 0, //浠撳簱绫诲瀷0鏈烘瀯1閮ㄩ棬 + baseWarehouseId: '', //浠撳簱缂栧彿 baseCategoryIds: '', // 鍒嗙被缂栧彿鏁扮粍 baseCategoryId: '', // 鍒嗙被缂栧彿 - baseGoodsTemplateId: '', // 鐗╁搧妯$増缂栧彿 + baseGoodsTemplateId: '', // 鐗╁搧鍚嶇О妯$増缂栧彿 modelsIds: [], //瑙勬牸鍨嬪彿 models: [], }, - modelsItem: { - baseGoodsModelsId: '', // 瑙勬牸鍨嬪彿缂栧彿 - worehouseCount: 0, - counts: 0, // 鎿嶄綔鏁伴噺 - }, rules: { - code: [{ required: true, message: '璇疯緭鍏ユ満鏋勭紪鍙�', trigger: 'blur' }], - name: [{ required: true, message: '璇疯緭鍏ユ満鏋勫悕绉�', trigger: 'blur' }], - status: [{ required: true, message: '璇烽�夋嫨鐘舵��', trigger: 'blur' }], + baseCategoryIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }], + baseGoodsTemplateId: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }], + modelsIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }], + lowerLimit: [ + { required: true, message: '璇疯緭鍏�', trigger: 'blur' }, + { type: 'number', message: '璇疯緭鍏ユ暟瀛楀��', trigger: 'blur' }, + ], + upperLimit: [ + { required: true, message: '璇疯緭鍏�', trigger: 'blur' }, + { type: 'number', message: '璇疯緭鍏ユ暟瀛楀��', trigger: 'blur' }, + ], }, }; }, + computed: { + ...mapGetters(['userInfo']), + }, created() { - if (this.setting.info) { - this.formData = Object.assign({}, JSON.parse(this.setting.info)); - } this.init(); }, methods: { async init() { - this.getCategoryTree(); - this.getgoodsTemplate(); - this.getgoodsModel(); + if (this.setting.id) { + this.type = 'edit'; + const detail = await warningConfigGetById({ id: this.setting.id }); + await this.getCategoryTree(); + this.formData = Object.assign({}, detail); + // 鍒嗙被鍙嶆樉 + let res = await queryGoodsModelInfo({ baseGoodsModelsId: this.formData.baseGoodsModelsId }); + this.formData.baseCategoryId = res[0].categoryId; + this.formData.baseCategoryIds = findParentIds(this.categoryOptions, this.formData.baseCategoryId); + // 鐗╁搧鍚嶇О鍙嶆樉 + this.getgoodsTemplate(this.formData.baseCategoryId); + // 瑙勬牸鍨嬪彿鍙嶆樉 + this.getgoodsModel(this.formData.baseGoodsTemplateId); + this.formData.modelsIds = [this.formData.baseGoodsModelsId]; + this.getWarehouseList(); + } else { + this.getWarehouseList(); + this.getCategoryTree(); + } + }, + // 鑾峰彇鍏ュ簱浠撳簱鍒楄〃 + getWarehouseList() { + selectTenantWarehouse({ agencyId: this.userInfo.tenantId }) + .then((res) => { + this.warehouses = res; + if (this.warehouses.length && !this.formData.baseWarehouseId) { + // 榛樿閫変腑绗竴涓粨搴� + this.formData.baseWarehouseId = this.warehouses[0].id; + } + }) + .catch((err) => { + console.log('err', err); + }); }, - async getCategoryTree() { + getCategoryTree() { // 鑾峰彇鐗╁搧鍒嗙被鍒楄〃 - const treeRes = await getCategorySelectTree(); - this.categoryOptions = this.removeEmptyChildren(treeRes); - console.log('categoryOptions', this.categoryOptions); + return new Promise(async (resolve) => { + const treeRes = await getCategorySelectTree(); + this.categoryOptions = this.removeEmptyChildren(treeRes); + resolve(); + }); }, // 鑾峰彇鐗╁搧鍚嶇О鍒楄〃 getgoodsTemplate(id) { - goodsTemplate({ categoryId: id || '', agencyId: this.formData.outAgencyId }).then((res) => { - this.goodsTemplatelAll = res; + goodsTemplate({ categoryId: id || '', agencyId: this.userInfo.tenantId }).then((res) => { + this.goodsTemplatelOptions = res; }); }, // 瑙勬牸鍨嬪彿 getgoodsModel(id) { goodsModel({ goodsTemplatesId: id || '' }).then((res) => { - this.goodsModelAll = res; + this.modelsOptions = res; }); + }, + + // 鏍规嵁瑙勬牸鍨嬪彿id鑾峰彇鍚嶅瓧 + getGoodsModelsName(id) { + let item = this.modelsOptions.find((v) => v.id == id); + if (item) { + return item.modelName; + } + return; }, // 鐗╁搧鍒嗙被閫夋嫨 categoryChange(e) { - this.formData.goodsOptions = []; + if (!e) return; + this.goodsTemplatelOptions = []; + this.modelsOptions = []; this.formData.baseGoodsTemplateId = ''; - this.formData.goodsTemplateName = ''; - this.formData.modelsOptions = []; this.formData.modelsIds = []; this.formData.models = []; - this.formData.transferGoods.baseCategoryId = e[e.length - 1]; + this.formData.baseCategoryId = e[e.length - 1]; // 鏍规嵁閫変腑鍒嗙被璇锋眰鐗╁搧鍚嶇О鍒楄〃 - this.getgoodsTemplate(e[e.length - 1]); + this.getgoodsTemplate(this.formData.baseCategoryId); }, // 鐗╁搧鍚嶇О鍒楄〃閫夋嫨 - 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 = []; + goodsTemplateChange(e) { + this.formData.modelsIds = []; + this.formData.models = []; - this.formData.transferGoods[index].goodsTemplateName = this.getGoodsTemplateName(e); + this.formData.baseGoodsTemplateId = e; // 鏍规嵁閫変腑鐗╁搧鍚嶇Оid鑾峰彇瑙勬牸鍨嬪彿鍒楄〃 - this.getgoodsModel(e, index); + this.getgoodsModel(e); }, removeEmptyChildren(arr) { @@ -184,20 +288,18 @@ // 瑙勬牸鍨嬪彿閫夋嫨 modelChange(e) { - let arr = [...this.formData.models]; + let arr = this.formData.models; let str = JSON.stringify(arr); - e.forEach((item) => { - if (str.indexOf(item) == -1) { - arr.push({ baseGoodsModelsId: item, bdcount: null,count:null }); + e.forEach((item, index) => { + if (str && !str.includes(item)) { + arr.push({ baseGoodsModelsId: item, lowerLimit: null, upperLimit: null }); } }); - this.formData.models = arr; }, // 瑙勬牸鍨嬪彿绉婚櫎 modelRemoveTag(e) { - let arr = this.formData.models; - let delIndex = arr.findIndex((v) => v.baseGoodsModelsId == e); + let delIndex = this.formData.models.findIndex((v) => v.baseGoodsModelsId == e); this.formData.models.splice(delIndex, 1); }, @@ -208,28 +310,29 @@ save() { this.$refs.ruleForm.validate((valid) => { if (valid) { - const params = Object.assign({}, this.formData); if (this.setting.id) { // 缂栬緫鎺ュ彛 - finsystenant.edit(params).then((res) => { - if (res) { - this.$message.success('淇濆瓨鎴愬姛锛�'); - this.close(); - this.$emit('search'); - } else { - this.$message.error('淇濆瓨澶辫触'); - } + const params = { + id: this.setting.id, + lowerLimit: this.formData.lowerLimit, + upperLimit: this.formData.upperLimit, + }; + warningConfigUpd(params).then((res) => { + this.$message.success('淇濆瓨鎴愬姛锛�'); + this.close(); + this.$emit('search'); }); } else { - params.orgId = this.setting.orgId; - finsystenant.add(params).then((res) => { - if (res) { - this.$message.success('淇濆瓨鎴愬姛锛�'); - this.close(); - this.$emit('search'); - } else { - this.$message.error('淇濆瓨澶辫触'); - } + const params = { + warehouseType: this.formData.warehouseType, + baseWarehouseId: this.formData.baseWarehouseId, + baseGoodsTemplateId: this.formData.baseGoodsTemplateId, + modelConfigStr: JSON.stringify(this.formData.models), + }; + warningConfigAdd(params).then((res) => { + this.$message.success('淇濆瓨鎴愬姛锛�'); + this.close(); + this.$emit('search'); }); } } else { diff --git a/admin-web/src/views/stock/ledger/inventoryAlert/index.vue b/admin-web/src/views/stock/ledger/inventoryAlert/index.vue index c4a97a1..bedff7b 100644 --- a/admin-web/src/views/stock/ledger/inventoryAlert/index.vue +++ b/admin-web/src/views/stock/ledger/inventoryAlert/index.vue @@ -18,11 +18,6 @@ </el-card> </el-container> </el-container> - <my-import - :import-setting="importSetting" - :dialog-show="importSetting.dialogShow" - :dialog-title="importSetting.dialogTitle" - /> </div> </template> @@ -31,15 +26,16 @@ import MyButton from '@/components/myButton/myButton'; import SettingIplatform from '@/utils/settingIplatform'; import edit from './edit'; -import * as finsystenant from '@/api/baseSetting/finsystenant'; import myImport from '@/views/components/myImport'; import { getBaseUrl } from '@/utils/base'; -import { selectTenantWarehouse, getCategorySelectTree } from '@/api/baseSetting/finsystenant'; +import { selectTenantWarehouse, treeList } from '@/api/baseSetting/finsystenant'; +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, myImport }, + components: { MyButton, MyTableV2, edit }, data() { return { // 鎼滅储妗� @@ -49,9 +45,10 @@ dataIndex: 'agencyId', label: '鏈烘瀯', placeholder: '璇烽�夋嫨', - optionsConfig: { url: '/pc/fin/sys/tenant/select/tree_fin_tenant', props: null }, defaultValue: '', options: [], + cascader: [{key:'warehouseId',queryKey: 'agencyId'},{key:'goodsTemplateId',queryKey: 'agencyId'}], + optionsConfig: { url: '/pc/fin/sys/tenant/select/tree_fin_tenant', props: null }, }, { type: 'select', @@ -60,57 +57,58 @@ placeholder: '璇烽�夋嫨', defaultValue: '', options: [], - }, - { - type: 'text', - dataIndex: 'name', - label: '鐗╁搧鍚嶇О', - placeholder: '璇疯緭鍏�', - defaultValue: '', + optionsConfig: { + label: 'warehouseName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/warehouse/select/tenant_warehouse' + }, }, { type: 'select', - dataIndex: 'warehouseId', + dataIndex: 'goodsTemplateId', + label: '鐗╁搧鍚嶇О', + placeholder: '璇疯緭鍏�', + defaultValue: '', + options: [], + cascader: [{key:'categoryId',queryKey: 'goodsTemplatesId'}], + optionsConfig: { + label: 'goodsName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/goods/template/query/goodsTemplate', + }, + }, + { + type: 'select', + dataIndex: 'categoryId', label: '鍒嗙被', placeholder: '璇烽�夋嫨', defaultValue: '', options: [], + optionsConfig: { + label: 'modelName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/goods/models/query/goodsModel' + }, }, { type: 'select', - dataIndex: 'warehouseId', + dataIndex: 'costType', label: '绫诲埆', placeholder: '璇烽�夋嫨', defaultValue: '', options: [], + optionsConfig: { + label: 'dict_label', + value: 'dict_value', + url: SettingIplatform.apiBaseURL + '/permit/dict/data/type/GOODS_PRICE', + }, }, ], // 鏍戞暟鎹� treeDataList: [], // 鎼滅储鏉′欢 filterFrom: { - tenantId: null, - userName: null, - userPhone: null, - 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, + warehouseType: 0, }, editSetting: { title: '', @@ -122,7 +120,7 @@ table: { showIndex: true, // 鏄惁鏄剧ず搴忓彿 expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁 - url: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/select/list', // 璇锋眰鍦板潃 + url: SettingIplatform.apiBaseURL + '/pc/warehouse/warningConfig/getList', // 璇锋眰鍦板潃 // 宸ュ叿鏉� tools: { columnsCtrl: { @@ -151,14 +149,14 @@ }, // 鍒椾俊鎭� 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: 'summary', align: 'left' }, + { title: '鏈烘瀯', field: 'agencyName', align: 'left' }, + { title: '浠撳簱', field: 'warehouseName', align: 'center' }, + { title: '鍒嗙被', field: 'categoryName', align: 'center' }, + { title: '鎵�灞炵被鍒�', field: 'costType', align: 'center' }, + { title: '鐗╁搧鍚嶇О', field: 'goodsName', align: 'left' }, + { title: '瑙勬牸鍨嬪彿', field: 'modelName', align: 'left' }, + { title: '淇濆簳搴撳瓨', field: 'lowerLimit', align: 'left' }, + { title: '灏侀《搴撳瓨', field: 'upperLimit', align: 'left' }, ], // 鎿嶄綔淇℃伅 operation: { @@ -192,48 +190,15 @@ }, }; }, + computed: { + ...mapGetters(['userInfo']), + }, created() { - this.initQuery(); }, methods: { - initQuery() { - selectTenantWarehouse().then((res) => { - this.items.forEach((v) => { - if (v.label == '浠撳簱') { - v.options = res.map((item) => { - item.label = item.warehouseName; - item.vlaue = item.id; - return item; - }); - } - }); - }); - getDicts('GOODS_PRICE').then((res) => { - this.items.forEach((v) => { - if (v.label == '绫诲埆') { - v.options = res.map((v) => { - v.label = v.dict_label; - v.value = v.dict_value; - return v; - }); - } - }); - }); - getCategorySelectTree().then((res) => { - this.items.forEach((v) => { - if (v.label == '鍒嗙被') { - v.options = res.map((item) => { - item.label = item.label; - item.vlaue = item.id; - return item; - }); - } - }); - }); - }, del(row) { - this.$modal.confirm('鏄惁纭鍒犻櫎鍚嶇О涓�"' + row.name + '"鐨勬満鏋勫悧锛�').then(() => { - finsystenant.del({ id: row.id }).then((res) => { + this.$modal.confirm('鏄惁纭鍒犻櫎姝ゆ潯鐨勬暟鎹悧锛�').then(() => { + warningConfigGetDel({ id: row.id }).then((res) => { this.$message.success('鍒犻櫎鎴愬姛锛�'); this.search(); }); @@ -261,6 +226,9 @@ }, fifterForm(params) { this.filterFrom = Object.assign(this.filterFrom, params); + 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/ledger/inventoryQuery/index.vue b/admin-web/src/views/stock/ledger/inventoryQuery/index.vue index 617ee74..178681a 100644 --- a/admin-web/src/views/stock/ledger/inventoryQuery/index.vue +++ b/admin-web/src/views/stock/ledger/inventoryQuery/index.vue @@ -42,9 +42,10 @@ dataIndex: 'agencyId', label: '鏈烘瀯', placeholder: '璇烽�夋嫨', - optionsConfig: { url: '/pc/fin/sys/tenant/select/tree_fin_tenant', props: null }, defaultValue: '', options: [], + cascader: [{key:'warehouseId',queryKey: 'agencyId'},{key:'goodsTemplateId',queryKey: 'agencyId'}], + optionsConfig: { url: '/pc/fin/sys/tenant/select/tree_fin_tenant', props: null }, }, { type: 'select', @@ -53,13 +54,25 @@ placeholder: '璇烽�夋嫨', defaultValue: '', options: [], + optionsConfig: { + label: 'warehouseName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/warehouse/select/tenant_warehouse' + }, }, { - type: 'text', - dataIndex: 'goodsTemplateName', + type: 'select', + dataIndex: 'goodsTemplateId', label: '鐗╁搧鍚嶇О', placeholder: '璇疯緭鍏�', defaultValue: '', + options: [], + cascader: [{key:'categoryId',queryKey: 'goodsTemplatesId'}], + optionsConfig: { + label: 'goodsName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/goods/template/query/goodsTemplate', + }, }, { type: 'select', @@ -68,6 +81,11 @@ placeholder: '璇烽�夋嫨', defaultValue: '', options: [], + optionsConfig: { + label: 'modelName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/goods/models/query/goodsModel' + }, }, { type: 'select', @@ -76,16 +94,18 @@ placeholder: '璇烽�夋嫨', defaultValue: '', options: [], + optionsConfig: { + label: 'dict_label', + value: 'dict_value', + url: SettingIplatform.apiBaseURL + '/permit/dict/data/type/GOODS_PRICE', + }, }, ], // 鏍戞暟鎹� treeDataList: [], // 鎼滅储鏉′欢 filterFrom: { - tenantId: null, - userName: null, - userPhone: null, - status: 1, + warehouseType:0 }, // 琛ㄦ牸鏁版嵁 table: { @@ -138,53 +158,9 @@ }; }, created() { - this.initQuery(); + // this.initQuery(); }, methods: { - initQuery() { - selectTenantWarehouse().then((res) => { - this.items.forEach((v) => { - if (v.label == '浠撳簱') { - v.options = res.map((item) => { - item.label = item.warehouseName; - item.value = item.id; - return item; - }); - } - }); - console.log('this.items', this.items); - }); - getDicts('GOODS_PRICE').then((res) => { - // 浠峰�肩被鍨�1A 2B 3C - this.items.forEach((v) => { - if (v.label == '绫诲埆') { - v.options = res.map((v) => { - v.label = v.dict_label; - if (v.dict_value == 'A') { - v.value = 1; - } else if (v.dict_value == 'B') { - v.value = 2; - } else { - v.value = 3; - } - return v; - }); - } - }); - }); - treeList().then((res) => { - this.items.forEach((v) => { - if (v.label == '鍒嗙被') { - v.options = res.map((item) => { - item.label = item.categoryName; - item.value = item.id; - return item; - }); - } - }); - }); - }, - // 瀵煎嚭 handleExport() { let loading = this.$loading({ @@ -230,9 +206,6 @@ }, fifterForm(params) { this.filterFrom = Object.assign(this.filterFrom, params); - 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/ledger/ledgerQuery/index.vue b/admin-web/src/views/stock/ledger/ledgerQuery/index.vue index 89c5be4..59c1aac 100644 --- a/admin-web/src/views/stock/ledger/ledgerQuery/index.vue +++ b/admin-web/src/views/stock/ledger/ledgerQuery/index.vue @@ -33,6 +33,7 @@ import { getBaseUrl } from '@/utils/base'; import { getCategorySelectTree, goodsModel } from '@/api/baseSetting/finsystenant'; import { getDicts } from '@/api/system/dict/data'; +import * as DateFormatter from '@/utils/DateFormatter'; export default { name: 'index', @@ -46,40 +47,66 @@ dataIndex: 'agencyId', label: '鏈烘瀯', placeholder: '璇烽�夋嫨', - optionsConfig: { url: '/pc/fin/sys/tenant/select/tree_fin_tenant', props: null }, defaultValue: '', options: [], + cascader: [ + { key: 'warehouseId', queryKey: 'agencyId' }, + { key: 'goodsTemplateId', queryKey: 'agencyId' }, + ], + optionsConfig: { url: '/pc/fin/sys/tenant/select/tree_fin_tenant', props: null }, }, { - type: 'text', - dataIndex: 'name', + type: 'select', + dataIndex: 'warehouseId', + label: '浠撳簱', + placeholder: '璇烽�夋嫨', + defaultValue: '', + options: [], + optionsConfig: { + label: 'warehouseName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/warehouse/select/tenant_warehouse', + }, + }, + { + type: 'select', + dataIndex: 'goodsTemplateId', label: '鐗╁搧鍚嶇О', placeholder: '璇疯緭鍏�', defaultValue: '', + options: [], + cascader: [{ key: 'categoryId', queryKey: 'goodsTemplatesId' }], + optionsConfig: { + label: 'goodsName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/goods/template/query/goodsTemplate', + }, }, { type: 'select', - dataIndex: 'status', + dataIndex: 'baseGoodsModelsId', label: '瑙勬牸鍨嬪彿', - placeholder: '璇烽�夋嫨', + placeholder: '璇疯緭鍏�', defaultValue: '', options: [], + optionsConfig: { + label: 'modelName', + value: 'id', + url: SettingIplatform.apiBaseURL + '/pc/base/goods/models/query/goodsModel', + }, }, { type: 'select', - dataIndex: 'status', - label: '鍒嗙被', + dataIndex: 'flowType', + label: '绫诲瀷', placeholder: '璇烽�夋嫨', defaultValue: '', options: [], - }, - { - type: 'select', - dataIndex: 'status', - label: '绫诲埆', - placeholder: '璇烽�夋嫨', - defaultValue: '', - options: [], + optionsConfig: { + label: 'dict_label', + value: 'dict_value', + url: SettingIplatform.apiBaseURL + '/permit/dict/data/type/FLOW_TYPE', + }, }, { type: 'text', @@ -89,16 +116,9 @@ defaultValue: '', }, { - type: 'text', - dataIndex: 'name', - label: '鎿嶄綔浜�', - placeholder: '璇疯緭鍏�', - defaultValue: '', - }, - { type: 'date-picker', dataIndex: 'val1', - label: '鍑哄簱鏃堕棿', + label: '鏃堕棿', defaultValue: '', }, { @@ -145,7 +165,7 @@ table: { showIndex: true, // 鏄惁鏄剧ず搴忓彿 expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁 - url: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/select/list', // 璇锋眰鍦板潃 + url: SettingIplatform.apiBaseURL + '/pc/warehouse/flow/getTaiZhangList', // 璇锋眰鍦板潃 // 宸ュ叿鏉� tools: { columnsCtrl: { @@ -165,13 +185,44 @@ { title: '浠撳簱', field: 'warehouseName', align: 'center' }, { title: '鐗╁搧鍚嶇О', field: 'goodsTemplateName', align: 'center' }, { title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'center' }, - { title: '绫诲瀷', field: 'summary', align: 'left' }, - { title: '鍗曞彿', field: 'summary', align: 'left' }, - { title: '鏁伴噺', field: 'counts', align: 'left' }, - { 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', + 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]; + } + return { value: result }; + }, + }, + { title: '鍗曞彿', field: 'businessFormCode', align: 'left' }, + { title: '鏁伴噺', field: 'thisCount', align: 'left' }, + { title: '鎿嶄綔鍓嶆暟閲�', field: 'initialCount', align: 'left' }, + { title: '鎿嶄綔鍚庢暟閲�', field: 'endCount', align: 'left' }, + { title: '鍦ㄩ��', field: 'zaiTuCount', align: 'left' }, + { + title: '鎿嶄綔鏃堕棿', + field: 'dealTime', + align: 'left', + formatter: (row) => { + return { value: DateFormatter.LongToDateTime(row.dealTime) }; + }, + }, ], paging: { show: true, // 鏄剧ず鍒嗛〉 @@ -186,45 +237,8 @@ }, }; }, - created() { - this.initQuery(); - }, + created() {}, methods: { - initQuery() { - goodsModel().then((res) => { - this.items.forEach((v) => { - if (v.label == '瑙勬牸鍨嬪彿') { - v.options = res.map((item) => { - item.label = item.modelName; - item.vlaue = item.id; - return item; - }); - } - }); - }); - getDicts('GOODS_PRICE').then((res) => { - this.items.forEach((v) => { - if (v.label == '绫诲埆') { - v.options = res.map((v) => { - v.label = v.dict_label; - v.value = v.dict_value; - return v; - }); - } - }); - }); - getCategorySelectTree().then((res) => { - this.items.forEach((v) => { - if (v.label == '鍒嗙被') { - v.options = res.map((item) => { - item.label = item.label; - item.vlaue = item.id; - return item; - }); - } - }); - }); - }, del(row) { this.$modal .confirm('鏄惁纭鍒犻櫎鍚嶇О涓�"' + row.name + '"鐨勬満鏋勫悧锛�') diff --git a/admin-web/src/views/stock/scrap/itemScrapping/edit.vue b/admin-web/src/views/stock/scrap/itemScrapping/edit.vue index fd5ec9d..c24c442 100644 --- a/admin-web/src/views/stock/scrap/itemScrapping/edit.vue +++ b/admin-web/src/views/stock/scrap/itemScrapping/edit.vue @@ -276,12 +276,12 @@ this.getCategoryTree(); this.formData.procureGoods.push(JSON.parse(JSON.stringify(this.goodsItem))); this.formData.operatorId = this.userInfo.userCode; - this.formData.operatorName = 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.WAREHOUSE_TYPE = 0; + this.formData.warehouseType = 0; }, async getCategoryTree() { // 鑾峰彇鐗╁搧鍒嗙被鍒楄〃 -- Gitblit v1.9.1