From 8a668aeb3faa31d68dc2987204a372ad32f7b4f7 Mon Sep 17 00:00:00 2001 From: zzq <a13193816592@163.com> Date: 星期三, 27 九月 2023 20:46:40 +0800 Subject: [PATCH] "库存报表接口调用,api更新" --- src/views/reportForm/inventoryReport/index.vue | 238 +++++++++++++++++++++-------- src/components/makepager/TableCommonView.vue | 80 +++++---- src/api/locationApi/locationApi.js | 13 + src/components/makepager/SearchCommonView.vue | 6 src/views/reportForm/locationReport/index.vue | 84 ++++------ src/api/reportForm/inventoryRwport.js | 30 +++ 6 files changed, 295 insertions(+), 156 deletions(-) diff --git a/src/api/locationApi/locationApi.js b/src/api/locationApi/locationApi.js new file mode 100644 index 0000000..357de20 --- /dev/null +++ b/src/api/locationApi/locationApi.js @@ -0,0 +1,13 @@ +// 搴撳瓨鎶ヨ〃 +import request from "@/common/untils/request.js" +// import axios from "axios" + + +// 鑾峰彇浣嶇疆鎶ヨ〃 +export function getLocationData(data) { + return request({ + url: "/api-wms/v1/forms/getLocationForms", + method: "post", + data + }) +} diff --git a/src/api/reportForm/inventoryRwport.js b/src/api/reportForm/inventoryRwport.js index 7e1c92d..bef274f 100644 --- a/src/api/reportForm/inventoryRwport.js +++ b/src/api/reportForm/inventoryRwport.js @@ -1,5 +1,29 @@ // 搴撳瓨鎶ヨ〃 -// import request from "@/common/untils/request.js" -// import axios from "axios" +import request from "@/common/untils/request.js" +import axios from "axios" -// 鏂板缓搴撳瓨鎶ヨ〃 \ No newline at end of file + +// 鑾峰彇搴撳瓨鎶ヨ〃 +export function getInventoryData(data) { + return request({ + url: "/api-wms/v1/forms/getInventoryForms", + method: "post", + data + }) +} + +// 浠撳簱绫诲瀷鍒楄〃 +export const getWarehouseList = async (data) => { + return await axios.get(`/api-wms/v1/warehouse/warehouse`, { + params: data + }) +} + +// 浜у搧绫诲瀷鍒楄〃 +export function getProductCategoryList(data) { + return request({ + url: "/api-wms/v1/product/getProductCategoryList", + method: "post", + data + }) +} \ No newline at end of file diff --git a/src/components/makepager/SearchCommonView.vue b/src/components/makepager/SearchCommonView.vue index 16b2170..1247e80 100644 --- a/src/components/makepager/SearchCommonView.vue +++ b/src/components/makepager/SearchCommonView.vue @@ -2,7 +2,7 @@ <div class="search-list"> <div class="search-top"> <div class="left"> - <el-button v-if="showAdd" type="primary" size="mini" @click="addBtn">{{ addTitle }}</el-button> + <el-button v-if="showAdd" :disabled="isDisabled" type="primary" size="mini" @click="addBtn">{{ addTitle }}</el-button> <div class="download" @click="downloadClick" :style="{ cursor: showDownload ? 'pointer' : 'no-drop' }"> <img src="@/assets/img/xiazai.png" style="width: 13px" /> </div> @@ -79,6 +79,10 @@ type: Boolean, default: true }, + isDisabled:{ + type:Boolean, + default:false + }, showDownload: { type: Boolean, default: false diff --git a/src/components/makepager/TableCommonView.vue b/src/components/makepager/TableCommonView.vue index 2c9631a..8fcc0fe 100644 --- a/src/components/makepager/TableCommonView.vue +++ b/src/components/makepager/TableCommonView.vue @@ -1,6 +1,9 @@ <!-- eslint-disable vue/no-use-v-if-with-v-for --> <template> - <div :class="{'table-view':true,'table_height':!showSummary}" v-loading="loading"> + <div + :class="{ 'table-view': true, table_height: !showSummary }" + v-loading="loading" + > <el-table ref="table" border @@ -178,10 +181,10 @@ type: Boolean, default: true, }, - showSummary:{ - type:Boolean, - default:false - } + showSummary: { + type: Boolean, + default: false, + }, }, data() { return { @@ -252,52 +255,54 @@ }, //姹傚拰 getSummaries(param) { - if(this.tableList.countcol&&this.tableList.countcol.length>0){ - const { columns, data } = param; - const sums = []; - columns.forEach((column, index) => { - if (index === 0) { - sums[index] = " "; - return; - } - this.tableList.countcol.forEach((countcols,idx) => { - if (column.label === countcols) { - const values = data.map((item) => Number(item[column.property])); - if (!values.every((value) => isNaN(value))) { - sums[index] = values.reduce((prev, curr) => { - const value = Number(curr); - if (!isNaN(value)) { - return prev + curr; - } else { - return prev; - } - }, 0); - sums[index] = sums[index].toLocaleString(); - // console.log(sums,"sums") - } else { - sums[index] = ""; - } - } else { + if (this.tableList.countcol && this.tableList.countcol.length > 0) { + const { columns, data } = param; + const sums = []; + columns.forEach((column, index) => { + if (index === 0) { + sums[index] = " "; return; } + this.tableList.countcol.forEach((countcols) => { + if (column.label === countcols) { + const values = data.map((item) => Number(item[column.property])); + if (!values.every((value) => isNaN(value))) { + sums[index] = values.reduce((prev, curr) => { + const value = Number(curr); + if (!isNaN(value)) { + return prev + curr; + } else { + return prev; + } + }, 0); + sums[index] = + this.tableList.tableColumn[index - 1].unit + "" + sums[index]; + } else { + sums[index] = ""; + } + } else { + return; + } + }); }); - }); - return sums; - }else{ + return sums; } }, - }, }; </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style lang="scss" scoped> -.table_height{ +.table_height { + height: 100%; +} +.el-table__body-wrapper{ height: 100%; } .table-view { position: relative; + height: 100%; .blue { width: 70px; text-align: center; @@ -375,9 +380,8 @@ border-top-right-radius: 12px; overflow: auto; } - .el-table__body-wrapper{ + .el-table__body-wrapper { // height: ; } } - </style> diff --git a/src/views/reportForm/inventoryReport/index.vue b/src/views/reportForm/inventoryReport/index.vue index 6acb2e2..8c4d60f 100644 --- a/src/views/reportForm/inventoryReport/index.vue +++ b/src/views/reportForm/inventoryReport/index.vue @@ -8,19 +8,34 @@ :amount-view="false" @addCommonClick="addBtnClick" @searchClick="getList" + :isDisabled="true" /> </div> <div class="content_wrap"> <div class="con_left"> - <p>绫诲埆</p> - <el-checkbox-group v-model="checkList"> - <el-checkbox label="涓濈桓鍒跺搧"></el-checkbox> - <el-checkbox label="涓濈桓鍒跺搧/瀹跺叿鏈�"></el-checkbox> - <el-checkbox label="涓濈桓鍒跺搧/鐪熶笣鍚婂甫"></el-checkbox> - <el-checkbox label="涓濈桓鍒跺搧/鐪熶笣濂楄"></el-checkbox> - <el-checkbox label="涓濈桓鍒跺搧/鐪熶笣鐫¤"></el-checkbox> - <el-checkbox label="涓濈桓鍒跺搧/铓曚笣琚�"></el-checkbox> + <p>浠撳簱</p> + <div class="stash"> + <template> + <el-radio + v-for="(item, index) in warehouseList" + :key="index" + v-model="stashRadio" + :label="item.name" + @change="radioHandleChange" + >{{ item.name }}</el-radio + > + <!-- <el-radio v-model="stashRadio" label="2">澶囬�夐」</el-radio> --> + </template> + </div> + <p style="margin-top: 30px">绫诲埆</p> + <el-checkbox-group v-model="checkList" @change="checkListHandler"> + <el-checkbox + v-for="item in categoryList" + :key="item.id" + :label="item.id" + >{{ item.name }}</el-checkbox + > </el-checkbox-group> </div> <div class="con_right"> @@ -33,11 +48,7 @@ :showSummary="true" > <template slot="tableButton"> - <el-table-column - label="鎿嶄綔" - width="220" - align="center" - > + <el-table-column label="鎿嶄綔" width="220" align="center"> <template slot-scope="scope"> <span @click="handleHistoryClick(scope.row)"> <i class="el-icon-refresh-left"></i> @@ -71,6 +82,7 @@ <PagerView class="page" :pager-options="pagerOptions" + :page-size="pageSizes" v-on="pagerEvents" /> </div> @@ -89,8 +101,12 @@ <script> import pageMixin from "@/components/makepager/pager/mixin/pageMixin"; -import { getProductOperatonList } from "@/api/product/product"; import AddOverviewDialog from "@/views/overview/AddOverviewDialog"; +import { + getInventoryData, + getProductCategoryList, + getWarehouseList, +} from "@/api/reportForm/inventoryRwport"; export default { name: "InboundOutboundDetail", @@ -100,27 +116,28 @@ computed: {}, data() { return { + keyword: "", checkList: [], - - testArr: [ + testArr: [], + testArr2: [ { - product: "鍗楁柟涓濆发xxx", - category: "涓濈桓鍒跺搧/鐪熶笣鐫¤", - cost: "800.00", - totalPrices: "0.00", - inStore: "0.00", - availableStore: "0.00", - inStorage: "0.00", - toStore: "0.00", - forecast: "0.00", - unit: "浠�", + product: "鍗楁柟涓濆发xxx", //浜у搧 + category: "涓濈桓鍒跺搧/鐪熶笣鐫¤", // 浜у搧绫诲埆 + cost: "100.00", //鍗曚綅鎴愭湰 + inStore: "12.00", // 鍦ㄥ簱 + totalPrices: 10, // 鎬讳环鍊� + availableStore: "0.00", //鍙敤搴撳瓨 + inStorage: "100.00", // 鍏ュ簱 + toStore: "20.00", // 鍑哄簱 + forecast: "0.00", //棰勬祴 + unit: "浠�", //鍗曚綅 }, { product: "鍗楁柟涓濆发12306xxx", category: "涓濈桓鍒跺搧/鐪熶笣鐫¤", cost: "9980.00", totalPrices: "0.00", - inStore: "0.00", + inStore: "10.00", availableStore: "0.00", inStorage: "0.00", toStore: "0.00", @@ -130,7 +147,7 @@ ], tableList: {}, showcol: ["浜у搧绫诲埆", "鍗曚綅鎴愭湰", "鎬讳环鍊�", "鍏ュ簱", "鍑哄簱"], - countcol:["鎬讳环鍊�","鍦ㄥ簱","鍙敤搴撳瓨","鍏ュ簱","鍑哄簱","棰勬祴"], + countcol: ["鎬讳环鍊�", "鍦ㄥ簱", "鍙敤搴撳瓨", "鍏ュ簱", "鍑哄簱", "棰勬祴"], searchOptions: [], commonDetail: { visible: false, @@ -144,23 +161,49 @@ }, productId: this.$route.params.id, productName: this.$route.params.name, + categoryList: [], // 绫诲埆 + categoryListId: [], //绫诲埆id + warehouseList: [], // 浠撳簱 + warehouseListName: "", // 浠撳簱鍚嶇О + stashRadio: "1", + pageSizes: [15, 30], + oldRadioBtn:"", }; }, created() { this.setTable(); - // this.getData(); + this.getData(); //搴撳瓨鎶ヨ〃 + this.getStashData(); // 浠撳簱鍒楄〃鏁版嵁 + this.getProductCategoryList(); + }, + mounted() { + this.countSums(); }, methods: { + checkListHandler(e) { + this.categoryListId = e; + this.getData() + console.log(this.categoryListId, e, " 閫変腑鐨勪骇鍝乮d"); + }, + radioHandleChange(e) { + this.warehouseListName=e + this.getData() + console.log(e, "鍗曢��"); + }, setTable() { + if (this.isIconIndex === "1") { + this.pageSizes = [30, 60] + this.pagerOptions.pageSize = 30 + } this.tableList = { tableInfomation: [], selectBox: true, showcol: this.showcol, - countcol:this.countcol, + countcol: this.countcol, allcol: [], tableColumn: this.setTableColumn(this.showcol), }; - this.tableList.tableInfomation = this.testArr; + // this.tableList.tableInfomation = this.testArr; let allcol = []; for (let i = 0; i < this.tableList.tableColumn.length; i++) { if (!this.tableList.tableColumn[i].default) { @@ -174,15 +217,15 @@ let tableColumn = [ { label: "浜у搧", - prop: "product", + prop: "productName", default: true, - width:300, - + width: 300, + isShowColumn: true, // date: true, // 鏄惁涓烘棩鏈熸牸寮� }, { label: "浜у搧绫诲埆", - prop: "category", + prop: "productType", default: true, isShowColumn: showcol.includes("浜у搧绫诲埆"), }, @@ -194,42 +237,51 @@ }, { label: "鎬讳环鍊�", - prop: "totalPrices", + prop: "value", default: false, isShowColumn: showcol.includes("鎬讳环鍊�"), + unit: "锟�", }, { label: "鍦ㄥ簱", - prop: "inStore", + prop: "amount", default: true, + isShowColumn: true, + unit: "", }, { label: "鍙敤搴撳瓨", - prop: "availableStore", + prop: "availableNumber", default: true, + isShowColumn: true, + unit: "", }, { label: "鍏ュ簱", - prop: "inStorage", + prop: "in", default: false, isShowColumn: showcol.includes("鍏ュ簱"), + unit: "", }, { label: "鍑哄簱", - prop: "toStore", + prop: "out", isShowColumn: showcol.includes("鍑哄簱"), default: false, + unit: "", }, { label: "棰勬祴", prop: "forecast", isShowColumn: showcol.includes("棰勬祴"), default: false, + unit: "", }, { label: "鍗曚綅", prop: "unit", default: true, + isShowColumn: true, }, ]; return tableColumn; @@ -238,28 +290,6 @@ this.showcol = val; this.tableList.tableColumn = this.setTableColumn(val); }, - // 璇锋眰鏁版嵁 - // async getData() { - // await getProductOperatonList({ - // productId: this.productId, - // page: this.pagerOptions.currPage, - // pageSize: this.pagerOptions.pageSize, - // }).then((res) => { - // if (res.code === 200) { - // const list = res.data.map((item) => { - // return { - // ...item, - // from: item.fromLocation.name, - // to: item.toLocation.name, - // productName: this.productName, - // }; - // }); - // this.tableList.tableInfomation = list || []; - // this.pagerOptions.totalCount = res.total; - // } - // }); - // }, - // 鎼滅储 getList(val) { console.log(val); }, @@ -272,8 +302,9 @@ }, // 鏂板缓 addBtnClick() { - this.editConfig.visible = true; + // this.editConfig.visible = true; this.editConfig.title = "鏂板缓"; + this.getData(); }, // 鐘舵�� getStatus(val) { @@ -281,16 +312,83 @@ }, // 鍘嗗彶 handleHistoryClick(row) { - this.$router.push('/operate/allot') + console.log(row) + this.$router.push("/operate/allot"); }, // 琛ヨ揣 - handleAddGoods(row) {}, + handleAddGoods(row) { + console.log(row) + + }, // 浣嶇疆 handleLocation() { - this.$router.push('/reportForm/locationReport') + this.$router.push("/reportForm/locationReport"); }, // 棰勬祴 handleForecast() {}, + //鎬讳环璁$畻 + countSums() { + this.testArr2.map((item) => { + let obj = { + product: item.product, //浜у搧 + category: item.category, // 浜у搧绫诲埆 + cost: item.cost, //鍗曚綅鎴愭湰 + inStore: item.inStore, // 鍦ㄥ簱 + totalPrices: item.cost * item.inStore, // 鎬讳环鍊� + availableStore: item.availableStore, //鍙敤搴撳瓨 + inStorage: item.inStorage, // 鍏ュ簱 + toStore: item.toStore, // 鍑哄簱 + forecast: item.forecast, //棰勬祴 + unit: item.unit, //鍗曚綅 + }; + this.testArr.push(obj); + console.log(this.testArr, "this"); + }); + }, + + //鎺ュ彛璇锋眰----------------------------------------------------------------------------------------------- + // 鑾峰彇搴撳瓨鎶ヨ〃鏁版嵁 + async getData() { + let params = { + categoryIds: this.categoryListId, + page: this.pagerOptions.currPage, + pageSize: this.pagerOptions.pageSize, + warehouseCode: this.warehouseListName, + }; + await getInventoryData(params).then((res) => { + if (res.code === 200) { + console.log(res.data, "鎺ュ彛璇锋眰鎴愬姛"); + const list = res.data + this.tableList.tableInfomation = list || [] + this.pagerOptions.totalCount = res.total + } + }); + }, + // 鑾峰彇浜у搧绫诲瀷鍒楄〃鏁版嵁 + async getProductCategoryList() { + await getProductCategoryList({ + keyWord: "", + page: this.pagerOptions.currPage, + pageSize: this.pagerOptions.pageSize + }).then((res) => { + if (res.code === 200) { + this.categoryList = res.data; + } + }); + }, + // 璇锋眰浠撳簱鍒楄〃鏁版嵁 + async getStashData() { + await getWarehouseList({ + keyword: "", + page: this.pagerOptions.currPage, + pageSize: this.pagerOptions.pageSize + }).then((res) => { + if (res.data.code === 200) { + this.warehouseList = res.data.data; + console.log(this.warehouseList, "warehouseList"); + } + }); + }, }, }; </script> @@ -314,6 +412,14 @@ justify-content: space-between; .con_left { width: 200px; + .el-checkbox-group { + display: flex; + flex-direction: column; + } + .stash { + display: flex; + flex-direction: column; + } } .con_right { width: calc(100% - 200px); diff --git a/src/views/reportForm/locationReport/index.vue b/src/views/reportForm/locationReport/index.vue index c2c9c46..8954e37 100644 --- a/src/views/reportForm/locationReport/index.vue +++ b/src/views/reportForm/locationReport/index.vue @@ -1,3 +1,4 @@ +<!-- 浣嶇疆鎶ヨ〃 --> <template> <div class="rightContent"> <div class="top"> @@ -54,7 +55,7 @@ <script> import pageMixin from "@/components/makepager/pager/mixin/pageMixin"; -import { getProductOperatonList } from "@/api/product/product"; +import { getLocationData,} from "@/api/locationApi/locationApi"; import AddOverviewDialog from "@/views/overview/AddOverviewDialog"; export default { @@ -116,7 +117,7 @@ }, created() { this.setTable(); - // this.getData(); + this.getData(); }, methods: { setTable() { @@ -136,26 +137,14 @@ } } this.tableList.allcol = allcol; - this.tableList.tableInfomation = this.testArr; }, setTableColumn(showcol) { let tableColumn = [ - /* - product:"鍗楁柟涓濆发xxx", - category:"涓濈桓鍒跺搧/鐪熶笣鐫¤", - cost:"800.00", - totalPrices:"0.00", - inStore:"0.00", - availableStore:"0.00", - inStorage:"0.00", - toStore:"0.00", - forecast:"0.00", - unit:"浠�" - */ { label: "浣嶇疆", - prop: "product", + prop: "locationName", default: true, + isShowColumn: true, }, { @@ -166,39 +155,44 @@ }, { label: "浜у搧", - prop: "cost", + prop: "productName", default: true, + isShowColumn: true, }, { label: "浜у搧绫诲埆", - prop: "totalPrices", + prop: "productTypeName", default: false, isShowColumn: showcol.includes("浜у搧绫诲埆"), }, { label: "鍦ㄥ簱鏁伴噺", - prop: "inStore", + prop: "amount", + isShowColumn: true, default: true, + unit:"" }, { label: "棰勭暀鏁伴噺", prop: "availableStore", - sortable: true, - default: false, - isShowColumn: showcol.includes("棰勭暀鏁伴噺"), + isShowColumn: true, + default: true, + unit:"" }, { label: "鍗曚綅", prop: "unit", - isShowColumn: true, - default: true, - }, - { - label: "浠峰��", - prop: "toStore", width: 120, default: false, isShowColumn: showcol.includes("浠峰��"), + }, + { + label: "浠峰��", + prop: "value", + width: 120, + default: false, + isShowColumn: showcol.includes("浠峰��"), + unit:"锟�" }, ]; return tableColumn; @@ -208,26 +202,19 @@ this.tableList.tableColumn = this.setTableColumn(val); }, // 璇锋眰鏁版嵁 - // async getData() { - // await getProductOperatonList({ - // productId: this.productId, - // page: this.pagerOptions.currPage, - // pageSize: this.pagerOptions.pageSize, - // }).then((res) => { - // if (res.code === 200) { - // const list = res.data.map((item) => { - // return { - // ...item, - // from: item.fromLocation.name, - // to: item.toLocation.name, - // productName: this.productName, - // }; - // }); - // this.tableList.tableInfomation = list || []; - // this.pagerOptions.totalCount = res.total; - // } - // }); - // }, + async getData() { + await getLocationData({ + page: this.pagerOptions.currPage, + pageSize: this.pagerOptions.pageSize, + }).then((res) => { + if (res.code === 200) { + console.log(res.data,"鎺ュ彛璇锋眰鎴愬姛") + const list = res.data + this.tableList.tableInfomation = list || [] + this.pagerOptions.totalCount = res.total + } + }); + }, // 鎼滅储 getList(val) { @@ -244,6 +231,7 @@ addBtnClick() { this.editConfig.visible = true; this.editConfig.title = "鏂板缓"; + this.getData() }, // 鐘舵�� getStatus(val) { -- Gitblit v1.8.0