123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333 |
- const app = getApp();
- Page({
- /**
- * 页面的初始数据
- */
- data: {
- huHaoList: [],
- showUnbindModal: false,
- unbindId: null,
- showDefaultModal: false,
- defaultId: null
- },
- onLoad: function (options) {
- this.getAccountList();
- },
- // 点击解除绑定按钮
- unbindHuHao: function (e) {
- const id = e.currentTarget.dataset.id;
- this.setData({
- showUnbindModal: true,
- unbindId: id
- });
- },
- // 取消解绑
- cancelUnbind: function () {
- this.setData({
- showUnbindModal: false,
- unbindId: null
- });
- },
- // 确认解绑
- confirmUnbind: function () {
- const id = this.data.unbindId;
- this.accountUnbind(id);
- },
- // 解绑方法
- accountUnbind: function (id) {
- const unbindInfo = this.data.huHaoList.filter(item => {
- return item.id === id;
- })[0];
- const otherInfo = this.data.huHaoList.filter(item => {
- return item.id != id;
- });
- const _this = this;
- wx.showLoading({
- title: '获取中...',
- mask: true,
- });
- wx.request({
- url: app.globalData.interfaceUrls.accountUnbind,
- method: 'POST',
- data: {
- account: unbindInfo.usernumber,
- deKey: unbindInfo.dsKey,
- refresh: false,
- otherDsKeys: []
- },
- header: {
- 'content-type': 'application/json', // 默认值
- 'token': app.globalData.userWxInfo.token,
- },
- success(res) {
- wx.hideLoading();
- let apiReturnData = res.data;
- if (apiReturnData.code == '200') {
- wx.showToast({
- title: '解绑成功',
- icon: 'success',
- duration: 2000
- });
- _this.setData({
- huHaoList: otherInfo,
- showUnbindModal: false,
- currentHuHao: null
- });
-
- // 检查是否解绑的是当前正在使用的户号
- const isCurrentAccount = unbindInfo.usernumber === app.globalData.currentAccountInfo.usernumber;
-
- if (otherInfo.length == 0) {
- // 清除全局数据
- app.globalData.currentAccountInfo = [];
- app.globalData.userWxInfo.currentDsKey = "";
- app.globalData.userWxInfo.username = "";
- app.globalData.userWxInfo.usernumber = "";
- app.globalData.userWxInfo.address = "";
- app.globalData.userWxInfo.groupName = "";
-
- // 清除本地存储的户号信息
- wx.removeStorageSync('currentHuHao');
-
- // 设置标记表示所有户号已解绑
- wx.setStorageSync('allAccountsUnbound', true);
-
- // 跳转到首次绑定页面
- wx.redirectTo({
- url: '/pages/FirstBangDing/FirstBangDing',
- })
- } else {
- // 添加刷新列表数据
- _this.getAccountList();
-
- // 如果解绑的是当前户号,需要切换到另一个户号
- if (isCurrentAccount) {
- app.globalData.currentAccountInfo = otherInfo[0];
- app.globalData.userWxInfo.currentDsKey = otherInfo[0].dsKey;
- app.globalData.userWxInfo.username = otherInfo[0].username;
- app.globalData.userWxInfo.usernumber = otherInfo[0].usernumber;
- app.globalData.userWxInfo.address = otherInfo[0].address;
- app.globalData.userWxInfo.groupName = otherInfo[0].groupName;
-
- // 将新选择的户号信息保存到本地存储
- wx.setStorageSync('currentHuHao', otherInfo[0]);
- // 设置一个标记表示需要刷新首页
- wx.setStorageSync('needRefreshHomepage', true);
- wx.setStorageSync('backFromHuHao', true);
- wx.navigateBack();
- }
- }
- } else {
- wx.showToast({
- title: apiReturnData.msg,
- icon: 'error',
- duration: 2000
- })
- wx.hideLoading();
- }
- },
- fail(error) {
- wx.hideLoading();
- utils.simleInfo('户号解绑失败,请稍后再试');
- }
- });
- },
- // 跳转到绑定新户号页面
- goToBindNewHuHao: function () {
- wx.navigateTo({
- url: '/pages/huhaobangding/huhaobangding'
- });
- },
- /**
- * 返回上一页
- */
- goBack: function () {
- wx.navigateBack();
- },
- switchHuHao(e) {
- const huHaoInfo = e.currentTarget.dataset.item;
- debugger
- // 更新全局数据
- app.globalData.userWxInfo = {
- ...app.globalData.userWxInfo,
- username: huHaoInfo.username,
- usernumber: huHaoInfo.usernumber,
- address: huHaoInfo.address,
- groupName: huHaoInfo.groupName,
- currentDsKey: huHaoInfo.dsKey // 更新 currentDsKey
- };
- // 更新当前账户信息
- app.globalData.currentAccountInfo = huHaoInfo;
- // 将新选择的户号信息保存到本地存储
- wx.setStorageSync('currentHuHao', huHaoInfo);
- // 设置标记表示已在用户管理中切换过账户
- wx.setStorageSync('hasUserSwitchedAccount', true);
- wx.showToast({
- title: '户号切换成功',
- icon: 'success',
- duration: 1500
- });
- // 设置一个标记表示需要刷新首页
- wx.setStorageSync('needRefreshHomepage', true);
- // 延迟跳转到首页
- setTimeout(() => {
- wx.switchTab({
- url: '/pages/homepage/homepage'
- });
- }, 1500);
- },
- // 设置默认户号
- setDefaultHuHao: function (e) {
- const id = e.currentTarget.dataset.id;
- this.setData({
- showDefaultModal: true,
- defaultId: id
- });
- },
- // 取消设置默认户号
- cancelDefault: function () {
- this.setData({
- showDefaultModal: false,
- defaultId: null
- });
- },
- // 确认设置默认户号
- confirmDefault: function () {
- const id = this.data.defaultId;
- this.setDefaultAccount(id);
- this.setData({
- showDefaultModal: false
- });
- },
- // 调用设置默认户号接口
- setDefaultAccount: function (id) {
- wx.showLoading({
- title: '设置中...',
- });
- const unbindInfo = this.data.huHaoList.filter(item => {
- return item.id === id;
- })[0];
- wx.request({
- url: app.globalData.interfaceUrls.setDefaultAccount,
- method: 'POST',
- data: {
- account: unbindInfo.usernumber,
- deKey: unbindInfo.dsKey,
- refresh: false,
- otherDsKeys: []
- },
- header: {
- 'content-type': 'application/json', // 默认值
- 'token': app.globalData.userWxInfo.token,
- },
- success: (res) => {
- if (res.data.code === "200") {
- wx.showToast({
- title: '设置成功',
- icon: 'success'
- });
- // 延迟一小段时间后刷新列表,确保后台数据已更新
- setTimeout(() => {
- this.getAccountList();
- }, 300);
- } else {
- wx.showToast({
- title: res.data.msg || '设置失败',
- icon: 'none'
- });
- }
- },
- fail: () => {
- wx.showToast({
- title: '网络异常',
- icon: 'none'
- });
- },
- complete: () => {
- wx.hideLoading();
- }
- });
- },
- // 过滤户号列表,只显示deleted=0的数据,并按默认户号排序
- getAccountList: function () {
- const _this = this;
- wx.showLoading({
- title: '获取中...',
- mask: true,
- });
- wx.request({
- url: app.globalData.interfaceUrls.accountList,
- method: 'GET',
- header: {
- 'content-type': 'application/json',
- 'token': app.globalData.userWxInfo.token,
- 'source': "wc",
- '!SAAS_LOGIN_TOKEN_!': app.globalData.currentAccountInfo.dsKey
- },
- success(res) {
- wx.hideLoading();
- let apiReturnData = res.data;
- // 从全局获取当前账户的信息currentAccountInfo
- const currentUsernumber = app.globalData.currentAccountInfo.usernumber;
- debugger
- // 对返回的数据进行排序,将默认户号(defaultAccount='0')排在前面
- const sortedData = apiReturnData.data.sort((a, b) => {
- // 先按defaultAccount排序('0'排在前面)
- if (a.defaultAccount !== b.defaultAccount) {
- return a.defaultAccount === '0' ? -1 : 1;
- }
- // 如果defaultAccount相同,则按是否是当前户号排序
- // if (a.usernumber === currentUsernumber) return -1;
- // if (b.usernumber === currentUsernumber) return 1;
- // 如果都不是当前户号,则按照户号(usernumber)排序,保证列表顺序稳定
- return a.usernumber.localeCompare(b.usernumber);
- });
- _this.setData({
- huHaoList: sortedData.map(item => {
- const isCurrent = item.usernumber === currentUsernumber;
- return {
- ...item,
- isCurrentUser: isCurrent
- };
- })
- });
- // 在获取列表后也检查是否为空
- if (_this.data.huHaoList.length === 0) {
- wx.navigateTo({
- url: '/pages/FirstBangDing/FirstBangDing'
- });
- }
- },
- fail(error) {
- wx.hideLoading();
- console.error('获取列表失败:', error);
- wx.showToast({
- title: '获取数据失败,请稍后再试',
- icon: 'none'
- });
- }
- });
- },
- // 阻止事件冒泡
- stopPropagation: function (e) {
- // 空函数,仅用于阻止事件冒泡
- },
- })
|