本地备份:主包优化前完整版本,可随时回退

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-06-27 05:41:55 +08:00
parent a751708d6e
commit 7f4f279b3f
124 changed files with 15837 additions and 21958 deletions

View File

@@ -1,60 +1,128 @@
/** 客服邀请码/秘钥 - UI 预览,后端接入前使用 mock 数据 */
/** 客服邀请码管理 — 对接 merchant-staff API */
import request from '../../utils/request.js';
import { STAFF_API } from '../../utils/staff-api.js';
Page({
data: {
statusBar: 20,
gudingCode: 'XQKF2026',
kefuTips: '客服秘钥用于绑定子客服账号,后端接口就绪后将自动替换为真实数据。',
sublist: [{ name: '全部' }, { name: '未使用' }, { name: '已使用' }],
kefuTips: '一次性邀请码绑定子客服,固定码仅展示不可绑定。',
sublist: [{ name: '全部', status: null }, { name: '未使用', status: 0 }, { name: '已使用', status: 1 }],
subCurrent: 0,
list: [
{ id: 1, typeName: '财务', code: 'CW-8X2K9P', status: 0, adddate: '2026-06-10' },
{ id: 2, typeName: '总管', code: 'ZG-3M7N1Q', status: 1, adddate: '2026-06-08', usedate: '2026-06-12', user: { nickname: '客服小张', avatar: '/images/default-avatar.png' } },
],
list: [],
roles: [],
showQrcodeTips: false,
loading: false,
},
onLoad() {
const sys = wx.getSystemInfoSync();
this.setData({ statusBar: sys.statusBarHeight || 20 });
this.loadRoles();
this.loadList();
},
goBack() {
wx.navigateBack();
onShow() {
this.loadList();
},
async loadRoles() {
try {
const res = await request({ url: STAFF_API.roleList, method: 'POST' });
if (res.data && res.data.code === 0) {
this.setData({ roles: res.data.data.roles || [] });
}
} catch (e) {}
},
async loadList() {
const tab = this.data.sublist[this.data.subCurrent];
try {
const res = await request({
url: STAFF_API.inviteList,
method: 'POST',
data: tab.status === null ? {} : { status: tab.status },
});
if (res.data && res.data.code === 0) {
const d = res.data.data || {};
this.setData({
list: d.list || [],
gudingCode: d.gudingCode || 'XQKF2026',
});
}
} catch (e) {
wx.showToast({ title: '加载失败', icon: 'none' });
}
},
goBack() { wx.navigateBack(); },
copyFixed() {
wx.setClipboardData({ data: this.data.gudingCode });
},
switchSub(e) {
this.setData({ subCurrent: Number(e.currentTarget.dataset.idx) });
this.setData({ subCurrent: Number(e.currentTarget.dataset.idx) }, () => this.loadList());
},
addKey() {
wx.showToast({ title: '后端接入后可添加', icon: 'none' });
async addKey() {
const roles = this.data.roles;
if (!roles.length) {
wx.showToast({ title: '暂无角色,请稍后重试', icon: 'none' });
return;
}
const names = roles.map(r => r.role_name);
wx.showActionSheet({
itemList: names,
success: async (r) => {
const role = roles[r.tapIndex];
wx.showLoading({ title: '生成中' });
try {
const res = await request({
url: STAFF_API.inviteCreate,
method: 'POST',
data: { role_id: role.id },
});
if (res.data && res.data.code === 0) {
wx.showToast({ title: '已生成', icon: 'success' });
this.loadList();
} else {
wx.showToast({ title: res.data.msg || '失败', icon: 'none' });
}
} finally {
wx.hideLoading();
}
},
});
},
copyCode(e) {
wx.setClipboardData({ data: e.currentTarget.dataset.code || '' });
},
delKey() {
wx.showToast({ title: '预览数据不可删除', icon: 'none' });
},
showTips() {
this.setData({ showQrcodeTips: true });
},
closeTips() {
this.setData({ showQrcodeTips: false });
},
previewQr() {
wx.previewImage({
urls: ['https://xy-1314784552.cos.ap-guangzhou.myqcloud.com/uploads/images/ewm.png'],
async delKey(e) {
const id = e.currentTarget.dataset.id;
if (!id) return;
const res = await request({
url: STAFF_API.inviteRevoke,
method: 'POST',
data: { id },
});
if (res.data && res.data.code === 0) {
wx.showToast({ title: '已作废' });
this.loadList();
} else {
wx.showToast({ title: res.data.msg || '失败', icon: 'none' });
}
},
showTips() { this.setData({ showQrcodeTips: true }); },
closeTips() { this.setData({ showQrcodeTips: false }); },
goAudit() {
wx.navigateTo({ url: '/pages/merchant-staff-audit/merchant-staff-audit' });
},
goToRoleManage() {
wx.navigateTo({ url: '/pages/merchant-staff-role/merchant-staff-role' });
},
noop() {},
});