phoneLogin.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. const app = getApp()
  2. const api = require('../../../request/api');
  3. const http = require('../../../request/http');
  4. const utils = require('../../../utils/util.js');
  5. const storeKeys = require('../../../utils/storageKeys.js');
  6. Page({
  7. data: {
  8. selected: false,
  9. phone: "", //手机号
  10. code: "", //验证码
  11. sunTime: 60, //倒计时
  12. isCode: false, //是否处于倒计时
  13. interval: null,
  14. isOk: false
  15. },
  16. toPage(e) {
  17. let type = e.currentTarget.dataset.type;
  18. if (type == 1) { //服务协议
  19. wx.navigateTo({
  20. url: "/pages/public/pages/serviceAgreement/serviceAgreement"
  21. })
  22. }
  23. if (type == 2) { //隐私协议
  24. wx.navigateTo({
  25. url: "/pages/public/pages/privacy/privacy"
  26. })
  27. }
  28. },
  29. changeInput: function (e) {
  30. let value = e.detail.value.replace(/\s+/g, '');
  31. let type = e.target.dataset.type;
  32. if (type) {
  33. //手机号
  34. if (type == 1) {
  35. this.setData({
  36. phone: value
  37. })
  38. this.changeOk();
  39. return;
  40. }
  41. //验证码
  42. if (type == 2) {
  43. this.setData({
  44. code: value
  45. })
  46. this.changeOk();
  47. return;
  48. }
  49. }
  50. },
  51. //勾选
  52. changSelected() {
  53. let selected = this.data.selected;
  54. this.setData({
  55. selected: !selected
  56. })
  57. this.changeOk();
  58. },
  59. //清空验证码
  60. emptyCode: utils.throttle(function (e) {
  61. this.setData({
  62. code: ""
  63. })
  64. this.changeOk();
  65. }),
  66. changeOk() {
  67. if (this.data.phone && this.data.code && this.data.selected) {
  68. this.setData({
  69. isOk: true
  70. })
  71. } else {
  72. this.setData({
  73. isOk: false
  74. })
  75. }
  76. },
  77. //获取验证码
  78. getCode: utils.throttle(function (e) {
  79. if (!this.data.phone) {
  80. utils.toast("请输入手机号码")
  81. return;
  82. }
  83. let mobileReg = /^1[3|4|5|6|7|8|9][0-9]{9}$/; //手机号
  84. if (!mobileReg.test(this.data.phone)) {
  85. utils.toast("请输入正确的手机号");
  86. return;
  87. }
  88. let data = {
  89. mobile: this.data.phone
  90. }
  91. wx.showLoading({
  92. title: "加载中",
  93. mask: true
  94. });
  95. http.request({
  96. url: api.URL + "/api/index/sms",
  97. token: utils.getStorageSync(storeKeys.TOKEN),
  98. method: 'GET',
  99. data,
  100. success: (res) => {
  101. wx.hideLoading();
  102. console.log(res)
  103. utils.toast('验证码已发送请注意查收');
  104. this.setData({
  105. isCode: true,
  106. sunTime: 60,
  107. });
  108. this.data.interval = setInterval(() => {
  109. let sunTime = this.data.sunTime-1;
  110. if (this.data.sunTime == 1) {
  111. clearTimeout(this.data.interval);
  112. this.setData({
  113. isCode:false,
  114. sunTime: 60,
  115. interval:null
  116. });
  117. }
  118. this.setData({
  119. sunTime
  120. });
  121. }, 1000);
  122. },
  123. error: (res) => {
  124. console.log(res)
  125. wx.hideLoading();
  126. }
  127. })
  128. }),
  129. // 登录/注册
  130. submitLogin: utils.throttle(function (e) {
  131. if(!this.data.isOk){
  132. return;
  133. }
  134. if (!this.data.phone) {
  135. utils.toast("请输入手机号码")
  136. return;
  137. }
  138. let mobileReg = /^1[3|4|5|6|7|8|9][0-9]{9}$/; //手机号
  139. if (!mobileReg.test(this.data.phone)) {
  140. utils.toast("请输入正确的手机号");
  141. return;
  142. }
  143. if(!this.data.code){
  144. utils.toast("请输入验证码");
  145. return;
  146. }
  147. if(!this.data.selected){
  148. utils.toast("请先同意原味公明腊肠优选服务协议");
  149. }
  150. let data = {
  151. mobile: this.data.phone,
  152. sms_code: this.data.code
  153. }
  154. wx.showLoading({
  155. title: "登录中...",
  156. mask: true
  157. });
  158. http.request({
  159. url: api.URL + '/api/mobile',
  160. method:'POST',
  161. data,
  162. success: (res)=> {
  163. wx.hideLoading();
  164. console.log(res)
  165. if(res.data.data.token){
  166. utils.toast('登录成功');
  167. utils.setStorageSync(storeKeys.TOKEN, res.data.data.token);
  168. this.getUserInfo()
  169. this.promotion();
  170. app.getCartNumber();
  171. setTimeout(() => {
  172. wx.navigateBack({
  173. delta: 2
  174. })
  175. }, 1000)
  176. }
  177. },
  178. error: (res)=> {
  179. wx.hideLoading();
  180. }
  181. })
  182. }),
  183. getUserInfo: function() {
  184. http.request({
  185. url: api.URL + '/api/user/info',
  186. token: utils.getStorageSync(storeKeys.TOKEN),
  187. method: 'GET',
  188. noLogin: true,
  189. success: function(res) {
  190. console.log(res)
  191. let userInfo = res.data.data.userInfo;
  192. app.globalData.userInfo = userInfo
  193. utils.setStorageSync(storeKeys.USERINFO, userInfo);
  194. },
  195. error: function(res) {},
  196. })
  197. },
  198. // 普通用户切换绑定关系
  199. promotion(){
  200. let sharerId = utils.getStorageSync(storeKeys.SHAREID) || utils.getStorageSync(storeKeys.APPLESID) || "";
  201. console.log("sharerId",sharerId)
  202. if(!sharerId){
  203. return;
  204. }
  205. let data = {
  206. sharerId: sharerId,
  207. isScanCode: "1"
  208. }
  209. http.request({
  210. url: api.URL + '/api/promotion/ch_upper',
  211. data: data,
  212. method: 'POST',
  213. token: utils.getStorageSync(storeKeys.TOKEN),
  214. noLogin: true,
  215. noToast:true,
  216. success: function(res) {
  217. console.log("success")
  218. console.log(res)
  219. },
  220. error: function(res) {
  221. console.log("error")
  222. console.log(res)
  223. }
  224. })
  225. },
  226. onHide: function () {
  227. clearTimeout(this.data.interval);
  228. this.setData({
  229. interval: null
  230. });
  231. },
  232. onUnload() {
  233. clearTimeout(this.data.interval);
  234. this.setData({
  235. interval: null
  236. });
  237. },
  238. })