数据导出功能完善

This commit is contained in:
暮光:城中城
2021-06-05 18:58:32 +08:00
parent 694f847f1d
commit b1fefdeba7
13 changed files with 96 additions and 33 deletions

View File

@@ -28,31 +28,35 @@
<span slot="title">库表导出选项</span>
<el-form label-width="100px">
<el-form-item label="导出类型:">
<el-select v-model="exportType" filterable placeholder="请选择导出类型" style="width: 300px;">
<el-select v-model="exportType" @change="exportTypeChange" filterable placeholder="请选择导出类型" style="width: 430px;">
<el-option label="表结构文档" :value="1"></el-option>
<el-option label="建表语句SQL" :value="2"></el-option>
<el-option label="表数据" :value="3"></el-option>
</el-select>
</el-form-item>
<el-form-item label="导出格式:" v-if="exportType == 1">
<el-select v-model="exportFormat" filterable placeholder="请选择导出格式" style="width: 300px;">
<el-select v-model="exportFormat" filterable placeholder="请选择导出格式" style="width: 430px;">
<el-option label="HTML格式" :value="1"></el-option>
<el-option label="Excel格式" :value="2"></el-option>
<el-option label="Word格式" :value="3"></el-option>
</el-select>
</el-form-item>
<el-form-item label="导出格式:" v-else-if="exportType == 2">
<el-select v-model="exportFormat" filterable placeholder="请选择导出格式" style="width: 300px;">
<el-select v-model="exportFormat" filterable placeholder="请选择导出格式" style="width: 430px;">
<el-option label="SQL格式" :value="1"></el-option>
</el-select>
</el-form-item>
<el-form-item label="导出格式:" v-else-if="exportType == 3">
<el-select v-model="downloadType" filterable placeholder="请选择导出类型" style="width: 300px;">
<el-select v-model="downloadType" filterable placeholder="请选择导出类型" style="width: 430px;">
<el-option label="SQL Inserts" value="insert"></el-option>
<el-option label="SQL Updates" value="update"></el-option>
<el-option label="JSON" value="json"></el-option>
</el-select>
</el-form-item>
<el-form-item label="数据表:" v-if="exportType == 3 && downloadType === 'insert'">
<el-checkbox :true-label="1" :false-label="0" v-model="dropTableFlag" @change="dropTableFlagChange">删除表{{dropTableFlag==1?'!!':''}}</el-checkbox>
<el-checkbox :true-label="1" :false-label="0" v-model="createTableFlag" @change="createTableFlagChange">创建表</el-checkbox>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="exportTypeChoiceVisible = false"> </el-button>
@@ -88,6 +92,8 @@
},
// 数据导出
downloadType: 'insert',
dropTableFlag: 0,
createTableFlag: 0,
}
},
mounted: function () {
@@ -103,6 +109,7 @@
},
exportTypeChange() {
this.exportFormat = 1;
console.log(this.exportType);
},
doExport() {
if (!this.exportType) {
@@ -120,18 +127,22 @@
}
tableNames += this.selectTables[i].tableName;
}
// window.open("zyplayer-doc-db/doc-db/exportDatabase?sourceId=" + this.choiceDatasourceId
// + "&exportType=" + this.exportType
// + "&dbName=" + this.choiceDatabase
// + "&tableNames=" + tableNames);
// 改为post方式提交下载
this.downloadFormParam.param = {
sourceId: this.choiceDatasourceId,
exportType: this.exportType,
exportFormat: this.exportFormat,
dbName: this.choiceDatabase,
downloadType: this.downloadType,
dropTableFlag: this.dropTableFlag,
createTableFlag: this.createTableFlag,
tableNames: tableNames,
};
if (this.exportType == 3) {
this.downloadFormParam.url = 'zyplayer-doc-db/data-view/downloadMultiple';
} else {
this.downloadFormParam.url = 'zyplayer-doc-db/doc-db/exportDatabase';
}
setTimeout(() => this.$refs.downloadForm.submit(), 0);
this.exportTypeChoiceVisible = false;
},
@@ -166,7 +177,17 @@
},
handleSelectionChange(val) {
this.selectTables = val;
}
},
dropTableFlagChange() {
if (this.dropTableFlag === 1) {
this.createTableFlag = 1;
}
},
createTableFlagChange() {
if (this.createTableFlag == 0) {
this.dropTableFlag = 0;
}
},
}
}
</script>

View File

@@ -59,11 +59,16 @@
<el-table-column label="自增" width="50">
<template slot-scope="scope">{{scope.row.isidentity ? '是' : '否'}}</template>
</el-table-column>
<el-table-column prop="type" label="类型" width="180"></el-table-column>
<el-table-column prop="length" label="长度" width="80"></el-table-column>
<el-table-column prop="nullable" label="空值" width="80"></el-table-column>
<el-table-column prop="type" label="类型" width="110"></el-table-column>
<el-table-column prop="length" label="长度" width="110"></el-table-column>
<el-table-column prop="numericScale" label="小数点" width="80">
<template slot-scope="scope">{{scope.row.numericScale==0 ? '' : scope.row.numericScale}}</template>
</el-table-column>
<el-table-column prop="nullable" label="空值" width="80">
<template slot-scope="scope">{{scope.row.nullable==1 ? '允许' : '不允许'}}</template>
</el-table-column>
<el-table-column label="主键" width="50">
<template slot-scope="scope">{{scope.row.ispramary ? '是' : '否'}}</template>
<template slot-scope="scope">{{scope.row.ispramary==1 ? '是' : '否'}}</template>
</el-table-column>
<el-table-column label="注释">
<template slot-scope="scope">