login.js 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. // pages/login/login.js
  2. var app = getApp();
  3. const util = require('../../utils/util.js');
  4. const WebIM = require("../../utils/WebIM")["default"];
  5. const CusBase64 = require('../../utils/base64.js');
  6. Page({
  7. /**
  8. * 页面的初始数据
  9. */
  10. data: {
  11. imgPath: app.globalData.imgPath,
  12. phone: '',
  13. vCode: '',
  14. sendText: '发送验证码',
  15. disabled: false,
  16. grant_type: "password",
  17. },
  18. /**
  19. * 生命周期函数--监听页面加载
  20. */
  21. onLoad: function (options) {
  22. },
  23. /**
  24. * 生命周期函数--监听页面初次渲染完成
  25. */
  26. onReady: function () {
  27. },
  28. /**
  29. * 生命周期函数--监听页面显示
  30. */
  31. onShow: function () {
  32. },
  33. /**
  34. * 生命周期函数--监听页面隐藏
  35. */
  36. onHide: function () {
  37. },
  38. /**
  39. * 生命周期函数--监听页面卸载
  40. */
  41. onUnload: function () {
  42. },
  43. /**
  44. * 页面相关事件处理函数--监听用户下拉动作
  45. */
  46. onPullDownRefresh: function () {
  47. },
  48. /**
  49. * 页面上拉触底事件的处理函数
  50. */
  51. onReachBottom: function () {
  52. },
  53. /**
  54. * 用户点击右上角分享
  55. */
  56. onShareAppMessage: function () {
  57. },
  58. /**
  59. * 手机号赋值
  60. */
  61. setPhone: function (e) {
  62. this.setData({
  63. phone: e.detail.value
  64. });
  65. },
  66. /**
  67. * 验证码赋值
  68. */
  69. setVcode: function (e) {
  70. this.setData({
  71. vCode: e.detail.value
  72. });
  73. },
  74. /**
  75. * 获取验证码
  76. */
  77. getVerifyCode: function () {
  78. let that = this;
  79. let disabled = that.data.disabled;
  80. if (disabled) {
  81. return;
  82. }
  83. let phone = this.data.phone;
  84. if (!phone) {
  85. util.toast('请输入手机号', 'error');
  86. return false;
  87. }
  88. let reg = /1[3-9]\d{9}/;
  89. if (!reg.test(phone)) {
  90. util.toast('手机号格式有误', 'error');
  91. return false;
  92. }
  93. that.setData({
  94. sendText: '60s后再次发送',
  95. disabled: true
  96. });
  97. // 再次发送短信时间倒计时
  98. that.timeTask();
  99. util.post({
  100. url: '/api/sms/sendSms/' + that.data.phone,
  101. success: (res) => {
  102. wx.hideLoading();
  103. if (res.code != 200) {
  104. util.toast(res.data.msg);
  105. } else {
  106. util.toast(res.data.msg);
  107. }
  108. },
  109. });
  110. },
  111. /**
  112. * 60s倒计时定时器
  113. */
  114. timeTask: function () {
  115. let that = this;
  116. let i = 60;
  117. let timer = setInterval(function () {
  118. i--;
  119. if (i < 1) {
  120. that.setData({
  121. sendText: '发送验证码',
  122. disabled: false
  123. });
  124. clearInterval(timer);
  125. } else {
  126. that.setData({
  127. sendText: i + 's后再次发送'
  128. });
  129. }
  130. }, 1000);
  131. },
  132. /**
  133. * 登录系统
  134. */
  135. loginSys: function (e) {
  136. let that = this;
  137. let values = e.detail.value;
  138. if (!values.phone) {
  139. util.toast('请输入手机号', 'error');
  140. return false;
  141. }
  142. let reg = /1[3-9]\d{9}/;
  143. if (!reg.test(values.phone)) {
  144. util.toast('手机号格式有误', 'error');
  145. return false;
  146. }
  147. if (!values.code) {
  148. util.toast('请输入验证码', 'error');
  149. return false;
  150. }
  151. values.type = 'CAPTCHA';
  152. util.post({
  153. url: '/login/mobile',
  154. data: values,
  155. header: {
  156. 'Content-Type': 'application/x-www-form-urlencoded'
  157. },
  158. success: (res) => {
  159. wx.hideLoading();
  160. let code = res.data.code;
  161. if ('200' != code) {
  162. util.toast(res.data.msg);
  163. } else {
  164. app.globalData.Authorization = res.data.data.Authorization;
  165. that.getUserInfo();
  166. }
  167. }
  168. });
  169. },
  170. /**
  171. * 登录验证通过后获取用户信息和角色信息
  172. */
  173. getUserInfo: function () {
  174. let that = this;
  175. util.get({
  176. url: '/sys/userInfoAndRole',
  177. success: (res) => {
  178. wx.hideLoading();
  179. if (res.data.code != 200) {
  180. util.toast(res.data.msg);
  181. } else {
  182. let datas = res.data.data;
  183. app.globalData.userInfo = datas;
  184. app.globalData.roleInfo = datas.roleList[0];
  185. wx.setStorage({
  186. key: "myUsername",
  187. data: datas.phone
  188. });
  189. app.conn.open({
  190. // apiUrl: WebIM.config.apiURL,
  191. user: datas.phone,
  192. pwd: CusBase64.CusBASE64.encoder(datas.phone),
  193. grant_type: that.data.grant_type,
  194. appKey: WebIM.config.appkey
  195. });
  196. }
  197. }
  198. });
  199. },
  200. /**
  201. * 微信获取手机号快捷登录
  202. */
  203. getPhoneNumber: function (res) {
  204. let that = this;
  205. if (!res.detail.code) {
  206. util.toast('请升级微信版本');
  207. return;
  208. }
  209. //用户按了允许授权按钮
  210. if (res.detail.encryptedData) {
  211. util.post({
  212. url: '/login/mobile',
  213. header: {
  214. 'Content-Type': 'application/x-www-form-urlencoded'
  215. },
  216. data: {
  217. code: res.detail.code,
  218. type: 'QUICK'
  219. },
  220. success: (res) => {
  221. wx.hideLoading();
  222. if (res.data.code != 200) {
  223. util.toast(res.data.msg);
  224. } else {
  225. app.globalData.Authorization = res.data.data.Authorization;
  226. that.getUserInfo();
  227. }
  228. }
  229. });
  230. } else {//用户按了拒绝按钮
  231. wx.showModal({
  232. title: '警告',
  233. content: '您点击了拒绝授权,将无法进入小程序,请授权之后再进入!!!',
  234. showCancel: false,
  235. confirmText: '返回授权',
  236. success: function (res) {
  237. if (res.confirm) {
  238. console.log('用户点击了“返回授权”');
  239. }
  240. }
  241. });
  242. }
  243. },
  244. })