From 5ecb7958c96d3f0b6d47b79aff7eb306c2cf690f Mon Sep 17 00:00:00 2001
From: charles <981744753@qq.com>
Date: 星期二, 06 八月 2024 11:16:58 +0800
Subject: [PATCH] gitlab上面的wms转移到公司git

---
 src/views/reportForm/locationReport/index.vue |  236 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 209 insertions(+), 27 deletions(-)

diff --git a/src/views/reportForm/locationReport/index.vue b/src/views/reportForm/locationReport/index.vue
index 378c2e4..c1e0a0f 100644
--- a/src/views/reportForm/locationReport/index.vue
+++ b/src/views/reportForm/locationReport/index.vue
@@ -10,35 +10,84 @@
         @addCommonClick="addBtnClick"
         @searchClick="getList"
         :isDisabled="true"
+        :showDownload="true"
+        @downloadClick="downHttpClick"
       />
     </div>
-    <div class="list-view">
-      <div class="table">
-        <TableCommonView
-          ref="tableListRef"
-          :table-list="tableList"
-          @selTableCol="selTableCol"
-          @tableRowClick="tableRowClick"
-          :showSummary="true"
-        >
-          <template slot="tableButton">
-            <el-table-column label="鎿嶄綔" width="210" align="center">
-              <template slot-scope="scope">
+    <div class="container">
+      <div class="list-left">
+        <!--<div class="title">浠撳簱</div>
+        <div class="tree-location">
+          <el-tree
+                  :show-checkbox="true"
+                   :data="warehouseList"
+                   :props="treeProps"
+                  @check-change="warehouseChangeNode"
+          ></el-tree>
+        </div>-->
+        <div class="title">浣嶇疆</div>
+        <div class="tree-location">
+          <el-tree
+                  node-key="id"
+                  :data="locationList"
+                  show-checkbox
+                  :props="treeProps"
+                  :default-expanded-keys="checkedLocationList"
+                  :default-checked-keys="checkedLocationList"
+                  @check="locationCheck"
+          ></el-tree>
+        </div>
+      </div>
+      <div class="list-view" style="margin-left: 10px">
+        <div class="table">
+          <TableCommonView
+                  ref="tableListRef"
+                  :table-list="tableList"
+                  @selTableCol="selTableCol"
+                  @tableRowClick="tableRowClick"
+                  :showSummary="true"
+          >
+            <template slot="tableButton">
+              <el-table-column label="鍦ㄥ簱鏁伴噺" prop='amount'>
+                <el-table-column v-for="unit in unitList" :label="unit.name" prop='amount' min="90">
+                  <template slot-scope="scope">
+                    {{getUnitValue(scope.row.amountMoreUnits,unit.name,scope.row.amount,scope.row.unit)}}
+                  </template>
+                </el-table-column>
+                <!--<el-table-column label="鍖�" prop='amount' min="90">
+                  <template slot-scope="scope">
+                    {{getUnitValue(scope.row.amountMoreUnits,'鍖�',scope.row.amount,scope.row.unit)}}
+                  </template>
+                </el-table-column>
+                <el-table-column label="绫虫暟" prop='amount' min="90">
+                  <template slot-scope="scope">
+                    {{getUnitValue(scope.row.amountMoreUnits,'绫虫暟',scope.row.amount,scope.row.unit)}}
+                  </template>
+                </el-table-column>
+                <el-table-column label="閲嶉噺" prop='amount' min="90">
+                  <template slot-scope="scope">
+                    {{getUnitValue(scope.row.beginMoreUnitsArr,'閲嶉噺',scope.row.beginAmount,scope.row.unit)}}
+                  </template>
+                </el-table-column>-->
+              </el-table-column>
+              <el-table-column label="鎿嶄綔" width="210" align="center">
+                <template slot-scope="scope">
                 <span @click="handleHistoryClick(scope.row)" class="yes-cursor">
                   <i class="el-icon-refresh-left"></i>
                   <span>鍘嗗彶</span>
                 </span>
-                <span @click="handleAddGoods(scope.row)" class="margin_left_5px">
+                  <span @click="handleAddGoods(scope.row)" class="margin_left_5px">
                   <i class="el-icon-refresh"></i>
                   <span>琛ヨ揣</span>
                 </span>
-              </template>
-            </el-table-column>
-          </template>
-        </TableCommonView>
-      </div>
-      <div class="btn-pager">
-        <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" />
+                </template>
+              </el-table-column>
+            </template>
+          </TableCommonView>
+        </div>
+        <div class="btn-pager">
+          <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" />
+        </div>
       </div>
     </div>
     <!-- 缂栬緫 -->
@@ -50,7 +99,13 @@
 import pageMixin from "@/components/makepager/pager/mixin/pageMixin"
 import { getLocationData } from "@/api/locationApi/locationApi"
 import AddOverviewDialog from "@/views/overview/AddOverviewDialog"
-
+import { downloadLocationForms } from "@/api/downFile"
+import FileSaver from 'file-saver'
+import _ from 'lodash'
+import { getLocationList } from "@/api/overview/overview";
+import {getTreeData} from '@/common/untils/index.js';
+import {getWarehouseList} from '@/api/warehouseManage/warehouse.js'
+import {getUnitInfo} from "@/api/basic/standard";
 export default {
   name: "InventoryReport",
   props: {},
@@ -59,6 +114,15 @@
   computed: {},
   data() {
     return {
+        unitList:[],
+        treeProps:{
+          label:'name',
+          value:'id',
+          children:'children'
+        },
+        warehouseList:[],
+      locationList:[],
+      checkedLocationList:[],
       tableList: {},
       showcol: [ "浜у搧绫诲埆",  "浠峰��"],
       // countcol: [
@@ -111,10 +175,107 @@
     }
   },
   created() {
-    this.setTable()
-    this.getData()
+    this.setTable();
+    this.getData();
+   // this.queryWarehouse();//鏌ヨ浠撳簱
+    this.queryLocation();
+    this.getUnitInfo();
   },
   methods: {
+      async getUnitInfo(){
+          const { code,data }=await getUnitInfo();
+          if(code===200){
+              this.unitList=data;
+          }
+      },
+      locationCheck(_,checkObj){
+          this.checkedLocationList=checkObj.checkedKeys;
+          let params={
+              page: this.pagerOptions.currPage,
+              pageSize: this.pagerOptions.pageSize,
+              keyWord:this.keyWord,
+          };
+          if(this.checkedLocationList.length>0){
+              params.locationIds=this.checkedLocationList;
+          }
+          this.getLocationData(params);
+      },
+      async queryWarehouse(){
+          const {code,data} =await getWarehouseList({page:0,pageSize:0,keyword:""});
+          if(code===200){
+              this.warehouseList=data;
+          }
+      },
+      getTreeData(dataList,childFieldName='children',pIdFieldName='parentId',idFieldName = 'id',rootValue=0){
+          const rootArr=[];
+          //1.鍏堣幏鍙栨牴鑺傜偣鍒楄〃
+          dataList.forEach(item=>{
+              const children= getChildrenNode(item[idFieldName],dataList);
+              if(Array.isArray(children)&&children.length>0){
+                  item[childFieldName]=children;
+              }
+              if(!item.isParent){
+                  rootArr.push(item)
+              }
+          });
+          //2.閫掑綊鑾峰彇鏍硅妭鐐圭殑鎵�鏈変笅绾ц妭鐐�
+          function getChildrenNode(parentId,dataList) {
+              //1.鏍规嵁鏍硅妭鐐硅幏鍙� 瀛愯妭鐐瑰垪琛�
+              const childrenArr=dataList.filter(item=>parentId===item[pIdFieldName]);
+              //2.瀛╁瓙鏈夊彲鑳借繕鏈夊瀛� 閬嶅巻瀛╁瓙杩涜閲嶆柊閫掑綊
+              childrenArr.forEach(item=>{
+                  const children=getChildrenNode(item[idFieldName],dataList);
+                  if(children.length>0){
+                      item[childFieldName]=children;
+                  }
+              });
+              return childrenArr;
+          }
+          return rootArr;
+      },
+      async queryLocation(){
+          const {code,data}=await getLocationList({type:3,page:0,pageSize:0});
+          if(code===200){
+              data.forEach(item=>{
+                 item.isParent=data.some(dItem=>{
+                     if(dItem.id!==item.id){
+                         return dItem.id===item.parentId
+                     }
+                 })
+              });
+              this.locationList=this.getTreeData(data)//杞垚鏍戝舰鏁版嵁;
+          }
+      },
+      getUnitValue(list,val,num,unit){
+          let  string='--'
+          if(list){
+              if(list.length>0){
+                  for(let i in list){
+                      if(list[i].unit==val){
+                          string=list[i].amount
+                          break;
+                      }
+                  }
+              }
+          }
+          if(unit==val){
+              string=num
+          }
+          return string
+      },
+    // 涓嬭浇
+    downHttpClick: _.debounce(function(){
+      downloadLocationForms({
+        page: this.pagerOptions.currPage,
+        pageSize: this.pagerOptions.pageSize,
+        keyword:this.keyword,
+      }).then(res => {
+        if (res) {
+          FileSaver.saveAs(res, '浣嶇疆鎶ヨ〃.xlsx');
+          this.$message.success("涓嬭浇鎴愬姛锛�");
+        }
+      })
+    }, 1000),
     setTable() {
       this.tableList = {
         tableInfomation: [],
@@ -161,7 +322,7 @@
           default: false,
           isShowColumn: showcol.includes("浜у搧绫诲埆")
         },
-        {
+        /*{
           label: "鍦ㄥ簱鏁伴噺",
           width:100,
           prop: "amount",
@@ -169,7 +330,7 @@
           default: true,
           unit: "",
           textAlign:"right"
-        },
+        },*/
         {
           label: "棰勭暀鏁伴噺",
           prop: "availableStore",
@@ -191,7 +352,7 @@
           width: 120,
           default: false,
           isShowColumn: showcol.includes("浠峰��"),
-          textAlign:"right",
+          //textAlign:"right",
           unit: "锟�"
         }
       ]
@@ -224,7 +385,7 @@
           page: this.pagerOptions.currPage,
           pageSize: this.pagerOptions.pageSize,
           keyWord:this.keyWord,
-        }
+        };
         if(this.$route.params.locationId){
           params.locationId=this.$route.params.locationId
         }
@@ -286,4 +447,25 @@
 
 <!-- Add "scoped" attribute to limit CSS to this component only -->
 <style lang="scss" scoped>
+  .container{
+    display: flex;
+    justify-content: start;
+    .list-left{
+      background-color: white;
+      width: 15%;
+      .title{
+        font-family: '榛戜綋';
+        padding: 10px;
+      }
+      .tree-location{
+        height: 75vh;
+        overflow-y: auto;
+      }
+    }
+    .list-view{
+      background-color: white;
+      min-height: 80vh;
+      width: 85%;
+    }
+  }
 </style>

--
Gitblit v1.8.0