优化项目结构

优化路由结构及跳转
优化系统异常捕获
1 号线增加导出功能
增加全局状态管理
This commit is contained in:
tao
2025-12-17 16:42:46 +08:00
parent 3b68a6af49
commit f58d71ee05
36 changed files with 1235 additions and 130 deletions

View File

@@ -4,4 +4,5 @@ export interface ApiResponse<T = any> {
data?: T;
rows?: T[];
total?: number;
token?: string;
}

View File

@@ -0,0 +1,30 @@
import request from '@/api/request';
import type { ExportParams, QueryParams } from "./model";
// 获取 L1 数据
export function getL1Data(params: QueryParams) {
return request({
url: "/jinghua/l1OneData/list",
method: "get",
params,
});
}
// 获取 报警记录 数据
export function getAlarmRecords(params: QueryParams) {
return request({
url: '/jinghua/alarmRecord/list',
method: 'get',
params
})
}
// 导出数据
export function exportData(data: ExportParams) {
return request({
url: "/jinghua/l1OneData/export",
method: "post",
data,
responseType: "blob",
});
}

14
src/api/line1/data/model.d.ts vendored Normal file
View File

@@ -0,0 +1,14 @@
export interface QueryParams {
pageNum?: number;
pageSize?: number;
orderByColumn?: string;
isAsc?: string;
qrCode?: string;
createTimeBegin?: string;
createTimeEnd?: string;
}
export interface ExportParams {
createTimeBegin?: string;
createTimeEnd?: string;
}

View File

@@ -1,4 +1,4 @@
import request from '../request';
import request from '@/api/request';
import type { QueryParams } from './model';
// 获取 L1 数据

View File

@@ -2,7 +2,7 @@ import axios from 'axios';
import router from '@/router';
import { getToken } from '@/utils/auth';
import { Modal, notification } from 'ant-design-vue';
import type { AxiosRequestConfig } from "axios";
import type { AxiosInstance, AxiosRequestConfig } from "axios";
import type { ApiResponse } from "@/api/common/model";
const errCodeMap: { [key: string]: string } = {
@@ -12,7 +12,7 @@ const errCodeMap: { [key: string]: string } = {
};
// 创建axios实例
const service = axios.create({
const service: AxiosInstance = axios.create({
baseURL: import.meta.env.VITE_APP_BASE_API,
timeout: 10000,
});
@@ -37,33 +37,38 @@ service.interceptors.request.use(
// 响应拦截器
service.interceptors.response.use(
response => {
// console.log(response);
if (response.config.responseType === "blob") {
return response.data;
}
const code = response.data.code || 200;
const data = response.data;
switch (code) {
case 200:
return data ?? response;
return data;
case 401:
Modal.error({
title: '系统提示',
content: '登录状态已过期,请重新登录',
title: "系统提示",
content: "登录状态已过期,请重新登录",
onOk: () => {
router.push('/login')
}
})
router.push("/login");
},
});
return Promise.reject(data);
default:
const errMsg = errCodeMap[code] || data.msg || errCodeMap['default'];
notification.error({
message: '请求错误',
description: errMsg,
message: "请求错误",
description: errCodeMap[code] || data?.msg || errCodeMap.default,
});
return Promise.reject(data);
}
},
error => {
error.message = error.code === "ECONNABORTED" ? '请求超时,请稍后重试' : error.message;
(error) => {
error.message =
error.code === "ECONNABORTED"
? "请求超时,请稍后重试"
: error.message || "网络异常";
// 网络/服务器错误统一处理
notification.error({
@@ -80,4 +85,3 @@ function request<T = any>(config: AxiosRequestConfig): Promise<ApiResponse<T>> {
}
export default request;
// export default service;