forked from github/dataease
feat: 新增导出中心功能
This commit is contained in:
parent
10cc106874
commit
50eaa9218a
@ -83,6 +83,10 @@
|
|||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-test</artifactId>
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-websocket</artifactId>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fit2cloud</groupId>
|
<groupId>com.fit2cloud</groupId>
|
||||||
<artifactId>quartz-spring-boot-starter</artifactId>
|
<artifactId>quartz-spring-boot-starter</artifactId>
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
"lodash-es": "^4.17.21",
|
"lodash-es": "^4.17.21",
|
||||||
"mathjs": "^11.6.0",
|
"mathjs": "^11.6.0",
|
||||||
"mitt": "^3.0.0",
|
"mitt": "^3.0.0",
|
||||||
|
"net": "^1.0.2",
|
||||||
"normalize.css": "^8.0.1",
|
"normalize.css": "^8.0.1",
|
||||||
"nprogress": "^0.2.0",
|
"nprogress": "^0.2.0",
|
||||||
"pinia": "^2.0.32",
|
"pinia": "^2.0.32",
|
||||||
@ -63,6 +64,8 @@
|
|||||||
"@types/element-resize-detector": "^1.1.3",
|
"@types/element-resize-detector": "^1.1.3",
|
||||||
"@types/jquery": "^3.5.16",
|
"@types/jquery": "^3.5.16",
|
||||||
"@types/lodash-es": "^4.17.6",
|
"@types/lodash-es": "^4.17.6",
|
||||||
|
"@types/sockjs-client": "^1.5.4",
|
||||||
|
"@types/stompjs": "^2.3.9",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.53.0",
|
"@typescript-eslint/eslint-plugin": "^5.53.0",
|
||||||
"@typescript-eslint/parser": "^5.53.0",
|
"@typescript-eslint/parser": "^5.53.0",
|
||||||
"@vitejs/plugin-vue": "^4.0.0",
|
"@vitejs/plugin-vue": "^4.0.0",
|
||||||
@ -80,6 +83,8 @@
|
|||||||
"postcss-scss": "^4.0.6",
|
"postcss-scss": "^4.0.6",
|
||||||
"prettier": "^2.8.4",
|
"prettier": "^2.8.4",
|
||||||
"rimraf": "^4.1.2",
|
"rimraf": "^4.1.2",
|
||||||
|
"sockjs-client": "^1.6.1",
|
||||||
|
"stompjs": "^2.3.3",
|
||||||
"stylelint": "^15.2.0",
|
"stylelint": "^15.2.0",
|
||||||
"stylelint-config-html": "^1.1.0",
|
"stylelint-config-html": "^1.1.0",
|
||||||
"stylelint-config-recommended": "^10.0.1",
|
"stylelint-config-recommended": "^10.0.1",
|
||||||
@ -96,6 +101,7 @@
|
|||||||
"vite-plugin-style-import-secondary": "^2.0.0",
|
"vite-plugin-style-import-secondary": "^2.0.0",
|
||||||
"vite-plugin-stylelint": "^4.2.0",
|
"vite-plugin-stylelint": "^4.2.0",
|
||||||
"vite-plugin-svg-icons": "^2.0.1",
|
"vite-plugin-svg-icons": "^2.0.1",
|
||||||
"vue-tsc": "^1.0.24"
|
"vue-tsc": "^1.0.24",
|
||||||
|
"xss": "^1.0.14"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -313,12 +313,7 @@ const showBarTooltipPosition = computed(() => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
const exportData = () => {
|
|
||||||
// bus.$emit('data-export-center')
|
|
||||||
}
|
|
||||||
|
|
||||||
const openMessageLoading = cb => {
|
const openMessageLoading = cb => {
|
||||||
console.log('bb')
|
|
||||||
const iconClass = `el-icon-loading`
|
const iconClass = `el-icon-loading`
|
||||||
const customClass = `de-message-loading de-message-export`
|
const customClass = `de-message-loading de-message-export`
|
||||||
ElMessage({
|
ElMessage({
|
||||||
@ -348,13 +343,17 @@ const openMessageLoading = cb => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const callbackExport = () => {
|
||||||
|
useEmitt().emitter.emit('data-export-center')
|
||||||
|
}
|
||||||
|
|
||||||
const exportAsExcel = () => {
|
const exportAsExcel = () => {
|
||||||
const viewDataInfo = dvMainStore.getViewDataDetails(element.value.id)
|
const viewDataInfo = dvMainStore.getViewDataDetails(element.value.id)
|
||||||
const chartExtRequest = dvMainStore.getLastViewRequestInfo(element.value.id)
|
const chartExtRequest = dvMainStore.getLastViewRequestInfo(element.value.id)
|
||||||
const viewInfo = dvMainStore.getViewDetails(element.value.id)
|
const viewInfo = dvMainStore.getViewDetails(element.value.id)
|
||||||
const chart = { ...viewInfo, chartExtRequest, data: viewDataInfo }
|
const chart = { ...viewInfo, chartExtRequest, data: viewDataInfo }
|
||||||
exportExcelDownload(chart, () => {
|
exportExcelDownload(chart, () => {
|
||||||
openMessageLoading(exportData)
|
openMessageLoading(callbackExport)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const exportAsImage = () => {
|
const exportAsImage = () => {
|
||||||
|
@ -214,7 +214,6 @@ const exportData = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const openMessageLoading = cb => {
|
const openMessageLoading = cb => {
|
||||||
console.log('bb')
|
|
||||||
const iconClass = `el-icon-loading`
|
const iconClass = `el-icon-loading`
|
||||||
const customClass = `de-message-loading de-message-export`
|
const customClass = `de-message-loading de-message-export`
|
||||||
ElMessage({
|
ElMessage({
|
||||||
|
@ -14,6 +14,7 @@ import { setupCustomComponent } from '@/custom-component'
|
|||||||
import { installDirective } from '@/directive'
|
import { installDirective } from '@/directive'
|
||||||
import '@/utils/DateUtil'
|
import '@/utils/DateUtil'
|
||||||
import '@/permission'
|
import '@/permission'
|
||||||
|
import WebSocketPlugin from '../../websocket'
|
||||||
const setupAll = async () => {
|
const setupAll = async () => {
|
||||||
const app = createApp(App)
|
const app = createApp(App)
|
||||||
installDirective(app)
|
installDirective(app)
|
||||||
@ -23,6 +24,7 @@ const setupAll = async () => {
|
|||||||
setupElementPlus(app)
|
setupElementPlus(app)
|
||||||
setupCustomComponent(app)
|
setupCustomComponent(app)
|
||||||
setupElementPlusIcons(app)
|
setupElementPlusIcons(app)
|
||||||
|
app.use(WebSocketPlugin)
|
||||||
app.mount('#app')
|
app.mount('#app')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref, h, onUnmounted } from 'vue'
|
import { ref, h, onUnmounted, onMounted } from 'vue'
|
||||||
import { EmptyBackground } from '@/components/empty-background'
|
import { EmptyBackground } from '@/components/empty-background'
|
||||||
import { ElButton, ElMessage, ElMessageBox, ElTabPane, ElTabs } from 'element-plus-secondary'
|
import { ElButton, ElMessage, ElMessageBox, ElTabPane, ElTabs } from 'element-plus-secondary'
|
||||||
import { RefreshLeft } from '@element-plus/icons-vue'
|
import { RefreshLeft } from '@element-plus/icons-vue'
|
||||||
|
import eventBus from '@/utils/eventBus'
|
||||||
import {
|
import {
|
||||||
exportTasks,
|
exportTasks,
|
||||||
exportRetry,
|
exportRetry,
|
||||||
@ -50,6 +51,9 @@ const handleClose = () => {
|
|||||||
drawer.value = false
|
drawer.value = false
|
||||||
clearInterval(timer)
|
clearInterval(timer)
|
||||||
}
|
}
|
||||||
|
onMounted(() => {
|
||||||
|
eventBus.on('task-export-topic-call', taskExportTopicCall)
|
||||||
|
})
|
||||||
|
|
||||||
onUnmounted(() => {
|
onUnmounted(() => {
|
||||||
clearInterval(timer)
|
clearInterval(timer)
|
||||||
@ -148,25 +152,13 @@ const init = () => {
|
|||||||
const taskExportTopicCall = task => {
|
const taskExportTopicCall = task => {
|
||||||
if (JSON.parse(task).exportStatus === 'SUCCESS') {
|
if (JSON.parse(task).exportStatus === 'SUCCESS') {
|
||||||
openMessageLoading(
|
openMessageLoading(
|
||||||
JSON.parse(task).exportFromName +
|
JSON.parse(task).exportFromName + ' 导出成功,前往',
|
||||||
' ' +
|
|
||||||
t('excel.export') +
|
|
||||||
t('dataset.completed') +
|
|
||||||
t('dataset.goto'),
|
|
||||||
'success',
|
'success',
|
||||||
callbackExport
|
callbackExport
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
if (JSON.parse(task).exportStatus === 'FAILED') {
|
if (JSON.parse(task).exportStatus === 'FAILED') {
|
||||||
openMessageLoading(
|
openMessageLoading(JSON.parse(task).exportFromName + ' 导出失败,前往', 'error', callbackExport)
|
||||||
JSON.parse(task).exportFromName +
|
|
||||||
' ' +
|
|
||||||
t('excel.export') +
|
|
||||||
t('dataset.error') +
|
|
||||||
t('dataset.goto'),
|
|
||||||
'error',
|
|
||||||
callbackExport
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
7
pom.xml
7
pom.xml
@ -75,6 +75,13 @@
|
|||||||
<type>pom</type>
|
<type>pom</type>
|
||||||
<scope>import</scope>
|
<scope>import</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-websocket</artifactId>
|
||||||
|
<version>${spring-boot.version}</version>
|
||||||
|
<type>pom</type>
|
||||||
|
<scope>import</scope>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.mybatis</groupId>
|
<groupId>org.mybatis</groupId>
|
||||||
<artifactId>mybatis-spring</artifactId>
|
<artifactId>mybatis-spring</artifactId>
|
||||||
|
@ -63,6 +63,7 @@ public class WhitelistUtils {
|
|||||||
|| StringUtils.startsWithAny(requestURI, "/share/proxyInfo")
|
|| StringUtils.startsWithAny(requestURI, "/share/proxyInfo")
|
||||||
|| StringUtils.startsWithAny(requestURI, "/xpackComponent/content/")
|
|| StringUtils.startsWithAny(requestURI, "/xpackComponent/content/")
|
||||||
|| StringUtils.startsWithAny(requestURI, "/geo/")
|
|| StringUtils.startsWithAny(requestURI, "/geo/")
|
||||||
|
|| StringUtils.startsWithAny(requestURI, "/websocket")
|
||||||
|| StringUtils.startsWithAny(requestURI, "/map/");
|
|| StringUtils.startsWithAny(requestURI, "/map/");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user