1.添加alph币种(矿池分配及转账规则页面、费率页面、挖矿教程页面、起付额度限制、最新报块跳转、支付id跳转) 完成

2.api文档页面修改8个接口请求方式为post
3.优化代码币种添加通用币种信息及挖矿教程页面跳转通用
4.m2pool断网重连 60秒内重连  处理中
5.收益计算器显示值修改  取消四舍五入 直接保留10位小数 添加千位符分隔显示
6.coinbus 添加seo相关配置及站点地图 处理中
This commit is contained in:
2025-04-11 10:31:26 +08:00
parent ab78808aec
commit 915fc3d7a6
338 changed files with 65858 additions and 0 deletions

View File

@@ -0,0 +1,978 @@
<template>
<div class="Block">
<section v-if="$isMobile" v-loading ="reportBlockLoading">
<div class="currencySelect">
<el-menu class="el-menu-demo" mode="horizontal">
<el-submenu index="2" style="background: transparent">
<template slot="title">
<span ref="coinSelect" class="coinSelect">
<img :src="currencyPath" alt="coin" />
<span>{{ handelCurrencyLabel(params.coin)}}</span>
</span>
</template>
<ul class="moveCurrencyBox" >
<li @click="clickCurrency(item)" v-for="item in currencyList" :key="item.value">
<img :src="item.img" alt="coin" loading="lazy"/>
<p>{{ item.label }}</p>
</li>
</ul>
</el-submenu>
</el-menu>
</div>
<div class="luckyBox" >
<div class="luckyItem">
<span class="title">{{$t(`home.lucky3`)}}</span>
<span class="text">{{luckData.luck3d}}%</span>
</div>
<div class="luckyItem">
<span class="title">{{$t(`home.lucky7`)}}</span>
<span class="text">{{luckData.luck7d}}%</span>
</div>
<div class="luckyItem" v-if="luckData.luck30d">
<span class="title">{{$t(`home.lucky30`)}}</span>
<span class="text">{{luckData.luck30d}}%</span>
</div>
<div class="luckyItem" v-if="luckData.luck90d">
<span class="title">{{$t(`home.lucky90`)}}</span>
<span class="text">{{luckData.luck90d}}%</span>
</div>
</div>
<div class="tableBox" >
<div class="table-title">
<span :title="$t(`home.blockHeight`)">{{$t(`home.blockHeight`)}}</span>
<span :title="$t(`home.blockingTime`)" >{{$t(`home.blockingTime`)}}</span>
</div>
<el-collapse accordion>
<el-collapse-item :name="item.hash" v-for="item in BlockInfoData" :key="item.hash">
<template slot="title">
<div class="collapseTitle">
<span >{{ item.height }}</span>
<span>{{ item.date }}</span>
</div>
</template>
<div class="belowTable">
<div>
<p>{{$t(`home.blockRewards`)}} ({{handelLabel(BlockInfoParams.coin)}})</p>
<p>{{ item.reward }}</p>
</div>
<!-- <div>
<p>{{$t(`home.transactionFee`)}} ({{handelLabel(BlockInfoParams.coin)}})</p>
<p>{{ item.fees }}</p>
</div> -->
</div>
<div id="hash" @click="clickItem(item)">
<p>{{$t(`home.blockHash`)}}</p>
<p class="text">{{ item.hash }} </p>
</div>
</el-collapse-item>
</el-collapse>
<div class="paginationBox">
<el-pagination
style="margin-top: 10px;margin-bottom: 10px;"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="currentPage"
:page-sizes="[10, 20, 50, 200]"
:page-size="10"
layout="sizes, prev, pager, next"
:total="totalSize">
</el-pagination>
</div>
</div>
</section>
<div v-else>
<section class="BlockTop">
<el-row >
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
<div class="currencyBox">
<div
class="sunCurrency"
v-for="item in currencyList"
:key="item.value"
@click="clickCurrency(item)"
>
<img
class="currency-logo lazy lazy-coin-logo"
:src="item.img"
/>
<span :class="{ 'active': ItemActive == item.value}">{{ item.label }}</span>
</div>
</div>
</el-col>
<!-- v-loading = "LuckDataLoading" -->
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
<div class="luckyBox" >
<div class="luckyItem">
<span class="title">{{$t(`home.lucky3`)}}</span>
<span class="text">{{luckData.luck3d}}%</span>
</div>
<div class="luckyItem">
<span class="title">{{$t(`home.lucky7`)}}</span>
<span class="text">{{luckData.luck7d}}%</span>
</div>
<div class="luckyItem" v-if="luckData.luck30d">
<span class="title">{{$t(`home.lucky30`)}}</span>
<span class="text">{{luckData.luck30d}}%</span>
</div>
<div class="luckyItem" v-if="luckData.luck90d">
<span class="title">{{$t(`home.lucky90`)}}</span>
<span class="text">{{luckData.luck90d}}%</span>
</div>
</div>
</el-col>
</el-row>
</section>
<el-row>
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<div class="reportBlock">
<div class="reportBlockBox" >
<!-- <div class="top">
<div class="lucky">
<span class="luckyNum">{{ luckData.luck3d }}</span>
<span class="luckyText">3日幸运值</span>
</div>
<div class="lucky">
<span class="luckyNum">{{ luckData.luck7d }}</span>
<span class="luckyText">7日幸运值</span>
</div>
<div class="lucky">
<span class="luckyNum">{{ luckData.luck30d }}</span>
<span class="luckyText">30日幸运值</span>
</div>
<div class="lucky">
<span class="luckyNum">{{ luckData.luck90d }}</span>
<span class="luckyText">90日幸运值</span>
</div>
</div> -->
<div class="belowTable" v-loading="reportBlockLoading">
<div class="table-title">
<span :title="$t(`home.blockHeight`)">{{$t(`home.blockHeight`)}}</span>
<span :title="$t(`home.blockingTime`)" >{{$t(`home.blockingTime`)}}</span>
<span :title="$t(`home.blockHash`)" class="hash">{{$t(`home.blockHash`)}}</span>
<div class="blockRewards" >{{$t(`home.blockRewards`)}} ({{ handelLabel(BlockInfoParams.coin)}})
<!-- <div id="boxTitle2" class="reward" :data-title="$t(`mining.blockRewards`)">
<img style="width:18PX" src="../../assets/img/profit.svg" alt="">
</div> -->
</div>
<!-- <div v-show="FeeShow" class="transactionFee" >{{$t(`home.transactionFee`)}} ({{handelLabel(BlockInfoParams.coin)}})
<div id="boxTitle2" :data-title="$t(`mining.transactionFeeExplanation`)">
<img style="width:18PX" src="../../assets/img/profit.svg" alt="">
</div>
</div> -->
</div>
<ul>
<!-- <li class="table-title">
<span :title="$t(`home.blockHeight`)">{{$t(`home.blockHeight`)}}</span>
<span :title="$t(`home.blockingTime`)" >{{$t(`home.blockingTime`)}}</span>
<span :title="$t(`home.blockHash`)" class="hash">{{$t(`home.blockHash`)}}</span>
<div class="blockRewards" >{{$t(`home.blockRewards`)}} ({{BlockInfoParams.coin}})
<div id="boxTitle2" class="reward" :data-title="$t(`mining.blockRewards`)">
<img style="width:18PX" src="../../assets/img/profit.svg" alt="">
</div>
</div>
<div class="transactionFee" >{{$t(`home.transactionFee`)}} ({{BlockInfoParams.coin}})
<div id="boxTitle2" :data-title="$t(`mining.transactionFeeExplanation`)">
<img style="width:18PX" src="../../assets/img/profit.svg" alt="">
</div>
</div>
</li> -->
<li class="currency-list" @click="clickItem(item)" v-for="item in BlockInfoData" :key="item.hash">
<span>{{ item.height }}</span>
<span>{{ item.date }}</span>
<span class="hash" :title="item.hash">{{ item.hash }}</span>
<span class="reward" :title="item.reward">{{ item.reward }}</span>
<!-- <span v-show="FeeShow">{{ item.fees }}</span> -->
</li>
</ul>
<el-pagination
class="pageBox"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="currentPage"
:page-sizes="[10, 20, 50, 200]"
:page-size="10"
layout="total, sizes, prev, pager, next, jumper"
:total="totalSize"
>
</el-pagination>
</div>
</div>
</div>
</el-col>
</el-row>
</div>
</div>
</template>
<script>
import IndexJs from "./index";
export default {
mixins: [IndexJs],
};
</script>
<style scoped lang="scss" >
// 手机端适配
@media screen and (min-width: 220px) and (max-width: 1279px) {
.Block{
width: 100%;
background: transparent !important;
padding-top: 10px !important;
}
.currencySelect{
display: flex;
align-items: center;
margin-bottom: 10px;
padding-left: 8px;
font-size: 0.85rem;
.el-menu-demo {
width: 100%;
}
.el-menu{
background: transparent;
}
// .title{
// width: 30%;
// }
.coinSelect{
img{
width: 25px;
}
span{
text-transform: capitalize;
margin-left: 5px;
}
}
}
.moveCurrencyBox {
margin: 0;
padding: 0;
width: 100%;
display: flex;
min-height: 200px;
flex-wrap: wrap;
padding: 10px 20px;
margin: 0 auto;
background: #fff;
li {
list-style: none;
// width: calc(100% / 5);
display: flex;
flex-direction: column;
align-items: center !important;
margin-left: 10px;
// background: #D2C4E8;
// align-items: center;
// overflow: hidden;
padding: 5px 5px;
box-sizing: border-box;
// background: palegoldenrod;
img {
width: 25px;
}
p {
min-width: 50px;
margin-top: 8px;
font-size: 0.85rem;
word-wrap: break-word;
word-break: break-all;
text-align: center;
text-transform: capitalize;
}
}
}
.luckyBox{
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: space-between !important;
width: 100%;
height: auto !important;
.luckyItem{
// width: 47% !important;
width: 155px !important;
margin-left:2% !important;
height: 88px !important;
margin-top: 10px;
justify-content: space-between !important;
padding-bottom: 10px;
}
}
.luckyBox .luckyItem .text{
font-size: 1.8rem !important;
}
.tableBox{
margin: 0 auto;
width: 95%;
min-height: 300px;
// background: palegoldenrod;
overflow: hidden;
border-radius: 8px;
font-size: 0.9rem;
margin-bottom: 20px;
box-shadow: 0px 0px 5px 2px #ccc;
margin-top: 10px;
.table-title{
height: 50px;
background: #D2C4E8;
display: flex;
justify-content: space-around;
align-items: center;
font-weight: 600;
padding-left: 0 !important;
span{
text-align: center;
}
span:nth-of-type(1){
width:30% !important;
}
span:nth-of-type(2){
width:70% !important;
}
}
.collapseTitle{
width: 100%;
display: flex;
justify-content: space-around;
align-items: center;
padding-left: 0 !important;
span{
text-align: center;
}
span:nth-of-type(1){
width:30% !important;
}
span:nth-of-type(2){
width:70% !important;
}
}
.belowTable{
display: flex;
justify-content: space-between;
div {
width: 50%;
height: auto;
text-align: left;
padding-left: 8%;
}
}
#hash{
width: 100%;
padding-left: 8%;
margin-top: 8px;
.text{
width: 93%;
height: auto;
word-wrap: break-word; /* 旧版的浏览器支持 */
overflow-wrap: break-word; /* 标准属性 */
color: #8F61F5;
text-decoration: underline;
}
}
.paginationBox{
text-align: center;
}
}
::v-deep .el-pager li{
min-width: 19px;
}
::v-deep .el-pagination .el-select .el-input{
margin: 0;
}
.el-pagination button, .el-pagination span:not([class*=suffix]){
min-width: 20px;
}
::v-deep .el-pagination .btn-prev{
padding: 0px !important;
min-width: auto;
}
::v-deep .el-pagination .btn-next{
padding: 0px !important;
min-width: auto;
}
::v-deep .el-pagination .el-select .el-input{
width: 92px;
}
}
/*修改提示框*/
#boxTitle2[data-title] {
position: relative;
display: inline-block;
// 样式:
&:hover:after {
opacity: 1;
transition: all 0.1s ease 0.5s;
visibility: visible;
}
// 背景的样式 位置 字体等
&:after {
min-width: 180PX;
max-width: 300PX;
content: attr(data-title);
position: absolute;
padding: 5PX 10PX;
right: 28PX;
// bottom: -1.5em;
border-radius: 4PX;
color: rgba(255,255,255,0.8);
background-color: rgba(80, 79, 79, 0.8);
box-shadow: 0 0 4PX rgba(0, 0, 0, 0.16);
font-size: 0.8rem;
// white-space: nowrap;
visibility: hidden;
opacity: 0;
text-align: center;
overflow-wrap: break-word !important;
}
}
// .boxTitle2{
// padding-top: 10PX;
// margin-left: 2PX;
// img{
// width: 18PX;
// }
// }
.Block{
background: #fff;
background-image: url(../../assets/img/miningAccount/top.png);
background-size: 100% 50%;
background-repeat: no-repeat;
background-position: 30% -15%;
padding-top: 60PX;
}
.BlockTop{
// display: flex;
width: 75%;
// height: 310PX;
// align-items: center;
// justify-content: center;
// padding: 0 3%;
margin: 0 auto;
// background: hotpink;
}
.luckyBox{
width: 100%;
// background: #fff;
height:280PX;
// margin-left: 5%;
// box-shadow: 0PX 0PX 10PX 3PX #CCC;
border-radius: 10PX;
transition: all 0.3s linear;
padding: 0;
display: flex;
flex-wrap: wrap;
justify-content: left;
padding: 10PX 10PX;
// background: goldenrod;
.luckyItem{
background: #D2C3EA;
width: 38%;
height: 45%;
border-radius: 5PX;
display: flex;
flex-direction: column;
justify-content: left;
align-items: center;
color: #FFF;
font-weight: 600;
// background-image: linear-gradient(to right, #9795f0 0%, #fbc8d4 100%);
background-image: linear-gradient(-20deg, #b868da 0%, #89e0f3 100%);
// background-image: linear-gradient(-225deg, #2CD8D5 0%, #6B8DD6 48%, #8E37D7 100%);
margin-left: 50PX;
span{
font-size: 0.9em;
// background: #2eaeff;
}
.title{
width: 100%;
height: 35%;
display: inline-block;
text-align: right;
padding: 10PX 15PX;
}
.text{
font-size: 2.5em;
}
}
.luckyItem:hover{
border:1PX solid #D2C3EA;
}
p{
width: 100%;
text-align: right;
padding-right: 10%;
}
ul{
padding: 0;
width: 95%;
padding-left: 5%;
height: 90%;
li{
list-style: none;
display: flex;
width: 100%;
align-items: center;
justify-content: space-between;
height: 20%;
.progressBar{
width: 82%;
margin-left: 1%;
overflow: hidden;
}
}
}
.progress-container {
display: flex;
align-items: center;
}
.progress-bar {
width: 80%;
height: 10PX;
background-color: #f0f0f0;
border-radius: 5PX;
}
.progress {
height: 100%;
background-color: #4CAF50;
border-radius: 10PX;
transition: width 0.3s ease;
background: linear-gradient(to bottom, #d0c7ec 60%, #6427df 40%);
margin-left: -3PX;
}
.progress7 {
height: 100%;
background-color: #4CAF50;
border-radius: 25PX;
transition: width 0.3s ease;
background: linear-gradient(to bottom, #f4da95 60%, #ceac37 40%);
margin-left: -3PX;
}
.progress30 {
height: 100%;
background-color: #4CAF50;
border-radius: 25PX;
transition: width 0.3s ease;
background: linear-gradient(to bottom, #7bd28e 60%, #349b53 40%);
margin-left: -3PX;
}
.progress90 {
height: 100%;
background-color: #4CAF50;
border-radius: 25PX;
transition: width 0.3s ease;
background: linear-gradient(to bottom, #fcbad0 60%, #f2407c 40%);
margin-left: -3PX;
}
.progress-percentage {
width: 20%;
text-align: right;
padding-right: 5PX;
}
}
::v-deep .el-progress__text {
// display: block;
//width: 100%; /* 或者更宽的宽度 */
text-align: left;
}
// .luckyBox:hover{
// box-shadow: 3PX 3PX 20PX 3PX #C1A1FE;
// }
.currencyBox {
width: 100%;
display: flex;
justify-content: left;
align-items: start;
padding: 10PX 10PX;
height: 280PX;
flex-wrap: wrap;
box-shadow: 0PX 0PX 10PX 3PX #CCC;
border-radius: 2%;
background: #fff;
transition: all 0.3s linear;
overflow: hidden;
overflow-y: auto;
.sunCurrency {
display: flex;
justify-content: space-around;
align-items: center;
flex-direction: column;
padding: 8PX 5PX;
border-radius: 22PX;
// background: rgba(223, 83, 52, 0.05);
width:18%;
cursor: pointer;
margin-left: 8PX;
font-size: 1em;
text-align: center;
height: 100PX;
transition: all 0.2s linear;
// background: #641FFC;
img {
width: 38PX;
transition: all 0.2s linear;
}
span{
text-transform: capitalize;
margin-top: 5PX;
width: 100%;
font-size: 0.7em;
padding: 5PX 0PX;
border-radius: 5PX;
}
}
.sunCurrency:hover {
// background: rgba(210,195,234, 0.5);
font-size:1.1em;
box-shadow: 0PX 0PX 5PX 3PX rgba(210,195,234, 0.8);
img {
width: 40PX;
}
}
}
.currencyBox:hover{
box-shadow: 3PX 3PX 20PX 3PX #C1A1FE;
}
.reportBlock {
width: 100%;
// background: #f5f9fd;
display: flex;
justify-content: center;
// height: 1200PX;
margin-top: 1%;
padding-bottom: 1%;
// background-image: url(../../assets/img/miningAccount/btm.png);
background-size: 100% 40%;
background-repeat: no-repeat;
background-position: 30% 130%;
.reportBlockBox {
width: 100%;
height: 100%;
// background: #f5f9fd;
display: flex;
justify-content: space-between;
flex-direction: column;
align-items: center;
// padding: 10PX 10PX;
.top {
width: 100%;
height: 18%;
display: flex;
align-items: center;
justify-content: center;
border-bottom: 1PX solid rgba(0, 0, 0, 0.1);
padding: 20PX 0PX;
color: #fff;
font-weight: 600;
// font-size: 0.95rem;
.lucky{
display: flex;
align-items: center;
flex-direction: column;
justify-content: center;
.luckyNum{
font-size: 1.8em;
}
.luckyText{
font-size: 1em;
margin-top: 5%;
}
}
div {
width: 16%;
background: #2eaeff;
height: 100%;
display: flex;
align-items: center;
justify-content: space-around;
margin-left: 5%;
border-radius: 10PX;
box-shadow: 0PX 8PX 20PX 0PX rgba(46, 174, 255, 0.5);
}
}
.belowTable {
width: 75%;
max-height: 80%;
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
// box-shadow: 0PX 0PX 10PX 3PX #CCC;
border-radius: 10PX;
overflow: hidden;
transition: all 0.3s linear;
margin-bottom: 120PX;
.table-title {
width: 100%;
display: flex;
align-items: center;
height: 68PX;
position: sticky;
top: 0PX;
background: #D2C3EA;
padding: 0PX 10PX;
color: #4E3E7D;
position: relative;
span {
height: 100%;
width: calc(100% / 5);
line-height: 63PX;
font-size: 0.95rem;
font-weight: 600;
text-align: center;
}
.hash{
width: 58%;
font-size: 0.95rem;
text-align: left;
margin-left: 5%;
// background: palegoldenrod;
justify-content: left;
}
.blockRewards{
width: 20%;
font-weight: 600;
font-size: 0.95rem;
text-align: left;
margin-left: 1%;
}
.transactionFee{
width: 18%;
font-weight: 600;
font-size: 0.95rem;
}
span{
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: flex;
align-items: center;
justify-content: center;
}
}
ul {
width: 100%;
// height: 90%;
min-height: 200PX;
max-height: 818PX;
padding: 0;
background: #fff;
margin: 0;
overflow: hidden;
overflow-y: auto;
.table-title {
position: sticky;
top: 0PX;
background: #D2C3EA;
padding: 0PX 10PX;
color: #4E3E7D;
position: relative;
.hash{
width: 50%;
text-align: left;
}
.blockRewards{
width: 18%;
font-weight: 600;
}
.transactionFee{
width: 18%;
font-weight: 600;
}
span{
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: flex;
align-items: center;
justify-content: center;
}
}
li {
width: 100%;
list-style: none;
display: flex;
cursor: pointer;
justify-content: space-around;
align-items: center;
height: 9%;
span {
height: 100%;
width: calc(100% / 5);
line-height: 63PX;
font-size: 0.95rem;
font-weight: 600;
text-align: center;
}
}
li:nth-child(even) {
background-color: #fff;
background: #F8F8FA;
}
.currency-list {
background: #EFEFEF;
box-shadow: 0PX 0PX 2PX 1PX rgba(0, 0, 0, 0.02);
// margin-top: 1%;
padding: 0PX 10PX;
border:1PX solid #EFEFEF;
background: #F8F8FA;
margin-top: 10PX;
span{
overflow: hidden;
text-overflow:ellipsis ;
white-space: nowrap;
}
.hash{
width: 58%;
text-align: left;
margin-left: 5%;
}
.reward{
width: 20%;
text-align: left;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
margin-left: 1%;
}
}
}
.pageBox{
padding: 2%;
}
}
.belowTable:hover{
box-shadow: 0PX 0PX 15PX 3PX #C1A1FE;
}
}
}
.el-progress {
width: 400PX;
margin-left: -5PX;
white-space: nowrap;
}
.active{
color: #fff;
background: #641FFC;
}
</style>
<style >
@media screen and (min-width: 220px) and (max-width: 1279px){
.el-menu--horizontal{
width: 95%;
}
}
</style>