Browse Source

解决页面卡顿问题,其他页面占位

master
mk 2 years ago
parent
commit
4d10af8e8a
  1. 15
      src/components/screen-map-header/index.vue
  2. 2
      src/store/modules/map.js
  3. 43
      src/views/next/screen-content-left/hsyf-left/index.vue
  4. 43
      src/views/next/screen-content-left/szyf-left/index.vue
  5. 15
      src/views/next/screen-content-map/cpt/chinaMap.vue
  6. 209
      src/views/next/screen-content-map/cpt/home-map.vue
  7. 22
      src/views/next/screen-content-map/cpt/zdyf-map.vue
  8. 43
      src/views/next/screen-content-right/home-right/index.vue
  9. 43
      src/views/next/screen-content-right/hsyf-right/index.vue
  10. 52
      src/views/next/screen-content-right/szyf-right/index.vue

15
src/components/screen-map-header/index.vue

@ -1,7 +1,7 @@
<template> <template>
<div class="map-header"> <div class="map-header">
<div class="flex"> <div class="flex">
<div class="item" v-for="(item, index) in list" :key="index"> <div class="item" v-for="(item, index) in data" :key="index">
<div class="name">{{ item.name }}</div> <div class="name">{{ item.name }}</div>
<section> <section>
<span :class="{ 'num': true, 'yellow': index === 4 }">{{ item.num }}</span> <span :class="{ 'num': true, 'yellow': index === 4 }">{{ item.num }}</span>
@ -16,15 +16,14 @@
export default { export default {
data() { data() {
return { return {
list: [
{ name: '年平均气温', units: '°C', num: '24' },
{ name: '年日光照', units: '小时', num: '2700' },
{ name: '无霾期', units: '天', num: '200' },
{ name: '年平均降水', units: '毫升', num: '687' },
{ name: '土壤有机质', units: '含量', num: '1.5%' }
]
}; };
}, },
props:{
data:{
type:Array,
default:()=>[]
}
},
created() { }, created() { },
methods: {}, methods: {},
components: {}, components: {},

2
src/store/modules/map.js

@ -4,7 +4,7 @@ export default {
streetId: '12121212121212ab', // 锦水街道id 1215437824174608386 streetId: '12121212121212ab', // 锦水街道id 1215437824174608386
communityId: '', // 社区id communityId: '', // 社区id
gridId: '', // 网格id gridId: '', // 网格id
navId:'zdyf'//选中nav navId:'sy'//选中nav
}, },
mutations: { mutations: {
set_mapLevel (state, mapLevel) { set_mapLevel (state, mapLevel) {

43
src/views/next/screen-content-left/hsyf-left/index.vue

@ -1,14 +1,43 @@
<template> <template>
<div class=''></div> <div>
<div class='card' style="height: 292px;">
<screen-title>
<div slot="left" class="screen-title-left">组织建设</div>
</screen-title>
</div>
<div class='card' style="margin-top: 8px;height: 266px;">
<screen-title>
<div slot="left" class="screen-title-left">党员分析</div>
</screen-title>
</div>
<div class='card m-top12' style="height: 318px;">
<screen-title>
<div slot="left" class="screen-title-left">党员风采</div>
</screen-title>
<div class="card-item-zdyf">
</div>
</div>
</div>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return {}; return {
};
},
created() {
},
mounted() {
},
beforeDestroy() {
},
methods: {
}, },
created() {},
methods: {},
components: {}, components: {},
computed: {}, computed: {},
watch: {}, watch: {},
@ -16,5 +45,11 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.card {
width: 100%;
display: flex;
flex-direction: column;
}
</style> </style>

43
src/views/next/screen-content-left/szyf-left/index.vue

@ -1,14 +1,43 @@
<template> <template>
<div class=''></div> <div>
<div class='card' style="height: 292px;">
<screen-title>
<div slot="left" class="screen-title-left">事件处理实况</div>
</screen-title>
</div>
<div class='card' style="margin-top: 8px;height: 266px;">
<screen-title>
<div slot="left" class="screen-title-left">事件处理实况</div>
</screen-title>
</div>
<div class='card m-top12' style="height: 318px;">
<screen-title>
<div slot="left" class="screen-title-left">重点维稳人员</div>
</screen-title>
<div class="card-item-zdyf">
</div>
</div>
</div>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return {}; return {
};
},
created() {
},
mounted() {
},
beforeDestroy() {
},
methods: {
}, },
created() {},
methods: {},
components: {}, components: {},
computed: {}, computed: {},
watch: {}, watch: {},
@ -16,5 +45,11 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.card {
width: 100%;
display: flex;
flex-direction: column;
}
</style> </style>

15
src/views/next/screen-content-map/cpt/chinaMap.vue

@ -9,7 +9,8 @@ export default {
data() { data() {
return { return {
seriesData: [], seriesData: [],
convertData: [] convertData: [],
myChart: null
} }
}, },
mounted() { mounted() {
@ -19,7 +20,7 @@ export default {
}, },
methods: { methods: {
initData() { initData() {
var myChart = echarts.init(document.getElementById("chinaMap")); this.myChart = echarts.init(document.getElementById("chinaMap"));
echarts.registerMap("china", china); echarts.registerMap("china", china);
let { seriesData, convertData } = this let { seriesData, convertData } = this
let option = { let option = {
@ -123,18 +124,18 @@ export default {
color: '#092550' color: '#092550'
} }
}, },
silent: 1, // silent: 1,
data: convertData data: convertData
} }
] ]
}; };
myChart.setOption(option); this.myChart.setOption(option);
myChart.on("click", (params) =>
this.$emit("toProvince", { fileName: params.name })
);
}, },
}, },
beforeDestroy() {
this.myChart.dispose();
}
}; };
</script> </script>

209
src/views/next/screen-content-map/cpt/home-map.vue

@ -1,20 +1,215 @@
<template> <template>
<div class=''>1111</div> <div style="width: 100% ;height: 100%;">
<div id="myMap">
<screen-map-header :data="headerList"></screen-map-header>
</div>
</div>
</template> </template>
<script> <script>
import { Scene, PolygonLayer, LineLayer, } from "@antv/l7";
import { GaodeMap } from "@antv/l7-maps";
import yifengJson from './yifeng.json';
import chinaMap from "./chinaMap.vue"
import { mapActions } from 'vuex'
let myMap;
let scene;
let polygonLayer;
let lineLayer;
let textLayer;
export default { export default {
data() { data() {
return {}; return {
darkStyle: {
style: "amap://styles/blue",
polygonColor: [
// "rgba(255, 100, 60, 0.5)",
// "rgba(43, 231, 253, 0.35)",
"rgba(0, 127, 241, .5)",
// "rgba(255, 255, 50, 0.35)",
],
lineColor: [
// "rgba(255, 180, 150, 0.9)",
// "rgba(43, 231, 253, 0.7)",
"rgba(0, 127, 241, .6)",
// "rgba(255, 255, 50, 0.7)",
],
circleColor: [
// "rgba(255, 180, 150, 0.99)",
// "rgba(43, 231, 253, 0.99)",
"rgba(0, 127, 241, 0.99)",
// "rgba(255, 255, 50, 0.99)",
],
textColor: [
// "rgba(255, 100, 60, 0.99)",
// "rgba(43, 231, 253, 0.99)",
"rgba(126, 187, 255, 1)",
// "rgba(255, 255, 50, 0.99)",
],
textStrokeColor: "#fff",
},
lightStyle: {
style: "amap://styles/whitesmoke",
polygonColor: [
// "rgba(255, 100, 60, 0.3)",
"rgba(43, 231, 253, 0.3)",
// "rgba(255, 255, 50, 0.3)",
],
lineColor: [
// "rgba(220, 150, 120, 0.9)",
"rgba(155, 212, 242, 1)",
// "rgba(200, 200, 50, 0.9)",
],
circleColor: [
// "rgba(255, 180, 150, 0.99)",
"rgba(13, 181, 203, 0.8)",
// "rgba(255, 255, 50, 0.99)",
],
textColor: [
// "rgba(200, 50, 10, 0.99)",
"rgba(0, 130, 153, 0.99)",
// "rgba(120, 120, 0, 0.99)",
],
textStrokeColor: "#666",
},
headerList: [
{ name: '镇域面积', units: '公里²', num: '199' },
{ name: '耕地面积', units: '万亩', num: '17.4' },
{ name: '新村', units: '个', num: '10' },
{ name: '网格村', units: '个', num: '99' },
{ name: '辖区人口', units: '万人', num: '9.3' }
],
};
},
created() {
},
mounted() {
this.$nextTick(() => {
this.init();
})
},
methods: {
init() {
if (!yifengJson) return false;
myMap = new GaodeMap({
pitch: 40.24716321414439,
mapStyle: "amap://styles/darkblue",
// style: styleConfig.style,
showLabel: false,
center: [120.220563, 36.496127],
token: "fc14b42e0ca18387866d68ebd4f150c1",
zoom: 7,
isHotspot: false,
showIndoorMap: false,
showBuildingBlock: false,
resizeEnable: true,
doubleClickZoom: false,
showRoad: false,
viewMode: "3D",
});
scene = new Scene({
id: "myMap",
logoVisible: false,
map: myMap,
});
scene.on("loaded", () => {
this.initPolygonLayer()
});
// scene.on("click", (feature) => {
// // console.log(feature);
// });
},
initPolygonLayer() {
const { darkStyle } = this;
let styleConfig = darkStyle;
let data = yifengJson
//
polygonLayer = new PolygonLayer({
autoFit: true,
})
.size(300)
.source(data)
.color("name", styleConfig.polygonColor)
.shape("extrude")
// .shape("fill")
.style({
opacityLinear: {
enable: true, // true - false
dir: "out", // in - out
}, },
created() {}, opacity: 0.8,
methods: {}, heightfixed: true,
components:{}, sourceColor: '#4ee8fc',
targetColor: '#00284e',
});
scene.addLayer(polygonLayer);
//
lineLayer = new LineLayer({
zIndex: 2,
name: "line2",
})
.source(data)
.shape("line")
.size(1)
.color("name", styleConfig.lineColor)
.style({
opacity: 1,
raisingHeight: 300,
})
.animate({
interval: 1, //
duration: 2, //
trailLength: 2, // 线
});
scene.addLayer(lineLayer);
textLayer = new PolygonLayer({
zIndex: 20,
})
.source(data)
.color("name", styleConfig.textColor)
.shape("name", "text")
.size(14)
.style({
textAnchor: "center", // center|left|right|top|bottom|top-left
textOffset: [0, 40], // [, ]
spacing: 2, //
padding: [2, 2], // padding []
stroke: styleConfig.textStrokeColor, //
strokeWidth: 0.1, //
strokeOpacity: 0.8,
raisingHeight: 300,
textAllowOverlap: true,
})
.active(true);
scene.addLayer(textLayer);
let _this = this
polygonLayer.on("click", (e) => {
});
},
},
components: { chinaMap },
computed: {}, computed: {},
watch: {}, watch: {},
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.map-header {
position: absolute;
top: 100px;
left: 50%;
transform: translate(-50%);
width: 745px;
height: 58px;
z-index: 10;
}
#myMap {
width: 100%;
height: 100%;
}
</style> </style>

22
src/views/next/screen-content-map/cpt/zdyf-map.vue

@ -12,7 +12,7 @@
</div> </div>
<div id="myMap" v-if="mapFlag == 'Amap'"> <div id="myMap" v-if="mapFlag == 'Amap'">
<div v-if="mapType == 'polygon'"> <div v-if="mapType == 'polygon'">
<screen-map-header></screen-map-header> <screen-map-header :data="headerList"></screen-map-header>
<screen-map-legeng></screen-map-legeng> <screen-map-legeng></screen-map-legeng>
</div> </div>
</div> </div>
@ -25,7 +25,7 @@ import yifengJson from './yifeng.json';
import point from './point.json'; import point from './point.json';
import chinaMap from "./chinaMap.vue" import chinaMap from "./chinaMap.vue"
import { mapActions } from 'vuex' import { mapActions } from 'vuex'
// let myMap; let myMap;
let scene; let scene;
let circleLayerSmall; let circleLayerSmall;
let roadLayer; let roadLayer;
@ -91,8 +91,14 @@ export default {
], ],
textStrokeColor: "#666", textStrokeColor: "#666",
}, },
headerList: [
{ name: '年平均气温', units: '°C', num: '24' },
{ name: '年日光照', units: '小时', num: '2700' },
{ name: '无霾期', units: '天', num: '200' },
{ name: '年平均降水', units: '毫升', num: '687' },
{ name: '土壤有机质', units: '含量', num: '1.5%' }
],
mapType: '', mapType: '',
myMap: null
}; };
}, },
created() { created() {
@ -119,8 +125,7 @@ export default {
let that = this let that = this
if (type === 'unit') { if (type === 'unit') {
this.mapFlag = 'Amap' this.mapFlag = 'Amap'
console.log(this.myMap); if (!myMap) {
if (!this.myMap) {
setTimeout(() => { setTimeout(() => {
that.init(type) that.init(type)
}, 500) }, 500)
@ -131,7 +136,7 @@ export default {
} else if (type === 'Emap') { } else if (type === 'Emap') {
this.mapFlag = 'Emap' this.mapFlag = 'Emap'
scene.destroy(); scene.destroy();
this.myMap = null myMap = null
} }
}, },
toProvince() { toProvince() {
@ -142,7 +147,7 @@ export default {
}, },
init(type) { init(type) {
if (!yifengJson) return false; if (!yifengJson) return false;
this.myMap = new GaodeMap({ myMap = new GaodeMap({
pitch: 40.24716321414439, pitch: 40.24716321414439,
mapStyle: "amap://styles/darkblue", mapStyle: "amap://styles/darkblue",
// style: styleConfig.style, // style: styleConfig.style,
@ -159,11 +164,10 @@ export default {
viewMode: "3D", viewMode: "3D",
}); });
let map = this.myMap
scene = new Scene({ scene = new Scene({
id: "myMap", id: "myMap",
logoVisible: false, logoVisible: false,
map: map, map: myMap,
}); });
scene.on("loaded", () => { scene.on("loaded", () => {
if (!type) { if (!type) {

43
src/views/next/screen-content-right/home-right/index.vue

@ -1,14 +1,43 @@
<template> <template>
<div class=''></div> <div>
<div class='card' style="height: 292px;">
<screen-title>
<div slot="left" class="screen-title-left">和美移风</div>
</screen-title>
</div>
<div class='card' style="margin-top: 8px;height: 266px;">
<screen-title>
<div slot="left" class="screen-title-left">善治移风</div>
</screen-title>
</div>
<div class='card m-top12' style="height: 318px;">
<screen-title>
<div slot="left" class="screen-title-left">文化移风</div>
</screen-title>
<div class="card-item-zdyf">
</div>
</div>
</div>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return {}; return {
};
},
created() {
},
mounted() {
},
beforeDestroy() {
},
methods: {
}, },
created() {},
methods: {},
components: {}, components: {},
computed: {}, computed: {},
watch: {}, watch: {},
@ -16,5 +45,11 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.card {
width: 100%;
display: flex;
flex-direction: column;
}
</style> </style>

43
src/views/next/screen-content-right/hsyf-right/index.vue

@ -1,14 +1,43 @@
<template> <template>
<div class=''></div> <div>
<div class='card' style="height: 292px;">
<screen-title>
<div slot="left" class="screen-title-left">党建活动</div>
</screen-title>
</div>
<div class='card' style="margin-top: 8px;height: 266px;">
<screen-title>
<div slot="left" class="screen-title-left">支部风采</div>
</screen-title>
</div>
<div class='card m-top12' style="height: 318px;">
<screen-title>
<div slot="left" class="screen-title-left">党务公开</div>
</screen-title>
<div class="card-item-zdyf">
</div>
</div>
</div>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return {}; return {
};
},
created() {
},
mounted() {
},
beforeDestroy() {
},
methods: {
}, },
created() {},
methods: {},
components: {}, components: {},
computed: {}, computed: {},
watch: {}, watch: {},
@ -16,5 +45,11 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.card {
width: 100%;
display: flex;
flex-direction: column;
}
</style> </style>

52
src/views/next/screen-content-right/szyf-right/index.vue

@ -1,14 +1,52 @@
<!--
* @Author: mk 2403457699@qq.com
* @Date: 2024-01-16 10:06:10
* @LastEditors: mk 2403457699@qq.com
* @LastEditTime: 2024-01-25 10:50:11
* @Description: 介绍一下改动了什么
*
*
-->
<template> <template>
<div class=''></div> <div>
<div class='card' style="height: 292px;">
<screen-title>
<div slot="left" class="screen-title-left">服务事项分析</div>
</screen-title>
</div>
<div class='card' style="margin-top: 8px;height: 266px;">
<screen-title>
<div slot="left" class="screen-title-left">事件处理实况</div>
</screen-title>
</div>
<div class='card m-top12' style="height: 318px;">
<screen-title>
<div slot="left" class="screen-title-left">重点帮扶人员</div>
</screen-title>
<div class="card-item-zdyf">
</div>
</div>
</div>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return {}; return {
};
},
created() {
},
mounted() {
},
beforeDestroy() {
},
methods: {
}, },
created() {},
methods: {},
components: {}, components: {},
computed: {}, computed: {},
watch: {}, watch: {},
@ -16,5 +54,11 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.card {
width: 100%;
display: flex;
flex-direction: column;
}
</style> </style>

Loading…
Cancel
Save