This commit is contained in:
huangchenhao 2025-11-03 11:33:57 +08:00
commit d0260c181c
14 changed files with 214 additions and 149 deletions

View File

@ -1,3 +1,5 @@
@import './mixins.scss';
* { * {
margin: 0; margin: 0;
padding: 0; padding: 0;

View File

@ -0,0 +1,27 @@
// 屏幕适配工具 (Less 版本)
// 设计稿基准1920px (宽) × 982px (高,不含头部)
// 设计稿基准值
@design-width: 1920;
@design-height: 982;
// 将 px 转换为 vw (基于设计稿宽度 1920px)
.vw(@px) {
@vw-value: (@px / @design-width * 100vw);
}
// 将 px 转换为 vh (基于设计稿内容区域高度 982px)
.vh(@px) {
@vh-value: (@px / @design-height * 100vh);
}
// 字体大小转换 (使用 vw 确保响应式)
.fs(@px) {
@fs-value: (@px / @design-width * 100vw);
}
// 由于 Less 的限制,直接使用 calc() 表达式更简单
// 使用示例(推荐方式):
// width: calc(580 / 1920 * 100vw);
// height: calc(400 / 982 * 100vh);
// font-size: calc(16 / 1920 * 100vw);

View File

@ -0,0 +1,22 @@
// 屏幕适配工具
// 设计稿基准1920px () × 982px (不含头部)
// px 转换为 vw (基于设计稿宽度 1920px)
@function vw($px) {
@return calc($px / 1920 * 100vw);
}
// px 转换为 vh (基于设计稿内容区域高度 982px)
@function vh($px) {
@return calc($px / 982 * 100vh);
}
// 字体大小转换 (使用 vw 确保响应式)
@function fs($px) {
@return calc($px / 1920 * 100vw);
}
// 使用示例
// width: vw(580); // 580px vw
// height: vh(400); // 400px vh
// font-size: fs(16); // 16px vw

Binary file not shown.

Before

Width:  |  Height:  |  Size: 372 KiB

After

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 228 KiB

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 212 KiB

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 KiB

After

Width:  |  Height:  |  Size: 194 KiB

View File

@ -35,11 +35,13 @@ const stats = ref([
]) ])
</script> </script>
<style scoped lang="less"> <style scoped lang="scss">
@import '@/styles/mixins.scss';
.block-event { .block-event {
background: url(../assets/img/block-panel-bg.png) no-repeat; background: url(../assets/img/block-panel-bg.png) no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
padding: 20px 30px; padding: vw(20) vw(30);
flex: 1; flex: 1;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -47,18 +49,18 @@ const stats = ref([
.panel-header { .panel-header {
position: relative; position: relative;
width: 293px; width: vw(293);
height: 49px; height: vh(49);
background: url(../assets/img/common-panel-header-bg.png) no-repeat; background: url(../assets/img/common-panel-header-bg.png) no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
display: flex; display: flex;
align-items: center; align-items: center;
padding-left: 24px; padding-left: vw(24);
margin-bottom: 40px; margin-bottom: vh(40);
.title { .title {
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 22px; font-size: fs(22);
font-family: SourceHanSansCN-Medium, sans-serif; font-family: SourceHanSansCN-Medium, sans-serif;
font-weight: 500; font-weight: 500;
} }
@ -67,7 +69,7 @@ const stats = ref([
.stats-grid { .stats-grid {
display: grid; display: grid;
grid-template-columns: repeat(2, 1fr); grid-template-columns: repeat(2, 1fr);
gap: 40px 20px; gap: vh(40) vw(20);
flex: 1; flex: 1;
align-content: flex-start; align-content: flex-start;
} }
@ -75,11 +77,11 @@ const stats = ref([
.stat-card { .stat-card {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 10px; gap: vw(10);
.stat-icon { .stat-icon {
width: 53px; width: vw(53);
height: 84px; height: vh(84);
flex-shrink: 0; flex-shrink: 0;
} }
@ -88,40 +90,40 @@ const stats = ref([
position: relative; position: relative;
.stat-title { .stat-title {
height: 28px; height: vh(28);
background: url(../assets/img/block-stat-title-bg.png) no-repeat; background: url(../assets/img/block-stat-title-bg.png) no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 15px; font-size: fs(15);
font-family: SourceHanSansCN-Bold, sans-serif; font-family: SourceHanSansCN-Bold, sans-serif;
font-weight: 700; font-weight: 700;
display: flex; display: flex;
align-items: center; align-items: center;
padding-left: 10px; padding-left: vw(10);
margin-bottom: 10px; margin-bottom: vh(10);
} }
.stat-value { .stat-value {
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 42px; font-size: fs(42);
font-family: SourceHanSansCN-Bold, sans-serif; font-family: SourceHanSansCN-Bold, sans-serif;
font-weight: 700; font-weight: 700;
line-height: 1; line-height: 1;
padding-left: 10px; padding-left: vw(10);
} }
.stat-unit { .stat-unit {
position: absolute; position: absolute;
top: 50px; top: vh(50);
right: 20px; right: vw(20);
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 15px; font-size: fs(15);
} }
.stat-decoration { .stat-decoration {
width: 154px; width: vw(154);
height: 29px; height: vh(29);
margin-top: 5px; margin-top: vh(5);
} }
} }
} }

View File

@ -28,7 +28,9 @@ import BlockEvent from './BlockEvent.vue'
import YearStatistics from './YearStatistics.vue' import YearStatistics from './YearStatistics.vue'
</script> </script>
<style scoped lang="less"> <style scoped lang="scss">
@import '@/styles/mixins.scss';
.cockpit-layout { .cockpit-layout {
width: 100vw; width: 100vw;
height: 100vh; height: 100vh;
@ -42,9 +44,9 @@ import YearStatistics from './YearStatistics.vue'
.cockpit-main { .cockpit-main {
flex: 1; flex: 1;
display: grid; display: grid;
grid-template-columns: 580px 1fr 580px; grid-template-columns: vw(580) 1fr vw(580);
gap: 20px; gap: vw(20);
padding: 20px; padding: vw(20);
padding-top: 0; padding-top: 0;
} }
@ -52,7 +54,7 @@ import YearStatistics from './YearStatistics.vue'
.right-panel { .right-panel {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 20px; gap: vw(20);
} }
.center-panel { .center-panel {

View File

@ -98,11 +98,13 @@ const resources = ref([
]) ])
</script> </script>
<style scoped lang="less"> <style scoped lang="scss">
@import '@/styles/mixins.scss';
.emergency-resources { .emergency-resources {
background: url(../assets/img/emergency-panel-bg.png) no-repeat; background: url(../assets/img/emergency-panel-bg.png) no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
padding: 20px 30px; padding: vw(20) vw(30);
flex: 1; flex: 1;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -110,18 +112,18 @@ const resources = ref([
.panel-header { .panel-header {
position: relative; position: relative;
width: 293px; width: vw(293);
height: 49px; height: vh(49);
background: url(../assets/img/common-panel-header-bg.png) no-repeat; background: url(../assets/img/common-panel-header-bg.png) no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
display: flex; display: flex;
align-items: center; align-items: center;
padding-left: 24px; padding-left: vw(24);
margin-bottom: 30px; margin-bottom: vh(30);
.title { .title {
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 22px; font-size: fs(22);
font-family: SourceHanSansCN-Medium, sans-serif; font-family: SourceHanSansCN-Medium, sans-serif;
font-weight: 500; font-weight: 500;
} }
@ -133,7 +135,7 @@ const resources = ref([
flex-direction: column; flex-direction: column;
.table-header { .table-header {
height: 35px; height: vh(35);
background: url(../assets/img/emergency-table-header-bg.png) no-repeat; background: url(../assets/img/emergency-table-header-bg.png) no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
display: grid; display: grid;
@ -141,20 +143,20 @@ const resources = ref([
align-items: center; align-items: center;
text-align: center; text-align: center;
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 16px; font-size: fs(16);
font-family: SourceHanSansCN-Medium, sans-serif; font-family: SourceHanSansCN-Medium, sans-serif;
font-weight: 500; font-weight: 500;
margin-bottom: 5px; margin-bottom: vh(5);
} }
.table-row { .table-row {
height: 35px; height: vh(35);
display: grid; display: grid;
grid-template-columns: 35px 1fr 1fr 1fr 1fr; grid-template-columns: vw(35) 1fr 1fr 1fr 1fr;
align-items: center; align-items: center;
gap: 10px; gap: vw(10);
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 14px; font-size: fs(14);
font-family: PingFangSC-Medium, sans-serif; font-family: PingFangSC-Medium, sans-serif;
font-weight: 500; font-weight: 500;
@ -169,14 +171,14 @@ const resources = ref([
} }
.row-number { .row-number {
width: 35px; width: vw(35);
height: 35px; height: vh(35);
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
background-color: rgba(28, 161, 255, 0.44); background-color: rgba(28, 161, 255, 0.44);
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 14px; font-size: fs(14);
font-family: FZZYJW--GB1-0, sans-serif; font-family: FZZYJW--GB1-0, sans-serif;
} }
@ -192,7 +194,7 @@ const resources = ref([
text-align: center; text-align: center;
font-family: PingFangSC-Semibold, sans-serif; font-family: PingFangSC-Semibold, sans-serif;
font-weight: 600; font-weight: 600;
font-size: 14px; font-size: fs(14);
&.green { &.green {
color: rgba(17, 187, 119, 1); color: rgba(17, 187, 119, 1);
@ -211,11 +213,11 @@ const resources = ref([
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
gap: 5px; gap: vw(5);
.alert-icon { .alert-icon {
width: 10px; width: vw(10);
height: 10px; height: vh(10);
} }
} }
} }

View File

@ -109,7 +109,9 @@ const markers = ref([
]) ])
</script> </script>
<style scoped lang="less"> <style scoped lang="scss">
@import '@/styles/mixins.scss';
.map-center { .map-center {
width: 100%; width: 100%;
height: 100%; height: 100%;
@ -120,23 +122,23 @@ const markers = ref([
.top-buttons { .top-buttons {
position: absolute; position: absolute;
top: 20px; top: vh(20);
left: 50%; left: 50%;
transform: translateX(-50%); transform: translateX(-50%);
display: flex; display: flex;
gap: 10px; gap: vw(10);
z-index: 10; z-index: 10;
} }
.func-button { .func-button {
width: 60px; width: vw(60);
height: 60px; height: vh(60);
border: 0.5px solid rgba(60, 174, 255, 1); border: vw(0.5) solid rgba(60, 174, 255, 1);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
gap: 5px; gap: vh(5);
cursor: pointer; cursor: pointer;
transition: all 0.3s; transition: all 0.3s;
@ -153,13 +155,13 @@ const markers = ref([
} }
.button-icon { .button-icon {
width: 28px; width: vw(28);
height: 23px; height: vh(23);
} }
span { span {
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 12px; font-size: fs(12);
font-family: SourceHanSansCN-Regular, sans-serif; font-family: SourceHanSansCN-Regular, sans-serif;
} }
} }
@ -170,8 +172,8 @@ const markers = ref([
.marker { .marker {
position: absolute; position: absolute;
width: 44px; width: vw(44);
height: 44px; height: vh(44);
cursor: pointer; cursor: pointer;
transition: transform 0.3s; transition: transform 0.3s;
@ -188,27 +190,27 @@ const markers = ref([
.bottom-menu { .bottom-menu {
position: absolute; position: absolute;
bottom: 20px; bottom: vh(20);
left: 50%; left: 50%;
transform: translateX(-50%); transform: translateX(-50%);
display: flex; display: flex;
gap: 30px; gap: vw(30);
align-items: flex-end; align-items: flex-end;
} }
.menu-left { .menu-left {
.menu-text { .menu-text {
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 14px; font-size: fs(14);
line-height: 39px; line-height: vh(39);
white-space: nowrap; white-space: nowrap;
} }
} }
.menu-center { .menu-center {
position: relative; position: relative;
width: 350px; width: vw(350);
height: 156px; height: vh(156);
.center-menu-bg { .center-menu-bg {
width: 100%; width: 100%;
@ -221,7 +223,7 @@ const markers = ref([
.center-menu-content { .center-menu-content {
position: relative; position: relative;
z-index: 1; z-index: 1;
padding: 15px 34px; padding: vw(15) vw(34);
height: 100%; height: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -230,11 +232,11 @@ const markers = ref([
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
margin-top: auto; margin-top: auto;
margin-bottom: 5px; margin-bottom: vh(5);
span { span {
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 12px; font-size: fs(12);
font-family: Helvetica, "Microsoft YaHei", Arial, sans-serif; font-family: Helvetica, "Microsoft YaHei", Arial, sans-serif;
cursor: pointer; cursor: pointer;
@ -253,31 +255,31 @@ const markers = ref([
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
gap: 5px; gap: vh(5);
cursor: pointer; cursor: pointer;
transition: transform 0.3s; transition: transform 0.3s;
&:hover { &:hover {
transform: translateY(-5px); transform: translateY(vh(-5));
} }
&.highlighted { &.highlighted {
background: url(../assets/img/map-menu-item-highlight-bg.png) no-repeat; background: url(../assets/img/map-menu-item-highlight-bg.png) no-repeat;
background-size: contain; background-size: contain;
padding: 10px; padding: vw(10);
} }
img { img {
width: 32px; width: vw(32);
height: 32px; height: vh(32);
} }
span { span {
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 12px; font-size: fs(12);
font-family: Helvetica, "Microsoft YaHei", Arial, sans-serif; font-family: Helvetica, "Microsoft YaHei", Arial, sans-serif;
text-align: center; text-align: center;
line-height: 14px; line-height: vh(14);
} }
} }
} }

View File

@ -10,9 +10,11 @@
<script setup> <script setup>
</script> </script>
<style scoped lang="less"> <style scoped lang="scss">
@import '@/styles/mixins.scss';
.page-header { .page-header {
height: 137px; height: vh(137);
background: url(../assets/img/header-bg.png) no-repeat; background: url(../assets/img/header-bg.png) no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
display: flex; display: flex;
@ -24,7 +26,7 @@
.header-bg { .header-bg {
background-image: url(../assets/img/header-title-bg.png); background-image: url(../assets/img/header-title-bg.png);
width: 100%; width: 100%;
height: 107px; height: vh(107);
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
@ -33,8 +35,8 @@
.title { .title {
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 51px; font-size: fs(51);
letter-spacing: 2.32px; letter-spacing: vw(2.32);
font-family: FZLTDHJW--GB1-0, sans-serif; font-family: FZLTDHJW--GB1-0, sans-serif;
white-space: nowrap; white-space: nowrap;
margin: 0; margin: 0;
@ -43,15 +45,15 @@
.app-button { .app-button {
position: absolute; position: absolute;
right: 40px; right: vw(40);
top: 50%; top: 50%;
transform: translateY(-50%); transform: translateY(-50%);
width: 165px; width: vw(165);
height: 44px; height: vh(44);
background: url(../assets/img/header-btn-app-bg.png) no-repeat; background: url(../assets/img/header-btn-app-bg.png) no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 16px; font-size: fs(16);
font-family: SourceHanSansCN-Regular, sans-serif; font-family: SourceHanSansCN-Regular, sans-serif;
border: none; border: none;
cursor: pointer; cursor: pointer;

View File

@ -115,11 +115,13 @@ const districts = ref([
]) ])
</script> </script>
<style scoped lang="less"> <style scoped lang="scss">
@import '@/styles/mixins.scss';
.weather-warning { .weather-warning {
background: url(../assets/img/weather-panel-bg.png) no-repeat; background: url(../assets/img/weather-panel-bg.png) no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
padding: 20px 30px; padding: vw(20) vw(30);
flex: 1; flex: 1;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -127,18 +129,18 @@ const districts = ref([
.panel-header { .panel-header {
position: relative; position: relative;
width: 293px; width: vw(293);
height: 49px; height: vh(49);
background: url(../assets/img/common-panel-header-bg.png) no-repeat; background: url(../assets/img/common-panel-header-bg.png) no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
display: flex; display: flex;
align-items: center; align-items: center;
padding-left: 24px; padding-left: vw(24);
margin-bottom: 20px; margin-bottom: vh(20);
.title { .title {
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 22px; font-size: fs(22);
font-family: SourceHanSansCN-Medium, sans-serif; font-family: SourceHanSansCN-Medium, sans-serif;
font-weight: 500; font-weight: 500;
} }
@ -147,16 +149,16 @@ const districts = ref([
.warning-levels { .warning-levels {
display: grid; display: grid;
grid-template-columns: repeat(4, 1fr); grid-template-columns: repeat(4, 1fr);
gap: 20px; gap: vw(20);
margin: 0 30px; margin: 0 vw(30);
padding: 0 27px; padding: 0 vw(27);
} }
.warning-level-item { .warning-level-item {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
gap: 10px; gap: vh(10);
// //
.badge-container { .badge-container {
@ -169,8 +171,8 @@ const districts = ref([
// //
.level-badge { .level-badge {
position: relative; position: relative;
width: 80px; width: vw(80);
height: 90px; height: vh(90);
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
@ -185,7 +187,7 @@ const districts = ref([
.level-count { .level-count {
position: relative; position: relative;
font-size: 32px; font-size: fs(32);
font-family: DISPLAYFREETFB, sans-serif; font-family: DISPLAYFREETFB, sans-serif;
font-weight: normal; font-weight: normal;
z-index: 1; z-index: 1;
@ -195,9 +197,9 @@ const districts = ref([
// //
.glow-base { .glow-base {
width: 72px; width: vw(72);
height: 65px; height: vh(65);
margin-top: -10px; margin-top: vh(-10);
z-index: 1; z-index: 1;
// //
@ -207,7 +209,7 @@ const districts = ref([
background-position: background-position:
center 0px, // center 0px, //
center 10px; // center vh(10); //
background-size: background-size:
100% auto, // 100% auto, //
@ -219,35 +221,35 @@ const districts = ref([
// //
.level-name { .level-name {
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 14px; font-size: fs(14);
font-family: SourceHanSansCN-Bold, sans-serif; font-family: SourceHanSansCN-Bold, sans-serif;
font-weight: 700; font-weight: 700;
text-align: center; text-align: center;
margin-top: 4px; margin-top: vh(4);
} }
} }
.altitude-section { .altitude-section {
margin: 20px 0; margin: vh(20) 0;
.altitude-header { .altitude-header {
width: 100%; width: 100%;
height: 38px; height: vh(38);
background: url(../assets/img/weather-altitude-bar-bg.png) no-repeat; background: url(../assets/img/weather-altitude-bar-bg.png) no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
display: flex; display: flex;
align-items: center; align-items: center;
gap: 10px; gap: vw(10);
padding: 0 10px; padding: 0 vw(10);
.altitude-icon { .altitude-icon {
width: 39px; width: vw(39);
height: 35px; height: vh(35);
} }
span { span {
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 16px; font-size: fs(16);
font-family: PingFangSC-Semibold, sans-serif; font-family: PingFangSC-Semibold, sans-serif;
font-weight: 600; font-weight: 600;
} }
@ -260,7 +262,7 @@ const districts = ref([
flex-direction: column; flex-direction: column;
.table-header { .table-header {
height: 35px; height: vh(35);
background: url(../assets/img/weather-table-header-bg.png) no-repeat; background: url(../assets/img/weather-table-header-bg.png) no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
display: grid; display: grid;
@ -268,21 +270,21 @@ const districts = ref([
align-items: center; align-items: center;
text-align: center; text-align: center;
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 14px; font-size: fs(14);
font-family: SourceHanSansCN-Medium, sans-serif; font-family: SourceHanSansCN-Medium, sans-serif;
font-weight: 500; font-weight: 500;
margin-bottom: 5px; margin-bottom: vh(5);
} }
.table-row { .table-row {
height: 35px; height: vh(35);
display: grid; display: grid;
grid-template-columns: 9px 1fr 1fr 1fr; grid-template-columns: vw(9) 1fr 1fr 1fr;
align-items: center; align-items: center;
gap: 10px; gap: vw(10);
padding: 0 10px; padding: 0 vw(10);
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 14px; font-size: fs(14);
font-family: PingFangSC-Medium, sans-serif; font-family: PingFangSC-Medium, sans-serif;
font-weight: 500; font-weight: 500;
@ -297,9 +299,9 @@ const districts = ref([
} }
.row-indicator { .row-indicator {
width: 9px; width: vw(9);
height: 33px; height: vh(33);
border-radius: 1px; border-radius: vw(1);
} }
.district-name { .district-name {

View File

@ -50,11 +50,13 @@ const xAxisYears = ref([
]) ])
</script> </script>
<style scoped lang="less"> <style scoped lang="scss">
@import '@/styles/mixins.scss';
.year-statistics { .year-statistics {
background: url(../assets/img/statistics-panel-bg.png) no-repeat; background: url(../assets/img/statistics-panel-bg.png) no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
padding: 20px 30px; padding: vw(20) vw(30);
flex: 1; flex: 1;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -62,18 +64,18 @@ const xAxisYears = ref([
.panel-header { .panel-header {
position: relative; position: relative;
width: 293px; width: vw(293);
height: 49px; height: vh(49);
background: url(../assets/img/common-panel-header-bg.png) no-repeat; background: url(../assets/img/common-panel-header-bg.png) no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
display: flex; display: flex;
align-items: center; align-items: center;
padding-left: 24px; padding-left: vw(24);
margin-bottom: 25px; margin-bottom: vh(25);
.title { .title {
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 22px; font-size: fs(22);
font-family: SourceHanSansCN-Medium, sans-serif; font-family: SourceHanSansCN-Medium, sans-serif;
font-weight: 500; font-weight: 500;
} }
@ -82,18 +84,18 @@ const xAxisYears = ref([
.chart-header { .chart-header {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 15px; gap: vw(15);
margin-bottom: 10px; margin-bottom: vh(10);
padding-left: 10px; padding-left: vw(10);
.y-axis-label { .y-axis-label {
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 12px; font-size: fs(12);
} }
.chart-title { .chart-title {
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 16px; font-size: fs(16);
font-family: PingFangSC-Semibold, sans-serif; font-family: PingFangSC-Semibold, sans-serif;
font-weight: 600; font-weight: 600;
margin-left: auto; margin-left: auto;
@ -101,17 +103,17 @@ const xAxisYears = ref([
.legend { .legend {
display: flex; display: flex;
gap: 15px; gap: vw(15);
.legend-item { .legend-item {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 5px; gap: vw(5);
.legend-color { .legend-color {
width: 9px; width: vw(9);
height: 9px; height: vh(9);
border-radius: 4px; border-radius: vw(4);
&.blue { &.blue {
background-color: rgba(0, 143, 255, 1); background-color: rgba(0, 143, 255, 1);
@ -124,7 +126,7 @@ const xAxisYears = ref([
span { span {
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 10px; font-size: fs(10);
} }
} }
} }
@ -133,18 +135,18 @@ const xAxisYears = ref([
.chart-container { .chart-container {
flex: 1; flex: 1;
display: flex; display: flex;
gap: 10px; gap: vw(10);
margin-bottom: 10px; margin-bottom: vh(10);
.y-axis { .y-axis {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: space-between; justify-content: space-between;
padding: 5px 0; padding: vh(5) 0;
span { span {
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 12px; font-size: fs(12);
font-family: HelveticaNeue, sans-serif; font-family: HelveticaNeue, sans-serif;
text-align: right; text-align: right;
} }
@ -157,7 +159,7 @@ const xAxisYears = ref([
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
padding: 15px; padding: vw(15);
.chart-image { .chart-image {
width: 100%; width: 100%;
@ -170,11 +172,11 @@ const xAxisYears = ref([
.x-axis { .x-axis {
display: flex; display: flex;
justify-content: space-around; justify-content: space-around;
padding: 0 40px 0 60px; padding: 0 vw(40) 0 vw(60);
span { span {
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-size: 12px; font-size: fs(12);
text-align: center; text-align: center;
} }
} }