文件结构调整,支持插件自动化 (#1824)
* Update index.vue 多个详情页之间切换tab,页面没有重新渲染 * feature:新增同步API功能 * feature: 同步表数据 * feature:新增同步API功能 * feature: 增加V2插件注册 * feature:给Enter的依赖结构增加单独的New 方便引用 * feature: 调整关联属性的选择模式 * feature: 增加component组件和name的映射插件,防止keepalive的懒加载失效。 * update: PluginInitializeRouter && 修复TypePluginInitializeMenu ast 类型错误 * update: 测试文件的astType 类型错误 * feature: 文件变更自动同步componentName.json。 * feature: 文件变更自动同步componentName.json。 * feat: UI美化 * feat: 自动化页面顺序调整 * feature:修改404页面 * update: PluginInitializeMenu * update: Plugin template * fixed systemApi 重复声明 * api.vue:update:修改API分组为下拉列表 * update: import添加注释 * update: plugin_enter_test.go 增加测试用例 * update: ast 预览文件路径 * update: config Autocode 新增Module字段以及如果为空的情况下自动获取运行目录下的go.mod文件 * update: auto_code_package.go 完善调用ast工具类的封装使用 * update: auto_code_template.go Create方法和修正SysAutoCodeHistory * feat:调整自动化package为模板,增加初始化配置信息,调整页面信息。 * update: ast PreviewPath MkdirAll * update: ast type错误, PluginEnter and PackageModuleEnter add TemplatePath模版路径 * update: autoCodePackage and autoCodeTemplate bug修正 * update: PackageInitializeRouter 传入两个路由组 * update: PackageModuleEnter 处理空变量时与type冲突注入 * update: Package 模版更新 * update: utils/ast 优化统一 * update: 注入内容修复错误 * fix: 修复注释错误 * update: plugin 模版 完成 * feature: 文件watch功能只在development下开启 * update: viper.go.template 因为viper不区分配置的key的大小写所以用package * update: ast 测试代码规范化 * update: package 删除api和router多余导包 * update: plugin template * update: auto_code_package 问题修复 * update: ast 测试插件的预览功能 * update: gorm_biz 更新注册方式 * update: go.mod tidy * remove: plugin template gen main.go.template * update: ast 重构, 分离读取和写入步骤支持 * update: AutoCodePackageApi 传入参数错误修复 * rename: sys_autocode_history.go => sys_auto_code_history.go * update: 预览无需落盘, 创建落盘,抽离公共参数 * update: api.go.tpl 导包位置fmt 和package js位置存放错误 * update: 测试用例修复 and PackageInitializeGorm 重构 * update: ast 新增相对路径, 代码生成器历史回滚功能 * update: ast 工具类回滚失败修复以及测试文件 * update: 代码生成器历史 回滚问题修复 * update: 代码生成器模版忽略.DS_Store * featute: 自动化GORM结构的注入和剔除 * feature: 插件模板调整 * feature: 增加公告插件示例,调整代码模板。 * feature: 自动注册插件V2。 --------- Co-authored-by: zayn <972858472@qq.com> Co-authored-by: SliverHorn <sliver_horn@qq.com> Co-authored-by: krank <emosick@qq.com> Co-authored-by: cjk <wlicjk@126.com> Co-authored-by: piexlMax(奇淼 <qimiaojiangjizhao@gmail.com> Co-authored-by: maxwell <zhong.maxwell@gmail.com>
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
title="此功能为开发环境使用,不建议发布到生产,具体使用效果请点我观看。"
|
||||
/>
|
||||
<div class="gva-search-box">
|
||||
<div class="text-lg mb-2 text-gray-600">使用AI创建</div>
|
||||
<div class="relative">
|
||||
<el-input v-model="prompt" type="textarea" :rows="5" :maxlength="100" :placeholder="`【Beta】试试描述你的表,让AI帮你完成。\n目前正在测试阶段,遇到问题请及时反馈。\n此功能需要到插件市场个人中心获取自己的AI-Path,把AI-Path填入config.yaml下的autocode-->ai-path,重启项目即可使用。`" resize="none" />
|
||||
<div class="flex absolute right-2 bottom-2">
|
||||
@@ -31,29 +32,19 @@
|
||||
</div>
|
||||
<!-- 从数据库直接获取字段 -->
|
||||
<div class="gva-search-box">
|
||||
<el-collapse
|
||||
v-model="activeNames"
|
||||
class="mb-3"
|
||||
<div class="text-lg mb-2 text-gray-600">从数据库创建</div>
|
||||
<el-form
|
||||
ref="getTableForm"
|
||||
:inline="true"
|
||||
:model="dbform"
|
||||
label-width="120px"
|
||||
>
|
||||
<el-collapse-item name="1">
|
||||
<template #title>
|
||||
<div class="text-xl pl-4 flex items-center">
|
||||
点这里从现有数据库创建代码
|
||||
<el-icon>
|
||||
<pointer />
|
||||
</el-icon>
|
||||
</div>
|
||||
</template>
|
||||
<el-form
|
||||
ref="getTableForm"
|
||||
style="margin-top:24px"
|
||||
:inline="true"
|
||||
:model="dbform"
|
||||
label-width="120px"
|
||||
>
|
||||
<el-row class="w-full">
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="业务库"
|
||||
prop="selectDBtype"
|
||||
class="w-full"
|
||||
>
|
||||
<template #label>
|
||||
<el-tooltip
|
||||
@@ -69,6 +60,7 @@
|
||||
clearable
|
||||
placeholder="选择业务库"
|
||||
@change="getDbFunc"
|
||||
class="w-full"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dbList"
|
||||
@@ -84,15 +76,19 @@
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="数据库名"
|
||||
prop="structName"
|
||||
class="w-full"
|
||||
>
|
||||
<el-select
|
||||
v-model="dbform.dbName"
|
||||
clearable
|
||||
filterable
|
||||
placeholder="请选择数据库"
|
||||
class="w-full"
|
||||
@change="getTableFunc"
|
||||
>
|
||||
<el-option
|
||||
@@ -103,13 +99,17 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="表名"
|
||||
prop="structName"
|
||||
class="w-full"
|
||||
>
|
||||
<el-select
|
||||
v-model="dbform.tableName"
|
||||
:disabled="!dbform.dbName"
|
||||
class="w-full"
|
||||
filterable
|
||||
placeholder="请选择表"
|
||||
>
|
||||
@@ -121,20 +121,27 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="getColumnFunc"
|
||||
>
|
||||
使用此表创建
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
class="w-full"
|
||||
>
|
||||
<div class="flex justify-end w-full">
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="getColumnFunc"
|
||||
>
|
||||
使用此表
|
||||
</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-collapse-item>
|
||||
</el-collapse>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="gva-search-box">
|
||||
<!-- 初始版本自动化代码工具 -->
|
||||
<div class="text-lg mb-2 text-gray-600">自动化结构</div>
|
||||
<el-form
|
||||
ref="autoCodeForm"
|
||||
:rules="rules"
|
||||
@@ -142,191 +149,230 @@
|
||||
label-width="120px"
|
||||
:inline="true"
|
||||
>
|
||||
<el-form-item
|
||||
label="Struct名称"
|
||||
prop="structName"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.structName"
|
||||
placeholder="首字母自动转换大写"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="TableName"
|
||||
prop="tableName"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.tableName"
|
||||
placeholder="指定表名(非必填)"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
prop="abbreviation"
|
||||
>
|
||||
<template #label>
|
||||
<el-tooltip
|
||||
content="简称会作为入参对象名和路由group"
|
||||
placement="bottom"
|
||||
effect="light"
|
||||
<el-row class="w-full">
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="结构名称"
|
||||
prop="structName"
|
||||
class="w-full"
|
||||
>
|
||||
<div> Struct简称 <el-icon><QuestionFilled /></el-icon> </div>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
<el-input
|
||||
v-model="form.abbreviation"
|
||||
placeholder="请输入Struct简称"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="Struct中文名称"
|
||||
prop="description"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.description"
|
||||
placeholder="中文描述作为自动api描述"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
prop="packageName"
|
||||
>
|
||||
<template #label>
|
||||
<el-tooltip
|
||||
content="生成文件的默认名称(建议为驼峰格式,首字母小写,如sysXxxXxxx)"
|
||||
placement="bottom"
|
||||
effect="light"
|
||||
<el-input
|
||||
v-model="form.structName"
|
||||
placeholder="首字母自动转换大写"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="TableName"
|
||||
class="w-full"
|
||||
>
|
||||
<div> 文件名称 <el-icon><QuestionFilled /></el-icon> </div>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
<el-input
|
||||
v-model="form.packageName"
|
||||
placeholder="请输入文件名称"
|
||||
@blur="toLowerCaseFunc(form,'packageName')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="Package(包)"
|
||||
prop="package"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.package"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in pkgs"
|
||||
:key="item.ID"
|
||||
:value="item.packageName"
|
||||
:label="item.packageName"
|
||||
/>
|
||||
</el-select>
|
||||
<el-icon
|
||||
class="cursor-pointer ml-2 text-gray-600"
|
||||
@click="getPkgs"
|
||||
>
|
||||
<refresh />
|
||||
</el-icon>
|
||||
<el-icon
|
||||
class="cursor-pointer ml-2 text-gray-600"
|
||||
@click="goPkgs"
|
||||
>
|
||||
<document-add />
|
||||
</el-icon>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="业务库"
|
||||
prop="businessDB"
|
||||
>
|
||||
<template #label>
|
||||
<el-tooltip
|
||||
content="注:需要提前到db-list自行配置多数据库,此项为空则会使用gva本库创建自动化代码(global.GVA_DB),填写后则会创建指定库的代码(global.MustGetGlobalDBByDBName(dbname))"
|
||||
placement="bottom"
|
||||
effect="light"
|
||||
<template #label>
|
||||
<el-tooltip
|
||||
content="简称会作为入参对象名和路由group"
|
||||
placement="bottom"
|
||||
effect="light"
|
||||
>
|
||||
<div> 结构简称 <el-icon><QuestionFilled /></el-icon> </div>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
<el-input
|
||||
v-model="form.abbreviation"
|
||||
placeholder="请输入Struct简称"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="中文名称"
|
||||
prop="description"
|
||||
class="w-full"
|
||||
>
|
||||
<div> 业务库 <el-icon><QuestionFilled /></el-icon> </div>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
<el-select
|
||||
v-model="form.businessDB"
|
||||
placeholder="选择业务库"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dbList"
|
||||
:key="item.aliasName"
|
||||
:value="item.aliasName"
|
||||
:label="item.aliasName"
|
||||
:disabled="item.disable"
|
||||
<el-input
|
||||
v-model="form.description"
|
||||
placeholder="中文描述作为自动api描述"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="表名"
|
||||
prop="tableName"
|
||||
class="w-full"
|
||||
>
|
||||
<div>
|
||||
<span>{{ item.aliasName }}</span>
|
||||
<span style="float:right;color:#8492a6;font-size:13px">{{ item.dbName }}</span>
|
||||
</div>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<div>
|
||||
<el-form-item>
|
||||
<template #label>
|
||||
<el-tooltip
|
||||
content="注:会自动在结构体global.Model其中包含主键和软删除相关操作配置"
|
||||
placement="bottom"
|
||||
effect="light"
|
||||
<el-input
|
||||
v-model="form.tableName"
|
||||
placeholder="指定表名(非必填)"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row class="w-full">
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
prop="packageName"
|
||||
class="w-full"
|
||||
>
|
||||
<template #label>
|
||||
<el-tooltip
|
||||
content="生成文件的默认名称(建议为驼峰格式,首字母小写,如sysXxxXxxx)"
|
||||
placement="bottom"
|
||||
effect="light"
|
||||
>
|
||||
<div> 文件名称 <el-icon><QuestionFilled /></el-icon> </div>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
<el-input
|
||||
v-model="form.packageName"
|
||||
placeholder="请输入文件名称"
|
||||
@blur="toLowerCaseFunc(form,'packageName')"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="选择模板"
|
||||
prop="package"
|
||||
class="w-full relative"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.package"
|
||||
class="w-full pr-12"
|
||||
>
|
||||
<div> 使用GVA结构 <el-icon><QuestionFilled /></el-icon> </div>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
<el-checkbox
|
||||
v-model="form.gvaModel"
|
||||
@change="useGva"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<template #label>
|
||||
<el-tooltip
|
||||
content="注:会自动在结构体添加 created_by updated_by deleted_by,方便用户进行资源权限控制"
|
||||
placement="bottom"
|
||||
effect="light"
|
||||
<el-option
|
||||
v-for="item in pkgs"
|
||||
:key="item.ID"
|
||||
:value="item.packageName"
|
||||
:label="item.packageName"
|
||||
/>
|
||||
</el-select>
|
||||
<span class="absolute right-0">
|
||||
<el-icon
|
||||
class="cursor-pointer ml-2 text-gray-600"
|
||||
@click="getPkgs"
|
||||
>
|
||||
<refresh />
|
||||
</el-icon>
|
||||
<el-icon
|
||||
class="cursor-pointer ml-2 text-gray-600"
|
||||
@click="goPkgs"
|
||||
>
|
||||
<document-add />
|
||||
</el-icon>
|
||||
</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="业务库"
|
||||
prop="businessDB"
|
||||
class="w-full"
|
||||
>
|
||||
<template #label>
|
||||
<el-tooltip
|
||||
content="注:需要提前到db-list自行配置多数据库,此项为空则会使用gva本库创建自动化代码(global.GVA_DB),填写后则会创建指定库的代码(global.MustGetGlobalDBByDBName(dbname))"
|
||||
placement="bottom"
|
||||
effect="light"
|
||||
>
|
||||
<div> 业务库 <el-icon><QuestionFilled /></el-icon> </div>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
<el-select
|
||||
v-model="form.businessDB"
|
||||
placeholder="选择业务库"
|
||||
class="w-full"
|
||||
>
|
||||
<div> 创建资源标识 <el-icon><QuestionFilled /></el-icon> </div>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
<el-checkbox v-model="form.autoCreateResource" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<template #label>
|
||||
<el-tooltip
|
||||
content="注:把自动生成的API注册进数据库"
|
||||
placement="bottom"
|
||||
effect="light"
|
||||
>
|
||||
<div> 自动创建API <el-icon><QuestionFilled /></el-icon> </div>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
<el-checkbox v-model="form.autoCreateApiToSql" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<template #label>
|
||||
<el-tooltip
|
||||
content="注:把自动生成的菜单注册进数据库"
|
||||
placement="bottom"
|
||||
effect="light"
|
||||
>
|
||||
<div> 自动创建菜单 <el-icon><QuestionFilled /></el-icon></div>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
<el-checkbox v-model="form.autoCreateMenuToSql" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<template #label>
|
||||
<el-tooltip
|
||||
content="注:自动同步数据库表结构,如果不需要可以选择关闭。"
|
||||
placement="bottom"
|
||||
effect="light"
|
||||
>
|
||||
<div> 同步表结构 <el-icon><QuestionFilled /></el-icon></div>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
<el-checkbox v-model="form.autoMigrate" />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<el-option
|
||||
v-for="item in dbList"
|
||||
:key="item.aliasName"
|
||||
:value="item.aliasName"
|
||||
:label="item.aliasName"
|
||||
:disabled="item.disable"
|
||||
>
|
||||
<div>
|
||||
<span>{{ item.aliasName }}</span>
|
||||
<span style="float:right;color:#8492a6;font-size:13px">{{ item.dbName }}</span>
|
||||
</div>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="3">
|
||||
<el-form-item>
|
||||
<template #label>
|
||||
<el-tooltip
|
||||
content="注:会自动在结构体global.Model其中包含主键和软删除相关操作配置"
|
||||
placement="bottom"
|
||||
effect="light"
|
||||
>
|
||||
<div> 使用GVA结构 <el-icon><QuestionFilled /></el-icon> </div>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
<el-checkbox
|
||||
v-model="form.gvaModel"
|
||||
@change="useGva"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="3">
|
||||
<el-form-item>
|
||||
<template #label>
|
||||
<el-tooltip
|
||||
content="注:把自动生成的API注册进数据库"
|
||||
placement="bottom"
|
||||
effect="light"
|
||||
>
|
||||
<div> 自动创建API <el-icon><QuestionFilled /></el-icon> </div>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
<el-checkbox v-model="form.autoCreateApiToSql" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="3">
|
||||
<el-form-item>
|
||||
<template #label>
|
||||
<el-tooltip
|
||||
content="注:把自动生成的菜单注册进数据库"
|
||||
placement="bottom"
|
||||
effect="light"
|
||||
>
|
||||
<div> 自动创建菜单 <el-icon><QuestionFilled /></el-icon></div>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
<el-checkbox v-model="form.autoCreateMenuToSql" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="3">
|
||||
<el-form-item>
|
||||
<template #label>
|
||||
<el-tooltip
|
||||
content="注:自动同步数据库表结构,如果不需要可以选择关闭。"
|
||||
placement="bottom"
|
||||
effect="light"
|
||||
>
|
||||
<div> 同步表结构 <el-icon><QuestionFilled /></el-icon></div>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
<el-checkbox v-model="form.autoMigrate" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="3">
|
||||
<el-form-item>
|
||||
<template #label>
|
||||
<el-tooltip
|
||||
content="注:会自动在结构体添加 created_by updated_by deleted_by,方便用户进行资源权限控制"
|
||||
placement="bottom"
|
||||
effect="light"
|
||||
>
|
||||
<div> 创建资源标识 <el-icon><QuestionFilled /></el-icon> </div>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
<el-checkbox v-model="form.autoCreateResource" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<!-- 组件列表 -->
|
||||
|
Reference in New Issue
Block a user