bind.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. <template>
  2. <div class="app-content">
  3. <form @submit="formSubmit">
  4. <div class="module-com input-line-wrap">
  5. <div
  6. class="prompt-text"
  7. style="padding-top:20rpx;margin-bottom:20rpx;font-size:30rpx;"
  8. >请按以下操作完成绑定:</div>
  9. <tui-list-cell class="line-cell" :hover="false">
  10. <div class="tui-title required" style="width:120rpx;">手机号</div>
  11. <input
  12. v-model="form.mobile"
  13. placeholder-class="phcolor"
  14. class="tui-input"
  15. name="mobile"
  16. placeholder="请输入"
  17. maxlength="50"
  18. type="number"
  19. style="width:400rpx;"
  20. />
  21. <button
  22. class="admin-button-com blue mini-btn"
  23. open-type="getPhoneNumber"
  24. @getphonenumber="getWxMobile"
  25. >点击生成</button>
  26. </tui-list-cell>
  27. <tui-list-cell class="line-cell" :hover="false">
  28. <div class="tui-title required" style="width:120rpx;">昵称</div>
  29. <input
  30. v-model="form.realName"
  31. placeholder-class="phcolor"
  32. class="tui-input"
  33. name="nickname"
  34. placeholder="请输入"
  35. maxlength="40"
  36. type="text"
  37. style="width:400rpx;"
  38. />
  39. <button
  40. class="admin-button-com blue mini-btn"
  41. open-type="getUserInfo"
  42. @getuserinfo="getWxAvatar"
  43. >点击生成</button>
  44. </tui-list-cell>
  45. <div
  46. class="prompt-text"
  47. style="margin-top:20rpx;margin-bottom:20rpx;font-size:30rpx;"
  48. >关注公众号,第一时间接收动态提醒:</div>
  49. <tui-list-cell>
  50. <block>
  51. <official-account></official-account>
  52. </block>
  53. </tui-list-cell>
  54. <div class="btn-wrap">
  55. <button class="admin-button-com blue big" formType="submit">完成</button>
  56. </div>
  57. </div>
  58. </form>
  59. </div>
  60. </template>
  61. <script>
  62. import { mapGetters } from "vuex";
  63. import TuiListCell from "@/components/plugin/list-cell";
  64. const form = require("@/utils/formValidation.js");
  65. import { add } from "@/api/member";
  66. import { getWxInfo, getWxPhone } from "@/api/mini";
  67. export default {
  68. name: "bind",
  69. components: {
  70. TuiListCell
  71. },
  72. data() {
  73. return {
  74. form: {
  75. mobile: "",
  76. nickname: "",
  77. recommendAdminId: 0,
  78. shopId: 0
  79. },
  80. levelSelData: {}
  81. };
  82. },
  83. computed: {},
  84. onLoad(props) {
  85. //console.log(encodeURIComponent('adminId=18533&shopId=15680'))
  86. const scene = decodeURIComponent(props.scene);
  87. //console.log(scene);
  88. var sceneItem = scene.split("&");
  89. var arr, name, value;
  90. var sceneArray = new Array();
  91. for (var i = 0, l = sceneItem.length; i < l; i++) {
  92. arr = sceneItem[i].split("=");
  93. name = arr[0];
  94. value = arr[1];
  95. sceneArray[name] = value;
  96. }
  97. this.recommendAdminId = sceneArray.adminId;
  98. this.shopId = sceneArray.shopId;
  99. },
  100. methods: {
  101. confirmFn() {
  102. add(this.form).then(res => {
  103. this.$msg("添加成功!");
  104. setTimeout(() => {
  105. this.$util.pageTo(1);
  106. }, 1000);
  107. });
  108. },
  109. // 表单验证
  110. formSubmit(e) {
  111. // 表单规则
  112. let rules = [
  113. {
  114. name: "mobile",
  115. rule: ["required"],
  116. msg: ["请输入手机号"]
  117. },
  118. {
  119. name: "nickname",
  120. rule: ["required"],
  121. msg: ["请输入密码"]
  122. }
  123. ];
  124. // 进行表单检查
  125. let formData = e.detail.value;
  126. let checkRes = form.validation(formData, rules);
  127. // 验证通过!
  128. if (!checkRes) {
  129. this.confirmFn();
  130. } else {
  131. this.$msg(checkRes);
  132. }
  133. },
  134. // 获取微信手机号
  135. getWxMobile(e) {
  136. console.log(e);
  137. if (e.detail.errMsg === "getPhoneNumber:ok") {
  138. getWxPhone({
  139. iv: e.detail.iv,
  140. encryptedData: e.detail.encryptedData
  141. }).then(res => {
  142. console.log("用户信息", res);
  143. uni.showToast({
  144. icon: "success"
  145. });
  146. setTimeout(() => {
  147. this.stepIndex = 2;
  148. }, 1000);
  149. });
  150. } else {
  151. this.$msg("获取信息失败!");
  152. }
  153. },
  154. // 获取微信信息
  155. getWxAvatar() {
  156. uni.getUserInfo({
  157. provider: "weixin",
  158. success: res => {
  159. console.log("res", res);
  160. // this.popupShow = true
  161. getWxInfo({ iv: res.iv, encryptedData: res.encryptedData }).then(
  162. subRes => {
  163. console.log("用户信息", subRes);
  164. uni.showToast({
  165. icon: "success"
  166. });
  167. this.wxInfo = subRes.data;
  168. // this.$msg('创建用户信息成功!')
  169. // this.popupShow = true
  170. setTimeout(() => {
  171. this.stepIndex = 1;
  172. }, 1000);
  173. }
  174. );
  175. },
  176. fail: () => {
  177. // this.loading = false
  178. }
  179. });
  180. }
  181. }
  182. };
  183. </script>
  184. <style lang="scss" scoped>
  185. </style>