Showing
1 changed file
with
38 additions
and
49 deletions
| ... | @@ -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 | - 登 录 | ||
| 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 | + 登 录 | ||
| 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], | ||
| 228 | - data() { | ||
| 229 | - return { | ||
| 230 | - sliderShow: false, | ||
| 231 | - } | ||
| 232 | - }, | ||
| 233 | - mounted() { | ||
| 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('验证成功'); | 244 | console.warn('验证成功'); |
| 254 | - }, | 245 | +} |
| 255 | - handleClose () { | 246 | +const handleClose = () => { |
| 256 | - this.sliderShow = false | 247 | + sliderShow.value = false |
| 257 | - }, | 248 | +} |
| 258 | - imageVerify () { | 249 | +const imageVerify = () => { |
| 259 | - this.sliderShow = true; | 250 | + sliderShow.value = true; |
| 260 | - } | ||
| 261 | - }, | ||
| 262 | } | 251 | } |
| 263 | </script> | 252 | </script> |
| 264 | 253 | ||
| ... | @@ -284,7 +273,8 @@ body { | ... | @@ -284,7 +273,8 @@ body { |
| 284 | .login-section { | 273 | .login-section { |
| 285 | 274 | ||
| 286 | // background-color: #FAFAFA; | 275 | // background-color: #FAFAFA; |
| 287 | - .btn { | 276 | +} |
| 277 | +.btn { | ||
| 288 | margin: 16px; | 278 | margin: 16px; |
| 289 | background-color: @base-color; | 279 | background-color: @base-color; |
| 290 | text-align: center; | 280 | text-align: center; |
| ... | @@ -292,6 +282,5 @@ body { | ... | @@ -292,6 +282,5 @@ body { |
| 292 | font-size: 2.25vh; | 282 | font-size: 2.25vh; |
| 293 | padding: 1.5vh; | 283 | padding: 1.5vh; |
| 294 | border-radius: 5px; | 284 | border-radius: 5px; |
| 295 | - } | ||
| 296 | } | 285 | } |
| 297 | </style> | 286 | </style> | ... | ... |
-
Please register or login to post a comment