From c805f28089c1e9c985077a71dd01b530d650f54b Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Tue, 27 Jul 2021 18:03:56 +0800 Subject: [PATCH 1/2] =?UTF-8?q?perf:=20=E5=9C=B0=E5=9B=BE=E5=9D=90?= =?UTF-8?q?=E6=A0=87json=E4=BD=BF=E7=94=A8=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/store/getters.js | 3 ++- frontend/src/store/index.js | 4 ++- .../views/chart/components/ChartComponent.vue | 26 ++++++++++++++----- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/frontend/src/store/getters.js b/frontend/src/store/getters.js index 9f6d3cdd71..ada150bc49 100644 --- a/frontend/src/store/getters.js +++ b/frontend/src/store/getters.js @@ -26,6 +26,7 @@ const getters = { licMsg: state => state.lic.licMsg, uiInfo: state => state.user.uiInfo, conditions: state => state.conditions.conditions, - msgTypes: state => state.msg.msgTypes + msgTypes: state => state.msg.msgTypes, + geoMap: state => state.map.geoMap } export default getters diff --git a/frontend/src/store/index.js b/frontend/src/store/index.js index 37f0ba8fe9..35b26eac3f 100644 --- a/frontend/src/store/index.js +++ b/frontend/src/store/index.js @@ -12,6 +12,7 @@ import panel from './modules/panel' import application from './modules/application' import lic from './modules/lic' import msg from './modules/msg' +import map from './modules/map' import animation from '@/components/canvas/store/animation' import compose from '@/components/canvas/store/compose' import contextmenu from '@/components/canvas/store/contextmenu' @@ -185,7 +186,8 @@ const data = { panel, application, lic, - msg + msg, + map }, getters } diff --git a/frontend/src/views/chart/components/ChartComponent.vue b/frontend/src/views/chart/components/ChartComponent.vue index 66f232ae31..7a0e986a46 100644 --- a/frontend/src/views/chart/components/ChartComponent.vue +++ b/frontend/src/views/chart/components/ChartComponent.vue @@ -35,7 +35,8 @@ export default { data() { return { myChart: {}, - chartId: uuid.v1() + chartId: uuid.v1(), + currentGeoJson: null } }, watch: { @@ -100,22 +101,33 @@ export default { const customAttr = JSON.parse(chart.customAttr) if (!customAttr.areaCode) return - let areaJson - if ((areaJson = localStorage.getItem('areaJson' + customAttr.areaCode)) !== null) { - this.initMapChart(areaJson, chart) + if (this.currentGeoJson) { + this.initMapChart(this.currentGeoJson, chart) return } + + if (this.$store.getters.geoMap[customAttr.areaCode]) { + this.currentGeoJson = this.$store.getters.geoMap[customAttr.areaCode] + this.initMapChart(this.currentGeoJson, chart) + return + } + geoJson(customAttr.areaCode).then(res => { this.initMapChart(res.data, chart) - // localStorage最大容量只有5M,先取消缓存 - // localStorage.setItem('areaJson' + customAttr.areaCode, res.data) + + this.$store.dispatch('map/setGeo', { + key: customAttr.areaCode, + value: res.data + }) + this.currentGeoJson = res.data }) return } this.myEcharts(chart_option) }, initMapChart(geoJson, chart) { - this.$echarts.registerMap('HK', geoJson) + // this.$echarts.registerMap('HK', geoJson) + this.$echarts.getMap('HK') || this.$echarts.registerMap('HK', geoJson) const base_json = JSON.parse(JSON.stringify(BASE_MAP)) const chart_option = baseMapOption(base_json, chart) this.myEcharts(chart_option) From a6a24db963b3f09f4ef11105ef600416ca0eadfb Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Tue, 27 Jul 2021 18:04:04 +0800 Subject: [PATCH 2/2] =?UTF-8?q?perf:=20=E5=9C=B0=E5=9B=BE=E5=9D=90?= =?UTF-8?q?=E6=A0=87json=E4=BD=BF=E7=94=A8=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/store/modules/map.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 frontend/src/store/modules/map.js diff --git a/frontend/src/store/modules/map.js b/frontend/src/store/modules/map.js new file mode 100644 index 0000000000..65d41d3cfd --- /dev/null +++ b/frontend/src/store/modules/map.js @@ -0,0 +1,25 @@ +const state = { + geoMap: {} +} + +const mutations = { + + SET_GEO: (state, { key, value }) => { + state.geoMap[key] = value + } + +} + +const actions = { + setGeo({ commit }, data) { + commit('SET_GEO', data) + } +} + +export default { + namespaced: true, + state, + mutations, + actions +} +