尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

TypeScript项目局域网访问和GitHub提交和发布操作

TypeScript项目局域网访问和GitHub提交和发布操作
📅 发布时间:2026/6/30 22:33:33

版本:v2.1.0
作者:Gary Yuan
日期:2026年6月


目录

  1. 项目概述
  2. 快速开始
  3. 项目结构
  4. 数据库说明
  5. API接口
  6. 用户权限
  7. 设备状态流转
  8. 常见问题
  9. 局域网访问
  10. 打包发布

1. 项目概述

这是一个前后端分离的机场设备管理系统,用于管理机场的各种设备(值机柜台、登机口等)。

技术栈

分类技术说明
前端Next.js 16 + React 19 + TypeScript用户界面
后端Express + Prisma ORMAPI接口
数据库SQLite(默认)/ PostgreSQL / MySQL数据存储
认证JWT + bcrypt用户登录验证
样式Tailwind CSS页面样式
桌面端Electronexe安装包

核心功能

  • ✅ 设备管理(增删改查、状态变更、位置移动)
  • ✅ 站点管理(值机岛、登机口、自助服务区)
  • ✅ 柜台管理(站点下的柜台)
  • ✅ 用户管理(管理员、普通用户)
  • ✅ 耗材管理(换纸记录、耗材记录)
  • ✅ 变更记录(设备状态变更历史)
  • ✅ 数据导入导出(CSV格式)

2. 快速开始

2.1 环境要求

  • Node.js >= 18.x
  • npm >= 9.x

2.2 安装步骤

# 1. 克隆项目gitclone https://github.com/Garyjie/airport-equipment-management.gitcdairport-equipment-management# 2. 切换到开发分支gitcheckout dev# 3. 安装依赖npminstall# 4. 初始化数据库(自动创建表结构)npmrun prisma:generatenpmrun prisma:migratenpmrun prisma:seed# 5. 启动后端服务(终端1)npmrun server# 6. 启动前端服务(终端2)npmrun dev# 7. 打开浏览器访问# http://localhost:3000

2.3 默认账号

用户名密码角色
adminadmin123管理员(所有权限)
operatoroperator123普通用户(部分权限)

3. 项目结构

airport-equipment-management/ ├── app/ # Next.js 前端页面 │ ├── devices/ # 设备管理页面 │ ├── stations/ # 站点管理页面 │ ├── users/ # 用户管理页面 │ └── layout.tsx # 全局布局 ├── components/ # React 组件 │ ├── dashboard/ # 仪表盘组件 │ ├── auth/ # 认证组件 │ └── ui/ # UI组件 ├── lib/ # 工具库 │ ├── api.ts # API请求封装 │ ├── store.ts # 全局状态管理 │ └── types.ts # TypeScript类型定义 ├── server/ # Express 后端 │ ├── routes/ # API路由 │ ├── middleware/ # 中间件(认证等) │ ├── prisma/ # Prisma ORM │ └── index.ts # 服务器入口 ├── docs/ # 项目文档 │ ├── sql/ # SQL脚本 │ ├── 项目详解.md # 完整技术文档 │ └── 新手入门详解.md # 本文件 ├── electron-main.js # Electron主进程 ├── package.json # 项目配置 └── prisma/ # Prisma配置 ├── schema.prisma # 数据库模型定义 └── migrations/ # 数据库迁移记录

4. 数据库说明

4.1 默认使用 SQLite

数据库文件位于prisma/dev.db,这是一个文件型数据库,不需要额外安装数据库软件。

4.2 切换到 PostgreSQL/MySQL

修改.env文件:

# SQLite(默认) DATABASE_URL="file:./prisma/dev.db" # PostgreSQL DATABASE_URL="postgresql://用户名:密码@localhost:5432/数据库名" # MySQL DATABASE_URL="mysql://用户名:密码@localhost:3306/数据库名"

4.3 数据库表

表名说明
User用户表
DeviceType设备类型表
Station站点表
Counter柜台表
Device设备表
DeviceChangeRecord设备变更记录表
PaperChangeRecord换纸记录表
ConsumableRecord耗材记录表

4.4 初始化数据

执行npm run prisma:seed后会自动创建:

  • 8 个站点(值机岛、登机口、自助服务区、库房)
  • 25 个柜台/登机口
  • 8 种设备类型
  • 48 台设备
  • 5 条换纸记录
  • 3 条耗材记录

5. API接口

5.1 基础地址

开发环境:http://localhost:5000/api
生产环境:/api

5.2 接口列表

模块接口方法需要认证
认证/auth/loginPOST否
认证/auth/logoutPOST是
认证/auth/meGET是
用户/usersGET是(admin)
用户/usersPOST是(admin)
用户/users/:idPUT是(admin)
用户/users/:idDELETE是(admin)
设备类型/device-typesGET是
设备类型/device-typesPOST是(admin)
站点/stationsGET是
站点/stationsPOST是(admin)
柜台/countersGET是
柜台/countersPOST是(admin)
设备/devicesGET是
设备/devicesPOST是
设备/devices/:id/movePOST是
设备/devices/:id/statusPOST是

5.3 认证方式

使用 JWT Token,在请求头中携带:

Authorization: Bearer <token>

登录成功后,Token 会自动存储在 localStorage 中。


6. 用户权限

6.1 权限区分

权限adminoperator
查看设备列表✅✅
变更设备状态✅✅
移动设备位置✅✅
添加/删除设备✅❌
用户管理✅❌
站点管理✅❌
柜台管理✅❌

6.2 常见问题:普通用户登录后数据为空

