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/inventoryReport/index.vue |  336 ++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 288 insertions(+), 48 deletions(-)

diff --git a/src/views/reportForm/inventoryReport/index.vue b/src/views/reportForm/inventoryReport/index.vue
index 52fa318..b1b391e 100644
--- a/src/views/reportForm/inventoryReport/index.vue
+++ b/src/views/reportForm/inventoryReport/index.vue
@@ -10,31 +10,37 @@
         @addCommonClick="addBtnClick"
         @searchClick="getList"
         :isDisabled="true"
+        :showDownload="true"
+        @downloadClick="downHttpClick"
       />
     </div>
-
     <div class="content_wrap">
       <div class="con_left">
-        <p>浠撳簱</p>
-        <div class="stash">
-          <template>
-            <el-radio
-              v-for="(item, index) in warehouseList"
-              :key="index"
-              v-model="stashRadio"
-              :label="item.code"
-              @change="radioHandleChange"
-              >{{ item.name }}</el-radio
-            >
-            <!-- @click.prevent.native="checkRadio(item.code)"   鍙栨秷鍗曢�夐」 -->
-          </template>
+        <div class="con_left_div">
+          <p>浠撳簱</p>
+          <div class="stash">
+            <template>
+              <el-radio v-for="(item, index) in warehouseList" :key="index" v-model="stashRadio" :label="item.code" @change="radioHandleChange(item)">
+                <el-tooltip class="item" effect="dark" :content="item.name" placement="bottom">
+                  <span class="radio-text">{{ item.name }}</span>
+                </el-tooltip>
+              </el-radio>
+            </template>
+          </div>
         </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 class="con_left_div">
+          <p>绫诲埆</p>
+          <div class="category">
+            <el-tree node-key="id" :data="categoryList" show-checkbox :props="treeProps" @check="checkListHandler"></el-tree>
+            <!-- <el-checkbox-group v-model="checkList" @change="checkListHandler">
+            <el-checkbox v-for="item in categoryList" :key="item.id" :label="item.id">
+                <el-tooltip class="item" effect="dark" :content="item.name" placement="bottom">
+                  <span class="radio-text">{{ item.name }}</span>
+                </el-tooltip>
+            </el-checkbox>
+          </el-checkbox-group> -->
+          </div>
+        </div>
       </div>
       <div class="list-view">
         <div class="table">
@@ -46,6 +52,95 @@
             :showSummary="true"
           >
             <template slot="tableButton">
+              <el-table-column label="鍦ㄥ簱" prop='amount'>
+                  <el-table-column v-for="unit in unitList" :label="unit.name" prop='availableNumber' 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>
+              <el-table-column label="鍙敤搴撳瓨" prop='availableNumber'>
+                  <el-table-column v-for="unit in unitList" :label="unit.name" prop='amount' min="90">
+                      <template slot-scope="scope">
+                          {{getUnitValue(scope.row.availableNumberMoreUnits,unit.name,scope.row.availableNumber,scope.row.unit)}}
+                      </template>
+                  </el-table-column>
+                 <!-- <el-table-column label="浠�" prop='availableNumber' min="90">
+                    <template slot-scope="scope">
+                        {{getUnitValue(scope.row.availableNumberMoreUnits,'浠�',scope.row.availableNumber,scope.row.unit)}}
+                    </template>
+                </el-table-column>
+                <el-table-column label="鍖�" prop='availableNumber' min="90">
+                    <template slot-scope="scope">
+                        {{getUnitValue(scope.row.availableNumberMoreUnits,'鍖�',scope.row.availableNumber,scope.row.unit)}}
+                    </template>
+                </el-table-column>
+                <el-table-column label="绫虫暟" prop='availableNumber' min="90">
+                    <template slot-scope="scope">
+                        {{getUnitValue(scope.row.availableNumberMoreUnits,'绫虫暟',scope.row.availableNumber,scope.row.unit)}}
+                    </template>
+                </el-table-column>
+                <el-table-column label="閲嶉噺" prop='availableNumber' min="90">
+                    <template slot-scope="scope">
+                        {{getUnitValue(scope.row.availableNumberMoreUnits,'閲嶉噺',scope.row.availableNumber,scope.row.unit)}}
+                    </template>
+                </el-table-column>-->
+            </el-table-column>
+              <el-table-column label="鍏ュ簱" prop='in'>
+                  <el-table-column v-for="unit in unitList" :label="unit.name" prop='in' min="90">
+                      <template slot-scope="scope">
+                          {{getUnitValue(scope.row.inMoreUnits,unit.name,scope.row.in,scope.row.unit)}}
+                      </template>
+                  </el-table-column>
+                    <!--<el-table-column label="浠�" prop='in' min="90">
+                        <template slot-scope="scope">
+                            {{getUnitValue(scope.row.inMoreUnits,'浠�',scope.row.in,scope.row.unit)}}
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="鍖�" prop='in' min="90">
+                        <template slot-scope="scope">
+                            {{getUnitValue(scope.row.inMoreUnits,'鍖�',scope.row.in,scope.row.unit)}}
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="绫虫暟" prop='in' min="90">
+                        <template slot-scope="scope">
+                            {{getUnitValue(scope.row.inMoreUnits,'绫虫暟',scope.row.in,scope.row.unit)}}
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="閲嶉噺" prop='in' min="90">
+                        <template slot-scope="scope">
+                            {{getUnitValue(scope.row.inMoreUnits,'閲嶉噺',scope.row.in,scope.row.unit)}}
+                        </template>
+                    </el-table-column>-->
+                </el-table-column>
+              <el-table-column label="鍑哄簱" prop='out'>
+                  <el-table-column v-for="unit in unitList" :label="unit.name" prop='out' min="90">
+                      <template slot-scope="scope">
+                          {{getUnitValue(scope.row.outMoreUnits,unit.name,scope.row.out,scope.row.unit)}}
+                      </template>
+                    </el-table-column>
+                    <!--<el-table-column label="浠�" prop='out' min="90">
+                        <template slot-scope="scope">
+                            {{getUnitValue(scope.row.outMoreUnits,'浠�',scope.row.out,scope.row.unit)}}
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="鍖�" prop='out' min="90">
+                        <template slot-scope="scope">
+                            {{getUnitValue(scope.row.outMoreUnits,'鍖�',scope.row.out,scope.row.unit)}}
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="绫虫暟" prop='out' min="90">
+                        <template slot-scope="scope">
+                            {{getUnitValue(scope.row.outMoreUnits,'绫虫暟',scope.row.out,scope.row.unit)}}
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="閲嶉噺" prop='out' min="90">
+                        <template slot-scope="scope">
+                            {{getUnitValue(scope.row.outMoreUnits,'閲嶉噺',scope.row.out,scope.row.unit)}}
+                        </template>
+                    </el-table-column>-->
+                </el-table-column>
               <el-table-column label="鎿嶄綔" width="220" align="center">
                 <template slot-scope="scope">
                   <span @click="handleHistoryClick(scope.row)" class="yes-cursor">
