diff --git a/Dockerfile b/Dockerfile index a901cdd..1ce50ab 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:20.12.1 as frontend +FROM node:20.12.1 AS frontend WORKDIR /app COPY /frontend /app/frontend diff --git a/README.md b/README.md index a2c7483..8d104ec 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -

MaterialManager

-
+

MaterialManager

+
![GitHub commit activity](https://img.shields.io/github/commit-activity/m/pylover7/MaterialManager) ![GitHub License](https://img.shields.io/github/license/pylover7/MaterialManager) @@ -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: + 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: + 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 diff --git a/frontend/public/platform-config.json b/frontend/public/platform-config.json index fd28909..cbf3814 100644 --- a/frontend/public/platform-config.json +++ b/frontend/public/platform-config.json @@ -1,5 +1,5 @@ { - "Version": "1.0.7", + "Version": "1.0.9", "Title": "物资管理平台", "FixedHeader": true, "HiddenSideBar": false, @@ -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" }