BasicInfoForm.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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 placeholder="请输入仓库名称" v-model="formData.tableName" />
  7. </el-form-item>
  8. </el-col>
  9. <el-col :span="12">
  10. <el-form-item label="表描述" prop="tableComment">
  11. <el-input placeholder="请输入" v-model="formData.tableComment" />
  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 icon="ep:question-filled" class="" />
  24. </el-tooltip>
  25. </span>
  26. </template>
  27. <el-input placeholder="请输入" v-model="formData.className" />
  28. </el-form-item>
  29. </el-col>
  30. <el-col :span="12">
  31. <el-form-item label="作者" prop="author">
  32. <el-input placeholder="请输入" v-model="formData.author" />
  33. </el-form-item>
  34. </el-col>
  35. <el-col :span="24">
  36. <el-form-item label="备注" prop="remark">
  37. <el-input type="textarea" :rows="3" v-model="formData.remark" />
  38. </el-form-item>
  39. </el-col>
  40. </el-row>
  41. </el-form>
  42. </template>
  43. <script setup lang="ts">
  44. import { CodegenTableVO } from '@/api/infra/codegen/types'
  45. import { PropType } from 'vue'
  46. const emits = defineEmits(['update:basicInfo'])
  47. const props = defineProps({
  48. table: {
  49. type: Object as PropType<Nullable<CodegenTableVO>>,
  50. default: () => null
  51. }
  52. })
  53. const formRef = ref()
  54. const formData = ref({
  55. tableName: '',
  56. tableComment: '',
  57. className: '',
  58. author: '',
  59. remark: ''
  60. })
  61. const rules = reactive({
  62. tableName: [required],
  63. tableComment: [required],
  64. className: [required],
  65. author: [required]
  66. })
  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. watch(
  79. () => formData.value,
  80. (val) => {
  81. emits('update:basicInfo', val)
  82. }
  83. )
  84. defineExpose({
  85. validate: async () => unref(formRef)?.validate()
  86. })
  87. </script>