|
|
|
@ -1,6 +1,7 @@ |
|
|
|
import { defineStore } from 'pinia'; |
|
|
|
import { Position, WeatherInfo } from '/@/api/weather/model'; |
|
|
|
import { getPosition, getWeather } from '/@/api/weather'; |
|
|
|
import { useLocaleStoreWithOut } from './locale'; |
|
|
|
|
|
|
|
interface WeatherState { |
|
|
|
currentCity?: Position; |
|
|
|
@ -17,20 +18,23 @@ export const useWeatherStore = defineStore({ |
|
|
|
}), |
|
|
|
actions: { |
|
|
|
async updateWeather() { |
|
|
|
const hour = new Date().getHours(); |
|
|
|
if (hour - this.lastUpdateHour != 0) { |
|
|
|
const position = await getPosition(); |
|
|
|
const weatherResult = await getWeather(position.code); |
|
|
|
if (weatherResult.code !== 0) { |
|
|
|
return Promise.reject(weatherResult.msg); |
|
|
|
const localeStore = useLocaleStoreWithOut(); |
|
|
|
// 中文环境天气api有效
|
|
|
|
if (localeStore.getLocale.includes('zh')) { |
|
|
|
const hour = new Date().getHours(); |
|
|
|
if (hour - this.lastUpdateHour != 0) { |
|
|
|
const position = await getPosition(); |
|
|
|
const weatherResult = await getWeather(position.code); |
|
|
|
if (weatherResult.code !== 0) { |
|
|
|
return Promise.reject(weatherResult.msg); |
|
|
|
} |
|
|
|
this.currentCity = position; |
|
|
|
this.weather = weatherResult.data; |
|
|
|
this.lastUpdateHour = hour; |
|
|
|
return Promise.resolve(this.weather); |
|
|
|
} |
|
|
|
this.currentCity = position; |
|
|
|
this.weather = weatherResult.data; |
|
|
|
this.lastUpdateHour = hour; |
|
|
|
return Promise.resolve(this.weather); |
|
|
|
} else { |
|
|
|
return Promise.resolve(this.weather); |
|
|
|
} |
|
|
|
return Promise.resolve(this.weather); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
|