# supply-chain **Repository Path**: zikuo/supply-chain ## Basic Information - **Project Name**: supply-chain - **Description**: 基于 Java 21 + Spring Boot 3 + Vue 3 构建的企业级供应链协同采购管理系统,包含后端服务、管理后台和微信小程序端。核心功能涵盖采购订单全流程管理(询价、报价、下单、履约、收货)、多门店协同、供应商管理、异常处理与履约监控,适用于企业级采购协同场景。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2026-11-12 - **Last Updated**: 2026-11-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

供应链协同采购平台

Supply Chain Collaborative Procurement Platform

联系 • 体验 • 功能 • 技术栈 • 结构 • 部署 • 预览

--- 基于 Java 17 + Spring Boot 3 + Vue 3 构建的企业级供应链协同采购平台,包含后端服务、PC 管理后台,以及面向门店和供应商的双角色小程序。覆盖“门店要货 → 总部审核 → 需求汇总 → 询价报价 → 采购下单 → 配货发货 → 门店收货 → 异常处理”的完整采购协同流程,适用于零售、餐饮、制造等企业级采购场景。 > 业务流程:门店要货 → 总部审核 → 需求汇总 → 询价/报价 → 采购下单 → 配货发货(直配/集采) → 门店收货 → 异常处理 > **⚠️ 项目状态**:核心功能已实现并跑通,部分功能持续迭代优化中。欢迎 Star ⭐ 关注更新,也期待你的反馈和贡献。 --- ## 📮 交流反馈 如需技术交流或试用咨询,请添加微信 `mtools123`(备注:供应链项目) ![微信二维码](docs/screenshots/wechat-qr.png) --- ## 🌐 在线体验 ### 管理后台(PC端) 🔗 访问地址:[https://scm.yuntongsoft.cn](https://scm.yuntongsoft.cn) | 角色 | 账号 | 密码 | |------|------|------| | 管理员 | admin | admin123 | ### 供应商 & 门店入口(移动端) 🔗 访问地址:[https://app.yuntongsoft.cn](https://app.yuntongsoft.cn) | 扫码直达 ↓ ![APP应用](docs/screenshots/app-qrcode.png) | 角色 | 账号 | 密码 | |------|------|------| | 门店 | DEMO_RT01 | 123456 | | 供应商 | 13905341001 | 123456 | > 💡 **提示**:演示数据会定期重置,请放心操作。微信内如无法直接打开链接,请点击右上角「⋯」→「在浏览器中打开」。 > > 本地导入 `supply-chain-backend/sql/supply_chain.sql` 后,内置账号为:门店 `store_bj_cy / admin123`、供应商 `supp_xinyuan / admin123`、后台管理员 `admin / admin123`。 --- ## ✨ 功能特性 ### 总部管理后台 - **数据看板** — 采购统计卡片、待处理事项、金额趋势与品类分布 - **要货审核** — 单条/批量审核与驳回,驳回需填写原因并保留审核日志;支持按商品智能汇总多门店需求、导入 Excel 要货数据 - **询价管理** — 基于需求汇总自动发起、手工新建或直接询价,可调整参与供应商并跟踪报价进度 - **报价对比** — 按价格、可供数量、供货周期、质保、配送方式、售后承诺等维度对比,支持分店分配、采购价维护与历史报价查询 - **采购下单** — 选中报价后生成采购单,支持预编辑和异常标记 - **履约跟踪** — 跟踪配货、发货、门店收货到完结的全过程,查看各门店收货进度 - **异常管理** — 覆盖逾期未配货/未发货、数量差异、质量问题等场景,支持总部标记处理与供应商在线响应 - **数据报表** — 门店多维分析、采购品类分析、供应商绩效分析(中标率、履约表现),支持导出 - **基础档案** — 商品与分类、供应商绑定、门店档案、门店与供应商账号管理 - **供应商管理** — 入驻审核、绑定商品、报价与订单记录、中标率与履约评分 - **系统管理** — 用户、角色、菜单、数据字典、系统参数、操作日志、消息配置与文件管理 ### 门店端(小程序) - **新建要货单** — 按商品分类选品,填写数量、期望到货时间和紧急程度 - **要货进度** — 要货单列表与详情、状态筛选、撤回待审核单据、查看驳回原因与采购进度 - **收货确认** — 待收货与历史记录、按实收数量确认、支持部分收货 - **收货异常上报** — 数量差异、质量问题时提交异常并上传图片/视频材料 - **消息与设置** — 通知提醒、个人中心、修改密码、协议与隐私政策 ### 供应商端(小程序) - **询价中心** — 待报价、已报价、已中标、未中标统计与询价列表 - **报价填报** — 填写单价、可供数量、供货周期、质保、配送方式与售后说明,支持材料上传和撤回报价 - **履约管理** — 待配货/待发货任务、配货登记、按直配或集采集配模式登记发货与物流信息 - **异常响应** — 查看门店或总部提交的异常并在线反馈处理结果 - **消息与设置** — 通知提醒、个人中心、修改密码、协议与隐私政策 --- ## 🛠 技术栈 ### 后端 | 技术 | 版本 | 说明 | |------|------|------| | Java | 17 | LTS 版本 | | Spring Boot | 3.2.2 | 企业级框架 | | MyBatis Plus | 3.5.5 | 增强 ORM | | Sa-Token | 1.37.0 | 权限认证 | | Knife4j | 4.5.0 | API 文档 | | MySQL | 8.0+ | 关系型数据库 | | Hutool | 5.8.44 | 工具类库 | | Apache POI | 5.2.5 | Excel 导入导出 | | X-File-Storage | 2.0.0 | 文件存储 | ### 管理后台前端 | 技术 | 版本 | 说明 | |------|------|------| | Vue | 3.4.21 | 组合式 API | | TypeScript | 5.4 | 类型安全 | | Element Plus | 2.6.1 | UI 组件库 | | Vite | 5.2 | 构建工具 | | Pinia | 2.1.7 | 状态管理 | | Vue Router | 4.3 | 路由管理 | | ECharts | 5.5.0 | 数据可视化 | | xlsx | 0.18.5 | Excel 导入导出 | ### 移动端 | 技术 | 说明 | |------|------| | UniApp(Vue 3) | 跨平台开发框架 | | 微信小程序 / H5 / App | 目标平台 | --- ## 📁 项目结构 ``` supply-chain/ ├── supply-chain-backend/ # 后端服务(Spring Boot) │ ├── src/main/java/com/supplychain/ │ │ ├── common/ # 公共能力:注解、切面、配置、常量、枚举、异常、工具 │ │ └── module/ # 业务模块 │ │ ├── dashboard/ # 数据看板 │ │ ├── dict/ # 数据字典 │ │ ├── file/ # 文件管理 │ │ ├── inquiry/ # 询价与报价 │ │ ├── product/ # 商品管理 │ │ ├── purchase/ # 采购下单、履约跟踪、异常处理 │ │ ├── report/ # 报表统计 │ │ ├── store/ # 门店要货与收货 │ │ ├── supplier/ # 供应商管理 │ │ └── system/ # 用户、角色、菜单、通知、日志 │ ├── src/main/resources/ # 配置文件 │ ├── sql/ # 数据库脚本(初始化 + 升级迁移) │ ├── Dockerfile # 后端镜像构建 │ ├── docker-compose.yml # 容器编排 │ └── pom.xml ├── supply-chain-admin/ # 管理后台(Vue 3) │ ├── src/ │ │ ├── api/ # 接口请求 │ │ ├── components/ # 公共组件 │ │ ├── directives/ # 权限指令 │ │ ├── layout/ # 布局组件 │ │ ├── router/ # 路由配置 │ │ ├── store/ # 状态管理 │ │ ├── styles/ # 全局样式 │ │ ├── types/ # TypeScript 类型 │ │ ├── utils/ # 工具函数 │ │ └── views/ # 页面视图(看板、要货、询价、采购、供应商、系统管理等) │ ├── package.json │ └── vite.config.ts ├── supply-chain-app/ # 微信小程序(UniApp) │ ├── components/ # 公共组件(自定义 TabBar、空状态) │ ├── pages/ │ │ ├── login/ # 登录、协议签署 │ │ ├── store/ # 门店端 │ │ │ ├── index/ # 首页 │ │ │ ├── inquiry/ # 要货单:新建、列表、详情、采购进度、消息 │ │ │ ├── receipt/ # 收货确认 │ │ │ └── mine/ # 个人中心、异常上报、设置 │ │ └── supplier/ # 供应商端 │ │ ├── inquiry/ # 询价中心 │ │ ├── quote/ # 报价填报 │ │ ├── fulfillment/ # 履约管理(配货、发货、异常) │ │ ├── shipping/ # 发货登记 │ │ ├── notification/ # 消息通知 │ │ └── profile/ # 个人中心、设置 │ ├── utils/ # 请求封装、登录态、字典、状态映射等 │ ├── manifest.json │ └── pages.json ├── docs/ # 文档 & 截图 └── pom.xml # Maven 父工程 ``` --- ## 🚀 快速开始 ### 环境要求 - JDK 17+ - Node.js 18+ - MySQL 8.0+ - Maven 3.8+ - pnpm(推荐)或 npm - HBuilderX(运行微信小程序) ### 方式一:本地开发(推荐) **1. 初始化数据库** ```bash # 创建数据库(脚本本身不包含建库语句) mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS gitee_supply_chain DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;" # 导入初始化脚本 mysql -u root -p gitee_supply_chain < supply-chain-backend/sql/supply_chain.sql ``` > 已有旧库升级时,按需执行 `supply-chain-backend/sql/upgrade_flow_2026_11_01.sql` 和 `supply-chain-backend/sql/upgrade_menu_2026_11_01.sql`(幂等,可重复执行)。 **2. 启动后端** ```bash cd supply-chain-backend # 数据库连接在 src/main/resources/application-dev.yml 中配置 mvn clean package -DskipTests java -jar target/supply-chain-backend.jar ``` - 默认启用 `dev` 配置,数据库为 `gitee_supply_chain` - 服务端口为 `8081`,API 文档:`http://localhost:8081/doc.html` - 生产环境启动时追加 `--spring.profiles.active=prod` **3. 启动管理后台** ```bash cd supply-chain-admin pnpm install pnpm dev ``` 访问 `http://localhost:3000`。开发代理已在 `vite.config.ts` 中指向 `http://localhost:8081`,后端端口不同时修改该处即可。 **4. 启动微信小程序** 使用 HBuilderX 打开 `supply-chain-app`,运行到微信小程序模拟器。后端地址配置在 `supply-chain-app/utils/request.js` 的 `apiBaseUrl`,请改为实际可访问的地址;本地调试可在微信开发者工具中勾选「不校验合法域名」,正式发布需在微信公众平台配置 request 合法域名。 ### 方式二:Docker Compose(可选) 仓库提供 `supply-chain-backend/Dockerfile` 与 `docker-compose.yml` 作为容器化参考,使用前需按实际环境补齐: - 准备 `.env`,配置 `MYSQL_ROOT_PASSWORD`、`MYSQL_DATABASE`、`SPRING_DATASOURCE_URL/USERNAME/PASSWORD` - 将初始化 SQL 放到 `supply-chain-backend/sql/init.sql` - 后端实际端口为 `8081`,需将 compose 中的 `8080:8080` 调整为 `8081:8081` ```bash cd supply-chain-backend docker compose up -d --build ``` --- ## 📷 项目预览 ### 管理后台 | 管理登录 | 要货审核 | |:---:|:---:| | ![管理登录](docs/screenshots/管理登录.png) | ![要货审核](docs/screenshots/要货审核.png) | | 询价管理 | 询价对比 | |:---:|:---:| | ![询价管理](docs/screenshots/询价管理.png) | ![询价对比](docs/screenshots/询价对比.png) | | 采购履约 | 异常处理 | |:---:|:---:| | ![采购履约](docs/screenshots/采购履约.png) | ![异常处理](docs/screenshots/异常处理.png) | | 商品管理 | | |:---:|:---:| | ![商品管理](docs/screenshots/商品管理.png) | | ### 微信小程序/H5(供应商/门店端) | 登录 | 供应商询价 | |:---:|:---:| | ![登录](docs/screenshots/登录.png) | ![供应商询价](docs/screenshots/供应商询价.png) | | 门店要货 | | |:---:|:---:| | ![门店要货](docs/screenshots/门店要货.png) | | --- ## 📄 开源协议 本项目基于 [Apache License 2.0](LICENSE) 开源。