hookehuyr

✨ feat(手机号组件): 判断必填项字段调整修复

1 <!-- 1 <!--
2 * @Date: 2022-09-02 10:46:03 2 * @Date: 2022-09-02 10:46:03
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2022-09-07 16:03:00 4 + * @LastEditTime: 2022-11-18 11:08:29
5 * @FilePath: /data-table/src/components/PhoneField/index.vue 5 * @FilePath: /data-table/src/components/PhoneField/index.vue
6 * @Description: 文件描述 6 * @Description: 文件描述
7 --> 7 -->
8 <template> 8 <template>
9 <div class="phone-field-page"> 9 <div class="phone-field-page">
10 - <div class="label">{{ item.component_props.label }}<span v-if="item.component_props.required">&nbsp;*</span></div> 10 + <div class="label">
11 - <van-field v-model="item.value" :name="item.name" type="digit" maxlength="11" :placeholder="item.component_props.placeholder" 11 + {{ item.component_props.label }}
12 - :rules="rules" :required="item.component_props.required" :readonly="readonly" @touchstart.stop="show = true" :border="false"> 12 + <span v-if="item.component_props.required">&nbsp;*</span>
13 + </div>
14 + <van-field
15 + v-model="item.value"
16 + :name="item.name"
17 + type="digit"
18 + maxlength="11"
19 + :placeholder="item.component_props.placeholder"
20 + :rules="rules"
21 + :required="item.component_props.required"
22 + :readonly="readonly"
23 + @touchstart.stop="show = true"
24 + :border="false"
25 + >
13 </van-field> 26 </van-field>
14 - <van-number-keyboard v-model="item.value" :show="show" :maxlength="11" @blur="show = false" /> 27 + <van-number-keyboard
28 + v-model="item.value"
29 + :show="show"
30 + :maxlength="11"
31 + @blur="show = false"
32 + />
15 </div> 33 </div>
16 </template> 34 </template>
17 35
18 <script setup> 36 <script setup>
19 -import { wxInfo } from '@/utils/tools' 37 +import { wxInfo } from "@/utils/tools";
20 38
21 const props = defineProps({ 39 const props = defineProps({
22 - item: Object 40 + item: Object,
23 }); 41 });
24 42
25 // web端判断 43 // web端判断
26 -const readonly = computed(() => wxInfo().isMobile) 44 +const readonly = computed(() => wxInfo().isMobile);
27 45
28 // 校验函数返回 true 表示校验通过,false 表示不通过 46 // 校验函数返回 true 表示校验通过,false 表示不通过
29 const validator = (val) => { 47 const validator = (val) => {
30 - if (!props.item.required) { // 非必填 48 + if (!props.item.component_props.required) {
31 - return true 49 + // 非必填
50 + return true;
32 } else { 51 } else {
33 return /1\d{10}/.test(val); 52 return /1\d{10}/.test(val);
34 } 53 }
...@@ -36,25 +55,25 @@ const validator = (val) => { ...@@ -36,25 +55,25 @@ const validator = (val) => {
36 // 错误提示文案 55 // 错误提示文案
37 const validatorMessage = (val, rule) => { 56 const validatorMessage = (val, rule) => {
38 if (!val) { 57 if (!val) {
39 - return '手机号码不能为空'; 58 + return "手机号码不能为空";
40 } else if (!/1\d{10}/.test(val)) { 59 } else if (!/1\d{10}/.test(val)) {
41 - return '请输入正确手机号码'; 60 + return "请输入正确手机号码";
42 } 61 }
43 -} 62 +};
44 -const rules = [{ validator, message: validatorMessage }] 63 +const rules = [{ validator, message: validatorMessage }];
45 64
46 const show = ref(false); 65 const show = ref(false);
47 </script> 66 </script>
48 67
49 <style lang="less" scoped> 68 <style lang="less" scoped>
50 - .phone-field-page { 69 +.phone-field-page {
51 - .label { 70 + .label {
52 - padding: 1rem 1rem 0 1rem; 71 + padding: 1rem 1rem 0 1rem;
53 - font-size: 0.9rem; 72 + font-size: 0.9rem;
54 - font-weight: bold; 73 + font-weight: bold;
55 - span { 74 + span {
56 - color: red; 75 + color: red;
57 - }
58 } 76 }
59 } 77 }
78 +}
60 </style> 79 </style>
......