开发了一套IT资产管理系统

RONGYAN
2026-05-20 / 0 评论 / 21 阅读 / 耗时: 24 ms /

一、系统介绍

  我的零售业务有好多的IT设备,销售给客户的数据原来都是表格管理,不仅查询不方便,客户也会有想要知道设备质保期的信息。由于市面上一直没能够找到符合我预期的产品,所以一直也就这样将就着用着。
  前两天心血来潮下载了Cursor,结果在这AI编程器的配合下,竟然花了两天时间手搓出了个不错的资产管理系统,不管是界面、还是功能上,都是非常符合我原先的预期了。
IT资产管理系统仪表盘
  所以这是一套面向 IT 服务商的设备与资产管理平台,包含前端客户自助查询系统和后端资产管理系统两部分。

20260525:为简化布署,系统已改为php语言,以下描述是初版,不再更新。稍后有时间会重新编辑功能说明。有兴趣的可以直接点击新版宣传页进行查看: IT设备销售管理系统 ,有购买意向或者定制功能的的可以直接联系站长。

二、技术栈

层级技术
后端Express 5 + Node.js
数据库MySQL(mysql2 连接池)
Sessionexpress-session + express-mysql-session(MySQL 持久化,24h 有效期)
安全helmet(安全响应头)、cors、express-rate-limit(限流)
日志winston + winston-daily-rotate-file(按天轮转,保留 30 天)
HTTP 日志morgan
压缩compression(Gzip)
文件上传自定义 multipart 解析
数据导出exceljs(Excel)、pdfkit(PDF)
前端框架Vue 3 + Vite + Element Plus
路由vue-router 4(createWebHistory,懒加载)
状态管理Pinia
HTTP 客户端Axios
图表Chart.js 4 + vue-chartjs

三、项目结构

├── server/                    # 后端
│   ├── index.js               # Express 入口,路由注册
│   ├── schema.sql             # 数据库建表语句
│   ├── .env                   # 环境变量配置
│   ├── lib/                   # 业务模块
│   │   ├── db.js              #   数据库连接池与初始化
│   │   ├── env.js             #   .env 加载器
│   │   ├── auth.js            #   认证(登录/登出/改密/会话校验)
│   │   ├── session.js         #   Session 持久化配置
│   │   ├── rate-limiter.js    #   请求限流
│   │   ├── devices.js         #   设备 CRUD、公开查询、图片上传
│   │   ├── customers.js       #   客户 CRUD、联系人管理
│   │   ├── assets.js          #   资产 CRUD(配件/软件/耗材/服务)
│   │   ├── todos.js           #   维护记录 CRUD
│   │   ├── dashboard.js       #   仪表盘统计与图表
│   │   ├── config.js          #   站点配置读写、LOGO 上传
│   │   ├── audit.js           #   操作审计日志
│   │   ├── export.js          #   Excel / PDF 导出
│   │   ├── faults.js          #   故障记录管理(JSON 文件存储)
│   │   ├── logger.js          #   Winston 日志配置
│   │   ├── pagination.js      #   分页工具
│   │   └── utils.js           #   通用工具函数
│   └── package.json
├── public-vue/                # 前端构建产物(Vite build 输出)
│   └── assets/                #   代码分割后的 JS/CSS 文件
└── data/                      # 数据文件
    └── faults.json            #   故障记录(JSON 存储)

四、环境要求

  • Node.js >= 18
  • MySQL >= 8.0

五、快速开始

# 1. 进入服务端目录
cd server

# 2. 安装依赖
npm install

# 3. 配置环境变量
cp .env.example .env
# 编辑 .env,填入数据库连接信息和管理员账号

# 4. 启动服务
npm start
# 或指定端口
PORT=8020 npm start

启动后访问:

  • 前台查询页:http://localhost:3000/
  • 管理后台:http://localhost:3000/login

六、环境变量配置

server/.env 文件中配置:

变量名说明默认值
PORT服务监听端口3000
DB_HOSTMySQL 主机地址
DB_PORTMySQL 端口3306
DB_NAME数据库名称support_it
DB_USER数据库用户名support_it
DB_PASSWORD数据库密码自己设置
ADMIN_USERNAME管理员用户名admin
ADMIN_PASSWORD管理员密码admin123
SESSION_SECRETSession 加密密钥随机生成

