From 8191562f28c525373941af4638c30c8f8e74c245 Mon Sep 17 00:00:00 2001
From: yangfeng <wanwan926_4@163.com>
Date: 星期三, 16 八月 2023 12:12:10 +0800
Subject: [PATCH] bug修复
---
src/components/makepager/TableCommonView.vue | 232 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 217 insertions(+), 15 deletions(-)
diff --git a/src/components/makepager/TableCommonView.vue b/src/components/makepager/TableCommonView.vue
index 904f826..ae1083e 100644
--- a/src/components/makepager/TableCommonView.vue
+++ b/src/components/makepager/TableCommonView.vue
@@ -1,5 +1,5 @@
<template>
- <div class="page-view">
+ <div class="table-view">
<el-table
ref="table"
border
@@ -7,10 +7,13 @@
tooltip-effect="dark"
style="width: 100%"
:lazy="tableList.lazy"
+ :show-summary="showSummary.show"
+ :summary-method="getSummaries"
+ :span-method="arraySpanMethod"
@selection-change="handleSelectionChange"
:header-cell-style="{ background: '#ECF4FF', color: '#666' }"
>
- <el-table-column type="selection" width="55"> </el-table-column>
+ <el-table-column v-if="selectBox" type="selection" width="40"> </el-table-column>
<el-table-column
v-for="(item, i) in tableList.tableColumn"
:key="i"
@@ -18,22 +21,80 @@
:label="item.label"
:width="item.width"
:min-width="item.min"
- sortable
+ show-overflow-tooltip
+ :sortable="item.sortable"
>
+ <template slot-scope="scope">
+ <span v-if="item.price">{{ "锟�" + number_format(scope.row[item.prop], 2, ".", ",") }}</span>
+ <div v-else-if="item.status" :class="scope.row.status">{{ scope.row[item.prop] }}</div>
+ <span v-else-if="item.isTime">{{
+ dateFormat("YYYY-mm-dd HH:MM:SS", scope.row[item.prop]) === "1900-01-01 00:06:26"
+ ? "--"
+ : dateFormat("YYYY-mm-dd HH:MM:SS", scope.row[item.prop])
+ }}</span>
+ <span v-else-if="item.isClick && scope.row[item.prop]" class="sel-name" @click="selNameClick(scope.row)">{{
+ scope.row[item.prop]
+ }}</span>
+ <span
+ v-else-if="item.isSalesLeadClick && scope.row[item.prop]"
+ class="sel-name"
+ @click="selSalesLeadClick(scope.row)"
+ >{{ scope.row[item.prop] }}</span
+ >
+ <span
+ v-else-if="item.isClientClick && scope.row[item.prop]"
+ class="sel-name"
+ @click="selClientClick(scope.row)"
+ >{{ scope.row[item.prop] ? scope.row[item.prop] : "--" }}</span
+ >
+ <span
+ v-else-if="item.isContactClick && scope.row[item.prop]"
+ class="sel-name"
+ @click="selContactsClick(scope.row)"
+ >{{ scope.row[item.prop] }}</span
+ >
+ <span
+ v-else-if="item.isMasterClick && scope.row[item.prop]"
+ class="sel-name"
+ @click="selMasterClick(scope.row)"
+ >{{ scope.row[item.prop] }}</span
+ >
+ <span
+ v-else-if="item.isServiceOrder && scope.row[item.prop]"
+ class="sel-name"
+ @click="selServiceOrderClick(scope.row)"
+ >{{ scope.row[item.prop] }}</span
+ >
+ <span
+ v-else-if="item.isCommonClick && scope.row[item.prop]"
+ class="sel-name"
+ @click="selCommonClick(scope.row)"
+ >{{ scope.row[item.prop] }}</span
+ >
+ <span v-else>{{ scope.row[item.prop] ? scope.row[item.prop] : "--" }}</span>
+ </template>
</el-table-column>
<slot name="tableButton" />
+ <div slot="empty">
+ <el-empty description="鏆傛棤鏁版嵁"></el-empty>
+ </div>
</el-table>
</div>
</template>
<script>
export default {
- name: "PagerView",
+ name: "TableCommonView",
props: {
+ selectBox: {
+ type: Boolean,
+ default: true
+ },
tableList: {
type: Object,
default: () => {
return {
+ selectBox: true,
tableInfomation: [], // 鎺ュ彛杩斿洖鏁版嵁
tableColumn: [
// table琛ㄥ崟
@@ -41,25 +102,149 @@
]
}
}
+ },
+ showSummary: {
+ type: Object,
+ default: () => {
+ return {
+ show: false,
+ sumProp: [],
+ mergeNumber: 1
+ }
+ }
}
},
data() {
return {}
},
- computed: {
- maxHeight() {
- if (this.tableList.height) {
- return `calc(100vh - ${this.tableList.height})`
- }
- return undefined
- }
- },
+ computed: {},
methods: {
handleReserve(row) {
return row._id ? row._id : row.id
},
handleSelectionChange(val) {
this.$emit("getSelectArray", val)
+ },
+ // 琛屽悎骞�
+ arraySpanMethod() {
+ if (this.showSummary.show) {
+ this.$nextTick(() => {
+ if (this.$refs.table.$el) {
+ var current = this.$refs.table.$el
+ .querySelector(".el-table__footer-wrapper")
+ .querySelector(".el-table__footer")
+ var cell = current.rows[0].cells
+ for (let i = 0; i < this.showSummary.mergeNumber; i++) {
+ cell[i].style.display = "none"
+ }
+ cell[this.showSummary.mergeNumber].classList.remove("is-left")
+ cell[this.showSummary.mergeNumber].colSpan = this.showSummary.mergeNumber.toString()
+ }
+ })
+ }
+ },
+ // 閲戦鍚堣
+ getSummaries(param) {
+ if (this.showSummary.show) {
+ const { columns, data } = param
+ const sums = []
+ columns.forEach((column, index) => {
+ if (index === this.showSummary.mergeNumber) {
+ sums[index] = "鏈〉鎬昏"
+ }
+ const values = data.map((item) => Number(item[column.property]))
+ if (this.showSummary.sumProp.includes(column.property)) {
+ sums[index + 1] = values.reduce((prev, curr) => {
+ const value = Number(curr)
+ if (!isNaN(value)) {
+ return prev + curr
+ } else {
+ return prev
+ }
+ }, 0)
+ sums[index + 1]
+ }
+ })
+ // console.log(sums)
+ return sums
+ }
+ },
+ // 鏁板瓧鎹㈣涓洪噾棰濇樉绀烘牸寮�
+ number_format(number, decimals, dec_point, thousands_sep) {
+ decimals = 2 //杩欓噷榛樿璁剧疆淇濈暀涓や綅灏忔暟锛屼篃鍙互娉ㄩ噴杩欏彞閲囩敤浼犲叆鐨勫弬鏁�
+ /*
+ * 鍙傛暟璇存槑锛�
+ * number锛氳鏍煎紡鍖栫殑鏁板瓧
+ * decimals锛氫繚鐣欏嚑浣嶅皬鏁�
+ * dec_point锛氬皬鏁扮偣绗﹀彿
+ * thousands_sep锛氬崈鍒嗕綅绗﹀彿
+ * */
+ number = (number + "").replace(/[^0-9+-Ee.]/g, "")
+ var n = !isFinite(+number) ? 0 : +number,
+ prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
+ sep = typeof thousands_sep === "undefined" ? "," : thousands_sep,
+ dec = typeof dec_point === "undefined" ? "." : dec_point
+ var s = n.toString().split(".")
+ var re = /(-?\d+)(\d{3})/
+ while (re.test(s[0])) {
+ s[0] = s[0].replace(re, "$1" + sep + "$2")
+ }
+ if ((s[1] || "").length < prec) {
+ s[1] = s[1] || ""
+ s[1] += new Array(prec - s[1].length + 1).join("0")
+ } else {
+ s[1] = s[1].substring(0, prec) //灏忔暟鐐逛綅鏁拌秴鍑洪暱搴︽椂鎴彇鍓嶉潰鐨勪綅鏁�
+ }
+ return s.join(dec)
+ },
+ // 鏃堕棿鏄剧ず
+ dateFormat(fmt, date) {
+ let ret = ""
+ date = new Date(date)
+ const opt = {
+ "Y+": date.getFullYear().toString(), // 骞�
+ "m+": (date.getMonth() + 1).toString(), // 鏈�
+ "d+": date.getDate().toString(), // 鏃�
+ "H+": date.getHours().toString(), // 鏃�
+ "M+": date.getMinutes().toString(), // 鍒�
+ "S+": date.getSeconds().toString() // 绉�
+ // 鏈夊叾浠栨牸寮忓寲瀛楃闇�姹傚彲浠ョ户缁坊鍔狅紝蹇呴』杞寲鎴愬瓧绗︿覆
+ }
+ for (let k in opt) {
+ ret = new RegExp("(" + k + ")").exec(fmt)
+ if (ret) {
+ fmt = fmt.replace(ret[1], ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, "0"))
+ }
+ }
+ return fmt
+ },
+ // 鏂板缓缂栬緫閫夋嫨寮圭獥
+ selNameClick(row) {
+ this.$emit("selCommonClick", row)
+ },
+ // 閿�鍞嚎绱�
+ selSalesLeadClick(row) {
+ this.$emit("selSalesLeadClick", row)
+ },
+ // 瀹㈡埛鍚嶇О
+ selClientClick(row) {
+ this.$emit("selClientClick", row)
+ },
+ // 鑱旂郴浜哄鍚�
+ selContactsClick(row) {
+ this.$emit("selContactsClick", row)
+ },
+ // 閿�鍞�诲崟
+ selMasterClick(row) {
+ this.$emit("selMasterClick", row)
+ },
+ // 瀹㈡埛鏈嶅姟鍗�
+ selServiceOrderClick(row) {
+ this.$emit("selServiceOrderClick", row)
+ },
+ // 鍏叡锛堥攢鍞満浼氥�佹姤浠峰崟銆侀攢鍞�诲崟銆侀攢鍞瓙鍗曘�傘�傘�傦級
+ selCommonClick(row) {
+ this.$emit("selCommonClick", row)
}
}
}
@@ -67,9 +252,26 @@
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style lang="scss" scoped>
-.page-view {
- margin-top: 20px;
+.table-view {
+ // margin-top: 20px;
margin-right: 10px;
- margin-bottom: 40px;
+ // margin-bottom: 40px;
+ .blue {
+ width: 70px;
+ text-align: center;
+ color: #fff;
+ background-color: $color-primary;
+ border-radius: 4px;
+ }
+ .sel-name {
+ color: $color-primary;
+ cursor: pointer;
+ }
+}
+::v-deep {
+ .el-table__footer-wrapper tbody td.el-table__cell {
+ background-color: #fff;
+ text-align: right;
+ }
}
</style>
--
Gitblit v1.8.0