Files
ipms-sjy/yudao-ui-admin-vue3/src/views/infra/codegen/components/GenInfoForm.vue

116 lines
2.5 KiB
Vue
Raw Normal View History

2022-07-18 19:06:37 +08:00
<script setup lang="ts">
import { PropType, reactive, watch } from 'vue'
import { required } from '@/utils/formRules'
import { CodegenTableVO } from '@/api/infra/codegen/types'
import { Form } from '@/components/Form'
import { useForm } from '@/hooks/web/useForm'
import { DICT_TYPE, getDictOptions } from '@/utils/dict'
const props = defineProps({
currentRow: {
type: Object as PropType<Nullable<CodegenTableVO>>,
default: () => null
}
})
const rules = reactive({
templateType: [required],
scene: [required],
moduleName: [required],
businessName: [required],
businessPackage: [required],
className: [required],
classComment: [required]
})
const schema = reactive<FormSchema[]>([
{
label: '生成模板',
field: 'templateType',
component: 'Select',
componentProps: {
options: getDictOptions(DICT_TYPE.INFRA_CODEGEN_TEMPLATE_TYPE)
},
colProps: {
span: 12
}
},
{
label: '生成场景',
field: 'scene',
component: 'Select',
componentProps: {
options: getDictOptions(DICT_TYPE.INFRA_CODEGEN_SCENE)
},
colProps: {
span: 12
}
},
{
label: '模块名',
field: 'moduleName',
component: 'Input',
2022-07-25 16:53:36 +08:00
labelMessage: '模块名,即一级目录,例如 system、infra、tool 等等',
2022-07-18 19:06:37 +08:00
colProps: {
span: 12
}
},
{
label: '业务名',
field: 'businessName',
component: 'Input',
2022-07-25 16:53:36 +08:00
labelMessage: '业务名,即二级目录,例如 user、permission、dict 等等',
2022-07-18 19:06:37 +08:00
colProps: {
span: 12
}
},
{
label: '类名称',
field: 'className',
component: 'Input',
2022-07-25 16:53:36 +08:00
labelMessage: '类名称首字母大写例如SysUser、SysMenu、SysDictData 等等',
2022-07-18 19:06:37 +08:00
colProps: {
span: 12
}
},
{
label: '类描述',
field: 'classComment',
component: 'Input',
2022-07-25 16:53:36 +08:00
labelMessage: '用作类描述,例如 用户',
2022-07-18 19:06:37 +08:00
colProps: {
span: 12
}
},
{
label: '上级菜单',
field: 'parentMenuId',
component: 'Input',
2022-07-25 16:53:36 +08:00
labelMessage: '分配到指定菜单下,例如 系统管理',
2022-07-18 19:06:37 +08:00
colProps: {
span: 12
}
}
])
const { register, methods, elFormRef } = useForm({
schema
})
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>