七、功能说明

1、前台 — 客户自助查询

前台面向客户,提供设备信息自助查询功能,如购买日期、质保期、脱保期、设备图片等。

访问地址: /

功能:

  • 前台设备查询

    • 输入客户编码(必填,精确匹配,防止有闲得蛋疼的访客手痒)
    • 输入设备序列号(必填,支持部分模糊匹配)
    • IT资产管理系统前台界面
    • 单条结果直接展示详情卡片;多条结果展示列表,点击可展开,图片可以点击浮动放大查看
    • 资产管理系统单图片效果
    • 详情展示:设备名称、序列号、客户信息、销售日期、质保期、质保截止日期、质保状态(在保/已过保/已报废)、多张设备图片(缩略图 + 灯箱预览)、备注
    • 多图灯箱支持左右箭头切换和圆点指示
    • 资产管理系统多图片效果
  • 维护模式

    • 后台开启维护模式后,前台自动跳转至维护提示页面,暂停查询服务

2、后台 — 管理系统

访问地址: /login(未登录时自动跳转)

默认账号: admin / admin123

2.1、 业务看板

后台首页,展示关键业务数据概览。

  • 统计卡片(8 个):设备总数、客户总数、过保设备数、在保设备数、设备总值、配件总值、耗材总值、资产总值
  • 趋势图表(Chart.js 折线图):

    • 展示各类资产价值随时间的变化趋势
    • 支持按月 / 按年切换统计粒度
    • 系统每月自动记录快照,历史数据持久化存储
    • IT资产管理系统仪表盘

2.2、 维护记录

管理设备的维护/维修/巡检记录。

  • 列表展示:标题、关联设备、维护日期、优先级(高/中/低)、状态(待处理/进行中/已完成)
  • 新增 / 编辑 / 删除维护记录
  • 关联设备:下拉选择已有设备,自动填充设备名称和序列号
  • 关键词搜索:支持按标题、设备名、备注模糊搜索
  • 状态标签:已完成(绿色)、待处理(红色)、进行中(蓝色)
  • IT资产管理系统维护记录功能

2.3、 客户管理

管理客户信息及联系人。

  • 列表展示:客户编码、名称、地址、网址、联系人列表
  • 新增 / 编辑 / 删除客户
  • 多联系人:每个客户支持添加多个联系人(姓名、邮箱、电话),可动态增删
  • 唯一性校验:客户编码和名称不可重复
  • 删除保护:存在关联设备或资产时禁止删除
  • 自动同步:修改客户名称时,自动同步更新所有关联设备和资产的客户名称字段
  • 客户联动选择器:在设备/资产表单中输入编码自动匹配名称,反之亦然
  • IT资产管理系统客户管理功能

2.4、 设备管理

管理客户设备信息,每台设备最多支持 3 张图片。

  • 列表展示:图片缩略图(+N 角标)、序列号、设备名称、客户编码/名称、销售日期、质保期、质保截止日期、质保状态(在保/过保/已报废)、价格
  • 新增 / 编辑 / 删除设备
  • 设备图片上传:每台设备最多 3 张,支持 JPG/PNG/GIF/WEBP,最大 5MB
  • 图片预览:表格内单击预览,支持灯箱大图浏览
  • 设备报废:标记设备为报废状态
  • 质保自动计算:根据销售日期 + 质保月数自动计算质保截止日期和状态
  • 客户联动:输入客户编码或名称自动匹配另一项
  • 唯一性校验:同一客户下序列号不可重复
  • 关键词搜索:支持按序列号、设备名称、客户名称搜索
  • IT资产管理系统设备管理界面
  • IT资产管理系统编辑设备界面

2.5、 资产管理(配件 / 软件 / 耗材 / 服务)

四类资产统一管理,通过路由参数 :type 区分。

2.5.1、配件
  • 列表展示:图片缩略图、名称、编码、所属设备、客户编码/名称、单价、数量、总价、质保状态、备注
  • 新增 / 编辑 / 删除配件
  • 质保状态自动计算(在保/已过保)
  • 报废功能
  • 归属设备:可选关联到已有设备,选择设备后自动匹配客户编码和名称
  • 客户联动选择:输入客户编码自动匹配客户名称
  • 质保期输入:支持设置质保月数
  • IT资产管理系统配件管理界面
  • IT资产管理系统编辑配件界面
