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