问题原因:前端加载数据时,普通用户也会尝试获取用户列表,但后端用户列表接口需要 admin 权限,返回 403 错误,导致所有数据加载失败。

修复方案:修改lib/store.ts,只有 admin 角色才获取用户列表:

constusers=currentUser.role==='admin'?awaituserApi.getAll():[]

7. 设备状态流转

7.1 状态定义

状态英文颜色说明
使用中active绿色设备正在使用
备机standby蓝色设备待命,可随时使用
损坏damaged橙色设备损坏,需要维修
送修repair红色设备已送修

7.2 状态流转规则

使用中 → 备机区/损坏区/送修区 → 设备库房(站点清空) 损坏区 → 送修区 → 设备库房(站点清空) 送修区 → 备机区 → 设备库房(站点清空) 备机区 → 使用中 → 需要手动分配到柜台

7.3 状态变更时的站点处理

重要规则:只要新状态不是 “使用中”,设备的站点和柜台都会被清空,设备进入库房。

修改位置:server/routes/devices.ts

constisActiveStatus=status==='active'constnewCounterId=isActiveStatus?device.counterId:nullconstnewStationId=isActiveStatus?device.stationId:null

8. 常见问题

8.1 Q: 登录后页面数据为空?

A:检查是否使用普通用户登录。普通用户看不到用户管理数据,但设备数据应该正常显示。如果所有数据都为空,检查后端服务是否正常运行。

8.2 Q: 设备状态变更后站点没有变化?

A:确保修改了server/routes/devices.ts中的状态变更逻辑。旧逻辑只有从 active 状态转出时才清空站点,新逻辑只要新状态不是 active 就清空站点。

8.3 Q: IDE 中代码显示红色波浪线?

A:可能是 TypeScript 类型推断失败。检查lib/store.ts中的数据加载逻辑,确保变量有正确的类型注解。

8.4 Q: 导入 CSV 文件没反应?

A:检查文件是否为 CSV 格式,文件编码是否为 UTF-8 或 GBK。前端会自动检测编码并处理中文乱码。

8.5 Q: 访问 http://localhost:5000 显示 Cannot GET /?

A:正常现象!5000 端口是后端 API 服务,只返回 JSON 数据,没有 HTML 页面。前端页面在 3000 端口:http://localhost:3000


9. 局域网访问

9.1 问题描述

手机和电脑在同一局域网下,但手机无法访问系统。

9.2 原因分析

  1. 前端 API 地址写死 localhost:手机打开页面后,前端会请求http://localhost:5000/api,也就是手机自己的端口,当然访问不了。

  2. 后端只监听本地:默认只监听localhost,外部设备无法访问。

9.3 修复方案

步骤1:修改前端 API 地址

文件:lib/api.ts

functiongetApiBaseUrl():string{if(typeofwindow==='undefined'){return'http://localhost:5000/api'}if(isElectron){return'http://localhost:5000/api'}if(process.env.NODE_ENV==='production'){return'/api'}const{protocol,hostname}=window.locationreturn`${protocol}//${hostname}:5000/api`}
步骤2:修改后端监听地址

文件:server/index.ts

app.listen(PORT,'0.0.0.0',()=>{console.log(`服务器运行在 http://localhost:${PORT}`)})
步骤3:修改前端监听地址

启动命令:

npmrun dev ---H0.0.0.0

9.4 查看电脑 IP

Windows:

ipconfig|Select-String"IPv4"

Mac/Linux:

ifconfig|grepinet

9.5 手机访问

确保手机和电脑在同一 Wi-Fi 下,打开手机浏览器:

http://你的电脑IP:3000

10. 打包发布

10.1 构建前端

npmrun build

10.2 打包 Electron 桌面端

npmrun electron:release

生成的文件在release/目录:

release/ ├── 机场设备管理系统 Setup 2.1.0.exe # NSIS安装包 └── win-unpacked/ # 免安装版 └── 机场设备管理系统.exe # 直接运行的exe

10.3 上传到 GitHub

# 提交代码gitadd-Agitcommit-m"v2.1.0: 修复局域网访问问题"gitpush origin dev# 创建标签gittag-av2.1.0-m"v2.1.0"gitpush origin v2.1.0# 创建 Release(通过 GitHub 网页)

附录:Git 常用命令

# 查看当前分支gitbranch# 切换分支gitcheckout dev# 查看状态gitstatus# 添加所有文件gitadd-A# 提交gitcommit-m"描述信息"# 推送到远程gitpush origin dev# 拉取最新代码gitpull origin dev

附录:项目版本记录

版本日期变更内容
v2.1.02026-06修复局域网访问、修复状态变更逻辑、修复普通用户登录
v2.0.02026-06前后端分离重构、添加数据库、JWT认证、Electron打包
v1.0.02026-06演示版(localStorage存储)

祝你使用愉快!🎉

相关新闻

  • YOLO26N 姿态估计 ONNX 导出与模型简化
  • linux环境docker-compose部署Clickhouse 集群
  • AI写作技巧:把你的想法翻译成AI能理解的语言

最新新闻

  • 2026年国内口碑好的电力测功机销售厂家,究竟有哪些值得关注?
  • 2026年6月最新全球TOP5小程序商城开发工具盘点!含零代码SAAS、AI编程、源码定制
  • 如何选择跨平台文本编辑器:Notepad--的完整指南
  • 【极速入门数模电路】CMOS推挽原理、TTL/CMOS电平详解、七大基础逻辑门
  • BetterNCM安装器终极指南:3分钟解锁网易云音乐的无限可能 [特殊字符]
  • Parsec虚拟显示器终极指南:如何实现零延迟的4K游戏串流体验

日新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号