2.5.2、软件
  • 功能与配件管理类似,支持质保状态自动计算、报废、归属设备关联、质保期输入。
2.5.3、耗材
  • 列表展示:图片缩略图、名称、编码、所属设备、客户编码/名称、单价、数量、总价、购买日期、备注
  • 新增 / 编辑 / 删除耗材
  • 归属设备:可选关联到已有设备,选择后自动匹配客户编码和名称
  • 购买日期:支持记录购买日期
  • 无质保期字段
2.5.4、服务
  • 列表展示:名称、编码、客户编码/名称、价格、起始日期、服务时间、服务状态、备注
  • 新增 / 编辑 / 删除服务
  • 服务期限自动计算:起始日期 + 服务月数
  • 脱保状态自动判断
  • 无数量字段(服务按项计费)
  • 无归属设备字段
2.5.5、资产管理通用功能
  • 图片上传:每项资产最多 3 张,支持预览和删除
  • Excel 导入/导出
  • 客户联动:所有资产模块均支持客户编码/名称自动匹配

2.6、 系统配置

管理系统全局设置。

  • 基础配置

    • 系统名称(同步前台标题和后台侧边栏)
    • 站点域名
    • 文字 LOGO(侧边栏显示)
    • 图片 LOGO 上传(支持 JPG / PNG / GIF / WEBP / SVG,最大 2MB)
    • 调试/维护模式开关(开启后前台跳转维护页)
    • 版权信息:支持 HTML 内容,显示在前台和后台页脚
    • SEO / TDK:保存后服务端注入 HTML,立即生效
    • 页面标题、SEO 元信息从后台配置读取,服务端直接注入 HTML
    • 系统名称、LOGO、版权信息动态渲染
    • IT资产管理系统系统设置

2.7、 数据导出

支持将各模块数据导出为 Excel 或 PDF 文件。

  • 可导出模块:设备列表、资产列表(配件/软件/耗材/服务)、客户列表、维护记录、审计日志
  • 导出格式:Excel(.xlsx)/ PDF
  • 导出字段包含各模块的核心信息

2.8、 审计日志

系统自动记录所有关键操作,并提供后台查询界面。

  • 记录内容:操作人、操作类型、目标类型、目标 ID、操作详情、IP 地址、浏览器标识、操作时间
  • 自动记录的操作:登录/登出、设备的增删改/报废、客户的增删改、资产的增删改/报废、维护记录的增删改、修改密码、更新系统配置、上传 LOGO 等
  • 查询筛选:操作人、操作类型、日期时间范围
  • 分页浏览:每页 20 条
  • IT资产管理系统审计日志界面

2.9、 界面主题

  • 暗色主题:全后台采用暗色主题配色,Element Plus 组件(表格、输入框、按钮、对话框、下拉框、分页、标签、气泡提示等)全局适配暗色
  • 统一圆角:表格 12px 圆角,与卡片风格一致
  • 多级菜单:资产侧边栏按类型分类

八、数据库表结构

系统共使用 10 张数据表:

表名说明
admin_users管理员账号(用户名、密码哈希、盐值)
site_settings站点配置(KV 键值对结构)
customers客户信息(编码、名称、地址、网址)
customer_contacts客户联系人(姓名、邮箱、电话,关联客户)
devices设备信息(序列号、名称、客户、质保、价格、图片 url×3、状态)
assets资产信息(配件/软件/耗材/服务统一存储,含类型、质保、服务、归属设备等字段)
todos维护记录(标题、状态、优先级、关联设备)
value_history资产价值历史快照(按月/年记录各类资产价值)
sessionsSession 持久化(express-mysql-session 自动管理)
audit_logs操作审计日志(操作人、类型、详情、IP、时间)

完整建表语句见 server/schema.sql


九、部署说明

1、前端

/public-vue/

2、使用 PM2 守护进程(推荐)

npm install -g pm2
cd server
pm2 start index.js --name "support-it"
pm2 save
pm2 startup

3、使用 Nginx 反向代理

server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

4、数据库初始化

系统启动时会自动执行 server/schema.sql 创建所需表结构,无需手动导入。

