This commit is contained in:
吕金泽 2022-03-23 21:00:44 +08:00
parent 8774b5f826
commit b6d0c2644d
6 changed files with 547 additions and 24 deletions

View File

@ -0,0 +1,10 @@
{
"properties" : { },
"id" : "f2538e0f370a4cabab0ae920f5e77ae7",
"name" : "代码生成",
"type" : "api",
"parentId" : "02df51e4d7184780a98b632f43dc5848",
"path" : "/code/gen",
"paths" : [ ],
"options" : [ ]
}

View File

@ -0,0 +1,99 @@
{
"properties" : { },
"id" : "6db309d3d6d0461c97419641849a99b4",
"script" : null,
"groupId" : "f2538e0f370a4cabab0ae920f5e77ae7",
"name" : "查出所有表",
"createTime" : null,
"updateTime" : 1647561263994,
"lock" : null,
"createBy" : null,
"updateBy" : null,
"path" : "/tables",
"method" : "GET",
"parameters" : [ ],
"options" : [ ],
"requestBody" : null,
"headers" : [ ],
"paths" : [ ],
"responseBody" : "{\n \"code\": 402,\n \"message\": \"凭证已过期\",\n \"data\": null,\n \"timestamp\": 1647561224202,\n \"executeTime\": null\n}",
"description" : null,
"requestBodyDefinition" : null,
"responseBodyDefinition" : {
"name" : "",
"value" : "",
"description" : "",
"required" : false,
"dataType" : "Object",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ {
"name" : "code",
"value" : "402",
"description" : "",
"required" : false,
"dataType" : "Integer",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ ]
}, {
"name" : "message",
"value" : "凭证已过期",
"description" : "",
"required" : false,
"dataType" : "String",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ ]
}, {
"name" : "data",
"value" : "null",
"description" : "",
"required" : false,
"dataType" : "Object",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ ]
}, {
"name" : "timestamp",
"value" : "1647561224202",
"description" : "",
"required" : false,
"dataType" : "Long",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ ]
}, {
"name" : "executeTime",
"value" : "null",
"description" : "",
"required" : false,
"dataType" : "Object",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ ]
} ]
}
}
================================
return db.select("""
select table_name, table_comment from information_schema.tables where table_schema = database()
""")

View File

