<template>
|
<a-modal
|
title="新增代码生成配置"
|
:width="900"
|
:visible="visible"
|
:confirmLoading="confirmLoading"
|
@ok="handleSubmit"
|
@cancel="handleCancel">
|
<a-spin :spinning="confirmLoading">
|
<a-form :form="form">
|
<a-row :gutter="24">
|
<a-col :md="12" :sm="24">
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="生成库" has-feedback>
|
<a-select
|
style="width: 100%"
|
placeholder="请选择数据库"
|
v-decorator="['databaseName', {rules: [{ required: true, message: '请选择数据库!' }]}]">
|
<a-select-option
|
v-for="(item,index) in databaseNameData"
|
:key="index"
|
:value="item.databaseName"
|
@click="databaseNameSele(item)">{{ item.databaseName }}</a-select-option>
|
</a-select>
|
</a-form-item>
|
</a-col>
|
</a-row>
|
<a-row :gutter="24">
|
<a-col :md="12" :sm="24">
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="生成表" has-feedback>
|
<a-select
|
style="width: 100%"
|
placeholder="请选择数据库表"
|
v-decorator="['tableName', {rules: [{ required: true, message: '请选择数据库表!' }]}]">
|
<a-select-option
|
v-for="(item,index) in tableNameData"
|
:key="index"
|
:value="item.tableName"
|
@click="tableNameSele(item)">{{ item.tableName }}</a-select-option>
|
</a-select>
|
</a-form-item>
|
</a-col>
|
<a-col :md="12" :sm="24">
|
<a-form-item label="业务名" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
|
<a-input
|
placeholder="请输入业务名"
|
v-decorator="['busName', {rules: [{required: true, message: '请输入业务名!'}]}]" />
|
</a-form-item>
|
</a-col>
|
<!--<a-col :md="12" :sm="24">
|
<a-form-item
|
:labelCol="labelCol"
|
:wrapperCol="wrapperCol"
|
label="移除前缀"
|
>
|
<a-radio-group v-decorator="['tablePrefix',{rules: [{ required: true, message: '请选择是否移除前缀!' }]}]" >
|
<a-radio v-for="(item,index) in tablePrefixData" :key="index" :value="item.code" @click="tablePrefixRadio(item.code)">{{ item.name }}</a-radio>
|
</a-radio-group>
|
</a-form-item>
|
</a-col> -->
|
</a-row>
|
<a-row :gutter="24">
|
<a-col :md="12" :sm="24">
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="菜单分类" has-feedback>
|
<a-select
|
style="width: 100%"
|
placeholder="请选择应用分类"
|
v-decorator="['menuApplication', {rules: [{ required: true, message: '请选择应用分类!' }]}]">
|
<a-select-option
|
v-for="(item,index) in appData"
|
:key="index"
|
:value="item.code"
|
@click="changeApplication(item.code)">{{ item.name }}</a-select-option>
|
</a-select>
|
</a-form-item>
|
</a-col>
|
<a-col :md="12" :sm="24">
|
<div>
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="父级菜单" has-feedback>
|
<a-tree-select
|
v-decorator="['menuPid', {rules: [{ required: true, message: '请选择父级菜单!' }]}]"
|
style="width: 100%"
|
:dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
|
:treeData="menuTreeData"
|
placeholder="请选择父级菜单"
|
treeDefaultExpandAll>
|
<span slot="title" slot-scope="{ id }">{{ id }}
|
</span>
|
</a-tree-select>
|
</a-form-item>
|
</div>
|
</a-col>
|
</a-row>
|
<a-row :gutter="24">
|
<a-col :md="12" :sm="24">
|
<a-form-item label="命名空间" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
|
<a-input
|
placeholder="请输入代码包名"
|
v-decorator="['nameSpace', {rules: [{required: true, message: '请输入命名空间!'}]}]" />
|
</a-form-item>
|
</a-col>
|
<a-col :md="12" :sm="24">
|
<a-form-item label="作者姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
|
<a-input
|
placeholder="请输入作者姓名"
|
v-decorator="['authorName', {rules: [{required: true, message: '请输入作者姓名!'}]}]" />
|
</a-form-item>
|
</a-col>
|
</a-row>
|
<!--<a-row :gutter="24">
|
<a-col :md="12" :sm="24">
|
<a-form-item
|
label="功能名"
|
:labelCol="labelCol"
|
:wrapperCol="wrapperCol"
|
has-feedback
|
>
|
<a-input placeholder="请输入功能名" v-decorator="['tableComment', {rules: [{required: true, message: '请输入功能名!'}]}]" />
|
</a-form-item>
|
</a-col>
|
<a-col :md="12" :sm="24">
|
<a-form-item
|
label="类名"
|
:labelCol="labelCol"
|
:wrapperCol="wrapperCol"
|
has-feedback
|
>
|
<a-input placeholder="请输入类名" v-decorator="['className', {rules: [{required: true, message: '请输入类名!'}]}]" />
|
</a-form-item>
|
</a-col>
|
</a-row> -->
|
<a-row :gutter="24">
|
<a-col :md="12" :sm="24">
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="生成方式">
|
<a-radio-group v-decorator="['generateType',{rules: [{ required: true, message: '请选择生成方式!' }]}]">
|
<a-radio
|
v-for="(item,index) in generateTypeData"
|
:key="index"
|
:value="item.code"
|
@click="generateTypeRadio(item.code)">{{ item.name }}</a-radio>
|
</a-radio-group>
|
</a-form-item>
|
</a-col>
|
<a-col :md="12" :sm="24">
|
<a-form-item label="模块路径" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
|
<a-input
|
placeholder="请输入模块路径"
|
v-decorator="['moduleName', {rules: [{required: true, message: '请输入模块路径!'}]}]" />
|
</a-form-item>
|
</a-col>
|
</a-row>
|
|
<a-row :gutter="24">
|
<a-col :md="12" :sm="24">
|
<a-form-item label="前端项目名" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
|
<a-input
|
placeholder="请输入前端项目名"
|
v-decorator="['frontProName', {rules: [{required: true, message: '请输入前端项目名!'}]}]" />
|
</a-form-item>
|
</a-col>
|
<a-col :md="12" :sm="24">
|
<a-form-item label="是否只是查询" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
|
<a-switch v-decorator="['isOnlyQuery', { valuePropName: 'checked' }]" />
|
<a-tag color="cyan">如果只是查询,则只会生成查询和导出功能</a-tag>
|
</a-form-item>
|
</a-col>
|
<a-col :md="12" :sm="24">
|
<a-form-item label="是否支持导入" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
|
<a-switch v-decorator="['isWhetherImport', { valuePropName: 'checked' }]" />
|
|
<!-- <a-tag color="cyan">如果只是查询,则只会生成查询和导出功能</a-tag> -->
|
</a-form-item>
|
</a-col>
|
</a-row>
|
|
</a-form>
|
</a-spin>
|
</a-modal>
|
</template>
|
|
<script>
|
import {
|
getAppList
|
} from '@/api/modular/system/appManage'
|
import {
|
getMenuTree
|
} from '@/api/modular/system/menuManage'
|
import {
|
codeGenerateDatabaseList,
|
codeGenerateInformationList,
|
codeGenerateAdd
|
} from '@/api/modular/gen/codeGenerateManage'
|
export default {
|
data() {
|
return {
|
labelCol: {
|
xs: {
|
span: 24
|
},
|
sm: {
|
span: 5
|
}
|
},
|
wrapperCol: {
|
xs: {
|
span: 24
|
},
|
sm: {
|
span: 15
|
}
|
},
|
visible: false,
|
appData: [],
|
menuTreeData: [],
|
databaseNameData:[],
|
tableNameData: [],
|
// tablePrefixData: [],
|
generateTypeData: [],
|
confirmLoading: false,
|
// tablePrefixValue: 'N',
|
databaseNameValue:'',
|
tableNameValue: '',
|
moduleName:'',
|
form: this.$form.createForm(this)
|
}
|
},
|
methods: {
|
// 初始化方法
|
add() {
|
this.visible = true
|
this.codeGenerateDatabaseList()
|
// 多库默认需要选择后调用
|
// this.codeGenerateInformationList()
|
this.dataTypeItem()
|
this.selectedByDefault()
|
|
// 获取系统应用列表
|
this.getSysApplist()
|
},
|
/**
|
* 默认选中项
|
*/
|
selectedByDefault() {
|
this.form.getFieldDecorator('nameSpace', {
|
initialValue: 'Admin.NET.Application'
|
})
|
this.form.getFieldDecorator('frontProName', {
|
initialValue: 'My_Admin.NET_Template_Web'
|
})
|
// this.form.getFieldDecorator('tablePrefix', { valuePropName: 'checked', initialValue: 'N' })
|
this.form.getFieldDecorator('generateType', {
|
valuePropName: 'checked',
|
initialValue: '2'
|
})
|
|
// 初始化菜单默认选择
|
this.form.getFieldDecorator('menuApplication', {
|
initialValue: 'busiapp'
|
})
|
this.changeApplication('busiapp')
|
},
|
/**
|
* 获得所有数据库
|
*/
|
codeGenerateDatabaseList() {
|
codeGenerateDatabaseList().then((res) => {
|
this.databaseNameData = res.data
|
})
|
},
|
/**
|
* 获得所有数据库的表
|
*/
|
codeGenerateInformationList(parameter) {
|
codeGenerateInformationList(parameter).then((res) => {
|
this.tableNameData = res.data
|
})
|
},
|
/**
|
* 获得菜单所属应用
|
*/
|
getSysApplist() {
|
return getAppList().then((res) => {
|
if (res.success) {
|
this.appData = res.data
|
} else {
|
this.$message.warning(res.message)
|
}
|
})
|
},
|
/**
|
* 获取字典数据
|
*/
|
dataTypeItem() {
|
this.tablePrefixData = this.$options.filters['dictData']('yes_or_no')
|
this.generateTypeData = this.$options.filters['dictData']('code_gen_create_type')
|
this.generateTypeData.splice(0, 1) // 默认去掉从压缩包下载
|
},
|
/**
|
* 提交表单
|
*/
|
handleSubmit() {
|
const {
|
form: {
|
validateFields
|
}
|
} = this
|
validateFields((errors, values) => {
|
if (!errors) {
|
this.confirmLoading = true
|
codeGenerateAdd(values).then((res) => {
|
if (res.success) {
|
this.$message.success('新增成功')
|
this.$emit('ok', values)
|
this.handleCancel()
|
} else {
|
this.$message.error('新增失败:' + res.message)
|
}
|
}).finally((res) => {
|
this.confirmLoading = false
|
})
|
}
|
})
|
},
|
handleCancel() {
|
this.form.resetFields()
|
this.visible = false
|
// 清空他们三个
|
this.form.getFieldDecorator('className', {
|
initialValue: ''
|
})
|
this.form.getFieldDecorator('busName', {
|
initialValue: ''
|
})
|
// this.form.getFieldDecorator('tableComment', { initialValue: '' })
|
},
|
/**
|
* 选择数据库
|
*/
|
databaseNameSele(item) {
|
this.databaseNameValue = item.databaseName
|
// this.form.getFieldDecorator('tableComment', { initialValue: item.tableComment })
|
//this.form.getFieldDecorator('busName', {
|
// initialValue: item.databaseComment
|
//})
|
// this.settingDefaultValue()
|
// this.form.getFieldDecorator('tableName', {
|
// //X initialValue: ''
|
// //X defaultValue:''
|
// //X value:''
|
// }) 这个方法不起作用
|
this.form.setFieldsValue({'tableName':''}); //这个OK
|
this.codeGenerateInformationList({ dbContextLocatorName:this.databaseNameValue});
|
},
|
/**
|
* 选择数据库列表
|
*/
|
tableNameSele(item) {
|
this.tableNameValue = item.tableName
|
// this.form.getFieldDecorator('tableComment', { initialValue: item.tableComment })
|
this.form.getFieldDecorator('busName', {
|
initialValue: item.tableComment
|
})
|
this.settingDefaultValue()
|
},
|
/**
|
* 菜单所属应用change事件
|
*/
|
changeApplication(value) {
|
getMenuTree({
|
'application': value
|
}).then((res) => {
|
if (res.success) {
|
this.menuTreeData = [{
|
'id': '-1',
|
'parentId': '0',
|
'title': '顶级',
|
'value': '0',
|
'pid': '0',
|
'children': res.data
|
}]
|
this.form.getFieldDecorator('menuPid', {
|
initialValue: '0'
|
})
|
} else {
|
this.$message.warning(res.message)
|
}
|
})
|
},
|
// /**
|
// * 选择是否移除前缀触发
|
// */
|
// tablePrefixRadio (tablePrefixType) {
|
// this.tablePrefixValue = tablePrefixType
|
// this.settingDefaultValue()
|
// },
|
/**
|
* 设置默认值
|
*/
|
settingDefaultValue() {
|
// const tableName = this.classNameToHump()
|
// this.form.getFieldDecorator('className', { initialValue: tableName })
|
// this.form.getFieldDecorator('busName', { initialValue: tableName + "业务"})
|
},
|
/**
|
* 选择生成方式
|
*/
|
generateTypeRadio(generateType) {
|
// if (generateType === '1') {
|
// this.packageNameShow = true
|
// } else {
|
// this.packageNameShow = false
|
// this.form.setFieldsValue({ nameSpace: 'iWare.Wms.Application' })
|
// }
|
}
|
}
|
}
|
</script>
|