代码生成优化 其他一些小优化

This commit is contained in:
吕金泽 2022-04-01 20:35:18 +08:00
parent b91328dcc7
commit df0bb5c38f
12 changed files with 121 additions and 48 deletions

View File

@ -1,10 +1,10 @@
{
"properties" : { },
"id" : "46a5f8f41666462987ae042469b99ff4",
"id" : "ae425d18ae6f44c9adc25028eb891d15",
"script" : null,
"groupId" : "7bdcc43555b9419caba2ee722e1aa2d3",
"name" : "保存",
"createTime" : 1648655132918,
"createTime" : 1648780777664,
"updateTime" : null,
"lock" : null,
"createBy" : null,
@ -24,6 +24,18 @@
"error" : null,
"expression" : null,
"children" : null
}, {
"name" : "permission",
"value" : "data:test:save",
"description" : "允许拥有该权限的访问",
"required" : false,
"dataType" : "String",
"type" : null,
"defaultValue" : null,
"validateType" : null,
"error" : null,
"expression" : null,
"children" : null
} ],
"requestBody" : null,
"headers" : [ ],

View File

@ -1,10 +1,10 @@
{
"properties" : { },
"id" : "d94a4788e17a4e0f9b67ca86b171e231",
"id" : "33639781fde24f32902b486bd0edd6ca",
"script" : null,
"groupId" : "7bdcc43555b9419caba2ee722e1aa2d3",
"name" : "列表",
"createTime" : 1648655132912,
"createTime" : 1648780777658,
"updateTime" : null,
"lock" : null,
"createBy" : null,
@ -12,7 +12,19 @@
"path" : "/list",
"method" : "POST",
"parameters" : [ ],
"options" : [ ],
"options" : [ {
"name" : "permission",
"value" : "data:test:view",
"description" : "允许拥有该权限的访问",
"required" : false,
"dataType" : "String",
"type" : null,
"defaultValue" : null,
"validateType" : null,
"error" : null,
"expression" : null,
"children" : null
} ],
"requestBody" : null,
"headers" : [ ],
"paths" : [ ],

View File

@ -1,10 +1,10 @@
{
"properties" : { },
"id" : "e1df886fe7604810b495d555abaa6200",
"id" : "5019707e422245b89e0b2bf00f9a2ec8",
"script" : null,
"groupId" : "7bdcc43555b9419caba2ee722e1aa2d3",
"name" : "删除",
"createTime" : 1648655132924,
"createTime" : 1648780777671,
"updateTime" : null,
"lock" : null,
"createBy" : null,
@ -12,7 +12,19 @@
"path" : "/delete",
"method" : "DELETE",
"parameters" : [ ],
"options" : [ ],
"options" : [ {
"name" : "permission",
"value" : "data:test:delete",
"description" : "允许拥有该权限的访问",
"required" : false,
"dataType" : "String",
"type" : null,
"defaultValue" : null,
"validateType" : null,
"error" : null,
"expression" : null,
"children" : null
} ],
"requestBody" : null,
"headers" : [ ],
"paths" : [ ],

View File

@ -1,10 +1,10 @@
{
"properties" : { },
"id" : "c999de118aa04594bc14c0e3f5ade568",
"id" : "ad14a4bc8cf54fc792125a59bc2d34ad",
"script" : null,
"groupId" : "7bdcc43555b9419caba2ee722e1aa2d3",
"name" : "详情",
"createTime" : 1648655132931,
"createTime" : 1648780777677,
"updateTime" : null,
"lock" : null,
"createBy" : null,
@ -12,7 +12,19 @@
"path" : "/get",
"method" : "GET",
"parameters" : [ ],
"options" : [ ],
"options" : [ {
"name" : "permission",
"value" : "data:test:view",
"description" : "允许拥有该权限的访问",
"required" : false,
"dataType" : "String",
"type" : null,
"defaultValue" : null,
"validateType" : null,
"error" : null,
"expression" : null,
"children" : null
} ],
"requestBody" : null,
"headers" : [ ],
"paths" : [ ],

View File

@ -5,7 +5,7 @@
"groupId" : "f2538e0f370a4cabab0ae920f5e77ae7",
"name" : "执行生成",
"createTime" : null,
"updateTime" : 1648651494341,
"updateTime" : 1648780783577,
"lock" : null,
"createBy" : null,
"updateBy" : null,
@ -308,7 +308,7 @@ if(commonField.contains('is_del')){
wheres += ` and is_del = 0\n`
}
wheres = wheres.substring(0,wheres.length() - 1)
var permissionPrefix = (info.modulePath + info.businessPath).replace(/^\//,'').replace(/\/\//, '/').replace('/', ':')
ApiInfo listApi = new ApiInfo()
listApi.setName("列表")
listApi.setPath("/list")
@ -318,6 +318,7 @@ listApi.setScript(`return db.page("""
select ${primary},${listFields} from ${tableName} where 1=1
${wheres}
""")`)
listApi.setOption([new Option('permission', `${permissionPrefix}:view`, '允许拥有该权限的访问')])
MagicResourceService.saveFile(listApi)
var saveMethod = 'save(data)'
@ -331,7 +332,7 @@ saveApi.setPath("/save")
saveApi.setMethod("POST")
saveApi.setGroupId(businessGroup.getId())
saveApi.setScript(`return db.table('${tableName}').primary('${primary}').${saveMethod}`)
saveApi.setOption([new Option('wrap_request_parameter', 'data')])
saveApi.setOption([new Option('wrap_request_parameter', 'data'), new Option('permission', `${permissionPrefix}:save`, '允许拥有该权限的访问')])
MagicResourceService.saveFile(saveApi)
ApiInfo deleteApi = new ApiInfo()
@ -340,6 +341,7 @@ deleteApi.setPath("/delete")
deleteApi.setMethod("DELETE")
deleteApi.setGroupId(businessGroup.getId())
deleteApi.setScript(`return db.table('${tableName}')${logic}.where().eq('${primary}', ${primaryLowerCamelCase}).delete()`)
deleteApi.setOption([new Option('permission', `${permissionPrefix}:delete`, '允许拥有该权限的访问')])
MagicResourceService.saveFile(deleteApi)
var saveFields = columns.filter(it => it.save).map(it => it.columnName.replace(/([A-Z])/g,"_$1").toLowerCase()).join(',')
@ -352,6 +354,7 @@ getApi.setGroupId(businessGroup.getId())
getApi.setScript(`return db.selectOne("""
select ${primary},${saveFields} from ${tableName} where ${primary} = #{${primaryLowerCamelCase}}
""")`)
getApi.setOption([new Option('permission', `${permissionPrefix}:view`, '允许拥有该权限的访问')])
MagicResourceService.saveFile(getApi)

View File

@ -1,10 +1,10 @@
{
"properties" : { },
"id" : "f4ebe91beaef452498879a98556481eb",
"id" : "64c78249fafd4ddcbcac12d734645b67",
"script" : null,
"groupId" : "eb5dbed949de4f50ba4bf59f483252a5",
"name" : "列表",
"createTime" : 1648655132940,
"createTime" : 1648780777685,
"updateTime" : null,
"lock" : null,
"createBy" : null,
@ -55,22 +55,20 @@
},
cols: [
{
field: 'name',
label: '名字'
},
{
dictType: 'sex',
field: 'sex',
label: '性别'
label: '性别',
dictType: 'sex'
},
{
field: 'headPortrait',
label: '头像'
label: '头像',
type: 'image'
},
{
field: 'remarks',
label: '备注'
},{
@ -124,7 +122,7 @@
name: 'name',
label: '名字',
component: 'input',
rules: [{ required: true, message: '请输入名字', trigger: 'change' }]
},{
span: 12,
name: 'sex',
@ -138,7 +136,7 @@
name: 'headPortrait',
label: '头像',
component: 'upload-image',
rules: [{ required: true, message: '请选择头像', trigger: 'change' }]
},{
span: 12,
name: 'remarks',
@ -147,8 +145,7 @@
props: {
type: 'textarea'
}
,
}]
}]
}

View File

@ -14,7 +14,7 @@
@close="$emit('close')"
>
<slot name="content" />
<template #footer>
<template v-if="showFooter" #footer>
<div slot="footer" class="dialog-footer">
<slot name="btns">
<el-button @click="hide">
@ -48,6 +48,10 @@ export default {
destroyOnClose: {
type: Boolean,
default: true
},
showFooter: {
type: Boolean,
default: true
}
},
data() {

View File

@ -31,7 +31,11 @@
</el-button>
</template>
</div>
<el-image v-else-if="col.type === 'image'" :src="scope.row[col.field]" :preview-src-list="[scope.row[col.field]]" />
<el-image
v-else-if="col.type === 'image'"
:src="scope.row[col.field].startsWith('http') ? scope.row[col.field] : $global.baseApi + scope.row[col.field]"
:preview-src-list="[scope.row[col.field].startsWith('http') ? scope.row[col.field] : $global.baseApi + scope.row[col.field]]"
/>
<span v-else-if="col.type === 'html'" v-html="scope.row[col.field]"></span>
<span v-else-if="col.click">
<a style="color: blue" @click="col.click(scope.row)">{{ scope.row[col.field] }}</a>

View File

@ -6,14 +6,18 @@
</div>
<div class="header-right">
<div class="avatar">
<el-avatar :size="40" fit="contain" :src="$global.baseApi + $global.user.info.headPortrait">
{{ !$global.user.info.headPortrait ? $global.user.info.name.substring(0,1) : '' }}
</el-avatar>
<el-dropdown>
<span class="username">{{ $global.user.info.username }}</span>
<el-icon class="el-icon--right" color="white">
<arrow-down />
</el-icon>
<el-col>
<el-avatar :size="40" fit="contain" :src="$global.baseApi + $global.user.info.headPortrait">
{{ !$global.user.info.headPortrait ? $global.user.info.name.substring(0,1) : '' }}
</el-avatar>
</el-col>
<el-col style="line-height: 40px;">
<span class="username">{{ $global.user.info.username }}</span>
<el-icon class="el-icon--right" color="white">
<arrow-down />
</el-icon>
</el-col>
<template #dropdown>
<el-dropdown-menu>
<router-link to="/user-center">

View File

@ -43,18 +43,22 @@ function gen(groupPath, data){
for(var i in data){
var d = data[i]
if(d.list){
var type = ''
if(d.component){
if(d.component.indexOf('upload-image') != -1){
type = `,
type: 'image'`
}
}
var dictType = ''
if(d.dictType){
html += `
{
dictType: '${d.dictType}',`
}else{
html += `
{
`
dictType = `,
dictType: '${d.dictType}'`
}
html += `
{
field: '${d.columnName}',
label: '${d.columnComment}'
label: '${d.columnComment}'${type}${dictType}
},`
}
}
@ -111,16 +115,25 @@ function gen(groupPath, data){
if(d.save){
var props = ''
if(d.dictType){
props = `props: {
props = `,
props: {
type: '${d.dictType}'
}`
}
var rules = ''
if(d.required){
var messagePrefix = '请选择'
if(d.component.indexOf('input') != -1){
messagePrefix = '请输入'
}
rules = `,
rules: [{ required: true, message: '${messagePrefix}${d.columnComment}', trigger: 'change' }]`
}
html += `{
span: 12,
name: '${d.columnName}',
label: '${d.columnComment}',
${d.component},
${props}
${d.component}${props}${rules}
},`
}
}

View File

@ -49,7 +49,7 @@
</template>
</mb-dialog>
<mb-dialog ref="dictItemsDialog" title="字典项" width="1400px">
<mb-dialog ref="dictItemsDialog" title="字典项" width="1400px" :show-footer="false">
<template #content>
<dict-items :key="Math.random()" v-model:dict-id="dictId" />
</template>

View File

@ -1,5 +1,5 @@
<template>
<el-form ref="dataForm" :rules="rules" :model="temp" label-position="right" label-width="80px" v-if="isForm">
<el-form ref="dataForm" :rules="rules" :model="temp" label-position="right" label-width="90px" v-if="isForm">
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="登录名称" prop="username">