代码生成器调整

This commit is contained in:
Jason 2022-12-30 11:40:08 +08:00
parent 42892bcb8b
commit 8d37e36395
2 changed files with 41 additions and 11 deletions

View File

@ -10,11 +10,15 @@ export function dataTable(params: any) {
return request.get({ url: '/gen/db', params }) return request.get({ url: '/gen/db', params })
} }
// 数据表列表接口 // 数据表所有列表接口
export function dataTableAll() { export function dataTableAll() {
return request.get({ url: '/gen/dbAll' }) return request.get({ url: '/gen/dbAll' })
} }
//表名查字段
export function dataTableToColumn(params: any) {
return request.get({ url: '/gen/dbColumn', params })
}
//选择要生成代码的数据表 //选择要生成代码的数据表
export function selectTable(params: any) { export function selectTable(params: any) {
return request.post( return request.post(

View File

@ -275,7 +275,12 @@
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="关联配置" name="relation"> <el-tab-pane label="关联配置" name="relation">
<el-form-item label="关联子表的表名" prop="gen.subTableName"> <el-form-item label="关联子表的表名" prop="gen.subTableName">
<el-select class="w-80" v-model="formData.gen.subTableName" clearable> <el-select
class="w-80"
v-model="formData.gen.subTableName"
clearable
@change="handleTableChange"
>
<el-option <el-option
v-for="item in optionsData.dataTable" v-for="item in optionsData.dataTable"
:key="item.tableName" :key="item.tableName"
@ -285,9 +290,14 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="子表关联的外键名 " prop="gen.subTableFk"> <el-form-item label="子表关联的外键名 " prop="gen.subTableFk">
<el-select class="w-80" v-model="formData.gen.subTableFk" clearable> <el-select
class="w-80"
v-model="formData.gen.subTableFk"
clearable
:loading="columnLoading"
>
<el-option <el-option
v-for="item in formData.column" v-for="item in tableColumn"
:key="item.id" :key="item.id"
:value="item.columnName" :value="item.columnName"
:label="`${item.columnName}${item.columnComment}`" :label="`${item.columnName}${item.columnComment}`"
@ -295,13 +305,14 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="关联表主键 " prop="gen.subTableFr"> <el-form-item label="关联表主键 " prop="gen.subTableFr">
<div class="w-80"> <el-select class="w-80" v-model="formData.gen.subTableFr" clearable>
<el-input <el-option
v-model="formData.gen.subTableFr" v-for="item in formData.column"
placeholder="请输入关联表主键" :key="item.id"
clearable :value="item.columnName"
:label="`${item.columnName}${item.columnComment}`"
/> />
</div> </el-select>
</el-form-item> </el-form-item>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
@ -314,7 +325,7 @@
</template> </template>
<script lang="ts" setup name="tableEdit"> <script lang="ts" setup name="tableEdit">
import { dataTableAll, generateEdit, tableDetail } from '@/api/tools/code' import { dataTableAll, generateEdit, tableDetail, dataTableToColumn } from '@/api/tools/code'
import { dictTypeAll } from '@/api/setting/dict' import { dictTypeAll } from '@/api/setting/dict'
import type { FormInstance } from 'element-plus' import type { FormInstance } from 'element-plus'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
@ -377,10 +388,12 @@ const getDetails = async () => {
const data = await tableDetail({ const data = await tableDetail({
id: route.query.id id: route.query.id
}) })
Object.keys(formData).forEach((key) => { Object.keys(formData).forEach((key) => {
//@ts-ignore //@ts-ignore
formData[key] = data[key] formData[key] = data[key]
}) })
getTableColumn()
} }
const { optionsData } = useDictOptions<{ const { optionsData } = useDictOptions<{
@ -404,6 +417,19 @@ const { optionsData } = useDictOptions<{
} }
}) })
const columnLoading = ref(false)
const tableColumn = ref<any[]>([])
const getTableColumn = async () => {
columnLoading.value = true
const res = await dataTableToColumn({ tableName: formData.gen.subTableName })
columnLoading.value = false
tableColumn.value = res
}
const handleTableChange = () => {
formData.gen.subTableFk = ''
getTableColumn()
}
const handleSave = async () => { const handleSave = async () => {
try { try {
await formRef.value?.validate() await formRef.value?.validate()