12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- import {
- defineStore
- } from 'pinia';
- import storage from "@/utils/storage.js"
- export const useWeatherStore = defineStore('weather', {
- state: () => {
- return {
- location: storage.getCache('location') || {},
- weather: {
- current: {},
- after: [],
- daily: {},
- },
- city:""
- };
- },
- actions: {
- setlocation(location) {
- storage.setCache('location', location)
- this.location = location
- },
- setWeather(data) {
- const combinedData = data.hourly.time.map((time, index) => ({
- time,
- temperature: fixed(data.hourly.temperature_2m[index]),
- weathercode: data.hourly.weather_code[index]
- }))
- // 当前天气
- this.weather.current = {
- time: data.current.time,
- temperature: fixed(data.current.temperature_2m),
- weathercode: data.current.weather_code
- }
- // 接下来的天气
- const givenTime = data.current.time
- const filteredArray = combinedData.filter(obj => obj.time > givenTime).slice(0, 4);
- const formattedArray = filteredArray.map(obj => ({
- ...obj,
- time: formatTime(obj.time)
- }));
- this.weather.after = formattedArray
- // 整日天气
- const tempDaily = combinedData.slice(0, 24).sort((a, b) => a.temperature - b.temperature)
- this.weather.daily = {
- des: data.daily.weather_code[0],
- lowTemp: tempDaily[0].temperature,
- highTemp: tempDaily[23].temperature
- }
- },
- },
- // 开始数据持久化
- persist: true,
- })
- export function getLocalState() {
- const localSetting = storage.getCache('location')
- return localSetting
- }
- export function fixed(num) {
- return num.toFixed()
- }
- export function formatTime(time) {
- const date = new Date(time);
- const hours = String(date.getHours()).padStart(2, '0');
- const minutes = String(date.getMinutes()).padStart(2, '0');
- return `${hours}:${minutes}`;
- };
|