mirror of
https://gitee.com/dromara/go-view.git
synced 2024-12-02 11:48:36 +08:00
feat: 新增加载提示
This commit is contained in:
parent
90d7060a22
commit
7923d0c260
@ -1,5 +1,5 @@
|
|||||||
export enum ChartModeEnum {
|
export enum ChartModeEnum {
|
||||||
SINGLE= 'single',
|
SINGLE = 'single',
|
||||||
DOUBLE = 'double'
|
DOUBLE = 'double'
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -13,7 +13,8 @@ export enum ChartLayoutStoreEnum {
|
|||||||
CHARTS = 'charts',
|
CHARTS = 'charts',
|
||||||
DETAILS = 'details',
|
DETAILS = 'details',
|
||||||
Chart_TYPE = 'chartType',
|
Chart_TYPE = 'chartType',
|
||||||
LAYER_TYPE = 'layerType'
|
LAYER_TYPE = 'layerType',
|
||||||
|
PERCENTAGE = 'percentage'
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ChartLayoutType {
|
export interface ChartLayoutType {
|
||||||
@ -27,4 +28,6 @@ export interface ChartLayoutType {
|
|||||||
[ChartLayoutStoreEnum.Chart_TYPE]: ChartModeEnum
|
[ChartLayoutStoreEnum.Chart_TYPE]: ChartModeEnum
|
||||||
// 层级展示方式
|
// 层级展示方式
|
||||||
[ChartLayoutStoreEnum.LAYER_TYPE]: LayerModeEnum
|
[ChartLayoutStoreEnum.LAYER_TYPE]: LayerModeEnum
|
||||||
|
// 当前正在加载的数量
|
||||||
|
[ChartLayoutStoreEnum.PERCENTAGE]: number
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,8 @@ export const useChartLayoutStore = defineStore({
|
|||||||
chartType: ChartModeEnum.SINGLE,
|
chartType: ChartModeEnum.SINGLE,
|
||||||
// 图层类型(默认图片)
|
// 图层类型(默认图片)
|
||||||
layerType: LayerModeEnum.THUMBNAIL,
|
layerType: LayerModeEnum.THUMBNAIL,
|
||||||
|
// 当前加载数量
|
||||||
|
percentage: 0,
|
||||||
// 防止值不存在
|
// 防止值不存在
|
||||||
...storageChartLayout
|
...storageChartLayout
|
||||||
}),
|
}),
|
||||||
@ -42,6 +44,9 @@ export const useChartLayoutStore = defineStore({
|
|||||||
},
|
},
|
||||||
getLayerType(): LayerModeEnum {
|
getLayerType(): LayerModeEnum {
|
||||||
return this.layerType
|
return this.layerType
|
||||||
|
},
|
||||||
|
getPercentage(): number {
|
||||||
|
return this.percentage
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
@ -54,6 +59,11 @@ export const useChartLayoutStore = defineStore({
|
|||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
chartEditStore.computedScale()
|
chartEditStore.computedScale()
|
||||||
}, 500)
|
}, 500)
|
||||||
|
},
|
||||||
|
setItemUnHandle<T extends keyof ChartLayoutType, K extends ChartLayoutType[T]>(key: T, value: K): void {
|
||||||
|
this.$patch(state => {
|
||||||
|
state[key] = value
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
3
src/views/chart/ContentLoad/index.ts
Normal file
3
src/views/chart/ContentLoad/index.ts
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
import ContentLoad from './index.vue'
|
||||||
|
|
||||||
|
export { ContentLoad }
|
33
src/views/chart/ContentLoad/index.vue
Normal file
33
src/views/chart/ContentLoad/index.vue
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<template>
|
||||||
|
<n-modal :show="showModal" :close-on-esc="false" transform-origin="center">
|
||||||
|
<div>
|
||||||
|
<span> 拼命加载中... </span>
|
||||||
|
<n-progress type="line" :color="themeColor" :percentage="percentage" style="width: 300px" />
|
||||||
|
</div>
|
||||||
|
</n-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { ref, watch, computed } from 'vue'
|
||||||
|
import { useChartLayoutStore } from '@/store/modules/chartLayoutStore/chartLayoutStore'
|
||||||
|
import { useDesignStore } from '@/store/modules/designStore/designStore'
|
||||||
|
|
||||||
|
const chartLayoutStore = useChartLayoutStore()
|
||||||
|
const designStore = useDesignStore()
|
||||||
|
const showModal = ref(false)
|
||||||
|
const percentage = ref(0)
|
||||||
|
|
||||||
|
// 颜色
|
||||||
|
const themeColor = computed(() => {
|
||||||
|
return designStore.getAppTheme
|
||||||
|
})
|
||||||
|
|
||||||
|
// 监听百分比
|
||||||
|
watch(
|
||||||
|
() => chartLayoutStore.getPercentage,
|
||||||
|
newValue => {
|
||||||
|
percentage.value = newValue
|
||||||
|
showModal.value = newValue > 0
|
||||||
|
}
|
||||||
|
)
|
||||||
|
</script>
|
@ -2,6 +2,8 @@ import { getUUID } from '@/utils'
|
|||||||
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
||||||
import { ChartEditStoreEnum, ChartEditStorage } from '@/store/modules/chartEditStore/chartEditStore.d'
|
import { ChartEditStoreEnum, ChartEditStorage } from '@/store/modules/chartEditStore/chartEditStore.d'
|
||||||
import { useChartHistoryStore } from '@/store/modules/chartHistoryStore/chartHistoryStore'
|
import { useChartHistoryStore } from '@/store/modules/chartHistoryStore/chartHistoryStore'
|
||||||
|
import { useChartLayoutStore } from '@/store/modules/chartLayoutStore/chartLayoutStore'
|
||||||
|
import { ChartLayoutStoreEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore.d'
|
||||||
import { fetchChartComponent, fetchConfigComponent, createComponent } from '@/packages/index'
|
import { fetchChartComponent, fetchConfigComponent, createComponent } from '@/packages/index'
|
||||||
import { BaseEvent, EventLife, CreateComponentType, CreateComponentGroupType } from '@/packages/index.d'
|
import { BaseEvent, EventLife, CreateComponentType, CreateComponentGroupType } from '@/packages/index.d'
|
||||||
import { PublicGroupConfigClass } from '@/packages/public/publicConfig'
|
import { PublicGroupConfigClass } from '@/packages/public/publicConfig'
|
||||||
@ -85,7 +87,7 @@ const componentMerge = (newObject: any, sources: any, notComponent = false) => {
|
|||||||
export const useSync = () => {
|
export const useSync = () => {
|
||||||
const chartEditStore = useChartEditStore()
|
const chartEditStore = useChartEditStore()
|
||||||
const chartHistoryStore = useChartHistoryStore()
|
const chartHistoryStore = useChartHistoryStore()
|
||||||
|
const chartLayoutStore = useChartLayoutStore()
|
||||||
/**
|
/**
|
||||||
* * 组件动态注册
|
* * 组件动态注册
|
||||||
* @param projectData 项目数据
|
* @param projectData 项目数据
|
||||||
@ -151,7 +153,14 @@ export const useSync = () => {
|
|||||||
for (const key in projectData) {
|
for (const key in projectData) {
|
||||||
// 组件
|
// 组件
|
||||||
if (key === ChartEditStoreEnum.COMPONENT_LIST) {
|
if (key === ChartEditStoreEnum.COMPONENT_LIST) {
|
||||||
|
let loadIndex = 0
|
||||||
|
const listLength = projectData[key].length;
|
||||||
|
console.log(listLength)
|
||||||
for (const comItem of projectData[key]) {
|
for (const comItem of projectData[key]) {
|
||||||
|
// 设置加载数量
|
||||||
|
let percentage = parseInt((parseFloat(`${++loadIndex / listLength}`) * 100).toString())
|
||||||
|
chartLayoutStore.setItemUnHandle(ChartLayoutStoreEnum.PERCENTAGE, percentage)
|
||||||
|
// 判断类型
|
||||||
if (comItem.isGroup) {
|
if (comItem.isGroup) {
|
||||||
// 创建分组
|
// 创建分组
|
||||||
let groupClass = new PublicGroupConfigClass()
|
let groupClass = new PublicGroupConfigClass()
|
||||||
@ -182,6 +191,9 @@ export const useSync = () => {
|
|||||||
componentMerge(chartEditStore[key], projectData[key], true)
|
componentMerge(chartEditStore[key], projectData[key], true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 清除数量
|
||||||
|
chartLayoutStore.setItemUnHandle(ChartLayoutStoreEnum.PERCENTAGE, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -32,6 +32,8 @@
|
|||||||
:on-clickoutside="onClickOutSide"
|
:on-clickoutside="onClickOutSide"
|
||||||
@select="handleMenuSelect"
|
@select="handleMenuSelect"
|
||||||
></n-dropdown>
|
></n-dropdown>
|
||||||
|
<!-- 加载蒙层 -->
|
||||||
|
<content-load></content-load>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
@ -53,6 +55,7 @@ const HeaderTitle = loadAsyncComponent(() => import('./ContentHeader/headerTitle
|
|||||||
const ContentLayers = loadAsyncComponent(() => import('./ContentLayers/index.vue'))
|
const ContentLayers = loadAsyncComponent(() => import('./ContentLayers/index.vue'))
|
||||||
const ContentCharts = loadAsyncComponent(() => import('./ContentCharts/index.vue'))
|
const ContentCharts = loadAsyncComponent(() => import('./ContentCharts/index.vue'))
|
||||||
const ContentConfigurations = loadAsyncComponent(() => import('./ContentConfigurations/index.vue'))
|
const ContentConfigurations = loadAsyncComponent(() => import('./ContentConfigurations/index.vue'))
|
||||||
|
const ContentLoad = loadAsyncComponent(() => import('./ContentLoad/index.vue'))
|
||||||
|
|
||||||
// 右键
|
// 右键
|
||||||
const {
|
const {
|
||||||
|
Loading…
Reference in New Issue
Block a user