@@ -75,8 +170,8 @@
           <PagerView class="page" :pager-options="pagerOptions" :page-size="pageSizes" v-on="pagerEvents" />
         </div>
       </div>
-    </div>
 
+    </div>
     <!-- 缂栬緫 dialog-->
     <AddOverviewDialog v-if="editConfig.visible" :edit-common-config="editConfig" :add-name="this.$route.params.name" />
   </div>
@@ -86,7 +181,11 @@
 import pageMixin from "@/components/makepager/pager/mixin/pageMixin"
 import AddOverviewDialog from "@/views/overview/AddOverviewDialog"
 import { getInventoryData, getProductCategoryList, getWarehouseList } from "@/api/reportForm/inventoryRwport"
-
+import { downloadInventoryForms } from "@/api/downFile"
+import FileSaver from 'file-saver';
+import axios from 'axios';
+import _ from 'lodash'
+import {getUnitInfo} from "@/api/basic/standard";
 export default {
   name: "inventoryReport",
   props: {},
@@ -95,7 +194,13 @@
   computed: {},
   data() {
     return {
+        unitList:[],
       keyword: "",
+      treeProps: {
+          label: 'name',
+          value: 'id',
+          children: 'children',
+        },
       checkList: [],
       testArr: [],
       testArr2: [
@@ -158,15 +263,75 @@
     this.getProductCategoryList()
   },
   mounted() {
-    this.countSums()
+    this.countSums();
+    this.getUnitInfo();
   },
   methods: {
-    checkListHandler(e) {
-      this.categoryListId = e
-      this.getData()
-    },
+      async getUnitInfo(){
+          const { code,data }=await getUnitInfo();
+          if(code===200){
+              this.unitList=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
+          }
+          if(string.length>6){
+              return string.substring(0,6);
+          }
+          return string
+      },
+    // 涓嬭浇
+    downHttpClick: _.debounce(function(){
+        let token = document.cookie.replace(
+            /(?:(?:^|.*;\s*)token\s*=\s*([^;]*).*$)|^.*$/,
+            "$1",
+        );
+        /*axios({
+            url: "/api-wms/v1/forms/downloadInventoryForms",
+            method: "post",
+            methodType:'down',
+            headers:{
+                Authorization:"Bearer " + token
+            },
+            data:{
+                page: this.pagerOptions.currPage,
+                pageSize: this.pagerOptions.pageSize,
+                keyword:this.keyword,
+            }
+        }).then(res=>{
+            console.log(decodeURIComponent(res.headers['content-disposition'].split(';')[1].split('filename=')[1]));
+        })*/
+      downloadInventoryForms({
+        page: this.pagerOptions.currPage,
+        pageSize: this.pagerOptions.pageSize,
+        keyword:this.keyword,
+        baseOperationType:1
+      }).then(res => {
+        if (res) {
+          FileSaver.saveAs(res, '搴撳瓨鎶ヨ〃.xlsx');
+          this.$message.success("涓嬭浇鎴愬姛锛�");
+        }
+      })
+    }, 1000),
+    checkListHandler(_, checkObj) {
+        this.categoryListId = checkObj.checkedKeys
+        this.getData()
+      },
     radioHandleChange(e) {
-      this.warehouseListName = e
+      this.warehouseListName = e.id
       this.getData()
     },
     // checkRadio(val){
@@ -209,9 +374,25 @@
           isShowColumn: true
           // date: true, // 鏄惁涓烘棩鏈熸牸寮�
         },
+          {
+              label: "浜у搧瑙勬牸",
+              prop: "productSpecs",
+              default: true,
+              width: 100,
+              isShowColumn: true
+              // date: true, // 鏄惁涓烘棩鏈熸牸寮�
+          },
+          {
+              label: "浜у搧鍨嬪彿",
+              prop: "productType",
+              default: true,
+              width: 100,
+              isShowColumn: true
+              // date: true, // 鏄惁涓烘棩鏈熸牸寮�
+          },
         {
           label: "浜у搧绫诲埆",
-          prop: "productType",
+          prop: "productCategory",
           default: true,
           isShowColumn: showcol.includes("浜у搧绫诲埆")
         },
@@ -230,7 +411,7 @@
           unit: "锟�",
           textAlign: "right"
         },
-        {
+        /*{
           label: "鍦ㄥ簱",
           prop: "amount",
           default: true,
@@ -261,7 +442,7 @@
           default: false,
           unit: "",
           textAlign: "right"
-        },
+        },*/
         {
           label: "棰勬祴",
           prop: "forecast",
@@ -269,12 +450,12 @@
           default: false,
           unit: ""
         },
-        {
+        /*{
           label: "鍗曚綅",
           prop: "unit",
           default: true,
           isShowColumn: true
-        }
+        }*/
       ]
       return tableColumn
     },
@@ -376,19 +557,54 @@
         categoryIds: this.categoryListId,
         page: this.pagerOptions.currPage,
         pageSize: this.pagerOptions.pageSize,
-        warehouseCode: this.warehouseListName
+        warehouseId: this.warehouseListName||0
       }
       this.getInventoryData(params)
     },
