CloumInfoForm.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <script setup lang="ts">
  2. import { onMounted, PropType, ref } from 'vue'
  3. import { ElInput, ElSelect, ElOption } from 'element-plus'
  4. import { CodegenColumnVO } from '@/api/infra/codegen/types'
  5. import { listSimpleDictTypeApi } from '@/api/system/dict/dict.type'
  6. import { DictTypeVO } from '@/api/system/dict/types'
  7. const props = defineProps({
  8. info: {
  9. type: Array as unknown as PropType<CodegenColumnVO[]>,
  10. default: () => null
  11. }
  12. })
  13. /** 查询字典下拉列表 */
  14. const dictOptions = ref<DictTypeVO[]>()
  15. const getDictOptions = async () => {
  16. const res = await listSimpleDictTypeApi()
  17. dictOptions.value = res
  18. }
  19. onMounted(async () => {
  20. await getDictOptions()
  21. })
  22. defineExpose({
  23. info: props.info
  24. })
  25. </script>
  26. <template>
  27. <vxe-table ref="dragTable" :data="info" stripe :column-config="{ resizable: true }">
  28. <vxe-column title="字段列名" field="columnName" fixed="left" width="80" />
  29. <vxe-column title="字段描述" field="columnComment">
  30. <template #default="{ row }">
  31. <el-input v-model="row.columnComment" />
  32. </template>
  33. </vxe-column>
  34. <vxe-column title="物理类型" field="dataType" width="10%" />
  35. <vxe-column title="Java类型" width="10%" field="javaType">
  36. <template #default="{ row }">
  37. <el-select v-model="row.javaType">
  38. <el-option label="Long" value="Long" />
  39. <el-option label="String" value="String" />
  40. <el-option label="Integer" value="Integer" />
  41. <el-option label="Double" value="Double" />
  42. <el-option label="BigDecimal" value="BigDecimal" />
  43. <el-option label="Date" value="Date" />
  44. <el-option label="Boolean" value="Boolean" />
  45. </el-select>
  46. </template>
  47. </vxe-column>
  48. <vxe-column title="java属性" width="10%" field="javaField">
  49. <template #default="{ row }">
  50. <el-input v-model="row.javaField" />
  51. </template>
  52. </vxe-column>
  53. <vxe-column title="插入" width="4%" field="createOperation">
  54. <template #default="{ row }">
  55. <vxe-checkbox true-label="true" false-label="false" v-model="row.createOperation" />
  56. </template>
  57. </vxe-column>
  58. <vxe-column title="编辑" width="4%" field="updateOperation">
  59. <template #default="{ row }">
  60. <vxe-checkbox true-label="true" false-label="false" v-model="row.updateOperation" />
  61. </template>
  62. </vxe-column>
  63. <vxe-column title="列表" width="4%" field="listOperationResult">
  64. <template #default="{ row }">
  65. <vxe-checkbox true-label="true" false-label="false" v-model="row.listOperationResult" />
  66. </template>
  67. </vxe-column>
  68. <vxe-column title="查询" width="4%" field="listOperation">
  69. <template #default="{ row }">
  70. <vxe-checkbox true-label="true" false-label="false" v-model="row.listOperation" />
  71. </template>
  72. </vxe-column>
  73. <vxe-column title="查询方式" width="8%" field="listOperationCondition">
  74. <template #default="{ row }">
  75. <el-select v-model="row.listOperationCondition">
  76. <el-option label="=" value="=" />
  77. <el-option label="!=" value="!=" />
  78. <el-option label=">" value=">" />
  79. <el-option label=">=" value=">=" />
  80. <el-option label="<" value="<>" />
  81. <el-option label="<=" value="<=" />
  82. <el-option label="LIKE" value="LIKE" />
  83. <el-option label="BETWEEN" value="BETWEEN" />
  84. </el-select>
  85. </template>
  86. </vxe-column>
  87. <vxe-column title="允许空" width="4%" field="nullable">
  88. <template #default="{ row }">
  89. <vxe-checkbox true-label="true" false-label="false" v-model="row.nullable" />
  90. </template>
  91. </vxe-column>
  92. <vxe-column title="显示类型" width="10%" field="htmlType">
  93. <template #default="{ row }">
  94. <el-select v-model="row.htmlType">
  95. <el-option label="文本框" value="input" />
  96. <el-option label="文本域" value="textarea" />
  97. <el-option label="下拉框" value="select" />
  98. <el-option label="单选框" value="radio" />
  99. <el-option label="复选框" value="checkbox" />
  100. <el-option label="日期控件" value="datetime" />
  101. <el-option label="图片上传" value="imageUpload" />
  102. <el-option label="文件上传" value="fileUpload" />
  103. <el-option label="富文本控件" value="editor" />
  104. </el-select>
  105. </template>
  106. </vxe-column>
  107. <vxe-column title="字典类型" width="10%" field="dictType">
  108. <template #default="{ row }">
  109. <el-select v-model="row.dictType" clearable filterable placeholder="请选择">
  110. <el-option
  111. v-for="dict in dictOptions"
  112. :key="dict.id"
  113. :label="dict.name"
  114. :value="dict.type"
  115. />
  116. </el-select>
  117. </template>
  118. </vxe-column>
  119. <vxe-column title="示例" field="example">
  120. <template #default="{ row }">
  121. <el-input v-model="row.example" />
  122. </template>
  123. </vxe-column>
  124. </vxe-table>
  125. </template>