@ -0,0 +1,207 @@
{
"properties" : { },
"id" : "98367deee5714ede88c1e134b16bebeb",
"script" : null,
"groupId" : "f2538e0f370a4cabab0ae920f5e77ae7",
"name" : "根据表名查出所有列",
"createTime" : null,
"updateTime" : 1647564370396,
"lock" : null,
"createBy" : null,
"updateBy" : null,
"path" : "/columns",
"method" : "GET",
"parameters" : [ {
"name" : "tableName",
"value" : "sys_user",
"description" : null,
"required" : false,
"dataType" : "String",
"type" : null,
"defaultValue" : null,
"validateType" : null,
"error" : null,
"expression" : null,
"children" : null
} ],
"options" : [ ],
"requestBody" : "",
"headers" : [ ],
"paths" : [ ],
"responseBody" : "{\n \"code\": 200,\n \"message\": \"success\",\n \"data\": {\n \"columns\": [{\n \"columnName\": \"username\",\n \"columnComment\": \"登录名\",\n \"dataType\": \"varchar\"\n }, {\n \"columnName\": \"name\",\n \"columnComment\": \"姓名/昵称\",\n \"dataType\": \"varchar\"\n }, {\n \"columnName\": \"password\",\n \"columnComment\": \"密码\",\n \"dataType\": \"varchar\"\n }, {\n \"columnName\": \"status\",\n \"columnComment\": \"状态\",\n \"dataType\": \"char\"\n }, {\n \"columnName\": \"phone\",\n \"columnComment\": \"手机号\",\n \"dataType\": \"varchar\"\n }, {\n \"columnName\": \"head_portrait\",\n \"columnComment\": \"头像\",\n \"dataType\": \"varchar\"\n }, {\n \"columnName\": \"is_login\",\n \"columnComment\": \"禁止登录0未禁用1已禁用\",\n \"dataType\": \"int\"\n }, {\n \"columnName\": \"sort\",\n \"columnComment\": \"排序\",\n \"dataType\": \"int\"\n }, {\n \"columnName\": \"office_id\",\n \"columnComment\": \"组织机构id\",\n \"dataType\": \"varchar\"\n }],\n \"primary\": {\n \"columnName\": \"id\"\n }\n },\n \"timestamp\": 1647564344902,\n \"executeTime\": 34\n}",
"description" : null,
"requestBodyDefinition" : null,
"responseBodyDefinition" : {
"name" : "",
"value" : "",
"description" : "",
"required" : false,
"dataType" : "Object",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ {
"name" : "code",
"value" : "200",
"description" : "",
"required" : false,
"dataType" : "Integer",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ ]
}, {
"name" : "message",
"value" : "success",
"description" : "",
"required" : false,
"dataType" : "String",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ ]
}, {
"name" : "data",
"value" : "",
"description" : "",
"required" : false,
"dataType" : "Object",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ {
"name" : "columns",
"value" : "",
"description" : "",
"required" : false,
"dataType" : "Array",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ {
"name" : "",
"value" : "",
"description" : "",
"required" : false,
"dataType" : "Object",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ {
"name" : "columnName",
"value" : "username",
"description" : "",
"required" : false,
"dataType" : "String",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ ]
}, {
"name" : "columnComment",
"value" : "登录名",
"description" : "",
"required" : false,
"dataType" : "String",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ ]
}, {
"name" : "dataType",
"value" : "varchar",
"description" : "",
"required" : false,
"dataType" : "String",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ ]
} ]
} ]
}, {
"name" : "primary",
"value" : "",
"description" : "",
"required" : false,
"dataType" : "Object",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ {
"name" : "columnName",
"value" : "id",
"description" : "",
"required" : false,
"dataType" : "String",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ ]
} ]
} ]
}, {
"name" : "timestamp",
"value" : "1647564344902",
"description" : "",
"required" : false,
"dataType" : "Long",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ ]
}, {
"name" : "executeTime",
"value" : "34",
"description" : "",
"required" : false,
"dataType" : "Integer",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ ]
} ]
}
}
================================
return {
columns: db.select("""
SELECT
column_name,
column_comment,
data_type
FROM
information_schema.COLUMNS
WHERE
table_name = #{tableName}
AND column_name NOT IN ( 'id', 'is_del', 'create_by', 'create_date', 'update_by', 'update_date' )
AND table_schema = DATABASE()
"""),
primary: db.selectValue("SELECT column_name FROM information_schema.COLUMNS WHERE table_name = #{tableName} and column_key = 'PRI' and table_schema = database()")
}

View File

