hookehuyr

fix 控件输入手机号长度校验

...@@ -16,8 +16,9 @@ ...@@ -16,8 +16,9 @@
16 <van-form ref="form" @submit="onSubmit"> 16 <van-form ref="form" @submit="onSubmit">
17 <van-cell-group inset style="border: 1px solid #EAEAEA;"> 17 <van-cell-group inset style="border: 1px solid #EAEAEA;">
18 <van-field v-if="use_widget" v-model="phone" name="phone" label="手机号" placeholder="手机号" readonly clickable 18 <van-field v-if="use_widget" v-model="phone" name="phone" label="手机号" placeholder="手机号" readonly clickable
19 + :rules="[{ validator, message: '请输入正确手机号' }]"
19 @touchstart.stop="showKeyboard" /> 20 @touchstart.stop="showKeyboard" />
20 - <van-field v-else v-model="phone" name="phone" label="手机号" placeholder="手机号" 21 + <van-field v-else v-model="phone" name="validator" label="手机号" placeholder="手机号"
21 :rules="[{ validator, message: '请输入正确手机号' }]" /> 22 :rules="[{ validator, message: '请输入正确手机号' }]" />
22 <van-field v-model="code" center clearable name="code" type="digit" label="短信验证码" placeholder="请输入短信验证码" 23 <van-field v-model="code" center clearable name="code" type="digit" label="短信验证码" placeholder="请输入短信验证码"
23 :formatter="formatter" :rules="[{ required: true, message: '请填写验证码' }]"> 24 :formatter="formatter" :rules="[{ required: true, message: '请填写验证码' }]">
...@@ -31,12 +32,12 @@ ...@@ -31,12 +32,12 @@
31 </template> 32 </template>
32 </van-field> 33 </van-field>
33 </van-cell-group> 34 </van-cell-group>
34 - <div class="btn" @click="submit">
35 - 登&nbsp;录
36 - </div>
37 </van-form> 35 </van-form>
38 </van-config-provider> 36 </van-config-provider>
39 </div> 37 </div>
38 + <div class="btn" @click="submit">
39 + 登&nbsp;录
40 + </div>
40 41
41 <van-number-keyboard v-model="phone" :show="keyboard_show" :maxlength="11" @blur="onBlur" /> 42 <van-number-keyboard v-model="phone" :show="keyboard_show" :maxlength="11" @blur="onBlur" />
42 43
...@@ -51,6 +52,7 @@ ...@@ -51,6 +52,7 @@
51 52
52 <script setup> 53 <script setup>
53 import Cookies from 'js-cookie' 54 import Cookies from 'js-cookie'
55 +import ImageSliderVerify from '@/components/ImageSliderVerify/index.vue'
54 56
55 import { ref, onMounted } from 'vue'; 57 import { ref, onMounted } from 'vue';
56 import { Toast } from 'vant' 58 import { Toast } from 'vant'
...@@ -60,9 +62,12 @@ import logo_image from '@images/denglu-top@2x.gif' ...@@ -60,9 +62,12 @@ import logo_image from '@images/denglu-top@2x.gif'
60 import { wxInfo } from '@/utils/tools'; 62 import { wxInfo } from '@/utils/tools';
61 63
62 import { useCountDown } from '@vant/use'; 64 import { useCountDown } from '@vant/use';
65 +import { useTitle } from '@/utils/generatePackage'
63 66
64 const $route = useRoute(); 67 const $route = useRoute();
65 const $router = useRouter(); 68 const $router = useRouter();
69 +// 设置页面标题
70 +useTitle($route.meta.title)
66 71
67 // 判断是否显示控件 72 // 判断是否显示控件
68 let use_widget = ref(true); 73 let use_widget = ref(true);
...@@ -93,6 +98,8 @@ if (import.meta.env.DEV) { ...@@ -93,6 +98,8 @@ if (import.meta.env.DEV) {
93 code.value = import.meta.env.VITE_PIN 98 code.value = import.meta.env.VITE_PIN
94 } 99 }
95 100
101 +const form = ref(null);
102 +
96 onMounted(() => { 103 onMounted(() => {
97 /** 104 /**
98 * 判断微信环境看是否弹出控件框 105 * 判断微信环境看是否弹出控件框
...@@ -116,6 +123,21 @@ onMounted(() => { ...@@ -116,6 +123,21 @@ onMounted(() => {
116 } 123 }
117 }) 124 })
118 125
126 +const submit = () => {
127 + let valid = form.value.validate();
128 + valid
129 + .then(() => {
130 + form.value.submit();
131 + })
132 + .catch(error => {
133 + console.error(error);
134 + Toast({
135 + message: '请检查后再次提交',
136 + icon: 'cross',
137 + });
138 + })
139 +}
140 +
119 // 手机号输入控件控制 141 // 手机号输入控件控制
120 const keyboard_show = ref(false); 142 const keyboard_show = ref(false);
121 const showKeyboard = () => { // 弹出数字弹框 143 const showKeyboard = () => { // 弹出数字弹框
...@@ -214,51 +236,18 @@ const themeVars = { ...@@ -214,51 +236,18 @@ const themeVars = {
214 buttonPrimaryColor: '#713610', 236 buttonPrimaryColor: '#713610',
215 CellVerticalPadding: '14px' 237 CellVerticalPadding: '14px'
216 }; 238 };
217 -</script>
218 -
219 -<script>
220 -// FIXME: VUE2写法
221 -import mixin from 'common/mixin';
222 239
223 -import ImageSliderVerify from '@/components/ImageSliderVerify/index.vue' 240 +// 滑块验证成功后回调
224 - 241 +const sliderShow = ref(false);
225 -export default { 242 +const handleConfirm = (val) => {
226 - components: { ImageSliderVerify }, 243 + sliderShow.value = false
227 - mixins: [mixin.init], 244 + console.warn('验证成功');
228 - data() { 245 +}
229 - return { 246 +const handleClose = () => {
230 - sliderShow: false, 247 + sliderShow.value = false
231 - } 248 +}
232 - }, 249 +const imageVerify = () => {
233 - mounted() { 250 + sliderShow.value = true;
234 - },
235 - methods: {
236 - submit() {
237 - let valid = this.$refs.form.validate();
238 - valid
239 - .then(() => {
240 - this.$refs.form.submit();
241 - })
242 - .catch(error => {
243 - console.error(error);
244 - this.$toast({
245 - message: '请检查后再次提交',
246 - icon: 'cross',
247 - });
248 - })
249 - },
250 - // 滑块验证成功后回调
251 - handleConfirm (val) {
252 - this.sliderShow = false
253 - console.warn('验证成功');
254 - },
255 - handleClose () {
256 - this.sliderShow = false
257 - },
258 - imageVerify () {
259 - this.sliderShow = true;
260 - }
261 - },
262 } 251 }
263 </script> 252 </script>
264 253
...@@ -284,14 +273,14 @@ body { ...@@ -284,14 +273,14 @@ body {
284 .login-section { 273 .login-section {
285 274
286 // background-color: #FAFAFA; 275 // background-color: #FAFAFA;
287 - .btn { 276 +}
288 - margin: 16px; 277 +.btn {
289 - background-color: @base-color; 278 + margin: 16px;
290 - text-align: center; 279 + background-color: @base-color;
291 - color: #713610; 280 + text-align: center;
292 - font-size: 2.25vh; 281 + color: #713610;
293 - padding: 1.5vh; 282 + font-size: 2.25vh;
294 - border-radius: 5px; 283 + padding: 1.5vh;
295 - } 284 + border-radius: 5px;
296 } 285 }
297 </style> 286 </style>
......