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

代码生成器支持直接使用字典

修复查询涉及sql关键字时sql语句报错问题
上级 323236e7
import { getDict } from "@/utils/dictionary";
export default { export default {
data() { data() {
return { return {
...@@ -9,6 +10,14 @@ export default { ...@@ -9,6 +10,14 @@ export default {
} }
}, },
methods: { methods: {
filterDict(value,type){
const rowLabel = this[type+"Options"]&&this[type+"Options"].filter(item=>item.value == value)
return rowLabel&&rowLabel[0]&&rowLabel[0].label
},
async getDict(type){
const dicts = await getDict(type)
this[type+"Options"] = dicts
},
handleSizeChange(val) { handleSizeChange(val) {
this.pageSize = val this.pageSize = val
this.getTableData() this.getTableData()
......
<template> <template>
<div> <div>
<span style="color:red">搜索时如果条件为LIKE只支持字符串</span> <span style="color:red">搜索时如果条件为LIKE只支持字符串</span>
<el-form :model="dialogMiddle" ref="fieldDialogFrom" label-width="120px" label-position="left" :rules="rules"> <el-form
<el-form-item label="Field名称" prop="fieldName"> :model="dialogMiddle"
<el-col :span="6"> ref="fieldDialogFrom"
<el-input v-model="dialogMiddle.fieldName" autocomplete="off"></el-input> label-width="120px"
</el-col> label-position="left"
</el-form-item> :rules="rules"
<el-form-item label="Field中文名" prop="fieldDesc"> >
<el-col :span="6"> <el-form-item label="Field名称" prop="fieldName">
<el-input v-model="dialogMiddle.fieldDesc" autocomplete="off"></el-input> <el-col :span="6">
</el-col> <el-input v-model="dialogMiddle.fieldName" autocomplete="off"></el-input>
</el-form-item> </el-col>
<el-form-item label="FieldJSON" prop="fieldJson"> </el-form-item>
<el-col :span="6"> <el-form-item label="Field中文名" prop="fieldDesc">
<el-input v-model="dialogMiddle.fieldJson" autocomplete="off"></el-input> <el-col :span="6">
</el-col> <el-input v-model="dialogMiddle.fieldDesc" autocomplete="off"></el-input>
</el-form-item> </el-col>
<el-form-item label="数据库字段名" prop="columnName"> </el-form-item>
<el-col :span="6"> <el-form-item label="FieldJSON" prop="fieldJson">
<el-input v-model="dialogMiddle.columnName" autocomplete="off"></el-input> <el-col :span="6">
</el-col> <el-input v-model="dialogMiddle.fieldJson" autocomplete="off"></el-input>
</el-form-item> </el-col>
<el-form-item label="数据库字段描述" prop="comment"> </el-form-item>
<el-col :span="6"> <el-form-item label="数据库字段名" prop="columnName">
<el-input v-model="dialogMiddle.comment" autocomplete="off"></el-input> <el-col :span="6">
</el-col> <el-input v-model="dialogMiddle.columnName" autocomplete="off"></el-input>
</el-form-item> </el-col>
<el-form-item label="Field数据类型" prop="fieldType"> </el-form-item>
<el-col :span="8"> <el-form-item label="数据库字段描述" prop="comment">
<el-select v-model="dialogMiddle.fieldType" placeholder="请选择field数据类型" @change="getDbfdOptions" clearable > <el-col :span="6">
<el-option <el-input v-model="dialogMiddle.comment" autocomplete="off"></el-input>
v-for="item in typeOptions" </el-col>
:key="item.value" </el-form-item>
:label="item.label" <el-form-item label="Field数据类型" prop="fieldType">
:value="item.value"> <el-col :span="8">
</el-option> <el-select
</el-select> v-model="dialogMiddle.fieldType"
</el-col> placeholder="请选择field数据类型"
</el-form-item> @change="getDbfdOptions"
clearable
>
<el-option
v-for="item in typeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-col>
</el-form-item>
<el-form-item label="数据库字段类型" prop="dataType"> <el-form-item label="数据库字段类型" prop="dataType">
<el-col :span="8"> <el-col :span="8">
<el-select :disabled="!dialogMiddle.fieldType" v-model="dialogMiddle.dataType" placeholder="请选择数据库字段类型" clearable > <el-select
<el-option :disabled="!dialogMiddle.fieldType"
v-for="item in dbfdOptions" v-model="dialogMiddle.dataType"
:key="item.label" placeholder="请选择数据库字段类型"
:label="item.label" clearable
:value="item.label"> >
</el-option> <el-option
</el-select> v-for="item in dbfdOptions"
</el-col> :key="item.label"
</el-form-item> :label="item.label"
<el-form-item label="数据库字段长度" prop="dataTypeLong"> :value="item.label"
<el-col :span="6"> ></el-option>
<el-input :disabled="!dialogMiddle.dataType" v-model="dialogMiddle.dataTypeLong"></el-input> </el-select>
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item label="Field查询条件" prop="fieldSearchType"> <el-form-item label="数据库字段长度" prop="dataTypeLong">
<el-col :span="8"> <el-col :span="6">
<el-select v-model="dialogMiddle.fieldSearchType" placeholder="请选择Field查询条件" clearable > <el-input :disabled="!dialogMiddle.dataType" v-model="dialogMiddle.dataTypeLong"></el-input>
<el-option </el-col>
v-for="item in typeSearchOptions" </el-form-item>
:key="item.value" <el-form-item label="Field查询条件" prop="fieldSearchType">
:label="item.label" <el-col :span="8">
:value="item.value"> <el-select v-model="dialogMiddle.fieldSearchType" placeholder="请选择Field查询条件" clearable>
</el-option> <el-option
</el-select> v-for="item in typeSearchOptions"
</el-col> :key="item.value"
</el-form-item> :label="item.label"
</el-form> :value="item.value"
</div> ></el-option>
</el-select>
</el-col>
</el-form-item>
<el-form-item label="关联字典" prop="dictType">
<el-col :span="8">
<el-select :disabled="dialogMiddle.fieldType!='int'" v-model="dialogMiddle.dictType" placeholder="请选择字典" clearable>
<el-option
v-for="item in dictOptions"
:key="item.type"
:label="`${item.type}(${item.name})`"
:value="item.type"
></el-option>
</el-select>
</el-col>
</el-form-item>
</el-form>
</div>
</template> </template>
<script> <script>
import {getDict} from '@/utils/dictionary' import { getDict } from "@/utils/dictionary";
import { getSysDictionaryList } from "@/api/sysDictionary";
export default { export default {
name:"FieldDialog", name: "FieldDialog",
props:{ props: {
dialogMiddle:{ dialogMiddle: {
type:Object, type: Object,
default:function(){ default: function() {
return {} return {};
} }
} }
}, },
data(){ data() {
return{ return {
dbfdOptions:[], dbfdOptions: [],
visible:false, visible: false,
typeSearchOptions:[ dictOptions: [],
{ typeSearchOptions: [
label:"=", {
value:"=" label: "=",
}, value: "="
{ },
label:"<>", {
value:"<>" label: "<>",
}, value: "<>"
{ },
label:">", {
value:">" label: ">",
}, value: ">"
{ },
label:"<", {
value:"<" label: "<",
}, value: "<"
{ },
label:"LIKE", {
value:"LIKE" label: "LIKE",
}, value: "LIKE"
],
typeOptions:[
{
label:"字符串",
value:"string"
},
{
label:"整型",
value:"int"
},
{
label:"布尔值",
value:"bool"
},
{
label:"浮点型",
value:"float64"
},
{
label:"时间",
value:"time.Time"
},
],
rules:{
fieldName:[ { required: true, message: '请输入field英文名', trigger: 'blur' }],
fieldDesc:[ { required: true, message: '请输入field中文名', trigger: 'blur' }],
fieldJson:[ { required: true, message: '请输入field格式化json', trigger: 'blur' }],
columnName:[{ required: true, message: '请输入数据库字段', trigger: 'blur' }],
fieldType:[ { required: true, message: '请选择field数据类型', trigger: 'blur' }]
}
} }
}, ],
methods: { typeOptions: [
async getDbfdOptions(){ {
if(this.dialogMiddle.fieldType){ label: "字符串",
const res = await getDict(this.dialogMiddle.fieldType) value: "string"
this.dbfdOptions = res },
} {
label: "整型",
value: "int"
},
{
label: "布尔值",
value: "bool"
},
{
label: "浮点型",
value: "float64"
},
{
label: "时间",
value: "time.Time"
} }
}, ],
created() { rules: {
this.getDbfdOptions() fieldName: [
}, { required: true, message: "请输入field英文名", trigger: "blur" }
} ],
fieldDesc: [
{ required: true, message: "请输入field中文名", trigger: "blur" }
],
fieldJson: [
{ required: true, message: "请输入field格式化json", trigger: "blur" }
],
columnName: [
{ required: true, message: "请输入数据库字段", trigger: "blur" }
],
fieldType: [
{ required: true, message: "请选择field数据类型", trigger: "blur" }
]
}
};
},
methods: {
async getDbfdOptions() {
this.dialogMiddle.dataType = ""
this.dialogMiddle.dataTypeLong = ""
this.dialogMiddle.fieldSearchType = ""
this.dialogMiddle.dictType = ""
if (this.dialogMiddle.fieldType) {
const res = await getDict(this.dialogMiddle.fieldType);
this.dbfdOptions = res;
}
}
},
async created() {
this.getDbfdOptions();
const dictRes = await getSysDictionaryList({
page: 1,
pageSize: 999999
});
this.dictOptions = dictRes.data.list
}
};
</script> </script>
<style lang="scss"> <style lang="scss">
</style> </style>
...@@ -79,6 +79,7 @@ ...@@ -79,6 +79,7 @@
<el-table-column prop="columnName" label="数据库字段" width="130"></el-table-column> <el-table-column prop="columnName" label="数据库字段" width="130"></el-table-column>
<el-table-column prop="comment" label="数据库字段描述" width="130"></el-table-column> <el-table-column prop="comment" label="数据库字段描述" width="130"></el-table-column>
<el-table-column prop="fieldSearchType" label="搜索条件" width="130"></el-table-column> <el-table-column prop="fieldSearchType" label="搜索条件" width="130"></el-table-column>
<el-table-column prop="dictType" label="字典" width="130"></el-table-column>
<el-table-column label="操作" width="300"> <el-table-column label="操作" width="300">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
...@@ -135,7 +136,8 @@ const fieldTemplate = { ...@@ -135,7 +136,8 @@ const fieldTemplate = {
columnName: "", columnName: "",
dataTypeLong: "", dataTypeLong: "",
comment: "", comment: "",
fieldSearchType: "" fieldSearchType: "",
dictType:""
}; };
import FieldDialog from "@/view/systemTools/autoCode/component/fieldDialog.vue"; import FieldDialog from "@/view/systemTools/autoCode/component/fieldDialog.vue";
...@@ -332,7 +334,8 @@ export default { ...@@ -332,7 +334,8 @@ export default {
dataTypeLong: item.dataTypeLong, dataTypeLong: item.dataTypeLong,
columnName: item.columeName, columnName: item.columeName,
comment: item.columeComment, comment: item.columeComment,
fieldSearchType: "" fieldSearchType: "",
dictType:""
}); });
} }
}); });
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册