From 059dd10838d3055cac8853087305df41926fe5b1 Mon Sep 17 00:00:00 2001
From: yangfeng <wanwan926_4@163.com>
Date: 星期五, 22 三月 2024 10:41:05 +0800
Subject: [PATCH] 概述下调拨、出入库列表页改为上下结构

---
 src/views/overview/OverviewListView.vue |  251 +++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 217 insertions(+), 34 deletions(-)

diff --git a/src/views/overview/OverviewListView.vue b/src/views/overview/OverviewListView.vue
index 974ba53..36c3d35 100644
--- a/src/views/overview/OverviewListView.vue
+++ b/src/views/overview/OverviewListView.vue
@@ -14,27 +14,61 @@
         @delSelectClick="delSelectClick"
       />
     </div>
-    <div class="list-view">
-      <div class="table">
-        <TableCommonView ref="tableListRef" :table-list="tableList" @selTableCol="selTableCol">
-          <template slot="tableButton">
-            <el-table-column label="鎿嶄綔" width="100">
-              <template slot-scope="scope">
-                <el-button @click="tableRowClick(scope.row, '鏌ョ湅')" type="text" size="small">鏌ョ湅</el-button>
-                <el-button
-                  v-if="scope.row.status !== 4 && scope.row.status !== 5"
-                  @click="tableRowClick(scope.row, '缂栬緫')"
-                  type="text"
-                  size="small"
-                  >缂栬緫</el-button
-                >
-              </template>
-            </el-table-column>
-          </template>
-        </TableCommonView>
+    <div class="body">
+      <!-- <div class="body-card"> -->
+      <div class="content-top">
+        <div class="list-view">
+          <TableCommonView
+            ref="tableListRef"
+            :table-list="tableList"
+            @selTableCol="selTableCol"
+            @tableRowClick="tableRowClick"
+            :selectClassRow="selectRow"
+          >
+            <template slot="tableButton">
+              <el-table-column label="鎿嶄綔" width="100">
+                <template slot-scope="scope">
+                  <el-button @click="viewEditClick(scope.row, '鏌ョ湅')" type="text" size="small">鏌ョ湅</el-button>
+                  <el-button
+                    v-if="scope.row.status !== 4 && scope.row.status !== 5"
+                    @click="viewEditClick(scope.row, '缂栬緫')"
+                    type="text"
+                    size="small"
+                    >缂栬緫</el-button
+                  >
+                </template>
+              </el-table-column>
+            </template>
+          </TableCommonView>
+          <div class="btn-pager">
+            <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" />
+          </div>
+        </div>
       </div>
-      <div class="btn-pager">
-        <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" />
+      <div class="content-bottom">
+        <div class="bottom-tabs">
+          <div
+            class="tab-pane"
+            @click="getTab(0)"
+            :style="{
+              background: TabsIndex == 0 ? '#2a78fb' : '#F1F3F8',
+              color: TabsIndex == 0 ? '#fff' : '#666'
+            }"
+          >
+            浜у搧淇℃伅
+          </div>
+        </div>
+        <div class="list-view">
+          <TableCommonView :table-list="productTableList" @selTableCol="selBottomTableCol">
+            <!-- <template slot="tableButton">
+              <el-table-column label="鎿嶄綔" width="160" fixed="right">
+                <template slot-scope="scope">
+                  <el-button @click="viewClick(scope.row)" type="text" size="small">鏌ョ湅</el-button>
+                </template>
+              </el-table-column>
+            </template> -->
+          </TableCommonView>
+        </div>
       </div>
     </div>
     <!-- 鏂板缓/缂栬緫 -->
@@ -61,6 +95,15 @@
   mixins: [pageMixin],
   computed: {},
   data() {
+    // 浜у搧淇℃伅
+    const productColumn = [
+      { label: "浜у搧缂栧彿", prop: "id", default: true },
+      { label: "浜у搧鍚嶇О", prop: "productName" },
+      { label: "浜у搧瑙勬牸", prop: "specs" },
+      { label: "浜у搧鍨嬪彿", prop: "model" },
+      { label: "璁¢噺鍗曚綅", prop: "unit" },
+      { label: "鏁伴噺", prop: "amount" }
+    ]
     return {
       tableList: {},
       showcol: ["浠撳簱浣嶇疆", "璋冨嚭浣嶇疆", "璋冨叆浣嶇疆", "鑱旂郴浜�", "鏃ユ湡", "鏉ユ簮鍗曟嵁", "鐘舵��"],
@@ -83,7 +126,12 @@
       toLabel: "",
       addName: "",
       searchTaskMap: [],
-      numberLabel: "鍗曞彿"
+      numberLabel: "鍗曞彿",
+      TabsIndex: "0",
+      productTableList: {},
+      showBottomCol: ["浜у搧缂栧彿", "浜у搧鍚嶇О", "浜у搧瑙勬牸", "浜у搧鍨嬪彿", "璁¢噺鍗曚綅", "鏁伴噺"],
+      tableBottomColumn: productColumn,
+      selectRow: {}
     }
   },
   created() {
@@ -140,6 +188,7 @@
         }
       }
       this.tableList.allcol = allcol
+      this.setBottomList()
     },
     setTableColumn(showcol) {
       let tableColumn = [
@@ -253,8 +302,29 @@
           })
           this.tableList.tableInfomation = list || []
           this.pagerOptions.totalCount = res.total
+          if (res.total > 0) {
+            this.selectRow = this.tableList.tableInfomation.length > 0 ? this.tableList.tableInfomation[0] : {}
+            this.tableRowClick(this.selectRow)
+            this.bottomProductData(this.selectRow)
+          }
         }
       })
