diff --git a/server/initialize/gorm.go b/server/initialize/gorm.go index c3d997c864129ee7f649e3a5c35e012e921c6e6e..39bd7020b23cc48c0c50e73be96b3456a3a827e6 100644 --- a/server/initialize/gorm.go +++ b/server/initialize/gorm.go @@ -48,7 +48,7 @@ func MysqlTables(db *gorm.DB) { model.ExaSimpleUploader{}, model.ExaCustomer{}, model.SysOperationRecord{}, - + model.SysAutoCodeHistory{}, // Code generated by gin-vue-admin Begin; DO NOT EDIT. // Code generated by gin-vue-admin End; DO NOT EDIT. ) diff --git a/server/model/sys_autocode_history.go b/server/model/sys_autocode_history.go index 62ceaaa06c916d003158a4e5ce2ca6ac3fe12fc5..0a75c59bf24d1da4a3cd988179c5039a67081b17 100644 --- a/server/model/sys_autocode_history.go +++ b/server/model/sys_autocode_history.go @@ -6,7 +6,7 @@ import "gin-vue-admin/global" type SysAutoCodeHistory struct { global.GVA_MODEL - TableName string `json:"tableName,omitempty"` + TableName string `json:"tableName"` RequestMeta string `gorm:"type:text" json:"requestMeta,omitempty"` // 前端传入的结构化信息 AutoCodePath string `gorm:"type:text" json:"autoCodePath,omitempty"` // 其他meta信息 path;path InjectionMeta string `gorm:"type:text" json:"injectionMeta,omitempty"` // 注入的内容 RouterPath@functionName@RouterString; diff --git a/server/service/sys_autocode_history.go b/server/service/sys_autocode_history.go index 757da9f8271ca6b46e9fadffa839c596e0ef7d34..bcd4d3e5026e309f11ac350e41a2d755f0dcd28b 100644 --- a/server/service/sys_autocode_history.go +++ b/server/service/sys_autocode_history.go @@ -76,6 +76,6 @@ func GetSysHistoryPage(info request.PageInfo) (err error, list interface{}, tota db := global.GVA_DB var fileLists []model.SysAutoCodeHistory err = db.Find(&fileLists).Count(&total).Error - err = db.Limit(limit).Offset(offset).Order("updated_at desc").Select("id,created_at,updated_at,struct_name,struct_cn_name,flag").Find(&fileLists).Error + err = db.Limit(limit).Offset(offset).Order("updated_at desc").Select("id,created_at,updated_at,struct_name,struct_cn_name,flag,table_name").Find(&fileLists).Error return err, fileLists, total } diff --git a/server/source/authorities_menus.go b/server/source/authorities_menus.go index dcf5491e88359f4ae929f06b81c8aa70a5d84abc..0d0bc030ac526973cd8f05286bbfd445a3fd5a34 100644 --- a/server/source/authorities_menus.go +++ b/server/source/authorities_menus.go @@ -40,6 +40,7 @@ var authorityMenus = []AuthorityMenus{ {"888", 22}, {"888", 23}, {"888", 24}, + {"888", 25}, {"8881", 1}, {"8881", 2}, {"8881", 8}, diff --git a/server/source/menu.go b/server/source/menu.go index 4dcbab64c845bc7601afe39e6e6562e0bd0218af..cd6aea417f765861f7387d6fc54b6a33602d6ad6 100644 --- a/server/source/menu.go +++ b/server/source/menu.go @@ -38,6 +38,7 @@ var menus = []model.SysBaseMenu{ {GVA_MODEL: global.GVA_MODEL{ID: 22, CreatedAt: time.Now(), UpdatedAt: time.Now()}, MenuLevel: 0, ParentId: "0", Path: "https://www.gin-vue-admin.com", Name: "https://www.gin-vue-admin.com", Hidden: false, Component: "/", Sort: 0, Meta: model.Meta{Title: "官方网站", Icon: "s-home"}}, {GVA_MODEL: global.GVA_MODEL{ID: 23, CreatedAt: time.Now(), UpdatedAt: time.Now()}, MenuLevel: 0, ParentId: "0", Path: "state", Name: "state", Hidden: false, Component: "view/system/state.vue", Sort: 6, Meta: model.Meta{Title: "服务器状态", Icon: "cloudy"}}, {GVA_MODEL: global.GVA_MODEL{ID: 24, CreatedAt: time.Now(), UpdatedAt: time.Now()}, MenuLevel: 0, ParentId: "14", Path: "autoCodeAdmin", Name: "autoCodeAdmin", Hidden: false, Component: "view/systemTools/autoCodeAdmin/index.vue", Sort: 1, Meta: model.Meta{Title: "自动化代码管理", Icon: "s-finance"}}, + {GVA_MODEL: global.GVA_MODEL{ID: 25, CreatedAt: time.Now(), UpdatedAt: time.Now()}, MenuLevel: 0, ParentId: "14", Path: "autoCodeEdit/:id", Name: "autoCodeEdit", Hidden: true, Component: "view/systemTools/autoCodeAdmin/index.vue", Sort: 0, Meta: model.Meta{Title: "自动化代码(复用)", Icon: "s-finance"}}, } //@author: [SliverHorn](https://github.com/SliverHorn) diff --git a/web/src/api/autoCode.js b/web/src/api/autoCode.js index 7e0971756a6908a7a80b5368691bbd1a983ba065..8f08def248ce601ff9489115023d08114891fe0c 100644 --- a/web/src/api/autoCode.js +++ b/web/src/api/autoCode.js @@ -68,3 +68,19 @@ export const getSysHistory = (data) => { data }) } + +export const rollback = (data) => { + return service({ + url: '/autoCode/rollback', + method: 'post', + data + }) +} + +export const getMeta = (data) => { + return service({ + url: '/autoCode/getMeta', + method: 'post', + data + }) +} diff --git a/web/src/view/systemTools/autoCode/index.vue b/web/src/view/systemTools/autoCode/index.vue index 8ae98aff2a2a2fa22babb7acbcb92c02a7a5562e..f02059b8e5184397a920db64197a0a03ee6d6a75 100644 --- a/web/src/view/systemTools/autoCode/index.vue +++ b/web/src/view/systemTools/autoCode/index.vue @@ -165,7 +165,7 @@ const fieldTemplate = { import FieldDialog from '@/view/systemTools/autoCode/component/fieldDialog.vue' import PreviewCodeDialg from '@/view/systemTools/autoCode/component/previewCodeDialg.vue' import { toUpperCase, toHump, toSQLLine } from '@/utils/stringFun' -import { createTemp, getDB, getTable, getColumn, preview } from '@/api/autoCode' +import { createTemp, getDB, getTable, getColumn, preview, getMeta } from '@/api/autoCode' import { getDict } from '@/utils/dictionary' export default { @@ -223,6 +223,10 @@ export default { created() { this.getDb() this.setFdMap() + const id = this.$route.params.id + if (id) { + this.getAutoCodeJson(id) + } }, methods: { editAndAddField(item) { @@ -395,6 +399,12 @@ export default { this.fdMap[item.label] = fdtype }) }) + }, + async getAutoCodeJson(id) { + const res = await getMeta({ id: Number(id) }) + if (res.code === 0) { + this.form = JSON.parse(res.data.meta) + } } } } diff --git a/web/src/view/systemTools/autoCodeAdmin/index.vue b/web/src/view/systemTools/autoCodeAdmin/index.vue index 8d2b1676454adb168bef34e4a8cdd71457c886ac..315355d4608d5134de81de8152ce8ae8f9690350 100644 --- a/web/src/view/systemTools/autoCodeAdmin/index.vue +++ b/web/src/view/systemTools/autoCodeAdmin/index.vue @@ -6,10 +6,10 @@ - + - 新增 + 新增 @@ -22,9 +22,38 @@ - + + - + + + + + + // 获取列表内容封装在mixins内部 getTableData方法 初始化已封装完成 条件搜索时候 请把条件安好后台定制的结构体字段 放到 this.searchInfo 中即可实现条件搜索 -import { getSysHistory } from '@/api/autoCode.js' +import { getSysHistory, rollback } from '@/api/autoCode.js' import { formatTimeToStr } from '@/utils/date' import infoList from '@/mixins/infoList' @@ -75,8 +104,27 @@ export default { this.getTableData() }, methods: { - goAutoCode() { - this.$router.push({ name: 'autoCode' }) + async rollback(row) { + this.$confirm('此操作将删除自动创建的文件和api, 是否继续?', '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(async() => { + const res = await rollback({ id: Number(row.ID) }) + if (res.code === 0) { + this.$message.success('回滚成功') + this.getTableData() + } + }) + }, + goAutoCode(row) { + if (row) { + this.$router.push({ name: 'autoCodeEdit', params: { + id: row.ID + }}) + } else { + this.$router.push({ name: 'autoCode' }) + } } } }