import request from '@/utils/request'; import { AxiosPromise } from 'axios'; /** * 查询小区概况 * @param query * @returns {*} */ export const workSpaceTotalListApi = ( villageId: string ): Promise<{ totalResident: number; totalHouse: number; totalParking: number; totalDevice: number; totalMaterial: number; totalComplaint: number; }> => { return request({ url: '/workSpace/totalList', method: 'get', params: { villageId: villageId } }); }; /** * 查询近一周报修趋势 * @param query * @returns {*} */ export const workSpaceRepairTrendListApi = ( villageId: string ): Promise< { date: string; count: number; }[] > => { return request({ url: '/workSpace/last7DaysRepairCount', method: 'GET', params: { villageId: villageId } }); }; /** * 查询近一周收入趋势 * @param query * @returns {*} */ export const workSpaceIncomeTrendListApi = ( villageId: string, type: number ): Promise< { date: string; income: number; }[] > => { return request({ url: '/workSpace/last7DaysIncomeTrend', method: 'GET', params: { villageId: villageId, type: type } }); }; /** * 查询当日天气 * @param query * @returns {*} */ export const workSpaceWeatherApi = (city: string): Promise => { const url = 'https://uapis.cn/api/v1/misc/weather?city=' + city + '&lang=zh'; return new Promise((resolve, reject) => { fetch(url, { method: 'GET' }) .then((res) => res.json()) .then((res) => { resolve(res); }) .catch((err) => { reject(err); }); }); }; type reponseType = { // 省份 'province': string; // 城市名 'city': string; // 区县或更细一级的行政区名称。自动按 IP 定位时更常见。 'district': string; // 行政区划代码(部分数据源可能为空) 'adcode': string; // 天气状况描述。默认返回中文,传 `lang=en` 时返回英文。非固定枚举。 'weather': string; // 天气图标代码。请从[天气图标代码表](#enum-list)中查看所有可能的值。 'weather_icon': string; // 当前温度 °C 'temperature': number; // 风向 'wind_direction': string; // 风力等级 'wind_power': string; // 相对湿度 % 'humidity': number; // 数据更新时间 'report_time': string; // 体感温度 °C(extended=true 时返回) 'feels_like': number; // 能见度 km(extended=true 时返回) 'visibility': number; // 气压 hPa(extended=true 时返回) 'pressure': number; // 紫外线指数(extended=true 时返回) 'uv': number; // 当前降水量 mm(extended=true 时返回) 'precipitation': number; // 云量 %(extended=true 时返回) 'cloud': number; // 空气质量指数 0-500(extended=true 时返回) 'aqi': number; // AQI 等级 1-6(extended=true 时返回) 'aqi_level': number; // AQI 等级描述(优/良/轻度污染/中度污染/重度污染/严重污染)(extended=true 时返回) 'aqi_category': string; // 主要污染物(如 PM2.5、PM10、O3 等)(extended=true 时返回) 'aqi_primary': string; // 空气污染物分项数据(extended=true 时返回,部分数据源可能不返回) 'air_pollutants': { // PM2.5 μg/m³ 'pm25': number; // PM10 μg/m³ 'pm10': number; // 臭氧 μg/m³ 'o3': number; // 二氧化氮 μg/m³ 'no2': number; // 二氧化硫 μg/m³ 'so2': number; // 一氧化碳 mg/m³ 'co': number; }; // 官方气象预警列表(存在有效预警时返回) 'alerts': { // 预警标题 'title': string; // 预警类型,如雷电、暴雨 'type': string; // 预警级别,如蓝色、黄色、橙色、红色 'level': string; // 预警正文 'text': string; // 预警发布时间 'publish_time': string; // 发布单位 'publisher': string; // 防御指引列表 'guidance': string[]; }[]; // 当天最高温 °C(forecast=true 时返回) 'temp_max': number; // 当天最低温 °C(forecast=true 时返回) 'temp_min': number; // 多天天气预报,最多7天(forecast=true 时返回) 'forecast': { // 日期 YYYY-MM-DD 'date': string; // 星期几(`lang=en` 时返回英文星期) 'week': string; // 最高温度 °C 'temp_max': number; // 最低温度 °C 'temp_min': number; // 白天天气(`lang=en` 时返回英文) 'weather_day': string; // 夜间天气(`lang=en` 时返回英文) 'weather_night': string; // 白天风向(可选,`lang=en` 时返回英文) 'wind_dir_day': string; // 夜间风向(可选,`lang=en` 时返回英文) 'wind_dir_night': string; // 白天风力(可选,`lang=en` 时返回英文) 'wind_scale_day': string; // 夜间风力(可选,`lang=en` 时返回英文) 'wind_scale_night': string; // 白天风速 km/h(可选) 'wind_speed_day': number; // 湿度 %(可选) 'humidity': number; // 降水量 mm(可选) 'precip': number; // 能见度 km(可选) 'visibility': number; // 紫外线指数(可选) 'uv_index': number; // 日出时间 HH:MM(可选) 'sunrise': string; // 日落时间 HH:MM(可选) 'sunset': string; }[]; // 逐小时预报,最多24小时(hourly=true 时返回) 'hourly_forecast': { // 预报时间(ISO8601 或 YYYY-MM-DD HH:MM) 'time': string; // 温度 °C 'temperature': number; // 天气状况 'weather': string; // 风向(可选) 'wind_direction': string; // 风速 km/h(可选) 'wind_speed': number; // 风力等级(可选) 'wind_scale': string; // 湿度 %(可选) 'humidity': number; // 降水量 mm(可选) 'precip': number; // 体感温度 °C(可选) 'feels_like': number; // 能见度 km(可选) 'visibility': number; // 降水概率 %(可选) 'pop': number; // 紫外线指数(可选,国内城市通常不返回) 'uv_index': number; }[]; // 分钟级降水预报(minutely=true 时返回,仅国内城市可用,精确到2分钟) 'minutely_precip': { // 降水描述 'summary': string; // 更新时间 'update_time': string; // 精确到2分钟的数据点 'data': { // 预报时间 ISO8601 'time': string; // 该时间点的降水量 mm 'precip': number; // 降水类型:rain / snow 'type': string; }[]; }; // 18项生活指数(indices=true 时返回),每项包含 level(等级名称)、brief(简短描述)、advice(详细建议) 'life_indices': LifeIndices; }; // 1. 定义单个生活指数的基础结构 type LifeIndexItem = { level: string; brief: string; advice: string; }; // 2. 定义所有可能的键名 type LifeIndexKeys = | 'clothing' | 'uv' | 'car_wash' | 'drying' | 'air_conditioner' | 'cold_risk' | 'exercise' | 'comfort' | 'travel' | 'fishing' | 'allergy' | 'sunscreen' | 'mood' | 'beer' | 'umbrella' | 'traffic' | 'air_purifier' | 'pollen'; // 3. 使用映射类型自动生成完整结构 type LifeIndices = { [K in LifeIndexKeys]: LifeIndexItem; };