BasicInfoForm.vue 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <template>
  2. <el-form ref="formRef" :model="formData" :rules="rules" label-width="120px">
  3. <el-row>
  4. <el-col :span="12">
  5. <el-form-item label="表名称" prop="tableName">
  6. <el-input v-model="formData.tableName" placeholder="请输入仓库名称" />
  7. </el-form-item>
  8. </el-col>
  9. <el-col :span="12">
  10. <el-form-item label="表描述" prop="tableComment">
  11. <el-input v-model="formData.tableComment" placeholder="请输入" />
  12. </el-form-item>
  13. </el-col>
  14. <el-col :span="12">
  15. <el-form-item prop="className">
  16. <template #label>
  17. <span>
  18. 实体类名称
  19. <el-tooltip
  20. content="默认去除表名的前缀。如果存在重复,则需要手动添加前缀,避免 MyBatis 报 Alias 重复的问题。"
  21. placement="top"
  22. >
  23. <Icon class="" icon="ep:question-filled" />
  24. </el-tooltip>
  25. </span>
  26. </template>
  27. <el-input v-model="formData.className" placeholder="请输入" />
  28. </el-form-item>
  29. </el-col>
  30. <el-col :span="12">
  31. <el-form-item label="作者" prop="author">
  32. <el-input v-model="formData.author" placeholder="请输入" />
  33. </el-form-item>
  34. </el-col>
  35. <el-col :span="24">
  36. <el-form-item label="备注" prop="remark">
  37. <el-input v-model="formData.remark" :rows="3" type="textarea" />
  38. </el-form-item>
  39. </el-col>
  40. </el-row>
  41. </el-form>
  42. </template>
  43. <script lang="ts" name="InfraCodegenBasicInfoForm" setup>
  44. import * as CodegenApi from '@/api/infra/codegen'
  45. import { PropType } from 'vue'
  46. const props = defineProps({
  47. table: {
  48. type: Object as PropType<Nullable<CodegenApi.CodegenTableVO>>,
  49. default: () => null
  50. }
  51. })
  52. const formRef = ref()
  53. const formData = ref({
  54. tableName: '',
  55. tableComment: '',
  56. className: '',
  57. author: '',
  58. remark: ''
  59. })
  60. const rules = reactive({
  61. tableName: [required],
  62. tableComment: [required],
  63. className: [required],
  64. author: [required]
  65. })
  66. /** 监听 table 属性,复制给 formData 属性 */
  67. watch(
  68. () => props.table,
  69. (table) => {
  70. if (!table) return
  71. formData.value = table
  72. },
  73. {
  74. deep: true,
  75. immediate: true
  76. }
  77. )
  78. defineExpose({
  79. validate: async () => unref(formRef)?.validate()
  80. })
  81. </script>