Skip to content

WenYin-Community/harmonyOffice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

鸿蒙办公用品申领管理系统

基于 HarmonyOS ArkTS + Python Flask + MySQL 的办公用品申领管理系统。

📋 项目简介

本系统是一个完整的办公用品管理解决方案,支持员工申领办公用品、管理员审批、库存预警、数据统计等功能。采用前后端分离架构,前端使用鸿蒙原生 ArkTS 开发,后端使用 Python Flask 提供 RESTful API。

✨ 功能特性

用户管理

  • 用户登录(员工/管理员双角色)
  • 登录页记住账号功能
  • 修改个人密码
  • 管理员添加/删除用户
  • 管理员重置用户密码

库存管理

  • 查看全部办公用品库存
  • 按分类筛选物品(笔类/纸品类/文具/办公设备/耗材/数码产品/其他)
  • 库存低于阈值自动预警(红色标识)
  • 管理员新增/编辑/删除物品
  • 库存变动记录追踪
  • 库存报表导出(CSV)

申领流程

  • 员工选择物品、填写数量和用途提交申领
  • 申领页显示当前库存及预警状态
  • 单次申领数量限制(最多100件,不得超库存)
  • 查看个人申领记录及状态
  • 员工可撤回待审批的申请

审批管理

  • 管理员查看待审批申请
  • 按关键词搜索申领记录
  • 通过/驳回操作(驳回需填写理由)
  • 审批通过自动扣减库存

数据统计(管理员)

  • 今日申领数、待审批数、库存预警数
  • 总申请、已通过、已驳回统计
  • 热门申领物品排行

🏗️ 技术架构

┌─────────────────────────────────────────────────────────┐
│                    HarmonyOS App (ArkTS)                │
├─────────────────────────────────────────────────────────┤
│  Pages: Index → Home → Stock/Apply/Record/StockLog      │
│         Password / UserManage                           │
│         ↓                                               │
│  HttpUtil (@ohos.net.http) → RESTful API                │
└─────────────────────────────────────────────────────────┘
                         │
                         ▼ HTTP/JSON
