index.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. //import * as WxJsApi from '@/utils/wxJsApi.js'
  2. import * as API from '@/apis/index.js'
  3. import {
  4. checkPhone
  5. } from '@/utils'
  6. export default {
  7. data() {
  8. return {
  9. readme: true,
  10. phone: "",
  11. isReady: false,
  12. errorType: ['message'],
  13. rules: {
  14. phone: [{
  15. required: true,
  16. message: '请输入手机号',
  17. trigger: ['change', 'blur'],
  18. },
  19. {
  20. validator: (rule, value, callback) => {
  21. // 调用uView自带的js验证规则,详见:https://www.uviewui.com/js/test.html
  22. return this.$u.test.mobile(value);
  23. },
  24. message: '手机号码不正确',
  25. // 触发器可以同时用blur和change,二者之间用英文逗号隔开
  26. trigger: ['change', 'blur'],
  27. }
  28. ],
  29. code: [{
  30. required: true,
  31. message: '请输入验证码',
  32. trigger: ['change', 'blur'],
  33. },
  34. {
  35. type: 'number',
  36. message: '验证码只能为数字',
  37. trigger: ['change', 'blur'],
  38. }
  39. ]
  40. }
  41. }
  42. },
  43. components: {
  44. },
  45. onLoad(op) {
  46. //this.id=op.id;
  47. },
  48. methods: {
  49. loginByUniverify(provider, res) {
  50. const univerifyInfo = {
  51. provider,
  52. ...res.authResult,
  53. }
  54. uni.request({
  55. url: 'https://97fca9f2-41f6-449f-a35e-3f135d4c3875.bspapp.com/http/univerify-login',
  56. method: 'POST',
  57. data: univerifyInfo,
  58. success: (res) => {
  59. const data = res.data
  60. if (data.success) {
  61. this.phone = phoneNumber;
  62. } else {
  63. console.log("111")
  64. }
  65. },
  66. fail: (err) => {
  67. console.log("222")
  68. }
  69. })
  70. },
  71. getPhone() {
  72. uni.login({
  73. provider: 'univerify',
  74. success: async (res) => {
  75. console.log('login success:', res);
  76. this.loginByUniverify("univerify", res)
  77. },
  78. fail: (err) => {
  79. console.log('login fail:', err);
  80. // 一键登录点击其他登录方式
  81. if (err.code == '30002') {
  82. uni.closeAuthView();
  83. this.Toast({
  84. title: '其他登录方式'
  85. })
  86. return;
  87. }
  88. // 未开通
  89. if (err.code == 1000) {
  90. uni.showModal({
  91. title: '登录失败',
  92. content: `${err.errMsg}\n,错误码:${err.code}`,
  93. confirmText: '开通指南',
  94. cancelText: '确定',
  95. success: (res) => {
  96. if (res.confirm) {
  97. setTimeout(() => {
  98. plus.runtime.openWeb(
  99. 'https://ask.dcloud.net.cn/article/37965'
  100. )
  101. }, 500)
  102. }
  103. }
  104. });
  105. return;
  106. }
  107. // 一键登录预登陆失败
  108. if (err.code == '30005') {
  109. uni.showModal({
  110. showCancel: false,
  111. title: '预登录失败',
  112. content: this.univerifyErrorMsg || err.errMsg
  113. });
  114. return;
  115. }
  116. // 一键登录用户关闭验证界面
  117. if (err.code != '30003') {
  118. uni.showModal({
  119. showCancel: false,
  120. title: '登录失败',
  121. content: JSON.stringify(err)
  122. });
  123. }
  124. },
  125. complete: () => {
  126. this.univerifyBtnLoading = false;
  127. }
  128. });
  129. },
  130. login() {
  131. var checkPhoneResult = checkPhone(this.phone);
  132. if(checkPhoneResult){
  133. uni.showToast({
  134. title: checkPhoneResult,
  135. })
  136. return;
  137. }
  138. this.$refs.uForm.validate(valid => {
  139. if (valid) {
  140. console.log('验证通过');
  141. } else {
  142. console.log('验证失败');
  143. }
  144. });
  145. if (!this.readme) {
  146. uni.showToast({
  147. title: "请阅读并同意《用户协议》《隐私政策》",
  148. })
  149. } else {
  150. uni.navigateTo({
  151. url:"/pages/login/vCode/vCode?phone="+this.phone
  152. })
  153. }
  154. }
  155. },
  156. onReady() {
  157. //
  158. this.$refs.uForm.setRules(this.rules);
  159. //
  160. this.getPhone()
  161. this.isReady = true;
  162. },
  163. onShow() {
  164. if (this.isReady) {
  165. }
  166. },
  167. }