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 |  521 +++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 354 insertions(+), 167 deletions(-)

diff --git a/src/views/reportForm/locationReport/index.vue b/src/views/reportForm/locationReport/index.vue
index 3de4f88..c1e0a0f 100644
--- a/src/views/reportForm/locationReport/index.vue
+++ b/src/views/reportForm/locationReport/index.vue
@@ -1,65 +1,111 @@
+<!-- 浣嶇疆鎶ヨ〃 -->
 <template>
   <div class="rightContent">
     <div class="top">
-      <div>
-        <SearchCommonView
-          :add-title="'鏂板缓'"
-          :showAdd="true"
-          :placeholder="'璇疯緭鍏ュ弬鑰�'"
-          :amount-view="false"
-          @addCommonClick="addBtnClick"
-          @searchClick="getList"
-        />
-      </div>
+      <SearchCommonView
+        :add-title="'鏂板缓'"
+        :showAdd="false"
+        :placeholder="'璇疯緭鍏ヤ綅缃悕绉般�佷骇鍝佸悕绉版垨浜у搧绫诲埆'"
+        :amount-view="false"
+        @addCommonClick="addBtnClick"
+        @searchClick="getList"
+        :isDisabled="true"
+        :showDownload="true"
+        @downloadClick="downHttpClick"
+      />
     </div>
-    <div class="list-view">
-      <TableCommonView
-        ref="tableListRef"
-        :table-list="tableList"
-        @selTableCol="selTableCol"
-        @tableRowClick="tableRowClick"
-      >
-        <template slot="tableButton">
-          <el-table-column
-            label="鎿嶄綔"
-            width="210"
-            align="center"
+    <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-scope="scope">
-              <span @click="handleHistoryClick(scope.row)">
-                <i class="el-icon-refresh-left"></i>
-                <span>鍘嗗彶</span>
-              </span>
-              <span @click="handleAddGoods(scope)" class="margin_left_5px">
-                <i class="el-icon-refresh"></i>
-                <span>琛ヨ揣</span>
-              </span>
+            <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">
+                  <i class="el-icon-refresh"></i>
+                  <span>琛ヨ揣</span>
+                </span>
+                </template>
+              </el-table-column>
             </template>
-          </el-table-column>
-        </template>
-      </TableCommonView>
-      <div class="btn-pager">
-        <PagerView
-          class="page"
-          :pager-options="pagerOptions"
-          v-on="pagerEvents"
-        />
+          </TableCommonView>
+        </div>
+        <div class="btn-pager">
+          <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" />
+        </div>
       </div>
     </div>
     <!-- 缂栬緫 -->
-    <AddOverviewDialog
-      v-if="editConfig.visible"
-      :edit-common-config="editConfig"
-      :add-name="this.$route.params.name"
-    />
+    <AddOverviewDialog v-if="editConfig.visible" :edit-common-config="editConfig" :add-name="this.$route.params.name" />
   </div>
 </template>
 
 <script>
