农易富 · 农产品收购交易平台(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
适配 电脑 PC 与触摸屏(触摸屏过磅页大按钮 + 数字键盘)

目录结构

backend/AgriculturalPlatform.Api/   # 后端 API
  ├── Models/       # 实体模型(组织/用户/农户/品种/收购单/支付/发票)
  ├── Data/         # DbContext 与种子数据
  ├── Dtos/         # 接口传输对象
  ├── Services/     # JWT、数据权限、单号生成、当前用户
  └── Controllers/  # Auth/Orgs/Users/Farmers/Products/Purchases/Payments/Invoices/Reports/Dashboard
frontend/           # 前端
  └── src/
      ├── api/          # Axios 封装与全部接口
      ├── views/        # 登录、工作台、大屏、各业务模块页面
      ├── layouts/      # 主布局(侧边菜单)
      └── stores/       # Pinia 状态
docker-compose.yml  # 可选:本地 MySQL 8 开发环境

快速开始

1. 准备数据库(在线 MySQL 或本地)

  • 在线 MySQL:将下方连接串改为你的在线数据库地址(首次启动会自动建库建表并写入演示数据)。

2. 后端

cd backend/AgriculturalPlatform.Api
# 修改 appsettings.json 中 ConnectionStrings:Default 为你的 MySQL 连接串
dotnet restore
dotnet run

后端默认地址:http://localhost:5246OpenAPI 文档:http://localhost:5246/openapi/v1.json)。

3. 前端

cd frontend
npm install
npm run dev

前端默认地址:http://localhost:5173,已配置 /api 代理到后端。

4. 登录

账号 密码 角色
admin 123456 系统管理员
company 123456 公司管理员
station1 / station2 123456 收购站员工
individual 123456 收购个体

功能清单

  • 农户管理:农户档案(身份证/联系方式/村组/银行账户)、信用评分、冻结/启用、交易统计。
  • 过磅称重:一次过磅(毛重)→ 二次回皮(皮重)自动计算净重与金额;支持 PC 列表操作与触摸屏大字键盘过磅;进行中单据实时展示。
  • 电子支付:按收购单或批量结算,微信/支付宝/银行转账/现金四种方式,支付确认与退款,农户应收/已付/未付汇总。
  • 反向开票:收购方向农户开具"农产品收购发票"(自产农产品免税,税率 0%),支持按已结算收购单一键开票、发票作废(红冲)。
  • 统计报表:收购汇总(按日/月/品种/农户/收购方)、付款统计(方式/状态)、开票统计,支持图表与 CSV 导出。
  • 可视化大屏:今日/本月 KPI、14 天趋势、品种占比、农户排行、收购方对比、实时过磅,30 秒自动刷新。
  • 组织与用户:公司 / 收购站 / 收购个体三级组织;四类角色;数据权限隔离(公司只看本公司及旗下站点数据)。

数据库配置说明

后端启动时会执行 EnsureCreated + Seed:数据库不存在则自动建表,空库自动写入演示数据(组织、账号、品种、农户及近 30 天收购/付款/发票历史)。

生产建议改用 EF Core Migration 管理表结构。

常见问题

  • 后端启动报数据库连接失败:检查 appsettings.jsonConnectionStrings:Default,MySQL 需允许远程连接(主机防火墙/云数据库白名单放行)。
  • 前端接口 401:登录过期,重新登录即可。
  • 想换端口:后端在 Properties/launchSettings.json 修改后,同步修改 frontend/vite.config.ts 的代理 target 与后端 appsettings.jsonFrontendUrl
S
Description
F8WebAI版
Readme
292 KiB
Languages
Vue 48.9%
C# 40.8%
TypeScript 7.1%
JavaScript 1.1%
HTML 1%
Other 1.1%