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