hookehuyr

✨ feat(实名认证页面): 接口预联调

...@@ -5,14 +5,19 @@ ...@@ -5,14 +5,19 @@
5 <van-config-provider :theme-vars="themeVars"> 5 <van-config-provider :theme-vars="themeVars">
6 <van-form ref="form" @submit="onSubmit"> 6 <van-form ref="form" @submit="onSubmit">
7 <div class="van-hairline--bottom"> 7 <div class="van-hairline--bottom">
8 - <van-field v-model="parent" label="家长姓名" placeholder="请输入你真实的姓名" :rules="[{ required: true, message: '请填写家长姓名' }]" /> 8 + <van-field v-model="user_name" label="家长姓名" placeholder="请输入你真实的姓名"
9 + :rules="[{ required: true, message: '请填写家长姓名' }]" />
9 </div> 10 </div>
10 <div class="van-hairline--bottom"> 11 <div class="van-hairline--bottom">
11 - <van-field v-if="use_widget" v-model="phone" name="phone" label="手机号" placeholder="手机号" readonly clickable @touchstart.stop="showKeyboard" /> 12 + <van-field v-if="use_widget" v-model="phone" name="phone" label="手机号" placeholder="手机号" readonly clickable
12 - <van-field v-else v-model="phone" name="phone" label="手机号" placeholder="手机号" :rules="[{ validator, message: '请输入正确手机号' }]" /> 13 + :rules="[{ validator, message: '请输入正确手机号' }]"
14 + @touchstart.stop="showKeyboard" />
15 + <van-field v-else v-model="phone" name="phone" label="手机号" placeholder="手机号"
16 + :rules="[{ validator, message: '请输入正确手机号' }]" />
13 </div> 17 </div>
14 <div class="van-hairline--bottom"> 18 <div class="van-hairline--bottom">
15 - <van-field v-model="code" center clearable name="code" label="短信验证码" placeholder="请输入短信验证码" :formatter="formatter" :rules="[{ required: true, message: '请填写验证码' }]" > 19 + <van-field v-model="pin" center clearable name="pin" label="短信验证码" placeholder="请输入短信验证码"
20 + :formatter="formatter" :rules="[{ required: true, message: '请填写验证码' }]">
16 <template #button> 21 <template #button>
17 <van-button @click="sendCode" size="small" type="primary" :disabled="disabled"> 22 <van-button @click="sendCode" size="small" type="primary" :disabled="disabled">
18 <span v-if="countDown === 60">发送验证码</span> 23 <span v-if="countDown === 60">发送验证码</span>
...@@ -30,25 +35,19 @@ ...@@ -30,25 +35,19 @@
30 <my-button @on-click="submit" type="primary">保存</my-button> 35 <my-button @on-click="submit" type="primary">保存</my-button>
31 </div> 36 </div>
32 37
33 - <van-number-keyboard 38 + <van-number-keyboard v-model="phone" :show="keyboard_show" :maxlength="11" @blur="onBlur" />
34 - v-model="phone"
35 - :show="keyboard_show"
36 - :maxlength="11"
37 - @blur="onBlur"
38 - />
39 </template> 39 </template>
40 40
41 <script setup> 41 <script setup>
42 import MyButton from '@/components/MyButton/index.vue' 42 import MyButton from '@/components/MyButton/index.vue'
43 43
44 import { wxInfo } from '@/utils/tools'; 44 import { wxInfo } from '@/utils/tools';
45 -import qs from 'Qs' 45 +
46 -import { ref, reactive, onMounted } from 'vue' 46 +import { ref, onMounted, nextTick } from 'vue'
47 -import { useRoute, useRouter } from 'vue-router' 47 +import { useRouter } from 'vue-router'
48 import axios from '@/utils/axios'; 48 import axios from '@/utils/axios';
49 -import $ from 'jquery'
50 import { Toast } from 'vant'; 49 import { Toast } from 'vant';
51 -const $route = useRoute(); 50 +
52 const $router = useRouter(); 51 const $router = useRouter();
53 52
54 const themeVars = { 53 const themeVars = {
...@@ -57,54 +56,35 @@ const themeVars = { ...@@ -57,54 +56,35 @@ const themeVars = {
57 buttonPrimaryColor: '#713610', 56 buttonPrimaryColor: '#713610',
58 }; 57 };
59 58
60 -const parent = ref('') 59 +/******************** 输入框控件 START ********************/
61 60
62 -// 判断是否显示控件
63 -let use_widget = ref(true);
64 /** 61 /**
65 - * 手机号码校验
66 - * 函数返回 true 表示校验通过,false 表示不通过
67 - * @param {*} val
68 - */
69 -const validator = (val) => {
70 - let flag = false;
71 - // 简单判断手机号位数
72 - if (/1\d{10}/.test(val) && phone.value.length === 11) {
73 - disabled.value = false;
74 - flag = true;
75 - } else {
76 - disabled.value = true;
77 - flag = false;
78 - }
79 - return flag
80 -};
81 -
82 - onMounted(() => {
83 - /**
84 * 判断微信环境看是否弹出控件框 62 * 判断微信环境看是否弹出控件框
85 * 桌面微信直接输入 63 * 桌面微信直接输入
86 * 其他环境弹出输入框 64 * 其他环境弹出输入框
87 */ 65 */
88 - if (wxInfo().isiOS || wxInfo().isAndroid) { 66 +let use_widget = ref(true);
67 +if (wxInfo().isiOS || wxInfo().isAndroid) {
89 use_widget.value = true; 68 use_widget.value = true;
90 - } else { 69 +} else {
91 use_widget.value = false; 70 use_widget.value = false;
92 - } 71 +}
93 - })
94 72
95 -// 手机号输入控件控制 73 +// 手机号输入控件
96 const keyboard_show = ref(false); 74 const keyboard_show = ref(false);
97 const showKeyboard = () => { // 弹出数字弹框 75 const showKeyboard = () => { // 弹出数字弹框
98 keyboard_show.value = true; 76 keyboard_show.value = true;
99 }; 77 };
100 const onBlur = () => { // 数字键盘失焦回调 78 const onBlur = () => { // 数字键盘失焦回调
101 keyboard_show.value = false; 79 keyboard_show.value = false;
102 - if (phone.value.length === 11) { 80 + if (phone.value.length === 11) { // 手机号码位数正确时可以发送验证码
103 disabled.value = false; 81 disabled.value = false;
104 } 82 }
105 }; 83 };
106 84
107 -// 设置发送短信倒计时 85 +/******************** 发送验证码模块 START ********************/
86 +
87 +// TODO:发送验证码接口待调,验证码写默认8888
108 const countDown = ref(60); 88 const countDown = ref(60);
109 const countDownHandle = () => { 89 const countDownHandle = () => {
110 // 倒计时 90 // 倒计时
...@@ -119,10 +99,9 @@ const countDownHandle = () => { ...@@ -119,10 +99,9 @@ const countDownHandle = () => {
119 } 99 }
120 const sendCode = () => { // 发送验证码 100 const sendCode = () => { // 发送验证码
121 if (countDown.value === 60) { 101 if (countDown.value === 60) {
122 - axios.post('/srv/?f=shzl_comment&a=bind_phone&t=get_code', 102 + axios.post('/srv/?a=bind_phone&t=get_code', {
123 - qs.stringify({
124 phone: phone.value 103 phone: phone.value
125 - })) 104 + })
126 .then(res => { 105 .then(res => {
127 if (res.data.code === 1) { 106 if (res.data.code === 1) {
128 Toast.success('发送成功'); 107 Toast.success('发送成功');
...@@ -141,24 +120,63 @@ const sendCode = () => { // 发送验证码 ...@@ -141,24 +120,63 @@ const sendCode = () => { // 发送验证码
141 } 120 }
142 }; 121 };
143 122
123 +/******************** 表单业务逻辑 START ********************/
124 +
125 +const user_name = ref('')
144 const phone = ref(''); 126 const phone = ref('');
145 -const code = ref(''); 127 +const pin = ref('');
146 const disabled = ref(true); 128 const disabled = ref(true);
147 -// 过滤输入的数字 只能四位 129 +
130 +// 表单填写验证
131 +const form = ref(null);
132 +let valid = null;
133 +let submit = () => {
134 + valid = form.value.validate();
135 + valid
136 + .then(() => {
137 + form.value.submit();
138 + })
139 + .catch(error => {
140 + console.error(error);
141 + Toast({
142 + message: '请检查后再次提交',
143 + icon: 'cross',
144 + });
145 + })
146 +};
147 +
148 +/**
149 + * 手机号码校验
150 + * 函数返回 true 表示校验通过,false 表示不通过
151 + * @param {*} val
152 + */
153 +const validator = (val) => {
154 + let flag = false;
155 + // 简单判断手机号位数
156 + if (/1\d{10}/.test(val) && phone.value.length === 11) {
157 + disabled.value = false;
158 + flag = true;
159 + } else {
160 + disabled.value = true;
161 + flag = false;
162 + }
163 + return flag
164 +};
165 +
166 +// 过滤输入的验证码 只能四位
148 const formatter = (value) => value.substring(0, 4); 167 const formatter = (value) => value.substring(0, 4);
149 168
150 // 保存用户信息 169 // 保存用户信息
151 const onSubmit = (values) => { 170 const onSubmit = (values) => {
152 - axios.post('/srv/?f=shzl_comment&a=bind_phone&t=bind', 171 + axios.post('/srv/?a=c_auth', {
153 - qs.stringify({ 172 + user_name: values.user_name,
154 phone: values.phone, 173 phone: values.phone,
155 - code: values.code, 174 + pin: values.pin,
156 - })) 175 + })
157 .then(res => { 176 .then(res => {
158 if (res.data.code === 1) { 177 if (res.data.code === 1) {
159 - $router.push({ 178 + Toast.success('录入成功')
160 - path: '/' 179 + $router.go(-1);
161 - });
162 } else { 180 } else {
163 console.warn(res.data); 181 console.warn(res.data);
164 Toast({ 182 Toast({
...@@ -171,6 +189,9 @@ const onSubmit = (values) => { ...@@ -171,6 +189,9 @@ const onSubmit = (values) => {
171 console.error(err); 189 console.error(err);
172 }) 190 })
173 }; 191 };
192 +
193 +/****************************************/
194 +
174 </script> 195 </script>
175 196
176 <script> 197 <script>
...@@ -178,29 +199,15 @@ import mixin from 'common/mixin'; ...@@ -178,29 +199,15 @@ import mixin from 'common/mixin';
178 199
179 export default { 200 export default {
180 mixins: [mixin.init], 201 mixins: [mixin.init],
181 - data () { 202 + data() {
182 return { 203 return {
183 204
184 } 205 }
185 }, 206 },
186 - mounted () { 207 + mounted() {
187 208
188 }, 209 },
189 methods: { 210 methods: {
190 - submit () {
191 - let valid = this.$refs.form.validate();
192 - valid
193 - .then(() => {
194 - this.$refs.form.submit();
195 - })
196 - .catch(error => {
197 - console.error(error);
198 - this.$toast({
199 - message: '请检查后再次提交',
200 - icon: 'cross',
201 - });
202 - })
203 - }
204 } 211 }
205 } 212 }
206 </script> 213 </script>
......