From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目
---
src/views/infra/codegen/components/ColumInfoForm.vue | 167 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 167 insertions(+), 0 deletions(-)
diff --git a/src/views/infra/codegen/components/ColumInfoForm.vue b/src/views/infra/codegen/components/ColumInfoForm.vue
new file mode 100644
index 0000000..2be931f
--- /dev/null
+++ b/src/views/infra/codegen/components/ColumInfoForm.vue
@@ -0,0 +1,167 @@
+<template>
+ <el-table ref="dragTable" :data="formData" :max-height="tableHeight" row-key="columnId">
+ <el-table-column
+ :show-overflow-tooltip="true"
+ label="瀛楁鍒楀悕"
+ min-width="10%"
+ prop="columnName"
+ />
+ <el-table-column label="瀛楁鎻忚堪" min-width="10%">
+ <template #default="scope">
+ <el-input v-model="scope.row.columnComment" />
+ </template>
+ </el-table-column>
+ <el-table-column
+ :show-overflow-tooltip="true"
+ label="鐗╃悊绫诲瀷"
+ min-width="10%"
+ prop="dataType"
+ />
+ <el-table-column label="Java绫诲瀷" min-width="11%">
+ <template #default="scope">
+ <el-select v-model="scope.row.javaType">
+ <el-option label="Long" value="Long" />
+ <el-option label="String" value="String" />
+ <el-option label="Integer" value="Integer" />
+ <el-option label="Double" value="Double" />
+ <el-option label="BigDecimal" value="BigDecimal" />
+ <el-option label="LocalDateTime" value="LocalDateTime" />
+ <el-option label="Boolean" value="Boolean" />
+ </el-select>
+ </template>
+ </el-table-column>
+ <el-table-column label="java灞炴��" min-width="10%">
+ <template #default="scope">
+ <el-input v-model="scope.row.javaField" />
+ </template>
+ </el-table-column>
+ <el-table-column label="鎻掑叆" min-width="4%">
+ <template #default="scope">
+ <el-checkbox v-model="scope.row.createOperation" false-value="false" true-value="true" />
+ </template>
+ </el-table-column>
+ <el-table-column label="缂栬緫" min-width="4%">
+ <template #default="scope">
+ <el-checkbox v-model="scope.row.updateOperation" false-value="false" true-value="true" />
+ </template>
+ </el-table-column>
+ <el-table-column label="鍒楄〃" min-width="4%">
+ <template #default="scope">
+ <el-checkbox
+ v-model="scope.row.listOperationResult"
+ false-value="false"
+ true-value="true"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column label="鏌ヨ" min-width="4%">
+ <template #default="scope">
+ <el-checkbox v-model="scope.row.listOperation" false-value="false" true-value="true" />
+ </template>
+ </el-table-column>
+ <el-table-column label="鏌ヨ鏂瑰紡" min-width="10%">
+ <template #default="scope">
+ <el-select v-model="scope.row.listOperationCondition">
+ <el-option label="=" value="=" />
+ <el-option label="!=" value="!=" />
+ <el-option label=">" value=">" />
+ <el-option label=">=" value=">=" />
+ <el-option label="<" value="<>" />
+ <el-option label="<=" value="<=" />
+ <el-option label="LIKE" value="LIKE" />
+ <el-option label="BETWEEN" value="BETWEEN" />
+ </el-select>
+ </template>
+ </el-table-column>
+ <el-table-column label="鍏佽绌�" min-width="5%">
+ <template #default="scope">
+ <el-checkbox v-model="scope.row.nullable" false-value="false" true-value="true" />
+ </template>
+ </el-table-column>
+ <el-table-column label="鏄剧ず绫诲瀷" min-width="12%">
+ <template #default="scope">
+ <el-select v-model="scope.row.htmlType">
+ <el-option label="鏂囨湰妗�" value="input" />
+ <el-option label="鏂囨湰鍩�" value="textarea" />
+ <el-option label="涓嬫媺妗�" value="select" />
+ <el-option label="鍗曢�夋" value="radio" />
+ <el-option label="澶嶉�夋" value="checkbox" />
+ <el-option label="鏃ユ湡鎺т欢" value="datetime" />
+ <el-option label="鍥剧墖涓婁紶" value="imageUpload" />
+ <el-option label="鏂囦欢涓婁紶" value="fileUpload" />
+ <el-option label="瀵屾枃鏈帶浠�" value="editor" />
+ </el-select>
+ </template>
+ </el-table-column>
+ <el-table-column label="瀛楀吀绫诲瀷" min-width="12%">
+ <template #default="scope">
+ <el-select v-model="scope.row.dictType" :value-on-clear="''" clearable filterable placeholder="璇烽�夋嫨">
+ <template #header>
+ <div class="flex justify-end">
+ <el-popover
+ class="box-item"
+ content="鍔犺浇鏈�鏂板瓧鍏�"
+ placement="top-start"
+ >
+ <template #reference>
+ <el-button :icon="Refresh" size="small" circle @click="getDictOptions" class=""/>
+ </template>
+ </el-popover>
+ </div>
+ </template>
+ <el-option
+ v-for="dict in dictOptions"
+ :key="dict.id"
+ :label="dict.name"
+ :value="dict.type"
+ />
+ </el-select>
+ </template>
+ </el-table-column>
+ <el-table-column label="绀轰緥" min-width="10%">
+ <template #default="scope">
+ <el-input v-model="scope.row.example" />
+ </template>
+ </el-table-column>
+ </el-table>
+</template>
+<script lang="ts" setup>
+import { PropType } from 'vue'
+import { Refresh } from '@element-plus/icons-vue'
+import * as CodegenApi from '@/api/infra/codegen'
+import * as DictDataApi from '@/api/system/dict/dict.type'
+
+defineOptions({ name: 'InfraCodegenColumInfoForm' })
+
+const props = defineProps({
+ columns: {
+ type: Array as unknown as PropType<CodegenApi.CodegenColumnVO[]>,
+ default: () => null
+ }
+})
+
+const formData = ref<CodegenApi.CodegenColumnVO[]>([])
+const tableHeight = document.documentElement.scrollHeight - 350 + 'px'
+
+/** 鏌ヨ瀛楀吀涓嬫媺鍒楄〃 */
+const dictOptions = ref<DictDataApi.DictTypeVO[]>()
+const getDictOptions = async () => {
+ dictOptions.value = await DictDataApi.getSimpleDictTypeList()
+}
+
+watch(
+ () => props.columns,
+ (columns) => {
+ if (!columns) return
+ formData.value = columns
+ },
+ {
+ deep: true,
+ immediate: true
+ }
+)
+
+onMounted(async () => {
+ await getDictOptions()
+})
+</script>
--
Gitblit v1.8.0