@@ -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() {},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user