2.7.1版本提交 (#1844)

* feature:表格模板自动化生成 (#1841)

* feature:  为导出模板增加自动化功能

* feature:  视频按钮修改

* feature: 发布2.7.1Beta版本,视频集中处理。

---------

Co-authored-by: krank <emosick@qq.com>
This commit is contained in:
PiexlMax(奇淼
2024-08-04 16:06:00 +08:00
committed by GitHub
parent a44133d0c9
commit 7121968081
17 changed files with 190 additions and 77 deletions

View File

@@ -122,7 +122,7 @@
width="120"
>
<template #default="scope">
<span>{{ scope.row.dbNname || "GVA库" }}</span>
<span>{{ scope.row.dbName || "GVA库" }}</span>
</template>
</el-table-column>
<el-table-column
@@ -227,16 +227,17 @@
</el-tooltip>
</template>
<el-select
v-model="formData.dbName"
clearable
placeholder="选择业务库"
v-model="formData.dbName"
clearable
@change="dbNameChange"
placeholder="选择业务库"
>
<el-option
v-for="item in dbList"
:key="item.aliasName"
:value="item.aliasName"
:label="item.aliasName"
:disabled="item.disable"
v-for="item in dbList"
:key="item.aliasName"
:value="item.aliasName"
:label="item.aliasName"
:disabled="item.disable"
>
<div>
<span>{{ item.aliasName }}</span>
@@ -258,13 +259,34 @@
</el-form-item>
<el-form-item
label="表名称:"
clearable
prop="tableName"
>
<el-input
<!-- <el-input
v-model="formData.tableName"
:clearable="true"
placeholder="请输入要导出的表名称"
/>
/>-->
<div
class="w-full flex gap-4"
>
<el-select
v-model="formData.tableName"
class="flex-1"
filterable
placeholder="请选择表"
>
<el-option
v-for="item in tableOptions"
:key="item.tableName"
:label="item.tableName"
:value="item.tableName"
/>
</el-select>
<el-button type="primary" @click="getColumnFunc">自动生成模板</el-button>
</div>
</el-form-item>
<el-form-item
label="模板标识:"
@@ -416,7 +438,7 @@ import { formatDate } from '@/utils/format'
import { ElMessage, ElMessageBox } from 'element-plus'
import { ref, reactive } from 'vue'
import WarningBar from '@/components/warningBar/warningBar.vue'
import { getDB } from '@/api/autoCode'
import {getDB, getTable, getColumn} from '@/api/autoCode'
defineOptions({
name: 'ExportTemplate'
@@ -438,6 +460,7 @@ JOINS模式下不支持导入
const formData = ref({
name: '',
tableName: '',
dbName: '',
templateID: '',
templateInfo: '',
limit: 0,
@@ -566,7 +589,9 @@ const total = ref(0)
const pageSize = ref(10)
const tableData = ref([])
const searchInfo = ref({})
const dbList = ref([])
const tableOptions = ref([])
const getDbFunc = async() => {
const res = await getDB()
@@ -577,6 +602,45 @@ const getDbFunc = async() => {
getDbFunc()
const dbNameChange = () => {
formData.value.tableName = ''
formData.value.templateInfo = ''
getTableFunc()
}
const getTableFunc = async() => {
const res = await getTable({ businessDB: formData.value.dbName })
if (res.code === 0) {
tableOptions.value = res.data.tables
}
formData.value.tableName = ''
}
getTableFunc()
const getColumnFunc = async () => {
if(!formData.value.tableName) {
ElMessage({
type: 'error',
message: '请先选择业务库及选择表后再进行操作'
})
return
}
formData.value.templateInfo = ""
const res = await getColumn({
businessDB: formData.value.dbName,
tableName: formData.value.tableName
})
if(res.code === 0) {
// 把返回值的data.columns做尊换制作一组JSON数据columnName做keycolumnComment做value
const templateInfo = {}
res.data.columns.forEach(item => {
templateInfo[item.columnName] = item.columnComment || item.columnName
})
formData.value.templateInfo = JSON.stringify(templateInfo, null, 2)
}
}
// 重置
const onReset = () => {
searchInfo.value = {}