ColumInfoForm.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <template>
  2. <el-table ref="dragTable" :data="formData" row-key="columnId" :max-height="tableHeight">
  3. <el-table-column
  4. label="字段列名"
  5. prop="columnName"
  6. min-width="10%"
  7. :show-overflow-tooltip="true"
  8. />
  9. <el-table-column label="字段描述" min-width="10%">
  10. <template #default="scope">
  11. <el-input v-model="scope.row.columnComment" />
  12. </template>
  13. </el-table-column>
  14. <el-table-column
  15. label="物理类型"
  16. prop="dataType"
  17. min-width="10%"
  18. :show-overflow-tooltip="true"
  19. />
  20. <el-table-column label="Java类型" min-width="11%">
  21. <template #default="scope">
  22. <el-select v-model="scope.row.javaType">
  23. <el-option label="Long" value="Long" />
  24. <el-option label="String" value="String" />
  25. <el-option label="Integer" value="Integer" />
  26. <el-option label="Double" value="Double" />
  27. <el-option label="BigDecimal" value="BigDecimal" />
  28. <el-option label="LocalDateTime" value="LocalDateTime" />
  29. <el-option label="Boolean" value="Boolean" />
  30. </el-select>
  31. </template>
  32. </el-table-column>
  33. <el-table-column label="java属性" min-width="10%">
  34. <template #default="scope">
  35. <el-input v-model="scope.row.javaField" />
  36. </template>
  37. </el-table-column>
  38. <el-table-column label="插入" min-width="4%">
  39. <template #default="scope">
  40. <el-checkbox true-label="true" false-label="false" v-model="scope.row.createOperation" />
  41. </template>
  42. </el-table-column>
  43. <el-table-column label="编辑" min-width="4%">
  44. <template #default="scope">
  45. <el-checkbox true-label="true" false-label="false" v-model="scope.row.updateOperation" />
  46. </template>
  47. </el-table-column>
  48. <el-table-column label="列表" min-width="4%">
  49. <template #default="scope">
  50. <el-checkbox
  51. true-label="true"
  52. false-label="false"
  53. v-model="scope.row.listOperationResult"
  54. />
  55. </template>
  56. </el-table-column>
  57. <el-table-column label="查询" min-width="4%">
  58. <template #default="scope">
  59. <el-checkbox true-label="true" false-label="false" v-model="scope.row.listOperation" />
  60. </template>
  61. </el-table-column>
  62. <el-table-column label="查询方式" min-width="10%">
  63. <template #default="scope">
  64. <el-select v-model="scope.row.listOperationCondition">
  65. <el-option label="=" value="=" />
  66. <el-option label="!=" value="!=" />
  67. <el-option label=">" value=">" />
  68. <el-option label=">=" value=">=" />
  69. <el-option label="<" value="<>" />
  70. <el-option label="<=" value="<=" />
  71. <el-option label="LIKE" value="LIKE" />
  72. <el-option label="BETWEEN" value="BETWEEN" />
  73. </el-select>
  74. </template>
  75. </el-table-column>
  76. <el-table-column label="允许空" min-width="5%">
  77. <template #default="scope">
  78. <el-checkbox true-label="true" false-label="false" v-model="scope.row.nullable" />
  79. </template>
  80. </el-table-column>
  81. <el-table-column label="显示类型" min-width="12%">
  82. <template #default="scope">
  83. <el-select v-model="scope.row.htmlType">
  84. <el-option label="文本框" value="input" />
  85. <el-option label="文本域" value="textarea" />
  86. <el-option label="下拉框" value="select" />
  87. <el-option label="单选框" value="radio" />
  88. <el-option label="复选框" value="checkbox" />
  89. <el-option label="日期控件" value="datetime" />
  90. <el-option label="图片上传" value="imageUpload" />
  91. <el-option label="文件上传" value="fileUpload" />
  92. <el-option label="富文本控件" value="editor" />
  93. </el-select>
  94. </template>
  95. </el-table-column>
  96. <el-table-column label="字典类型" min-width="12%">
  97. <template #default="scope">
  98. <el-select v-model="scope.row.dictType" clearable filterable placeholder="请选择">
  99. <el-option
  100. v-for="dict in dictOptions"
  101. :key="dict.id"
  102. :label="dict.name"
  103. :value="dict.type"
  104. />
  105. </el-select>
  106. </template>
  107. </el-table-column>
  108. <el-table-column label="示例" min-width="10%">
  109. <template #default="scope">
  110. <el-input v-model="scope.row.example" />
  111. </template>
  112. </el-table-column>
  113. </el-table>
  114. </template>
  115. <script setup lang="ts">
  116. import { PropType } from 'vue'
  117. import { CodegenColumnVO } from '@/api/infra/codegen/types'
  118. import { DictTypeVO, listSimpleDictType } from '@/api/system/dict/dict.type'
  119. const emits = defineEmits(['update:columns'])
  120. const props = defineProps({
  121. columns: {
  122. type: Array as unknown as PropType<CodegenColumnVO[]>,
  123. default: () => null
  124. }
  125. })
  126. const formData = ref<CodegenColumnVO[]>([])
  127. const tableHeight = document.documentElement.scrollHeight - 350 + 'px'
  128. /** 查询字典下拉列表 */
  129. const dictOptions = ref<DictTypeVO[]>()
  130. const getDictOptions = async () => {
  131. dictOptions.value = await listSimpleDictType()
  132. }
  133. onMounted(async () => {
  134. await getDictOptions()
  135. })
  136. watch(
  137. () => props.columns,
  138. (columns) => {
  139. if (!columns) return
  140. formData.value = columns
  141. },
  142. {
  143. deep: true,
  144. immediate: true
  145. }
  146. )
  147. watch(
  148. () => formData.value,
  149. (val) => {
  150. emits('update:columns', val)
  151. }
  152. )
  153. </script>