Commit b836ecad authored by 罗超's avatar 罗超

优化缓存

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