1.1需求处理、修改请求地址IP
1.广播页面及功能 接口对接 完成更新正式网 2.用户管理页面 处理中 3.工单管理 完成 4.用户算力
This commit is contained in:
@@ -5,8 +5,8 @@ VUE_APP_TITLE = m2pool
|
|||||||
ENV = 'development'
|
ENV = 'development'
|
||||||
|
|
||||||
#开发环境
|
#开发环境
|
||||||
VUE_APP_BASE_API = 'https://test.m2pool.com/api/'
|
VUE_APP_BASE_API = 'http://test.m2pool.com/api/'
|
||||||
# VUE_APP_BASE_API = 'http://10.168.2.150:8101/'
|
# VUE_APP_BASE_API = 'http://18.183.240.108:8080/api/'
|
||||||
VUE_APP_BASE_URL = 'https://test.m2pool.com/'
|
VUE_APP_BASE_URL = 'http://test.m2pool.com/'
|
||||||
# 路由懒加载
|
# 路由懒加载
|
||||||
VUE_CLI_BABEL_TRANSPILE_MODULES = true
|
VUE_CLI_BABEL_TRANSPILE_MODULES = true
|
||||||
|
|||||||
@@ -7,8 +7,9 @@ NODE_ENV = production
|
|||||||
ENV = 'staging'
|
ENV = 'staging'
|
||||||
|
|
||||||
# 测试环境
|
# 测试环境
|
||||||
VUE_APP_BASE_API = 'https://test.m2pool.com/api/'
|
# VUE_APP_BASE_API = 'http://18.183.240.108:8080/api/'
|
||||||
VUE_APP_BASE_URL = 'https://test.m2pool.com/'
|
VUE_APP_BASE_API = 'http://test.m2pool.com/api/'
|
||||||
|
VUE_APP_BASE_URL = 'http://test.m2pool.com/'
|
||||||
|
|
||||||
# 路由懒加载
|
# 路由懒加载
|
||||||
VUE_CLI_BABEL_TRANSPILE_MODULES = true
|
VUE_CLI_BABEL_TRANSPILE_MODULES = true
|
||||||
Binary file not shown.
@@ -20,11 +20,31 @@ export function sendMail(data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// //发送邮件给用户
|
//获取单个用户详情
|
||||||
// export function sendMail(data) {
|
export function getUserDetails(data) {
|
||||||
// return request({
|
return request({
|
||||||
// url: `manage/user/get/user/info`,
|
url: `manage/user/get/user/info`,
|
||||||
// method: 'post',
|
method: 'post',
|
||||||
// data
|
data
|
||||||
// })
|
})
|
||||||
// }
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//用户详情曲线图
|
||||||
|
export function getUserLineChart(data) {
|
||||||
|
return request({
|
||||||
|
url: `manage/user/getMiningPowerInfo`,
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//用户离线柱状图
|
||||||
|
export function getUserOnlineStatus(data) {
|
||||||
|
return request({
|
||||||
|
url: `manage/user/getMinerUserOnlineStatus`,
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -49,8 +49,13 @@
|
|||||||
<comAside></comAside>
|
<comAside></comAside>
|
||||||
|
|
||||||
<!-- 主体内容 -->
|
<!-- 主体内容 -->
|
||||||
<el-main class="admin-main">
|
<el-main class="admin-main">
|
||||||
<router-view v-if="key !== '/'" :key="key" />
|
|
||||||
|
<router-view v-if="key !== '/zh' && key !== '/en' &&key !== '/zh/login' && key !== '/en/login' && key !== '/zh/register' && key !== '/en/register'" :key="key" />
|
||||||
|
<div v-else style="color: #333;font-size: 16px;text-align: center;line-height: 100vh;">
|
||||||
|
选择左侧导航栏查看页面
|
||||||
|
</div>
|
||||||
|
|
||||||
</el-main>
|
</el-main>
|
||||||
</el-container>
|
</el-container>
|
||||||
</el-container>
|
</el-container>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -49,20 +49,20 @@ export default {
|
|||||||
id:"1",
|
id:"1",
|
||||||
|
|
||||||
},
|
},
|
||||||
// {//用户管理
|
{//用户管理
|
||||||
// path:"userManagement",
|
path:"userManagement",
|
||||||
// label:`backendSystem.userManagement`,
|
label:`backendSystem.userManagement`,
|
||||||
// icon:"el-icon-user",
|
icon:"el-icon-user",
|
||||||
// id:"2",
|
id:"2",
|
||||||
|
|
||||||
// },
|
},
|
||||||
// {//工单管理
|
{//工单管理
|
||||||
// path:"workOrderBackend",
|
path:"workOrderBackend",
|
||||||
// label:`backendSystem.workOrder`,
|
label:`backendSystem.workOrder`,
|
||||||
// icon:"el-icon-document-copy",
|
icon:"el-icon-document-copy",
|
||||||
// id:"3",
|
id:"3",
|
||||||
|
|
||||||
// },
|
},
|
||||||
// {//用户算力
|
// {//用户算力
|
||||||
// path:"userComputingPower",
|
// path:"userComputingPower",
|
||||||
// label:`backendSystem.userComputingPower`,
|
// label:`backendSystem.userComputingPower`,
|
||||||
@@ -71,29 +71,36 @@ export default {
|
|||||||
|
|
||||||
// },
|
// },
|
||||||
],
|
],
|
||||||
activeIndex:"1",
|
activeIndex: "0",
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted(){
|
mounted(){
|
||||||
if(localStorage.getItem("activeIndex")){
|
const savedIndex = localStorage.getItem("activeIndex");
|
||||||
this.activeIndex = localStorage.getItem("activeIndex");
|
if(savedIndex){
|
||||||
|
this.activeIndex = savedIndex;
|
||||||
|
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
this.$addStorageEvent(1, "activeIndex", this.activeIndex);
|
this.$addStorageEvent(1, "activeIndex", this.activeIndex);
|
||||||
this.activeIndex ="1"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
methods:{
|
methods:{
|
||||||
handleClick(item){
|
handleClick(item){
|
||||||
this.activeIndex = item.id;
|
console.log(item,'item');
|
||||||
this.$addStorageEvent(1, "activeIndex", item.id);
|
|
||||||
const lang = this.$i18n.locale;
|
const lang = this.$i18n.locale;
|
||||||
this.$router.push(`/${lang}/${item.path}`);
|
this.$router.push(`/${lang}/${item.path}`);
|
||||||
|
this.activeIndex = item.id;
|
||||||
|
this.$addStorageEvent(1, "activeIndex", item.id);
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
beforeDestroy(){
|
||||||
|
localStorage.removeItem("activeIndex");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -175,8 +175,8 @@
|
|||||||
<span class="line"></span>
|
<span class="line"></span>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
<!-- 工单管理 -->
|
||||||
<li
|
<!-- <li
|
||||||
v-show="ManagementShow"
|
v-show="ManagementShow"
|
||||||
class="personalCenter"
|
class="personalCenter"
|
||||||
:class="{
|
:class="{
|
||||||
@@ -193,7 +193,7 @@
|
|||||||
<span class="circular"></span>
|
<span class="circular"></span>
|
||||||
<span class="line"></span>
|
<span class="line"></span>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li> -->
|
||||||
|
|
||||||
<li class="langBox">
|
<li class="langBox">
|
||||||
<div class="LangLine"></div>
|
<div class="LangLine"></div>
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ Vue.use(ElementUI, {
|
|||||||
});
|
});
|
||||||
Vue.prototype.$axios = axios
|
Vue.prototype.$axios = axios
|
||||||
|
|
||||||
console.log = ()=>{} //全局关闭打印
|
// console.log = ()=>{} //全局关闭打印
|
||||||
// 全局注册混入
|
// 全局注册混入
|
||||||
Vue.mixin(loadingStateMixin);//loading状态管理
|
Vue.mixin(loadingStateMixin);//loading状态管理
|
||||||
Vue.mixin(networkRecoveryMixin);//网络恢复后数据刷新
|
Vue.mixin(networkRecoveryMixin);//网络恢复后数据刷新
|
||||||
@@ -36,6 +36,10 @@ const screenWidth = window.innerWidth || document.documentElement.clientWidth ||
|
|||||||
const isNarrowScreen = screenWidth < 1280;
|
const isNarrowScreen = screenWidth < 1280;
|
||||||
Vue.prototype.$isMobile = isNarrowScreen
|
Vue.prototype.$isMobile = isNarrowScreen
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 在路由守卫中设置
|
// 在路由守卫中设置
|
||||||
router.beforeEach((to, from, next) => {
|
router.beforeEach((to, from, next) => {
|
||||||
// 从路由中获取语言参数
|
// 从路由中获取语言参数
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ const childrenRoutes = [
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{//报块页面
|
{//用户管理
|
||||||
path: 'userManagement',
|
path: 'userManagement',
|
||||||
name: 'UserManagement',
|
name: 'UserManagement',
|
||||||
component: () => import('../views/userManagement/index.vue'),
|
component: () => import('../views/userManagement/index.vue'),
|
||||||
@@ -97,8 +97,23 @@ const childrenRoutes = [
|
|||||||
en: 'userManagement',
|
en: 'userManagement',
|
||||||
zh: '用户管理'
|
zh: '用户管理'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
{//用户详情
|
||||||
|
path: 'userDetails',
|
||||||
|
name: 'UserDetails',
|
||||||
|
component: () => import('../views/userDetails/index.vue'),
|
||||||
|
meta: {title: '用户详情',
|
||||||
|
description:i18n.t(`seo.userManagement`),
|
||||||
|
allAuthority:[`admin`,`back_admin`],
|
||||||
|
keywords:{
|
||||||
|
en: 'userDetails',
|
||||||
|
zh: '用户详情'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{//费率
|
{//费率
|
||||||
@@ -662,88 +677,167 @@ const router = new VueRouter({
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
router.beforeEach((to, from, next) => {
|
// router.beforeEach((to, from, next) => {
|
||||||
// 检查语言参数
|
|
||||||
const lang = to.params.lang;
|
|
||||||
const supportedLanguages = ['zh', 'en'];
|
|
||||||
|
|
||||||
// 如果路径以斜杠结尾且不是根路径,则重定向
|
|
||||||
if (to.path.endsWith('/') && to.path.length > 1) {
|
|
||||||
const path = to.path.slice(0, -1);
|
|
||||||
return next({
|
|
||||||
path,
|
|
||||||
query: to.query,
|
// // 检查语言参数
|
||||||
hash: to.hash,
|
// const lang = to.params.lang;
|
||||||
params: to.params
|
// const supportedLanguages = ['zh', 'en'];
|
||||||
});
|
|
||||||
}
|
// // 如果路径以斜杠结尾且不是根路径,则重定向
|
||||||
|
// if (to.path.endsWith('/') && to.path.length > 1) {
|
||||||
|
// const path = to.path.slice(0, -1);
|
||||||
|
// return next({
|
||||||
|
// path,
|
||||||
|
// query: to.query,
|
||||||
|
// hash: to.hash,
|
||||||
|
// params: to.params
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
|
||||||
if (!lang && to.path !== '/') {
|
// if (!lang && to.path !== '/') {
|
||||||
const defaultLang = localStorage.getItem('lang') || 'en';
|
// const defaultLang = localStorage.getItem('lang') || 'en';
|
||||||
return next(`/${defaultLang}${to.path}`);
|
// return next(`/${defaultLang}${to.path}`);
|
||||||
}
|
// }
|
||||||
|
|
||||||
let data = localStorage.getItem("jurisdiction");
|
// let data = localStorage.getItem("jurisdiction");
|
||||||
let jurisdiction =JSON.parse(data);
|
// let jurisdiction =JSON.parse(data);
|
||||||
console.log(jurisdiction,"权限");
|
// console.log(jurisdiction,"权限");
|
||||||
|
|
||||||
localStorage.setItem('superReportError',"")
|
// localStorage.setItem('superReportError',"")
|
||||||
let element = document.getElementsByClassName('el-main')[0];
|
// let element = document.getElementsByClassName('el-main')[0];
|
||||||
if(element){
|
// if(element){
|
||||||
element.scrollTop = 0
|
// element.scrollTop = 0
|
||||||
}
|
// }
|
||||||
|
|
||||||
let token
|
// let token
|
||||||
try{
|
// try{
|
||||||
token =JSON.parse(localStorage.getItem('token'))
|
// token =JSON.parse(localStorage.getItem('token'))
|
||||||
}catch(e){
|
// }catch(e){
|
||||||
console.log(e);
|
// console.log(e);
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
// console.log('beforeEach:', to.path, 'token:', token);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (token) {
|
// if (token) {
|
||||||
|
|
||||||
|
|
||||||
if (to.path === `/${lang}/login`|| to.path === `/${lang}/register`) {
|
// if (to.path === `/${lang}/login`|| to.path === `/${lang}/register`) {
|
||||||
next({ path: `/${lang}` })
|
// next({ path: `/${lang}` })
|
||||||
}else if(to.meta.allAuthority && to.meta.allAuthority[0] ==`all`){
|
// }else if(to.meta.allAuthority && to.meta.allAuthority[0] ==`all`){
|
||||||
next()
|
// next()
|
||||||
}else if(jurisdiction.roleKey && to.meta.allAuthority&&to.meta.allAuthority.some(item=>item == jurisdiction.roleKey )){
|
// }else if(jurisdiction.roleKey && to.meta.allAuthority&&to.meta.allAuthority.some(item=>item == jurisdiction.roleKey )){
|
||||||
next()
|
// next()
|
||||||
}else{
|
// }else{
|
||||||
console.log(to.meta.allAuthority,to.path,"权限");
|
// console.log(to.meta.allAuthority,to.path,"权限");
|
||||||
|
|
||||||
Message({//权限不足
|
// Message({//权限不足
|
||||||
showClose: true,
|
// showClose: true,
|
||||||
message:i18n.t(`mining.jurisdiction`),
|
// message:i18n.t(`mining.jurisdiction`),
|
||||||
type: 'error'
|
// type: 'error'
|
||||||
});
|
// });
|
||||||
|
|
||||||
next({ path: `/${lang}` }) // 添加这行,重定向到首页
|
// next({ path: `/${lang}` }) // 添加这行,重定向到首页
|
||||||
}
|
// }
|
||||||
|
|
||||||
}else{
|
// }else{
|
||||||
|
|
||||||
|
// console.log(to.path,"to.path 权限不足");
|
||||||
|
// let paths = [`/${lang}/miningAccount`,`/${lang}/workOrderRecords`,`/${lang}/userWorkDetails`,`/${lang}/submitWorkOrder`,`/${lang}/workOrderBackend`,`/${lang}/BKWorkDetails`]
|
||||||
|
// if (paths.includes(to.path) || to.path.includes(`personalCenter`) ) {
|
||||||
|
// console.log(to.path,"to.path 权限不足");
|
||||||
|
|
||||||
let paths = [`/${lang}/miningAccount`,`/${lang}/workOrderRecords`,`/${lang}/userWorkDetails`,`/${lang}/submitWorkOrder`,`/${lang}/workOrderBackend`,`/${lang}/BKWorkDetails`]
|
// Message({//权限不足
|
||||||
if (paths.includes(to.path) || to.path.includes(`personalCenter`) ) {
|
// showClose: true,
|
||||||
|
// message:i18n.t(`mining.logInFirst`),
|
||||||
Message({//权限不足
|
// type: 'error'
|
||||||
showClose: true,
|
// });
|
||||||
message:i18n.t(`mining.logInFirst`),
|
|
||||||
type: 'error'
|
|
||||||
});
|
|
||||||
|
|
||||||
next({ path: `/${lang}/login` })
|
// next({ path: `/${lang}/login` })
|
||||||
} else {
|
// } else {
|
||||||
|
|
||||||
next()
|
// next()
|
||||||
}
|
// }
|
||||||
}
|
// return; // 防止多次 next
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
})
|
// })
|
||||||
|
|
||||||
|
router.beforeEach((to, from, next) => {
|
||||||
|
const lang = to.params.lang || (localStorage.getItem('lang') || 'en');
|
||||||
|
let token = null;
|
||||||
|
try {
|
||||||
|
token = JSON.parse(localStorage.getItem('token'));
|
||||||
|
} catch (e) {
|
||||||
|
token = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 需要登录的页面
|
||||||
|
const needLoginPaths = [
|
||||||
|
`/${lang}/miningAccount`,
|
||||||
|
`/${lang}/workOrderRecords`,
|
||||||
|
`/${lang}/userWorkDetails`,
|
||||||
|
`/${lang}/submitWorkOrder`,
|
||||||
|
`/${lang}/workOrderBackend`,
|
||||||
|
`/${lang}/BKWorkDetails`
|
||||||
|
];
|
||||||
|
|
||||||
|
// 未登录
|
||||||
|
if (!token) {
|
||||||
|
// 只在不是登录/注册页时才跳转
|
||||||
|
if (
|
||||||
|
(needLoginPaths.includes(to.path) || to.path.includes('personalCenter')) &&
|
||||||
|
to.name !== 'Login' &&
|
||||||
|
to.name !== 'Register'
|
||||||
|
) {
|
||||||
|
Message({
|
||||||
|
showClose: true,
|
||||||
|
message: i18n.t(`mining.logInFirst`),
|
||||||
|
type: 'error'
|
||||||
|
});
|
||||||
|
return next({ path: `/${lang}/login` });
|
||||||
|
}
|
||||||
|
return next();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 已登录
|
||||||
|
if (to.name === 'Login' || to.name === 'Register') {
|
||||||
|
return next({ path: `/${lang}` });
|
||||||
|
}
|
||||||
|
|
||||||
|
// 权限判断
|
||||||
|
let jurisdiction = null;
|
||||||
|
try {
|
||||||
|
jurisdiction = JSON.parse(localStorage.getItem("jurisdiction"));
|
||||||
|
} catch (e) {
|
||||||
|
jurisdiction = null;
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
to.meta.allAuthority &&
|
||||||
|
(
|
||||||
|
to.meta.allAuthority[0] === 'all' ||
|
||||||
|
(jurisdiction && jurisdiction.roleKey && to.meta.allAuthority.includes(jurisdiction.roleKey))
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return next();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 无权限
|
||||||
|
Message({
|
||||||
|
showClose: true,
|
||||||
|
message: i18n.t(`mining.jurisdiction`),
|
||||||
|
type: 'error'
|
||||||
|
});
|
||||||
|
return next({ path: `/${lang}/login` }); // 建议无权限时跳转登录页而不是首页
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ export const getImageUrl = (path) => {
|
|||||||
const baseUrl = process.env.VUE_APP_BASE_URL;
|
const baseUrl = process.env.VUE_APP_BASE_URL;
|
||||||
if (!path) return '';
|
if (!path) return '';
|
||||||
if (path.startsWith('http')) {
|
if (path.startsWith('http')) {
|
||||||
return path.replace('https://test.m2pool.com', baseUrl);
|
return path.replace('http://test.m2pool.com', baseUrl);
|
||||||
}
|
}
|
||||||
return `${baseUrl}${path.startsWith('/') ? '' : '/'}${path}`;
|
return `${baseUrl}${path.startsWith('/') ? '' : '/'}${path}`;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -326,8 +326,8 @@ export default {
|
|||||||
|
|
||||||
if (!this.activeCoin) {
|
if (!this.activeCoin) {
|
||||||
this.activeCoin = "nexa"
|
this.activeCoin = "nexa"
|
||||||
this.imgUrl = `https://test.m2pool.com/img/nexa.png`
|
this.imgUrl = `${this.$baseApi}/img/nexa.png`
|
||||||
this.currencyPath = `https://test.m2pool.com/img/nexa.png`
|
this.currencyPath = `${this.$baseApi}/img/nexa.png`
|
||||||
this.params.coin = "nexa"
|
this.params.coin = "nexa"
|
||||||
this.$addStorageEvent(1, `activeCoin`, JSON.stringify(this.activeCoin))
|
this.$addStorageEvent(1, `activeCoin`, JSON.stringify(this.activeCoin))
|
||||||
this.openAPI = true
|
this.openAPI = true
|
||||||
|
|||||||
@@ -73,13 +73,12 @@ export default {
|
|||||||
this.activeCoin= JSON.parse(activeCoin)
|
this.activeCoin= JSON.parse(activeCoin)
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(this.activeCoin,"鸡脚低端局");
|
|
||||||
|
|
||||||
|
|
||||||
if ( !this.activeCoin ) {
|
if ( !this.activeCoin ) {
|
||||||
this.activeCoin ="nexa"
|
this.activeCoin ="nexa"
|
||||||
this.imgUrl = `https://test.m2pool.com/img/nexa.png`
|
this.imgUrl = `${this.$baseApi}/img/nexa.png`
|
||||||
this.currencyPath= `https://test.m2pool.com/img/nexa.png`
|
this.currencyPath= `${this.$baseApi}/img/nexa.png`
|
||||||
this.params.coin ="nexa"
|
this.params.coin ="nexa"
|
||||||
this.$addStorageEvent(1,`activeCoin`,JSON.stringify(this.activeCoin))
|
this.$addStorageEvent(1,`activeCoin`,JSON.stringify(this.activeCoin))
|
||||||
this.openAPI =true
|
this.openAPI =true
|
||||||
|
|||||||
@@ -422,21 +422,26 @@ export default {
|
|||||||
}
|
}
|
||||||
.main {
|
.main {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
min-height: 100vh;
|
|
||||||
background: #fff;
|
background: #fff;
|
||||||
background-image: url(../../assets/img/miningAccount/top.png);
|
// background-image: url(../../assets/img/miningAccount/top.png);
|
||||||
background-size: 100% 50%;
|
// background-size: 100% 50%;
|
||||||
background-repeat: no-repeat;
|
// background-repeat: no-repeat;
|
||||||
background-position: 30% -15%;
|
// background-position: 30% -15%;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding-top: 60PX;
|
// padding-top: 60PX;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
height: 100%;
|
||||||
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
.content{
|
.content{
|
||||||
width: 50%;
|
width: 100%;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
|
padding: 20px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
|
||||||
}
|
}
|
||||||
.elBtn{
|
.elBtn{
|
||||||
background: #661FFB;
|
background: #661FFB;
|
||||||
|
|||||||
@@ -588,9 +588,15 @@ export default {
|
|||||||
if (this.stompClient) {
|
if (this.stompClient) {
|
||||||
this.forceDisconnectAll();
|
this.forceDisconnectAll();
|
||||||
}
|
}
|
||||||
|
let apiUrl = process.env.VUE_APP_BASE_API;
|
||||||
console.log("开始初始化WebSocket连接...");
|
let baseUrl=""
|
||||||
const baseUrl = process.env.VUE_APP_BASE_API.replace("https", "wss");
|
// 将 https 替换为 wss
|
||||||
|
if (apiUrl.startsWith("https://")) {
|
||||||
|
baseUrl= apiUrl.replace("https://", "wss://");
|
||||||
|
}
|
||||||
|
if (apiUrl.startsWith("http://")) {
|
||||||
|
baseUrl=apiUrl.replace("http://", "ws://");
|
||||||
|
}
|
||||||
const wsUrl = `${baseUrl}chat/ws`;
|
const wsUrl = `${baseUrl}chat/ws`;
|
||||||
this.stompClient = Stomp.client(wsUrl);
|
this.stompClient = Stomp.client(wsUrl);
|
||||||
|
|
||||||
|
|||||||
@@ -902,7 +902,7 @@ export default {
|
|||||||
|
|
||||||
this.$addStorageEvent(1, `currencyList`, JSON.stringify(this.currencyList))
|
this.$addStorageEvent(1, `currencyList`, JSON.stringify(this.currencyList))
|
||||||
if (this.$refs.select) {
|
if (this.$refs.select) {
|
||||||
this.$refs.select.$el.children[0].children[0].setAttribute('style', "background:url(https://test.m2pool.com/img/nexa.png) no-repeat 10PX;background-size: 20PX 20PX;color:#333;padding-left: 30PX;");
|
this.$refs.select.$el.children[0].children[0].setAttribute('style', `background:url(${this.$baseApi}/img/nexa.png) no-repeat 10PX;background-size: 20PX 20PX;color:#333;padding-left: 30PX;`);
|
||||||
|
|
||||||
}
|
}
|
||||||
this.fetchParam({ coin: this.params.coin })
|
this.fetchParam({ coin: this.params.coin })
|
||||||
|
|||||||
113
mining-pool/src/views/userDetails/index.js
Normal file
113
mining-pool/src/views/userDetails/index.js
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
import { getUserDetails,getUserLineChart,getUserOnlineStatus } from '../../api/userManagement'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'UserDetails',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
userDetailsID: null,
|
||||||
|
userData: {
|
||||||
|
// address:"D7tviVPKtTd2qnkzJEVfZWQqzV6NyQqHxw",
|
||||||
|
// historyBalance:[
|
||||||
|
// {
|
||||||
|
// "balance": "testAddBalanceForgrD7tviVPKtTd2qnkzJEVfZWQqzV6NyQqHxws"
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "balance": "testAddBalancD7tviVPKtTd2qnkzJEVfZWQqzV6NyQqHxweForgrs"
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "balance": "testAddBalancD7tviVPKtTd2qnkzJEVfZWQqzV6NyQqHxweForgrs"
|
||||||
|
// },
|
||||||
|
|
||||||
|
// ],
|
||||||
|
// maxHeight:"100000",
|
||||||
|
// createDate:"2025-06-16 00:00:00",
|
||||||
|
// amount:"273920.96662387",
|
||||||
|
// coin:"nexa",
|
||||||
|
// shouldOutDate:"2025-06-16 00:00:00",
|
||||||
|
// user:"ceshi1",
|
||||||
|
},
|
||||||
|
userDetailsLoading: false,
|
||||||
|
formInline: {
|
||||||
|
user: '',
|
||||||
|
region: ''
|
||||||
|
},
|
||||||
|
userDetailsParams:{
|
||||||
|
coin: '',
|
||||||
|
minerUser: '',
|
||||||
|
|
||||||
|
},
|
||||||
|
labelPosition: 'top',
|
||||||
|
noDataTip: false,
|
||||||
|
lineChartParams:{
|
||||||
|
user: '',
|
||||||
|
endDate:"",
|
||||||
|
startDate:"",
|
||||||
|
coin:"",
|
||||||
|
|
||||||
|
},
|
||||||
|
onlineStatusParams:{
|
||||||
|
user: '',
|
||||||
|
coin: '',
|
||||||
|
datePoint:"",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
console.log('userDetails mounted', this.$route.path, this.$route.query)
|
||||||
|
const params= this.$route.query || JSON.parse(localStorage.getItem("userDetailsParams"));
|
||||||
|
this.lineChartParams.user=params.user
|
||||||
|
this.lineChartParams.coin=params.coin
|
||||||
|
this.onlineStatusParams.user=params.user
|
||||||
|
this.onlineStatusParams.coin=params.coin
|
||||||
|
this.userDetailsParams.coin=params.coin
|
||||||
|
this.userDetailsParams.minerUser=params.minerUser
|
||||||
|
|
||||||
|
if (this.userDetailsParams.coin && this.userDetailsParams.minerUser) {
|
||||||
|
localStorage.setItem("userDetailsParams", JSON.stringify(params));
|
||||||
|
|
||||||
|
this.fetchUserDetails(this.userDetailsParams);
|
||||||
|
this.fetchUserLineChart(this.lineChartParams);
|
||||||
|
this.fetchUserOnlineStatus(this.onlineStatusParams);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async fetchUserDetails(params) {
|
||||||
|
this.userDetailsLoading = true
|
||||||
|
// 这里写你的获取详情逻辑
|
||||||
|
const res = await getUserDetails(params)
|
||||||
|
console.log(res)
|
||||||
|
|
||||||
|
if(res && res.code == 200){
|
||||||
|
if (!res.data) {
|
||||||
|
// this.$message.error('未获取到用户信息');
|
||||||
|
this.noDataTip = true
|
||||||
|
this.userData.coin = this.userDetailsParams.coin
|
||||||
|
this.userData.user = this.userDetailsParams.minerUser
|
||||||
|
}else{
|
||||||
|
this.userData = res.data
|
||||||
|
this.userData.shouldOutDate=`${this.userData.shouldOutDate.split("T")[0]} ${this.userData.shouldOutDate.split("T")[1]}`
|
||||||
|
this.userData.createDate=`${this.userData.createDate.split("T")[0]} ${this.userData.createDate.split("T")[1]}`
|
||||||
|
|
||||||
|
this.noDataTip = false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
this.userDetailsLoading = false
|
||||||
|
},
|
||||||
|
async fetchUserLineChart(params) {
|
||||||
|
const res = await getUserLineChart(params)
|
||||||
|
console.log(res)
|
||||||
|
},
|
||||||
|
async fetchUserOnlineStatus(params) {
|
||||||
|
const res = await getUserOnlineStatus(params)
|
||||||
|
console.log(res)
|
||||||
|
},
|
||||||
|
goBack(){
|
||||||
|
const lang = this.$i18n.locale;
|
||||||
|
this.$router.push({
|
||||||
|
path: `/${lang}/userManagement`,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
178
mining-pool/src/views/userDetails/index.vue
Normal file
178
mining-pool/src/views/userDetails/index.vue
Normal file
@@ -0,0 +1,178 @@
|
|||||||
|
<template>
|
||||||
|
<div v-loading="userDetailsLoading">
|
||||||
|
<div class="main-title">用户详情 <span @click="goBack" style="color: #409EFF;cursor: pointer;font-size: 16px;">返回</span> </div>
|
||||||
|
<section class="user-details-box">
|
||||||
|
<section class="user-details-form">
|
||||||
|
<el-form
|
||||||
|
:label-position="labelPosition"
|
||||||
|
:inline="true"
|
||||||
|
:model="userData"
|
||||||
|
class="demo-form-inline"
|
||||||
|
>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item style="width: 80%;" label="币种:" label-width="100px" prop="coin">
|
||||||
|
<el-input disabled v-model="userData.coin"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item style="width: 80%;" label="挖矿账户:" label-width="100px" prop="user">
|
||||||
|
<el-input disabled v-model="userData.user"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item style="width: 80%;" label="交易金额:" label-width="100px" prop="amount">
|
||||||
|
<el-input disabled v-model="userData.amount"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item
|
||||||
|
label="收益分配日期:"
|
||||||
|
label-width="100px"
|
||||||
|
prop="createDate"
|
||||||
|
style="width: 80%;"
|
||||||
|
>
|
||||||
|
<el-input disabled v-model="userData.createDate"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item style="width: 80%;" label="最大高度:" label-width="100px" prop="maxHeight">
|
||||||
|
<el-input disabled v-model="userData.maxHeight"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item style="width: 80%;" label="实际转账日期:" label-width="100px" prop="shouldOutDate">
|
||||||
|
<el-input disabled v-model="userData.shouldOutDate"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item style="width: 55%;" label="转账地址:" label-width="100px" prop="address">
|
||||||
|
<el-input
|
||||||
|
disabled v-model="userData.address"
|
||||||
|
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item style="width: 55%; max-height: 300px;overflow-y: auto;" label="历史支付地址:" label-width="100px" prop="address">
|
||||||
|
<p class="history-balance-item" v-for="item in userData.historyBalance" :key="item.balance">{{item.balance}}</p>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
|
||||||
|
</el-form>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="chartBox">
|
||||||
|
<div class="lineChartBox">用户挖矿曲线图</div>
|
||||||
|
<div class="barChartBox">柱状图</div>
|
||||||
|
</section>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Index from "./index";
|
||||||
|
export default {
|
||||||
|
mixins: [Index],
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.main-title {
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: bold;
|
||||||
|
|
||||||
|
color: #333;
|
||||||
|
margin-bottom: 18px;
|
||||||
|
}
|
||||||
|
.user-details-box{
|
||||||
|
width: 100%;
|
||||||
|
margin: 0 auto;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 20px;
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
height: 73vh;
|
||||||
|
overflow: hidden;
|
||||||
|
overflow-y: auto;
|
||||||
|
// background: palegoldenrod;
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-details-form {
|
||||||
|
width: 80%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 20px;
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
// background: palegoldenrod;
|
||||||
|
}
|
||||||
|
|
||||||
|
.no-data-tip{
|
||||||
|
width: 80%;
|
||||||
|
margin: 0 auto;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #999;
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 20px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.history-balance-item{
|
||||||
|
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
background:#E7DFF3 ;
|
||||||
|
padding: 0px 20px;
|
||||||
|
border-radius: 20px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
color: rgba(0,0,0,0.6);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-form-item__label {
|
||||||
|
// color: #409EFF; /* 例如设置为 Element UI 主色 */
|
||||||
|
font-weight: bold; /* 加粗 */
|
||||||
|
font-size: 16px; /* 字号 */
|
||||||
|
letter-spacing: 1px; /* 字间距 */
|
||||||
|
/* 你可以根据需要添加更多样式 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.chartBox{
|
||||||
|
width: 80vw;
|
||||||
|
box-sizing: border-box;
|
||||||
|
// background: palegoldenrod;
|
||||||
|
height: 800px;
|
||||||
|
display: flex;
|
||||||
|
align-content: center;
|
||||||
|
justify-content: space-around;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.lineChartBox{
|
||||||
|
width: 49%;
|
||||||
|
height: 100%;
|
||||||
|
background: palegoldenrod;
|
||||||
|
}
|
||||||
|
.barChartBox{
|
||||||
|
width: 49%;
|
||||||
|
height: 100%;
|
||||||
|
background: pink;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -1,34 +1,223 @@
|
|||||||
import { getUserList, sendMail } from '../../api/userManagement'
|
import { getUserList, sendMail, } from '../../api/userManagement'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data(){
|
data() {
|
||||||
return {
|
return {
|
||||||
userList:[],
|
userList: [],
|
||||||
userListLoading:false,
|
userListLoading: false,
|
||||||
userListParams:{
|
userListParams: {
|
||||||
coin:"nexa",
|
coin: "nexa",
|
||||||
minerUser:"",
|
minerUser: "",
|
||||||
user:"",
|
user: "",
|
||||||
pageNum:1,
|
pageNum: 1,
|
||||||
pageSize:50
|
pageSize: 50
|
||||||
},
|
},
|
||||||
tableData:[],
|
tableData: [],
|
||||||
userManagementLoading:false,
|
userManagementLoading: false,
|
||||||
|
formInline: {
|
||||||
|
user: "",
|
||||||
|
region: "",
|
||||||
|
},
|
||||||
|
currencyList: [],
|
||||||
|
screenCurrency: 'nexa',
|
||||||
|
rules: {
|
||||||
|
user: [
|
||||||
|
{
|
||||||
|
type: 'email',
|
||||||
|
message: '请输入正确的邮箱地址',
|
||||||
|
trigger: ['blur', 'change']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
emailRules: {
|
||||||
|
subject: [
|
||||||
|
{ required: true, message: '请输入邮件主题', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
text: [
|
||||||
|
{ required: true, message: '请输入邮件内容', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
to: [
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 多邮箱校验+去重,支持中英文逗号分隔
|
||||||
|
* @param {Object} rule
|
||||||
|
* @param {string} value
|
||||||
|
* @param {Function} callback
|
||||||
|
*/
|
||||||
|
validator: (rule, value, callback) => {
|
||||||
|
if (!value) {
|
||||||
|
callback(); // 允许为空
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 以中英文逗号分隔,去除首尾空格
|
||||||
|
const emails = value.split(/[,,]/).map(e => e.trim()).filter(e => e);
|
||||||
|
// 邮箱正则
|
||||||
|
const emailReg = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/;
|
||||||
|
// 检查格式
|
||||||
|
for (let email of emails) {
|
||||||
|
if (!emailReg.test(email)) {
|
||||||
|
callback(new Error('请输入正确的邮箱地址,多个邮箱用逗号分隔'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 检查去重(忽略大小写)
|
||||||
|
const lowerSet = new Set();
|
||||||
|
for (let email of emails) {
|
||||||
|
const lower = email.toLowerCase();
|
||||||
|
if (lowerSet.has(lower)) {
|
||||||
|
callback(new Error('存在重复邮箱,请检查'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
lowerSet.add(lower);
|
||||||
|
}
|
||||||
|
callback();
|
||||||
|
},
|
||||||
|
trigger: ['blur', 'change']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
dialogVisible: false,
|
||||||
|
senParams:{
|
||||||
|
subject:"",
|
||||||
|
text:"",
|
||||||
|
to:"",
|
||||||
|
},
|
||||||
|
sendEmailLoading: false,
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted(){
|
mounted() {
|
||||||
this.fetchUserList(this.userListParams);
|
let token
|
||||||
},
|
try{
|
||||||
methods:{
|
token =JSON.parse(localStorage.getItem('token'))
|
||||||
async fetchUserList(params){
|
}catch(e){
|
||||||
this.userManagementLoading = true;
|
console.log(e);
|
||||||
const data = await getUserList(params);
|
}
|
||||||
console.log(data,'data');
|
if (token) {
|
||||||
|
|
||||||
if(data && data.code == 200){
|
this.fetchUserList(this.userListParams);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.currencyList = JSON.parse(localStorage.getItem("currencyList"))
|
||||||
|
window.addEventListener("setItem", () => {
|
||||||
|
this.currencyList = JSON.parse(localStorage.getItem("currencyList"))
|
||||||
|
});
|
||||||
|
this.changeScreen(this.screenCurrency);
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async fetchUserList(params) {
|
||||||
|
|
||||||
|
this.setLoading('userManagementLoading', true);
|
||||||
|
const data = await getUserList(params);
|
||||||
|
|
||||||
|
if (data && data.code == 200) {
|
||||||
this.tableData = data.rows;
|
this.tableData = data.rows;
|
||||||
}
|
}
|
||||||
this.userManagementLoading = false;
|
|
||||||
|
this.setLoading('userManagementLoading', false);
|
||||||
|
},
|
||||||
|
async fetchSendEmail(params) {
|
||||||
|
|
||||||
|
this.setLoading('sendEmailLoading', true);
|
||||||
|
const data = await sendMail(params);
|
||||||
|
|
||||||
|
|
||||||
|
if (data && data.code == 200) {
|
||||||
|
this.$message.success('发送成功');
|
||||||
|
this.dialogVisible = false;
|
||||||
|
for (const key in this.senParams) {
|
||||||
|
this.senParams[key] = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.setLoading('sendEmailLoading', false);
|
||||||
|
},
|
||||||
|
changeScreen(scope) {
|
||||||
|
let brand = scope
|
||||||
|
for (let index in this.currencyList) {
|
||||||
|
let aa = this.currencyList[index];
|
||||||
|
let value = aa.value;
|
||||||
|
if (brand === value) {
|
||||||
|
this.$refs.screen.$el.children[0].children[0].setAttribute('style', "background:url(" + aa.imgUrl + ") no-repeat 10PX;background-size: 20PX 20PX;color:#333;padding-left: 33PX;");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.userListParams.coin = scope
|
||||||
|
this.fetchUserList(this.userListParams);
|
||||||
|
|
||||||
|
},
|
||||||
|
handelImg(coin) {
|
||||||
|
return this.currencyList.find(item => item.value === coin)?.imgUrl || '';
|
||||||
|
},
|
||||||
|
handelQuery() {
|
||||||
|
this.$refs.formRef.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
for (let key in this.userListParams) {
|
||||||
|
if (typeof this.userListParams[key] === 'string') {
|
||||||
|
this.userListParams[key] = this.userListParams[key].trim();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.userListParams.minerUser && !this.userListParams.user) {
|
||||||
|
this.$message.error('请输入查询条件(挖矿账号、邮箱)');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.fetchUserList(this.userListParams);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
sendEmail(row) {
|
||||||
|
this.dialogVisible = true;
|
||||||
|
this.senParams.to = row.user;
|
||||||
|
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 输入框清除后自动重新查询
|
||||||
|
*/
|
||||||
|
handleInputClear() {
|
||||||
|
this.fetchUserList(this.userListParams);
|
||||||
|
},
|
||||||
|
handleClose() {
|
||||||
|
this.dialogVisible = false;
|
||||||
|
},
|
||||||
|
handleInput(val, type) {
|
||||||
|
|
||||||
|
},
|
||||||
|
sureSendEmail(){
|
||||||
|
console.log(this.senParams,'this.senParams');
|
||||||
|
|
||||||
|
this.$refs.formRef.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
this.fetchSendEmail(this.senParams);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
handleDetails(row){
|
||||||
|
console.log(row,'row');
|
||||||
|
|
||||||
|
// 获取当前语言
|
||||||
|
const lang = this.$i18n.locale;
|
||||||
|
|
||||||
|
// 添加语言参数的路由跳转
|
||||||
|
this.$router.push({
|
||||||
|
path: `/${lang}/userDetails`,
|
||||||
|
query: { coin: row.coin,minerUser:row.minerUser, user: row.user,}
|
||||||
|
}).catch(err => {
|
||||||
|
if(err.name !== 'NavigationDuplicated') {
|
||||||
|
console.error('路由跳转失败:', err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let obj ={
|
||||||
|
coin: row.coin,
|
||||||
|
minerUser: row.minerUser,
|
||||||
|
user: row.user,
|
||||||
|
}
|
||||||
|
|
||||||
|
// 保存ID到localStorage
|
||||||
|
localStorage.setItem("userDetailsParams",JSON.stringify(obj));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,95 +1,139 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-loading="userManagementLoading">
|
<div v-loading="userManagementLoading">
|
||||||
<div class="main-title">注册用户管理</div>
|
<div class="main-title">注册用户管理</div>
|
||||||
|
|
||||||
|
|
||||||
<el-table
|
<el-form :inline="true" :model="userListParams" class="demo-form-inline" :rules="rules" ref="formRef">
|
||||||
:data="tableData"
|
<el-form-item label="币种:" prop="coin">
|
||||||
border
|
<el-select
|
||||||
style="width: 100%; margin-bottom: 18px"
|
class="input"
|
||||||
:header-cell-style="{ 'text-align': 'center' }"
|
|
||||||
:cell-style="{ 'text-align': 'center' }"
|
size="middle"
|
||||||
height="65vh"
|
ref="screen"
|
||||||
|
@change="changeScreen(screenCurrency)"
|
||||||
>
|
v-model="screenCurrency"
|
||||||
<el-table-column prop="id" label="ID" width="60" />
|
:placeholder="$t(`personal.screen`)"
|
||||||
<el-table-column prop="coin" label="币种" />
|
>
|
||||||
<el-table-column prop="user" label="用户邮箱" />
|
<el-option
|
||||||
<el-table-column prop="status" label="用户状态" />
|
v-for="item in currencyList"
|
||||||
<el-table-column prop="minerUser" label="挖矿账号" />
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
<div style="display: flex; align-items: center">
|
||||||
|
<img :src="item.imgUrl" style="float: left; width: 20px" />
|
||||||
|
<span style="float: left; margin-left: 5px">
|
||||||
|
{{ item.label }}</span
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="挖矿账号:" style="margin-left: 5vw" prop="minerUser">
|
||||||
|
<el-input v-model="userListParams.minerUser" placeholder="挖矿账号" clearable @clear="handleInputClear"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="邮箱:" style="margin-left: 5vw" prop="user">
|
||||||
|
<el-input
|
||||||
|
v-model="userListParams.user"
|
||||||
|
type="email"
|
||||||
|
placeholder="邮箱"
|
||||||
|
clearable
|
||||||
|
@clear="handleInputClear"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item style="margin-left: 1vw">
|
||||||
<el-table-column :label="$t('backendSystem.operation')" width="200">
|
<el-button type="primary" @click="handelQuery">查询</el-button>
|
||||||
<el-button
|
</el-form-item>
|
||||||
size="mini"
|
</el-form>
|
||||||
|
<el-table
|
||||||
>详情</el-button>
|
:data="tableData"
|
||||||
<el-button
|
border
|
||||||
size="mini"
|
style="width: 100%; margin-bottom: 18px"
|
||||||
|
:header-cell-style="{ 'text-align': 'center' }"
|
||||||
>发送邮件</el-button>
|
:cell-style="{ 'text-align': 'center' }"
|
||||||
|
height="65vh"
|
||||||
</el-table-column>
|
>
|
||||||
|
<el-table-column prop="id" label="ID" width="60" />
|
||||||
|
<el-table-column prop="coin" label="币种" width="100" show-overflow-tooltip>
|
||||||
|
<template slot-scope="scope" >
|
||||||
|
<div style="display: flex; align-items: center;justify-content: center;">
|
||||||
|
<img :src="handelImg(scope.row.coin)" style="width: 20px" />
|
||||||
|
<span style="margin-left: 5px">{{ scope.row.coin }}</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="user" label="用户邮箱" width="200" show-overflow-tooltip/>
|
||||||
|
<el-table-column prop="amount" label="最小起付金额" width="100" show-overflow-tooltip/>
|
||||||
|
<el-table-column prop="status" label="用户状态" width="80">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-tag :type="scope.row.status === '1' ? 'success' : 'danger'">{{
|
||||||
|
scope.row.status == "0" ? "正常" : "删除"
|
||||||
|
}}</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="minerUser" label="挖矿账号" width="180" show-overflow-tooltip/>
|
||||||
|
<el-table-column prop="balance" label="支付地址" show-overflow-tooltip />
|
||||||
|
<el-table-column prop="active" label="是否自动提现" width="80" show-overflow-tooltip>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-tag :type="scope.row.active === '1' ? 'success' : 'danger'">{{
|
||||||
|
scope.row.active == "0" ? "是" : "否"
|
||||||
|
}}</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
</el-table>
|
<el-table-column :label="$t('backendSystem.operation')" width="180">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button size="mini" @click="handleDetails(scope.row)" type="primary" plain>详情</el-button>
|
||||||
|
<el-button size="mini" @click="sendEmail(scope.row)" style="color: #651fff; border: 1px solid #651fff"
|
||||||
|
>发送邮件</el-button
|
||||||
|
>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
<!-- 新增广播弹窗 -->
|
<!-- 发送邮箱弹窗-->
|
||||||
<!-- <el-dialog
|
<el-dialog
|
||||||
:title="$t('backendSystem.dialogTitle')"
|
title="邮件内容"
|
||||||
:visible.sync="dialogVisible"
|
:visible.sync="dialogVisible"
|
||||||
width="50%"
|
width="50%"
|
||||||
:before-close="handleClose"
|
:before-close="handleClose"
|
||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
>
|
>
|
||||||
<el-form :model="addParams" >
|
<el-form :model="senParams" ref="formRef" :rules="emailRules">
|
||||||
<el-form-item >
|
<el-form-item label="收件人" prop="to">
|
||||||
<el-input resize="none" v-model="addParams.content" type="textarea" :rows="5" @input="val => handleInput(val, 'add')" />
|
<el-input maxlength="500" resize="none" v-model="senParams.to" type="textarea" :rows="2" />
|
||||||
<div v-if="isOverLimit" style="color: #999; font-size: 12px; margin-top: 4px;">{{$t("backendSystem.exceedingInput")}}</div>
|
<div style="color: #999; font-size: 12px; margin-top: 4px;">可输入多个邮箱,用逗号隔开</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="邮件主题" prop="subject">
|
||||||
|
<el-input resize="none" maxlength="300" show-word-limit v-model="senParams.subject" type="textarea" :rows="3" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="邮件内容" prop="text">
|
||||||
|
<el-input resize="none" maxlength="600" show-word-limit v-model="senParams.text" type="textarea" :rows="8" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
</el-form>
|
</el-form>
|
||||||
<div slot="footer" class="dialog-footer">
|
<div slot="footer" class="dialog-footer">
|
||||||
<el-button @click="handleClose">{{$t("backendSystem.cancel")}}</el-button>
|
<el-button @click="handleClose">{{$t("backendSystem.cancel")}}</el-button>
|
||||||
<el-button type="primary" :loading="bthLoading" @click="sureAddBroadcast">{{$t("backendSystem.publish")}}</el-button>
|
<el-button type="primary" :loading="sendEmailLoading" @click="sureSendEmail">发送</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog> -->
|
</el-dialog>
|
||||||
<!-- 修改广播弹窗 -->
|
|
||||||
<!-- <el-dialog
|
</div>
|
||||||
:title="$t('backendSystem.editContent')"
|
|
||||||
:visible.sync="editDialogVisible"
|
|
||||||
width="50%"
|
|
||||||
:before-close="handleEditClose"
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
>
|
|
||||||
<el-form :model="editParams" >
|
|
||||||
|
|
||||||
<el-form-item >
|
|
||||||
<el-input resize="none" v-model="editParams.content" type="textarea" :rows="5" @input="val => handleInput(val, 'edit')" />
|
|
||||||
<div v-if="isOverLimit" style="color: #999; font-size: 12px; margin-top: 4px;">{{$t("backendSystem.exceedingInput")}}</div>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
<div slot="footer" class="dialog-footer">
|
|
||||||
<el-button @click="handleEditClose">{{$t("backendSystem.cancel")}}</el-button>
|
|
||||||
<el-button type="primary" :loading="editLoading" @click="sureEditBroadcast">{{$t("backendSystem.editBroadcast")}}</el-button>
|
|
||||||
</div>
|
|
||||||
</el-dialog> -->
|
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Index from './index'
|
import Index from "./index";
|
||||||
export default {
|
export default {
|
||||||
mixins:[Index],
|
mixins: [Index],
|
||||||
|
};
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.main-title{
|
.main-title {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
|
||||||
color: #333;
|
color: #333;
|
||||||
margin-bottom: 18px;
|
margin-bottom: 18px;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
@@ -686,19 +686,19 @@ export default {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
background-image: url(../../assets/img/miningAccount/top.png);
|
// background-image: url(../../assets/img/miningAccount/top.png);
|
||||||
background-size: 100% 50%;
|
// background-size: 100% 50%;
|
||||||
background-repeat: no-repeat;
|
// background-repeat: no-repeat;
|
||||||
background-position: 30% -15%;
|
// background-position: 30% -15%;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding-top: 60PX;
|
// padding-top: 60PX;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
|
||||||
}
|
}
|
||||||
.workBKContent{
|
.workBKContent{
|
||||||
width: 60%;
|
width: 100%;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
1
mining-pool/test/css/app-113c6c50.59d737ac.css
Normal file
1
mining-pool/test/css/app-113c6c50.59d737ac.css
Normal file
File diff suppressed because one or more lines are too long
BIN
mining-pool/test/css/app-113c6c50.59d737ac.css.gz
Normal file
BIN
mining-pool/test/css/app-113c6c50.59d737ac.css.gz
Normal file
Binary file not shown.
1
mining-pool/test/css/app-189e7968.abee2a01.css
Normal file
1
mining-pool/test/css/app-189e7968.abee2a01.css
Normal file
File diff suppressed because one or more lines are too long
BIN
mining-pool/test/css/app-189e7968.abee2a01.css.gz
Normal file
BIN
mining-pool/test/css/app-189e7968.abee2a01.css.gz
Normal file
Binary file not shown.
1
mining-pool/test/css/app-45954fd3.86c0fd20.css
Normal file
1
mining-pool/test/css/app-45954fd3.86c0fd20.css
Normal file
File diff suppressed because one or more lines are too long
BIN
mining-pool/test/css/app-45954fd3.86c0fd20.css.gz
Normal file
BIN
mining-pool/test/css/app-45954fd3.86c0fd20.css.gz
Normal file
Binary file not shown.
1
mining-pool/test/css/app-7023e5b0.87f1eef9.css
Normal file
1
mining-pool/test/css/app-7023e5b0.87f1eef9.css
Normal file
File diff suppressed because one or more lines are too long
BIN
mining-pool/test/css/app-7023e5b0.87f1eef9.css.gz
Normal file
BIN
mining-pool/test/css/app-7023e5b0.87f1eef9.css.gz
Normal file
Binary file not shown.
1
mining-pool/test/css/app-b4c4f6ec.6e507abe.css
Normal file
1
mining-pool/test/css/app-b4c4f6ec.6e507abe.css
Normal file
File diff suppressed because one or more lines are too long
BIN
mining-pool/test/css/app-b4c4f6ec.6e507abe.css.gz
Normal file
BIN
mining-pool/test/css/app-b4c4f6ec.6e507abe.css.gz
Normal file
Binary file not shown.
@@ -1 +1 @@
|
|||||||
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><meta name=google-site-verification content=pKAZogQ0NQ6L4j9-V58WJMjm7zYCFwkJXSJzWu9UDM8><meta name=robots content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"><meta name=googlebot content="index, follow"><meta name=googlebot-news content="index, follow"><meta name=bingbot content="index, follow"><link rel=alternate hreflang=zh href=https://m2pool.com/zh><link rel=alternate hreflang=en href=https://m2pool.com/en><link rel=alternate hreflang=x-default href=https://m2pool.com/en><meta property=og:title content="M2pool - Stable leading high-yield mining pool"><meta property=og:description content="M2Pool provides professional mining services, supporting multiple cryptocurrency mining"><meta property=og:url content=https://m2pool.com/en><meta property=og:site_name content=M2Pool><meta property=og:type content=website><meta property=og:image content=https://m2pool.com/logo.png><link rel=icon href=/favicon.ico><link rel=stylesheet href=//at.alicdn.com/t/c/font_4582735_7i8wfzc0art.css><title>M2pool - Stable leading high-yield mining pool</title><meta name=keywords content="M2Pool, cryptocurrency mining pool,Entropyx(enx),entropyx, bitcoin mining, DGB mining, mining pool service, 加密货币矿池, 比特币挖矿, DGB挖矿"><meta name=description content="M2Pool provides professional mining services, supporting multiple cryptocurrency mining, including nexa, grs, mona, dgb, rxd, enx"><meta name=format-detection content="telephone=no"><meta name=apple-mobile-web-app-capable content=yes><script defer src=/js/chunk-vendors-945ce2fe.648a91a9.js></script><script defer src=/js/chunk-vendors-aacc2dbb.d317c558.js></script><script defer src=/js/chunk-vendors-bc050c32.3f2f14d2.js></script><script defer src=/js/chunk-vendors-3003db77.d0b93d36.js></script><script defer src=/js/chunk-vendors-9d134daf.bb668c99.js></script><script defer src=/js/chunk-vendors-439af1fa.48a48f35.js></script><script defer src=/js/chunk-vendors-5c533fba.b9c00e08.js></script><script defer src=/js/chunk-vendors-96cecd74.a7d9b845.js></script><script defer src=/js/chunk-vendors-c2f7d60e.3710fdc2.js></script><script defer src=/js/chunk-vendors-89d5c698.2190b4ca.js></script><script defer src=/js/chunk-vendors-377fed06.159de137.js></script><script defer src=/js/chunk-vendors-5a805870.4cfc0ae8.js></script><script defer src=/js/chunk-vendors-cf2e0a28.c6e99da0.js></script><script defer src=/js/app-42f9d7e6.d6c55a75.js></script><script defer src=/js/app-d363ae0c.e4b98918.js></script><script defer src=/js/app-5c551db8.89dc18d2.js></script><script defer src=/js/app-b4c4f6ec.699d67bf.js></script><script defer src=/js/app-45954fd3.470dc9c3.js></script><script defer src=/js/app-72600b29.3e7e0df2.js></script><script defer src=/js/app-f035d474.92e1d288.js></script><script defer src=/js/app-113c6c50.bce0e5a7.js></script><link href=/css/chunk-vendors-5c533fba.6f97509c.css rel=stylesheet><link href=/css/app-189e7968.dab6fbf8.css rel=stylesheet><link href=/css/app-b4c4f6ec.b7a26d39.css rel=stylesheet><link href=/css/app-45954fd3.605105ff.css rel=stylesheet><link href=/css/app-72600b29.8bee31b9.css rel=stylesheet><link href=/css/app-f035d474.0348646a.css rel=stylesheet><link href=/css/app-113c6c50.5229e45e.css rel=stylesheet></head><body><div id=app></div></body></html>
|
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><meta name=google-site-verification content=pKAZogQ0NQ6L4j9-V58WJMjm7zYCFwkJXSJzWu9UDM8><meta name=robots content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"><meta name=googlebot content="index, follow"><meta name=googlebot-news content="index, follow"><meta name=bingbot content="index, follow"><link rel=alternate hreflang=zh href=https://m2pool.com/zh><link rel=alternate hreflang=en href=https://m2pool.com/en><link rel=alternate hreflang=x-default href=https://m2pool.com/en><meta property=og:title content="M2pool - Stable leading high-yield mining pool"><meta property=og:description content="M2Pool provides professional mining services, supporting multiple cryptocurrency mining"><meta property=og:url content=https://m2pool.com/en><meta property=og:site_name content=M2Pool><meta property=og:type content=website><meta property=og:image content=https://m2pool.com/logo.png><link rel=icon href=/favicon.ico><link rel=stylesheet href=//at.alicdn.com/t/c/font_4582735_7i8wfzc0art.css><title>M2pool - Stable leading high-yield mining pool</title><meta name=keywords content="M2Pool, cryptocurrency mining pool,Entropyx(enx),entropyx, bitcoin mining, DGB mining, mining pool service, 加密货币矿池, 比特币挖矿, DGB挖矿"><meta name=description content="M2Pool provides professional mining services, supporting multiple cryptocurrency mining, including nexa, grs, mona, dgb, rxd, enx"><meta name=format-detection content="telephone=no"><meta name=apple-mobile-web-app-capable content=yes><script defer src=/js/chunk-vendors-945ce2fe.648a91a9.js></script><script defer src=/js/chunk-vendors-aacc2dbb.d317c558.js></script><script defer src=/js/chunk-vendors-bc050c32.3f2f14d2.js></script><script defer src=/js/chunk-vendors-3003db77.d0b93d36.js></script><script defer src=/js/chunk-vendors-9d134daf.bb668c99.js></script><script defer src=/js/chunk-vendors-439af1fa.48a48f35.js></script><script defer src=/js/chunk-vendors-5c533fba.b9c00e08.js></script><script defer src=/js/chunk-vendors-96cecd74.a7d9b845.js></script><script defer src=/js/chunk-vendors-c2f7d60e.e36ba8a9.js></script><script defer src=/js/chunk-vendors-89d5c698.2190b4ca.js></script><script defer src=/js/chunk-vendors-377fed06.159de137.js></script><script defer src=/js/chunk-vendors-5a805870.4cfc0ae8.js></script><script defer src=/js/chunk-vendors-cf2e0a28.c6e99da0.js></script><script defer src=/js/app-42f9d7e6.7d4ad37d.js></script><script defer src=/js/app-d363ae0c.603ece39.js></script><script defer src=/js/app-5c551db8.baf3658a.js></script><script defer src=/js/app-b4c4f6ec.94c0ddb2.js></script><script defer src=/js/app-45954fd3.53c0df94.js></script><script defer src=/js/app-72600b29.7a20ccca.js></script><script defer src=/js/app-f035d474.92e1d288.js></script><script defer src=/js/app-7023e5b0.a956a90d.js></script><script defer src=/js/app-113c6c50.6af405db.js></script><link href=/css/chunk-vendors-5c533fba.6f97509c.css rel=stylesheet><link href=/css/app-189e7968.abee2a01.css rel=stylesheet><link href=/css/app-b4c4f6ec.6e507abe.css rel=stylesheet><link href=/css/app-45954fd3.86c0fd20.css rel=stylesheet><link href=/css/app-72600b29.8bee31b9.css rel=stylesheet><link href=/css/app-f035d474.0348646a.css rel=stylesheet><link href=/css/app-7023e5b0.87f1eef9.css rel=stylesheet><link href=/css/app-113c6c50.59d737ac.css rel=stylesheet></head><body><div id=app></div></body></html>
|
||||||
1
mining-pool/test/js/app-113c6c50.6af405db.js
Normal file
1
mining-pool/test/js/app-113c6c50.6af405db.js
Normal file
File diff suppressed because one or more lines are too long
BIN
mining-pool/test/js/app-113c6c50.6af405db.js.gz
Normal file
BIN
mining-pool/test/js/app-113c6c50.6af405db.js.gz
Normal file
Binary file not shown.
1
mining-pool/test/js/app-42f9d7e6.7d4ad37d.js
Normal file
1
mining-pool/test/js/app-42f9d7e6.7d4ad37d.js
Normal file
File diff suppressed because one or more lines are too long
BIN
mining-pool/test/js/app-42f9d7e6.7d4ad37d.js.gz
Normal file
BIN
mining-pool/test/js/app-42f9d7e6.7d4ad37d.js.gz
Normal file
Binary file not shown.
1
mining-pool/test/js/app-45954fd3.53c0df94.js
Normal file
1
mining-pool/test/js/app-45954fd3.53c0df94.js
Normal file
File diff suppressed because one or more lines are too long
BIN
mining-pool/test/js/app-45954fd3.53c0df94.js.gz
Normal file
BIN
mining-pool/test/js/app-45954fd3.53c0df94.js.gz
Normal file
Binary file not shown.
1
mining-pool/test/js/app-5c551db8.baf3658a.js
Normal file
1
mining-pool/test/js/app-5c551db8.baf3658a.js
Normal file
File diff suppressed because one or more lines are too long
BIN
mining-pool/test/js/app-5c551db8.baf3658a.js.gz
Normal file
BIN
mining-pool/test/js/app-5c551db8.baf3658a.js.gz
Normal file
Binary file not shown.
1
mining-pool/test/js/app-7023e5b0.a956a90d.js
Normal file
1
mining-pool/test/js/app-7023e5b0.a956a90d.js
Normal file
File diff suppressed because one or more lines are too long
BIN
mining-pool/test/js/app-7023e5b0.a956a90d.js.gz
Normal file
BIN
mining-pool/test/js/app-7023e5b0.a956a90d.js.gz
Normal file
Binary file not shown.
1
mining-pool/test/js/app-72600b29.7a20ccca.js
Normal file
1
mining-pool/test/js/app-72600b29.7a20ccca.js
Normal file
File diff suppressed because one or more lines are too long
BIN
mining-pool/test/js/app-72600b29.7a20ccca.js.gz
Normal file
BIN
mining-pool/test/js/app-72600b29.7a20ccca.js.gz
Normal file
Binary file not shown.
1
mining-pool/test/js/app-b4c4f6ec.94c0ddb2.js
Normal file
1
mining-pool/test/js/app-b4c4f6ec.94c0ddb2.js
Normal file
File diff suppressed because one or more lines are too long
BIN
mining-pool/test/js/app-b4c4f6ec.94c0ddb2.js.gz
Normal file
BIN
mining-pool/test/js/app-b4c4f6ec.94c0ddb2.js.gz
Normal file
Binary file not shown.
1
mining-pool/test/js/app-d363ae0c.603ece39.js
Normal file
1
mining-pool/test/js/app-d363ae0c.603ece39.js
Normal file
File diff suppressed because one or more lines are too long
BIN
mining-pool/test/js/app-d363ae0c.603ece39.js.gz
Normal file
BIN
mining-pool/test/js/app-d363ae0c.603ece39.js.gz
Normal file
Binary file not shown.
8
mining-pool/test/js/chunk-vendors-c2f7d60e.e36ba8a9.js
Normal file
8
mining-pool/test/js/chunk-vendors-c2f7d60e.e36ba8a9.js
Normal file
File diff suppressed because one or more lines are too long
BIN
mining-pool/test/js/chunk-vendors-c2f7d60e.e36ba8a9.js.gz
Normal file
BIN
mining-pool/test/js/chunk-vendors-c2f7d60e.e36ba8a9.js.gz
Normal file
Binary file not shown.
@@ -1 +1 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://m2pool.com/en</loc><lastmod>2025-06-25T08:37:39.425Z</lastmod><changefreq>daily</changefreq><priority>1.0</priority></url><url><loc>https://m2pool.com/en/dataDisplay</loc><lastmod>2025-06-25T08:37:39.425Z</lastmod><changefreq>weekly</changefreq><priority>0.8</priority></url><url><loc>https://m2pool.com/en/ServiceTerms</loc><lastmod>2025-06-25T08:37:39.425Z</lastmod><changefreq>monthly</changefreq><priority>0.6</priority></url><url><loc>https://m2pool.com/en/apiFile</loc><lastmod>2025-06-25T08:37:39.425Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/en/rate</loc><lastmod>2025-06-25T08:37:39.425Z</lastmod><changefreq>weekly</changefreq><priority>0.8</priority></url><url><loc>https://m2pool.com/en/AccessMiningPool/nexaAccess</loc><lastmod>2025-06-25T08:37:39.425Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/en/AccessMiningPool/grsAccess</loc><lastmod>2025-06-25T08:37:39.425Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/en/AccessMiningPool/monaAccess</loc><lastmod>2025-06-25T08:37:39.425Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/en/AccessMiningPool/dgbsAccess</loc><lastmod>2025-06-25T08:37:39.425Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/en/AccessMiningPool/dgbqAccess</loc><lastmod>2025-06-25T08:37:39.425Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/en/AccessMiningPool/dgboAccess</loc><lastmod>2025-06-25T08:37:39.425Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/en/AccessMiningPool/rxdAccess</loc><lastmod>2025-06-25T08:37:39.425Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url></urlset>
|
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://m2pool.com/en</loc><lastmod>2025-06-27T06:12:42.085Z</lastmod><changefreq>daily</changefreq><priority>1.0</priority></url><url><loc>https://m2pool.com/en/dataDisplay</loc><lastmod>2025-06-27T06:12:42.085Z</lastmod><changefreq>weekly</changefreq><priority>0.8</priority></url><url><loc>https://m2pool.com/en/ServiceTerms</loc><lastmod>2025-06-27T06:12:42.085Z</lastmod><changefreq>monthly</changefreq><priority>0.6</priority></url><url><loc>https://m2pool.com/en/apiFile</loc><lastmod>2025-06-27T06:12:42.085Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/en/rate</loc><lastmod>2025-06-27T06:12:42.085Z</lastmod><changefreq>weekly</changefreq><priority>0.8</priority></url><url><loc>https://m2pool.com/en/AccessMiningPool/nexaAccess</loc><lastmod>2025-06-27T06:12:42.085Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/en/AccessMiningPool/grsAccess</loc><lastmod>2025-06-27T06:12:42.085Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/en/AccessMiningPool/monaAccess</loc><lastmod>2025-06-27T06:12:42.085Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/en/AccessMiningPool/dgbsAccess</loc><lastmod>2025-06-27T06:12:42.085Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/en/AccessMiningPool/dgbqAccess</loc><lastmod>2025-06-27T06:12:42.085Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/en/AccessMiningPool/dgboAccess</loc><lastmod>2025-06-27T06:12:42.085Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/en/AccessMiningPool/rxdAccess</loc><lastmod>2025-06-27T06:12:42.085Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url></urlset>
|
||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://m2pool.com/zh</loc><lastmod>2025-06-25T08:37:39.415Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/zh/dataDisplay</loc><lastmod>2025-06-25T08:37:39.415Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/zh/ServiceTerms</loc><lastmod>2025-06-25T08:37:39.415Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/zh/apiFile</loc><lastmod>2025-06-25T08:37:39.415Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/zh/rate</loc><lastmod>2025-06-25T08:37:39.415Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/zh/AccessMiningPool/nexaAccess</loc><lastmod>2025-06-25T08:37:39.415Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/zh/AccessMiningPool/grsAccess</loc><lastmod>2025-06-25T08:37:39.415Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/zh/AccessMiningPool/monaAccess</loc><lastmod>2025-06-25T08:37:39.415Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/zh/AccessMiningPool/dgbsAccess</loc><lastmod>2025-06-25T08:37:39.415Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/zh/AccessMiningPool/dgbqAccess</loc><lastmod>2025-06-25T08:37:39.415Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/zh/AccessMiningPool/dgboAccess</loc><lastmod>2025-06-25T08:37:39.415Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/zh/AccessMiningPool/rxdAccess</loc><lastmod>2025-06-25T08:37:39.415Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url></urlset>
|
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://m2pool.com/zh</loc><lastmod>2025-06-27T06:12:42.057Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/zh/dataDisplay</loc><lastmod>2025-06-27T06:12:42.067Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/zh/ServiceTerms</loc><lastmod>2025-06-27T06:12:42.067Z</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/zh/apiFile</loc><lastmod>2025-06-27T06:12:42.067Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/zh/rate</loc><lastmod>2025-06-27T06:12:42.067Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/zh/AccessMiningPool/nexaAccess</loc><lastmod>2025-06-27T06:12:42.067Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/zh/AccessMiningPool/grsAccess</loc><lastmod>2025-06-27T06:12:42.067Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/zh/AccessMiningPool/monaAccess</loc><lastmod>2025-06-27T06:12:42.067Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/zh/AccessMiningPool/dgbsAccess</loc><lastmod>2025-06-27T06:12:42.067Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/zh/AccessMiningPool/dgbqAccess</loc><lastmod>2025-06-27T06:12:42.067Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/zh/AccessMiningPool/dgboAccess</loc><lastmod>2025-06-27T06:12:42.067Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://m2pool.com/zh/AccessMiningPool/rxdAccess</loc><lastmod>2025-06-27T06:12:42.067Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url></urlset>
|
||||||
Binary file not shown.
Reference in New Issue
Block a user