mirror of
https://gitee.com/dromara/go-view.git
synced 2025-10-13 22:12:11 +08:00
fix: 大屏预览页增加缓存 预加载所有组件
This commit is contained in:
parent
1ae9c7c982
commit
2cfcfe48b7
@ -22,6 +22,7 @@ import { getToken } from '@/api/path'
|
|||||||
import { useRouterStore } from '@/store/modules/routerStore/routerStore'
|
import { useRouterStore } from '@/store/modules/routerStore/routerStore'
|
||||||
import { useOriginStore } from '@/store/modules/originStore/originStore'
|
import { useOriginStore } from '@/store/modules/originStore/originStore'
|
||||||
import { useGetMessageByParent } from '@/utils/utils'
|
import { useGetMessageByParent } from '@/utils/utils'
|
||||||
|
import router from '@/router'
|
||||||
|
|
||||||
const {getMessageByParent} = useGetMessageByParent()
|
const {getMessageByParent} = useGetMessageByParent()
|
||||||
|
|
||||||
@ -43,7 +44,13 @@ getMessageByParent('getStore', (e) => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
getToken()
|
getMessageByParent('loaded', (e) => {
|
||||||
|
if(e.data.type === 'changeRoute' && e.data.page === 'customLargeScreen') {
|
||||||
|
routerStore.setToken(e.data.token)
|
||||||
|
router.push(e.data.path ? e.data.path : '/chart/preview/null')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
// getToken()
|
||||||
|
|
||||||
// 暗黑主题
|
// 暗黑主题
|
||||||
const darkTheme = useDarkThemeHook()
|
const darkTheme = useDarkThemeHook()
|
||||||
|
@ -55,10 +55,29 @@ axiosInstance.interceptors.response.use(
|
|||||||
|
|
||||||
const logOutCodeList = ['00004', '000012', '000013']
|
const logOutCodeList = ['00004', '000012', '000013']
|
||||||
if(logOutCodeList.some(_ => _ === errcode)) {
|
if(logOutCodeList.some(_ => _ === errcode)) {
|
||||||
window['$message'].error(errmsg)
|
// window['$message'].error(errmsg)
|
||||||
setTimeout(() => {
|
// setTimeout(() => {
|
||||||
postMessageToParent({
|
// postMessageToParent({
|
||||||
type: 'logOut'
|
// type: 'logOut'
|
||||||
|
// })
|
||||||
|
// })
|
||||||
|
|
||||||
|
// axios加载时 pinia还没加载好 要异步加载拿到pinia
|
||||||
|
import('@/store/modules/modalStore/modalStore').then(res => {
|
||||||
|
const modalStore = res.useModalStore()
|
||||||
|
modalStore.setModalStore({
|
||||||
|
showModal: true,
|
||||||
|
title: '提示',
|
||||||
|
content: errmsg,
|
||||||
|
positiveText: '重新登录',
|
||||||
|
positiveClick: () => {
|
||||||
|
modalStore.clear()
|
||||||
|
setTimeout(() => {
|
||||||
|
postMessageToParent({
|
||||||
|
type: 'logOut'
|
||||||
|
})
|
||||||
|
}, 500)
|
||||||
|
},
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
return Promise.resolve(res.data)
|
return Promise.resolve(res.data)
|
||||||
|
@ -4,6 +4,7 @@ import { RequestHttpEnum } from "@/enums/httpEnum";
|
|||||||
import { httpErrorHandle } from '@/utils'
|
import { httpErrorHandle } from '@/utils'
|
||||||
import moment from 'moment'
|
import moment from 'moment'
|
||||||
|
|
||||||
|
/*
|
||||||
export function getToken() {
|
export function getToken() {
|
||||||
// 为了开发时只单独展示goview 需要localStorage
|
// 为了开发时只单独展示goview 需要localStorage
|
||||||
// const storage_access_token = localStorage.getItem('access_token_obj')
|
// const storage_access_token = localStorage.getItem('access_token_obj')
|
||||||
@ -26,10 +27,26 @@ export function getToken() {
|
|||||||
// if(query.access_token) localStorage.setItem('access_token_obj', JSON.stringify(obj))
|
// if(query.access_token) localStorage.setItem('access_token_obj', JSON.stringify(obj))
|
||||||
return query.access_token
|
return query.access_token
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// 初次等待久一点 因为dom加载后才能获取父页面传来的token 才能存入store
|
||||||
|
export async function getToken() {
|
||||||
|
return new Promise(resolve => {
|
||||||
|
let timer = setInterval(() => {
|
||||||
|
import('@/store/modules/routerStore/routerStore').then(res => {
|
||||||
|
let routerStore = res.useRouterStore()
|
||||||
|
if(routerStore.token) {
|
||||||
|
clearInterval(timer)
|
||||||
|
resolve(routerStore.token)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}, 100)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
export const publicInterface = async (paramType:string, interfaceType:string, paramData?:unknown) =>{
|
export const publicInterface = async (paramType:string, interfaceType:string, paramData?:unknown) =>{
|
||||||
try {
|
try {
|
||||||
const access_token = getToken()
|
const access_token = await getToken()
|
||||||
const res = await http(RequestHttpEnum.POST)<any>(paramType, {
|
const res = await http(RequestHttpEnum.POST)<any>(paramType, {
|
||||||
access_token,
|
access_token,
|
||||||
type: interfaceType,
|
type: interfaceType,
|
||||||
|
22
src/components/VDialog/index.vue
Normal file
22
src/components/VDialog/index.vue
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<template>
|
||||||
|
<n-modal
|
||||||
|
v-model:show="modalStore.showModal"
|
||||||
|
preset="dialog"
|
||||||
|
:title="modalStore.title"
|
||||||
|
:content="modalStore.content"
|
||||||
|
:positiveText="modalStore.positiveText"
|
||||||
|
:negativeText="modalStore.negativeText"
|
||||||
|
@positive-click="modalStore.positiveClick"
|
||||||
|
@negative-click="modalStore.negativeClick"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import {useModalStore} from '@/store/modules/modalStore/modalStore'
|
||||||
|
|
||||||
|
const modalStore = useModalStore()
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
|
</style>
|
@ -7,4 +7,9 @@
|
|||||||
</keep-alive>
|
</keep-alive>
|
||||||
</template>
|
</template>
|
||||||
</router-view>
|
</router-view>
|
||||||
|
<VDialog/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import VDialog from '@/components/VDialog/index.vue'
|
||||||
|
</script>
|
||||||
|
@ -11,7 +11,8 @@ const RootRoute: Array<RouteRecordRaw> = [
|
|||||||
{
|
{
|
||||||
path: '/',
|
path: '/',
|
||||||
name: 'Root',
|
name: 'Root',
|
||||||
redirect: PageEnum.BASE_HOME,
|
// redirect: PageEnum.BASE_HOME,
|
||||||
|
redirect: '/chart/preview/null',
|
||||||
component: Layout,
|
component: Layout,
|
||||||
meta: {
|
meta: {
|
||||||
title: 'Root',
|
title: 'Root',
|
||||||
|
30
src/store/modules/modalStore/modalStore.ts
Normal file
30
src/store/modules/modalStore/modalStore.ts
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
import { defineStore } from 'pinia'
|
||||||
|
|
||||||
|
export const useModalStore = defineStore({
|
||||||
|
id: 'useModalStore',
|
||||||
|
state: () => ({
|
||||||
|
showModal: false,
|
||||||
|
title: '',
|
||||||
|
content: '',
|
||||||
|
positiveText: '',
|
||||||
|
negativeText: '',
|
||||||
|
positiveClick: () => {},
|
||||||
|
negativeClick: () => {},
|
||||||
|
}) as Record<string, any>,
|
||||||
|
actions: {
|
||||||
|
setModalStore(obj: Record<string, any>) {
|
||||||
|
for(let k in obj) {
|
||||||
|
this[k] = obj[k]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
clear() {
|
||||||
|
this.showModal = false
|
||||||
|
this.title = ''
|
||||||
|
this.content = ''
|
||||||
|
this.positiveText = ''
|
||||||
|
this.negativeText = ''
|
||||||
|
this.positiveClick = () => {}
|
||||||
|
this.negativeClick = () => {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
@ -5,6 +5,7 @@ export const useRouterStore = defineStore({
|
|||||||
state: () => ({
|
state: () => ({
|
||||||
// 为true是router交给parent调用自身不跳转 为false使用自身路由
|
// 为true是router交给parent调用自身不跳转 为false使用自身路由
|
||||||
callByParent: false,
|
callByParent: false,
|
||||||
|
token: null as null | string,
|
||||||
}),
|
}),
|
||||||
getters: {
|
getters: {
|
||||||
getCallByParent():boolean {
|
getCallByParent():boolean {
|
||||||
@ -14,6 +15,9 @@ export const useRouterStore = defineStore({
|
|||||||
actions: {
|
actions: {
|
||||||
setCallByParent(callByParent: boolean) {
|
setCallByParent(callByParent: boolean) {
|
||||||
this.callByParent = callByParent
|
this.callByParent = callByParent
|
||||||
|
},
|
||||||
|
setToken(v: string | null) {
|
||||||
|
this.token = v
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -294,7 +294,6 @@ export const JSONStringify = <T>(data: T) => {
|
|||||||
|
|
||||||
export const evalFn = (fn: string) => {
|
export const evalFn = (fn: string) => {
|
||||||
var Fun = Function // 一个变量指向Function,防止前端编译工具报错
|
var Fun = Function // 一个变量指向Function,防止前端编译工具报错
|
||||||
console.log(fn)
|
|
||||||
return new Fun('return ' + fn)()
|
return new Fun('return ' + fn)()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { computed } from 'vue'
|
import { computed, watch, onMounted, ref } from 'vue'
|
||||||
import { PreviewRenderList } from './components/PreviewRenderList'
|
import { PreviewRenderList } from './components/PreviewRenderList'
|
||||||
import { getFilterStyle, setTitle } from '@/utils'
|
import { getFilterStyle, setTitle } from '@/utils'
|
||||||
import { getEditCanvasConfigStyle, getSessionStorageInfo, keyRecordHandle, dragCanvas } from './utils'
|
import { getEditCanvasConfigStyle, getSessionStorageInfo, keyRecordHandle, dragCanvas } from './utils'
|
||||||
@ -37,6 +37,7 @@ import { useStore } from './hooks/useStore.hook'
|
|||||||
import { PreviewScaleEnum } from '@/enums/styleEnum'
|
import { PreviewScaleEnum } from '@/enums/styleEnum'
|
||||||
import type { ChartEditStorageType } from './index.d'
|
import type { ChartEditStorageType } from './index.d'
|
||||||
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
||||||
|
import { useRoute } from 'vue-router'
|
||||||
|
|
||||||
// const localStorageInfo: ChartEditStorageType = getSessionStorageInfo() as ChartEditStorageType
|
// const localStorageInfo: ChartEditStorageType = getSessionStorageInfo() as ChartEditStorageType
|
||||||
|
|
||||||
@ -60,10 +61,41 @@ const showEntity = computed(() => {
|
|||||||
|
|
||||||
useStore(chartEditStore)
|
useStore(chartEditStore)
|
||||||
const { entityRef, previewRef } = useScale(chartEditStore)
|
const { entityRef, previewRef } = useScale(chartEditStore)
|
||||||
const { show } = useComInstall(chartEditStore)
|
// const { show } = useComInstall(chartEditStore)
|
||||||
|
|
||||||
// 开启键盘监听
|
// 开启键盘监听
|
||||||
keyRecordHandle()
|
keyRecordHandle()
|
||||||
|
|
||||||
|
const route = useRoute()
|
||||||
|
watch(() => {
|
||||||
|
return route
|
||||||
|
}, () => {
|
||||||
|
getSessionStorageInfo()
|
||||||
|
}, {
|
||||||
|
deep: true
|
||||||
|
})
|
||||||
|
|
||||||
|
let show = ref(false)
|
||||||
|
onMounted(() => {
|
||||||
|
// 全部注册
|
||||||
|
requestIdleCallback(() => {
|
||||||
|
const intComponent = (chartKey: string, target: any) => {
|
||||||
|
if (!window['$vue'].component(chartKey)) {
|
||||||
|
window['$vue'].component(chartKey, target)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const indexModules: Record<string, { default: string }> = import.meta.glob('@/packages/components/**/index.vue', {
|
||||||
|
eager: true
|
||||||
|
})
|
||||||
|
for(let key in indexModules) {
|
||||||
|
const urlSplit = key.split('/')
|
||||||
|
|
||||||
|
// key与文件名必须一致
|
||||||
|
intComponent(`V${urlSplit[urlSplit.length - 2]}`, indexModules[key].default)
|
||||||
|
}
|
||||||
|
show.value = true
|
||||||
|
})
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
@ -4,6 +4,8 @@ import { StorageEnum } from '@/enums/storageEnum'
|
|||||||
import { ChartEditStorage } from '@/store/modules/chartEditStore/chartEditStore.d'
|
import { ChartEditStorage } from '@/store/modules/chartEditStore/chartEditStore.d'
|
||||||
import { fetchProjectApi } from '@/api/path'
|
import { fetchProjectApi } from '@/api/path'
|
||||||
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
||||||
|
import {defaultTheme, globalThemeJson} from "@/settings/chartThemes";
|
||||||
|
import {previewScaleType, requestInterval, requestIntervalUnit} from "@/settings/designSetting";
|
||||||
|
|
||||||
const chartEditStore = useChartEditStore()
|
const chartEditStore = useChartEditStore()
|
||||||
|
|
||||||
@ -14,6 +16,67 @@ export interface ChartEditStorageType extends ChartEditStorage {
|
|||||||
// 根据路由 id 获取存储数据的信息
|
// 根据路由 id 获取存储数据的信息
|
||||||
export const getSessionStorageInfo = async () => {
|
export const getSessionStorageInfo = async () => {
|
||||||
const id = Number(fetchRouteParamsLocation())
|
const id = Number(fetchRouteParamsLocation())
|
||||||
|
if(isNaN(id)) {
|
||||||
|
chartEditStore.editCanvasConfig = {
|
||||||
|
// 项目名称
|
||||||
|
projectName: undefined,
|
||||||
|
// 默认宽度
|
||||||
|
width: 1920,
|
||||||
|
// 默认高度
|
||||||
|
height: 1080,
|
||||||
|
// 启用滤镜
|
||||||
|
filterShow: false,
|
||||||
|
// 色相
|
||||||
|
hueRotate: 0,
|
||||||
|
// 饱和度
|
||||||
|
saturate: 1,
|
||||||
|
// 对比度
|
||||||
|
contrast: 1,
|
||||||
|
// 亮度
|
||||||
|
brightness: 1,
|
||||||
|
// 透明度
|
||||||
|
opacity: 1,
|
||||||
|
// 变换(暂不更改)
|
||||||
|
rotateZ: 0,
|
||||||
|
rotateX: 0,
|
||||||
|
rotateY: 0,
|
||||||
|
skewX: 0,
|
||||||
|
skewY: 0,
|
||||||
|
// 混合模式
|
||||||
|
blendMode: 'normal',
|
||||||
|
// 默认背景色
|
||||||
|
background: undefined,
|
||||||
|
backgroundImage: undefined,
|
||||||
|
// 是否使用纯颜色
|
||||||
|
selectColor: true,
|
||||||
|
// chart 主题色
|
||||||
|
chartThemeColor: defaultTheme || 'dark',
|
||||||
|
// 自定义颜色列表
|
||||||
|
chartCustomThemeColorInfo: undefined,
|
||||||
|
// 全局配置
|
||||||
|
chartThemeSetting: globalThemeJson,
|
||||||
|
// 适配方式
|
||||||
|
previewScaleType: previewScaleType
|
||||||
|
}
|
||||||
|
chartEditStore.requestGlobalConfig = {
|
||||||
|
requestDataPond: [],
|
||||||
|
requestOriginUrl: '',
|
||||||
|
requestInterval: requestInterval,
|
||||||
|
requestIntervalUnit: requestIntervalUnit,
|
||||||
|
requestParams: {
|
||||||
|
Body: {
|
||||||
|
'form-data': {},
|
||||||
|
'x-www-form-urlencoded': {},
|
||||||
|
json: '',
|
||||||
|
xml: ''
|
||||||
|
},
|
||||||
|
Header: {},
|
||||||
|
Params: {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
chartEditStore.componentList = []
|
||||||
|
return
|
||||||
|
}
|
||||||
const storageList: ChartEditStorageType[] = getSessionStorage(StorageEnum.GO_CHART_STORAGE_LIST)
|
const storageList: ChartEditStorageType[] = getSessionStorage(StorageEnum.GO_CHART_STORAGE_LIST)
|
||||||
|
|
||||||
// 是否本地预览
|
// 是否本地预览
|
||||||
|
Loading…
x
Reference in New Issue
Block a user