123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- <script setup lang="ts">
- import { Form, FormSchema } from '@/components/Form'
- import { useForm } from '@/hooks/web/useForm'
- import { PropType, reactive, watch } from 'vue'
- import { DepartmentUserItem } from '@/api/department/types'
- import { useValidator } from '@/hooks/web/useValidator'
- const { required } = useValidator()
- const props = defineProps({
- currentRow: {
- type: Object as PropType<DepartmentUserItem>,
- default: () => undefined
- },
- formSchema: {
- type: Array as PropType<FormSchema[]>,
- default: () => []
- }
- })
- const rules = reactive({
- username: [required()],
- account: [required()],
- 'department.id': [required()],
- role: [required()],
- email: [required()],
- createTime: [required()]
- })
- const { formRegister, formMethods } = useForm()
- const { setValues, getFormData, getElFormExpose } = formMethods
- const submit = async () => {
- const elForm = await getElFormExpose()
- const valid = await elForm?.validate().catch((err) => {
- console.log(err)
- })
- if (valid) {
- const formData = getFormData()
- return formData
- }
- }
- watch(
- () => props.currentRow,
- (currentRow) => {
- if (!currentRow) return
- setValues(currentRow)
- },
- {
- deep: true,
- immediate: true
- }
- )
- defineExpose({
- submit
- })
- </script>
- <template>
- <Form :rules="rules" @register="formRegister" :schema="formSchema" />
- </template>
|