|
@@ -1,9 +1,9 @@
|
|
|
<template>
|
|
|
<el-form ref="formRef" :model="form" :rules="rules" label-width="auto" style="max-width: 600px">
|
|
|
- <el-form-item label="Activity name">
|
|
|
+ <el-form-item label="Activity name" prop="name">
|
|
|
<el-input v-model="form.name" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="Activity zone">
|
|
|
+ <el-form-item label="Activity zone" prop="region">
|
|
|
<el-select v-model="form.region" placeholder="please select your zone">
|
|
|
<el-option label="1" value="shanghai" />
|
|
|
<el-option label="2" value="beijing" />
|
|
@@ -34,21 +34,20 @@
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
import { ref, defineExpose, inject, watch } from 'vue'
|
|
|
-import { get, set } from 'lodash'
|
|
|
-import { ElMessage } from 'element-plus'
|
|
|
|
|
|
const formRef = ref(null)
|
|
|
+const myEmit = defineEmits(['form-valid'])
|
|
|
/*获取父组件传递过来的数据,调整完毕,传给父组件实现双向绑定 start */
|
|
|
const dyVueForm = inject('dyVueForm')
|
|
|
-const form = ref(get(dyVueForm.value, 'dy', dyVueForm.value))
|
|
|
-set(dyVueForm.value, 'dy', form.value)
|
|
|
+const form = ref(dyVueForm.value.dy || {})
|
|
|
+
|
|
|
watch(
|
|
|
- () => get(dyVueForm.value, 'dy'),
|
|
|
+ () => dyVueForm.value.dy,
|
|
|
vl => (form.value = vl)
|
|
|
)
|
|
|
watch(
|
|
|
() => form.value,
|
|
|
- v => set(dyVueForm.value, 'dy', v)
|
|
|
+ v => (dyVueForm.value.dy = v)
|
|
|
)
|
|
|
/*获取父组件传递过来的数据,调整完毕,传给父组件实现双向绑定 start*/
|
|
|
|
|
@@ -69,31 +68,27 @@ const rules = ref({
|
|
|
]
|
|
|
})
|
|
|
|
|
|
+/**
|
|
|
+ * 当前表单如果没有必填校验,则可以去掉校验规则
|
|
|
+ * 直接通过myEmit('form-valid', form.value)将值传给父组件
|
|
|
+ */
|
|
|
const validateForm = () => {
|
|
|
- try {
|
|
|
- const formValidate = formRef.value
|
|
|
- formValidate.validate((valid: any) => {
|
|
|
- if (!valid) {
|
|
|
- throw new Error('请完善表单信息')
|
|
|
- }
|
|
|
- return Promise.resolve(true)
|
|
|
- })
|
|
|
- } catch (e) {
|
|
|
- ElMessage({
|
|
|
- message: e.message,
|
|
|
- type: 'error'
|
|
|
- })
|
|
|
- return Promise.reject(false)
|
|
|
- }
|
|
|
+ const formValidate = formRef.value
|
|
|
+ formValidate.validate((valid: any) => {
|
|
|
+ if (!valid) {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ myEmit('form-valid')
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
-const getData = async () => {
|
|
|
- await validateForm()
|
|
|
+const getComponentData = () => {
|
|
|
return form.value
|
|
|
}
|
|
|
|
|
|
defineExpose({
|
|
|
// 把数据暴露给父节点使用
|
|
|
- getData
|
|
|
+ validateForm,
|
|
|
+ getComponentData
|
|
|
})
|
|
|
</script>
|