1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- <script setup lang="ts">
- import { Form } from '@/components/Form'
- import { useForm } from '@/hooks/web/useForm'
- import { PropType, reactive, watch } from 'vue'
- import { TableData } from '@/api/table/types'
- import { useValidator } from '@/hooks/web/useValidator'
- import { FormSchema } from '@/types/form'
- const { required } = useValidator()
- const props = defineProps({
- currentRow: {
- type: Object as PropType<Nullable<TableData>>,
- default: () => null
- },
- formSchema: {
- type: Array as PropType<FormSchema[]>,
- default: () => []
- }
- })
- const rules = reactive({
- title: [required()],
- author: [required()],
- importance: [required()],
- pageviews: [required()],
- display_time: [required()],
- content: [required()]
- })
- const { register, methods, elFormRef } = useForm({
- schema: props.formSchema
- })
- watch(
- () => props.currentRow,
- (currentRow) => {
- if (!currentRow) return
- const { setValues } = methods
- setValues(currentRow)
- },
- {
- deep: true,
- immediate: true
- }
- )
- defineExpose({
- elFormRef,
- getFormData: methods.getFormData
- })
- </script>
- <template>
- <Form :rules="rules" @register="register" />
- </template>
|