-import pageMixin from "@/components/makepager/pager/mixin/pageMixin";
-import { getProductOperatonList } from "@/api/product/product";
-import AddOverviewDialog from "@/views/overview/AddOverviewDialog";
-
+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: {},
@@ -68,217 +114,358 @@
   computed: {},
   data() {
     return {
+        unitList:[],
+        treeProps:{
+          label:'name',
+          value:'id',
+          children:'children'
+        },
+        warehouseList:[],
+      locationList:[],
+      checkedLocationList:[],
       tableList: {},
-      showcol: ["瀛樺偍绫诲埆", "浜у搧绫诲埆", "棰勭暀鏁伴噺", "浠峰��"],
+      showcol: [ "浜у搧绫诲埆",  "浠峰��"],
+      // countcol: [
+      //   { label: "鍦ㄥ簱鏁伴噺", unit: "" },
+      //   { label: "棰勭暀鏁伴噺", unit: "" },
+      //   { label: "浠峰��", unit: "锟�" },
+      // ],
+      countcol: ["鍦ㄥ簱鏁伴噺", "棰勭暀鏁伴噺", "浠峰��"],
       testArr: [
         {
-          product:"HC/閿�鍞尯/b鍖�",
-          category:"涓濈桓鍒跺搧/鐪熶笣鐫¤",
-          cost:"800.00",
-          totalPrices:"0.00",
-          inStore:"0.00",
-          availableStore:"0.00",
-          inStorage:"0.00",
-          toStore:"0.00",
-          forecast:"0.00",
-          unit:"浠�"
+          product: "HC/閿�鍞尯/b鍖�",
+          category: "涓濈桓鍒跺搧/鐪熶笣鐫¤",
+          cost: "800.00",
+          totalPrices: "2000.00",
+          inStore: "00.00",
+          availableStore: "200.00",
+          inStorage: "00.00",
+          toStore: 65432.0,
+          forecast: "0.00",
+          unit: "浠�"
         },
         {
-          product:"HC閿�鍞尯/A鍖�",
-          category:"涓濈桓鍒跺搧/鐪熶笣鐫¤",
-          cost:"9980.00",
-          totalPrices:"0.00",
-          inStore:"0.00",
-          availableStore:"0.00",
-          inStorage:"0.00",
-          toStore:"0.00",
-          forecast:"0.00",
-          unit:"浠�"
-        },
+          product: "HC閿�鍞尯/A鍖�",
+          category: "涓濈桓鍒跺搧/閲戜笣鐫¤",
+          cost: "9980.00",
+          totalPrices: "00.00",
+          inStore: "00.00",
+          availableStore: "20.00",
+          inStorage: "0.00",
+          toStore: 32618.0,
+          forecast: "0.00",
+          unit: "浠�"
+        }
       ],
       searchOptions: [],
       commonDetail: {
         visible: false,
         title: "鏂板缓",
-        infomation: {},
+        infomation: {}
       },
       editConfig: {
         visible: false,
         title: "鏂板缓",
-        infomation: {},
+        infomation: {}
       },
       productId: this.$route.params.id,
       productName: this.$route.params.name,
-    };
+      metaTitle: this.$route.meta.title,
+      keyWord:''
+    }
   },
   created() {
     this.setTable();
-    // this.getData();
+    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:[],
-        selectBox: true,
+        tableInfomation: [],
+        selectBox: false,
+        selectIndex: true,
         showcol: this.showcol,
+        countcol: this.countcol,
         allcol: [],
-        tableColumn: this.setTableColumn(this.showcol),
-      };
-      let allcol = [];
+        tableColumn: this.setTableColumn(this.showcol)
+      }
+      let allcol = []
       for (let i = 0; i < this.tableList.tableColumn.length; i++) {
         if (!this.tableList.tableColumn[i].default) {
-          const label = this.tableList.tableColumn[i].label;
-          allcol.push(label);
+          const label = this.tableList.tableColumn[i].label
+          allcol.push(label)
         }
       }
-      this.tableList.allcol = allcol;
-      this.tableList.tableInfomation=this.testArr
+      this.tableList.allcol = allcol
     },
     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",
-          isShowColumn: true,
+          prop: "locationName",
           default: true,
+          isShowColumn: true
         },
 
         {
           label: "瀛樺偍绫诲埆",
           prop: "category",
-          isShowColumn: true,
           default: false,
-          isShowColumn: showcol.includes("瀛樺偍绫诲埆"),
+          isShowColumn: showcol.includes("瀛樺偍绫诲埆")
         },
         {
           label: "浜у搧",
-          prop: "cost",
-          isShowColumn: true,
+          prop: "productName",
           default: true,
+          isShowColumn: true
         },
         {
           label: "浜у搧绫诲埆",
-          prop: "totalPrices",
-          isShowColumn: true,
+          prop: "productTypeName",
           default: false,
-          isShowColumn: showcol.includes("浜у搧绫诲埆"),
+          isShowColumn: showcol.includes("浜у搧绫诲埆")
         },
