summaryrefslogtreecommitdiff
path: root/UI source code/dns_mapping_ui-master/src/views/generator/config.vue
diff options
context:
space:
mode:
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.vue325
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>