diff options
Diffstat (limited to 'UI source code/dns_mapping_ui-master/src/views/generator/config.vue')
| -rw-r--r-- | UI source code/dns_mapping_ui-master/src/views/generator/config.vue | 325 |
1 files changed, 325 insertions, 0 deletions
diff --git a/UI source code/dns_mapping_ui-master/src/views/generator/config.vue b/UI source code/dns_mapping_ui-master/src/views/generator/config.vue new file mode 100644 index 0000000..2690dd5 --- /dev/null +++ b/UI source code/dns_mapping_ui-master/src/views/generator/config.vue @@ -0,0 +1,325 @@ +<template> + <div class="app-container"> + <el-row :gutter="15"> + <el-col style="margin-bottom: 10px"> + <el-card class="box-card" shadow="never"> + <div slot="header" class="clearfix"> + <span class="role-span">字段配置:{{ tableName }}</span> + <el-button + :loading="genLoading" + icon="el-icon-s-promotion" + size="mini" + style="float: right; padding: 6px 9px;" + type="success" + @click="toGen" + >保存&生成</el-button> + <el-button + :loading="columnLoading" + icon="el-icon-check" + size="mini" + style="float: right; padding: 6px 9px;margin-right: 9px" + type="primary" + @click="saveColumnConfig" + >保存</el-button> + <el-tooltip class="item" effect="dark" content="数据库中表字段变动时使用该功能" placement="top-start"> + <el-button + :loading="syncLoading" + icon="el-icon-refresh" + size="mini" + style="float: right; padding: 6px 9px;" + type="info" + @click="sync" + >同步</el-button> + </el-tooltip> + </div> + <el-form size="small" label-width="90px"> + <el-table v-loading="loading" :data="data" :max-height="tableHeight" size="small" style="width: 100%;margin-bottom: 15px"> + <el-table-column prop="columnName" label="字段名称" /> + <el-table-column prop="columnType" label="字段类型" /> + <el-table-column prop="remark" label="字段描述"> + <template slot-scope="scope"> + <el-input v-model="data[scope.$index].remark" size="mini" class="edit-input" /> + </template> + </el-table-column> + <el-table-column align="center" label="必填" width="70px"> + <template slot-scope="scope"> + <el-checkbox v-model="data[scope.$index].notNull" /> + </template> + </el-table-column> + <el-table-column align="center" label="列表" width="70px"> + <template slot-scope="scope"> + <el-checkbox v-model="data[scope.$index].listShow" /> + </template> + </el-table-column> + <el-table-column align="center" label="表单" width="70px"> + <template slot-scope="scope"> + <el-checkbox v-model="data[scope.$index].formShow" /> + </template> + </el-table-column> + <el-table-column label="表单类型"> + <template slot-scope="scope"> + <el-select v-model="data[scope.$index].formType" filterable class="edit-input" clearable size="mini" placeholder="请选择"> + <el-option + label="文本框" + value="Input" + /> + <el-option + label="文本域" + value="Textarea" + /> + <el-option + label="单选框" + value="Radio" + /> + <el-option + label="下拉框" + value="Select" + /> + <el-option + label="日期框" + value="Date" + /> + </el-select> + </template> + </el-table-column> + <el-table-column label="查询方式"> + <template slot-scope="scope"> + <el-select v-model="data[scope.$index].queryType" filterable class="edit-input" clearable size="mini" placeholder="请选择"> + <el-option + label="=" + value="=" + /> + <el-option + label="!=" + value="!=" + /> + <el-option + label=">=" + value=">=" + /> + <el-option + label="<=" + value="<=" + /> + <el-option + label="Like" + value="Like" + /> + <el-option + label="NotNull" + value="NotNull" + /> + <el-option + label="BetWeen" + value="BetWeen" + /> + </el-select> + </template> + </el-table-column> + <el-table-column label="日期注解"> + <template slot-scope="scope"> + <el-select v-model="data[scope.$index].dateAnnotation" filterable class="edit-input" clearable size="mini" placeholder="请选择"> + <el-option + label="自动创建时间" + value="CreationTimestamp" + /> + <el-option + label="自动更新时间" + value="UpdateTimestamp" + /> + </el-select> + </template> + </el-table-column> + <el-table-column label="关联字典"> + <template slot-scope="scope"> + <el-select v-model="data[scope.$index].dictName" filterable class="edit-input" clearable size="mini" placeholder="请选择"> + <el-option v-for="item in dicts" :key="item.id" :label="item.remark === '' ? item.name : item.remark" :value="item.name" /> + </el-select> + </template> + </el-table-column> + </el-table> + </el-form> + </el-card> + </el-col> + <el-col> + <el-card class="box-card" shadow="never"> + <div slot="header" class="clearfix"> + <span class="role-span">生成配置</span> + <el-button + :loading="configLoading" + icon="el-icon-check" + size="mini" + style="float: right; padding: 6px 9px" + type="primary" + @click="doSubmit" + >保存</el-button> + </div> + <el-form ref="form" :model="form" :rules="rules" size="small" label-width="78px"> + <el-form-item label="作者名称" prop="author"> + <el-input v-model="form.author" style="width: 40%" /> + <span style="color: #C0C0C0;margin-left: 10px;">类上面的作者名称</span> + </el-form-item> + <el-form-item label="模块名称" prop="moduleName"> + <el-input v-model="form.moduleName" style="width: 40%" /> + <span style="color: #C0C0C0;margin-left: 10px;">模块的名称,请选择项目中已存在的模块</span> + </el-form-item> + <el-form-item label="至于包下" prop="pack"> + <el-input v-model="form.pack" style="width: 40%" /> + <span style="color: #C0C0C0;margin-left: 10px;">项目包的名称,生成的代码放到哪个包里面</span> + </el-form-item> + <el-form-item label="接口名称" prop="apiAlias"> + <el-input v-model="form.apiAlias" style="width: 40%" /> + <span style="color: #C0C0C0;margin-left: 10px;">接口的名称,用于控制器与接口文档中</span> + </el-form-item> + <el-form-item label="前端路径" prop="path"> + <el-input v-model="form.path" style="width: 40%" /> + <span style="color: #C0C0C0;margin-left: 10px;">输入views文件夹下的目录,不存在即创建</span> + </el-form-item> + <!-- <el-form-item label="接口目录">--> + <!-- <el-input v-model="form.apiPath" style="width: 40%" />--> + <!-- <span style="color: #C0C0C0;margin-left: 10px;">Api存放路径[src/api],为空则自动生成路径</span>--> + <!-- </el-form-item>--> + <el-form-item label="去表前缀" prop="prefix"> + <el-input v-model="form.prefix" placeholder="默认不去除表前缀" style="width: 40%" /> + <span style="color: #C0C0C0;margin-left: 10px;">默认不去除表前缀,可自定义</span> + </el-form-item> + <el-form-item label="是否覆盖" prop="cover"> + <el-radio-group v-model="form.cover" size="mini" style="width: 40%"> + <el-radio-button label="true">是</el-radio-button> + <el-radio-button label="false">否</el-radio-button> + </el-radio-group> + <span style="color: #C0C0C0;margin-left: 10px;">谨防误操作,请慎重选择</span> + </el-form-item> + </el-form> + </el-card> + </el-col> + </el-row> + </div> +</template> + +<script> +import crud from '@/mixins/crud' +import { update, get } from '@/api/generator/genConfig' +import { save, sync, generator } from '@/api/generator/generator' +import { getDicts } from '@/api/system/dict' +export default { + name: 'GeneratorConfig', + components: {}, + mixins: [crud], + data() { + return { + activeName: 'first', tableName: '', tableHeight: 550, columnLoading: false, configLoading: false, dicts: [], syncLoading: false, genLoading: false, + form: { id: null, tableName: '', author: '', pack: '', path: '', moduleName: '', cover: 'false', apiPath: '', prefix: '', apiAlias: null }, + rules: { + author: [ + { required: true, message: '作者不能为空', trigger: 'blur' } + ], + pack: [ + { required: true, message: '包路径不能为空', trigger: 'blur' } + ], + moduleName: [ + { required: true, message: '包路径不能为空', trigger: 'blur' } + ], + path: [ + { required: true, message: '前端路径不能为空', trigger: 'blur' } + ], + apiAlias: [ + { required: true, message: '接口名称不能为空', trigger: 'blur' } + ], + cover: [ + { required: true, message: '不能为空', trigger: 'blur' } + ] + } + } + }, + created() { + this.tableHeight = document.documentElement.clientHeight - 385 + this.tableName = this.$route.params.tableName + this.$nextTick(() => { + this.init() + get(this.tableName).then(data => { + this.form = data + this.form.cover = this.form.cover.toString() + }) + getDicts().then(data => { + this.dicts = data + }) + }) + }, + methods: { + beforeInit() { + this.url = 'api/generator/columns' + const tableName = this.tableName + this.params = { tableName } + return true + }, + saveColumnConfig() { + this.columnLoading = true + save(this.data).then(res => { + this.notify('保存成功', 'success') + this.columnLoading = false + }).catch(err => { + this.columnLoading = false + console.log(err.response.data.message) + }) + }, + doSubmit() { + this.$refs['form'].validate((valid) => { + if (valid) { + this.configLoading = true + update(this.form).then(res => { + this.notify('保存成功', 'success') + this.form = res + this.form.cover = this.form.cover.toString() + this.configLoading = false + }).catch(err => { + this.configLoading = false + console.log(err.response.data.message) + }) + } + }) + }, + sync() { + this.syncLoading = true + sync([this.tableName]).then(() => { + this.init() + this.notify('同步成功', 'success') + this.syncLoading = false + }).then(() => { + this.syncLoading = false + }) + }, + toGen() { + this.genLoading = true + save(this.data).then(res => { + this.notify('保存成功', 'success') + // 生成代码 + generator(this.tableName, 0).then(data => { + this.genLoading = false + this.notify('生成成功', 'success') + }).catch(err => { + this.genLoading = false + console.log(err.response.data.message) + }) + }).catch(err => { + this.genLoading = false + console.log(err.response.data.message) + }) + } + } +} +</script> + +<style rel="stylesheet/scss" lang="scss"> + .edit-input { + .el-input__inner { + border: 1px solid #e5e6e7; + } + } +</style> + +<style scoped> + ::v-deep .input-with-select .el-input-group__prepend { + background-color: #fff; + } +</style> |
