Merge branch 'dev' of http://222.212.85.86:8222/bdzl2/bxztApp into dev
@ -1,3 +1,5 @@
|
|||||||
|
@import './mixins.scss';
|
||||||
|
|
||||||
* {
|
* {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
|||||||
27
packages/screen/src/styles/mixins.less
Normal 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);
|
||||||
22
packages/screen/src/styles/mixins.scss
Normal 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
|
||||||
|
Before Width: | Height: | Size: 372 KiB After Width: | Height: | Size: 208 KiB |
|
Before Width: | Height: | Size: 228 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 212 KiB After Width: | Height: | Size: 114 KiB |
|
Before Width: | Height: | Size: 293 KiB After Width: | Height: | Size: 194 KiB |
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||