login.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. import { models, db } from '../../utils/cloudbase.js'
  2. Page({
  3. /**
  4. * 页面的初始数据
  5. */
  6. data: {
  7. levelOptions: ['小班', '中班', '大班'],
  8. selectedLevelIndex: 0,
  9. xiala: '',
  10. phone: '',
  11. gardenList: [], // 这里替换为实际园所名称数组
  12. gardenIndex: null,
  13. contactsname: '',
  14. selected: {},
  15. code: '' // 用户输入的验证码
  16. },
  17. // 监听手机号输入框
  18. onPhoneInput(e) {
  19. this.setData({
  20. phone: e.detail.value
  21. });
  22. },
  23. // 监听姓名输入框
  24. onContactsInput(e) {
  25. this.setData({
  26. contactsname: e.detail.value
  27. });
  28. },
  29. // 监听验证码输入
  30. onInputCode(e) {
  31. this.setData({
  32. code: e.detail.value
  33. });
  34. },
  35. onLoad(options) {
  36. this.onScholl();
  37. const fileIDs = [
  38. 'cloud://cloud1-6g98iw7i28b01747.636c-cloud1-6g98iw7i28b01747-1367995226/images/icon/xiala.png',
  39. ]
  40. // 并发下载多个 fileID
  41. Promise.all(
  42. fileIDs.map(fileID => wx.cloud.downloadFile({ fileID }))
  43. ).then(results => {
  44. // 每个 result 对应一个下载结果
  45. const tempFilePaths = results.map(r => r.tempFilePath);
  46. console.log('全部下载成功:', tempFilePaths);
  47. this.setData({
  48. xiala: tempFilePaths[0],
  49. });
  50. }).catch(err => {
  51. console.error('有文件下载失败:', err);
  52. });
  53. },
  54. // 获取学校数据
  55. async onScholl() {
  56. try {
  57. let allRecords = [];
  58. let pageNumber = 1;
  59. const pageSize = 100; // 每次查询 100 条
  60. while (true) {
  61. const { data } = await models.wx_school.list({
  62. filter: {
  63. where: {}
  64. },
  65. pageSize: pageSize,
  66. pageNumber: pageNumber,
  67. getCount: true,
  68. envType: "prod",
  69. });
  70. if (data.records.length === 0) {
  71. break; // 没有更多数据,退出循环
  72. }
  73. allRecords = allRecords.concat(data.records); // 将当前页数据添加到全部数据中
  74. pageNumber++; // 查询下一页
  75. }
  76. this.setData({
  77. gardenList: allRecords // 按实际字段替换
  78. });
  79. console.log(this.data.gardenList, 'gardenList');
  80. } catch (error) {
  81. console.error('获取数据失败:', error);
  82. wx.showToast({
  83. title: '获取数据失败,请稍后再试',
  84. icon: 'none'
  85. });
  86. }
  87. },
  88. // 选择学校下拉框
  89. async onGardenChange(e) {
  90. const index = parseInt(e.detail.value);
  91. this.setData({
  92. gardenIndex: index
  93. });
  94. const selected = this.data.gardenList[index];
  95. this.setData({
  96. selected: selected
  97. })
  98. },
  99. // 获取验证码
  100. getCode() {
  101. const { phone } = this.data;
  102. if (!phone || !/^1[3-9]\d{9}$/.test(phone)) {
  103. wx.showToast({
  104. title: '请输入有效的手机号码',
  105. icon: 'none'
  106. });
  107. return;
  108. }
  109. const code = this.generateCode(); // 本地生成验证码(用于发送)
  110. // 保存验证码到 data
  111. this.setData({ code });
  112. console.log(code, 'codecode');
  113. },
  114. generateCode() {
  115. return Math.floor(100000 + Math.random() * 900000).toString();
  116. },
  117. // 注册
  118. async bindingevents() {
  119. try {
  120. const { data } = await models.wx_user.create({
  121. data: {
  122. img: "", // 头像
  123. gender: 1, // 性别
  124. teacher_id: "", // 老师id
  125. user_name: this.data.contactsname, // 用户名
  126. remark: "", // 备注
  127. delete: 0, // 逻辑删除
  128. school_id: this.data.selected._id, // 学校id
  129. phone: this.data.phone, // 手机号
  130. grade: this.data.selectedLevelIndex, // 班级
  131. log_off: "", // 注销原因
  132. name: this.data.contactsname, // 姓名
  133. },
  134. envType: "prod",
  135. });
  136. // 注册成功提示
  137. wx.showToast({
  138. title: '注册成功,去登录',
  139. icon: 'success',
  140. duration: 1500, // 提示显示 1.5 秒
  141. });
  142. // 提示消失后跳转到登录页面
  143. setTimeout(() => {
  144. wx.reLaunch({
  145. url: '/pages/logins/logins', // 替换为你的登录页面路径
  146. });
  147. }, 1500);
  148. } catch (error) {
  149. console.error('注册失败:', error);
  150. wx.showToast({
  151. title: '注册失败,请稍后再试',
  152. icon: 'none',
  153. });
  154. }
  155. }
  156. })