Compare commits

..
3 Commits
Author SHA1 Message Date
“hsc” cbf599d46f Merge branch 'master' of https://git.kaiyili-lab.com/huangsucan/IOT_WEB
# Conflicts:
#	dist/index.html
2026-08-21 16:50:34 +08:00
“hsc” 3f4030c9e8 添加gitignore 2026-08-21 16:49:36 +08:00
“hsc” e4d8ecde13 前端初始化 2026-08-21 15:36:24 +08:00
5 changed files with 123 additions and 1 deletions
+39
View File
@@ -0,0 +1,39 @@
# 依赖目录
node_modules/
.DS_Store
# 构建产物
dist/
dist-ssr/
*.local
# 日志
logs/
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# 本地环境变量(含敏感信息,不提交)
.env.local
.env.*.local
# 编辑器 / IDE 目录和文件
.vscode/*
!.vscode/extensions.json
.idea/
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# 操作系统文件
Thumbs.db
Desktop.ini
# 缓存
.cache/
.temp/
*.tsbuildinfo
+18
View File
@@ -1,3 +1,20 @@
<<<<<<< HEAD
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>设备管理系统</title>
<script type="module" crossorigin src="/assets/index-BhGvW7tT.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-BpBnxyAz.css">
</head>
<body>
<div id="app"></div>
<!-- Vite 入口,指向 src/main.js,不要删除 -->
</body>
</html>
=======
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
@@ -14,3 +31,4 @@
</body> </body>
</html> </html>
>>>>>>> ef029340f2f8ddaab8f06229c6a867fadacd9a3c
+14
View File
@@ -0,0 +1,14 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>设备管理系统</title>
</head>
<body>
<div id="app"></div>
<!-- Vite 入口,指向 src/main.js,不要删除 -->
<script type="module" src="/src/main.js"></script>
</body>
</html>
+16
View File
@@ -0,0 +1,16 @@
import request from '@/utils/request'
// 设备列表
export const getEquipmentList = (params) => request.get('/equipment/list', { params })
// 设备详情
export const getEquipmentDetail = (id) => request.get(`/equipment/${id}`)
// 新增设备
export const addEquipment = (data) => request.post('/equipment', data)
// 修改设备
export const updateEquipment = (id, data) => request.put(`/equipment/${id}`, data)
// 删除设备
export const deleteEquipment = (id) => request.delete(`/equipment/${id}`)
+35
View File
@@ -0,0 +1,35 @@
import axios from 'axios'
import { ElMessage } from 'element-plus'
// 创建 axios 实例
const request = axios.create({
baseURL: import.meta.env.VITE_API_BASE_URL || '/api',
timeout: 10000
})
// 请求拦截器:发请求前统一加 token
request.interceptors.request.use(config => {
const token = localStorage.getItem('token')
if (token) config.headers.Authorization = `Bearer ${token}`
return config
})
// 响应拦截器:统一处理返回结构和错误(全局处理放这里)
request.interceptors.response.use(
response => {
const res = response.data
// 假设后端统一返回 { code, data, message }
if (res.code !== 0) {
ElMessage.error(res.message || '请求失败')
return Promise.reject(new Error(res.message))
}
// 直接返回 data,页面拿到的就是干净数据,不用每次再 .data
return res.data
},
error => {
ElMessage.error(error.message || '网络错误')
return Promise.reject(error)
}
)
export default request