Files
shujuwang/src/components/chartsCont/ChartsCont.vue
2019-11-18 13:37:59 +08:00

724 lines
27 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div class="chartsCont">
<Echarts
v-if="indStatic!==0"
:echartsDatarts="echartsDatarts"
@rowColInd="rowColInd"
:echartsDatartsPie="echartsDatartsPie"
></Echarts>
<el-table :data="tableData" style="width: 100%" height="360" ref="table">
<!-- <el-table-column fixed prop="date" label="日期" width="150" sortable></el-table-column>
<el-table-column prop="name" label="姓名" width="120" sortable></el-table-column>
<el-table-column prop="province" label="省份" width="120" sortable></el-table-column>
<el-table-column prop="city" label="市区" width="120" sortable></el-table-column>
<el-table-column prop="address" label="地址" width="300" sortable></el-table-column>-->
<el-table-column
:prop="item.labelId"
:label="item.label"
:fixed="index===0?true:false"
width="180"
sortable
v-for="(item,index) in tableLine"
:key="index"
>
<template slot-scope="scope" slot="header">
<img
:src="indexToExplain"
alt
v-if="index!==0&&!transState&&areaDataState!=='area'&&!computedLineSty(index)"
class="slotExplain"
:style="{'margin':indStatic===0?'0':''}"
@click="indexExplain(scope.column.label)"
/>
<input
v-if="index!==0&&indStatic!==0"
type="checkbox"
style="cursor: pointer;"
@click.stop="listInput(index)"
:style="{'margin':'0 0.45rem'}"
:checked="listInputVal.indexOf(index)!==-1"
ref="listInputSelect"
/>
<span :style="{'color':computedLineSty(index)?'red':''}">{{scope.column.label}}</span>
</template>
<template slot-scope="scope">
<input
v-if="index===0&&indStatic!==0"
type="checkbox"
style="cursor: pointer;"
@click.stop="lineInput(scope.$index)"
:checked="lineInputVal.indexOf(scope.$index)!==-1"
ref="lineInputSelect"
/>
<img
:src="indexToExplain"
alt
v-if="index===0&&transState&&areaDataState!=='area'&&!computedListSty(scope.$index)"
class="slotExplain"
:style="{'margin':indStatic===0?'0':''}"
@click="indexExplain(scope.row['table_line0'])"
/>
<span
:style="{'color':(computedListSty(scope.$index)||computedLineSty(index))?'red':''}"
>{{scope.row['table_line'+index]}}</span>
</template>
</el-table-column>
</el-table>
<!-- 列表 表说明-->
<div class="tableExplain">{{transBefore.tableExplain}}</div>
<!-- 指标弹窗 -->
</div>
</template>
<script>
// 引入数据计算js用于机选渲染的数据
import ComputedData from '../../assets/js/computeddata'
// 引入echarts 组件
import Echarts from '../echarts/echarts'
export default {
name: 'chartsCont',
components: {
Echarts: Echarts
},
props: {
indStatic: {
type: Number,
required: true
},
// 图表状态管理器
chartsStatusMegger: {
type: Object,
required: true
},
// 渲染图表所需数据
defaultDataRight: {
type: Object,
required: false
}
},
data () {
return {
// 指标解释
indexToExplain: require('../../../static/chatCont/zhibiaojieshi.png'),
tableData: [
{
table_line1: '(1,1)5456456456456456456454564564',
table_line2: '(1,2)',
table_line3: '(1,3)',
table_line4: '(1,4)',
table_line5: '(1,5)',
table_line6: '(1,6)',
table_line7: '(1,7)',
table_line8: '(1,8)',
table_line9: '(1,9)',
table_line10: '(1,10)',
table_line11: '(1,11)',
table_line12: '(1,12)',
table_line13: '(1,13)',
table_line14: '(1,14)',
table_line15: '(1,15)',
table_line16: '(1,16)'
},
{
table_line1: '(1,1)546454',
table_line2: '(1,2)',
table_line3: '(1,3)',
table_line4: '(1,4)',
table_line5: '(1,5)',
table_line6: '(1,6)',
table_line7: '(1,7)',
table_line8: '(1,8)',
table_line9: '(1,9)',
table_line10: '(1,10)',
table_line11: '(1,11)',
table_line12: '(1,12)',
table_line13: '(1,13)',
table_line14: '(1,14)',
table_line15: '(1,15)',
table_line16: '(1,16)'
}
],
tableDataS: [
{
date: '2016-05-03',
name: '王小名',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1518 弄',
zip: 200333
}, {
date: '2016-05-02',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1518 弄',
zip: 200333
}, {
date: '2016-05-04',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1518 弄',
zip: 200333
}, {
date: '2016-05-01',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1518 弄',
zip: 200333
}, {
date: '2016-05-08',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1518 弄',
zip: 200333
}, {
date: '2016-05-06',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1518 弄',
zip: 200333
}, {
date: '2016-05-07',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1518 弄',
zip: 200333
}
],
// 列数据labellabelId
tableLine: [
{
labelId: 'table_line1',
label: '指标'
},
{
labelId: 'table_line2',
label: '2019年10月1日'
},
{
labelId: 'table_line3',
label: '2019年10月2日'
},
{
labelId: 'table_line4',
label: '2019年10月3日'
},
{
labelId: 'table_line5',
label: '2019年10月5日'
},
{
labelId: 'table_line6',
label: '2019年10月5日'
},
{
labelId: 'table_line7',
label: '2019年10月6日'
},
{
labelId: 'table_line8',
label: '2019年10月7日'
},
{
labelId: 'table_line9',
label: '2019年10月8日'
},
{
labelId: 'table_line10',
label: '2019年10月9日'
},
{
labelId: 'table_line11',
label: '2019年10月10日'
},
{
labelId: 'table_line12',
label: '2019年10月11日'
},
{
labelId: 'table_line13',
label: '2019年10月12日'
},
{
labelId: 'table_line14',
label: '2019年10月13日'
},
{
labelId: 'table_line15',
label: '2019年10月14日'
},
{
labelId: 'table_line16',
label: '2019年10月15日'
}
],
// 转置状态(true时间在表头上false指标名称或者地区名称在表头上)
transState: false,
// 当前数据状态monthly月度数据quarter季度数据year年度数据area地区数据
areaDataState: this.$route.query.type,
// 当前数据统计数据中的哪一种text:('无','SUM求和','x平均数','MAX最大值','MIN最小值','MD中位数','MO众数','S²方差','S标准差'),stateType:('line','list')
nowDataTJ: { text: '无', stateType: 'line' },
// 转置前总数据
transBefore: {
// 数据表说明
tableExplain: '注: 按照统计制度要求我国CPI每五年进行一次基期轮换2016年1月开始使用2015年作为新一轮的对比基期前三轮基期分别为2000年、2005年和2010年。CPI基期轮换是一项国际惯例目的是使CPI调查所涉及到的商品和服务更具有代表性更及时准确反映居民消费结构的新变化和物价的实际变动。 参考联合国制定的《按目的划分的个人消费分类》COICOP和国家统计局发布的《居民消费支出分类2013我们对CPI调查目录进行了调整新基期调查目录和规格品与国际标准更为接近一些新产品新服务纳入其中能进一步反映居民消费和经济结构的变化。与上一轮基期相比本轮基期的CPI调查目录有几个主要变化。一是按照《居民消费支出分类2013原来的“食品”、“烟酒”合并为现在的“食品烟酒”原来的“医疗保健和个人用品”被拆分到现在的“生活用品及服务”、“医疗保健”和“其他用品和服务”中原来的“娱乐教育文化用品及服务”被拆分到现在的“教育文化和娱乐”和“其他用品和服务”中原来的“家庭设备用品及维修服务”被拆分到现在的“生活用品及服务”和“其他用品及服务”中。二是食品的指标内涵发生了变化旧分类中的“食品”为大类包括粮食、肉禽、鲜菜、鲜果、水产品、茶及饮料、在外餐饮等分类新“食品”为“食品烟酒”大类下的中类仅包括粮食、畜肉、禽肉、鲜菜、鲜果、水产品等不再包括“茶及饮料”和“在外餐饮”两项。三是新增了“园艺花卉及用品”、“宠物及用品”、“养老服务”和“金融服务”等居民支出增加较快的分类能够更加及时准确反映居民消费结构的新变化。',
// 时间2019年10月30日
timeArr: ['2019年10月23日', '2019年10月24日', '2019年10月25日', '2019年10月26日', '2019年10月27日', '2019年10月28日', '2019年10月29日', '2019年10月30日'],
// 指标名称
termsName: ['价格指数', '工业', '能源', '固定资产投资', '服务业生产指数', '城镇调查失业率', '房地产', '国内贸易'],
// 指标解释
termsExplain: ['价格指数指标解释', '工业指标解释', '能源指标解释', '固定资产投资指标解释', '服务业生产指数指标解释', '城镇调查失业率指标解释', '房地产指标解释', '国内贸易指标解释'],
// 地区名
areaName: ['北京市', '临沂市', '上海市', '河北省', '兰陵县', '天津市', '兰山区', '荣盛锦绣外滩'],
// (行:指标名称,列:指标、时间)===>第一列为指标 { 指标名称数据 }
transBeforeTermsData: [
['10210.23', '10152.23', '12556.23', '23689.23', '25698.01', '54565.26', '48915.32', '15862.32'],
['10520.23', '10212.23', '12526.23', '23689.23', '25658.01', '54665.26', '57915.32', '71762.32'],
['10530.23', '10242.23', '12565.23', '23389.23', '25698.01', '46365.26', '59145.32', '16233.32'],
['10320.23', '10252.23', '15650.23', '23089.23', '25498.01', '53065.26', '55845.32', '45633.32'],
['13230.23', '10622.23', '89785.23', '23889.23', '25498.01', '78965.26', '46845.32', '36733.32'],
['14520.23', '45622.23', '89455.23', '45739.23', '49898.01', '53965.26', '49845.32', '16733.32'],
['14540.23', '44562.23', '89945.23', '45576.23', '56898.01', '46965.26', '59845.32', '54563.32'],
['14210.23', '44562.23', '48994.23', '43476.23', '25698.01', '79696.26', '44565.32', '65563.32']
],
// (行:地区名,列:地区、时间)===>第一列为地区{ 地区名称数据 }
transBeforeAreaData: [
['23210.23', '10562.23', '12456.23', '23696.23', '69598.01', '54543.26', '57157.32', '15352.32'],
['10350.23', '10612.23', '12786.23', '26589.23', '56698.01', '56934.26', '56915.32', '45962.32'],
['10450.23', '10542.23', '12665.23', '29639.23', '21259.01', '54495.26', '25945.32', '55483.32'],
['13692.23', '10262.23', '12625.23', '22628.23', '25298.01', '52625.26', '52245.32', '26233.32'],
['13690.23', '26222.23', '89762.23', '23889.23', '25428.01', '56265.26', '57445.32', '56233.32'],
['13690.23', '45622.23', '89225.23', '45629.23', '25298.01', '32965.26', '57845.32', '14533.32'],
['13650.23', '46222.23', '32445.23', '45576.23', '21528.01', '45265.26', '56245.32', '14263.32'],
['14230.23', '42622.23', '48262.23', '43426.23', '21268.01', '78626.26', '56265.32', '16263.32']
]
},
// 调用存储的对象
objCompBefore: null,
// echarts渲染的数据======>非饼图
echartsDatarts: {},
// 饼图数据
echartsDatartsPie: {},
// 行列转换索引状态0行1列
rowColIndex: 0,
// 存input列选中的值
listInputVal: [1, 2, 3], // 初始化选中3个
// 存input行选中的值
lineInputVal: [0, 1, 2, 3], // 初始化选中4个
lineStatic: true,
// 上一次图形是否为执行状态,
pieStatic: false,
// 获取数据所用参数
// 晒选状态 1筛选指标 2筛选地区
selectState: 1
}
},
watch: {
// 监听对象
// chartsStatusMegger: {
// handler (newval, oldVal) {
// this.transState = this.chartsStatusMegger.transState
// this.nowDataTJ = this.chartsStatusMegger.computedStatic
// this.showTable()
// },
// immediate: true,
// deep: true
// }
indStatic (newValue, oldValue) {
console.log(newValue, 'newValue1212')
this.chartsShow()
},
'chartsStatusMegger.transState': {
handler () {
this.transState = this.chartsStatusMegger.transState
this.showTable()
},
immediate: true,
deep: true
},
'chartsStatusMegger.computedStatic': {
handler () {
console.log(this.chartsStatusMegger, 1255555)
this.nowDataTJ = this.chartsStatusMegger.computedStatic
this.dataTJComput()
// 重新渲染表
this.$nextTick(() => {
this.$refs.table.doLayout()
})
},
immediate: true,
deep: true
},
// 监听行列图表转换
rowColIndex (newVal, oldVal) {
this.chartsShow()
},
// 监听左侧菜单的数据变化
defaultDataRight: {
handler () {
this.getDatas()
},
immediate: true,
deep: true
}
},
methods: {
// 非地区数据转置
wrongAreaTrans () {
if (this.transState) { // 当时间在表头上的时候
this.objCompBefore = new ComputedData(this.transBefore)
var objDatasBefore = this.objCompBefore.comTransBefore()
this.tableLine = objDatasBefore.tableLine
this.tableData = objDatasBefore.countData
console.log(objDatasBefore, 'objDatasBefore')
} else { // 当指标名称在表头上
let objCompAfter = new ComputedData(this.transBefore)
var objDatasAfter = objCompAfter.comTransAfter()
this.tableLine = objDatasAfter.tableLine
this.tableData = objDatasAfter.countData
console.log(objDatasAfter, 'objDatasAfter')
}
},
// 地区数据转置
areaTrans () {
if (this.transState) { // 当时间在表头上的时候
this.objCompBefore = new ComputedData(this.transBefore)
var objDatasBefore = this.objCompBefore.comTransAreabefore()
this.tableLine = objDatasBefore.tableLine
this.tableData = objDatasBefore.countData
console.log(objDatasBefore, 'objDatasAfter')
} else { // 当指标名称在表头上
let objCompAfter = new ComputedData(this.transBefore)
var objDatasAfter = objCompAfter.comTransAreaAfter()
this.tableLine = objDatasAfter.tableLine
this.tableData = objDatasAfter.countData
console.log(objDatasAfter, 'objDatasAfter')
}
},
// 渲染列表数据
showTable () {
// 改变转置状态
// this.transState = !this.transState
if (this.areaDataState !== 'area') { // 非地区数据转置
this.wrongAreaTrans()
} else { // 地区数据转置
this.areaTrans()
}
},
// 指标解释
indexExplain (labIndexName) {
if (this.transBefore.termsName.indexOf(labIndexName) !== -1) {
console.log('指标解释:', this.transBefore.termsExplain[this.transBefore.termsName.indexOf(labIndexName)])
}
},
// 统计数据对行,对列处理
dataTJComput () {
if (this.nowDataTJ.stateType === 'line') {
switch (this.nowDataTJ.text) {
case '无':
break
case 'SUM求和':
let datartSUM = this.objCompBefore.dataSumLine()
this.tableLine = datartSUM.tableLine
this.tableData = datartSUM.countData
console.log(datartSUM, 'sum')
break
case 'x平均数':
let datartAVG = this.objCompBefore.dataAVGLine()
this.tableLine = datartAVG.tableLine
this.tableData = datartAVG.countData
console.log(datartAVG, 'AVG')
break
case 'MAX最大值':
let datartMAX = this.objCompBefore.dataMAXLine()
this.tableLine = datartMAX.tableLine
this.tableData = datartMAX.countData
console.log(datartMAX, 'MAX')
break
case 'MIN最小值':
let datartMIN = this.objCompBefore.dataMINLine()
this.tableLine = datartMIN.tableLine
this.tableData = datartMIN.countData
console.log(datartMIN, 'MIN')
break
case 'MD中位数':
let datartMD = this.objCompBefore.dataMDLine()
this.tableLine = datartMD.tableLine
this.tableData = datartMD.countData
console.log(datartMD, 'MD')
break
case 'MO众数':
let datartMO = this.objCompBefore.dataMOLine()
this.tableLine = datartMO.tableLine
this.tableData = datartMO.countData
console.log(datartMO, 'MO')
break
case 'S²方差':
let datartSS = this.objCompBefore.dataSSLine()
this.tableLine = datartSS.tableLine
this.tableData = datartSS.countData
console.log(datartSS, 'SS')
break
case 'S标准差':
let datartS = this.objCompBefore.dataSLine()
this.tableLine = datartS.tableLine
this.tableData = datartS.countData
console.log(datartS, 'S')
break
}
} else {
switch (this.nowDataTJ.text) {
case '无':
break
case 'SUM求和':
let datartSUM = this.objCompBefore.dataSumList()
this.tableLine = datartSUM.tableLine
this.tableData = datartSUM.countData
console.log(datartSUM, 'sum')
break
case 'x平均数':
let datartAVG = this.objCompBefore.dataAVGList()
this.tableLine = datartAVG.tableLine
this.tableData = datartAVG.countData
console.log(datartAVG, 'AVG')
break
case 'MAX最大值':
let datartMAX = this.objCompBefore.dataMAXList()
this.tableLine = datartMAX.tableLine
this.tableData = datartMAX.countData
console.log(datartMAX, 'MAX')
break
case 'MIN最小值':
let datartMIN = this.objCompBefore.dataMINList()
this.tableLine = datartMIN.tableLine
this.tableData = datartMIN.countData
console.log(datartMIN, 'MIN')
break
case 'MD中位数':
let datartMD = this.objCompBefore.dataMDList()
this.tableLine = datartMD.tableLine
this.tableData = datartMD.countData
console.log(datartMD, 'MD')
break
case 'MO众数':
let datartMO = this.objCompBefore.dataMOList()
this.tableLine = datartMO.tableLine
this.tableData = datartMO.countData
console.log(datartMO, 'MO')
break
case 'S²方差':
let datartSS = this.objCompBefore.dataSSList()
this.tableLine = datartSS.tableLine
this.tableData = datartSS.countData
console.log(datartSS, 'SS')
break
case 'S标准差':
let datartS = this.objCompBefore.dataSList()
this.tableLine = datartS.tableLine
this.tableData = datartS.countData
console.log(datartS, 'S')
break
}
}
this.chartsShow()
},
// 图表渲染
chartsShow () {
// 改变值行值
switch (this.indStatic) {
case 1:
if (this.pieStatic) {
// 存input列选中的值
this.listInputVal = [1, 2, 3] // 初始化选中3个
// 存input行选中的值
this.lineInputVal = [0, 1, 2, 3]// 初始化选中4个
}
this.objCompBefore.inputSelectData(this.listInputVal, this.lineInputVal)
this.rowColIndex === 0 ? (this.echartsDatarts = this.objCompBefore.dataVerticalMapRow()) : (this.echartsDatarts = this.objCompBefore.dataVerticalMapCol())
this.pieStatic = false
break
case 2:
if (this.pieStatic) {
// 存input列选中的值
this.listInputVal = [1, 2, 3] // 初始化选中3个
// 存input行选中的值
this.lineInputVal = [0, 1, 2, 3]// 初始化选中4个
console.log(2121)
}
this.objCompBefore.inputSelectData(this.listInputVal, this.lineInputVal)
this.rowColIndex === 0 ? (this.echartsDatarts = this.objCompBefore.dataAcrossMapRow()) : (this.echartsDatarts = this.objCompBefore.dataAcrossMapCol())
this.pieStatic = false
break
case 3:
console.log(this.lineStatic, this.rowColIndex, '555025')
if (this.lineStatic && this.rowColIndex === 0) {
this.lineInputVal = [0]
this.listInputVal = [1, 2, 3]
this.lineStatic = true
} else if (!this.lineStatic && this.rowColIndex === 1) {
this.lineInputVal = [0, 1, 2, 3]
this.listInputVal = [1]
this.lineStatic = true
}
console.log(this.listInputVal, this.lineInputVal)
this.objCompBefore.inputSelectData(this.listInputVal, this.lineInputVal)
this.rowColIndex === 0 ? (this.echartsDatarts = this.objCompBefore.dataPieMapRow()) : (this.echartsDatarts = this.objCompBefore.dataPieMapCol())
this.pieStatic = true
break
case 4:
if (this.pieStatic) {
// 存input列选中的值
this.listInputVal = [1, 2, 3] // 初始化选中3个
// 存input行选中的值
this.lineInputVal = [0, 1, 2, 3]// 初始化选中4个
}
this.objCompBefore.inputSelectData(this.listInputVal, this.lineInputVal)
this.rowColIndex === 0 ? (this.echartsDatarts = this.objCompBefore.dataBrokenLineMapRow()) : (this.echartsDatarts = this.objCompBefore.dataBrokenLineMapCol())
this.pieStatic = false
break
}
},
// 图表行列转换
rowColInd (ind) {
// 0行1列
this.rowColIndex = ind
},
// 每列input选中
listInput (ind) {
console.log(ind, '列')
if (this.indStatic === 3 && this.rowColIndex === 1) {
this.listInputVal = [ind]
this.$refs.listInputSelect[ind].checked = true
} else {
this.listInputVal.indexOf(ind) === -1 ? (this.listInputVal.push(ind)) : (this.listInputVal.splice(this.listInputVal.indexOf(ind), 1))
}
this.chartsShow()
},
// 每行input选中
lineInput (ind) {
console.log(ind, '行')
if (this.indStatic === 3 && this.rowColIndex === 0) {
this.lineInputVal = [ind]
this.$refs.lineInputSelect[ind].checked = true
} else {
this.lineInputVal.indexOf(ind) === -1 ? (this.lineInputVal.push(ind)) : (this.lineInputVal.splice(this.lineInputVal.indexOf(ind), 1))
}
this.chartsShow()
},
// 获取后台数据表中的数据
getDatas () {
console.log(this.defaultDataRight, '获取数据')
this.$axios({
method: 'GET',
url: 'data/data/detail',
params: {
type: this.$route.query.type === 'area' ? 1 : 2, // 1非地区 2地区
table_name: this.defaultDataRight.table_name, // 表名
id: this.defaultDataRight.id, // 分类id
area: '', // 选中的地区
quota: this.defaultDataRight.name, // 选中的指标
cate: this.selectState// 1帅选指标 2筛选地区
}
}).then(res => {
console.log(res, '获取数据展示数据')
// 请求接口完成 请求成功
if (res.data.code === 200) {
}
}).catch((fail) => {
console.log(fail, 2369)
})
}
},
computed: {
// 行计算样式
computedLineSty () {
return (ind) => {
let styStatic = false
if (this.transState) {
if (ind > (this.transBefore.transBeforeTermsData.length)) {
styStatic = true
}
} else {
if (ind > (this.transBefore.transBeforeTermsData[0].length)) {
styStatic = true
}
}
return styStatic
}
},
// 列计算样式
computedListSty () {
return (ind) => {
let styStatic = false
if (this.transState) {
if (ind > (this.transBefore.transBeforeTermsData.length - 1)) {
styStatic = true
}
} else {
if (ind > (this.transBefore.transBeforeTermsData[0].length - 1)) {
styStatic = true
}
}
return styStatic
}
}
},
mounted () {
// console.log(new ComputedData())
this.showTable()
// 转置状态
this.transState = this.chartsStatusMegger.transState
this.getDatas()
}
}
</script>
<style lang="scss" scoped>
.chartsCont {
margin: 1.5rem 0;
border: 0.0625rem solid red;
padding: 0 1.5rem;
& > .tableExplain {
padding: 0.75rem;
margin: 1.75rem auto;
// width: 53.375rem;
height: 18rem;
border: 0.0625rem solid rgba(172, 172, 172, 0.38);
border-radius: 0.5rem;
box-shadow: 0rem 0.1875rem 1rem 0rem rgba(172, 172, 172, 0.38);
// line-height: 1.8rem;
overflow-y: scroll;
font-size: 1rem;
font-weight: normal;
font-stretch: normal;
line-height: 1.5rem;
letter-spacing: 0.125rem;
color: #333333;
}
& > .tableExplain::-webkit-scrollbar {
display: none;
}
}
// 指标解释
.slotExplain {
margin: 0 0.2rem 0 0.6rem;
width: 1.5rem;
height: 1.5rem;
}
.slotExplain:hover {
cursor: pointer;
}
/deep/ .el-table .cell {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
</style>