From fb20919d312b7f3bf81805eda670f42fa2d18e39 Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期三, 28 二月 2024 14:38:41 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/web/crm-web

---
 src/components/makepager/TableCommonView.vue |  120 ++++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 80 insertions(+), 40 deletions(-)

diff --git a/src/components/makepager/TableCommonView.vue b/src/components/makepager/TableCommonView.vue
index e3f0f26..50ac390 100644
--- a/src/components/makepager/TableCommonView.vue
+++ b/src/components/makepager/TableCommonView.vue
@@ -1,21 +1,26 @@
+<!-- eslint-disable vue/no-use-v-if-with-v-for -->
 <template>
-  <div class="table-view">
+  <div class="table-view" v-loading="loading">
     <el-table
       ref="table"
       border
       :data="tableList.tableInfomation"
       tooltip-effect="dark"
       :height="'calc(100% - 0px)'"
+      :max-height="tableList.maxHeight"
       style="width: 100%"
       :lazy="tableList.lazy"
       :show-summary="showSummary.show"
       :summary-method="getSummaries"
       :span-method="arraySpanMethod"
       @selection-change="handleSelectionChange"
-      :header-cell-style="{ background: '#f1f3f8', color: '#000009' , 'font-size': '12px','font-family':'PingFangSC'}"
+      :header-cell-style="{ background: '#f1f3f8', color: '#000009', 'font-size': '12px', 'font-family': 'PingFangSC' }"
       size="mini"
+      @row-click="tableRowClick"
+      :row-class-name="tableRowClassName"
     >
-      <el-table-column v-if="selectBox" type="selection" width="40"> </el-table-column>
+      <el-table-column v-if="selectBox" type="selection" width="40" :selectable="selectable"> </el-table-column>
+      <el-table-column v-if="tableList.selectIndex" type="index" label="搴忓彿" width="50"></el-table-column>
       <el-table-column
         v-for="(item, i) in tableList.tableColumn"
         :key="i"
@@ -78,7 +83,7 @@
           <div v-else-if="item.isProductName" class="product-view">
             <ul v-if="scope.row.products && scope.row.products.length > 0">
               <li v-for="(item, index) in scope.row.products" :key="index">
-                <div :class="scope.row.products.length === 1 ? 'name-view no-bottom' : 'name-view'">
+                <div class="name-view">
                   {{ item.name }}
                 </div>
               </li>
@@ -88,7 +93,7 @@
           <div v-else-if="item.isProductAmount" class="product-view">
             <ul v-if="scope.row.products && scope.row.products.length > 0">
               <li v-for="(item, index) in scope.row.products" :key="index">
-                <div :class="scope.row.products.length === 1 ? 'name-view no-bottom' : 'name-view'">
+                <div class="name-view">
                   {{ item.amount }}
                 </div>
               </li>
@@ -98,7 +103,7 @@
           <div v-else-if="item.isProductPrice" class="product-view">
             <ul v-if="scope.row.products && scope.row.products.length > 0">
               <li v-for="(item, index) in scope.row.products" :key="index">
-                <div :class="scope.row.products.length === 1 ? 'name-view no-bottom' : 'name-view'">
+                <div class="name-view">
                   {{ item.price }}
                 </div>
               </li>
@@ -108,12 +113,18 @@
           <div v-else-if="item.isProductTotal" class="product-view">
             <ul v-if="scope.row.products && scope.row.products.length > 0">
               <li v-for="(item, index) in scope.row.products" :key="index">
-                <div :class="scope.row.products.length === 1 ? 'name-view no-bottom' : 'name-view'">
+                <div class="name-view">
                   {{ item.total }}
                 </div>
               </li>
             </ul>
             <div v-else class="no-product">{{ "--" }}</div>
+          </div>
+          <!-- 璋冪敤鏂规硶鏄剧ず鏂囧瓧 -->
+          <div v-else-if="item.isCallMethod">
+            <span :class="item.isClass ? item.getClassName(scope.row[item.prop], scope.row) : ''">{{
+              item.getCallMethod(scope.row[item.prop], scope.row)
+            }}</span>
           </div>
           <span v-else>{{ scope.row[item.prop] ? scope.row[item.prop] : "--" }}</span>
         </template>
@@ -127,15 +138,8 @@
     <div class="overSpread1" v-show="iscolopen" @click="onMaskClick"></div>
     <div class="styleBtn">
       <i @click="checkCol()" class="label">...</i>
-      <el-checkbox-group
-          v-model="showcol"
-          v-show="iscolopen"
-          class="checkbox-group"
-          @change="selectCheckBoxList"
-      >
-        <el-checkbox v-for="item in tableList.allcol" :label="item" :key="item"
-        >{{ item }}
-        </el-checkbox>
+      <el-checkbox-group v-model="showcol" v-show="iscolopen" class="checkbox-group" @change="selectCheckBoxList">
+        <el-checkbox v-for="item in tableList.allcol" :label="item" :key="item">{{ item }} </el-checkbox>
       </el-checkbox-group>
     </div>
   </div>
