Commit 0409e66d by zhanghui1

1111

parent 66c3a83a
......@@ -64,10 +64,10 @@ html,body {-webkit-tap-highlight-color: rgba(0, 0, 0,0); font-size: 0.28rem; bac
.bg-white { background: #fff;}
.line{.pos(r);
&:after {width:100%; height:1px; background:#ccc;.pos(a); left: 0; right: 0; top:0; transform:scale(1,0.33) translateY(-1px);content:'';}
.xt{width:100%; height:1px; background:#ccc;.pos(a); left: 0; right: 0; top:0; transform:scale(1,0.33) translateY(-1px);content:'';}
.xb{width:100%; height:1px; background:#ccc;.pos(a); left: 0; right: 0; bottom:0; transform:scale(1,0.33) translateY(1px);content:'';}
.yl{width:1px; height:100%; background:#ccc;.pos(a); left: 0; bottom: 0; top:0; transform:scale(0.33,1) translateX(-1px);content:'';}
.yr{width:1px; height:100%; background:#ccc;.pos(a); right: 0; bottom: 0; top:0; transform:scale(0.33,1) translateX(1px);content:'';}
&.xt{width:100%; height:1px; background:#ccc;.pos(a); left: 0; right: 0; top:0; transform:scale(1,0.33) translateY(-1px);content:'';}
&.xb{width:100%; height:1px; background:#ccc;.pos(a); left: 0; right: 0; bottom:0; transform:scale(1,0.33) translateY(1px);content:'';}
&.yl{width:1px; height:100%; background:#ccc;.pos(a); left: 0; bottom: 0; top:0; transform:scale(0.33,1) translateX(-1px);content:'';}
&.yr{width:1px; height:100%; background:#ccc;.pos(a); right: 0; bottom: 0; top:0; transform:scale(0.33,1) translateX(1px);content:'';}
}
/*复用颜色*/
......@@ -300,22 +300,30 @@ html,body {-webkit-tap-highlight-color: rgba(0, 0, 0,0); font-size: 0.28rem; bac
.top {top:44px;}
}
.miners-fixed { z-index: 1000!important;}
.list-click { transition: 0.5s all;
&:active {box-shadow: 0 0 10px 20px rgba(0,0,0,0.05) inset;}
}
}
.mobile-ios {
.page-header {padding-top: 20px;}
.page-content {top:64px;}
.dashboard {
.page-content{
.top {top:64px;}
.miner-show{
.box-blue {background: #103f73;color:#fff; text-align: center;padding: 0.3rem 0;
div:nth-of-type(1){.pos(r);
&:after{.line.yr;}
}
p {margin-top: 0.2rem;}
.k,.v {color:#fff;}
}
.miners{
.page-content{
.top{top:64px;}
.cell-bot-line {
.mint-cell {.pos(r);
&:after {.line.xb;}
}
}
}
.mobile-ios {
.page-header {padding-top: 20px;}
.page-content {top:64px;
.top{top:64px;}
}
}
.no {
.title {font-size: 0.3rem;}
......
<template>
<div class="f-pr mt20">
<div class="c-charts">
<IEcharts :option="line"></IEcharts>
</div>
<div class="line xb"></div>
<span style="position: absolute; right:0.35rem; top:0rem">
<el-button :type="btnIdx==1?'primary':''" size="mini" @click=getHour(1)>{{txt[language].yixiaoshi}}</el-button>
<el-button :type="btnIdx==0?'primary':''" size="mini" @click="getDay(0)">{{txt[language].yitian}}</el-button>
</span>
</div>
</template>
<script>
import fn from '@/utils/function.js';
import { mapState } from 'vuex';
import IEcharts from 'vue-echarts-v3';
export default {
components: {
IEcharts,
},
data: () => ({
api: '',
shareHistoryTime: [], //算力历史时间
shareHistoryYes: [], //算力历史成功
shareHistoryNo: [], //算力历史拒绝
unit: '',
btnIdx: 1,
}),
computed: {
...mapState(["txt", "init_url", "cur_coins"]),
puid() {
return this.$store.state.puid || localStorage.getItem('puid');
},
coin_type() {
return this.$store.state.coin_type || localStorage.getItem('coin_type');
},
region_id() {
return this.$store.state.region_id || localStorage.getItem('region_id');
},
worker_id() {
return this.$route.params.worker_id
},
language() {
return this.$store.state.language || localStorage.getItem('language');
},
line() {
let self = this;
return {
"color": [
"#18a8ea",
"#fb7778",
],
title: {
text: ''
},
tooltip: {
trigger: 'axis',
// formatter: function(params) {
// return params[0].name + '<br/>' +
// params[0].seriesName + ' : ' + (params[0].value).toFixed(3) + ' ' + self.unit + 'H/s<br/>' +
// params[1].seriesName + ' : ' + params[1].value + '%<br/>';
// }
formatter: function(params) {
return params[0].name + '<br/>' +
params[0].seriesName + ' : ' + (params[0].value).toFixed(3) + ' ' + self.unit + 'H/s'
}
},
legend: {
// data: ["成功率", "拒绝率"]
},
grid: {
top: '15%',
left: '3%',
right: '5%',
bottom: '5%',
containLabel: true,
show: false
},
xAxis: [{
type: 'category',
boundaryGap: false,
data: this.shareHistoryTime,
axisLabel: {
formatter: function(value, idx) {
return value.slice(value.length - 5, value.length)
}
},
axisLine: {
lineStyle: {
color: '#999',
shadowColor: 'rgba(0, 0, 0, 0.3)',
shadowBlur: 10
}
},
splitLine: {
show: false,
},
axisTick: {
show: false
},
}],
yAxis: [{
type: 'value',
name: '算力(' + this.unit + 'H/s)',
axisLine: {
show: true,
lineStyle: {
color: '#999',
shadowColor: 'rgba(0, 0, 0, 0.3)',
shadowBlur: 10
}
},
splitLine: {
show: false
},
axisTick: {
show: false
},
},
// {
// type: 'value',
// name: '拒绝率(%)',
// min: 0,
// max: 100,
// axisLine: {
// show: true,
// lineStyle: {
// color: '#999',
// shadowColor: 'rgba(0, 0, 0, 0.3)',
// shadowBlur: 10
// }
// },
// splitLine: {
// show: false
// },
// axisTick: {
// show: false
// },
// }
],
series: [{
name: '算力',
type: 'line',
stack: '',
smooth: true,
areaStyle: {
normal: {
color: {
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [{
offset: 0,
color: 'rgb(170, 228, 255)' // 100% 处的颜色
}, {
offset: 1,
color: 'rgb(239, 250, 255)' // 100% 处的颜色
}],
}
}
},
data: this.shareHistoryYes
},
// {
// name: '拒绝率',
// type: 'line',
// stack: '%',
// smooth: true,
// lineStyle: {
// normal: {
// width: 1
// }
// },
// yAxisIndex: 1,
// xAxisIndex: 0,
// areaStyle: {
// normal: {
// color: {
// type: 'linear',
// x: 0,
// y: 0,
// x2: 0,
// y2: 1,
// colorStops: [{
// offset: 0,
// color: 'rgb(255, 172, 172)' // 0% 处的颜色
// }, {
// offset: 1,
// color: 'rgb(255, 225, 225)' // 100% 处的颜色
// }],
// }
// }
// },
// data: this.shareHistoryNo,
// },
]
}
},
},
created() {
this.pageInit(72, '1h', parseInt((new Date().getTime() - (86400000 * 3)) / 1000));
},
methods: {
pageInit(count, dimension, start) {
let self = this;
fn.getApiBaseUrl(this.region_id, this.coin_type).then(api => {
this.api = api;
fn.getWorkerIdShareHistory(api, this.worker_id, this.puid, count, dimension, start).then(res => {
if (res.data.err_no == 0) {
self.chartData = res.data.data;
self.shareHistory = {};
self.shareHistoryTime = [];
self.shareHistoryYes = [];
self.shareHistoryNo = [];
self.unit = res.data.data.unit;
let hour, day;
_.each(self.chartData.tickers, function(v, i) {
if (self.btnIdx == 0) {
// day = new Date(v[0] * 1000).getDate();
// self.shareHistoryTime.push((Array(2).join(0) + day).slice(-2) + "日");
self.shareHistoryTime.push(fn.getYMD(v[0] * 1000))
} else {
// hour = new Date(v[0] * 1000).getHours();
// self.shareHistoryTime.push((Array(2).join(0) + hour).slice(-2) + ":00");
self.shareHistoryTime.push(fn.getYMDHM(v[0] * 1000))
}
self.shareHistoryYes.push(v[1]);
self.shareHistoryNo.push((v[2] * 100).toFixed(2));
});
} else {
self.$message.error("获取矿工算力历史错误!!")
}
})
})
},
getDay: function(idx) {
this.btnIdx = idx;
this.pageInit(30, '1d', parseInt((new Date().getTime() - (86400000 * 30)) / 1000));
},
getHour: function(idx) {
this.btnIdx = idx;
this.pageInit(72, '1h', parseInt((new Date().getTime() - (86400000 * 3)) / 1000));
},
}
}
</script>
<template>
<div class="">
{{msg}} <button @click="goPayments">跳转到收益页</button>
<div class="miner-show">
<div class="page-header">
<div class="l" @click="goBack"><span class="icon-back"><i class="iconfont icon-fanhui"></i></span></div>
<div class="c">{{worker_name}}</div>
</div>
<div class="page-content">
<div class="box-blue" flex="box:mean main:center ">
<div>
<h3>实时算力</h3>
<p><span class="v"><animate-num :value="shares_15m" :fixed=3></animate-num></span> <span class="k">{{shares_unit}}H/s</span></p>
</div>
<div>
<h3>24小时</h3>
<p><span class="v"><animate-num :value="shares_24h" :fixed=3></animate-num></span> <span class="k">{{shares_unit}}H/s</span></p>
</div>
</div>
<chart></chart>
<div class="cell-bot-line">
<mt-cell title="拒绝率" :value="reject_rate|formatPercent2"></mt-cell>
<mt-cell title="状态" :value="worker_status_txt"></mt-cell>
<mt-cell title="最近提交时间" :value="last_share_time|formatDate2"></mt-cell>
<mt-cell title="最近提交IP" :value="last_share_ip"></mt-cell>
<mt-cell title="IP地址地理位置" :value="last_share_address"></mt-cell>
</div>
<!-- <table>
<tbody>
<tr>
<td>worker_name</td>
<td>{{worker_name}}</td>
</tr>
<tr>
<td>shares_15m</td>
<td>{{shares_15m}}</td>
</tr>
<tr>
<td>shares_24h</td>
<td>{{shares_24h}}</td>
</tr>
<tr>
<td>reject_rate</td>
<td>{{reject_rate|formatPercent2}}</td>
</tr>
<tr>
<td>worker_status</td>
<td>{{worker_status}}</td>
</tr>
<tr>
<td>shares_unit</td>
<td>{{shares_unit}}</td>
</tr>
<tr>
<td>last_share_time</td>
<td>{{last_share_time}}</td>
</tr>
<tr>
<td>last_share_ip</td>
<td>{{last_share_ip}}</td>
</tr>
</tbody>
</table> -->
</div>
</div>
</template>
<script>
import fn from '@/utils/function.js'
import { mapState } from 'vuex'
import chart from '@/components/Miners/chart.vue'
import animateNum from '@/components/Common/AnimatedNum'
export default {
name: 'minershow',
components: {
chart,
animateNum
},
data() {
return {
msg: '矿机详情页面'
workerDate: {},
api: '',
worker_name: '',
shares_15m: 0,
shares_24h: 0,
reject_rate: '',
worker_status: '',
shares_unit: '',
last_share_time: '',
last_share_ip: '',
last_share_address: '????'
}
},
computed: {
puid() {
return this.$store.state.puid || localStorage.getItem('puid');
},
coin_type() {
return this.$store.state.coin_type || localStorage.getItem('coin_type');
},
region_id() {
return this.$store.state.region_id || localStorage.getItem('region_id');
},
language() {
return this.$store.state.language || localStorage.getItem('language');
},
worker_id() {
return this.$route.params.worker_id
},
worker_status_txt() {
switch (this.worker_status) {
case 'ACTIVE':
return '活跃'
break;
case 'INACTIVE':
return '不活跃'
break;
case 'DEAD':
return '失效'
break;
}
}
},
mounted() {
this.$indicator.open({ spinnerType: 'fading-circle' })
this.$store.state.tab_bar = 1;
this.pageInitInterval()
},
methods: {
goPayments(){
this.$router.push({name:'payments'})
pageInitInterval() {
let self = this;
clearInterval(window.dingshiqi)
self.getWorkerById();
window.dingshiqi = setInterval(function() {
self.getWorkerById();
}, this.$store.state.refresh_time)
},
goBack() {
this.$router.go(-1)
},
getWorkerById() {
fn.getApiBaseUrl(this.region_id, this.coin_type).then(api => {
this.api = api;
fn.getWorkerById(this.api, this.worker_id, this.puid).then(res => {
if (res.data.err_no == 0) {
this.workerDate = res.data;
this.worker_name = res.data.data.worker_name;
this.shares_15m = res.data.data.shares_15m;
if (res.data.data.hasOwnProperty('shares_24h')) {
this.shares_24h = res.data.data.shares_24h;
} else {
this.shares_24h = null
}
this.reject_rate = res.data.data.reject_rate;
this.worker_status = res.data.data.worker_status;
this.last_share_time = res.data.data.last_share_time;
this.last_share_ip = res.data.data.last_share_ip;
this.shares_unit = res.data.data.shares_unit;
//??好像少了一个ip地理位置
}
this.$indicator.close()
})
})
}
}
}
......
......@@ -2,7 +2,10 @@
<div class="miners">
<div class="page-header">
<div class="l"><span class="icon-sch abs-left"><i class="iconfont icon-bianji"></i></span></div>
<div class="c" @click="getGroup">{{messageGroup}} <i class="iconfont icon-down"></i></div>
<div class="c" @click="getGroup">
<h3>{{messageGroup}} <i class="iconfont icon-down"></i></h3>
<p>总算力: 20.87 PH/s</p>
</div>
<div class="r"><span class="icon-sch abs-right"><i class="iconfont icon-sousuo"></i></span></div>
</div>
<div class="page-content bottom">
......@@ -33,7 +36,7 @@
</div>
<div class="miners-content">
<mr-better-scroll ref="scroll" class="content-scroll" :pullUpLoad="true" @pullingUp="pullingUp">
<div class="list list-row" v-for="items in tableData" :class="{'redBg':items.status=='INACTIVE','greyBg':items.status=='DEAD'} ">
<div class="list list-row list-click" @click="goMinerShow(items)" v-for="items in tableData" :class="{'redBg':items.status=='INACTIVE','greyBg':items.status=='DEAD'} ">
<div class="s1">{{items.worker_name}}
<em v-if="items.status=='INACTIVE'" class="red">不活跃</em>
<em v-else-if="items.status=='DEAD'" class="grey">失效</em>
......@@ -231,9 +234,8 @@ export default {
this.showSort = !this.showSort;
this.showGroup = false;
},
goMinerShow(worker_id) {
//矿机详情
this.$router.push('/my/' + this.puid + '/' + this.coin_type + '/' + this.region_id + '/miners/' + worker_id)
goMinerShow(obj) {
this.$router.push('/my/' + this.puid + '/' + this.coin_type + '/' + this.region_id + '/miners/' + obj.worker_id)
},
getWorker() {
//默认排序下的获取矿机列表
......@@ -247,6 +249,9 @@ export default {
this.workers_active = res.data.data.workers_active;
this.workers_dead = res.data.data.workers_dead;
this.workers_inactive = res.data.data.workers_inactive;
this.scroll.forceUpdate(true)
} else {
this.scroll.forceUpdate(false)
}
try {
if (res.data.data.data[0].hasOwnProperty("shares_24h")) {
......@@ -275,6 +280,9 @@ export default {
if (res.data.err_no == 0) {
if (res.data.data.data.length > 0) {
this.tableData = this.tableData.concat(res.data.data.data);
this.scroll.forceUpdate(true)
} else {
this.scroll.forceUpdate(false)
}
} else {
this.$toast("获取矿工列表列表错误!");
......@@ -297,16 +305,7 @@ export default {
} else {
this.getWorker()
}
this.scroll.forceUpdate(true)
// fn.getPaymentHistory(this.api, this.puid, page).then(res => {
// if (res.data.data.data.length > 0) {
// this.page = page;
// this.paymentList.push(res.data.data)
// this.scroll.forceUpdate(true)
// } else {
// this.scroll.forceUpdate(false)
// }
// })
},
},
}
......
<template>
<div class="page address">
<div class="page-header">
<div class="l" @click="goBack"><span class="icon-back"><i class="iconfont icon-fanhui"></i></span></div>
<div class="c">修改收益地址</div>
</div>
<div class="page-content">
123123132
</div>
</div>
</template>
<script>
export default {
name: 'address',
data() {
return {
}
},
methods:{
goBack(){
this.$router.go(-1)
}
}
}
</script>
......@@ -13,8 +13,8 @@
</div>
<div class="mt40 settings-group subaccount-settings">
<div class="settings-title">子账户设置</div>
<mt-cell title="LTC收益地址" is-link></mt-cell>
<mt-cell title="DOGE补贴地址" is-link></mt-cell>
<mt-cell title="LTC收益地址" is-link to="/address"></mt-cell>
<mt-cell title="DOGE补贴地址" is-link v-show="account_default_coin_type==='ltc'"></mt-cell>
<mt-cell title="默认币种设置" is-link to="/defaultCoin">
<b class="fore-link-img" :class="coin_type" />
</mt-cell>
......
......@@ -34,6 +34,13 @@
<div class="box header">
<div class="page-header">
<div class="l"><span class="icon-back"><i class="iconfont icon-fanhui"></i></span></div>
<div class="sch">
<input type="text">
<button>取消</button>
</div>
</div>
<div class="page-header">
<div class="l"><span class="icon-back"><i class="iconfont icon-fanhui"></i></span></div>
<div class="c">DOGE补贴地址</div>
</div>
<br />
......@@ -69,6 +76,7 @@
<div class="c">YZCF - 南方电信 <i class="iconfont icon-down"></i></div>
<div class="r"><span class="abs-right"><b class="bg-coin ltc "></b><i class="iconfont icon-down mr10"></i></span></div>
</div>
<br />
</div>
</div>
</div>
......
......@@ -48,7 +48,7 @@ axios.interceptors.request.use(config => {
function checkToken() {
return new Promise((resolve, reject) => {
resolve('eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlEwTTBNRUl4UVRVME5qazJNa0ZFT0RCRk56WkJNVGc0TmtFd09UWkNOakZGTlRFMFEwVTJOdyJ9.eyJpc3MiOiJodHRwczovL2Jsb2NraW4uYXV0aDAuY29tLyIsInN1YiI6ImF1dGgwfDU5ZjE3OTc5ZDljMGM1MzZiZjRhMzVjMSIsImF1ZCI6WyJodHRwczovL3d3dy5wb29saW4uY29tL2FwaSIsImh0dHBzOi8vYmxvY2tpbi5hdXRoMC5jb20vdXNlcmluZm8iXSwiaWF0IjoxNTE3NzIzMTI2LCJleHAiOjE1MTc3MzAzMjYsImF6cCI6IkZhczI5dWJNNW52NElFMlZUQ3ZEWU5iaWtIeTF0bDBkIiwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSByZWFkIHdyaXRlIn0.L2FKCnJVjwMo2urmfnnzFzzNDL2no_HKdMWKO9CBH7DGOh9SydTrugMhEUZKuB3M7QeZTcXuPVSsWcQ2FhrXNUyEsTXAK_SOrRL3Bn2jAzoWemasqs896hJRcLo3KshKVUTwAUR3x-bBKgK0qfm-owgF0a99P9pqFAtKVaG7VrVOPachvm10VyVF1egeA_bSWRbyIxrULsXFNz7JR_yq7TQzjnLYerB6DUD4gjwhyYRJjeZUej3PrKJs4P_ZIPxYCQijQmyFHWxX3_DaRfJZSj2tFSYpM2Ck6P1ZfpIVZPzad1S_sUZiy10K2o5Qzc1Ln540Dc4BG3NiYnDYn2Uy_g');
resolve('eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlEwTTBNRUl4UVRVME5qazJNa0ZFT0RCRk56WkJNVGc0TmtFd09UWkNOakZGTlRFMFEwVTJOdyJ9.eyJpc3MiOiJodHRwczovL2Jsb2NraW4uYXV0aDAuY29tLyIsInN1YiI6ImF1dGgwfDU5ZjE3OTc5ZDljMGM1MzZiZjRhMzVjMSIsImF1ZCI6WyJodHRwczovL3d3dy5wb29saW4uY29tL2FwaSIsImh0dHBzOi8vYmxvY2tpbi5hdXRoMC5jb20vdXNlcmluZm8iXSwiaWF0IjoxNTE3ODExODY3LCJleHAiOjE1MTc4MTkwNjcsImF6cCI6IkZhczI5dWJNNW52NElFMlZUQ3ZEWU5iaWtIeTF0bDBkIiwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSByZWFkIHdyaXRlIn0.K8qLbpN9djEyDq3chlaUy0aM7GR9BbmYUAPw-1F1aas0skb4KVz2gP6MsAEoNfLninQ5NCkdmukkzUrMcFEc2U_5EziDOe8RuZ5hz2YEDcG8-Bni1l9F3llqcchJ4fnhtKm3YXBZqT0P9OFNFWpomxKZRDNOsTchfF51F24VdB0gEipK8g-jVVKPjsB0yP3IUaWX5iw-OBTP1w8oLD15CMB8rm917eBJHCue_Ud7uiDc9sDbjicauqXht-YRkj9ixy3vZdS5UMZRVvPGU74KwjmvDnuafRzQ_7B5gkEevHjf0GWHoq3YtUepKi4gvVBAvrd5EEc6xLhVLzy2Ab57-A');
})
}
......
......@@ -62,7 +62,6 @@ const router = new Router({
path: '/my',
name: 'my',
component: resolve => require(['@/components/Common/my.vue'], resolve),
// redirect: 'my/:puid/:coin_type/:region_id/dashboard',
children: [{
path: ':puid/:coin_type/:region_id/dashboard',
name: 'dashboard',
......@@ -70,15 +69,14 @@ const router = new Router({
meta: {
title: 'Dashboard.vue'
}
},{
}, {
path: ':puid/:coin_type',
name: 'no',
component: resolve => require(['@/components/Dashboard/no.vue'], resolve),
meta: {
title: 'no.vue'
}
},
{
}, {
path: ':puid/:coin_type/:region_id/miners',
name: 'miners',
component: resolve => require(['@/components/Miners/'], resolve),
......@@ -90,6 +88,13 @@ const router = new Router({
name: 'minershow',
component: resolve => require(['@/components/Miners/detail.vue'], resolve),
meta: {
title: 'detail.vue'
}
}, {
path: ':puid/:coin_type/:region_id/miners/:worker_id',
name: 'minershow',
component: resolve => require(['@/components/Miners/detail.vue'], resolve),
meta: {
title: 'MinerShow.vue'
}
}, {
......@@ -99,18 +104,22 @@ const router = new Router({
meta: {
title: 'Payments.vue'
}
},
{
}, {
path: 'settings',
name: 'settings',
component: resolve => require(['@/components/Settings/index.vue'], resolve),
meta: {
title: 'Settings.vue'
}
}]
},{
path: '/address',
name: 'address',
component: resolve => require(['@/components/Settings/Address.vue'], resolve),
meta: {
title: 'Address.vue'
}
]
},
{
},{
path: '/defaultCoin',
name: 'defaultCoin',
component: resolve => require(['@/components/Settings/DefaultCoin'], resolve),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment