677 lines
21 KiB
JavaScript
677 lines
21 KiB
JavaScript
// pages/guanshizhongxin/guanshizhongxin.js
|
|
import request from '../../utils/request.js';
|
|
import popupService from '../../services/popupService.js';
|
|
import { buildInviterPeerId } from '../../utils/im-user.js';
|
|
import { resolveAvatarUrl } from '../../utils/avatar.js';
|
|
|
|
Page({
|
|
data: {
|
|
// 图片路径对象
|
|
imgUrls: {},
|
|
|
|
isGuanshi: false,
|
|
isLoading: false,
|
|
inviteCode: '',
|
|
uid: '',
|
|
nicheng: '',
|
|
avatarUrl: '',
|
|
|
|
// 管事信息
|
|
gszhstatus: '',
|
|
yaoqingzongshu: 0,
|
|
fenyongzonge: '0.00',
|
|
fenyongtixian: '0.00',
|
|
yichongzhiDashou: 0,
|
|
zhuanhualv: 0,
|
|
|
|
// 称号列表
|
|
chenghaoList: [],
|
|
|
|
// 邀请人缓存
|
|
inviterCache: null,
|
|
},
|
|
|
|
onLoad(options) {
|
|
let url = '/pages/fighter/fighter?registerType=guanshi';
|
|
if (options.scene) {
|
|
try {
|
|
url += '&inviteCode=' + encodeURIComponent(decodeURIComponent(options.scene));
|
|
} catch (e) {
|
|
console.error('scene解码失败', e);
|
|
}
|
|
} else if (options.inviteCode) {
|
|
url += '&inviteCode=' + encodeURIComponent(options.inviteCode);
|
|
}
|
|
wx.redirectTo({ url });
|
|
return;
|
|
// 以下保留供恢复参考
|
|
// 拼接所有图片完整路径
|
|
const app = getApp();
|
|
const ossImageUrl = app.globalData.ossImageUrl || '';
|
|
const imgBase = ossImageUrl + 'beijing/guanshiduan/';
|
|
this.setData({
|
|
imgUrls: {
|
|
pageBg: imgBase + 'page-bg.jpg',
|
|
topDecor: imgBase + 'top-decor.png',
|
|
cardBg1: imgBase + 'card-bg1.png',
|
|
cardBg2: imgBase + 'card-bg2.png',
|
|
iconRefresh: imgBase + 'icon-refresh.png',
|
|
iconCopy: imgBase + 'icon-copy.png',
|
|
avatarDefault: ossImageUrl + 'avatar/default.jpg',
|
|
iconInvite: imgBase + 'icon-invite.png',
|
|
iconSub: imgBase + 'icon-sub.png',
|
|
iconRecord: imgBase + 'icon-record.png',
|
|
iconRank: imgBase + 'icon-rank.png',
|
|
iconPoster: imgBase + 'icon-poster.png',
|
|
iconWithdraw: imgBase + 'icon-withdraw.png',
|
|
iconContact: imgBase + 'icon-contact.png',
|
|
iconArrow: imgBase + 'icon-arrow.png',
|
|
}
|
|
});
|
|
|
|
// 处理扫码 scene
|
|
if (options.scene) {
|
|
try {
|
|
const scene = decodeURIComponent(options.scene);
|
|
options.inviteCode = scene;
|
|
} catch (e) {
|
|
console.error('scene解码失败', e);
|
|
}
|
|
}
|
|
|
|
this.checkGuanshiStatus();
|
|
|
|
const { inviteCode } = options || {};
|
|
if (inviteCode) {
|
|
this.setData({ inviteCode });
|
|
setTimeout(() => {
|
|
this.handleInviteCodeWithLoginCheck(inviteCode);
|
|
}, 500);
|
|
}
|
|
|
|
if (!app.globalData.hasShownPopupOnColdStart) {
|
|
app.globalData.hasShownPopupOnColdStart = true;
|
|
setTimeout(() => {
|
|
popupService.checkAndShow(this, 'guanshiduan');
|
|
}, 300);
|
|
}
|
|
},
|
|
|
|
onReady() {
|
|
if (this._isGuanshiPageActive()) {
|
|
this.ensureGuanshiRoleAndTabBar();
|
|
}
|
|
},
|
|
|
|
onHide() {
|
|
const popupComp = this.selectComponent('#popupNotice');
|
|
if (popupComp && popupComp.cleanup) {
|
|
popupComp.cleanup();
|
|
}
|
|
},
|
|
|
|
onShow() {
|
|
const inviterCache = wx.getStorageSync('inviterCache') || null;
|
|
this.setData({ inviterCache });
|
|
|
|
this.registerNotificationComponent();
|
|
|
|
if (this._isGuanshiPageActive()) {
|
|
if (!this.data.isGuanshi) {
|
|
this.setData({ isGuanshi: true });
|
|
}
|
|
this.ensureGuanshiRoleAndTabBar();
|
|
setTimeout(() => {
|
|
this.getGuanshiInfo();
|
|
this.fetchChenghaoList();
|
|
}, 300);
|
|
}
|
|
|
|
const pages = getCurrentPages();
|
|
const currentPage = pages[pages.length - 1];
|
|
const options = currentPage.options || {};
|
|
if (options.inviteCode && !this._isGuanshiPageActive()) {
|
|
setTimeout(() => {
|
|
this.handleInviteCodeWithLoginCheck(options.inviteCode);
|
|
}, 300);
|
|
}
|
|
},
|
|
|
|
// 全局通知注册
|
|
registerNotificationComponent() {
|
|
const app = getApp();
|
|
const comp = this.selectComponent('#global-notification');
|
|
if (comp && comp.showNotification) {
|
|
app.globalData.globalNotification = {
|
|
show: (data) => comp.showNotification(data),
|
|
hide: () => comp.hideNotification()
|
|
};
|
|
}
|
|
},
|
|
|
|
// 称号列表
|
|
async fetchChenghaoList() {
|
|
try {
|
|
const res = await request({
|
|
url: '/dengji/chenghao',
|
|
method: 'POST',
|
|
data: { role: 'guanshi' }
|
|
});
|
|
if (res && res.data.code === 0 && res.data.data) {
|
|
this.setData({ chenghaoList: res.data.data.chenghao_list || [] });
|
|
}
|
|
} catch (e) {
|
|
console.error('获取称号失败', e);
|
|
}
|
|
},
|
|
|
|
// 联系组长
|
|
async contactInviter() {
|
|
wx.showLoading({ title: '获取组长信息...', mask: true });
|
|
try {
|
|
const res = await request({
|
|
url: '/yonghu/guanshi_contact',
|
|
method: 'POST'
|
|
});
|
|
|
|
if (res && res.data.code === 200 && res.data.data) {
|
|
const inviter = res.data.data;
|
|
const ossImageUrl = getApp().globalData.ossImageUrl || '';
|
|
const fullAvatar = inviter.touxiang
|
|
? (inviter.touxiang.startsWith('http') ? inviter.touxiang : ossImageUrl + inviter.touxiang)
|
|
: '';
|
|
|
|
// 缓存邀请人信息
|
|
const cacheData = {
|
|
uid: inviter.uid,
|
|
nicheng: inviter.nicheng || '',
|
|
avatar: fullAvatar
|
|
};
|
|
wx.setStorageSync('inviterCache', cacheData);
|
|
this.setData({ inviterCache: cacheData });
|
|
|
|
// 联系邀请人
|
|
const param = {
|
|
toUserId: buildInviterPeerId(inviter.uid),
|
|
toName: inviter.nicheng || '邀请人',
|
|
toAvatar: fullAvatar
|
|
};
|
|
wx.navigateTo({
|
|
url: '/pages/chat/chat?data=' + encodeURIComponent(JSON.stringify(param))
|
|
});
|
|
} else {
|
|
wx.showToast({ title: '未绑定邀请人', icon: 'none' });
|
|
}
|
|
} catch (e) {
|
|
wx.showToast({ title: '网络错误', icon: 'none' });
|
|
} finally {
|
|
wx.hideLoading();
|
|
}
|
|
},
|
|
// 管事状态辅助
|
|
_isApiSuccess(body) {
|
|
if (!body) return false;
|
|
const code = Number(body.code);
|
|
return code === 200 || code === 0;
|
|
},
|
|
|
|
_getApiMsg(body) {
|
|
if (!body) return '';
|
|
return body.msg || body.message || '';
|
|
},
|
|
|
|
_extractUserData(body) {
|
|
if (!body) return {};
|
|
if (body.data && typeof body.data === 'object' && !Array.isArray(body.data)) {
|
|
return body.data;
|
|
}
|
|
const userData = { ...body };
|
|
delete userData.code;
|
|
delete userData.msg;
|
|
delete userData.message;
|
|
return userData;
|
|
},
|
|
|
|
_isGuanshiStatusActive(status) {
|
|
return Number(status) === 1;
|
|
},
|
|
|
|
_isAlreadyGuanshiMsg(msg) {
|
|
if (!msg || typeof msg !== 'string') return false;
|
|
return msg.includes('已是管事') || msg.includes('已经是管事');
|
|
},
|
|
|
|
_syncGuanshiCache() {
|
|
const app = getApp();
|
|
wx.setStorageSync('guanshistatus', 1);
|
|
app.globalData.guanshistatus = 1;
|
|
},
|
|
|
|
// 仅同步后端返回的身份 status 字段
|
|
_syncRoleStatuses(data) {
|
|
if (!data || typeof data !== 'object') return;
|
|
const app = getApp();
|
|
const roleFields = ['dashoustatus', 'guanshistatus', 'shangjiastatus', 'zuzhangstatus', 'kaoheguanstatus'];
|
|
roleFields.forEach(field => {
|
|
if (Object.prototype.hasOwnProperty.call(data, field)) {
|
|
const val = Number(data[field]);
|
|
const normalized = Number.isNaN(val) ? 0 : val;
|
|
wx.setStorageSync(field, normalized);
|
|
app.globalData[field] = normalized;
|
|
}
|
|
});
|
|
},
|
|
|
|
// 后端若返回打手详情字段则写入 globalData
|
|
_syncDashouGlobalData(data) {
|
|
const app = getApp();
|
|
const map = {
|
|
dashouNicheng: data.dashounicheng,
|
|
zhanghaoStatus: data.zhanghaostatus,
|
|
yongjin: data.yongjin,
|
|
zonge: data.zonge,
|
|
yajin: data.yajin,
|
|
chenghao: data.chenghao,
|
|
jinfen: data.jinfen,
|
|
clumber: data.clumber,
|
|
chengjiaoliang: data.chengjiaoliang,
|
|
zaixianZhuangtai: data.zaixianzhuangtai,
|
|
dashouzhuangtai: data.dashouzhuangtai,
|
|
};
|
|
Object.keys(map).forEach(key => {
|
|
if (map[key] !== undefined) {
|
|
app.globalData[key] = map[key];
|
|
}
|
|
});
|
|
},
|
|
|
|
_isGuanshiPageActive() {
|
|
return this.data.isGuanshi || this._isGuanshiStatusActive(wx.getStorageSync('guanshistatus'));
|
|
},
|
|
|
|
// 管事页必须切到 guanshi 角色
|
|
ensureGuanshiRoleAndTabBar() {
|
|
const app = getApp();
|
|
if (app.setCurrentRole) {
|
|
app.setCurrentRole('guanshi');
|
|
} else {
|
|
app.globalData.currentRole = 'guanshi';
|
|
wx.setStorageSync('currentRole', 'guanshi');
|
|
app.emitEvent('currentRoleChanged', { role: 'guanshi' });
|
|
}
|
|
this._refreshTabBar();
|
|
},
|
|
|
|
_refreshTabBar() {
|
|
const tryRefresh = () => {
|
|
const tabBar = this.getTabBar && this.getTabBar();
|
|
if (tabBar && tabBar.refresh) {
|
|
tabBar.refresh();
|
|
}
|
|
};
|
|
tryRefresh();
|
|
[50, 150, 300, 500, 800].forEach((delay) => setTimeout(tryRefresh, delay));
|
|
},
|
|
|
|
_applyRegisterSuccess(userData, toastMsg) {
|
|
const app = getApp();
|
|
const data = userData || {};
|
|
if (data.token) wx.setStorageSync('token', data.token);
|
|
if (data.token) app.globalData.token = data.token;
|
|
|
|
const profileFields = ['nicheng', 'uid', 'touxiang'];
|
|
profileFields.forEach(field => {
|
|
if (data[field] !== undefined && data[field] !== null) {
|
|
wx.setStorageSync(field, data[field]);
|
|
if (field === 'nicheng') {
|
|
app.globalData.nicheng = data[field];
|
|
}
|
|
}
|
|
});
|
|
|
|
// 身份列表以后端返回的 *status 字段为准
|
|
this._syncRoleStatuses(data);
|
|
if (!Object.prototype.hasOwnProperty.call(data, 'guanshistatus') &&
|
|
!this._isGuanshiStatusActive(wx.getStorageSync('guanshistatus'))) {
|
|
this._syncGuanshiCache();
|
|
}
|
|
this._syncDashouGlobalData(data);
|
|
|
|
const groupFields = ['dashouqun', 'dashouqunid', 'guanshiqun', 'guanshiqunid'];
|
|
groupFields.forEach(field => {
|
|
if (data[field] !== undefined) {
|
|
wx.setStorageSync(field, data[field]);
|
|
app.globalData[field] = data[field];
|
|
}
|
|
});
|
|
|
|
const guanshiData = {
|
|
gszhstatus: data.gszhstatus ?? '',
|
|
yaoqingzongshu: data.yaoqingzongshu ?? 0,
|
|
fenyongzonge: data.fenyongzonge ?? '0.00',
|
|
fenyongtixian: data.fenyongtixian ?? '0.00',
|
|
yichongzhiDashou: data.yichongzhiDashou ?? 0
|
|
};
|
|
if (!app.globalData.guanshi) app.globalData.guanshi = {};
|
|
Object.assign(app.globalData.guanshi, guanshiData);
|
|
|
|
const zhuanhualv = guanshiData.yaoqingzongshu > 0
|
|
? (guanshiData.yichongzhiDashou / guanshiData.yaoqingzongshu * 100).toFixed(1)
|
|
: 0;
|
|
|
|
this.setData({
|
|
isGuanshi: true,
|
|
uid: data.uid || wx.getStorageSync('uid') || '',
|
|
nicheng: data.nicheng || app.globalData.nicheng || wx.getStorageSync('nicheng') || '',
|
|
...guanshiData,
|
|
zhuanhualv,
|
|
isLoading: false
|
|
});
|
|
this.loadUserInfo();
|
|
this.switchToGuanshiRole();
|
|
wx.hideLoading();
|
|
if (toastMsg) {
|
|
wx.showToast({ title: toastMsg, icon: 'success', duration: 2000 });
|
|
}
|
|
},
|
|
|
|
_enterRegisteredGuanshiState(toastMsg, userData) {
|
|
if (userData && typeof userData === 'object') {
|
|
this._applyRegisterSuccess(userData, toastMsg);
|
|
return;
|
|
}
|
|
this._syncGuanshiCache();
|
|
this.setData({ isGuanshi: true, isLoading: false });
|
|
this.loadUserInfo();
|
|
this.switchToGuanshiRole();
|
|
this.getGuanshiInfo(false);
|
|
this.fetchChenghaoList();
|
|
wx.hideLoading();
|
|
if (toastMsg) {
|
|
wx.showToast({ title: toastMsg, icon: 'success', duration: 2000 });
|
|
}
|
|
},
|
|
|
|
// 邀请码处理
|
|
handleInviteCodeWithLoginCheck(inviteCode) {
|
|
const token = wx.getStorageSync('token');
|
|
const uid = wx.getStorageSync('uid');
|
|
if (!token || !uid) {
|
|
this.loginAndRegisterWithInviteCode(inviteCode);
|
|
} else {
|
|
if (!this.data.isGuanshi) {
|
|
wx.showLoading({ title: '自动注册中...', mask: true });
|
|
this.callRegisterApi(inviteCode);
|
|
} else {
|
|
this._enterRegisteredGuanshiState('您已是管事');
|
|
}
|
|
}
|
|
},
|
|
|
|
loginAndRegisterWithInviteCode(inviteCode) {
|
|
const that = this;
|
|
wx.showLoading({ title: '登录注册中...', mask: true });
|
|
wx.login({
|
|
success: (loginRes) => {
|
|
if (loginRes.code) {
|
|
that.callLoginRegisterApi(loginRes.code, inviteCode);
|
|
} else {
|
|
wx.hideLoading();
|
|
wx.showToast({ title: '微信登录失败', icon: 'none' });
|
|
}
|
|
},
|
|
fail: () => {
|
|
wx.hideLoading();
|
|
wx.reLaunch({ url: '/pages/gerenzhongxin/gerenzhongxin' });
|
|
}
|
|
});
|
|
},
|
|
|
|
callLoginRegisterApi(code, inviteCode) {
|
|
const that = this;
|
|
const app = getApp();
|
|
const apiBaseUrl = app.globalData.apiBaseUrl;
|
|
if (!apiBaseUrl) {
|
|
wx.hideLoading();
|
|
wx.showToast({ title: '服务器配置错误', icon: 'none' });
|
|
return;
|
|
}
|
|
wx.request({
|
|
url: apiBaseUrl + '/yonghu/zuzhangyqmzc',
|
|
method: 'POST',
|
|
data: { code: code, inviteCode: inviteCode },
|
|
header: { 'content-type': 'application/json' },
|
|
success: (res) => {
|
|
const body = res.data || {};
|
|
if (res.statusCode === 200 && that._isApiSuccess(body)) {
|
|
const userData = that._extractUserData(body);
|
|
const toastMsg = that._isAlreadyGuanshiMsg(that._getApiMsg(body))
|
|
? that._getApiMsg(body)
|
|
: '注册成功!';
|
|
that._applyRegisterSuccess(userData, toastMsg);
|
|
} else if (res.statusCode === 200 && that._isAlreadyGuanshiMsg(that._getApiMsg(body))) {
|
|
that._enterRegisteredGuanshiState(that._getApiMsg(body) || '您已是管事', that._extractUserData(body));
|
|
} else {
|
|
wx.hideLoading();
|
|
that.setData({ isLoading: false });
|
|
wx.showToast({ title: that._getApiMsg(body) || '注册失败', icon: 'none' });
|
|
}
|
|
},
|
|
fail: () => {
|
|
wx.hideLoading();
|
|
wx.showToast({ title: '网络请求失败', icon: 'none' });
|
|
}
|
|
});
|
|
},
|
|
|
|
async callRegisterApi(inviteCode) {
|
|
try {
|
|
const res = await request({
|
|
url: '/yonghu/guanshizhuce',
|
|
method: 'POST',
|
|
data: { inviteCode }
|
|
});
|
|
const body = res?.data || {};
|
|
if (res && this._isApiSuccess(body)) {
|
|
const userData = this._extractUserData(body);
|
|
const toastMsg = this._isAlreadyGuanshiMsg(this._getApiMsg(body))
|
|
? this._getApiMsg(body)
|
|
: '注册成功!';
|
|
this._applyRegisterSuccess(userData, toastMsg);
|
|
} else if (this._isAlreadyGuanshiMsg(this._getApiMsg(body))) {
|
|
this._enterRegisteredGuanshiState(this._getApiMsg(body) || '您已是管事', this._extractUserData(body));
|
|
} else {
|
|
wx.hideLoading();
|
|
this.setData({ isLoading: false });
|
|
wx.showToast({ title: this._getApiMsg(body) || '注册失败', icon: 'none' });
|
|
}
|
|
} catch (e) {
|
|
console.error('注册失败:', e);
|
|
wx.hideLoading();
|
|
this.setData({ isLoading: false });
|
|
wx.showToast({ title: e.message || '注册失败', icon: 'error' });
|
|
}
|
|
},
|
|
|
|
switchToGuanshiRole() {
|
|
const app = getApp();
|
|
this.ensureGuanshiRoleAndTabBar();
|
|
if (app.switchRoleAndReconnect) {
|
|
app.switchRoleAndReconnect('dashou').catch(() => {});
|
|
} else if (app.connectForCurrentRole) {
|
|
app.connectForCurrentRole();
|
|
} else if (app.ensureConnection) {
|
|
app.ensureConnection();
|
|
}
|
|
},
|
|
|
|
checkGuanshiStatus() {
|
|
try {
|
|
const status = wx.getStorageSync('guanshistatus');
|
|
if (this._isGuanshiStatusActive(status)) {
|
|
this.setData({ isGuanshi: true });
|
|
this.loadUserInfo();
|
|
this.checkGlobalData();
|
|
this.ensureGuanshiRoleAndTabBar();
|
|
} else {
|
|
this.setData({ isGuanshi: false });
|
|
}
|
|
} catch (e) {
|
|
this.setData({ isGuanshi: false });
|
|
}
|
|
},
|
|
|
|
loadUserInfo() {
|
|
const app = getApp();
|
|
const globalData = app.globalData || {};
|
|
const touxiang = wx.getStorageSync('touxiang');
|
|
const ossImageUrl = globalData.ossImageUrl || '';
|
|
const morentouxiang = 'avatar/default.jpg';
|
|
let avatarUrl = '';
|
|
if (touxiang) {
|
|
avatarUrl = ossImageUrl + (touxiang.startsWith('/') ? touxiang : '/' + touxiang);
|
|
} else {
|
|
avatarUrl = ossImageUrl + (morentouxiang.startsWith('/') ? morentouxiang : '/' + morentouxiang);
|
|
}
|
|
this.setData({
|
|
avatarUrl,
|
|
uid: wx.getStorageSync('uid') || '',
|
|
nicheng: globalData.nicheng || wx.getStorageSync('nicheng') || ''
|
|
});
|
|
},
|
|
|
|
checkGlobalData() {
|
|
const app = getApp();
|
|
const gd = app.globalData.guanshi || {};
|
|
const needRefresh = !gd.yaoqingzongshu && !gd.fenyongzonge && !gd.fenyongtixian;
|
|
if (needRefresh) {
|
|
this.getGuanshiInfo();
|
|
} else {
|
|
this.setDataFromGlobalData();
|
|
}
|
|
},
|
|
|
|
setDataFromGlobalData() {
|
|
const gd = getApp().globalData.guanshi || {};
|
|
const zhuanhualv = gd.yaoqingzongshu > 0
|
|
? (gd.yichongzhiDashou / gd.yaoqingzongshu * 100).toFixed(1)
|
|
: 0;
|
|
this.setData({
|
|
gszhstatus: gd.gszhstatus || '',
|
|
yaoqingzongshu: gd.yaoqingzongshu || 0,
|
|
fenyongzonge: gd.fenyongzonge || '0.00',
|
|
fenyongtixian: gd.fenyongtixian || '0.00',
|
|
yichongzhiDashou: gd.yichongzhiDashou || 0,
|
|
zhuanhualv,
|
|
isLoading: false
|
|
});
|
|
},
|
|
|
|
async getGuanshiInfo(showToast = true) {
|
|
this.setData({ isLoading: true });
|
|
try {
|
|
const res = await request({
|
|
url: '/yonghu/guanshixinxi',
|
|
method: 'POST'
|
|
});
|
|
if (res && this._isApiSuccess(res.data)) {
|
|
const data = this._extractUserData(res.data);
|
|
const app = getApp();
|
|
this._syncGuanshiCache();
|
|
if (!app.globalData.guanshi) app.globalData.guanshi = {};
|
|
const updateData = {
|
|
gszhstatus: data.gszhstatus || '',
|
|
yaoqingzongshu: data.yaoqingzongshu || 0,
|
|
fenyongzonge: data.fenyongzonge || '0.00',
|
|
fenyongtixian: data.fenyongtixian || '0.00',
|
|
yichongzhiDashou: data.yichongzhiDashou || 0
|
|
};
|
|
Object.assign(app.globalData.guanshi, updateData);
|
|
const zhuanhualv = updateData.yaoqingzongshu > 0
|
|
? (updateData.yichongzhiDashou / updateData.yaoqingzongshu * 100).toFixed(1)
|
|
: 0;
|
|
this.setData({
|
|
isGuanshi: true,
|
|
...updateData,
|
|
zhuanhualv,
|
|
isLoading: false
|
|
});
|
|
if (showToast) {
|
|
wx.showToast({ title: '信息已更新', icon: 'success', duration: 1500 });
|
|
}
|
|
} else {
|
|
this.setData({ isLoading: false });
|
|
if (showToast) {
|
|
wx.showToast({ title: this._getApiMsg(res?.data) || '获取失败', icon: 'none' });
|
|
}
|
|
}
|
|
} catch (e) {
|
|
this.setData({ isLoading: false });
|
|
if (showToast) {
|
|
wx.showToast({ title: e.message || '获取失败', icon: 'error' });
|
|
}
|
|
}
|
|
},
|
|
|
|
refreshGuanshiInfo() {
|
|
this.getGuanshiInfo();
|
|
this.fetchChenghaoList();
|
|
},
|
|
|
|
onInviteCodeInput(e) {
|
|
this.setData({ inviteCode: e.detail.value.trim() });
|
|
},
|
|
|
|
async onRegister() {
|
|
const { inviteCode } = this.data;
|
|
if (!inviteCode) {
|
|
wx.showToast({ title: '请输入邀请码', icon: 'none' });
|
|
return;
|
|
}
|
|
if (inviteCode.length > 100) {
|
|
wx.showToast({ title: '邀请码过长', icon: 'none' });
|
|
return;
|
|
}
|
|
this.setData({ isLoading: true });
|
|
try {
|
|
const res = await request({
|
|
url: '/yonghu/guanshizhuce',
|
|
method: 'POST',
|
|
data: { inviteCode }
|
|
});
|
|
const body = res?.data || {};
|
|
if (res && this._isApiSuccess(body)) {
|
|
const userData = this._extractUserData(body);
|
|
const toastMsg = this._isAlreadyGuanshiMsg(this._getApiMsg(body))
|
|
? this._getApiMsg(body)
|
|
: '注册成功!';
|
|
this._applyRegisterSuccess(userData, toastMsg);
|
|
} else if (this._isAlreadyGuanshiMsg(this._getApiMsg(body))) {
|
|
this._enterRegisteredGuanshiState(this._getApiMsg(body) || '您已是管事', this._extractUserData(body));
|
|
} else {
|
|
this.setData({ isLoading: false });
|
|
wx.showToast({ title: this._getApiMsg(body) || '注册失败', icon: 'none' });
|
|
}
|
|
} catch (e) {
|
|
this.setData({ isLoading: false });
|
|
wx.showToast({ title: e.message || '注册失败', icon: 'error' });
|
|
}
|
|
},
|
|
|
|
copyUid() {
|
|
const { uid } = this.data;
|
|
if (!uid) return;
|
|
wx.setClipboardData({
|
|
data: uid,
|
|
success: () => wx.showToast({ title: '已复制', icon: 'success' })
|
|
});
|
|
},
|
|
|
|
// 页面跳转
|
|
goToWithdraw() { wx.navigateTo({ url: '/pages/withdraw/withdraw' }); },
|
|
goToInviteUser() { wx.navigateTo({ url: '/pages/invite-fighter/invite-fighter' }); },
|
|
goToMySubordinate() { wx.navigateTo({ url: '/pages/my-fighter/my-fighter' }); },
|
|
goToRechargeRecord() { wx.navigateTo({ url: '/pages/recharge-log/recharge-log' }); },
|
|
goToGuanshiRanking() { wx.navigateTo({ url: '/pages/manager-rank/manager-rank' }); },
|
|
goToPromoPoster() { wx.navigateTo({ url: '/pages/poster/poster' }); }
|
|
}); |