lingdu hace 1 semana
padre
commit
4c754f2f7b

+ 7 - 2
src/view/fenghui/form.vue

@@ -5,7 +5,7 @@
         <div>
             <span style="font-size: 16px;margin-left: 10px;" v-text="lang[langType].signUp"></span>
         </div>
-        <van-form @submit="onSubmit" label-width="8em">
+        <van-form ref="form" @submit="onSubmit" label-width="8em">
             <!-- 国家/地区 -->
             <van-field input-align="right"
                 :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].countryRegionContent }]" required
@@ -288,7 +288,7 @@
     </div>
 </template>
 <script setup>
-import { defineEmits, defineProps, reactive, ref, computed } from 'vue';
+import { defineEmits, defineProps, reactive, ref, computed, defineExpose } from 'vue';
 import { showLoadingToast, showToast, showDialog } from 'vant';
 import { saveData } from '@/api/2025.js';
 import config from '@/config/index.js';
@@ -301,6 +301,7 @@ const emits = defineEmits(['closeComponent']);
 const formData = reactive({})
 const cardTypeList = computed(() => lang[props.langType].cardTypeList)
 const unitTypeList = computed(() => lang[props.langType].foreignCountryUnitType)
+const form = ref(null);
 const showBirthday = ref(false)
 const showReachTime = ref(false)
 const showLeavingTime = ref(false)
@@ -313,6 +314,9 @@ const onClickLeft = () => {
     emits('closeComponent');
 };
 
+const reset = () => {
+   form.value.resetValidation(); 
+}
 const createTextDate = values => values.slice(0, 3).join('-') + ' ' + values.slice(3).join(':');
 const packerConfirm = (values) => {
     showBirthday.value = false;
@@ -491,5 +495,6 @@ const onSubmit = () => {
         showToast(lang[props.langType].registrationError);
     });
 }
+defineExpose({ reset })
 </script>
 <style lang="scss"></style>

+ 9 - 2
src/view/fenghui/form1.vue

@@ -5,7 +5,7 @@
         <div>
             <span style="font-size: 16px;margin-left: 10px;" v-text="lang[langType].signUpZH"></span>
         </div>
-        <van-form @submit="onSubmit" label-width="8em">
+        <van-form ref="form" @submit="onSubmit" label-width="8em">
             <!-- 姓名 -->
             <van-field input-align="right"
                 :rules="[{ required: formData, trigger: 'onBlur', message: lang[langType].nameContent }]" required
@@ -278,7 +278,7 @@
     </div>
 </template>
 <script setup>
-import { defineEmits, defineProps, reactive, ref, computed } from 'vue';
+import { defineEmits, defineProps, reactive, ref, computed, defineExpose } from 'vue';
 import { showLoadingToast, showToast, showDialog } from 'vant';
 import { saveData } from '@/api/2025.js';
 import config from '@/config/index.js';
@@ -297,8 +297,13 @@ const showUnitType = ref(false)
 const showLeavingTime = ref(false)
 const showCardType = ref(false)
 const showCheckOutTime = ref(false)
+const form = ref(null);
 const photo = ref([]);
 
+const reset = () => {
+   form.value.resetFields(); 
+}
+
 const onClickLeft = () => {
     emits('closeComponent');
 };
@@ -479,4 +484,6 @@ const onSubmit = () => {
         showToast(lang[props.langType].registrationError);
     });
 }
+
+defineExpose({ reset })
 </script>

+ 8 - 2
src/view/fenghui/form2.vue

@@ -6,7 +6,7 @@
         <div>
             <span style="font-size: 16px;margin-left: 10px;" v-text="lang[langType].signUpWK"></span>
         </div>
-        <van-form @submit="onSubmit" label-width="8em">
+        <van-form ref="form" @submit="onSubmit" label-width="8em">
             <!-- 姓名 -->
             <van-field input-align="right"
                 :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].nameContent }]" required
@@ -82,7 +82,7 @@
     </div>
 </template>
 <script setup>
-import { defineEmits, defineProps, reactive, ref, computed } from 'vue';
+import { defineEmits, defineProps, reactive, ref, computed, defineExpose } from 'vue';
 import { showLoadingToast, showToast, showDialog } from 'vant';
 import { saveData } from '@/api/2025.js';
 import config from '@/config/index.js';
@@ -95,8 +95,13 @@ const emits = defineEmits(['closeComponent']);
 const formData = reactive({})
 const unitTypeList = computed(() => lang[props.langType].workGroup)
 const showUnitType = ref(false)
+const form = ref(null); // 引入子组件的实例,用于调用子组件的方法
 const photo = ref([]);
 
+const reset = () => {
+   form.value.resetFields(); 
+}
+
 const onClickLeft = () => {
     emits('closeComponent');
 };
@@ -184,5 +189,6 @@ const onSubmit = () => {
         showToast(lang[props.langType].registrationError);
     });
 }
+defineExpose({ reset })
 </script>
 <style lang="scss"></style>

+ 13 - 3
src/view/fenghui/index.vue

@@ -12,9 +12,9 @@
         </div>
         <Introduction v-if="!componentId" :langType="langSelect" @checkVerificationCode="checkVerificationCode" />
         <!-- 动态组件 -->
-        <Fore25 v-if="componentId === 'fore25'" :langType="langSelect" @closeComponent="closeComponent" />
-        <Chin25 v-if="componentId === 'chin25'" :langType="langSelect" @closeComponent="closeComponent" />
-        <Work25 v-if="componentId === 'work25'" :langType="langSelect" @closeComponent="closeComponent" />
+        <Fore25 ref="fore25" v-if="componentId === 'fore25'" :langType="langSelect" @closeComponent="closeComponent" />
+        <Chin25 ref="chin25" v-if="componentId === 'chin25'" :langType="langSelect" @closeComponent="closeComponent" />
+        <Work25 ref="work25" v-if="componentId === 'work25'" :langType="langSelect" @closeComponent="closeComponent" />
     </div>
 </template>
 <script setup>
@@ -27,6 +27,9 @@ import Work25 from './form2.vue';
 const langSelect = ref(localStorage.getItem('langSelect') || 'zh');
 const componentId = ref('');
 const showLange = ref(false);
+const fore25 = ref(null); // 引入子组件的实例,用于调用子组件的方法
+const chin25 = ref(null); // 引入子组件的实例,用于调用子组件的方法
+const work25 = ref(null); // 引入子组件的实例,用于调用子组件的方法
 
 const langObj = [
     { text: '中文', value: 'zh' },
@@ -49,6 +52,13 @@ const langChange = ({ selectedValues }) => {
     localStorage.setItem('langSelect', selectedValues[0]);
     // const cardTypeList = ref(lang.value[langSelect.value].cardTypeList)
     // const countryOrRegionList = ref(lang.value[langSelect.value].countryOrRegionList)
+    if (componentId.value === 'fore25') {
+        fore25.value.reset(); // 调用子组件的方法 
+    } else if (componentId.value === 'chin25') {
+        chin25.value.reset(); // 调用子组件的方法 
+    } else if (componentId.value === 'work25') {
+        work25.value.reset(); // 调用子组件的方法
+    }
     showLange.value = false;
 };