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