-        {
+        /*{
           label: "鍦ㄥ簱鏁伴噺",
-          prop: "inStore",
+          width:100,
+          prop: "amount",
           isShowColumn: true,
           default: true,
-        },
+          unit: "",
+          textAlign:"right"
+        },*/
         {
           label: "棰勭暀鏁伴噺",
           prop: "availableStore",
-          // isShowColumn: true,
           default: false,
           isShowColumn: showcol.includes("棰勭暀鏁伴噺"),
+          unit: "",
+          textAlign:"right"
         },
         {
           label: "鍗曚綅",
           prop: "unit",
-          isShowColumn: true,
-          default: true,
+          width: 120,
+          default: false,
+          isShowColumn: showcol.includes("鍗曚綅")
         },
         {
           label: "浠峰��",
-          prop: "toStore",
+          prop: "value",
           width: 120,
           default: false,
-          // status: true,
-          // isCallMethod: true,
-          // getCallMethod: this.getStatus,
           isShowColumn: showcol.includes("浠峰��"),
-        },
-      ];
-      return tableColumn;
+          //textAlign:"right",
+          unit: "锟�"
+        }
+      ]
+      return tableColumn
     },
     selTableCol(val) {
-      this.showcol = val;
-      this.tableList.tableColumn = this.setTableColumn(val);
+      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;
-    //     }
-    //   });
-    // },
+    async getLocationData(params) {
+      await getLocationData(params).then((res) => {
+        if (res.code === 200) {
+          const list = res.data
+          this.tableList.tableInfomation = list || []
+          this.pagerOptions.totalCount = res.total
+        }
+      })
+    },
+    getData() {
+      if(this.$route.params.name==="搴撳瓨鎶ヨ〃"){
+        this.getLocationData({
+        wareHouseCode:this.$route.params.wareHouseCode,
+        productId:this.$route.params.productId,
+        page: this.pagerOptions.currPage,
+        pageSize: this.pagerOptions.pageSize
+      })
+      }else{
+        let params={
+          page: this.pagerOptions.currPage,
+          pageSize: this.pagerOptions.pageSize,
+          keyWord:this.keyWord,
+        };
+        if(this.$route.params.locationId){
+          params.locationId=this.$route.params.locationId
+        }
+        this.getLocationData(params)
+      }
+    },
 
     // 鎼滅储
     getList(val) {
-      console.log(val);
+      this.keyWord=val
+      this.pagerOptions.currPage=1
+      this.pagerOptions.pageSize=15
+      this.getData()
     },
     // 琛岀偣鍑�
     tableRowClick(row) {
-      console.log(row);
-      this.editConfig.visible = true;
-      this.editConfig.title = "鏌ョ湅";
-      this.editConfig.infomation = { ...row };
+      console.log(row)
+      // this.editConfig.visible = true;
+      this.editConfig.title = "鏌ョ湅"
+      this.editConfig.infomation = { ...row }
     },
     // 鏂板缓
     addBtnClick() {
-      this.editConfig.visible = true;
-      this.editConfig.title = "鏂板缓";
+      this.editConfig.visible = true
+      this.editConfig.title = "鏂板缓"
+      this.getData()
     },
     // 鐘舵��
     getStatus(val) {
-      return val === 1 ? "鑽夌" : val === 3 ? "灏辩华" : "瀹屾垚";
+      return val === 1 ? "鑽夌" : val === 3 ? "灏辩华" : "瀹屾垚"
     },
     // 鍘嗗彶
-    handleHistoryClick(){
-
+    handleHistoryClick(row) {
+      console.log(row)
+      this.$router.push({
+        name: "outEnterLibrary",
+        params: {
+          keyWord:row.productName,
+          produceId:row.produceId,
+          productName:row.productName,
+          unit:row.unit,
+          name: "鎶ヨ〃"
+        }
+      })
     },
     // 琛ヨ揣
-    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>
-.rightContent {
-  height: 100%;
-  background: #e6ecf2;
-  padding: 10px;
-// .top {
-//   margin-bottom: 20px;
-//   height: 60px;
-//   background: #fff;
-//   border-radius: 8px;
-// }
-  .list-view {
-    height: calc(100% - 150px);
+  .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