Commit b836ecad authored by 罗超's avatar 罗超

优化缓存

parent fec8e5c1
......@@ -37,6 +37,7 @@
"number-precision": "^1.6.0",
"opentype.js": "^1.3.4",
"pinia": "^2.1.7",
"pinia-plugin-persistedstate": "^3.2.1",
"pptxgenjs": "^3.12.0",
"pptxtojson": "^0.0.13",
"prosemirror-commands": "^1.3.0",
......@@ -53,6 +54,7 @@
"psd.js": "^3.9.0",
"qrcode": "^1.5.3",
"register-service-worker": "^1.7.2",
"secure-ls": "^1.2.6",
"svg-arc-to-cubic-bezier": "^3.2.0",
"svg-pathdata": "^6.0.3",
"tinycolor2": "^1.6.0",
......
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate';
import App from './App.vue'
import './registerServiceWorker'
......@@ -19,6 +20,8 @@ import * as ElementPlusIconsVue from '@element-plus/icons-vue'
import VueKonva from 'vue-konva';
const app = createApp(App)
const pinia = createPinia()
pinia.use(piniaPluginPersistedstate)
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
app.component(key, component)
......@@ -27,5 +30,5 @@ for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
app.use(Icon)
app.use(Directive)
app.use(VueKonva)
app.use(createPinia())
app.use(pinia)
app.mount('#app')
......@@ -2,10 +2,20 @@ import { ApiResult } from './../configs/axios';
import { defineStore } from 'pinia'
import FontService from '@/services/FontService'
import { ElLoading } from 'element-plus'
import FileService from '@/services/FileService';
import { reduceFont } from '@/utils/fonts/convertFont';
import AliyunUpload from '@/utils/upload/aliyun';
import type { StorageLike } from 'pinia-plugin-persistedstate';
import SecureLS from 'secure-ls';
const ls = new SecureLS({
isCompression: false,
encryptionSecret: '38c31684-d00d-30dc-82e0-fad9eec46d1d',
});
const st: StorageLike = {
setItem(key: string, value: string) {
ls.set(key, value);
},
getItem(key: string): string | null {
return ls.get(key);
},
};
export interface CustomerFonts {
fontUrl: string
fontFamily: string
......@@ -23,14 +33,16 @@ export interface FormatFonts {
export interface FontState{
fonts:CustomerFonts[],
loaded:string[],
formatFonts:FormatFonts[]
formatFonts:FormatFonts[],
restoreLoaded:string[]
}
export const useFontStore = defineStore('fonts',{
state: (): FontState => ({
state: ():FontState => ({
fonts:[],
loaded:[],
formatFonts:[]
formatFonts:[],
restoreLoaded:[]
}),
getters:{
getFonts(state){
......@@ -92,15 +104,17 @@ export const useFontStore = defineStore('fonts',{
for (let i = 0; i < loadFonts.length; i++) {
const item = loadFonts[i];
const url = item.fontUrl.indexOf('local')==-1?`url('${item.fontUrl}')`:item.fontUrl
const fontFace = new FontFace(item.fontFamily,url);
try {
fontFace.display = "swap"
await fontFace.load();
} catch (error) {
console.log('加载字体报错',error)
if(this.restoreLoaded.indexOf(item.fontFamily)==-1) {
const fontFace = new FontFace(item.fontFamily,url);
try {
fontFace.display = "swap"
await fontFace.load();
} catch (error) {
console.log('加载字体报错',error)
}
document.fonts.add(fontFace)
}
document.fonts.add(fontFace)
this.loaded.push(item.fontFamily)
let newStyle = document.createElement('style');
const fontFormat = item.fontUrl.toLowerCase().indexOf('.ttf')!=-1?'truetype':(item.fontUrl.toLowerCase().indexOf('.otf')!=-1?'opentype':`'${item.fontUrl.split('.').reverse()[0]}'`)
......@@ -136,5 +150,15 @@ export const useFontStore = defineStore('fonts',{
}
return false
}
},
persist: {
storage: st,
paths:['loaded'],
afterRestore(context) {
console.log('还原了....',context.store.loaded)
context.store.restoreLoaded = JSON.parse(JSON.stringify(context.store.loaded))
context.store.loaded = []
console.log('修改了....',context.store.loaded)
},
}
})
\ No newline at end of file
......@@ -138,6 +138,7 @@ export const useSlidesStore = defineStore('slides', {
},
setSlides(slides: Slide[]) {
this.slideIndex = 0
this.slides = slides
this.thumbnails = []
this.setFonts(slides)
......
......@@ -506,8 +506,10 @@ const sellGetTripTemplate = async () =>{
Id: Id
}
// 行程广告浏览记录
const loadingObj = ElLoading.service({text:'正在渲染数据',lock:true})
await ConfigService.SetTripBrowse({FileId: searchData.value.sellId});
let dataRes = await ConfigService.sellGetTemplateDetails(queryMsg);
loadingObj.close()
if (dataRes.data.resultCode == 1) {
if(searchData.value.TempId) queryObj.value.TempId = searchData.value.TempId
else if(searchData.value.TempId2&&!searchData.value.TempId) queryObj.value.TempId = searchData.value.TempId2
......
......@@ -190,6 +190,7 @@ usePasteEvent()
provide(injectKeyDataSource,datas.DataSource)
</script>
<style lang="scss" scoped>
......
......@@ -30,6 +30,7 @@ import { useSlidesStore } from '../../store'
import { VIEWPORT_SIZE, VIEWPORT_VER_SIZE } from '../../configs/canvas'
import { ref } from 'vue';
import { query } from '../../utils/common'
import { ElLoading } from 'element-plus'
const param = ref<any>("")
param.value = query()
......@@ -39,8 +40,9 @@ const w = ref(0)
const h = ref(0)
const loadSliders = async ()=>{
const loadingObj = ElLoading.service({text:'正在渲染数据',lock:true})
let response = await ConfigService.sellGetTemplateDetails({Id:param.value.tid})
console.log(response)
loadingObj.close()
if (response.data.resultCode == 1) {
let dataObj = response.data.data
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment