<template>
|
<el-card shadow="never" class="aui-card--fill">
|
|
<div class="mod-sys__generator">
|
<div class="mod-sys__user">
|
<el-form :model="dataForm" label-width="80px" @keyup.enter.native="getTableInfo()">
|
<el-form-item>
|
<el-input style="width: 30%;margin-right: 20px;" v-model="dataForm.tableName" placeholder="请输入表名" clearable></el-input>
|
<el-button @click="getTableInfo()">查询</el-button>
|
</el-form-item>
|
</el-form>
|
</div>
|
|
<el-table :data="dataForm.tableData" stripe style="width: 100%">
|
<el-table-column prop="columnName" label="CODE"> </el-table-column>
|
<el-table-column prop="remarks" label="名称">
|
<template v-slot="{ row }">
|
<el-input size="small" v-model="row.remarks"></el-input>
|
</template>
|
</el-table-column>
|
<el-table-column prop="typeName" label="数据类型"></el-table-column>
|
<!-- <el-table-column prop="columnSize" label="数据长度"></el-table-column> -->
|
<el-table-column prop="isTableColumn" label="页面表格列">
|
<template v-slot="{ row }">
|
<el-checkbox v-model="row.isTableColumn"></el-checkbox>
|
</template>
|
</el-table-column>
|
<el-table-column prop="isSelectColumn" label="页面查询列">
|
<template v-slot="{ row }">
|
<el-checkbox v-model="row.isSelectColumn"></el-checkbox>
|
</template>
|
</el-table-column>
|
<el-table-column prop="op" label="查询条件表达式">
|
<template v-slot="{ row }">
|
<el-select v-model="row.op" v-bind:disabled="!row.isSelectColumn">
|
<el-option v-for="item in eqList" :key="item.op" :label="item.title" :value="item.op">
|
</el-option>
|
</el-select>
|
</template>
|
</el-table-column>
|
</el-table>
|
|
<el-divider><el-tag type="primary">生成代码参数:</el-tag></el-divider>
|
|
<div v-show="dataForm.tableData.length > 0">
|
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="200px">
|
<el-form-item prop="className" label="实体对象名称" style="width: 60%">
|
<el-input v-model="dataForm.className" placeholder="请输入生成的实体对象名称" ></el-input>
|
</el-form-item>
|
|
<el-form-item prop="packName" label="包名" style="width: 60%">
|
<el-input v-model="dataForm.packName" placeholder="请输入生成的Java包名" ></el-input>
|
</el-form-item>
|
|
<el-form-item prop="javaFilePath" label="Java项目路径" :inline="true">
|
|
<el-select v-model="dataForm.javaFilePath" placeholder="请选择">
|
<el-option v-for="item in modules" :key="item.filePath" :label="item.fileName" :value="item.filePath"/>
|
</el-select>
|
<el-input style="padding-left: 15px;width: 60%" v-model="dataForm.javaFilePath"
|
placeholder="请输入Java项目路径"></el-input>
|
</el-form-item>
|
|
<el-form-item prop="isPageFlag" label="是否生成页面">
|
<el-checkbox v-model="dataForm.isPageFlag"></el-checkbox>
|
</el-form-item>
|
|
<el-form-item v-if="dataForm.isPageFlag" prop="vueFilePath" label="Vue项目路径">
|
<el-select v-model="dataForm.vueFilePath" placeholder="请选择">
|
<el-option v-for="item in modules" :key="item.filePath" :label="item.fileName" :value="item.filePath"/>
|
</el-select>
|
<el-input style="padding-left: 15px;width: 60%" v-model="dataForm.vueFilePath"
|
placeholder="请输入Vue项目路径"></el-input>
|
</el-form-item>
|
<el-form-item prop="checked" label="是否生成service">
|
<el-checkbox v-model="dataForm.checked"></el-checkbox>
|
</el-form-item>
|
|
<!-- <el-form-item prop="isExport" label="是否需要导出功能">
|
<el-checkbox v-model="dataForm.isExport"></el-checkbox>
|
</el-form-item> -->
|
</el-form>
|
<el-button style="margin-left: 20%" type="primary" @click="formSubmit()">生成</el-button>
|
</div>
|
</div>
|
</el-card>
|
</template>
|
|
<script>
|
|
export default {
|
data() {
|
return {
|
modules: [], // 后台modules
|
eqList: [],
|
dataForm: {
|
tableName: '',
|
className: '',
|
javaFilePath: '',
|
vueFilePath: '',
|
checked: true,
|
packName: 'com.zt.life.modules.maintain',
|
isPageFlag: true,
|
isExport: false,
|
tableData: []
|
}
|
|
}
|
},
|
|
computed: {
|
dataRule() {
|
return {
|
className: [
|
{required: true, message: '请输入实体类名称', trigger: 'change'}
|
],
|
packName: [
|
{required: true, message: '请输入生成的Java包名', trigger: 'change'}
|
],
|
javaFilePath: [
|
{required: true, message: '请输入Java项目路径', trigger: 'change'}
|
],
|
vueFilePath: [
|
{required: true, message: '请输入Vue项目路径', trigger: 'change'}
|
],
|
checked: [
|
{required: true, message: '请选择是否生成service', trigger: 'change'}
|
],
|
isPageFlag: [
|
{required: true, message: '请选择是否生成页面', trigger: 'change'}
|
],
|
isExport: [
|
{required: true, message: '是否需要导出功能', trigger: 'change'}
|
]
|
}
|
}
|
},
|
|
created() {
|
this.getInfo()
|
},
|
methods: {
|
// 获取信息
|
async getInfo() {
|
let res = await this.$http.get(`/sys/generator/properties`)
|
if (res.success) {
|
this.modules = res.data.modules
|
this.eqList = res.data.eqList
|
}
|
},
|
async getTableInfo() {
|
if (!this.dataForm.tableName) {
|
this.$tip.error('请输入表名')
|
return
|
}
|
let res = await this.$http.get('/sys/generator/getTable?tableName=' + this.dataForm.tableName)
|
if (res.success) {
|
this.dataForm.tableData = res.data
|
this.dataForm.className = this.dataForm.tableName.replace(/_(\w)/g, function (all, letter) {
|
return letter.toUpperCase()
|
}).replace(/\b(\w)|\s(\w)/g, function (m) {
|
return m.toUpperCase()
|
})
|
}
|
},
|
// 表单提交
|
formSubmit() {
|
this.$refs['dataForm'].validate(async valid => {
|
if (valid) {
|
let data = {
|
...this.dataForm
|
}
|
data.tableData = JSON.stringify(this.dataForm.tableData)
|
let res = await this.$http[!this.dataForm.id ? 'post' : 'post']('/sys/generator', data)
|
if (res.success) {
|
this.$tip.success('生成代码!赶紧去验证把!')
|
}
|
}
|
})
|
}
|
}
|
}
|
|
</script>
|