先上原型图,用element制作一个相似这样的表格,刚开始想的是用一个表格去实现,然而...想多了,最初用多个表格沉积实现,(注:只关注表格实现,表格中所有数据都是捏造的。)
1、客户根本信息表格
此表格次要做以下操作,1、删除生成表格的第一行空表格(为什么会有空行,还没明确,有晓得的搭档能够留言告知),2、合并客户名称值的列,3、将客户名称值字段靠左显示
<el-table :data="tableData" size="mini" class="mt10 tableBaseInfo" :header-row-class-name="hiddenHeaderRow" :span-method="arraySpanMethod1" :cell-class-name="setTextLeft" > <el-table-column label="客户根本信息" align="center"> <el-table-column prop="name" align="center"></el-table-column> <el-table-column prop="nameValue" align="center"></el-table-column> <el-table-column prop="month" align="center"></el-table-column> <el-table-column prop="monthValue" align="center"></el-table-column> </el-table-column> </el-table> export default { data() { return { tableData: [ { name: "客户名称", nameValue: "测试1", month: "", monthValue: "", }, { name: "客户户号", nameValue: "123456789", month: "结算月份", monthValue: "2", }, ], } }, methods: { // 暗藏表格空的行--这块的起因还没搞清楚,生成的表格会有一行是空的 hiddenHeaderRow({ rowIndex }) { if (rowIndex == 1) { //暗藏第二行 return "hiddenClass"; } }, // 合并客户根本信息表格客户名称单元格 arraySpanMethod1({ rowIndex, columnIndex }) { if (rowIndex == 0) { if (columnIndex != 0) { return [1, 3]; } } }, // 设置客户根本信息表格客户名称靠左显示 setTextLeft({ rowIndex, columnIndex }) { if (rowIndex == 0) { if (columnIndex != 0) { return "textAlignLeft"; } } }, } }
2、客户电量电费信息表格
这个表格和失常表格一样开发就行,只是最初一行是字体加粗,色彩有设置,在table上增加:cell-class-name="setTextWeight"属性,在办法中对setTextWeight进行设置即可,而后设置text-set款式即可。
// 设置客户电量电费信息中批发交易电费加粗显示setTextWeight({ rowIndex, columnIndex }) { if (rowIndex == 10) { return "text-set"; }},
3、客户偏差考核信息
操作:1、合并单元格,2、文案靠右显示
// 设置第一档和第二档正偏差电价、负偏差电价靠右显示setTextRight({ rowIndex, columnIndex }) { if (rowIndex == 1 || rowIndex == 4) { if (columnIndex != 0) { return "textAlignRight"; } }},// 设置第一档和第二档正偏差电价、负偏差电价合并单元格arraySpanMethod2({ rowIndex, columnIndex }) { // 示意行数,不蕴含表头行数 if (rowIndex == 1 || rowIndex == 4) { // 去掉第一列之后的所有列进行合并 if (columnIndex != 0) { return [1, 4]; } }},
4、客户其他费用
操作:1、合并单元格,2、文案靠左显示,3、文案色彩,宽度设置
// 合并客户其他费用中最初两行arraySpanMethod3({ rowIndex, columnIndex }) { if (rowIndex == 4 || rowIndex == 5) { return [1, 4]; }},// 设置客户其他费用中最初两行字体加粗setCustomTextLeft({ rowIndex, columnIndex }) { if (rowIndex == 4 || rowIndex == 5) { return "textCustomAlignLeft"; }},
大部分都是进行单元格合并和文案设置,element有提供对应的属性和办法。看看效果图,页面太长,分两张截图展现:
基本上和要求的表格差不多了,大家有好的实现计划能够告知我,我也学习下,下次就不必搞这么多table了,以下附上源码,
<el-table :data="tableData" size="mini" class="mt10 tableBaseInfo" :header-row-class-name="hiddenHeaderRow" :span-method="arraySpanMethod1" :cell-class-name="setTextLeft" > <el-table-column label="客户根本信息" align="center"> <el-table-column prop="name" align="center"></el-table-column> <el-table-column prop="nameValue" align="center"></el-table-column> <el-table-column prop="month" align="center"></el-table-column> <el-table-column prop="monthValue" align="center"></el-table-column> </el-table-column> </el-table> <el-table :data="tableData1" size="mini" class="no-header-only" :cell-class-name="setTextWeight" > <el-table-column label="客户电量电费信息" align="center"> <el-table-column prop="name" align="center" lable="" ></el-table-column> <el-table-column prop="sharpVal" align="center" label="尖峰" ></el-table-column> <el-table-column prop="peakVal" align="center" label="顶峰" ></el-table-column> <el-table-column prop="valleyVal" align="center" label="低谷" ></el-table-column> <el-table-column prop="fixedVal" align="center" label="一口价" ></el-table-column> <el-table-column prop="total" align="center" label="总计" ></el-table-column> </el-table-column> </el-table> <el-table size="mini" class="no-data"> <el-table-column label="客户偏差考核信息" align="center"> </el-table-column> </el-table> <el-table :data="tableData2" size="mini" class="firstAppraisal no-header-only" :span-method="arraySpanMethod2" :cell-class-name="setTextRight" > <el-table-column label="(第一档偏差考核)" align="center"> <el-table-column prop="name" align="center" lable="" ></el-table-column> <el-table-column prop="sharpVal" align="center" label="尖峰" ></el-table-column> <el-table-column prop="peakVal" align="center" label="顶峰" ></el-table-column> <el-table-column prop="valleyVal" align="center" label="低谷" ></el-table-column> <el-table-column prop="fixedVal" align="center" label="一口价" ></el-table-column> </el-table-column> </el-table> <el-table :data="tableData3" size="mini" class="firstAppraisal no-header-only" :span-method="arraySpanMethod2" :cell-class-name="setTextRight" > <el-table-column label="(第二档偏差考核)" align="center"> <el-table-column prop="name" align="center" lable="" ></el-table-column> <el-table-column prop="sharpVal" align="center" label="尖峰" ></el-table-column> <el-table-column prop="peakVal" align="center" label="顶峰" ></el-table-column> <el-table-column prop="valleyVal" align="center" label="低谷" ></el-table-column> <el-table-column prop="fixedVal" align="center" label="一口价" ></el-table-column> </el-table-column> </el-table> <el-table size="mini" class="no-header" :data="tableData4" border> <el-table-column label="" align="center" prop="positionVal"> <template slot-scope="scope"> <span class="text-set" >正偏差费用: {{ scope.row.positionVal }}</span > </template> </el-table-column> <el-table-column label="" align="center" prop="nagitiveVal"> <template slot-scope="scope"> <span class="text-set" >负偏差费用: {{ scope.row.nagitiveVal }}</span > </template> </el-table-column> <el-table-column label="" align="center" prop="totalVal"> <template slot-scope="scope"> <span class="text-set">共计: {{ scope.row.totalVal }}</span> </template> </el-table-column> </el-table> <el-table :data="tableData5" size="mini" class="tableBaseInfo no-header-only" :span-method="arraySpanMethod3" :header-cell-style="{ 'text-align': 'center' }" :header-row-class-name="hiddenHeaderRow" :cell-class-name="setCustomTextLeft" > <el-table-column label="客户其他费用(含月度服务费及超用服务费)"> <el-table-column prop="name1" align="center"></el-table-column> <el-table-column prop="value1" align="center"></el-table-column> <el-table-column prop="name2" align="center"></el-table-column> <el-table-column prop="value2" align="center"></el-table-column> </el-table-column> </el-table>
export default { data() { return { tableData: [ { name: "客户名称", nameValue: "xxxxxx", month: "", monthValue: "", }, { name: "客户户号", nameValue: "123456", month: "结算月份", monthValue: "2", }, ], tableData1: [ { name: "理论用电量", sharpVal: "1", peakVal: "1", valleyVal: "1", fixedVal: "1", total: "1", }, { name: "年度交易电量", sharpVal: "2", peakVal: "2", valleyVal: "2", fixedVal: "2", total: "2", }, { name: "年度交易电价", sharpVal: "2", peakVal: "2", valleyVal: "2", fixedVal: "2", total: "2", }, { name: "年度交易电费", sharpVal: "2", peakVal: "2", valleyVal: "2", fixedVal: "2", total: "2", }, { name: "月度交易电量", sharpVal: "2", peakVal: "2", valleyVal: "2", fixedVal: "2", total: "2", }, { name: "月度交易电价", sharpVal: "2", peakVal: "2", valleyVal: "2", fixedVal: "2", total: "2", }, { name: "月度交易电费", sharpVal: "2", peakVal: "2", valleyVal: "2", fixedVal: "2", total: "2", }, { name: "超用电量", sharpVal: "2", peakVal: "2", valleyVal: "2", fixedVal: "2", total: "2", }, { name: "超用电价", sharpVal: "2", peakVal: "2", valleyVal: "2", fixedVal: "2", total: "2", }, { name: "超用电费", sharpVal: "2", peakVal: "2", valleyVal: "2", fixedVal: "2", total: "2", }, { name: "批发交易电费", sharpVal: "3", peakVal: "3", valleyVal: "3", fixedVal: "3", total: "3", }, ], tableData2: [ { name: "正偏差电量", sharpVal: "1", peakVal: "1", valleyVal: "1", fixedVal: "1", }, { name: "正偏差电价", sharpVal: "2 元/千瓦时", peakVal: "", valleyVal: "", fixedVal: "", }, { name: "正偏差电费", sharpVal: "3", peakVal: "3", valleyVal: "3", fixedVal: "3", }, { name: "负偏差电量", sharpVal: "1", peakVal: "1", valleyVal: "1", fixedVal: "1", }, { name: "负偏差电价", sharpVal: "2 元/千瓦时", peakVal: "", valleyVal: "", fixedVal: "", }, { name: "负偏差电费", sharpVal: "3", peakVal: "3", valleyVal: "3", fixedVal: "3", }, ], tableData3: [ { name: "正偏差电量", sharpVal: "1", peakVal: "1", valleyVal: "1", fixedVal: "1", }, { name: "正偏差电价", sharpVal: "2 元/千瓦时", peakVal: "", valleyVal: "", fixedVal: "", }, { name: "正偏差电费", sharpVal: "3", peakVal: "3", valleyVal: "3", fixedVal: "3", }, { name: "负偏差电量", sharpVal: "1", peakVal: "1", valleyVal: "1", fixedVal: "1", }, { name: "负偏差电价", sharpVal: "2 元/千瓦时", peakVal: "", valleyVal: "", fixedVal: "", }, { name: "负偏差电费", sharpVal: "3", peakVal: "3", valleyVal: "3", fixedVal: "3", }, ], tableData4: [ { positionVal: "200.03", nagitiveVal: "300.05", totalVal: "500.09", }, ], tableData5: [ { name1: "月度服务费价格(分)", value1: "0.5", name2: "超用服务费价格(分)", value2: "0.5", }, { name1: "月度服务费电量", value1: "0", name2: "超用服务费电量", value2: "12345", }, { name1: "月度服务费电费", value1: "0.5", name2: "超用服务费电费", value2: "27.95", }, { name1: "损益电费", value1: "0.5", name2: "", value2: "", }, { name1: "客户其他费用共计:54.05", value1: "", name2: "", value2: "", }, { name1: "客户总电费共计:38540.11", value1: "", name2: "", value2: "", }, ], }; }, methods: { // 暗藏表格空的行 hiddenHeaderRow({ rowIndex }) { if (rowIndex == 1) { //暗藏第二行 return "hiddenClass"; } }, // 合并客户根本信息表格客户名称单元格 arraySpanMethod1({ rowIndex, columnIndex }) { if (rowIndex == 0) { if (columnIndex != 0) { return [1, 3]; } } }, // 设置客户根本信息表格客户名称靠左显示 setTextLeft({ rowIndex, columnIndex }) { if (rowIndex == 0) { if (columnIndex != 0) { return "textAlignLeft"; } } }, // 设置客户电量电费信息中批发交易电费加粗显示 setTextWeight({ rowIndex, columnIndex }) { if (rowIndex == 10) { return "text-set"; } }, // 设置第一档和第二档正偏差电价、负偏差电价靠右显示 setTextRight({ rowIndex, columnIndex }) { if (rowIndex == 1 || rowIndex == 4) { if (columnIndex != 0) { return "textAlignRight"; } } }, // 设置第一档和第二档正偏差电价、负偏差电价合并单元格 arraySpanMethod2({ rowIndex, columnIndex }) { // 示意行数,不蕴含表头行数 if (rowIndex == 1 || rowIndex == 4) { // 去掉第一列之后的所有列进行合并 if (columnIndex != 0) { return [1, 4]; } } }, // 合并客户其他费用中最初两行 arraySpanMethod3({ rowIndex, columnIndex }) { if (rowIndex == 4 || rowIndex == 5) { return [1, 4]; } }, // 设置客户其他费用中最初两行字体加粗 setCustomTextLeft({ rowIndex, columnIndex }) { if (rowIndex == 4 || rowIndex == 5) { return "textCustomAlignLeft"; } }, },}
<style lang="scss" scoped>::v-deep .tableBaseInfo { .hiddenClass { display: none !important; } .textAlignLeft { text-align: left !important; } .textCustomAlignLeft { text-align: left !important; font-weight: 700; color: #000; }}::v-deep .no-data .el-table__body-wrapper { display: none;}::v-deep .firstAppraisal .textAlignRight { text-align: right !important;}::v-deep .no-header.el-table--border { border-top: none !important;}::v-deep .no-header .el-table__header-wrapper { display: none;}::v-deep .no-header-only.el-table--border { border-top: none !important;}::v-deep .text-set { color: #000; font-weight: 700;}::v-deep .el-table::before { height: 0;}</style>