mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-20 20:39:55 +00:00
fix(gencode): 修复表导入参数格式问题并优化UI样式
修复前端传递表名参数格式与后端API不匹配的问题,调整参数为逗号分隔字符串 优化操作按钮颜色区分不同功能,修正预览对话框变量命名和模板文件后缀 重构文件上传接口模拟实现,移除未使用的导入
This commit is contained in:
@@ -47,7 +47,7 @@ async def get_gen_db_table_list_controller(
|
||||
|
||||
@GenRouter.post("/import", summary="导入表结构", description="导入表结构")
|
||||
async def import_gen_table_controller(
|
||||
table_names: List[str] = Query(..., description="表名列表", embed=True),
|
||||
table_names: List[str] = Query(..., description="表名列表"),
|
||||
auth: AuthSchema = Depends(AuthPermission(["generator:gencode:import"])),
|
||||
) -> JSONResponse:
|
||||
add_gen_table_list = await GenTableService.get_gen_db_table_list_by_name_service(auth, table_names)
|
||||
|
||||
@@ -21,12 +21,17 @@ const GencodeAPI = {
|
||||
})
|
||||
},
|
||||
|
||||
// 导入表
|
||||
// 导入表 - 将数组转换为适合FastAPI解析的格式
|
||||
importTable(table_names: string[]) {
|
||||
// 构建符合FastAPI期望的查询字符串
|
||||
let queryString = '';
|
||||
table_names.forEach((name, index) => {
|
||||
queryString += `${index === 0 ? '?' : '&'}table_names=${encodeURIComponent(name)}`;
|
||||
});
|
||||
|
||||
return request<ApiResponse>({
|
||||
url: `${API_PATH}/import`,
|
||||
method: 'post',
|
||||
params: { table_names }
|
||||
url: `${API_PATH}/import${queryString}`,
|
||||
method: 'post'
|
||||
})
|
||||
},
|
||||
|
||||
@@ -61,7 +66,7 @@ const GencodeAPI = {
|
||||
return request<ApiResponse>({
|
||||
url: `${API_PATH}/delete`,
|
||||
method: 'delete',
|
||||
data: data
|
||||
data
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
@@ -33,12 +33,26 @@ import "@wangeditor-next/editor/dist/css/style.css";
|
||||
import { Toolbar, Editor } from "@wangeditor-next/editor-for-vue";
|
||||
import { IToolbarConfig, IEditorConfig } from "@wangeditor-next/editor";
|
||||
|
||||
// 文件上传 API
|
||||
import FileAPI from "@/api/file.api";
|
||||
|
||||
// 上传图片回调函数类型
|
||||
type InsertFnType = (_url: string, _alt: string, _href: string) => void;
|
||||
|
||||
// 模拟文件上传API,根据实际项目结构调整
|
||||
interface UploadResult {
|
||||
url: string;
|
||||
name: string;
|
||||
}
|
||||
|
||||
const FileAPI = {
|
||||
uploadFile: async (file: File): Promise<UploadResult> => {
|
||||
// 这里应该是实际的文件上传逻辑
|
||||
// 暂时返回一个mock数据
|
||||
return Promise.resolve({
|
||||
url: 'https://example.com/image.jpg',
|
||||
name: file.name
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
defineProps({
|
||||
height: {
|
||||
type: String,
|
||||
|
||||
@@ -123,8 +123,8 @@ function handleImportTable() {
|
||||
ElMessage.error("请选择要导入的表");
|
||||
return;
|
||||
}
|
||||
// 因为tables.value已经是string[]类型了,直接传入
|
||||
GencodeAPI.importTable(tables.value).then((res: any) => {
|
||||
// 传递逗号分隔的字符串格式
|
||||
GencodeAPI.importTable(tableNames.split(",")).then((res: any) => {
|
||||
ElMessage.success(res.data.message);
|
||||
if (res.data.code === 200) {
|
||||
visible.value = false;
|
||||
|
||||
@@ -175,19 +175,19 @@
|
||||
<el-table-column label="操作" align="center" width="330" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-tooltip content="预览" placement="top">
|
||||
<el-button v-hasPerm="['generator:gencode:query']" link type="primary" icon="View" @click="handlePreview(scope.row)"></el-button>
|
||||
<el-button v-hasPerm="['generator:gencode:query']" link type="info" icon="View" @click="handlePreview(scope.row)"></el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="编辑" placement="top">
|
||||
<el-button v-hasPerm="['generator:gencode:update']" link type="primary" icon="Edit" @click="handleEditTable(scope.row)"></el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="删除" placement="top">
|
||||
<el-button v-hasPerm="['generator:gencode:delete']" link type="primary" icon="Delete" @click="handleDelete(scope.row)"></el-button>
|
||||
<el-button v-hasPerm="['generator:gencode:delete']" link type="danger" icon="Delete" @click="handleDelete(scope.row)"></el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="同步" placement="top">
|
||||
<el-button v-hasPerm="['generator:gencode:edit']" link type="primary" icon="Refresh" @click="handleSynchDb(scope.row)"></el-button>
|
||||
<el-button v-hasPerm="['generator:gencode:edit']" link type="success" icon="Refresh" @click="handleSynchDb(scope.row)"></el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="生成代码" placement="top">
|
||||
<el-button v-hasPerm="['generator:gencode:code']" link type="primary" icon="Download" @click="handleGenTable(scope.row)"></el-button>
|
||||
<el-button v-hasPerm="['generator:gencode:code']" link type="warning" icon="Download" @click="handleGenTable(scope.row)"></el-button>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -205,15 +205,15 @@
|
||||
</el-card>
|
||||
|
||||
<!-- 预览界面 -->
|
||||
<el-dialog v-model="preview.open" :title="preview.title" width="80%" top="5vh" append-to-body class="scrollbar">
|
||||
<el-tabs v-model="preview.activeName">
|
||||
<el-dialog v-model="preview.open" :title="preview.title" width="80%" height="70%" top="5vh" append-to-body class="scrollbar">
|
||||
<el-tabs v-model="preview.active_name">
|
||||
<el-tab-pane
|
||||
v-for="(value, key) in preview.data"
|
||||
:label="String(key).substring(String(key).lastIndexOf('/')+1,String(key).indexOf('.jinja2'))"
|
||||
:name="String(key).substring(String(key).lastIndexOf('/')+1,String(key).indexOf('.jinja2'))"
|
||||
:key="value"
|
||||
:label="String(key).substring(String(key).lastIndexOf('/')+1,String(key).indexOf('.j2'))"
|
||||
:name="String(key).substring(String(key).lastIndexOf('/')+1,String(key).indexOf('.j2'))"
|
||||
>
|
||||
<el-link :underline="false" icon="DocumentCopy" @click="() => handleCopyText(value)" style="float:right"> 复制</el-link>
|
||||
<el-link :underline="false" icon="DocumentCopy" style="float:right" @click="() => handleCopyText(value)"> 复制</el-link>
|
||||
<pre>{{ value }}</pre>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
@@ -263,7 +263,6 @@ const data = reactive({
|
||||
title: "代码预览",
|
||||
data: {},
|
||||
active_name: "model.py",
|
||||
activeName: "model.py" // 添加正确的 activeName 属性
|
||||
}
|
||||
});
|
||||
|
||||
@@ -386,9 +385,9 @@ function handleRefresh() {
|
||||
/** 预览按钮 */
|
||||
function handlePreview(row: any) {
|
||||
GencodeAPI.previewTable(row.id).then(response => {
|
||||
preview.value.data = response.data;
|
||||
preview.value.data = response.data.data;
|
||||
preview.value.open = true;
|
||||
preview.value.activeName = "do.py";
|
||||
preview.value.active_name = "model.py";
|
||||
});
|
||||
}
|
||||
|
||||
@@ -419,7 +418,7 @@ function handleCopyText(value: string) {
|
||||
/** 修改按钮操作 */
|
||||
function handleEditTable(row: any) {
|
||||
const tableId = row.id || ids.value[0];
|
||||
router.push({ path: "/tool/gen-edit/index/" + tableId, query: { page_no: queryFormData.value.page_no } });
|
||||
router.push({ path: "/gencode/gen-edit/index/" + tableId, query: { page_no: queryFormData.value.page_no } });
|
||||
}
|
||||
|
||||
/** 删除按钮操作 */
|
||||
|
||||
@@ -191,6 +191,7 @@ export default defineConfig(({ mode }: ConfigEnv) => {
|
||||
"element-plus/es/components/header/style/index",
|
||||
"element-plus/es/components/slider/style/index",
|
||||
"element-plus/es/components/button-group/style/index",
|
||||
"element-plus/es/components/result/style/index"
|
||||
],
|
||||
},
|
||||
// 构建配置
|
||||
|
||||
Reference in New Issue
Block a user