let math = require('mathjs')
// 定义一个计算类来计算数据
class computedFunc {
constructor (transBeforeData) {
this.transBeforeData = transBeforeData
console.log(transBeforeData,"class 6")
// 处理好的数据需要返回的值 ===========all
this.restur = {
// 表头数据
tableLine: [],
// 总数据处理
countData: [],
// 计算次数
computedNum: 0
}
// 处理好的转置数据
this.transData = []
// 处理好的图表数据======>折线、柱状图
this.chartsDatazz = {
legend: {
type: 'scroll',
bottom: 0,
data: ['蒸发量', '降水量']
// zlevel: 1
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross'
}
},
calculable: true,
grid: {
top: '7%',
left: '1%',
bottom: '9%',
containLabel: true
},
xAxis: [{
type: 'category',
data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
}],
yAxis: [{
type: 'value',
splitNumber: 4
}],
series: [{
name: '蒸发量',
type: 'bar',
data: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
},
{
name: '降水量',
type: 'bar',
data: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
}
]
}
// 饼图数据
this.chartsDatazzPie = {
// title: {
// text: '某站点用户访问来源',
// subtext: '纯属虚构',
// x: 'center'
// },
tooltip: {
trigger: 'item',
formatter: '{a}
{b} : {c} ({d}%)'
},
legend: {
type: 'scroll',
bottom: '0',
data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎', 'jhjgbh', '45445455445']
},
series: [{
name: '访问来源',
type: 'pie',
avoidLabelOverlap: true,
radius: '55%',
center: ['50%', '50%'],
data: [{
value: 335,
name: '直接访问'
},
{
value: 310,
name: '邮件营销'
},
{
value: 234,
name: '联盟广告'
},
{
value: 135,
name: '视频广告'
},
{
value: 1548,
name: '搜索引擎'
},
{
value: 15458,
name: 'jhjgbh'
},
{
value: 15458,
name: '45445455445'
}
],
itemStyle: {
emphasis: {
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}]
}
// 选中数据 ==========input
this.selectData = {
// 表头数据
tableLine: [],
// 总数据处理
countData: []
}
}
// 初始化所有的数据
initAllData () {
// 处理好的数据需要返回的值 ===========all
this.restur = {
// 表头数据
tableLine: [],
// 总数据处理
countData: [],
// 计算次数
computedNum: 0
}
// 处理好的转置数据
this.transData = []
// 处理好的图表数据======>折线、柱状图
this.chartsDatazz = {
legend: {
type: 'scroll',
bottom: 0,
data: ['蒸发量', '降水量']
// zlevel: 1
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross'
}
},
calculable: true,
grid: {
top: '7%',
left: '1%',
bottom: '9%',
containLabel: true
},
xAxis: [{
type: 'category',
data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
}],
yAxis: [{
type: 'value',
splitNumber: 4
}],
series: [{
name: '蒸发量',
type: 'bar',
data: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
},
{
name: '降水量',
type: 'bar',
data: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
}
]
}
// 饼图数据
this.chartsDatazzPie = {
// title: {
// text: '某站点用户访问来源',
// subtext: '纯属虚构',
// x: 'center'
// },
tooltip: {
trigger: 'item',
formatter: '{a}
{b} : {c} ({d}%)'
},
legend: {
type: 'scroll',
bottom: '0',
data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎', 'jhjgbh', '45445455445']
},
series: [{
name: '访问来源',
type: 'pie',
avoidLabelOverlap: true,
radius: '55%',
center: ['50%', '50%'],
data: [{
value: 335,
name: '直接访问'
},
{
value: 310,
name: '邮件营销'
},
{
value: 234,
name: '联盟广告'
},
{
value: 135,
name: '视频广告'
},
{
value: 1548,
name: '搜索引擎'
},
{
value: 15458,
name: 'jhjgbh'
},
{
value: 15458,
name: '45445455445'
}
],
itemStyle: {
emphasis: {
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}]
}
// 选中数据 ==========input
this.selectData = {
// 表头数据
tableLine: [],
// 总数据处理
countData: []
}
}
// 处理input选中数据
inputSelectData (listArr, lineArr) { // listArr 列选中的数组 //line行选中的数组
// 重定向数组
let listArrs = JSON.parse(JSON.stringify(listArr))
let lineArrs = JSON.parse(JSON.stringify(lineArr))
listArrs.unshift(0) // 必选第一项
if (this.restur.tableLine.length < listArrs.length) {
listArrs = this.restur.tableLine.map((item, index) => {
return index
})
}
if (this.restur.countData.length < lineArrs.length) {
lineArrs = this.restur.countData.map((item, index) => {
return index
})
}
// 处理数据显示
this.selectData.tableLine = []
console.log(this.restur.tableLine, 'this.restur.tableLine')
console.log(listArrs, lineArrs)
listArrs.forEach((items, indexs) => {
this.selectData.tableLine.push({
labelId: this.restur.tableLine[items].labelId,
label: this.restur.tableLine[items].label
})
})
// this.selectData.tableLine = this.restur.tableLine
let datart = JSON.parse(JSON.stringify(this.restur.countData))
let csd1 = datart.map((itemCol, indexCol) => {
let newArr = {}
Object.keys(itemCol).forEach((itemRow, indexRow) => {
if (listArrs.indexOf(indexRow) !== -1) {
newArr[itemRow] = itemCol[itemRow]
}
})
return newArr
})
this.selectData.countData = lineArrs.map((lineItem, lineIndex) => {
return csd1[lineItem]
})
}
// 处理转置数据
comTransAllData (arr) {
this.transData = arr[0].map(function (col, index) {
return arr.map((row, key) => {
return row[index]
})
})
}
// 处理行列图表数据
comRowColAllData (arr) {
return arr[0].map(function (col, index) {
return arr.map((row, key) => {
return row[index]
})
})
}
// 处理非地区数据转置前的数据,返回可渲染的数据格式
comTransBefore () {
// 表头数据处理
this.restur.tableLine.push({
labelId: 'table_line0',
label: '指标'
})
this.transBeforeData.timeArr.forEach((itemTime, indexTime) => {
this.restur.tableLine.push({
labelId: 'table_line' + (indexTime + 1),
label: itemTime
})
})
// 总数据处理
this.transBeforeData.termsName.forEach((itemName, indexName) => {
var tableLine = {}
this.transBeforeData.transBeforeTermsData[indexName].forEach((dataList, dataKey) => {
if (dataKey === 0) {
tableLine['table_line0'] = itemName
}
tableLine['table_line' + (dataKey + 1)] = dataList
})
this.restur.countData.push(tableLine)
})
return this.restur
}
// 处理非地区数据转置后的数据,返回可渲染的数据格式
comTransAfter () {
// 表头数据处理
this.restur.tableLine.push({
labelId: 'table_line0',
label: '时间'
})
this.transBeforeData.termsName.forEach((itemTime, indexTime) => {
this.restur.tableLine.push({
labelId: 'table_line' + (indexTime + 1),
label: itemTime
})
})
// 将数据转置
this.comTransAllData(this.transBeforeData.transBeforeTermsData)
// 总数据处理
this.transBeforeData.timeArr.forEach((itemName, indexName) => {
var tableLine = {}
this.transData[indexName].forEach((dataList, dataKey) => {
if (dataKey === 0) {
tableLine['table_line0'] = itemName
}
tableLine['table_line' + (dataKey + 1)] = dataList
})
this.restur.countData.push(tableLine)
})
return this.restur
}
// 处理非地区数据转置后的数据,返回可渲染的数据格式
comTransAreabefore () {
// 表头数据处理
this.restur.tableLine.push({
labelId: 'table_line0',
label: '地区'
})
this.transBeforeData.timeArr.forEach((itemTime, indexTime) => {
this.restur.tableLine.push({
labelId: 'table_line' + (indexTime + 1),
label: itemTime
})
})
// 总数据处理
this.transBeforeData.areaName.forEach((itemName, indexName) => {
// console.log(this.transBeforeData.transBeforeAreaData, 'this.transBeforeData.transBeforeAreaData')
var tableLine = {}
this.transBeforeData.transBeforeAreaData[indexName].forEach((dataList, dataKey) => {
if (dataKey === 0) {
tableLine['table_line0'] = itemName
}
tableLine['table_line' + (dataKey + 1)] = dataList
})
this.restur.countData.push(tableLine)
})
return this.restur
}
// 处理地区数据转置后的数据,返回可渲染的数据格式
comTransAreaAfter () {
// 表头数据处理
this.restur.tableLine.push({
labelId: 'table_line0',
label: '时间'
})
console.log(this.transBeforeData)
this.transBeforeData.areaName.forEach((itemTime, indexTime) => {
this.restur.tableLine.push({
labelId: 'table_line' + (indexTime + 1),
label: itemTime
})
})
// 将数据转置
// 总数据处理
this.transBeforeData.timeArr.forEach((itemName, indexName) => {
var tableLine = {}
this.transBeforeData.transBeforeAreaData[indexName].forEach((dataList, dataKey) => {
if (dataKey === 0) {
tableLine['table_line0'] = itemName
}
tableLine['table_line' + (dataKey + 1)] = dataList
})
this.restur.countData.push(tableLine)
})
return this.restur
}
// 地区数据对于维度转化的处理 时间======指标
comTransAreabeforeTimeLabel () {
// 表头数据处理
this.restur.tableLine.push({
labelId: 'table_line0',
label: '时间'
})
this.transBeforeData.termsName.forEach((itemTime, indexTime) => {
this.restur.tableLine.push({
labelId: 'table_line' + (indexTime + 1),
label: itemTime
})
})
console.log(this.transBeforeData, 'this.transBeforeData101')
// 总数据处理
this.transBeforeData.timeArr.forEach((itemName, indexName) => {
var tableLine = {}
this.transBeforeData.transBeforeAreaData[indexName].forEach((dataList, dataKey) => {
if (dataKey === 0) {
tableLine['table_line0'] = itemName
}
tableLine['table_line' + (dataKey + 1)] = dataList
})
this.restur.countData.push(tableLine)
})
return this.restur
}
// 地区数据对于维度转化的处理 指标======时间
comTransAreabeforeLabelTime () {
// 表头数据处理
this.restur.tableLine.push({
labelId: 'table_line0',
label: '指标'
})
this.transBeforeData.timeArr.forEach((itemTime, indexTime) => {
this.restur.tableLine.push({
labelId: 'table_line' + (indexTime + 1),
label: itemTime
})
})
// 总数据处理
this.transBeforeData.termsName.forEach((itemName, indexName) => {
var tableLine = {}
this.transBeforeData.transBeforeAreaData[indexName].forEach((dataList, dataKey) => {
if (dataKey === 0) {
tableLine['table_line0'] = itemName
}
tableLine['table_line' + (dataKey + 1)] = dataList
})
this.restur.countData.push(tableLine)
})
return this.restur
}
// 地区数据对于维度转化的处理 地区======指标
comTransAreabeforeAreaLabel () {
// 表头数据处理
this.restur.tableLine.push({
labelId: 'table_line0',
label: '地区'
})
this.transBeforeData.termsName.forEach((itemTime, indexTime) => {
this.restur.tableLine.push({
labelId: 'table_line' + (indexTime + 1),
label: itemTime
})
})
// 总数据处理
this.transBeforeData.areaName.forEach((itemName, indexName) => {
var tableLine = {}
this.transBeforeData.transBeforeAreaData[indexName].forEach((dataList, dataKey) => {
if (dataKey === 0) {
tableLine['table_line0'] = itemName
}
tableLine['table_line' + (dataKey + 1)] = dataList
})
this.restur.countData.push(tableLine)
})
return this.restur
}
// 地区数据对于维度转化的处理 指标======地区
comTransAreabeforeLabelArea () {
// 表头数据处理
this.restur.tableLine.push({
labelId: 'table_line0',
label: '指标'
})
this.transBeforeData.areaName.forEach((itemTime, indexTime) => {
this.restur.tableLine.push({
labelId: 'table_line' + (indexTime + 1),
label: itemTime
})
})
// 总数据处理
this.transBeforeData.termsName.forEach((itemName, indexName) => {
var tableLine = {}
this.transBeforeData.transBeforeAreaData[indexName].forEach((dataList, dataKey) => {
if (dataKey === 0) {
tableLine['table_line0'] = itemName
}
tableLine['table_line' + (dataKey + 1)] = dataList
})
this.restur.countData.push(tableLine)
})
return this.restur
}
// SUM求和 ============对行运算
dataSumLine () {
let dataRs = JSON.parse(JSON.stringify(this.restur))
dataRs.tableLine.push({
// label: 'SUM求和' + this.restur.computedNum,
label: 'SUM求和',
labelId: 'table_line' + dataRs.tableLine.length
})
let bth = dataRs.countData.map((item, index) => {
// console.log(item, 'item002255')
var arr = Object.values(item)
arr.shift()
if (arr.length < 2) {
arr.push('0')
arr.push('0')
}
console.log(arr, 'arr000')
return math.add(...arr).toFixed(2)
})
dataRs.countData.forEach((item, index) => {
item['table_line' + (dataRs.tableLine.length - 1)] = bth[index]
})
this.restur = dataRs
return this.restur
}
// SUM求和 ============对列运算
dataSumList () {
let dataRs = JSON.parse(JSON.stringify(this.restur))
// 处理现在的数据
let datarts = this.restur.countData.map((item, index) => {
let arrt = Object.values(item)
arrt.shift()
return arrt
})
// 将数据转置
this.comTransAllData(datarts)
let transSum = this.transData.map((item, index) => {
return math.add(...item).toFixed(2)
})
let returObj = {}
transSum.forEach((item, index) => {
if (index === 0) {
// returObj['table_line' + index] = 'SUM求和' + this.restur.computedNum
returObj['table_line' + index] = 'SUM求和'
}
returObj['table_line' + (index + 1)] = item
})
dataRs.countData.push(returObj)
this.restur = dataRs
return this.restur
}
// x平均数 ========>对行运算
dataAVGLine () {
let dataRs = JSON.parse(JSON.stringify(this.restur))
dataRs.tableLine.push({
label: 'x平均数' + this.restur.computedNum,
labelId: 'table_line' + dataRs.tableLine.length
})
let bth = dataRs.countData.map((item, index) => {
var arr = Object.values(item)
arr.shift()
return (math.add(...arr).toFixed(2)) / arr.length
})
dataRs.countData.forEach((item, index) => {
item['table_line' + (dataRs.tableLine.length - 1)] = bth[index]
})
this.restur = dataRs
return this.restur
}
// x平均数 ============对列运算
dataAVGList () {
let dataRs = JSON.parse(JSON.stringify(this.restur))
// 处理现在的数据
let datarts = this.restur.countData.map((item, index) => {
let arrt = Object.values(item)
arrt.shift()
return arrt
})
// 将数据转置
this.comTransAllData(datarts)
let transSum = this.transData.map((item, index) => {
return (math.add(...item).toFixed(2)) / item.length
})
let returObj = {}
transSum.forEach((item, index) => {
if (index === 0) {
returObj['table_line' + index] = 'x平均数' + this.restur.computedNum
}
returObj['table_line' + (index + 1)] = item
})
dataRs.countData.push(returObj)
this.restur = dataRs
return this.restur
}
// MAX最大值 ============对行运算
dataMAXLine () {
let dataRs = JSON.parse(JSON.stringify(this.restur))
dataRs.tableLine.push({
label: 'MAX最大值' + this.restur.computedNum,
labelId: 'table_line' + dataRs.tableLine.length
})
let bth = dataRs.countData.map((item, index) => {
var arr = Object.values(item)
arr.shift()
return math.max(...arr)
})
dataRs.countData.forEach((item, index) => {
item['table_line' + (dataRs.tableLine.length - 1)] = bth[index]
})
this.restur = dataRs
return this.restur
}
// MAX最大值 ============对列运算
dataMAXList () {
let dataRs = JSON.parse(JSON.stringify(this.restur))
// 处理现在的数据
let datarts = this.restur.countData.map((item, index) => {
let arrt = Object.values(item)
arrt.shift()
return arrt
})
// 将数据转置
this.comTransAllData(datarts)
let transSum = this.transData.map((item, index) => {
return math.max(...item)
})
let returObj = {}
transSum.forEach((item, index) => {
if (index === 0) {
returObj['table_line' + index] = 'MAX最大值' + this.restur.computedNum
}
returObj['table_line' + (index + 1)] = item
})
dataRs.countData.push(returObj)
this.restur = dataRs
return this.restur
}
// MIN最小值 ============对行运算
dataMINLine () {
let dataRs = JSON.parse(JSON.stringify(this.restur))
dataRs.tableLine.push({
label: 'MIN最小值' + this.restur.computedNum,
labelId: 'table_line' + dataRs.tableLine.length
})
let bth = dataRs.countData.map((item, index) => {
var arr = Object.values(item)
arr.shift()
return math.min(...arr)
})
dataRs.countData.forEach((item, index) => {
item['table_line' + (dataRs.tableLine.length - 1)] = bth[index]
})
this.restur = dataRs
return this.restur
}
// MIN最小值 ============对列运算
dataMINList () {
let dataRs = JSON.parse(JSON.stringify(this.restur))
// 处理现在的数据
let datarts = this.restur.countData.map((item, index) => {
let arrt = Object.values(item)
arrt.shift()
return arrt
})
// 将数据转置
this.comTransAllData(datarts)
let transSum = this.transData.map((item, index) => {
return math.min(...item)
})
let returObj = {}
transSum.forEach((item, index) => {
if (index === 0) {
returObj['table_line' + index] = 'MIN最小值' + this.restur.computedNum
}
returObj['table_line' + (index + 1)] = item
})
dataRs.countData.push(returObj)
this.restur = dataRs
return this.restur
}
// MD中位数 ============对行运算
dataMDLine () {
let dataRs = JSON.parse(JSON.stringify(this.restur))
dataRs.tableLine.push({
label: 'MD中位数' + this.restur.computedNum,
labelId: 'table_line' + dataRs.tableLine.length
})
let bth = dataRs.countData.map((item, index) => {
var arr = Object.values(item)
arr.shift()
return math.median(...arr).toFixed(2)
})
dataRs.countData.forEach((item, index) => {
item['table_line' + (dataRs.tableLine.length - 1)] = bth[index]
})
this.restur = dataRs
return this.restur
}
// MD中位数 ============对列运算
dataMDList () {
let dataRs = JSON.parse(JSON.stringify(this.restur))
// 处理现在的数据
let datarts = this.restur.countData.map((item, index) => {
let arrt = Object.values(item)
arrt.shift()
return arrt
})
// 将数据转置
this.comTransAllData(datarts)
let transSum = this.transData.map((item, index) => {
return math.median(...item).toFixed(2)
})
let returObj = {}
transSum.forEach((item, index) => {
if (index === 0) {
returObj['table_line' + index] = 'MD中位数' + this.restur.computedNum
}
returObj['table_line' + (index + 1)] = item
})
dataRs.countData.push(returObj)
this.restur = dataRs
return this.restur
}
// MO众数 ============对行运算
dataMOLine () {
let dataRs = JSON.parse(JSON.stringify(this.restur))
dataRs.tableLine.push({
label: 'MO众数' + this.restur.computedNum,
labelId: 'table_line' + dataRs.tableLine.length
})
let bth = dataRs.countData.map((item, index) => {
var arr = Object.values(item)
arr.shift()
return math.mode(...arr)
})
dataRs.countData.forEach((item, index) => {
item['table_line' + (dataRs.tableLine.length - 1)] = bth[index]
})
this.restur = dataRs
return this.restur
}
// MO众数 ============对列运算
dataMOList () {
let dataRs = JSON.parse(JSON.stringify(this.restur))
// 处理现在的数据
let datarts = this.restur.countData.map((item, index) => {
let arrt = Object.values(item)
arrt.shift()
return arrt
})
// 将数据转置
this.comTransAllData(datarts)
let transSum = this.transData.map((item, index) => {
return math.mode(...item)
})
let returObj = {}
transSum.forEach((item, index) => {
if (index === 0) {
returObj['table_line' + index] = 'MO众数' + this.restur.computedNum
}
returObj['table_line' + (index + 1)] = item
})
dataRs.countData.push(returObj)
this.restur = dataRs
return this.restur
}
// S²方差 ============对行运算
dataSSLine () {
let dataRs = JSON.parse(JSON.stringify(this.restur))
dataRs.tableLine.push({
label: 'S²方差' + this.restur.computedNum,
labelId: 'table_line' + dataRs.tableLine.length
})
let bth = dataRs.countData.map((item, index) => {
var arr = Object.values(item)
arr.shift()
return math.variance(...arr).toFixed(2)
})
dataRs.countData.forEach((item, index) => {
item['table_line' + (dataRs.tableLine.length - 1)] = bth[index]
})
this.restur = dataRs
return this.restur
}
// S²方差 ============对列运算
dataSSList () {
let dataRs = JSON.parse(JSON.stringify(this.restur))
// 处理现在的数据
let datarts = this.restur.countData.map((item, index) => {
let arrt = Object.values(item)
arrt.shift()
return arrt
})
// 将数据转置
this.comTransAllData(datarts)
let transSum = this.transData.map((item, index) => {
return math.variance(...item).toFixed(2)
})
let returObj = {}
transSum.forEach((item, index) => {
if (index === 0) {
returObj['table_line' + index] = 'S²方差' + this.restur.computedNum
}
returObj['table_line' + (index + 1)] = item
})
dataRs.countData.push(returObj)
this.restur = dataRs
return this.restur
}
// S标准差 ============对行运算
dataSLine () {
let dataRs = JSON.parse(JSON.stringify(this.restur))
dataRs.tableLine.push({
label: 'S标准差' + this.restur.computedNum,
labelId: 'table_line' + dataRs.tableLine.length
})
let bth = dataRs.countData.map((item, index) => {
var arr = Object.values(item)
arr.shift()
return math.std(...arr).toFixed(2)
})
dataRs.countData.forEach((item, index) => {
item['table_line' + (dataRs.tableLine.length - 1)] = bth[index]
})
this.restur = dataRs
return this.restur
}
// S标准差 ============对列运算
dataSList () {
let dataRs = JSON.parse(JSON.stringify(this.restur))
// 处理现在的数据
let datarts = this.restur.countData.map((item, index) => {
let arrt = Object.values(item)
arrt.shift()
return arrt
})
// 将数据转置
this.comTransAllData(datarts)
let transSum = this.transData.map((item, index) => {
return math.std(...item).toFixed(2)
})
let returObj = {}
transSum.forEach((item, index) => {
if (index === 0) {
returObj['table_line' + index] = 'S标准差' + this.restur.computedNum
}
returObj['table_line' + (index + 1)] = item
})
dataRs.countData.push(returObj)
this.restur = dataRs
return this.restur
}
// ========================================================非地区数据
// 竖状图数据 ============行转换
dataVerticalMapRow () {
let termsName = []
let cloneSarr = JSON.parse(JSON.stringify(this.selectData.countData))
this.chartsDatazz.series = cloneSarr.map((item, index) => {
let obju = Object.values(item)
let keys = obju.shift()
termsName.push(keys)
return {
name: keys,
type: 'bar',
data: obju
}
})
this.chartsDatazz.legend = {
type: 'scroll',
bottom: 0,
data: termsName
}
let timeArr = this.selectData.tableLine.map((item, index) => {
return item.label
})
timeArr.shift()
this.chartsDatazz.xAxis = [{
type: 'category',
data: timeArr
}]
this.chartsDatazz.yAxis = [{
type: 'value',
splitNumber: 6
}]
return this.chartsDatazz
}
// 竖状图数据 ============列转换
dataVerticalMapCol () {
this.chartsDatazz.yAxis = [{
type: 'value',
splitNumber: 6
}]
let cloneSarr = JSON.parse(JSON.stringify(this.selectData.countData))
let termsName = []
let seriess = cloneSarr.map((item, index) => {
let obju = Object.values(item)
let keys = obju.shift()
termsName.push(keys)
return obju
})
// 将数据转置
this.chartsDatazz.series = this.comRowColAllData(seriess).map((item, index) => {
return {
name: this.selectData.tableLine[index + 1].label,
type: 'bar',
data: item
}
})
let timeArr = this.selectData.tableLine.map((item, index) => {
return item.label
})
timeArr.shift()
this.chartsDatazz.legend = {
type: 'scroll',
bottom: 0,
data: timeArr
}
this.chartsDatazz.xAxis = [{
type: 'category',
data: termsName
}]
this.chartsDatazz.yAxis = [{
type: 'value',
splitNumber: 6
}]
return this.chartsDatazz
}
// =========================================================地区数据
// 竖状图数据 ============行转换 时间===地区
dataVerticalMapRowAreaSJDQ () {
let termsName = []
let cloneSarr = JSON.parse(JSON.stringify(this.selectData.countData))
this.chartsDatazz.series = cloneSarr.map((item, index) => {
let obju = Object.values(item)
let keys = obju.shift()
termsName.push(keys)
return {
name: keys,
type: 'bar',
data: obju
}
})
this.chartsDatazz.legend = {
type: 'scroll',
bottom: 0,
data: termsName
}
let timeArr = this.selectData.tableLine.map((item, index) => {
return item.label
})
timeArr.shift()
this.chartsDatazz.xAxis = [{
type: 'category',
data: timeArr
}]
this.chartsDatazz.yAxis = [{
type: 'value',
splitNumber: 6
}]
return this.chartsDatazz
}
// 竖状图数据 ============列转换 地区===时间
dataVerticalMapColAreaDQSJ () {
this.chartsDatazz.yAxis = [{
type: 'value',
splitNumber: 6
}]
let cloneSarr = JSON.parse(JSON.stringify(this.selectData.countData))
let termsName = []
let seriess = cloneSarr.map((item, index) => {
let obju = Object.values(item)
let keys = obju.shift()
termsName.push(keys)
return obju
})
// 将数据转置
this.chartsDatazz.series = this.comRowColAllData(seriess).map((item, index) => {
return {
name: this.selectData.tableLine[index + 1].label,
type: 'bar',
data: item
}
})
let timeArr = this.selectData.tableLine.map((item, index) => {
return item.label
})
timeArr.shift()
this.chartsDatazz.legend = {
type: 'scroll',
bottom: 0,
data: timeArr
}
this.chartsDatazz.xAxis = [{
type: 'category',
data: termsName
}]
this.chartsDatazz.yAxis = [{
type: 'value',
splitNumber: 6
}]
return this.chartsDatazz
}
// 横状图数据 ============行转换
dataAcrossMapRow () {
let termsName = []
let cloneSarr = JSON.parse(JSON.stringify(this.selectData.countData))
this.chartsDatazz.series = cloneSarr.map((item, index) => {
let obju = Object.values(item)
let keys = obju.shift()
termsName.push(keys)
return {
name: keys,
type: 'bar',
data: obju
}
})
this.chartsDatazz.legend = {
type: 'scroll',
bottom: 0,
data: termsName
}
let timeArr = this.selectData.tableLine.map((item, index) => {
return item.label
})
timeArr.shift()
this.chartsDatazz.xAxis = [{
type: 'value'
}]
this.chartsDatazz.yAxis = [{
type: 'category',
data: timeArr
}]
return this.chartsDatazz
}
// 竖状图数据 ============列转换
dataAcrossMapCol () {
this.chartsDatazz.yAxis = [{
type: 'value',
splitNumber: 6
}]
let cloneSarr = JSON.parse(JSON.stringify(this.selectData.countData))
let termsName = []
let seriess = cloneSarr.map((item, index) => {
let obju = Object.values(item)
let keys = obju.shift()
termsName.push(keys)
return obju
})
// 将数据转置
this.chartsDatazz.series = this.comRowColAllData(seriess).map((item, index) => {
return {
name: this.selectData.tableLine[index + 1].label,
type: 'bar',
data: item
}
})
let timeArr = this.selectData.tableLine.map((item, index) => {
return item.label
})
timeArr.shift()
this.chartsDatazz.legend = {
type: 'scroll',
bottom: 0,
data: timeArr
}
this.chartsDatazz.xAxis = [{
type: 'value'
}]
this.chartsDatazz.yAxis = [{
type: 'category',
data: termsName
}]
return this.chartsDatazz
}
// 折线图数据 ============行转换
dataBrokenLineMapRow () {
let termsName = []
let cloneSarr = JSON.parse(JSON.stringify(this.selectData.countData))
this.chartsDatazz.series = cloneSarr.map((item, index) => {
let obju = Object.values(item)
let keys = obju.shift()
termsName.push(keys)
return {
name: keys,
type: 'line',
data: obju
}
})
this.chartsDatazz.legend = {
type: 'scroll',
bottom: 0,
data: termsName
}
let timeArr = this.selectData.tableLine.map((item, index) => {
return item.label
})
timeArr.shift()
this.chartsDatazz.xAxis = [{
type: 'category',
data: timeArr
}]
this.chartsDatazz.yAxis = [{
type: 'value',
splitNumber: 6
}]
return this.chartsDatazz
}
// 折线图数据 ============列转换
dataBrokenLineMapCol () {
this.chartsDatazz.yAxis = [{
type: 'value',
splitNumber: 6
}]
let cloneSarr = JSON.parse(JSON.stringify(this.selectData.countData))
let termsName = []
let seriess = cloneSarr.map((item, index) => {
let obju = Object.values(item)
let keys = obju.shift()
termsName.push(keys)
return obju
})
// 将数据转置
this.chartsDatazz.series = this.comRowColAllData(seriess).map((item, index) => {
return {
name: this.selectData.tableLine[index + 1].label,
type: 'line',
data: item
}
})
let timeArr = this.selectData.tableLine.map((item, index) => {
return item.label
})
timeArr.shift()
this.chartsDatazz.legend = {
type: 'scroll',
bottom: 0,
data: timeArr
}
this.chartsDatazz.xAxis = [{
type: 'category',
data: termsName
}]
this.chartsDatazz.yAxis = [{
type: 'value',
splitNumber: 6
}]
return this.chartsDatazz
}
// 饼图数据 ============行转换
dataPieMapRow () {
let termsLine = []
let cloneLine = JSON.parse(JSON.stringify(this.selectData.tableLine))
console.log(cloneLine, 'cloneLine')
cloneLine.forEach((item, index) => {
if (index !== 0) {
termsLine.push(item.label)
}
})
this.chartsDatazzPie.legend.data = termsLine
let cloneSarr = JSON.parse(JSON.stringify(this.selectData.countData))
this.chartsDatazzPie.series = cloneSarr.map((item, index) => {
let obju = Object.values(item)
let keys = obju.shift()
return {
name: keys,
type: 'pie',
radius: '55%',
center: ['40%', '50%'],
data: obju.map((itemObj, indexObj) => {
return {
name: termsLine[indexObj],
value: itemObj
}
}),
itemStyle: {
emphasis: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
})
console.log(this.chartsDatazzPie)
return this.chartsDatazzPie
}
// 饼图数据 ============列转换
dataPieMapCol () {
let cloneLine = JSON.parse(JSON.stringify(this.selectData.tableLine))
let cloneSarr = JSON.parse(JSON.stringify(this.selectData.countData))
this.chartsDatazzPie.legend.data = cloneSarr.map((item, index) => {
return Object.values(item)[0]
})
this.chartsDatazzPie.series = {
name: cloneLine[1].label,
type: 'pie',
radius: '55%',
center: ['40%', '50%'],
data: cloneSarr.map((itemObj, indexObj) => {
return {
name: Object.values(itemObj)[0],
value: Object.values(itemObj)[1]
}
}),
itemStyle: {
emphasis: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
return this.chartsDatazzPie
}
// 导出至EXcel tableData:表数据 tableLine:列数据 listInputVal:选中列下标 lineInputVal:选中行下标 ===》对选中的部分导出
insertCollectS (tableData, tableLine, listInputVal, lineInputVal) {
// 定义一个对象用来分发数据
let objData = {
header: null,
tableData: null
}
let yuan = JSON.parse(JSON.stringify(listInputVal))
yuan.unshift(0)
// 除了第一行剩下的行的所有选中的数据
let shHangData = []
// 第一行所有选中的数据
// let hangAllDatas=[]
// let hangAllDatas = tableLine.filter((item, index) => {
// return listInputVal.indexOf(index) !== -1
// }).map((item, index) => {
// return item.label
// })
// lastAllData.push(hangAllDatas)
shHangData = tableData.map((item, index) => {
// tableData.forEach((list, key) => {
return Object.values(item).filter((list, key) => {
return yuan.indexOf(key) !== -1
})
// })
}).filter((item, index) => {
return lineInputVal.indexOf(index) !== -1
})
let hangAllDatas = null
if (tableLine.length < yuan.length) {
hangAllDatas = tableLine.map((item, index) => {
return tableLine[index].label
})
} else {
hangAllDatas = yuan.map((item, index) => {
return tableLine[item].label
})
}
// shHangData.unshift(hangAllDatas)
objData.header = hangAllDatas.map((item, index) => {
return [item, index]
})
objData.tableData = shHangData
// 导出的数据
return objData
}
/*
* @desc 导出至EXcel(表中有多少数据导出多少数据)
* @param tableData [Array] 表数据
* @param tableLine [Array] 列数据
*
*/
exportDataAll (tableData, tableLine) {
// 定义一个对象用来分发数据
let objData = {
header: null,
tableData: null
}
// 除了第一行剩下的行的所有选中的数据
let shHangData = []
shHangData = tableData.map((item, index) => {
return Object.values(item)
})
console.log(5555)
let hangAllDatas = null
hangAllDatas = tableLine.map((item, index) => {
return tableLine[index].label
})
// shHangData.unshift(hangAllDatas)
objData.header = hangAllDatas.map((item, index) => {
return [item, index]
})
objData.tableData = shHangData
// 导出的数据
return objData
}
}
export default computedFunc