m2pool_web_frontend/mining-pool/src/views/miningAccount/index.js

2241 lines
60 KiB
JavaScript
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.

import * as echarts from "echarts";
import { getMinerAccountPower, getMinerAccountInfo, getMinerList, getMinerPower, getHistoryIncome, getHistoryOutcome, getAccountPowerDistribution } from "../../api/miningAccount"
import { Debounce,throttle }from "../../utils/publicMethods";
export default {
data() {
return {
activeName: "power",
option: {
legend: {
right: 100,
show: true,
formatter: function (name) {
return name;
},
},
// grid: {//解决Y轴显示不全
// left: "2%",
// containLabel: true
// },
grid:{},
tooltip: {
trigger: "axis",
textStyle: {
align: "left",
},
animation: false,
formatter: function (params) {
var res
res = params[0].axisValueLabel;
for (let i = 0; i <= params.length - 1; i++) {
if (params[i].seriesName == "Rejection rate" || params[i].seriesName == "拒绝率") {
res += `</br>${params[i].marker} ${params[i].seriesName} &nbsp&nbsp&nbsp&nbsp <span style="font-weight: bold">${params[i].value}%</span>`
}else{
res += `</br>${params[i].marker} ${params[i].seriesName} &nbsp&nbsp&nbsp&nbsp <span style="font-weight: bold">${params[i].value}</span>`
}
}
return res;
},
axisPointer: {
animation: false,
snap: true,
label: {
precision: 2, //坐标轴保留的位数
},
type: "cross", //cross shadow
crossStyle: {
//十字轴横线
// opacity: "0",
width: 0.5,
},
lineStyle: {
// opacity: 0,
},
},
},
xAxis: {
// type: "time",
boundaryGap: false,
axisTick: {
//去除刻度
show: false,
},
axisLine: {
//去除轴线
show: false,
},
data: []
},
yAxis: [
{
position: "left",
type: "value",
name:"GH/s",
nameTextStyle:{
padding: [0, 0, 0,-40],
}
// min: `dataMin`,
// max: `dataMax`,
},
{
position: "right",
// type: "log",
splitNumber: "5",
show: true,
min:0,
max:100,
splitLine:{//不显示右侧Y轴横线
show: false
}
},
],
dataZoom: [
{
type: "inside",
start: 0,
end: 100,
maxSpan: 100,
minSpan: 2,
// animation: false,
},
{
type: "inside",//slider
start: 0,
end: 100,
// showDetail: false,
},
],
series: [
{
name: "总算力",
type: "line",
smooth: false, //线条是否圆滑
symbol: "circle",
symbolSize: 5,
showSymbol: false,
itemStyle: {
color: "#5721E4",
borderColor: "rgba(221,220,107,0.1)",
borderWidth: 12,
},
lineStyle: {
//线条样式
color: "#5721E4",
width: "2",
},
areaStyle: {
origin: 'start',//颜色始终显示在线条下
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: 'rgb(210,195,234)'
},
{
offset: 1,
color: 'rgb(255, 255, 255)'
}
])
},
data: [],
},
{
name: "Refusal rate",
type: "line",
smooth: false, //线条是否圆滑
symbol: "circle",
symbolSize: 5,
showSymbol: false,
itemStyle: {
color: "#FE2E74",
borderColor: "rgba(221,220,107,0.1)",
borderWidth: 12,
},
lineStyle: {
//线条样式
color: "#FE2E74",
width: "2",
},
areaStyle: {
origin: 'start',//颜色始终显示在线条下
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: 'rgb(252,220,233)'
},
{
offset: 1,
color: 'rgb(255, 255, 255)'
}
])
},
data: [],
yAxisIndex: 1,
},
],
},
barOption: {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: {
left: '3%',
right: '8%',
bottom: '3%',
containLabel: true
},
xAxis: [
{
name:"MH/s",
type: 'category',
data: [],
axisTick: {
alignWithLabel: true
}
}
],
yAxis: [
{
type: 'value',
show: true,
name:"Pcs",
nameTextStyle:{
padding: [0, 0, 0,-25],
}
}
],
dataZoom: [
{
type: "inside",
start: 0,
end: 100,
maxSpan: 100,
minSpan: 2,
animation: false,
},
{
type: "inside",//slider
start: 0,
end: 100,
// showDetail: false,
},
],
series: [
{
name: 'count',
type: 'bar',
barWidth: '60%',
data: [],
itemStyle: {
borderRadius: [100, 100, 0, 0],
color: "#7645EE",
}
}
]
},
miniOption: {
legend: {
right: 100,
show:false,
formatter: function (name) {
return name;
},
},
grid: {//解决Y轴显示不全
left: "5%",
containLabel: true
},
tooltip: {
trigger: "axis",
textStyle: {
align: "left",
},
animation: false,
formatter: function (params) {
var res
res = params[0].axisValueLabel;
for (let i = 0; i <= params.length - 1; i++) {
if (params[i].seriesName == "Rejection rate" || params[i].seriesName == "拒绝率") {
res += `</br>${params[i].marker} ${params[i].seriesName} &nbsp&nbsp&nbsp&nbsp <span style="font-weight: bold">${params[i].value}%</span>`
}else{
res += `</br>${params[i].marker} ${params[i].seriesName} &nbsp&nbsp&nbsp&nbsp <span style="font-weight: bold">${params[i].value}</span>`
}
}
return res;
},
axisPointer: {
animation: false,
snap: true,
label: {
precision: 2, //坐标轴保留的位数
},
type: "cross", //cross shadow
crossStyle: {
//十字轴横线
// opacity: "0",
width: 0.5,
},
lineStyle: {
// opacity: 0,
},
},
},
xAxis: {
// type: "time",
boundaryGap: false,
axisTick: {
//去除刻度
show: false,
},
axisLine: {
//去除轴线
show: false,
},
axisLabel:{},
data: ["07-1","07-1","07-1","07-1","07-1","07-1","07-1","07-1","07-1"]
},
yAxis: [
{
position: "left",
type: "value",
name:"MH/s",
nameTextStyle:{
padding: [0, 0, 0,-40],
}
// min: `dataMin`,
// max: `dataMax`,
// axisLabel: {
// formatter: function (value) {
// let data
// if (value > 10000000) {
// data = `${(value / 10000000)} KW`
// } else if (value > 1000000) {
// data = `${(value / 1000000)} M`
// } else if (value / 10000) {
// data = `${(value / 10000)} W`
// }
// return data
// }
// }
},
{
position: "right",
// type: "log",
splitNumber: "5",
show: true,
splitLine:{//不显示右侧Y轴横线
show: false
}
},
{
position: "right",
// type: "log",
splitNumber: "5",
show: false,
},
{
position: "right",
// type: "log",
splitNumber: "5",
show: false,
},
],
dataZoom: [
{
type: "inside",
start: 0,
end: 100,
maxSpan: 100,
minSpan: 2,
animation: false,
},
{
type: "inside",//slider
start: 0,
end: 100,
// showDetail: false,
},
],
series: [
{
name: "Computational power",
type: "line",
smooth: false, //线条是否圆滑
symbol: "circle",
symbolSize: 5,
showSymbol: false,
itemStyle: {
color: "#5721E4",
borderColor: "rgba(221,220,107,0.1)",
borderWidth: 12,
},
lineStyle: {
//线条样式
color: "#5721E4",
width: "2",
},
areaStyle: {
origin: 'start',//颜色始终显示在线条下
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: 'rgb(210,195,234)'
},
{
offset: 1,
color: 'rgb(255, 255, 255)'
}
])
},
data: [12,15,8,3,6,9,78,12,63],
},
{
name: "Refusal rate",
type: "line",
smooth: false, //线条是否圆滑
symbol: "circle",
symbolSize: 5,
showSymbol: false,
itemStyle: {
color: "#FE2E74",
borderColor: "rgba(221,220,107,0.1)",
borderWidth: 12,
},
lineStyle: {
//线条样式
color: "#FE2E74",
width: "2",
},
areaStyle: {
origin: 'start',//颜色始终显示在线条下
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: 'rgb(252,220,233)'
},
{
offset: 1,
color: 'rgb(255, 255, 255)'
}
])
},
data: [12,15,8,3,6,9,78,12,63],
yAxisIndex: 1,
},
],
},
onLineOption: {
legend: {
right: 100,
show:false,
formatter: function (name) {
return name;
},
},
grid: {//解决Y轴显示不全
left: "5%",
containLabel: true
},
tooltip: {
trigger: "axis",
textStyle: {
align: "left",
},
animation: false,
formatter: function (params) {
var res
res = params[0].axisValueLabel;
res += `</br>${params[0].marker} <span style="font-weight: bold">${params[0].seriesName}</span>\u00A0\u00A0\u00A0\u00A0 ${params[0].value}
</br>${params[1].marker} <span style="font-weight: bold">${params[1].seriesName}</span>\u00A0\u00A0\u00A0\u00A0 ${params[1].value}%
`;
return res;
},
axisPointer: {
animation: false,
snap: true,
label: {
precision: 2, //坐标轴保留的位数
},
type: "cross", //cross shadow
crossStyle: {
//十字轴横线
// opacity: "0",
width: 0.5,
},
lineStyle: {
// opacity: 0,
},
},
},
xAxis: {
// type: "time",
boundaryGap: false,
axisTick: {
//去除刻度
show: false,
},
axisLine: {
//去除轴线
show: false,
},
data: ["07-1","07-1","07-1","07-1","07-1","07-1","07-1","07-1","07-1"]
},
yAxis: [
{
position: "left",
type: "value",
name:"MH/s",
nameTextStyle:{
padding: [0, 0, 0,-40],
}
// min: `dataMin`,
// max: `dataMax`,
// axisLabel: {
// formatter: function (value) {
// let data
// if (value > 10000000) {
// data = `${(value / 10000000)} KW`
// } else if (value > 1000000) {
// data = `${(value / 1000000)} M`
// } else if (value / 10000) {
// data = `${(value / 10000)} W`
// }
// return data
// }
// }
},
{
position: "right",
// type: "log",
splitNumber: "5",
show: true,
},
{
position: "right",
// type: "log",
splitNumber: "5",
show: false,
},
{
position: "right",
// type: "log",
splitNumber: "5",
show: false,
},
],
dataZoom: [
{
type: "inside",
start: 0,
end: 100,
maxSpan: 100,
minSpan: 2,
animation: false,
},
{
type: "inside",//slider
start: 0,
end: 100,
// showDetail: false,
},
],
series: [
{
name: "Computational power",
type: "line",
smooth: false, //线条是否圆滑
symbol: "circle",
symbolSize: 5,
showSymbol: false,
itemStyle: {
color: "#5721E4",
borderColor: "rgba(221,220,107,0.1)",
borderWidth: 12,
},
lineStyle: {
//线条样式
color: "#5721E4",
width: "2",
},
areaStyle: {
origin: 'start',//颜色始终显示在线条下
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: 'rgb(210,195,234)'
},
{
offset: 1,
color: 'rgb(255, 255, 255)'
}
])
},
data: [12,15,8,3,6,9,78,12,63],
},
{
name: "Refusal rate",
type: "line",
smooth: false, //线条是否圆滑
symbol: "circle",
symbolSize: 5,
showSymbol: false,
itemStyle: {
color: "#FE2E74",
borderColor: "rgba(221,220,107,0.1)",
borderWidth: 12,
},
lineStyle: {
//线条样式
color: "#FE2E74",
width: "2",
},
areaStyle: {
origin: 'start',//颜色始终显示在线条下
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: 'rgb(252,220,233)'
},
{
offset: 1,
color: 'rgb(255, 255, 255)'
}
])
},
data: [12,15,8,3,6,9,78,12,63],
yAxisIndex: 1,
},
],
},
OffLineOption: {
legend: {
right: 100,
show:false,
formatter: function (name) {
return name;
},
},
grid: {//解决Y轴显示不全
left: "5%",
containLabel: true
},
tooltip: {
trigger: "axis",
textStyle: {
align: "left",
},
animation: false,
formatter: function (params) {
var res
res = params[0].axisValueLabel;
res += `</br>${params[0].marker} <span style="font-weight: bold">${params[0].seriesName}</span>\u00A0\u00A0\u00A0\u00A0 ${params[0].value}
</br>${params[1].marker} <span style="font-weight: bold">${params[1].seriesName}</span>\u00A0\u00A0\u00A0\u00A0 ${params[1].value}%
`;
return res;
},
axisPointer: {
animation: false,
snap: true,
label: {
precision: 2, //坐标轴保留的位数
},
type: "cross", //cross shadow
crossStyle: {
//十字轴横线
// opacity: "0",
width: 0.5,
},
lineStyle: {
// opacity: 0,
},
},
},
xAxis: {
// type: "time",
boundaryGap: false,
axisTick: {
//去除刻度
show: false,
},
axisLine: {
//去除轴线
show: false,
},
data: ["07-1","07-1","07-1","07-1","07-1","07-1","07-1","07-1","07-1"]
},
yAxis: [
{
position: "left",
type: "value",
name:"MH/s",
nameTextStyle:{
padding: [0, 0, 0,-40],
}
// min: `dataMin`,
// max: `dataMax`,
// axisLabel: {
// formatter: function (value) {
// let data
// if (value > 10000000) {
// data = `${(value / 10000000)} KW`
// } else if (value > 1000000) {
// data = `${(value / 1000000)} M`
// } else if (value / 10000) {
// data = `${(value / 10000)} W`
// }
// return data
// }
// }
},
{
position: "right",
// type: "log",
splitNumber: "5",
show: true,
splitLine:{//不显示右侧Y轴横线
show: false
}
},
],
dataZoom: [
{
type: "inside",
start: 0,
end: 100,
maxSpan: 100,
minSpan: 2,
animation: false,
},
{
type: "inside",//slider
start: 0,
end: 100,
// showDetail: false,
},
],
series: [
{
name: "Computational power",
type: "line",
smooth: false, //线条是否圆滑
symbol: "circle",
symbolSize: 5,
showSymbol: false,
itemStyle: {
color: "#5721E4",
borderColor: "rgba(221,220,107,0.1)",
borderWidth: 12,
},
lineStyle: {
//线条样式
color: "#5721E4",
width: "2",
},
areaStyle: {
origin: 'start',//颜色始终显示在线条下
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: 'rgb(210,195,234)'
},
{
offset: 1,
color: 'rgb(255, 255, 255)'
}
])
},
data: [12,15,8,3,6,9,78,12,63],
},
{
name: "Refusal rate",
type: "line",
smooth: false, //线条是否圆滑
symbol: "circle",
symbolSize: 5,
showSymbol: false,
itemStyle: {
color: "#FE2E74",
borderColor: "rgba(221,220,107,0.1)",
borderWidth: 12,
},
lineStyle: {
//线条样式
color: "#FE2E74",
width: "2",
},
areaStyle: {
origin: 'start',//颜色始终显示在线条下
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: 'rgb(252,220,233)'
},
{
offset: 1,
color: 'rgb(255, 255, 255)'
}
])
},
data: [12,15,8,3,6,9,78,12,63],
yAxisIndex: 1,
},
],
},
sunTabActiveName: "all",
Accordion: "",
currentPage: 1,
params: {
account: "lx888",
coin: "grs",
},
PowerParams: {
account: "lx888",
coin: "grs",
interval: "rt",
},
PowerDistribution: {
account: "lx888",
coin: "grs",
interval: "rt",
},
MinerListParams: {
account: "lx888",
coin: "grs",
type: "0",
filter: "",
limit: 50,
page: 1,
sort:`30m`,
collation:`asc`,
},
activeName2: "power", //power
IncomeParams: {
account: "lx888",
coin: "grs",
limit: 10,
page: 1,
},
OutcomeParams: {
account: "lx888",
coin: "grs",
limit: 10,
page: 1,
},
MinerAccountData: {
// totalProfit: "78678862.96791889",
// expend: "78678862.96791889",
// preProfit: "78678862.96791889",
// todayPorfit: "78678862.96791889",
// balance: "78678862.96791889",
},
MinerListData: {
// all: "100",
// online: "99",
// offline: "1",
// miner: "",
// rate: "55656",
// dailyRate: "5656",
// reject: "",
},
intervalList: [
// {
// value: "1h",
// label: "home.hour",
// },
{
value: "rt",
label: "home.realTime",
},
{
value: "1d",
label: "home.day",
},
],
HistoryIncomeData: [
// {
// date: "2021-09-21",
// coin: "ETH",
// amount: "565S656",
// comment: "挖矿收益",
// },
// {
// date: "2021-09-21",
// coin: "ETH",
// amount: "56G5656",
// comment: "挖矿收益",
// },
// {
// date: "2021-09-21",
// coin: "ETH",
// amount: "565Y656",
// comment: "挖矿收益",
// },
// {
// date: "2021-09-21",
// coin: "ETH",
// amount: "5645656",
// comment: "挖矿收益",
// },
// {
// date: "2021-09-21",
// coin: "ETH",
// amount: "5645656",
// comment: "挖矿收益",
// },
// {
// date: "2021-09-21",
// coin: "ETH",
// amount: "5645656",
// comment: "挖矿收益",
// },
// {
// date: "2021-09-21",
// coin: "ETH",
// amount: "5645656",
// comment: "挖矿收益",
// },
// {
// date: "2021-09-21",
// coin: "ETH",
// amount: "5645656",
// comment: "挖矿收益",
// },
// {
// date: "2021-09-21",
// coin: "ETH",
// amount: "5645656",
// comment: "挖矿收益",
// },
// {
// date: "2021-09-21",
// coin: "ETH",
// amount: "5645656",
// comment: "挖矿收益",
// },
// {
// date: "2021-09-21",
// coin: "ETH",
// amount: "5645656",
// comment: "挖矿收益",
// },
// {
// date: "2021-09-21",
// coin: "ETH",
// amount: "5645656",
// comment: "挖矿收益",
// },
],
HistoryOutcomeData: [
// {
// date: "2021-09-21",
// address: "0x1234567890",
// comment: "mona",
// amount: "56D5656",
// txid: "12345678d90",
// status: 0,
// },
// {
// date: "2021-09-21",
// address: "0x1234567890",
// comment: "mona",
// amount: "56G5656",
// txid: "123456f7890",
// status: 0,
// },
// {
// date: "2021-09-21",
// address: "0x1234567890",
// comment: "mona",
// amount: "565T656",
// txid: "123sf4567890",
// status: 0,
// },
// {
// date: "2021-09-21",
// address: "0x1234567890",
// comment: "mona",
// amount: "56D5656",
// txid: "12345678d90",
// status: 0,
// },
// {
// date: "2021-09-21",
// address: "0x1234567890",
// comment: "mona",
// amount: "56G5656",
// txid: "123456f7890",
// },
// {
// date: "2021-09-21",
// address: "0x1234567890",
// comment: "mona",
// amount: "565T656",
// txid: "123sf4567890",
// },
// {
// date: "2021-09-21",
// address: "0x1234567890",
// comment: "mona",
// amount: "56D5656",
// txid: "12345678d90",
// },
// {
// date: "2021-09-21",
// address: "0x1234567890",
// comment: "mona",
// amount: "56G5656",
// txid: "123456f7890",
// },
// {
// date: "2021-09-21",
// address: "0x1234567890",
// comment: "mona",
// amount: "565T656",
// txid: "123sf4567890",
// },
// {
// date: "2021-09-21",
// address: "0x1234567890",
// comment: "mona",
// amount: "56D5656",
// txid: "12345678d90",
// },
// {
// date: "2021-09-21",
// address: "0x1234567890",
// comment: "mona",
// amount: "56G5656",
// txid: "123456f7890",
// },
// {
// date: "2021-09-21",
// address: "0x1234567890",
// comment: "mona",
// amount: "565T656",
// txid: "123sf4567890",
// },
],
currentPageIncome: 1,
MinerListTableData: [
// {
// miner: "107fx61",
// rate: "0.0066666 ",
// dailyRate: "0.019999 ",
// reject: "0.01 TH/s",
// offline:1442,
// status:1
// },
// {
// miner: "107dfx62",
// rate: "0.407777 ",
// dailyRate: "0.016666 ",
// reject: "0.01 TH/s",
// offline:82,
// status:2
// },
// {
// miner: "107dfsx63",
// rate: "0.9635656 ",
// dailyRate: "0.018888",
// reject: "0.01 TH/s",
// offline:78,
// status:2
// },
// {
// miner: "107xsf6",
// rate: "0.00 H/s",
// dailyRate: "0.01 TH/s",
// reject: "0.01 TH/s",
// offline:61,
// status:1
// },
// {
// miner: "107xsf666",
// rate: "0.00 H/s",
// dailyRate: "0.01 TH/s",
// reject: "0.01 TH/s",
// offline:61,
// status:2
// },
// {
// miner: "107xsf678",
// rate: "0.00 H/s",
// dailyRate: "0.01 TH/s",
// reject: "0.01 TH/s",
// offline:61,
// status:1
// },
// {
// miner: "107xsf6",
// rate: "0.00 H/s",
// dailyRate: "0.01 TH/s",
// reject: "0.01 TH/s",
// offline:61,
// status:2
// },
// {
// miner: "107xsf6",
// rate: "0.00 H/s",
// dailyRate: "0.01 TH/s",
// reject: "0.01 TH/s",
// offline:61,
// status:2
// },
// {
// miner: "107xsf6",
// rate: "0.00 H/s",
// dailyRate: "0.01 TH/s",
// reject: "0.01 TH/s",
// offline:61,
// status:2
// },
// {
// miner: "107xsf6",
// rate: "0.00 H/s",
// dailyRate: "0.01 TH/s",
// reject: "0.01 TH/s",
// offline:61,
// status:2
// },
],
AccountPowerDistributionintervalList: [
{
value: "rt",
label: "home.realTime",
},
{
value: "1d",
label: "home.day",
},
],
miniLoading:false,
search: "",
input2: "",
timeActive: "rt",
barActive: "rt",
powerChartLoading: false,
barChartLoading: false,
miniChartParams: {
miner: "",
coin: "grs",
},
ids: "smallChart107fx61",
activeMiner:"",
miniId:"",
MinerListLoading:false,
miner:"miner",
accountId:"",
currentPageMiner: 1,
minerTotal:0,
accountItem:{},
HistoryIncomeTotal:0,
HistoryOutcomeTotal:0,
stateList:[{
value: "1",
label: "mining.onLine"
},{
value: "2",
label: "mining.offLine"
},
],
Sort30:"asc",
Sort1h:"asc",
paymentStatusList:[
{
value: 0,
label: "mining.paymentInProgress"
},
{
value: 1,
label: "mining.paymentCompleted"
}
],
lang: 'zh',
}
},
computed: {
sortedMinerListTableData() { //离线旷工靠前
if (!this.MinerListTableData) return [];
return [...this.MinerListTableData].sort((a, b) => {
// 确保 status 是字符串类型
const statusA = String(a.status);
const statusB = String(b.status);
// 离线status='2')的排在前面
if (statusA === '2' && statusB !== '2') return -1;
if (statusA !== '2' && statusB === '2') return 1;
// status 相同时保持原有顺序
return 0;
});
}
},
watch: {
'$route' (to, from) {
this.accountItem = JSON.parse(localStorage.getItem(`accountItem`))
this.accountId = this.accountItem .id
this.params.account = this.accountItem .ma
this.params.coin = this.accountItem .coin
this.PowerParams.account = this.accountItem .ma
this.PowerParams.coin = this.accountItem .coin
this.PowerDistribution.account = this.accountItem .ma
this.PowerDistribution.coin = this.accountItem .coin
this.MinerListParams.account = this.accountItem .ma
this.MinerListParams.coin = this.accountItem .coin
this.OutcomeParams.account = this.accountItem .ma
this.OutcomeParams.coin = this.accountItem .coin
this.IncomeParams.account = this.accountItem .ma
this.IncomeParams.coin = this.accountItem .coin
this.getMinerAccountInfoData(this.params)
this.getMinerAccountPowerData(this.PowerParams)
this.getAccountPowerDistributionData(this.PowerDistribution)
this.getMinerListData(this.MinerListParams)
this.getHistoryIncomeData(this.IncomeParams)
this.getHistoryOutcomeData(this.OutcomeParams)
},
"$i18n.locale":{
handler(val) {
// this.lang = val;
location.reload();//刷新页面 刷新echarts
},
}
},
mounted() {
this.lang = this.$i18n.locale;
this.accountItem = JSON.parse(localStorage.getItem(`accountItem`))
this.accountId = this.accountItem .id
this.params.account = this.accountItem .ma
this.params.coin = this.accountItem .coin
this.PowerParams.account = this.accountItem .ma
this.PowerParams.coin = this.accountItem .coin
this.PowerDistribution.account = this.accountItem .ma
this.PowerDistribution.coin = this.accountItem .coin
this.MinerListParams.account = this.accountItem .ma
this.MinerListParams.coin = this.accountItem .coin
this.OutcomeParams.account = this.accountItem .ma
this.OutcomeParams.coin = this.accountItem .coin
this.IncomeParams.account = this.accountItem .ma
this.IncomeParams.coin = this.accountItem .coin
if (this.$isMobile) {
this.option.yAxis[1].show =false
this.option.grid.left="16%"
this.option.grid.right="5%"
this.option.grid.top="10%"
this.option.grid.bottom="45%"
this.option.legend.bottom=18
this.option.legend.right="30%"
this.option.xAxis.axisLabel= {
interval: 8,
rotate: 70
}
this.barOption.grid.right="16%"
this.miniOption.yAxis[1].show =false
}
this.getMinerAccountInfoData(this.params)
this.getMinerAccountPowerData(this.PowerParams)
this.getAccountPowerDistributionData(this.PowerDistribution)
this.getMinerListData(this.MinerListParams)
this.getHistoryIncomeData(this.IncomeParams)
this.getHistoryOutcomeData(this.OutcomeParams)
},
methods: {
//初始化图表
inCharts() {
this.myChart = echarts.init(document.getElementById("powerChart"));
this.option.series[0].name= this.$t(`home.finallyPower`)
this.option.series[1].name= this.$t(`home.rejectionRate`)
this.myChart.setOption(this.option);
window.addEventListener('resize', throttle(() => {
if (this.myChart) this.myChart.resize();
}, 200));
},
//初始化小图表
smallInCharts(option) {
// if (this.miniChart == null) {
// this.miniChart = echarts.init(document.getElementById("smallChart"));
// }
// this.miniChart.setOption(this.miniOption,true);
if (this.$isMobile) {
this.miniOption.yAxis[1].show =false
}
option.series[0].name= this.$t(`home.minerSComputingPower`)
option.series[1].name= this.$t(`home.rejectionRate`)
this.miniChart.setOption(option,true);
window.addEventListener('resize', throttle(() => {
if (this.miniChart) this.miniChart.resize();
}, 200));
},
barInCharts() {
if (this.barChart == null) {
this.barChart = echarts.init(document.getElementById("barChart"));
}
this.barOption.series[0].name = this.$t(`home.numberOfMiningMachines`);
this.barChart.setOption(this.barOption);
window.addEventListener('resize', throttle(() => {
if (this.barChart) this.barChart.resize();
}, 200));
},
//获取当前挖矿账号信息(包含收益、余额)
async getMinerAccountInfoData(params) {
const data = await getMinerAccountInfo(params)
this.MinerAccountData = data.data
// console.log(data,"获取币种信息");
},
async getMinerAccountPowerData(params) {
this.powerChartLoading = true
const data = await getMinerAccountPower(params)
if (!data) {
this.powerChartLoading = false
if (this.myChart) {
this.myChart.dispose()//销毁图表实列
}
return
}
let chartData = data.data
let xData = []
let pvData = []
let rejectRate = []
chartData.forEach(item => {
if (item.date.includes(`T`) && params.interval == `rt`) {
item.date= `${item.date.split("T")[0]} ${item.date.split("T")[1].split(`.`)[0]}`
} else if(item.date.includes(`T`) && params.interval == `1d`){
item.date= item.date.split("T")[0]
}
xData.push(item.date)
pvData.push(item.pv.toFixed(2))
rejectRate.push((item.rejectRate * 100).toFixed(4))
});
let maxValue = Math.max(...rejectRate)
maxValue= Math.round(maxValue*3)
if (maxValue>0) {
this.option.yAxis[1].max=maxValue
}
this.option.xAxis.data = xData
this.option.series[0].data = pvData
this.option.series[1].data = rejectRate
this.inCharts()
this.powerChartLoading = false
},
async getAccountPowerDistributionData(params) {
this.barChartLoading = true
const data = await getAccountPowerDistribution(params)
let barData = data.data
let xData = []
let barValueList = []
barData.forEach(item => {
xData.push(`${item.low}-${item.high}`)
barValueList.push(item.count)
})
this.barOption.xAxis[0].data = xData
this.barOption.series[0].data = barValueList
this.barInCharts()
this.barChartLoading = false
},
formatNumber(num) {//保留两位小数并补0
const intPart = Math.floor(num);
const decimalPart = Math.floor((num - intPart) * 100);
return `${intPart}.${String(decimalPart).padStart(2, '0')}`;
},
async getMinerListData(params) {
this.MinerListLoading = true
const data = await getMinerList(params)
if (data && data.code == 200) {
this.MinerListData = data.data
if (this.MinerListData.submit && this.MinerListData.submit.includes(`T`)) {
this.MinerListData.submit =`${this.MinerListData.submit.split(`T`)[0]} ${this.MinerListData.submit.split(`T`)[1].split(`.`)[0]}`
}
this.MinerListTableData = data.data.rows
this.MinerListData.rate = this.formatNumber(this.MinerListData.rate)
this.MinerListData.dailyRate = this.formatNumber(this.MinerListData.dailyRate)
this.MinerListTableData.forEach(item=>{
if (item.submit.includes(`T`)) {
item.submit = `${item.submit.split(`T`)[0]} ${item.submit.split(`T`)[1].split(`.`)[0]}`
}
item.rate= this.formatNumber(item.rate)
item.dailyRate= this.formatNumber(item.dailyRate)
})
this.minerTotal= data.data.total
// switch (this.sunTabActiveName) {
// case "all":
// this.minerTotal=data.data.all
// break;
// case "onLine":
// this.minerTotal=data.data.online
// break;
// case "off-line":
// this.minerTotal=data.data.offline
// break;
// default:
// break;
// }
}
this.MinerListLoading = false
},
//小图
// async getMinerPowerData(params) {
// this.miniLoading=true
// const data = await getMinerPower(params)
// if (!data) {
// this.miniLoading=false
// return
// }
// let miniData = data.data
// let xData = []
// let pv = []
// let rejectRate = []
// miniData.forEach(item => {
// if (item.date.includes(`T`) && params.interval == `1h`) {
// item.date= `${item.date.split("T")[0]} ${item.date.split("T")[1].split(`.`)[0]}`
// } else if(item.date.includes(`T`) && params.interval == `1d`){
// item.date= item.date.split("T")[0]
// }
// item.date= `${item.date.split("T")[0]} ${item.date.split("T")[1].split(`.`)[0]}`
// xData.push(item.date)
// pv.push(item.pv.toFixed(2))
// rejectRate.push((item.rejectRate * 100).toFixed(4))
// })
// this.miniOption.xAxis.data = xData
// this.miniOption.series[0].data = pv
// this.miniOption.series[1].data = rejectRate
// this.miniOption.series[0].name= this.$t(`home.finallyPower`)
// this.miniOption.series[1].name= this.$t(`home.rejectionRate`)
// this.ids = `SmallChart${this.miniId}`
// this.miniChart = echarts.init(document.getElementById(this.ids))
// let maxValue = Math.max(...rejectRate)
// maxValue= Math.round(maxValue*3)
// if (maxValue>0) {
// this.miniOption.yAxis[1].max=maxValue
// }
// this.$nextTick(() => {
// this.smallInCharts(this.miniOption)
// });
// this.miniLoading=false
// },
getMinerPowerData:Debounce(async function(params){
this.miniLoading=true
const data = await getMinerPower(params)
if (!data) {
this.miniLoading=false
return
}
let miniData = data.data
let xData = []
let pv = []
let rejectRate = []
miniData.forEach(item => {
if (item.date.includes(`T`) && params.interval == `1h`) {
item.date= `${item.date.split("T")[0]} ${item.date.split("T")[1].split(`.`)[0]}`
} else if(item.date.includes(`T`) && params.interval == `1d`){
item.date= item.date.split("T")[0]
}
item.date= `${item.date.split("T")[0]} ${item.date.split("T")[1].split(`.`)[0]}`
xData.push(item.date)
pv.push(item.pv.toFixed(2))
rejectRate.push((item.rejectRate * 100).toFixed(4))
})
this.miniOption.xAxis.data = xData
this.miniOption.series[0].data = pv
this.miniOption.series[1].data = rejectRate
this.miniOption.series[0].name= this.$t(`home.finallyPower`)
this.miniOption.series[1].name= this.$t(`home.rejectionRate`)
this.ids = `SmallChart${this.miniId}`
this.miniChart = echarts.init(document.getElementById(this.ids))
let maxValue = Math.max(...rejectRate)
maxValue= Math.round(maxValue*3)
if (maxValue>0) {
this.miniOption.yAxis[1].max=maxValue
}
this.$nextTick(() => {
this.smallInCharts(this.miniOption)
});
console.log(this.miniOption,5656565);
this.miniLoading=false
},200),
//小图
// async getMinerPowerOnLine(params) {
// this.miniLoading=true
// const data = await getMinerPower(params)
// if (!data) {
// this.miniLoading=false
// return
// }
// let miniData = data.data
// let xData = []
// let pv = []
// let rejectRate = []
// miniData.forEach(item => {
// if (item.date.includes(`T`)) {
// xData.push(`${item.date.split("T")[0]} ${item.date.split("T")[1].split(".")[0]}` )
// } else {
// xData.push(item.date)
// }
// pv.push(item.pv.toFixed(2))
// rejectRate.push((item.rejectRate * 100).toFixed(4))
// })
// this.onLineOption.xAxis.data = xData
// this.onLineOption.series[0].data = pv
// this.onLineOption.series[1].data = rejectRate
// this.onLineOption.series[0].name= this.$t(`home.finallyPower`)
// this.onLineOption.series[1].name= this.$t(`home.rejectionRate`)
// this.ids = `Small${this.miniId}`
// this.miniChartOnLine = echarts.init(document.getElementById(this.ids))
// this.$nextTick(() => {
// this.miniChartOnLine.setOption(this.onLineOption,true);
// window.addEventListener("resize", () => {
// if (this.miniChartOnLine) this.miniChartOnLine.resize();
// });
// });
// this.miniLoading=false
// },
getMinerPowerOnLine:Debounce(async function(params){
this.miniLoading=true
const data = await getMinerPower(params)
if (!data) {
this.miniLoading=false
return
}
let miniData = data.data
let xData = []
let pv = []
let rejectRate = []
miniData.forEach(item => {
if (item.date.includes(`T`)) {
xData.push(`${item.date.split("T")[0]} ${item.date.split("T")[1].split(".")[0]}` )
} else {
xData.push(item.date)
}
pv.push(item.pv.toFixed(2))
rejectRate.push((item.rejectRate * 100).toFixed(4))
})
this.onLineOption.xAxis.data = xData
this.onLineOption.series[0].data = pv
this.onLineOption.series[1].data = rejectRate
this.onLineOption.series[0].name= this.$t(`home.finallyPower`)
this.onLineOption.series[1].name= this.$t(`home.rejectionRate`)
this.ids = `Small${this.miniId}`
this.miniChartOnLine = echarts.init(document.getElementById(this.ids))
this.$nextTick(() => {
this.miniChartOnLine.setOption(this.onLineOption,true);
// window.addEventListener("resize", () => {
// if (this.miniChartOnLine) this.miniChartOnLine.resize();
// });
window.addEventListener('resize', throttle(() => {
if (this.miniChartOnLine) this.miniChartOnLine.resize();
}, 200));
});
this.miniLoading=false
},200),
//小图
// async getMinerPowerOffLine(params) {
// this.miniLoading=true
// const data = await getMinerPower(params)
// if (!data) {
// this.miniLoading=false
// return
// }
// let miniData = data.data
// let xData = []
// let pv = []
// let rejectRate = []
// miniData.forEach(item => {
// if (item.date.includes(`T`)) {
// xData.push(`${item.date.split("T")[0]} ${item.date.split("T")[1].split(".")[0]}` )
// } else {
// xData.push(item.date)
// }
// pv.push(item.pv.toFixed(2))
// rejectRate.push((item.rejectRate * 100).toFixed(4))
// })
// this.OffLineOption.xAxis.data = xData
// this.OffLineOption.series[0].data = pv
// this.OffLineOption.series[1].data = rejectRate
// this.OffLineOption.series[0].name= this.$t(`home.finallyPower`)
// this.OffLineOption.series[1].name= this.$t(`home.rejectionRate`)
// this.ids = `SmallOff${this.miniId}`
// this.miniChartOff = echarts.init(document.getElementById(this.ids))
// this.$nextTick(() => {
// this.miniChartOff.setOption(this.OffLineOption,true);
// window.addEventListener("resize", () => {
// if (this.miniChartOff) this.miniChartOff.resize();
// });
// });
// this.miniLoading=false
// },
getMinerPowerOffLine:Debounce(async function(params){
this.miniLoading=true
const data = await getMinerPower(params)
if (!data) {
this.miniLoading=false
return
}
let miniData = data.data
let xData = []
let pv = []
let rejectRate = []
miniData.forEach(item => {
if (item.date.includes(`T`)) {
xData.push(`${item.date.split("T")[0]} ${item.date.split("T")[1].split(".")[0]}` )
} else {
xData.push(item.date)
}
pv.push(item.pv.toFixed(2))
rejectRate.push((item.rejectRate * 100).toFixed(4))
})
this.OffLineOption.xAxis.data = xData
this.OffLineOption.series[0].data = pv
this.OffLineOption.series[1].data = rejectRate
this.OffLineOption.series[0].name= this.$t(`home.finallyPower`)
this.OffLineOption.series[1].name= this.$t(`home.rejectionRate`)
this.ids = `SmallOff${this.miniId}`
this.miniChartOff = echarts.init(document.getElementById(this.ids))
this.$nextTick(() => {
this.miniChartOff.setOption(this.OffLineOption,true);
// window.addEventListener("resize", () => {
// if (this.miniChartOff) this.miniChartOff.resize();
// });
window.addEventListener('resize', throttle(() => {
if (this.miniChartOff) this.miniChartOff.resize();
}, 200))
});
this.miniLoading=false
},200),
async getHistoryIncomeData(params) {
const data = await getHistoryIncome(params)
if (data && data.code == 200) {
this.HistoryIncomeData = data.rows
this.HistoryIncomeTotal=data.total
this.HistoryIncomeData.forEach(item=>{
if (item.date.includes(`T`)) {
item.date =item.date.split(`T`)[0]
}
})
}
},
async getHistoryOutcomeData(params) {
const data = await getHistoryOutcome(params)
if (data && data.code == 200) {
this.HistoryOutcomeData = data.rows
this.HistoryOutcomeTotal=data.total
this.HistoryOutcomeData.forEach(item=>{
if (item.date.includes(`T`)) {
item.date =`${item.date.split(`T`)[0]} `
}
})
}
},
// handelMiniChart(id, miner) {
// if (!this.Accordion) return
// this.miniId = id
// this.miner = miner
// this.$nextTick(() => {
// this.getMinerPowerData({ miner:miner, coin: this.params.coin, account: this.params.account })
// });
// },
handelMiniChart: throttle(function(id, miner) {
if (!this.Accordion) return
this.miniId = id
this.miner = miner
this.$nextTick(() => {
this.getMinerPowerData({ miner:miner, coin: this.params.coin, account: this.params.account })
});
}, 1000),
// handelOnLineMiniChart(id, miner){
// if (!this.Accordion) return
// this.miniId = id
// this.$nextTick(() => {
// this.getMinerPowerOnLine({ miner:miner, coin: this.params.coin, account: this.params.account })
// });
// },
handelOnLineMiniChart: throttle(function(id, miner) {
if (!this.Accordion) return
this.miniId = id
this.$nextTick(() => {
this.getMinerPowerOnLine({ miner:miner, coin: this.params.coin, account: this.params.account })
});
}, 1000),
// handelMiniOffLine(id, miner){
// if (!this.Accordion) return
// this.miniId = id
// this.$nextTick(() => {
// this.getMinerPowerOffLine({ miner:miner, coin: this.params.coin, account: this.params.account })
// });
// },
handelMiniOffLine: throttle(function(id, miner) {
if (!this.Accordion) return
this.miniId = id
this.$nextTick(() => {
this.getMinerPowerOffLine({ miner:miner, coin: this.params.coin, account: this.params.account })
});
}, 1000),
handleClick() {
switch (this.activeName) {
case "power":
this.inCharts()
// this.getMinerAccountPowerData(this.PowerParams)
break;
case "miningMachineDistribution":
this.distributionInCharts()
// this.getAccountPowerDistributionData(this.PowerDistribution)
break;
default:
break;
}
},
handleClick2(activeName2) {
this.activeName2 = activeName2;
this.search=""
this.MinerListParams.filter=""
this.Accordion=""
this.IncomeParams.limit=10
this.MinerListParams.limit=50
this.OutcomeParams.limit =10
switch (this.activeName2) {
case "power":
this.getMinerListData(this.MinerListParams)
break;
case "miningMachine":
this.getHistoryIncomeData(this.IncomeParams)
break;
case "payment":
this.getHistoryOutcomeData(this.OutcomeParams)
break;
default:
break;
}
},
onlineStatus(sunTabActiveName) {
this.Accordion=""
this.search=""
this.MinerListParams.filter=""
this.sunTabActiveName = sunTabActiveName
switch (this.sunTabActiveName) {
case "all":
this.MinerListParams.type = 0
break;
case "onLine":
this.MinerListParams.type = 1
break;
case "off-line":
this.MinerListParams.type = 2
break;
default:
break;
}
this.getMinerListData(this.MinerListParams)
},
handleInterval(value) {
this.PowerParams.interval = value
this.timeActive = value
this.getMinerAccountPowerData(this.PowerParams)
},
distributionInterval(value) {
this.PowerDistribution.interval = value
this.barActive = value
this.getAccountPowerDistributionData(this.PowerDistribution)
},
handelSearch() {
this.MinerListParams.filter = this.search
this.getMinerListData(this.MinerListParams)
},
handleSizeChange(val) {
console.log(`每页 ${val}`);
this.OutcomeParams.limit = val
this.OutcomeParams.page = 1
this.getHistoryOutcomeData(this.OutcomeParams)
this.currentPage = 1
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.OutcomeParams.page = val
this.getHistoryOutcomeData(this.OutcomeParams)
},
handleSizeChangeIncome(val) {
console.log(`每页 ${val}`);
this.IncomeParams.limit = val
this.IncomeParams.page = 1
this.getHistoryIncomeData(this.IncomeParams)
this.currentPageIncome = 1
},
handleCurrentChangeIncome(val) {
console.log(`当前页: ${val}`);
this.IncomeParams.page = val
this.getHistoryIncomeData(this.IncomeParams)
},
handleSizeMiner(val) {
console.log(`每页 ${val}`);
this.MinerListParams.limit = val
this.MinerListParams.page = 1
this.getMinerListData(this.MinerListParams)
this.currentPageMiner = 1
},
handleCurrentMiner(val) {
console.log(`当前页: ${val}`);
this.MinerListParams.page = val
this.getMinerListData(this.MinerListParams)
},
handelStateList(value ){
return this.stateList.find(item => item.value == value).label || ""
},
handleSort(sort){
this.MinerListParams.sort = sort
if ( this.MinerListParams.collation == "asc") {
this.MinerListParams.collation = "desc"
}else{
this.MinerListParams.collation = "asc"
}
this.getMinerListData(this.MinerListParams)
},
handleSort30(){
if ( this.MinerListParams.collation[0] == "asc") {
this.MinerListParams.collation[0] = "desc"
}else{
this.MinerListParams.collation[0] = "asc"
}
this.getMinerListData(this.MinerListParams)
},
handleSort1h(){
if ( this.MinerListParams.collation[1] == "asc") {
this.MinerListParams.collation[1] = "desc"
}else{
this.MinerListParams.collation[1] = "asc"
}
this.getMinerListData(this.MinerListParams)
},
handelTimeInterval(time){
if (time) {
var seconds = time * 60;
var days = Math.floor(seconds / (3600 * 24));
var hours = Math.floor((seconds % (3600 * 24)) / 3600);
var minutes = Math.floor((seconds % 3600) / 60);
var secs = seconds % 60;
// var hours = Math.floor(minutes / 60);
// var remainingMinutes = minutes % 60;
// return hours + "时" + remainingMinutes + "分";
if (days) {
return `(${days}${this.$t(`personal.day`)} ${hours}${this.$t(`personal.hour`)} ${minutes}${this.$t(`personal.minute`)} ${this.$t(`personal.front`)})`
}else if (hours) {
return `(${hours}${this.$t(`personal.hour`)} ${minutes}${this.$t(`personal.minute`)} ${this.$t(`personal.front`)})`
}else if(minutes){
return `( ${minutes}${this.$t(`personal.minute`)} ${this.$t(`personal.front`)})`
}
}
},
jumpPage() {
this.$router.push({
path: `/${this.lang}/personalCenter/personalMining`,
query: {
id: this.accountId,
coin: this.params.coin,
ma: this.params.account
}
});
},
async copyTxid(ID) {
let id = `id${ID}`
let d= document.getElementById(id)
// d.select() //选中
// document.execCommand("copy") //直接复制
try {
await navigator.clipboard.writeText(d.textContent);
this.$message({
showClose: true,
message: this.$t(`personal.copySuccessful`),
type: 'success'
});
} catch (err) {
console.log(err);
this.$message({
showClose: true,
message: this.$t(`personal.copyFailed`),
type: 'error'
});
}
},
handelPayment(val){
if (val || val == 0) {
let obj= this.paymentStatusList.find(item=>item.value ==val)
return obj.label
}else{
return ''
}
},
clickCopyAddress(item){
// 创建临时输入框
var tempInput = document.createElement('input');
tempInput.value = item.address;
document.body.appendChild(tempInput);
try {
tempInput.select();
const isCopySuccessful = document.execCommand('copy');
if (isCopySuccessful) {
this.$message({
showClose: true,
message: this.$t(`personal.copySuccessful`),
type: 'success',
});
} else {
this.$message({
showClose: true,
message: this.$t(`personal.copyFailed`),
type: 'success',
});
}
} catch (error) {
this.$message({
showClose: true,
message: this.$t(`personal.copyFailed`),
type: 'success',
});
} finally {
if (document.body.contains(tempInput)) {
document.body.removeChild(tempInput);
} else {
console.log('临时输入框不是 body 的子节点,无法移除。');
}
}
},
clickCopyTxid(item){
// 创建临时输入框
var tempInput = document.createElement('input');
tempInput.value = item.txid;
document.body.appendChild(tempInput);
try {
tempInput.select();
const isCopySuccessful = document.execCommand('copy');
if (isCopySuccessful) {
this.$message({
showClose: true,
message: this.$t(`personal.copySuccessful`),
type: 'success',
});
} else {
this.$message({
showClose: true,
message: this.$t(`personal.copyFailed`),
type: 'success',
});
}
} catch (error) {
this.$message({
showClose: true,
message: this.$t(`personal.copyFailed`),
type: 'success',
});
} finally {
if (document.body.contains(tempInput)) {
document.body.removeChild(tempInput);
} else {
console.log('临时输入框不是 body 的子节点,无法移除。');
}
}
},
handelTxid(txid){
if (this.accountItem.coin.includes(`dgb`)) {
window.open(`https://chainz.cryptoid.info/dgb/tx.dws?${txid}.htm`)
}else{
switch (this.accountItem.coin) {
case `nexa`:
window.open(`https://explorer.nexa.org/tx/${txid}`)
break;
case `mona`:
window.open(`https://mona.insight.monaco-ex.org/insight/tx/${txid}`)
break;
case `grs`:
window.open(`https://chainz.cryptoid.info/grs/tx.dws?${txid}.htm`)
break;
case `rxd`:
window.open(`https://explorer.radiantblockchain.org/tx/${txid}`)
break;
case `enx`:
window.open(`https://explorer.entropyx.org/txs/${txid}`)
break;
case `alph`:
window.open(`https://explorer.alephium.org/transactions/${txid}`)
break;
default:
break;
}
}
//
}
}
}