logoff.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. import { models, db, _ } from '../../utils/cloudbase.js'
  2. Page({
  3. data: {
  4. selectedReasons: [],
  5. feedback: '' // 新增 feedback 字段
  6. },
  7. onLoad(options) {
  8. // 页面加载时的初始化操作
  9. },
  10. handleCheckboxChange(e) {
  11. console.log('checkbox change:', e.detail.value); // e.detail.value 是一个数组
  12. this.setData({
  13. selectedReasons: e.detail.value
  14. });
  15. },
  16. handleFeedbackInput(e) {
  17. this.setData({
  18. feedback: e.detail.value
  19. });
  20. },
  21. async confirmLogout() {
  22. const { selectedReasons, feedback } = this.data;
  23. if (selectedReasons.length === 0) {
  24. wx.showToast({
  25. title: '请选择注销原因',
  26. icon: 'none'
  27. });
  28. return;
  29. }
  30. if (!feedback.trim()) {
  31. wx.showToast({
  32. title: '请输入意见或建议',
  33. icon: 'none'
  34. });
  35. return;
  36. }
  37. // 弹出确认框
  38. const that = this; // 保证作用域正确
  39. wx.showModal({
  40. title: '提示',
  41. content: '确定要注销吗?',
  42. success: async function (res) {
  43. if (res.confirm) {
  44. // 获取本地用户信息
  45. const userInfo = wx.getStorageSync('userInfo');
  46. if (!userInfo || !userInfo._id) {
  47. wx.showToast({
  48. title: '用户信息异常',
  49. icon: 'none'
  50. });
  51. return;
  52. }
  53. const reasonStr = that.data.selectedReasons.join(',');
  54. try {
  55. const { data } = await models.wx_user.update({
  56. data: {
  57. delete: 1, // 逻辑删除
  58. log_off: reasonStr,
  59. },
  60. filter: {
  61. where: {
  62. _id: {
  63. $eq: userInfo._id,
  64. }
  65. }
  66. },
  67. envType: "prod"
  68. });
  69. if (data.count > 0) {
  70. // 注销成功,清除本地缓存
  71. wx.removeStorageSync('userInfo');
  72. wx.showToast({
  73. title: '注销成功',
  74. icon: 'success',
  75. duration: 2000
  76. });
  77. // 可选:跳转到登录页
  78. setTimeout(() => {
  79. wx.redirectTo({
  80. url: '/pages/logins/logins'
  81. });
  82. }, 2000);
  83. } else {
  84. wx.showToast({
  85. title: '注销失败',
  86. icon: 'none'
  87. });
  88. }
  89. } catch (err) {
  90. console.error('注销失败:', err);
  91. wx.showToast({
  92. title: '服务器错误',
  93. icon: 'none'
  94. });
  95. }
  96. } else {
  97. console.log('用户取消注销');
  98. }
  99. }
  100. });
  101. }
  102. });