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