Files

91 lines
5.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 农易富 · 农产品收购交易平台(BS 版)
基于主干信息 F8 农产品收购业务的产品化网页版(Browser/Server)平台,服务于**收购公司、收购站、收购个体**,向**农户**收购农产品,覆盖"农户管理 → 过磅称重 → 电子支付 → 反向开票 → 统计报表 → 可视化大屏"全业务链路。
> ⚡ **快速启动请直接阅读《项目说明》**(项目根目录),含完整启动命令、端口约定、常见坑与关键文件索引。
## 技术栈
| 端 | 技术 |
| --- | --- |
| 后端 | C# / .NET 10ASP.NET Core Web API、EF Core 10、JWT、BCrypt |
| 数据库 | 在线 MySQL 8Pomelo 官方分支 `Microting.EntityFrameworkCore.MySql`,支持 EF Core 10 |
| 前端 | Vue 3 + Vite + TypeScript + Pinia + Vue Router + Element Plus + ECharts + Axios + dayjs + lunar-javascript |
| 云服务 | 阿里云 OSS 附件存储(`Storage:UseOss`)、阿里云市场身份证 OCR`Ocr:Provider=aliyun` |
| 适配 | 电脑 PC 与触摸屏(触摸屏过磅页大按钮 + 数字键盘) |
## 目录结构
```
backend/AgriculturalPlatform.Api/ # 后端 API(端口 9002
├── Models/ # 实体模型(组织/用户/农户/品种/收购单/支付/发票/菜单字典)
├── Data/ # DbContext、种子数据、幂等 Schema 迁移
├── Dtos/ # 接口传输对象
├── Services/ # JWT、数据权限、单号生成、当前用户、OCR、OSS 存储、天气
└── Controllers/ # Auth/Orgs/Users/Farmers/Products/Purchases/Payments/Invoices/Reports/Dashboard/Menus/Dicts/...
frontend/ # 前端(dev server 端口 9000
└── src/
├── api/ # Axios 封装与全部接口
├── views/ # 登录、工作台、大屏、各业务模块页面
├── layouts/ # 主布局(侧边菜单、顶栏日历/天气/Logo)
├── composables/ # 共享 composableuseWeather 等)
└── stores/ # Pinia 状态
scripts/ # 启动/测试脚本(start-backend.ps1 等)
docker-compose.yml # 可选:本地 MySQL 8 开发环境
```
## 快速开始
> 全部命令在**项目根目录**的 PowerShell 中执行。详见《项目说明》。
### 后端(端口 9002
```powershell
dotnet build backend/AgriculturalPlatform.Api/AgriculturalPlatform.Api.csproj -c Debug
powershell -ExecutionPolicy Bypass -File scripts/start-backend.ps1
```
> ⚠️ 启动脚本为 `--no-build`**修改后端代码后必须先 build**,否则运行的是旧 DLL(曾因此导致登录权限接口 401)。
### 前端(端口 9000
```powershell
Start-Process -FilePath "npm.cmd" -ArgumentList @("run","dev") -WorkingDirectory "frontend" -WindowStyle Hidden
```
浏览器访问 `http://localhost:9000``/api``/uploads` 已代理到 `http://localhost:9002`
### 登录
| 账号 | 密码 | 角色 |
| --- | --- | --- |
| admin | 123456 | 系统管理员 |
| company | 123456 | 公司管理员 |
| station1 / station2 | 123456 | 收购站员工 |
| individual | 123456 | 收购个体 |
## 功能清单
- **农户管理**:农户档案(身份证 OCR 识别/联系方式/村组/银行账户)、信用评分、冻结/启用、交易统计、手机传图上传。
- **过磅称重**:一次过磅(毛重)→ 二次回皮(皮重)自动计算净重与金额;支持 PC 列表操作与**触摸屏大字键盘**过磅(`/weighing/touch`);进行中单据实时展示;金额大额自动以万元显示。
- **电子支付**:按收购单或批量结算,微信/支付宝/银行转账/现金四种方式,支付确认与退款,农户应收/已付/未付汇总。
- **反向开票**:收购方向农户开具"农产品收购发票"(自产农产品免税,税率 0%),支持按已结算收购单一键开票、发票作废(红冲)。
- **统计报表**:收购汇总(按日/月/品种/农户/收购方)、付款统计(方式/状态)、开票统计,支持图表与 CSV 导出(月份分组在内存中排序,避免 SQLite/MySQL 字符串排序问题)。
- **可视化大屏**:今日/本月 KPI、14 天趋势、品种占比、农户排行、收购方对比、实时过磅,30 秒自动刷新;日期区间选择器深色主题。
- **组织与用户**:公司 / 收购站 / 收购个体三级组织;四类角色;**数据权限隔离**(公司只看本公司及旗下站点数据)。
- **系统管理**:角色权限、菜单管理、数据字典(含系统 Logo 图标 `system_logo` 配置)。
- **通知公告**:站内公告发布与列表;**关于系统** 页面。
- **顶栏**:动态日历(农历/节气)、天气(IP 定位 + Open-Meteo,全局共享 composable)、Logo 图标按字典配置。
## 数据库配置说明
在线 MySQL 连接串见 `backend/AgriculturalPlatform.Api/appsettings.json``ConnectionStrings:Default`。后端启动时执行 `EnsureCreated + Seed + SchemaMigrator`:数据库不存在则自动建表,空库自动写入演示数据(组织、账号、品种、农户及近 30 天收购/付款/发票历史),迁移补丁幂等可重复执行。
## 常见问题
- **后端启动报数据库连接失败**:检查 `appsettings.json``ConnectionStrings:Default`,MySQL 需允许远程连接(主机防火墙/云数据库白名单放行)。
- **登录后立刻被弹回登录页**:多为 `/api/menus/my` 返回 401。若后端代码有改动而**未重新编译**,会命中旧 DLL 问题——执行 `dotnet build` 后重启后端。
- **想换端口**:后端 `Properties/launchSettings.json``appsettings.json``Server:LanPort` 与前端 `vite.config.ts` 的 proxy target 需同步修改。
- **PowerShell 中文路径乱码 / git commit 中文报错**:使用相对路径、英文提交信息。
- **git 推送要认证**:远程 `https://github.bbitcn.net/fanhongcai/F8WebAI.git`,自动化终端用内嵌凭据 URL 推送(见《项目说明》)。