+    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 getProductCategoryList() {
       await getProductCategoryList({
         keyWord: "",
-        page: this.pagerOptions.currPage,
-        pageSize: this.pagerOptions.pageSize
+        page: 0,
+        pageSize: 0
       }).then((res) => {
         if (res.code === 200) {
-          this.categoryList = res.data
+          this.categoryList = res.data;
+            (res.data||[]).forEach((item,index1)=>{
+                item.isParent=res.data.some((cItem,index2)=>{
+                    if(index1!==index2){
+                        return item.parentId==cItem.id;
+                    }
+                });
+            });
+          this.categoryList = this.getTreeData(res.data)
         }
       })
     },
@@ -401,6 +617,8 @@
       }).then((res) => {
         if (res.code === 200) {
           this.warehouseList = res.data
+    
+          
         }
       })
     }
@@ -410,23 +628,35 @@
 
 <!-- Add "scoped" attribute to limit CSS to this component only -->
 <style lang="scss" scoped>
+    .radio-text{
+        display:inline-block;
+        width: 100%;
+        overflow: hidden;
+        white-space: nowrap;
+        text-overflow: ellipsis;
+    }
 .content_wrap {
   height: calc(100% - 0px);
   display: flex;
-  justify-content: space-between;
+  justify-content: start;
   .con_left {
-    width: 200px;
-    .el-checkbox-group {
-      width: 100%;
-      display: flex;
-      flex-direction: column;
-    }
-    .stash {
-      display: flex;
-      flex-direction: column;
-    }
+    height: calc(100% - 90px);
+      width: 15%;
+      overflow: hidden;
+      .con_left_div {
+        height: 50%;
+        border: 1px solid rgba(0, 0, 0, 0);
+        .stash,
+        .category {
+          height: calc(100% - 52px);
+          display: flex;
+          flex-direction: column;
+          overflow: auto;
+        }
+      }
   }
   .list-view {
+      width: 85%;
     flex: 1;
   }
 }
@@ -442,5 +672,15 @@
     word-wrap: break-word;
     white-space: pre-wrap !important;
   }
+  .el-tree {
+      background: no-repeat;
+    }
+  .el-tree-node > .el-tree-node__children {
+      overflow: visible !important;
+    }
+    .el-tree-node__content:hover,
+    .el-upload-list__item:hover {
+      width: 100%;
+    }
 }
 </style>

--
Gitblit v1.8.0