wangfei 6 lat temu
rodzic
commit
9b5ab1c83b
3 zmienionych plików z 106 dodań i 100 usunięć
  1. 104
    97
      src/pages/index.vue
  2. 1
    2
      src/store/user/index.js
  3. 1
    1
      src/util/api.js

+ 104
- 97
src/pages/index.vue Wyświetl plik

@@ -10,25 +10,21 @@
10 10
             <span>农历{{currentChineseDate}}</span>
11 11
           </div>
12 12
           <div class="weatherDetail flex-h">
13
-            <div class="imgData">
14
-              <img src="../assets/images/icon-1.png" width="100%" alt>
15
-              <span>3°C ~ 14°C</span>
13
+            <div class="imgData" v-if="weatherDetail">
14
+              <img :src="weatherIcon(weatherDetail.dayweather)" width="100%" alt>
15
+              <span>{{tempRange}}</span>
16 16
             </div>
17 17
             <div class="flex-item">
18
-              <div>
19
-                <span>今日降雨概率60%,请做好防雨措施</span>
18
+              <div v-if="weatherDetail">
19
+                <span>今日 {{ weatherDetail.dayweather }}</span>
20 20
                 <ul>
21 21
                   <li>
22
-                    <span>北风2级</span>
23
-                    <span>空气湿度: 96%</span>
24
-                  </li>
25
-                  <li>
26
-                    <span>北风2级</span>
27
-                    <span>空气湿度: 96%</span>
22
+                    <span>白天</span>
23
+                    <span>{{weatherDetail.daywind}} 风 {{weatherDetail.daypower}}</span>
28 24
                   </li>
29 25
                   <li>
30
-                    <span>北风2级</span>
31
-                    <span>空气湿度: 96%</span>
26
+                    <span>晚上</span>
27
+                    <span>{{weatherDetail.nightwind}} 风 {{weatherDetail.nightpower}}</span>
32 28
                   </li>
33 29
                 </ul>
34 30
               </div>
@@ -65,7 +61,7 @@
65 61
             :src="'api' + showPage.showContent"
66 62
             alt
67 63
           >
68
-          <video v-if="showPage.showType === 'video'" width="100%" height="100%" controls="controls" autoplay muted loop>
64
+          <video v-if="showPage.showType === 'video'" width="100%" height="100%" controls="controls" autoplay loop>
69 65
             <source :src="'api' + showPage.showContent" type="video/mp4" />
70 66
           </video>
71 67
         </div>
@@ -139,6 +135,21 @@ export default {
139 135
     },
140 136
     isDay () {
141 137
       return new Date(this.currentTimeTamp).getHours() <= 17 && new Date(this.currentTimeTamp).getHours() >= 6
138
+    },
139
+    weatherDetail () {
140
+      return this.weatherInfo.forecasts[0].casts[0]
141
+    },
142
+    tempRange () {
143
+      if (!this.weatherDetail) return ''
144
+      let min, max
145
+
146
+      // 这么复杂是为了避免 eslint 错误
147
+      const f = () => this.weatherDetail.daytemp > this.weatherDetail.nighttemp
148
+        ? ((min = this.weatherDetail.nighttemp) | (max = this.weatherDetail.daytemp))
149
+        : ((max = this.weatherDetail.nighttemp) | (min = this.weatherDetail.daytemp))
150
+      f()
151
+
152
+      return `${min}℃ ~ ${max}℃`
142 153
     }
143 154
   },
144 155
   components: {
@@ -210,6 +221,7 @@ export default {
210 221
         pageNum: 1,
211 222
         pageSize: 100
212 223
       })
224
+      this.getWeatherInfo()
213 225
     },