┌─────────────────────────────────────────────────────────┐
│              Python Flask Backend (:5000)                │
├─────────────────────────────────────────────────────────┤
│  Routes: /api/login, /api/goods/*, /api/apply/*         │
│          /api/stock/*, /api/user/*                       │
│         ↓                                               │
│  PyMySQL → MySQL Database                               │
└─────────────────────────────────────────────────────────┘
                         │
                         ▼
┌─────────────────────────────────────────────────────────┐
│                   MySQL Database                        │
├─────────────────────────────────────────────────────────┤
│  Tables: sys_user, office_goods, office_apply, stock_log│
└─────────────────────────────────────────────────────────┘

📁 项目结构

harmonyOffice/
├── App/                                # HarmonyOS 前端项目
│   └── entry/src/main/
│       ├── ets/
│       │   ├── common/                # 公共工具
│       │   │   ├── Constant.ets       # 全局常量
│       │   │   ├── Theme.ets          # 主题配置
│       │   │   └── ToastUtil.ets      # Toast工具
│       │   ├── model/                 # 数据模型
│       │   │   ├── UserModel.ets
│       │   │   ├── GoodsModel.ets
│       │   │   └── ApplyModel.ets
│       │   ├── network/               # 网络请求
│       │   │   └── HttpUtil.ets
│       │   └── pages/                 # 页面
│       │       ├── Index.ets          # 登录页
│       │       ├── Home.ets           # 首页(含统计面板)
│       │       ├── Stock.ets          # 库存页(含分类筛选)
│       │       ├── Apply.ets          # 申领页
│       │       ├── Record.ets         # 记录/审批页(含搜索)
│       │       ├── Password.ets       # 修改密码
│       │       ├── UserManage.ets     # 用户管理
│       │       └── StockLog.ets       # 库存变动记录
│       ├── resources/                 # 资源文件
│       └── module.json5               # 模块配置
│
├── office_server/                     # Python 后端
│   ├── app.py                         # Flask 入口
│   ├── config.py                      # 数据库配置
│   ├── db.py                          # 数据库封装
│   ├── init_sql.py                    # 初始化脚本
│   ├── migrate.py                     # 数据库迁移脚本
│   ├── requirements.txt               # Python 依赖
│   └── routes/                        # API 路由
│       ├── user_api.py                # 用户接口
│       ├── stock_api.py               # 库存接口
│       └── apply_api.py               # 申领接口
│
└── README.md                          # 本文件

🚀 快速开始

环境要求

环境 版本要求
DevEco Studio 5.0+
HarmonyOS SDK API 12+
Python 3.8+
MySQL 8.0+

1. 克隆项目

git clone <repository-url>
cd harmonyOffice

2. 配置数据库

编辑 office_server/config.py,填入你的 MySQL 连接信息:

MYSQL_HOST = 'your_mysql_host'
MYSQL_PORT = 3306
MYSQL_USER = 'your_username'
MYSQL_PASSWORD = 'your_password'
MYSQL_DB = 'harmonyoffice'

3. 初始化数据库

cd office_server
pip install -r requirements.txt
python init_sql.py

如果是从旧版本升级,运行迁移脚本:

python migrate.py

4. 启动后端服务

python app.py

服务将在 http://127.0.0.1:5000 启动。

5. 配置前端

编辑 App/entry/src/main/ets/common/Constant.ets,修改后端地址:

static readonly BASE_URL: string = 'http://127.0.0.1:5000'

6. 运行前端

在 DevEco Studio 中打开项目,连接设备或启动模拟器,点击 Run 按钮。

📱 测试账号

角色 账号 密码 部门
管理员 admin 123456 行政部
员工 zhangsan 123456 技术部
员工 lisi 123456 市场部

🔌 API 接口

用户模块

方法 路径 说明
POST /api/login 用户登录
POST /api/user/change-password 修改密码
GET /api/user/list 用户列表(管理员)
POST /api/user/add 添加用户(管理员)
POST /api/user/reset-password 重置密码(管理员)
POST /api/user/delete 删除用户(管理员)

库存模块

方法 路径 说明
GET /api/goods/list 物品列表(支持?category=分类筛选)
GET /api/goods/categories 获取分类列表
POST /api/goods/add 新增物品(管理员)
POST /api/goods/update 更新物品(管理员)
POST /api/goods/delete 删除物品(管理员)
GET /api/stock/logs 库存变动记录(分页)
GET /api/stock/export 库存报表导出(CSV)

申领模块

方法 路径 说明
POST /api/apply/submit 提交申领
POST /api/apply/cancel 撤回申领
GET /api/apply/my 我的申领记录
GET /api/apply/all 全部记录(支持?status=&keyword=筛选)
POST /api/apply/audit 审批操作(管理员)
GET /api/apply/stats 数据统计(管理员)
GET /api/apply/export 申领记录导出(CSV)

请求/响应格式

请求示例:

POST /api/login
{
  "username": "admin",
  "password": "123456",
  "role": "admin"
}

响应格式:

{
  "code": 200,
  "msg": "登录成功",
  "data": {
    "id": 1,
    "username": "admin",
    "role": "admin",
    "real_name": "管理员"
  }
}

🎨 界面主题

主题配色(蓝紫渐变系)

用途 颜色
主色调 #6366F1
主色深 #4F46E5
成功 #10B981
警告 #F59E0B
危险 #EF4444
背景 #F8FAFC

页面结构

┌─────────────────┐
│     登录页       │ ← Index.ets(记住账号)
├─────────────────┤
│     首页        │ ← Home.ets(统计面板)
├────┬────┬───────┤
│库存│申领│审批(管理)│
│查询│提交│ 中心   │
├────┼────┼───────┤
│库存│用户│ 修改   │
│变动│管理│ 密码   │
└────┴────┴───────┘

📦 数据库设计

sys_user 用户表

字段 类型 说明
id INT 主键
username VARCHAR(50) 账号
password VARCHAR(100) 密码
role VARCHAR(20) 角色(admin/employee)
real_name VARCHAR(50) 姓名
department VARCHAR(50) 部门
create_time DATETIME 创建时间

office_goods 办公用品表

字段 类型 说明
id INT 主键
name VARCHAR(100) 物品名称
spec VARCHAR(100) 规格
stock INT 库存数量
warning_threshold INT 预警阈值
category VARCHAR(50) 分类
create_time DATETIME 创建时间

office_apply 申领单表

字段 类型 说明
id INT 主键
user_id INT 申请人ID
goods_id INT 物品ID
quantity INT 申领数量
purpose VARCHAR(500) 用途
status VARCHAR(20) 状态(pending/approved/rejected/cancelled)
reject_reason VARCHAR(500) 驳回理由
create_time DATETIME 申请时间
audit_time DATETIME 审批时间
auditor_id INT 审批人ID

stock_log 库存变动表

字段 类型 说明
id INT 主键
goods_id INT 物品ID
quantity INT 变动数量
type VARCHAR(20) 类型(入库/出库)
remark VARCHAR(500) 备注
create_time DATETIME 创建时间

🔧 常见问题

1. 后端启动失败

检查 MySQL 连接配置是否正确,确保数据库服务可访问。

2. 前端无法连接后端

  • 确认后端服务已启动
  • 检查 Constant.ets 中的 BASE_URL 配置
  • 确保设备与后端在同一网络

3. 编译错误

在 DevEco Studio 中执行 Clean Project 后重新构建。

4. 数据库升级

从旧版本升级时,运行 python migrate.py 添加新字段和表。

About

基于 HarmonyOS ArkTS + Python Flask + MySQL 的办公用品申领管理系统。

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors