2026-01-22 09:24:00 +08:00
|
|
|
|
<template>
|
2026-01-25 15:31:18 +08:00
|
|
|
|
<div class="viewport">
|
|
|
|
|
|
<div class="screen" :style="screenStyle">
|
|
|
|
|
|
<div class="app-container">
|
|
|
|
|
|
<div style="height: 90px"></div>
|
|
|
|
|
|
<div class="top">
|
|
|
|
|
|
<div class="top-1">
|
|
|
|
|
|
<Top1 />
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="top-2">
|
|
|
|
|
|
<Top2 />
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="top-3">
|
|
|
|
|
|
<Top3 />
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
2026-01-22 09:24:00 +08:00
|
|
|
|
|
2026-01-25 15:31:18 +08:00
|
|
|
|
<div class="center">
|
|
|
|
|
|
<div class="center-1">
|
|
|
|
|
|
<Center1 />
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="center-2">
|
|
|
|
|
|
<Center2 />
|
|
|
|
|
|
</div>
|
2026-01-22 09:24:00 +08:00
|
|
|
|
</div>
|
2026-01-25 15:31:18 +08:00
|
|
|
|
|
|
|
|
|
|
<div class="bottom">
|
|
|
|
|
|
<div class="bottom-1">
|
|
|
|
|
|
<div class="bottom-1-1">
|
|
|
|
|
|
<Bottom11 />
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="bottom-1-2">
|
|
|
|
|
|
<Bottom12 />
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="bottom-2">
|
|
|
|
|
|
<Bottom2 />
|
|
|
|
|
|
</div>
|
2026-01-22 09:24:00 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
2026-01-22 09:31:15 +08:00
|
|
|
|
import Top1 from './provincial/Top1'
|
2026-01-22 15:56:24 +08:00
|
|
|
|
import Top2 from './provincial/Top2'
|
2026-01-22 09:31:15 +08:00
|
|
|
|
import Top3 from './provincial/Top3'
|
|
|
|
|
|
import Center1 from './provincial/Center1'
|
|
|
|
|
|
import Center2 from './provincial/Center2'
|
|
|
|
|
|
import Bottom11 from './provincial/Bottom1-1'
|
|
|
|
|
|
import Bottom12 from './provincial/Bottom1-2'
|
|
|
|
|
|
import Bottom2 from './provincial/Bottom2'
|
2026-01-22 09:24:00 +08:00
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
|
|
name: 'provincialChart',
|
|
|
|
|
|
components: {
|
|
|
|
|
|
Top1,
|
2026-01-22 15:56:24 +08:00
|
|
|
|
Top2,
|
2026-01-22 09:24:00 +08:00
|
|
|
|
Top3,
|
|
|
|
|
|
Center1,
|
|
|
|
|
|
Center2,
|
|
|
|
|
|
Bottom11,
|
|
|
|
|
|
Bottom12,
|
|
|
|
|
|
Bottom2,
|
|
|
|
|
|
},
|
|
|
|
|
|
data() {
|
2026-01-25 15:31:18 +08:00
|
|
|
|
return {
|
|
|
|
|
|
scale: 1,
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
computed: {
|
|
|
|
|
|
screenStyle() {
|
|
|
|
|
|
return {
|
|
|
|
|
|
width: '1920px',
|
|
|
|
|
|
height: '1080px',
|
2026-01-29 09:38:49 +08:00
|
|
|
|
transform: `scale(${this.scale})`,
|
2026-01-25 15:31:18 +08:00
|
|
|
|
transformOrigin: '0 0',
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
mounted() {
|
|
|
|
|
|
this.calcScale()
|
|
|
|
|
|
window.addEventListener('resize', this.calcScale)
|
|
|
|
|
|
},
|
|
|
|
|
|
beforeDestroy() {
|
|
|
|
|
|
window.removeEventListener('resize', this.calcScale)
|
|
|
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
|
|
|
calcScale() {
|
|
|
|
|
|
const baseW = 1920
|
|
|
|
|
|
const vw = document.documentElement.clientWidth
|
|
|
|
|
|
|
2026-01-29 09:38:49 +08:00
|
|
|
|
// ✅ 永远以当前可视宽度为准
|
|
|
|
|
|
this.scale = vw / baseW
|
2026-01-25 15:31:18 +08:00
|
|
|
|
},
|
2026-01-22 09:24:00 +08:00
|
|
|
|
},
|
|
|
|
|
|
}
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
2026-01-25 15:31:18 +08:00
|
|
|
|
/* 外层视口:锁满屏 */
|
|
|
|
|
|
.viewport {
|
|
|
|
|
|
position: fixed;
|
|
|
|
|
|
inset: 0;
|
2026-01-29 09:38:49 +08:00
|
|
|
|
overflow-x: hidden;
|
|
|
|
|
|
overflow-y: auto;
|
|
|
|
|
|
background: #e1ebf7;
|
2026-01-25 15:31:18 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 被缩放的 1920×1080 画布 */
|
|
|
|
|
|
.screen {
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
top: 0;
|
|
|
|
|
|
left: 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-01-22 18:32:51 +08:00
|
|
|
|
.app-container {
|
2026-01-25 15:31:18 +08:00
|
|
|
|
width: 1920px;
|
|
|
|
|
|
height: 1080px;
|
2026-01-22 09:24:00 +08:00
|
|
|
|
background: #e1ebf7;
|
|
|
|
|
|
}
|
2026-01-25 15:31:18 +08:00
|
|
|
|
|
2026-01-22 09:24:00 +08:00
|
|
|
|
.top {
|
|
|
|
|
|
margin-bottom: 16px;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
|
|
|
|
|
|
.top-1,
|
|
|
|
|
|
.top-2,
|
|
|
|
|
|
.top-3 {
|
|
|
|
|
|
padding: 24px;
|
|
|
|
|
|
background: rgba(255, 255, 255, 0.91);
|
|
|
|
|
|
border-radius: 5px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.top-1,
|
|
|
|
|
|
.top-3 {
|
|
|
|
|
|
width: 480px;
|
|
|
|
|
|
height: 518px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.top-2 {
|
|
|
|
|
|
flex: 1;
|
|
|
|
|
|
margin: 0 15px;
|
|
|
|
|
|
height: 518px;
|
2026-01-22 15:56:24 +08:00
|
|
|
|
background-image: url('~@/assets/images/map-img.png');
|
|
|
|
|
|
background-size: 100% 100%;
|
2026-01-22 09:24:00 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.center {
|
|
|
|
|
|
margin-bottom: 16px;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
|
|
|
|
|
|
.center-1,
|
|
|
|
|
|
.center-2 {
|
2026-01-25 15:31:18 +08:00
|
|
|
|
width: 928px;
|
2026-02-03 15:39:22 +08:00
|
|
|
|
height: 405px;
|
2026-01-22 09:24:00 +08:00
|
|
|
|
padding: 24px;
|
|
|
|
|
|
background: rgba(255, 255, 255, 0.91);
|
|
|
|
|
|
border-radius: 5px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.center-1 {
|
|
|
|
|
|
margin-right: 7.5px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.center-2 {
|
|
|
|
|
|
margin-left: 7.5px;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.bottom {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
|
|
|
|
|
|
.bottom-1 {
|
2026-01-25 15:31:18 +08:00
|
|
|
|
width: 928px;
|
2026-01-22 09:24:00 +08:00
|
|
|
|
height: 350px;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
|
|
|
|
|
|
.bottom-1-1,
|
|
|
|
|
|
.bottom-1-2 {
|
|
|
|
|
|
padding: 24px;
|
|
|
|
|
|
width: 50%;
|
|
|
|
|
|
height: 350px;
|
|
|
|
|
|
background: rgba(255, 255, 255, 0.91);
|
|
|
|
|
|
border-radius: 5px;
|
2026-02-03 17:44:06 +08:00
|
|
|
|
overflow: hidden;
|
2026-01-22 09:24:00 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.bottom-1-1 {
|
|
|
|
|
|
margin-right: 7.5px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.bottom-1-2 {
|
|
|
|
|
|
margin-left: 7.5px;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
.bottom-2 {
|
2026-01-25 15:31:18 +08:00
|
|
|
|
width: 928px;
|
2026-01-22 09:24:00 +08:00
|
|
|
|
height: 350px;
|
|
|
|
|
|
padding: 24px;
|
|
|
|
|
|
background: rgba(255, 255, 255, 0.91);
|
|
|
|
|
|
border-radius: 5px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.bottom-1 {
|
|
|
|
|
|
margin-right: 7.5px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.bottom-2 {
|
|
|
|
|
|
margin-left: 7.5px;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|