From 2800fa4f32f3900509cb4d6eefaf2bfaf54efdd7 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Mon, 21 Apr 2025 18:29:09 +0800
Subject: [PATCH] fix: 天气显示
---
src/components/CommonWeather.vue | 138 +++++++++++++++++++++++++++++----------------
1 files changed, 89 insertions(+), 49 deletions(-)
diff --git a/src/components/CommonWeather.vue b/src/components/CommonWeather.vue
index 5ff5314..223fd64 100644
--- a/src/components/CommonWeather.vue
+++ b/src/components/CommonWeather.vue
@@ -1,63 +1,103 @@
<template>
- <div class="time-weather">
- <div class="time">{{ time }}</div>
- <div class="line"></div>
- <div class="weather">
- <img src="@/assets/images/home/homeLeft/tq.png" alt="" />
- <span class="tq">阴天</span>
- <span class="qk">适合飞行</span>
- </div>
- </div>
+ <div class="time-weather">
+ <div class="time">{{ time }}</div>
+ <div class="line"></div>
+ <div class="weather">
+ <img src="@/assets/images/home/homeLeft/tq.png" alt="" />
+ <span class="tq">{{ weather }}</span>
+ <span class="tq">风速:{{ windVelocity }} </span>
+ <span v-if="flightAdvice" :class="[flightAdvice === '适合飞行' ? 'qk' : flightAdvice === '禁止飞行' ? 'redqk' : 'yellowqk']">{{
+ flightAdvice
+ }}</span>
+ </div>
+ </div>
</template>
<script setup>
-import dayjs from 'dayjs';
+import dayjs from 'dayjs'
+import { getDroneSuggest } from '@/api/home/common'
+import { useStore } from 'vuex'
+import { ElMessage } from 'element-plus'
+const store = useStore()
+const flySuggest = computed(() => store.state.home.flySuggest)
+const selectedAreaCode = computed(() => store.state.user.selectedAreaCode)
+const useAreaCode = computed(() => store.state.user.userInfo.detail.areaCode)
-const time = ref('');
+const time = ref('')
const updateTime = () => {
- time.value = dayjs().format('YYYY.MM.DD HH:mm:ss');
-};
+ time.value = dayjs().format('YYYY.MM.DD HH:mm:ss')
+}
+
+// 天气
+const weather = ref('')
+
+// 风速
+const windVelocity = ref('')
+// 区县级
+const flightAdvice = computed(() => flySuggest.value?.flightAdvice)
+
+// 获取天气建议
+const getWeatherSuggest = () => {
+ getDroneSuggest({ areaCode: selectedAreaCode.value || useAreaCode.value }).then(res => {
+ if (res.data.code !== 0) return
+ weather.value = res.data.data.weather
+ windVelocity.value = res.data.data.windPower
+ })
+}
+
+let intervalTime
onMounted(() => {
- updateTime(); // 立即执行一次
- time.value = setInterval(updateTime, 1000);
-});
+ getWeatherSuggest()
+ updateTime() // 立即执行一次
+ intervalTime = setInterval(updateTime, 1000)
+})
onUnmounted(() => {
- if (time.value) {
- clearInterval(time.value);
- time.value = null;
- }
-});
+ if (intervalTime) {
+ clearInterval(intervalTime)
+ intervalTime = null
+ }
+})
</script>
<style scoped lang="scss">
.time-weather {
- margin-left: 45px;
- width: 310px;
- font-size: 14px;
- height: 36px;
- line-height: 36px;
- display: flex;
- justify-content: space-between;
- align-items: center;
- .line {
- border: 1px solid #ffffff;
- height: 10px;
- opacity: 0.5;
- }
- .weather {
- img {
- width: 20px;
- height: 20px;
- }
- .tq {
- margin: 0 5px;
- color: #e7f5ff;
- }
- .qk {
- margin-left: 5px;
- color: #04f043;
- }
- }
+ margin-left: 45px;
+ // width: 350px;
+ font-size: 14px;
+ height: 36px;
+ line-height: 36px;
+ display: flex;
+ align-items: center;
+ color: #e7f5ff;
+ .line {
+ border: 1px solid #ffffff;
+ height: 10px;
+ opacity: 0.5;
+ margin: 0 18px;
+ }
+ .weather {
+ display: flex;
+ align-items: center;
+ img {
+ width: 20px;
+ height: 20px;
+ }
+ .tq {
+ margin: 0 5px;
+ }
+ .qk {
+ margin-left: 5px;
+ color: #04f043;
+ }
+ .yellowqk {
+ margin-left: 5px;
+ color: yellow;
+ }
+ .redqk {
+ margin-left: 5px;
+ color: red;
+ }
+ }
}
-</style>
\ No newline at end of file
+</style>
--
Gitblit v1.9.3