init: F9智慧缫丝系统 - 后端(server) + 主前端(web) + 打印设计器(openprint) 首次提交
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
import request from './request'
|
||||
|
||||
// ========== 认证 ==========
|
||||
export const login = (data) => request.post('/auth/login', data)
|
||||
export const getMe = () => request.get('/auth/me')
|
||||
export const changePassword = (data) => request.post('/auth/change-password', data)
|
||||
|
||||
// ========== 天气 ==========
|
||||
export const getWeather = (params) => request.get('/weather/now', { params })
|
||||
|
||||
// 天气码 → 中文描述(Open-Meteo WMO Weather interpretation codes)
|
||||
const WEATHER_CODES = {
|
||||
0: '晴', 1: '晴', 2: '多云', 3: '阴', 45: '雾', 48: '雾凇',
|
||||
51: '毛毛雨', 53: '小雨', 55: '中雨', 56: '冻雨', 57: '强冻雨',
|
||||
61: '小雨', 63: '中雨', 65: '大雨', 66: '冻雨', 67: '强冻雨',
|
||||
71: '小雪', 73: '中雪', 75: '大雪', 77: '雪粒',
|
||||
80: '阵雨', 81: '强阵雨', 82: '暴雨', 85: '阵雪', 86: '强阵雪',
|
||||
95: '雷暴', 96: '雷暴伴冰雹', 99: '强雷暴伴冰雹'
|
||||
}
|
||||
|
||||
/** 天气接口原始数据 → 前端展示字段 */
|
||||
export function mapWeather(data) {
|
||||
if (!data) return null
|
||||
return {
|
||||
temp: Math.round(data.temperature ?? 0),
|
||||
desc: WEATHER_CODES[data.weatherCode] || '未知',
|
||||
wind: `风速 ${data.windSpeed ?? 0}m/s`,
|
||||
humidity: data.humidity,
|
||||
location: '缫丝厂区'
|
||||
}
|
||||
}
|
||||
|
||||
// ========== 表元数据 ==========
|
||||
export const getTableMeta = (table) => request.get(`/meta/table/${table}`)
|
||||
// 关联表下拉数据 [{value,label}]
|
||||
export const getRefs = (table, params) => request.get(`/meta/refs/${table}`, { params })
|
||||
// 业务编号自动生成(如 YLZ20260815-001)
|
||||
export const genCode = (table, field) => request.post(`/meta/gencode/${table}/${field}`)
|
||||
|
||||
// ========== 动态 CRUD ==========
|
||||
export const crudPage = (table, data) => request.post(`/data/${table}/page`, data)
|
||||
export const crudGet = (table, id) => request.get(`/data/${table}/${id}`)
|
||||
export const crudAdd = (table, data) => request.post(`/data/${table}/add`, data)
|
||||
export const crudUpdate = (table, data) => request.post(`/data/${table}/update`, data)
|
||||
export const crudDelete = (table, id) => request.post(`/data/${table}/delete/${id}`)
|
||||
export const crudDeleteRange = (table, ids) => request.post(`/data/${table}/deleteRange`, ids)
|
||||
export const crudAll = (table) => request.get(`/data/${table}/all`)
|
||||
|
||||
// ========== 菜单/基础数据 ==========
|
||||
export const getMenus = () => request.get('/basesys/menus')
|
||||
|
||||
// ========== 工作台 ==========
|
||||
// 工作台聚合数据:统计卡 + 趋势 + 占比 + 待办 + 预警
|
||||
export const getWorkBenchSummary = () => request.get('/workbench/summary')
|
||||
@@ -0,0 +1,59 @@
|
||||
import axios from 'axios'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { useUserStore } from '@/stores/user'
|
||||
import router from '@/router'
|
||||
|
||||
// 创建 axios 实例
|
||||
const service = axios.create({
|
||||
baseURL: '/api',
|
||||
timeout: 30000
|
||||
})
|
||||
|
||||
// 请求拦截器:附加 token
|
||||
service.interceptors.request.use(
|
||||
(config) => {
|
||||
const userStore = useUserStore()
|
||||
if (userStore.token) {
|
||||
config.headers.Authorization = `Bearer ${userStore.token}`
|
||||
}
|
||||
return config
|
||||
},
|
||||
(error) => Promise.reject(error)
|
||||
)
|
||||
|
||||
// 响应拦截器:统一处理业务码与错误
|
||||
service.interceptors.response.use(
|
||||
(response) => {
|
||||
const res = response.data
|
||||
// 非 ApiResult 结构(如文件流)直接返回
|
||||
if (res === null || typeof res !== 'object' || !('code' in res)) {
|
||||
return res
|
||||
}
|
||||
if (res.code !== 0) {
|
||||
if (res.code === 401) {
|
||||
const userStore = useUserStore()
|
||||
userStore.logout()
|
||||
router.push('/login')
|
||||
ElMessage.error('登录已过期,请重新登录')
|
||||
} else {
|
||||
ElMessage.error(res.message || '请求失败')
|
||||
}
|
||||
return Promise.reject(new Error(res.message || '请求失败'))
|
||||
}
|
||||
return res
|
||||
},
|
||||
(error) => {
|
||||
const status = error.response?.status
|
||||
if (status === 401) {
|
||||
const userStore = useUserStore()
|
||||
userStore.logout()
|
||||
router.push('/login')
|
||||
ElMessage.error('登录已过期,请重新登录')
|
||||
} else {
|
||||
ElMessage.error(error.response?.data?.message || error.message || '网络错误')
|
||||
}
|
||||
return Promise.reject(error)
|
||||
}
|
||||
)
|
||||
|
||||
export default service
|
||||
Reference in New Issue
Block a user