@@ -147,13 +151,13 @@
   props: {
     selectBox: {
       type: Boolean,
-      default: true
+      default: false
     },
     tableList: {
       type: Object,
       default: () => {
         return {
-          selectBox: true,
+          selectIndex: true,
           tableInfomation: [], // 鎺ュ彛杩斿洖鏁版嵁
           showcol: [],
           allcol: [],
@@ -173,32 +177,48 @@
           mergeNumber: 1
         }
       }
+    },
+    // 閫変腑鐨勬牱寮�
+    selectClassRow: {
+      type: Object,
+      default: () => {
+        return {}
+      }
+    },
+    loading: {
+      type: Boolean,
+      default: false
+    },
+    selectBoxList: {
+      type: Array,
+      default: () => []
     }
   },
+
   data() {
     return {
       iscolopen: false,
-      showcol:[]
+      showcol: []
     }
   },
   computed: {},
   watch: {
-    'tableList.showcol':{
-      handler(newVal){
-        this.showcol=newVal
+    "tableList.showcol": {
+      handler(newVal) {
+        this.showcol = newVal
       },
-      immediate:true
+      immediate: true
     }
   },
   methods: {
     onMaskClick() {
-      this.iscolopen = false;
+      this.iscolopen = false
     },
     checkCol() {
-      this.iscolopen = !this.iscolopen;
+      this.iscolopen = !this.iscolopen
     },
     selectCheckBoxList(val) {
-      this.$emit("selTableCol", val);
+      this.$emit("selTableCol", val)
     },
     handleReserve(row) {
       return row._id ? row._id : row.id
@@ -218,11 +238,11 @@
             for (let i = 0; i < this.showSummary.mergeNumber; i++) {
               cell[i] && cell[i].style && (cell[i].style.display = "none")
             }
-            if (cell[this.showSummary.mergeNumber]){
-              if (cell[this.showSummary.mergeNumber].classList){
+            if (cell[this.showSummary.mergeNumber]) {
+              if (cell[this.showSummary.mergeNumber].classList) {
                 cell[this.showSummary.mergeNumber].classList.remove("is-left")
               }
-              if (cell[this.showSummary.mergeNumber].colSpan){
+              if (cell[this.showSummary.mergeNumber].colSpan) {
                 cell[this.showSummary.mergeNumber].colSpan = this.showSummary.mergeNumber.toString()
               }
             }
@@ -363,6 +383,27 @@
     // 鍏叡锛堥攢鍞満浼氥�佹姤浠峰崟銆侀攢鍞�诲崟銆侀攢鍞瓙鍗曘�傘�傘�傦級
     selCommonClick(row) {
       this.$emit("selCommonClick", row)
+    },
+    // 琛岀偣鍑�
+    tableRowClick(row, column, event) {
+      this.$emit("tableRowClick", row, column, event)
+    },
+    // 鍗曢�夎鐩稿叧
+    tableRowClassName({ row }) {
+      if (Object.keys(this.selectClassRow).length > 0) {
+        if (row.id == this.selectClassRow.id) {
+          return "onSelect"
+        }
+      }
+      this.$emit("tableRowClassName", row)
+    },
+    selectable(row) {
+      let list = this.selectBoxList.map((item) => item.number)
+      if (list.findIndex((v) => v == row.number) == -1) {
+        return true
+      } else {
+        return false
+      }
     }
   }
 }
@@ -389,8 +430,8 @@
     margin-left: -10px;
     margin-right: -11px;
     li {
-      //height: 57px;
-      //line-height: 57px;
+      height: 22px;
+      line-height: 22px;
       .name-view {
         padding-left: 10px;
         border-bottom: 1px solid #ebeef5;
@@ -399,15 +440,14 @@
         border-bottom: 0;
       }
     }
-    .no-product {
-      //height: 57px;
-      //line-height: 57px;
-    }
-    li:last-child .name-view{
+    li:last-child .name-view {
       border-bottom: none;
     }
+    .no-product {
+      height: 22px;
+      line-height: 22px;
+    }
   }
-
 }
 ::v-deep {
   .el-table__footer-wrapper {
@@ -435,8 +475,8 @@
   text-align: center;
 }
 
-::v-deep{
-  .el-table .cell .el-button--text.el-button--small{
+::v-deep {
+  .el-table .cell .el-button--text.el-button--small {
     padding: 4px 0;
   }
 }
@@ -477,7 +517,7 @@
   }
   .checkbox-group {
     width: 160px;
-    height: 330px;
+    height: 300px;
     overflow: auto;
     display: flex;
     flex-direction: column;

--
Gitblit v1.8.0