提交 dc01f686 编写于 作者: Mr.奇淼('s avatar Mr.奇淼(

增加自动化代码回滚功能

上级 539bdbee
......@@ -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.
)
......
......@@ -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;
......
......@@ -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
}
......@@ -40,6 +40,7 @@ var authorityMenus = []AuthorityMenus{
{"888", 22},
{"888", 23},
{"888", 24},
{"888", 25},
{"8881", 1},
{"8881", 2},
{"8881", 8},
......
......@@ -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)
......
......@@ -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
})
}
......@@ -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)
}
}
}
}
......
......@@ -6,10 +6,10 @@
<el-input v-model="searchInfo.tableName" placeholder="表名" />
</el-form-item>
<el-form-item label="结构体名称">
<el-input v-model="searchInfo.tableName" placeholder="结构体名称" />
<el-input v-model="searchInfo.structName" placeholder="结构体名称" />
</el-form-item>
<el-form-item>
<el-button size="mini" type="primary" icon="el-icon-plus" @click="goAutoCode">新增</el-button>
<el-button size="mini" type="primary" icon="el-icon-plus" @click="goAutoCode(null)">新增</el-button>
</el-form-item>
</el-form>
</div>
......@@ -22,9 +22,38 @@
<el-table-column label="日期" width="180">
<template slot-scope="scope">{{ scope.row.CreatedAt|formatDate }}</template>
</el-table-column>
<el-table-column label="结构体名" min-width="150" prop="tableName" />
<el-table-column label="结构体名" min-width="150" prop="structName" />
<el-table-column label="结构体描述" min-width="150" prop="structCNName" />
<el-table-column label="表名称" min-width="150" prop="tableName" />
<el-table-column label="回滚标记" min-width="150" prop="flag">
<template slot-scope="scope">
<el-tag
v-if="scope.row.flag"
type="danger"
size="mini"
effect="dark"
>
已回滚
</el-tag>
<el-tag
v-else
size="mini"
type="success"
effect="dark"
>
未回滚
</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" min-width="180">
<template slot-scope="scope">
<div>
<el-button size="mini" type="primary" @click="rollback(scope.row)">回滚</el-button>
<el-button size="mini" type="success" @click="goAutoCode(scope.row)">复用</el-button>
<el-button size="mini" type="warning" @click="deleteRow(scope.row)">删除</el-button>
</div>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="page"
......@@ -42,7 +71,7 @@
<script>
// 获取列表内容封装在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' })
}
}
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册