+    },
+    // bottom浜у搧淇℃伅鏁版嵁澶勭悊
+    bottomProductData(arr) {
+      const list = arr.details.map((item) => {
+        return {
+          ...item,
+          productName: item.product.name,
+          unit: item.product.unit
+        }
+      })
+      this.productTableList.tableInfomation = list
+    },
+    // top 琛岀偣鍑�
+    tableRowClick(row) {
+      this.selectRow = row
+      this.bottomProductData(this.selectRow)
     },
     // 鎼滅储
     getList(val) {
@@ -264,26 +334,26 @@
       this.getData()
     },
     // 鏌ョ湅 缂栬緫
-    tableRowClick(row, val) {
+    viewEditClick(row, val) {
       this.editConfig.visible = true
       this.editConfig.title = val
       this.editConfig.operationTypeId = this.params.id
       this.editConfig.code = this.params.code
-      row.details.map((item)=>{
-        item.fromLocationId=item.fromLocation.jointName
-        item.toLocationId=item.toLocation.jointName
+      row.details.map((item) => {
+        item.fromLocationId = item.fromLocation.jointName
+        item.toLocationId = item.toLocation.jointName
       })
-      row.location={
-        value:row.location.id||row.location.value,
-        label:row.location.jointName||row.location.label
+      row.location = {
+        value: row.location.id || row.location.value,
+        label: row.location.jointName || row.location.label
       }
-      row.toLocation={
-        value:row.toLocation.id||row.toLocation.value,
-        label:row.toLocation.jointName||row.toLocation.label
+      row.toLocation = {
+        value: row.toLocation.id || row.toLocation.value,
+        label: row.toLocation.jointName || row.toLocation.label
       }
-      row.locationID=row.location.jointName
-      row.locationId=row.location.value
-      
+      row.locationID = row.location.jointName
+      row.locationId = row.location.value
+
       // row.tolocationId=row.tolocation.value
       this.editConfig.infomation = { ...row }
     },
@@ -306,6 +376,47 @@
     delSelectClick() {
       this.params.status = 0
       this.getData()
+    },
+    // bottom 浜у搧淇℃伅
+    // bom 鍒楄〃
+    setBottomList() {
+      this.productTableList = {
+        selectIndex: true,
+        tableInfomation: [],
+        allcol: [],
+        showcol: this.showBottomCol,
+        tableColumn: this.setColumnVisible(this.showBottomCol, this.tableBottomColumn)
+      }
+      this.setTableList(this.productTableList)
+    },
+    setTableList(tableList) {
+      tableList.allcol = tableList.tableColumn.filter((ele) => !ele.default).map((ele) => ele.label)
+      // this.searchOptions = []
+      // for (let i = 0; i < tableList.tableColumn.length; i++) {
+      //   const label = tableList.tableColumn[i].label
+      //   const value = tableList.tableColumn[i].prop
+      //   this.searchOptions.push({ value: value, label: label })
+      // }
+    },
+    setColumnVisible(showCol, tableColumn) {
+      return tableColumn.map((ele) => {
+        return {
+          ...ele,
+          isShowColumn: showCol.includes(ele.label)
+        }
+      })
+    },
+    selBottomTableCol(val) {
+      this.showBottomCol = val
+      this.productTableList.tableColumn = this.setColumnVisible(val, this.tableBottomColumn)
+    },
+    getTab(tab) {
+      this.TabsIndex = tab
+      // if (this.TabsIndex == 0) {
+      //   // 浜у搧淇℃伅鍒楄〃
+      //   this.setBottomList()
+      //   this.getProductInventoryInfo(this.selectRow)
+      // }
     }
   }
 }
@@ -313,6 +424,69 @@
 
 <!-- Add "scoped" attribute to limit CSS to this component only -->
 <style lang="scss" scoped>
+.rightContent {
+  height: 100%;
+  overflow: hidden;
+  .body {
+    box-sizing: border-box;
+    padding: 10px 20px;
+    border-radius: 12px;
+    height: calc(100% - 70px);
+    .content-top {
+      background-color: #fff;
+      border-radius: 12px;
+      min-height: 70px;
+      height: 48%;
+      position: relative;
+      .list-view {
+        height: calc(100% - 50px);
+      }
+    }
+    .content-bottom {
+      .bottom-tabs {
+        height: 40px;
+        line-height: 40px;
+        background: #e6ecf2;
+        display: flex;
+        .tab-pane {
+          width: 100px;
+          margin-right: 20px;
+          font-size: 14px !important;
+          text-align: center;
+          cursor: pointer;
+          background: #2a78fb;
+          border-top-left-radius: 20px;
+          border-top-right-radius: 20px;
+        }
+      }
+      .lable-view {
+        background: #e6ecf2;
+        height: 40px;
+        line-height: 40px;
+        .name {
+          border-left: 4px solid #2a78fb;
+          padding-left: 10px;
+        }
+      }
+      background-color: #fff;
+      border-radius: 12px;
+      min-height: 70px;
+      height: calc(52% - 60px);
+      margin-top: 10px;
+      // padding: 10px 20px;
+      .list-view {
+        height: calc(100% - 10px);
+      }
+    }
+    .btn-pager {
+      display: flex;
+      margin-top: 0px;
+      .page {
+        margin-left: auto;
+      }
+    }
+  }
+}
 .label-fixed-element {
   background: #e6ecf2;
   position: fixed;
@@ -326,4 +500,13 @@
   margin-top: -60px;
   margin-left: -5px;
 }
+::v-deep {
+  .el-table__header-wrapper {
+    position: sticky;
+    width: 100%;
+    //  left:0px;
+    top: 0px;
+    z-index: 2000;
+  }
+}
 </style>

--
Gitblit v1.8.0