Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM node:20.12.1 as frontend
FROM node:20.12.1 AS frontend

WORKDIR /app
COPY /frontend /app/frontend
Expand Down
241 changes: 228 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<h1 align="center"> MaterialManager </h1>
<div align="center">
<h1 style="text-align: center"> MaterialManager </h1>
<div style="text-align: center">

![GitHub commit activity](https://img.shields.io/github/commit-activity/m/pylover7/MaterialManager)
![GitHub License](https://img.shields.io/github/license/pylover7/MaterialManager)
Expand All @@ -9,32 +9,247 @@

## 介绍

一款自用的物资管理系统
一款适用于企业内部的物资管理平台,特点如下:
- 使用企业内部ldap系统登录
- 单独的权限管理
- 物资的自定义分类
- 区域的自定义划分
- 值班交接班功能
- ...

## 安装
## 使用
创建 `docker-compose.yaml` 文件
```yaml
configs:
create_db_sql:
file: ./create_db.sql

构建镜像
services:
db:
image: ghcr.io/pylover7/mysql8
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: mysql
TZ: Asia/Shanghai
volumes:
- ./material-data:/var/lib/mysql:Z
configs:
- source: create_db_sql
target: /docker-entrypoint-initdb.d/create_db.sql
mode: 0777
networks:
material_net:
aliases:
- db
material:
image: ghcr.io/pylover7/material
restart: unless-stopped
environment:
- DB_HOST=db
- DB_DRIVER=org.mysql.jdbc.Driver
- DB_URL=jdbc:mysql://db:3306/material?serverTimezone=Asia/Shanghai
- DB_USERNAME=root
- DB_PASSWORD=mysql
- DEV=false
volumes:
- ./material-config:/app/config
- ./material-logs:/app/logs
ports:
- '7001:80'
depends_on:
- db
networks:
material_net:
aliases:
- material

networks:
material_net:
driver: bridge
```

使用命令启动容器服务
```bash
docker build -t material:1.0.7 .
docker-compose up -d
```

保存镜像
创建配置文件
在 `./material-config` 目录下添加配置文件 `config.yml`
```yml
app:
title: MaterialManager
description: A manager for material
version: &version 1.0.7
dev: true

# 启动服务配置信息
server:
host: 127.0.0.1
port: 8000
reload: false
cors_origins:
- '*'
cors_allow_credentials: true
cors_allow_headers:
- '*'
cors_allow_methods:
- '*'

# 密钥信息
secret:
secret_key: <secret>
jwt_algorithm: HS256
jwt_access_token_expire_min: 30
jwt_refresh_token_expire_min: 120

# 超级管理员信息
superUser:
username: admin
nickname: admin
employeeID: "00000000"
mobile: "18888888888"
email: admin@example.com
is_superuser: true
remark: 管理员
department: 管理员
company: 管理员

# 数据库配置信息
db:
start: mysql
host: localhost
port: 3306
username: root
password: mysql
database: material

# ldap 服务器IP
ldap:
host: <ldap IP>
base: "dc=demo,dc=com"
username: test
password: test1234


# 日志配置信息
log:
version: 1
disable_existing_loggers: false
formatters:
default:
(): uvicorn.logging.DefaultFormatter
fmt: '%(levelprefix)s %(message)s'
use_colors:
access:
(): uvicorn.logging.AccessFormatter
fmt: '%(asctime)s | %(levelprefix)s %(client_addr)s - %(status_code)s - "%(request_line)s"'
handlers:
default:
class: logging.StreamHandler
formatter: default
stream: ext://sys.stderr
access:
class: logging.StreamHandler
formatter: access
stream: ext://sys.stdout
loggers:
uvicorn:
level: INFO
handlers:
- default
uvicorn.error:
level: INFO
uvicorn.access:
level: INFO
handlers:
- access
propagate: false
```

交接班记录文件 `dutyInfo.ini`
```ini
[glb.tool]
dutyperson = 张三
dutypersondepart = xx处xx科
takeovertime = 2025-01-10 22:08:24

[glb.key]
dutyperson = 张三
dutypersondepart = xx处xx科
takeovertime = 2025-01-10 22:13:29

[wk.tool]
dutyperson = admin
dutypersondepart = 管理员
takeovertime = 2024-12-04 11:37:40

[wk.key]
dutyperson = xxx
dutypersondepart = 浙江火电维修处
takeovertime = 2024-11-01 22:37:52

[fk.tool]
dutyperson = admin
dutypersondepart = adminDepart
takeovertime = 2020-01-01 00:00:00

[fk.key]
dutyperson = admin
dutypersondepart = adminDepart
takeovertime = 2020-01-01 00:00:00
```

## 自定义开发

技术栈:
- 前端:
- Vue3
- Vite
- ElementPlus
- PureAdmin
- ...
- 后端
- python3.11
- fastapi
- mysql

### 环境搭建
后端
```bash
docker save material:1.0.7 -o material107.tar
# 安装依赖 在目录 backend/ 下执行
uv sync

# 启动
uv run run.py
```
加载镜像

安装前端依赖
```bash
docker load -i material107.tar
# 安装依赖 在目录 frontend/ 下执行
pnpm i

# 启动
pnpm dev
```

启动容器
访问 http://localhost:8001/ 即可


### docker镜像
构建镜像

```bash
docker-compose up -d
docker build -t material:1.0.9 .
```

访问 http://localhost:8080/ 即可
保存镜像
```bash
docker save material:1.0.9 -o material109.tar
```
加载镜像
```bash
docker load -i material109.tar
```

## Status

Expand Down
8 changes: 4 additions & 4 deletions frontend/public/platform-config.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"Version": "1.0.7",
"Version": "1.0.9",
"Title": "物资管理平台",
"FixedHeader": true,
"HiddenSideBar": false,
Expand All @@ -24,7 +24,7 @@
"TooltipEffect": "light",
"ResponsiveStorageNameSpace": "responsive-",
"MenuSearchHistory": 6,
"DocxUrl": "https://hn-disk.cnnp.com.cn/ucdisk/s/AraYn2",
"AdminName": "刘硕",
"AdminEmail": "liushuo@cnnp.com.cn"
"DocxUrl": "https://github.com/pylover7",
"AdminName": "张三",
"AdminEmail": "zhangsan@163.com"
}
Loading