@ -6,31 +6,145 @@
</div>
</template>
<script>
<script setup>
import { reactive,getCurrentInstance } from 'vue'
import genCode from '@/scripts/gen/gen-mb-list.js'
const { proxy } = getCurrentInstance()
const tableDatas = reactive([])
export default {
name: 'EditorTable',
data() {
return {
tableDatas: [],
cols: [{
type: 'input',
field: 'name',
title: '名称'
}, {
type: 'select',
field: 'role',
title: '角色',
properties: {
type: 'dict_type'
}
}]
}
},
methods: {
getData() {
console.log(this.tableDatas)
}
proxy.$get('/code/gen/columns', { tableName: 'sys_user' }).then(res => {
var columns = res.data.columns
var primary = res.data.primary
columns.forEach(it => {
tableDatas.push({
columnName: it.columnName,
columnComment: it.columnComment,
dataType: it.dataType
})
})
console.log(tableDatas)
})
const cols = reactive([{
field: 'columnName',
label: '列名'
}, {
field: 'columnComment',
label: '列说明',
component: 'input'
}, {
field: 'dataType',
label: '字段类型'
}, {
field: 'save',
label: '保存',
component: 'switch',
width: '80px'
}, {
field: 'list',
label: '列表',
component: 'switch',
width: '80px'
}, {
field: 'query',
label: '查询',
component: 'switch',
width: '80px'
}, {
field: 'where',
label: '匹配方式',
component: 'select',
props: {
options: [{
label: '=',
value: '='
},{
label: '!=',
value: '!='
},{
label: '>',
value: '>'
},{
label: '>=',
value: '>='
},{
label: '<',
value: '<'
},{
label: '<=',
value: '<='
},{
label: 'Between',
value: 'Between'
},{
label: 'Like',
value: 'Like'
},{
label: '左Like',
value: '左Like'
},{
label: '右Like',
value: '右Like'
}]
}
}, {
field: 'required',
label: '必填',
component: 'switch',
width: '80px'
}, {
field: 'component',
label: '控件类型',
component: 'select',
props: {
options: [{
label: '单行文本框',
value: 'input'
},{
label: '多行文本框',
value: 'textarea'
},{
label: '单选下拉框',
value: 'radioSelect'
},{
label: '多选下拉框',
value: 'multipleSelect'
},{
label: '单选按钮',
value: 'radio'
},{
label: '复选框',
value: 'checkbox'
},{
label: '日期选择',
value: 'date'
},{
label: '日期时间',
value: 'datetime'
},{
label: '图片上传',
value: 'uploadImage'
},{
label: '文件上传',
value: 'uploadFile'
}]
}
}, {
component: 'select',
field: 'dictType',
label: '字典类型',
props: {
url: 'dict/all',
showValue: true
}
}])
function gen(){
genCode('user', tableDatas)
}
function getData(){
console.log(tableDatas)
}
</script>

View File

@ -0,0 +1,27 @@
<template>
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="基本信息" name="basic">
<el-row :gutter="24">
<el-col :span="24">
<el-form-item label="分组名称">
<el-input v-model="formData.groupName"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-tab-pane>
<el-tab-pane label="字段信息" name="field">
</el-tab-pane>
<el-tab-pane label="生成信息" name="gen">
</el-tab-pane>
</el-tabs>
</template>
<script setup>
import {reactive, ref} from 'vue'
const activeName = ref('basic')
const formData = reactive({
groupName: ''
})
</script>

View File

@ -0,0 +1,66 @@
<template>
<mb-list ref="magicList" v-bind="listOptions" />
<mb-dialog ref="formDialog" title="配置" @confirm-click="magicForm.save($event)" width="50%">
<template #content>
<code-gen-form />
</template>
</mb-dialog>
</template>
<script setup>
import codeGenForm from './code-gen-form.vue'
import { ref, reactive, getCurrentInstance } from 'vue'
const { proxy } = getCurrentInstance()
const formDialog = ref()
const magicList = ref()
const magicForm = ref()
const listOptions = reactive({
tools: [{
type: 'add',
permission: 'code:gen:save',
click: () => {
formDialog.value.show()
}
}],
table: {
url: 'code/gen/list',
cols: [
{
field: 'tableName',
label: '表名'
},{
field: 'tableComment',
label: '描述'
}, {
label: '操作',
type: 'btns',
width: 140,
fixed: 'right',
btns: [
{
permission: 'code:gen:save',
label: '修改',
type: 'text',
icon: 'ElEdit',
click: (row) => {
formDialog.value.show()
}
}, {
permission: 'code:gen:delete',
label: '删除',
type: 'text',
icon: 'ElDelete',
click: (row) => {
// proxy.$common.handleDelete({
// url: 'user/delete',
// id: row.id,
// done: () => magicList.value.reload()
// })
}
}
]
}
]
}
})
</script>