weather.vue 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <template>
  2. <div class="box">
  3. <p class="boxCity">{{weatcherData.city}}</p>
  4. <p class="boxWeather">{{weatcherData.weather}}<br>
  5. <label class="boxTemperature">
  6. {{weatcherData.humidity}}°
  7. </label>
  8. </p>
  9. <!-- <p class="boxWind">{{weatcherData.win}}{{weatcherData.win_speed}}</p> -->
  10. </div>
  11. </template>
  12. <script>
  13. import axios from 'axios'
  14. export default {
  15. data() {
  16. return {
  17. weatcherData: {}
  18. }
  19. },
  20. mounted() {
  21. this.getWeather();
  22. this.timer = setInterval(() => {
  23. this.getWeather();
  24. }, 1000 * 60 * 60) //每小时调用一次
  25. },
  26. methods: {
  27. getWeather() { // 第三方天气api接口
  28. axios.get('https://restapi.amap.com/v3/weather/weatherInfo', {
  29. params: {
  30. key: "3e7e20b74481bb09b90dade55acc35c3",
  31. city: '370100',
  32. output: 'JSON',
  33. // version: 'v91'
  34. }
  35. }).then(res => {
  36. if (res.data.lives) {
  37. this.weatcherData = res.data.lives[0];
  38. }
  39. }).catch(err => {
  40. console.log(err)
  41. })
  42. }
  43. }
  44. }
  45. </script>
  46. <style scoped>
  47. .box {
  48. display: flex;
  49. align-items: center;
  50. color: #fff;
  51. margin-right: 20rem;
  52. }
  53. .boxTemperature {
  54. font-size: 18rem;
  55. }
  56. .boxWeather {
  57. font-size: 14rem;
  58. margin: 0 0 0 15rem;
  59. }
  60. .boxWind {
  61. margin: 0 15rem 0 8rem;
  62. font-size: 14rem;
  63. }
  64. .boxCity {
  65. font-size: 16rem;
  66. }
  67. </style>