login.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <template>
  2. <div class="page">
  3. <van-nav-bar title="经销商手机号绑定"></van-nav-bar>
  4. <div class="buibOuter">
  5. <div class="bindContent">
  6. <div class="tit">
  7. <p>请完善用户信息</p>
  8. </div>
  9. <van-form>
  10. <van-cell-group>
  11. <van-field
  12. v-model="form.name"
  13. :rules="[{ required: true}]"
  14. placeholder="请输入用户名"
  15. />
  16. </van-cell-group>
  17. <van-cell-group>
  18. <van-field
  19. v-model="form.mobile"
  20. name="pattern"
  21. :rules="[{ pattern}]"
  22. placeholder="请输入手机号"
  23. />
  24. </van-cell-group>
  25. <van-cell-group>
  26. <van-field
  27. v-model="form.code"
  28. center
  29. clearable
  30. :rules="[{ required: true}]"
  31. placeholder="请输入短信验证码"
  32. >
  33. <template #button>
  34. <van-button
  35. size="small"
  36. :loading="sendMsgLoading"
  37. style="width: 2rem;"
  38. :disabled="sended"
  39. @click="getYzm()"
  40. >{{ sendMsgText }}</van-button
  41. >
  42. </template>
  43. </van-field>
  44. </van-cell-group>
  45. <div style="margin: 16px;">
  46. <van-button block type="info" @click="onSubmit">提交</van-button>
  47. </div>
  48. </van-form>
  49. </div>
  50. </div>
  51. </div>
  52. </template>
  53. <script>
  54. import { returnJSEncrypt1 } from "@/utils/auth";
  55. import { getMobileYzm,getUSerInfo } from "../api";
  56. import { addDealer } from "../api";
  57. import { setWxConfig } from "../utils";
  58. export default {
  59. name: "courseLogin",
  60. components: {},
  61. props: [],
  62. data() {
  63. return {
  64. pid: null,
  65. sendMsgText: "获取验证码",
  66. sended: false,
  67. countdown: 60,
  68. form: {
  69. name: "",
  70. mobile: "",
  71. code: ""
  72. },
  73. sendMsgLoading: false,
  74. pattern: /^(?:(?:\+|00)86)?1[3-9]\d{9}$/,
  75. partternY: /\d{6}/
  76. };
  77. },
  78. activated(){
  79. this.init();
  80. if(this.$isWx){
  81. setWxConfig();
  82. }
  83. },
  84. created() {
  85. // this.init();
  86. },
  87. methods: {
  88. // 初始化
  89. init() {
  90. if (this.$route.query && this.$route.query.pid) {
  91. this.pid = this.$route.query.pid;
  92. }
  93. if(JSON.parse(localStorage.getItem("wx_user_info")).marketable){
  94. this.$router.push('/courseHome')
  95. }
  96. },
  97. // 手机号校验
  98. checkMobile(sMobile) {
  99. if (!/^1\d{10}$/.test(sMobile)) {
  100. return false;
  101. } else {
  102. return true;
  103. }
  104. },
  105. // 获取验证码
  106. getYzm() {
  107. if (!this.checkMobile(this.form.mobile)) {
  108. this.$toast.fail("请输入正确的手机号");
  109. return false;
  110. }
  111. let data = { mobile: this.form.mobile.toString(), type: 1 };
  112. this.sendMsgLoading = true;
  113. getMobileYzm({ data: returnJSEncrypt1(data) })
  114. .then(res => {
  115. this.sended = true;
  116. this.countDownInit();
  117. this.$toast.success("已经发送,请注意查收!");
  118. })
  119. .finally(() => {
  120. this.sendMsgLoading = false;
  121. });
  122. },
  123. // 验证码发送倒计时
  124. countDownInit() {
  125. let self = this;
  126. self.sendMsgText = "已发送(" + self.countdown + ")";
  127. if (self.countdown == 0) {
  128. self.countdown = 60;
  129. self.sendMsgText = "重新发送";
  130. self.sended = false;
  131. return false;
  132. } else {
  133. setTimeout(function() {
  134. self.countdown--;
  135. self.countDownInit();
  136. }, 1000);
  137. }
  138. },
  139. // 注册经销商提交
  140. onSubmit() {
  141. if (this.form.name && this.checkMobile(this.form.mobile) && this.form.code) {
  142. let data = {
  143. name: this.form.name,
  144. mobile: this.form.mobile,
  145. code: this.form.code
  146. };
  147. if (this.pid != null&&this.pid!=0) {
  148. data.pid = this.pid;
  149. }
  150. addDealer(data).then(res => {
  151. this.$toast.success("注册经销商成功");
  152. localStorage.removeItem('wx_user_info')
  153. setTimeout(() => {
  154. this.$router.replace("/courseHome");
  155. }, 1000);
  156. });
  157. } else {
  158. this.$toast.fail("请先将信息填写完整在提交");
  159. }
  160. }
  161. }
  162. };
  163. </script>
  164. <style scoped lang="scss">
  165. @import url('../utils/navBar.scss');
  166. * {
  167. margin: 0;
  168. padding: 0;
  169. }
  170. img {
  171. display: block;
  172. }
  173. .page {
  174. background: url(~@/assets/images/courseLogin.png) no-repeat;
  175. background-size: 100% 100%;
  176. .buibOuter {
  177. width: 100%;
  178. height: calc(100vh - 0.92rem);
  179. display: flex;
  180. justify-content: center;
  181. align-items: center;
  182. .bindContent {
  183. width: 92%;
  184. overflow: hidden;
  185. border-radius: 0.15rem;
  186. background: #fff;
  187. margin: 0 auto;
  188. padding: 0.5rem 0.3rem;
  189. box-sizing: border-box;
  190. .tit {
  191. display: flex;
  192. justify-content: center;
  193. p {
  194. font-size: 0.32rem;
  195. font-weight: 600;
  196. line-height: 0.32rem;
  197. margin-bottom: 0.5rem;
  198. }
  199. }
  200. }
  201. }
  202. }
  203. /deep/ .van-field__control {
  204. font-size: 0.28rem;
  205. line-height: 0.9rem;
  206. }
  207. </style>