5、宝塔面板布署教程

5.1、资产管理系统的文件列表说明

  • show 目录:系统功能说明图片及演示网页
  • database.sql.zip 示例数据库文件
  • public-vue.zip 前端程序
  • readme.md 系统功能说明
  • server.zip 后端程序
  • IT资产管理系统的文件列表

5.2、建立数据库

  • 在宝塔的数据库中建立如下数据库:
  • 记得把这些信息拷贝备用:数据库名称、帐号、密码
  • IT资产管理系统建立数据库
  • 数据库建立完成后,上传示例数据库文件并导入database.sql.zip

5.3、上传前后端程序

  • 在宝塔文件管理中建立系统专用的目录Asset-Management-System
  • 并把前后端程序上传如下:public-vue为前端程序目录,server为后端程序目录
  • IT资产管理系统目录说明

5.4、修改数据库连接信息

  • server目录下有个.env文件,打开它:
  • 把你刚才建立的数据库里的信息填入,如实填就行,不要和我的一样。
  • IT资产管理系统配置数据库

5.5、建立前端网站

  • 网站建立的时候选择纯静态即可,网站目录要选择前端目录public-vue
  • IT资产管理系统前端网站建立

5.6、安装及运行服务端

  • 在宝塔的--网站--Node项目中,打开Node项目管理器,安装好Node.js依赖
  • IT资产管理系统安装Node.js依赖
  • 再添加一个Node项目,目录要选择后端目录server,其它的都是自动匹配的,不需要手动去填,最下面的包管理器要手动选择npm
  • IT资产管理系统后端程序建立
  • 顺利的话确定之后后端程序就应该跑起来了
  • IT资产管理系统服务端成功运行
  • 后端面板
  • IT资产管理系统宝塔后端面板
  • 查看一下运行日志,确定没问题,成功在跑
  • IT资产管理系统后端运行日志
  • 这时候我们就可以通过以下链接进行使用了:
  • 管理后台: http://localhost:3000/admin/
  • 前台访问: http://192.168.64.13:3000

5.7、做反代去端口访问

  • 程序为了和其它项目共生,默认并没有直接跑80端口,我设置了3000端口使用。
  • 为了去端口访问,我们可以在宝塔做个反向代理即可
  • 在网站前台项目属性找到反向代理,进行如下设置即可:
  • IT资产管理系统去端口访问
  • 如此,我们的资产管理系统就算正式上线了!
  • IT资产管理系统前台查询界面

十、安全说明

  • 管理员密码使用 scrypt 算法加盐哈希存储
  • 登录接口限流 5 次/分钟/IP,防止暴力破解
  • API 接口限流 100 次/分钟/IP(含前台查询和后台管理接口)
  • Session 有效期 24 小时,存储在 MySQL 中
  • 使用 helmet 设置安全响应头
  • 所有管理接口需登录认证
  • 关键操作自动记录审计日志(含 IP 和 User-Agent)

十一、管理员密码找回

若忘记管理员密码,可通过以下方式重置:

1、直接修改数据库

# 进入 MySQL
mysql -u 数据库用户名 -p

# 使用系统数据库
USE support_it;

# 删除管理员账号,系统重启后会自动使用 .env 中的配置重新创建默认账号
DELETE FROM admin_users WHERE username = 'admin';

重启服务后,系统会自动使用 .env 中配置的 ADMIN_USERNAMEADMIN_PASSWORD 创建管理员账号。

2、默认账号

  • 用户名:admin(可在 .env 中配置 ADMIN_USERNAME
  • 密码:admin123(可在 .env 中配置 ADMIN_PASSWORD

十二、下载地址

  • 百度网盘下载地址,
  • 说明:此价格仅是程序包价格,不提供技术支持,请自行研究。
  • 若需要代布署至服务器,或者功能需要定制,请联系站长,提供有偿服务。
  • 价格: 49.00 元
    VIP会员价格:39.00元终身会员免费
    温馨提示:登录付款后可永久阅读隐藏内容。 付费可读
你认为这篇文章怎么样?
  • 0
    点赞
  • 0
  • 0
  • 0
    滑稽
  • 0
    尴尬
  • 0
    睡觉
  • 打赏
    打赏

评论 (0)

取消
头像
邮箱:
I P:
互动: