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 |  314 +++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 258 insertions(+), 56 deletions(-)

diff --git a/src/views/reportForm/locationReport/index.vue b/src/views/reportForm/locationReport/index.vue
index 76af58e..c1e0a0f 100644
--- a/src/views/reportForm/locationReport/index.vue
+++ b/src/views/reportForm/locationReport/index.vue
@@ -2,43 +2,92 @@
 <template>
   <div class="rightContent">
     <div class="top">
-        <SearchCommonView
-          :add-title="'鏂板缓'"
-          :showAdd="false"
-          :placeholder="'璇疯緭鍏ヤ綅缃悕绉般�佷骇鍝佸悕绉版垨浜у搧绫诲埆'"
-          :amount-view="false"
-          @addCommonClick="addBtnClick"
-          @searchClick="getList"
-          :isDisabled="true"
-        />
+      <SearchCommonView
+        :add-title="'鏂板缓'"
+        :showAdd="false"
+        :placeholder="'璇疯緭鍏ヤ綅缃悕绉般�佷骇鍝佸悕绉版垨浜у搧绫诲埆'"
+        :amount-view="false"
+        @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">
-                <span @click="handleHistoryClick(scope.row)">
+    <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)" 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,8 +114,17 @@
   computed: {},
   data() {
     return {
+        unitList:[],
+        treeProps:{
+          label:'name',
+          value:'id',
+          children:'children'
+        },
+        warehouseList:[],
+      locationList:[],
+      checkedLocationList:[],
       tableList: {},
-      showcol: ["瀛樺偍绫诲埆", "浜у搧绫诲埆", "棰勭暀鏁伴噺", "浠峰��"],
+      showcol: [ "浜у搧绫诲埆",  "浠峰��"],
       // countcol: [
       //   { label: "鍦ㄥ簱鏁伴噺", unit: "" },
       //   { label: "棰勭暀鏁伴噺", unit: "" },
@@ -106,14 +170,112 @@
       },
       productId: this.$route.params.id,
       productName: this.$route.params.name,
-      metaTitle: this.$route.meta.title
+      metaTitle: this.$route.meta.title,
+      keyWord:''
     }
   },
   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: [],
@@ -160,19 +322,22 @@
           default: false,
           isShowColumn: showcol.includes("浜у搧绫诲埆")
         },
-        {
+        /*{
           label: "鍦ㄥ簱鏁伴噺",
+          width:100,
           prop: "amount",
           isShowColumn: true,
           default: true,
-          unit: ""
-        },
+          unit: "",
+          textAlign:"right"
+        },*/
         {
           label: "棰勭暀鏁伴噺",
           prop: "availableStore",
-          isShowColumn: true,
-          default: true,
-          unit: ""
+          default: false,
+          isShowColumn: showcol.includes("棰勭暀鏁伴噺"),
+          unit: "",
+          textAlign:"right"
         },
         {
           label: "鍗曚綅",
@@ -187,6 +352,7 @@
           width: 120,
           default: false,
           isShowColumn: showcol.includes("浠峰��"),
+          //textAlign:"right",
           unit: "锟�"
         }
       ]
@@ -197,7 +363,7 @@
       this.tableList.tableColumn = this.setTableColumn(val)
     },
     // 璇锋眰鏁版嵁
-    async getLocationData(params){
+    async getLocationData(params) {
       await getLocationData(params).then((res) => {
         if (res.code === 200) {
           const list = res.data
@@ -209,25 +375,30 @@
     getData() {
       if(this.$route.params.name==="搴撳瓨鎶ヨ〃"){
         this.getLocationData({
-        keyWord:this.$route.params.keyWord,
+        wareHouseCode:this.$route.params.wareHouseCode,
+        productId:this.$route.params.productId,
         page: this.pagerOptions.currPage,
         pageSize: this.pagerOptions.pageSize
       })
       }else{
-        this.getLocationData({
+        let params={
           page: this.pagerOptions.currPage,
-          pageSize: this.pagerOptions.pageSize
-        })
+          pageSize: this.pagerOptions.pageSize,
+          keyWord:this.keyWord,
+        };
+        if(this.$route.params.locationId){
+          params.locationId=this.$route.params.locationId
+        }
+        this.getLocationData(params)
       }
     },
 
     // 鎼滅储
     getList(val) {
-      this.getLocationData({
-        page: 1,
-        pageSize: this.pagerOptions.pageSize,
-        keyWord:val
-      })
+      this.keyWord=val
+      this.pagerOptions.currPage=1
+      this.pagerOptions.pageSize=15
+      this.getData()
     },
     // 琛岀偣鍑�
     tableRowClick(row) {
@@ -248,11 +419,12 @@
     },
     // 鍘嗗彶
     handleHistoryClick(row) {
+      console.log(row)
       this.$router.push({
-        name: "inboundOutboundDetail",
+        name: "outEnterLibrary",
         params: {
-          keyWord:row.productTypeName,
-          produceId:row.id,
+          keyWord:row.productName,
+          produceId:row.produceId,
           productName:row.productName,
           unit:row.unit,
           name: "鎶ヨ〃"
@@ -260,10 +432,40 @@
       })
     },
     // 琛ヨ揣
-    handleAddGoods() {}
+    handleAddGoods(row) {
+      this.$router.push({
+        name: 'orderPoint',
+        params:{
+          locationId:row.locationId,
+          locationName:row.locationName
+        }
+      })
+    }
   }
 }
 </script>
 
 <!-- Add "scoped" attribute to limit CSS to this component only -->
-<style lang="scss" scoped></style>
+<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