214 226
     getPersonList () {
215 227
       this.getPerson().then(res => {
@@ -260,90 +272,85 @@ export default {
260 272
       this.currentTime = `${new Date(currentTime).getHours().toString().padStart(2, '0')} : ${new Date(currentTime).getMinutes().toString().padStart(2, '0')} : ${new Date(currentTime).getSeconds().toString().padStart(2, '0')}`
261 273
       this.currentDate = `${new Date(currentTime).getFullYear()}年${(new Date(currentTime).getMonth() + 1).toString().padStart(2, '0')}月${new Date(currentTime).getDate().toString().padStart(2, '0')}日`
262 274
       this.currentChineseDate = `${ChineseDate.monthCn}${ChineseDate.dayCn}`
275
+    },
276
+    weatherIcon (target) { // 返回天气图标
277
+      switch (target) {
278
+        case '晴':
279
+          return require('../assets/images/icon-6.png')
280
+        case '少云':
281
+        case '晴间多云':
282
+        case '多云':
283
+          return require('../assets/images/icon-4.png')
284
+        case '阴':
285
+        case '平静':
286
+          return require('../assets/images/icon-9.png')
287
+        case '有风':
288
+        case '微风':
289
+        case '和风':
290
+        case '清风':
291
+        case '强风/劲风':
292
+        case '疾风':
293
+        case '大风':
294
+        case '烈风':
295
+        case '风暴':
296
+        case '狂爆风':
297
+        case '飓风':
298
+        case '热带风暴':
299
+        case '浮尘':
300
+        case '扬沙':
301
+          return require('../assets/images/icon-1.png')
302
+        case '阵雨':
303
+        case '大雨':
304
+        case '中雨-大雨':
305
+        case '大雨-暴雨':
306
+        case '暴雨-大暴雨':
307
+        case '大暴雨-特大暴雨':
308
+        case '暴雨':
309
+        case '大暴雨':
310
+        case '特大暴雨':
311
+        case '强阵雨':
312
+        case '极端降雨':
313
+        case '雷阵雨':
314
+        case '雷阵雨并伴有冰雹':
315
+          return require('../assets/images/icon-5.png')
316
+        case '毛毛雨/细雨':
317
+        case '小雨':
318
+        case '雨':
319
+        case '中雨':
320
+        case '小雨-中雨':
321
+          return require('../assets/images/icon-3.png')
322
+        case '雨夹雪':
323
+        case '阵雨夹雪':
324
+        case '雨雪天气':
325
+        case '冻雨':
326
+          return require('../assets/images/icon-10.png')
327
+        case '阵雪':
328
+        case '小雪':
329
+        case '中雪':
330
+        case '大雪':
331
+        case '暴雪':
332
+        case '小雪-中雪':
333
+        case '中雪-大雪':
334
+        case '大雪-暴雪':
335
+        case '雪':
336
+          return require('../assets/images/icon-2.png')
337
+        case '沙尘暴':
338
+        case '强沙尘暴':
339
+        case '龙卷风':
340
+        case '雾':
341
+        case '浓雾':
342
+        case '强浓雾':
343
+        case '轻雾':
344
+        case '大雾':
345
+        case '特强浓雾':
346
+        case '霾':
347
+        case '中度霾':
348
+        case '重度霾':
349
+        case '严重霾':
350
+        default:
351
+          return require('../assets/images/icon-1.png')
352
+      }
263 353
     }
264
-    // weatherIcon (target) { // 返回天气图标
265
-    //   switch (target) {
266
-    //     case '晴':
267
-    //       return require('../assets/images/icon-2.png')
268
-    //     case '少云':
269
-    //     case '晴间多云':
270
-    //     case '多云':
271
-    //       return require('../assets/images/icon-1.png')
272
-    //     case '阴':
273
-    //     case '平静':
274
-    //       return require('../assets/images/icon-3.png')
275
-    //     case '有风':
276
-    //     case '微风':
277
-    //     case '和风':
278
-    //     case '清风':
279
-    //     case '强风/劲风':
280
-    //     case '疾风':
281
-    //     case '大风':
282
-    //     case '烈风':
283
-    //     case '风暴':
284
-    //     case '狂爆风':
285
-    //     case '飓风':
286
-    //     case '热带风暴':
287
-    //     case '浮尘':
288
-    //     case '扬沙':
289
-    //       return require('../assets/images/icon-19.png')
290
-    //     case '阵雨':
291
-    //     case '大雨':
292
-    //     case '中雨-大雨':
293
-    //     case '大雨-暴雨':
294
-    //     case '暴雨-大暴雨':
295
-    //     case '大暴雨-特大暴雨':
296
-    //     case '暴雨':
297
-    //     case '大暴雨':
298
-    //     case '特大暴雨':
299
-    //     case '强阵雨':
300
-    //     case '极端降雨':
301
-    //       return require('../assets/images/icon-6.png')
302
-    //     case '雷阵雨':
303
-    //     case '雷阵雨并伴有冰雹':
304
-    //       return require('../assets/images/icon-7.png')
305
-    //     case '毛毛雨/细雨':
306
-    //     case '小雨':
307
-    //       return require('../assets/images/icon-4.png')
308
-    //     case '雨':
309
-    //     case '中雨':
310
-    //     case '小雨-中雨':
311
-    //       return require('../assets/images/icon-5.png')
312
-    //     case '雨夹雪':
313
-    //     case '阵雨夹雪':
314
-    //     case '雨雪天气':
315
-    //     case '冻雨':
316
-    //       return require('../assets/images/icon-21.png')
317
-    //     case '阵雪':
318
-    //     case '小雪':
319
-    //     case '中雪':
320
-    //     case '大雪':
321
-    //     case '暴雪':
322
-    //     case '小雪-中雪':
323
-    //     case '中雪-大雪':
324
-    //     case '大雪-暴雪':
325
-    //     case '雪':
326
-    //       return require('../assets/images/icon-14.png')
327
-    //     case '沙尘暴':
328
-    //     case '强沙尘暴':
329
-    //     case '龙卷风':
330
-    //       return require('../assets/images/icon-20.png')
331
-    //     case '雾':
332
-    //     case '浓雾':
333
-    //     case '强浓雾':
334
-    //     case '轻雾':
335
-    //     case '大雾':
336
-    //     case '特强浓雾':
337
-    //       return require('../assets/images/icon-22.png')
338
-    //     case '霾':
339
-    //     case '中度霾':
340
-    //     case '重度霾':
341
-    //     case '严重霾':
342
-    //       return require('../assets/images/icon-23.png')
343
-    //     default:
344
-    //       return require('../assets/images/icon-24.png')
345
-    //   }
346
-    // }
347 354
   }
348 355
 }
349 356
 </script>

+ 1
- 2
src/store/user/index.js Wyświetl plik

@@ -71,8 +71,7 @@ export default {
71 71
     getWeatherInfo (context, payload) { // 获取天气信息
72 72
       return new Promise((resolve, reject) => {
73 73
         Ajax(api.getWeatherInfo.url, {
74
-          method: api.getWeatherInfo.method,
75
-          queryData: { ...payload }
74
+          method: api.getWeatherInfo.method
76 75
         }).then(res => {
77 76
           context.commit('setWeatherInfo', res)
78 77
           resolve(res)

+ 1
- 1
src/util/api.js Wyświetl plik

@@ -2,7 +2,7 @@
2 2
 const $api = {
3 3
   getWeatherInfo: { // 获取天气信息
4 4
     method: 'get',
5
-    url: `https://restapi.amap.com/v3/weather/weatherInfo?parameters`
5
+    url: `/api/weather`
6 6
   },
7 7
   news: {
8 8
     method: 'get',