|
|
@@ -19,7 +19,8 @@
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item prop="dataBaseType" label="库类型">
|
|
|
- <el-select placeholder="库类型" size="small" v-model="formData.dataBaseType" @change="changeDataBaseType" class="filter-item">
|
|
|
+ <el-select placeholder="库类型" size="small" v-model="formData.dataBaseType" @change="changeDataBaseType"
|
|
|
+ class="filter-item">
|
|
|
<el-option label="Mysql" value="Mysql">
|
|
|
</el-option>
|
|
|
<el-option label="SqlServer" value="SqlServer">
|
|
|
@@ -28,8 +29,10 @@
|
|
|
</el-form-item>
|
|
|
<el-form-item prop="dataSourceCode" label="数据库">
|
|
|
|
|
|
- <el-select placeholder="数据库" size="small" v-model="formData.dataSourceCode" @change="changeDataSourceCode" class="filter-item">
|
|
|
- <el-option v-for="item in datasourceInfoList" :label="item.databaseName" :value="item.code" :key="item.code"></el-option>
|
|
|
+ <el-select placeholder="数据库" size="small" v-model="formData.dataSourceCode"
|
|
|
+ @change="changeDataSourceCode" class="filter-item">
|
|
|
+ <el-option v-for="item in datasourceInfoList" :label="item.databaseName" :value="item.code"
|
|
|
+ :key="item.code"></el-option>
|
|
|
</el-select>
|
|
|
|
|
|
</el-form-item>
|
|
|
@@ -39,7 +42,8 @@
|
|
|
</el-form-item>
|
|
|
<el-form-item prop="tableName" label="表名" v-if="formData.readTable">
|
|
|
|
|
|
- <el-select placeholder="表名" size="small" clearable filterable v-model="formData.tableName" @change="changeTableName" class="filter-item">
|
|
|
+ <el-select placeholder="表名" size="small" clearable filterable v-model="formData.tableName"
|
|
|
+ @change="changeTableName" class="filter-item">
|
|
|
<el-option v-for="item in tableList" :label="item" :value="item" :key="item"></el-option>
|
|
|
</el-select>
|
|
|
|
|
|
@@ -67,7 +71,8 @@
|
|
|
<el-table-column prop="type" label="类型" width="150" align="center">
|
|
|
<template slot-scope="{row}">
|
|
|
<el-select v-model="row.jdbcType" filterable>
|
|
|
- <el-option v-for="item in fieldTypes" :value="item" :label="item" :key="item"></el-option>
|
|
|
+ <el-option v-for="item in fieldTypes" :value="item" :label="item"
|
|
|
+ :key="item"></el-option>
|
|
|
</el-select>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
@@ -107,7 +112,8 @@
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column width="130" align="center">
|
|
|
- <template slot-scope="{ row, column, $index }" v-if="$index>1||formData.dataBaseType!='Mysql'">
|
|
|
+ <template slot-scope="{ row, column, $index }"
|
|
|
+ v-if="$index>1||formData.dataBaseType!='Mysql'">
|
|
|
<el-button @click="moveUp($index)" size="small" type="text">上移</el-button>
|
|
|
<el-button @click="moveDown($index)" size="small" type="text">下移</el-button>
|
|
|
<el-button @click="removeField($index)" size="small" type="text">删除</el-button>
|
|
|
@@ -127,7 +133,8 @@
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="showInForm" label="表单" width="50" align="center">
|
|
|
<template slot-scope="{row}">
|
|
|
- <el-checkbox v-model="row.showInForm" :disabled="row.primaryKey&&!formData.readTable"></el-checkbox>
|
|
|
+ <el-checkbox v-model="row.showInForm"
|
|
|
+ :disabled="row.primaryKey&&!formData.readTable"></el-checkbox>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="searchable" label="搜索" width="50" align="center">
|
|
|
@@ -143,21 +150,32 @@
|
|
|
<el-table-column prop="formType" label="表单类型" width="150" align="center">
|
|
|
<template slot-scope="{row}">
|
|
|
<el-select v-model="row.formType">
|
|
|
- <el-option v-for="item in formTypes" :label="item.label" :value="item.value" :key="item.value"></el-option>
|
|
|
+ <el-option v-for="item in formTypes" :label="item.label" :value="item.value"
|
|
|
+ :key="item.value"></el-option>
|
|
|
</el-select>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="apiFlag" label="接口" width="300" align="center">
|
|
|
<template slot-scope="{row}">
|
|
|
- <el-radio v-model="row.apiFlag" label="1" :disabled="row.formType!='select'&&row.formType!='multiSelect'">枚举</el-radio>
|
|
|
- <el-radio v-model="row.apiFlag" label="2" :disabled="row.formType!='select'&&row.formType!='multiSelect'">接口</el-radio>
|
|
|
- <el-radio v-model="row.apiFlag" label="3" :disabled="row.formType!='select'&&row.formType!='multiSelect'">表</el-radio>
|
|
|
+ <el-radio v-model="row.apiFlag" label="1"
|
|
|
+ :disabled="row.formType!='select'&&row.formType!='multiSelect'">枚举
|
|
|
+ </el-radio>
|
|
|
+ <el-radio v-model="row.apiFlag" label="2"
|
|
|
+ :disabled="row.formType!='select'&&row.formType!='multiSelect'">接口
|
|
|
+ </el-radio>
|
|
|
+ <el-radio v-model="row.apiFlag" label="3"
|
|
|
+ :disabled="row.formType!='select'&&row.formType!='multiSelect'">表
|
|
|
+ </el-radio>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="optionsValue" label="选项" min-width="150" align="center">
|
|
|
<template slot-scope="{row}">
|
|
|
- <el-input type="textarea" v-if="row.apiFlag=='1'&&(row.formType=='select'||row.formType=='multiSelect')" v-model="row.optionsValue"></el-input>
|
|
|
- <div v-if="(row.apiFlag=='2'||row.apiFlag=='3')&&(row.formType=='select'||row.formType=='multiSelect')" @click="editSelectField(row)">
|
|
|
+ <el-input type="textarea"
|
|
|
+ v-if="row.apiFlag=='1'&&(row.formType=='select'||row.formType=='multiSelect')"
|
|
|
+ v-model="row.optionsValue"></el-input>
|
|
|
+ <div
|
|
|
+ v-if="(row.apiFlag=='2'||row.apiFlag=='3')&&(row.formType=='select'||row.formType=='multiSelect')"
|
|
|
+ @click="editSelectField(row)">
|
|
|
<el-input type="textarea" :value="optionsInfo(row)"></el-input>
|
|
|
</div>
|
|
|
|
|
|
@@ -214,7 +232,8 @@
|
|
|
<el-table-column prop="validatorType" label="校验类型" width="150" align="center">
|
|
|
<template slot-scope="{row}">
|
|
|
<el-select v-model="row.validatorType" clearable>
|
|
|
- <el-option v-for="item in validatorTypes" :label="item.label" :value="item.value" :key="item.value"></el-option>
|
|
|
+ <el-option v-for="item in validatorTypes" :label="item.label"
|
|
|
+ :value="item.value" :key="item.value"></el-option>
|
|
|
</el-select>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
@@ -243,7 +262,8 @@
|
|
|
<el-table-column prop="subCode" label="子表类" width="150" align="center">
|
|
|
<template slot-scope="{row}">
|
|
|
<el-select v-model="row.subCode" clearable>
|
|
|
- <el-option v-for="item in subCodes" :label="item.className" :value="item.className" :key="item.className"></el-option>
|
|
|
+ <el-option v-for="item in subCodes" :label="item.className"
|
|
|
+ :value="item.className" :key="item.className"></el-option>
|
|
|
</el-select>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
@@ -267,18 +287,24 @@
|
|
|
<el-dialog title="接口选项" :visible.sync="showSelectDialog">
|
|
|
<el-form :model="selectField">
|
|
|
<el-form-item label="接口">
|
|
|
- <el-select placeholder="接口" size="small" filterable clearable v-model="selectField.optionsMethod" class="filter-item">
|
|
|
- <el-option v-for="item in selectMappings" :label="item.url" :value="item.url" :key="item.url"></el-option>
|
|
|
+ <el-select placeholder="接口" size="small" filterable clearable v-model="selectField.optionsMethod"
|
|
|
+ class="filter-item">
|
|
|
+ <el-option v-for="item in selectMappings" :label="item.url" :value="item.url"
|
|
|
+ :key="item.url"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="显示">
|
|
|
- <el-select v-if="selectField.optionsMethod&&selectField.apiFlag=='2'" filterable clearable placeholder="显示" size="small" v-model="selectField.optionsLabel" class="filter-item">
|
|
|
- <el-option v-for="item in selectMappingsJson[selectField.optionsMethod].fileds.split(',')" :label="item" :value="item" :key="item"></el-option>
|
|
|
+ <el-select v-if="selectField.optionsMethod&&selectField.apiFlag=='2'" filterable clearable
|
|
|
+ placeholder="显示" size="small" v-model="selectField.optionsLabel" class="filter-item">
|
|
|
+ <el-option v-for="item in selectMappingsJson[selectField.optionsMethod].fileds.split(',')"
|
|
|
+ :label="item" :value="item" :key="item"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="选项">
|
|
|
- <el-select v-if="selectField.optionsMethod&&selectField.apiFlag=='2'" filterable clearable placeholder="选项" size="small" v-model="selectField.optionsValue" class="filter-item">
|
|
|
- <el-option v-for="item in selectMappingsJson[selectField.optionsMethod].fileds.split(',')" :label="item" :value="item" :key="item"></el-option>
|
|
|
+ <el-select v-if="selectField.optionsMethod&&selectField.apiFlag=='2'" filterable clearable
|
|
|
+ placeholder="选项" size="small" v-model="selectField.optionsValue" class="filter-item">
|
|
|
+ <el-option v-for="item in selectMappingsJson[selectField.optionsMethod].fileds.split(',')"
|
|
|
+ :label="item" :value="item" :key="item"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
@@ -291,7 +317,9 @@
|
|
|
<el-dialog title="表选项" :visible.sync="showTableSelectDialog">
|
|
|
<el-form :model="selectField">
|
|
|
<el-form-item label="库类型">
|
|
|
- <el-select placeholder="库类型" size="small" filterable clearable v-model="selectField.optionsDataBaseType" @change="changeOptionsDataBaseType" class="filter-item">
|
|
|
+ <el-select placeholder="库类型" size="small" filterable clearable
|
|
|
+ v-model="selectField.optionsDataBaseType" @change="changeOptionsDataBaseType"
|
|
|
+ class="filter-item">
|
|
|
<el-option label="Mysql" value="Mysql">
|
|
|
</el-option>
|
|
|
<el-option label="SqlServer" value="SqlServer">
|
|
|
@@ -300,29 +328,37 @@
|
|
|
</el-form-item>
|
|
|
<el-form-item label="数据库">
|
|
|
|
|
|
- <el-select placeholder="数据库" size="small" filterable clearable v-model="selectField.optionsDataSourceCode" @change="changeOptionsDataSourceCode" class="filter-item">
|
|
|
- <el-option v-for="item in optionsDatasourceInfoList" :label="item.databaseName" :value="item.code" :key="item.code"></el-option>
|
|
|
+ <el-select placeholder="数据库" size="small" filterable clearable
|
|
|
+ v-model="selectField.optionsDataSourceCode" @change="changeOptionsDataSourceCode"
|
|
|
+ class="filter-item">
|
|
|
+ <el-option v-for="item in optionsDatasourceInfoList" :label="item.databaseName"
|
|
|
+ :value="item.code" :key="item.code"></el-option>
|
|
|
</el-select>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="表名">
|
|
|
|
|
|
- <el-select placeholder="表名" size="small" clearable filterable v-model="selectField.optionsMethod" @change="changeOptionsTableName" class="filter-item">
|
|
|
+ <el-select placeholder="表名" size="small" clearable filterable v-model="selectField.optionsMethod"
|
|
|
+ @change="changeOptionsTableName" class="filter-item">
|
|
|
<el-option v-for="item in optionsTableList" :label="item" :value="item" :key="item"></el-option>
|
|
|
</el-select>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="显示">
|
|
|
- <el-select v-if="selectField.optionsMethod&&selectField.apiFlag=='3'" filterable clearable placeholder="显示" size="small" v-model="selectField.optionsLabel" class="filter-item">
|
|
|
- <el-option v-for="item in optionsFields" :label="item.name" :value="item.name" :key="item.name"></el-option>
|
|
|
+ <el-select v-if="selectField.optionsMethod&&selectField.apiFlag=='3'" filterable clearable
|
|
|
+ placeholder="显示" size="small" v-model="selectField.optionsLabel" class="filter-item">
|
|
|
+ <el-option v-for="item in optionsFields" :label="item.name" :value="item.name"
|
|
|
+ :key="item.name"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="选项">
|
|
|
- <el-select v-if="selectField.optionsMethod&&selectField.apiFlag=='3'" filterable clearable placeholder="选项" size="small" v-model="selectField.optionsValue" class="filter-item">
|
|
|
- <el-option v-for="item in optionsFields" :label="item.name" :value="item.name" :key="item.name"></el-option>
|
|
|
+ <el-select v-if="selectField.optionsMethod&&selectField.apiFlag=='3'" filterable clearable
|
|
|
+ placeholder="选项" size="small" v-model="selectField.optionsValue" class="filter-item">
|
|
|
+ <el-option v-for="item in optionsFields" :label="item.name" :value="item.name"
|
|
|
+ :key="item.name"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
@@ -421,38 +457,38 @@
|
|
|
data() {
|
|
|
return {
|
|
|
loading: false,
|
|
|
- fieldTypes: ['char', 'varchar', 'int', 'text', 'timestamp', 'datetime', 'decimal', 'float', 'vue'],
|
|
|
+ fieldTypes: ['char', 'varchar', 'int', 'bit', 'text', 'timestamp', 'datetime', 'decimal', 'float', 'vue'],
|
|
|
searchMethods: ['=', '!=', '>', '>=', '<', '<=', 'between', 'like', 'left like', 'right like'],
|
|
|
formTypes: [
|
|
|
|
|
|
- { label: '单行文本', value: 'singleLineText' },
|
|
|
- { label: '数字', value: 'number' },
|
|
|
- { label: '日期选择', value: 'date' },
|
|
|
- { label: '日期时间选择', value: 'datetime' },
|
|
|
- { label: '登录名', value: 'loginName' },
|
|
|
- { label: '当前时间', value: 'currentTime' },
|
|
|
- { label: '当前日期', value: 'currentDate' },
|
|
|
- { label: '单选下拉框', value: 'select' },
|
|
|
- { label: '多选下拉框', value: 'multiSelect' },
|
|
|
- { label: '单图上传', value: 'singleImage' },
|
|
|
- { label: '多图上传', value: 'multiImage' },
|
|
|
- { label: '文件上传', value: 'fileUpload' },
|
|
|
- { label: '树形选择', value: 'tree' },
|
|
|
- { label: '开关', value: 'switch' },
|
|
|
- { label: '多行文本', value: 'textarea' },
|
|
|
- { label: '富文本', value: 'richText' },
|
|
|
+ {label: '单行文本', value: 'singleLineText'},
|
|
|
+ {label: '数字', value: 'number'},
|
|
|
+ {label: '日期选择', value: 'date'},
|
|
|
+ {label: '日期时间选择', value: 'datetime'},
|
|
|
+ {label: '登录名', value: 'loginName'},
|
|
|
+ {label: '当前时间', value: 'currentTime'},
|
|
|
+ {label: '当前日期', value: 'currentDate'},
|
|
|
+ {label: '单选下拉框', value: 'select'},
|
|
|
+ {label: '多选下拉框', value: 'multiSelect'},
|
|
|
+ {label: '单图上传', value: 'singleImage'},
|
|
|
+ {label: '多图上传', value: 'multiImage'},
|
|
|
+ {label: '文件上传', value: 'fileUpload'},
|
|
|
+ {label: '树形选择', value: 'tree'},
|
|
|
+ {label: '开关', value: 'switch'},
|
|
|
+ {label: '多行文本', value: 'textarea'},
|
|
|
+ {label: '富文本', value: 'richText'},
|
|
|
],
|
|
|
validatorTypes: [
|
|
|
- { label: '英文', value: 'english' },
|
|
|
- { label: '数字', value: 'number' },
|
|
|
- { label: '手机', value: 'phone' },
|
|
|
- { label: '网址', value: 'url' },
|
|
|
- { label: '电子邮件', value: 'email' },
|
|
|
- { label: '身份证', value: 'id' }
|
|
|
+ {label: '英文', value: 'english'},
|
|
|
+ {label: '数字', value: 'number'},
|
|
|
+ {label: '手机', value: 'phone'},
|
|
|
+ {label: '网址', value: 'url'},
|
|
|
+ {label: '电子邮件', value: 'email'},
|
|
|
+ {label: '身份证', value: 'id'}
|
|
|
],
|
|
|
rules: {
|
|
|
className: [
|
|
|
- { required: true, message: '请填写类名', trigger: 'blur' },
|
|
|
+ {required: true, message: '请填写类名', trigger: 'blur'},
|
|
|
{
|
|
|
validator: (rule, value, callback) => {
|
|
|
if (value) {
|
|
|
@@ -466,7 +502,7 @@
|
|
|
}
|
|
|
],
|
|
|
tableName: [
|
|
|
- { required: true, message: '请填写表名', trigger: 'blur' },
|
|
|
+ {required: true, message: '请填写表名', trigger: 'blur'},
|
|
|
{
|
|
|
validator: (rule, value, callback) => {
|
|
|
if (value) {
|
|
|
@@ -479,11 +515,11 @@
|
|
|
}, trigger: 'blur'
|
|
|
}
|
|
|
],
|
|
|
- remark: [{ required: true, message: '请填写描述', trigger: 'blur' }],
|
|
|
- rootPath: [{ required: true, message: '请填写生成目录', trigger: 'blur' }],
|
|
|
- dataBaseType: [{ required: true, message: '请选择数据库类型', trigger: 'blur' }],
|
|
|
- dataSourceCode: [{ required: true, message: '请填选择数据库', trigger: 'blur' }],
|
|
|
- typeFlag: [{ required: true, message: '请填填写分类', trigger: 'blur' }],
|
|
|
+ remark: [{required: true, message: '请填写描述', trigger: 'blur'}],
|
|
|
+ rootPath: [{required: true, message: '请填写生成目录', trigger: 'blur'}],
|
|
|
+ dataBaseType: [{required: true, message: '请选择数据库类型', trigger: 'blur'}],
|
|
|
+ dataSourceCode: [{required: true, message: '请填选择数据库', trigger: 'blur'}],
|
|
|
+ typeFlag: [{required: true, message: '请填填写分类', trigger: 'blur'}],
|
|
|
},
|
|
|
formData: {
|
|
|
tableName: '',
|
|
|
@@ -580,7 +616,7 @@
|
|
|
this.formData.routerPath = this.formData.rootPath + this.formData.routerPathRelative;
|
|
|
this.formData.genJson = '';
|
|
|
|
|
|
- this.$alert('生成代码可能会删除已有同名表、数据或文件,确认要生成么?', '警告', { type: 'error' }).then(() => {
|
|
|
+ this.$alert('生成代码可能会删除已有同名表、数据或文件,确认要生成么?', '警告', {type: 'error'}).then(() => {
|
|
|
this.loading = true;
|
|
|
return axios.post(this.formData.id ? '/genCode/update' : '/genCode/save', this.formData)
|
|
|
}).then(() => {
|
|
|
@@ -590,9 +626,9 @@
|
|
|
}).catch(res => {
|
|
|
this.loading = false;
|
|
|
if ('cancel' === res) {
|
|
|
- this.$msgbox({ title: '提示', type: 'error', message: '生成取消' });
|
|
|
+ this.$msgbox({title: '提示', type: 'error', message: '生成取消'});
|
|
|
} else {
|
|
|
- this.$msgbox({ title: '提示', type: 'error', message: '生成失败' });
|
|
|
+ this.$msgbox({title: '提示', type: 'error', message: '生成失败'});
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
@@ -750,7 +786,6 @@
|
|
|
this.fields = tempFields;
|
|
|
|
|
|
|
|
|
-
|
|
|
}
|
|
|
},
|
|
|
|
|
|
@@ -768,7 +803,6 @@
|
|
|
this.fields = tempFields;
|
|
|
|
|
|
|
|
|
-
|
|
|
}
|
|
|
|
|
|
},
|