依据: 《商城服务协议功能需求.md》v1.0、《商城服务协议技术方案.md》v1.0
前端规范:doc/前端设计/前端设计.md
原型参考: 同目录Snipaste_2026-05-28_15-59-09.jpg(启用 + 富文本 + 提交)
范围: 仅 ruoyi-ui 平台管理端 单页配置;C 端注册/登录勾选 不在 ruoyi-ui 实现。
实现状态: 页面与 API 封装已落地,待后端/agri/mallServiceAgreement联调。
| 项 | 说明 |
|---|---|
| 框架 | Vue 2 + Element UI |
| 请求 | @/utils/request |
| 参考页面 | merchantEntryAgreement/index.vue(同构单页协议配置) |
| 与入驻协议关系 | UI 与交互同构,API 路径与权限标识不同 |
| 启用字段 | "0" / "1" |
| 类型 | 路径 | 说明 |
|---|---|---|
| 页面 | ruoyi-ui/src/views/agri/content/mallServiceAgreement/index.vue |
服务协议配置 + 预览 |
| API | ruoyi-ui/src/api/agri/mallServiceAgreement.js |
GET / PUT |
组件 name: MallServiceAgreement
| 菜单名称 | 组件路径 | 路由 path(建议) | 权限标识 |
|---|---|---|---|
| 商城服务协议 | agri/content/mallServiceAgreement/index |
mallServiceAgreement |
agri:mallServiceAgreement:query |
上级菜单: 农资管理 → 内容管理
| 按钮权限 | 标识 |
|---|---|
| 保存 | agri:mallServiceAgreement:edit |
商城服务协议(单页 · el-card)
├── 卡片标题 + 说明文案
│ └── 「关闭启用后 C 端无法新注册;已注册会员登录不再要求勾选本协议」(SP4)
├── 表单
│ ├── 协议标题 agreementTitle
│ ├── 协议版本号 versionLabel
│ ├── 是否启用 enableFlag
│ ├── 最后更新 updateBy / updateTime(只读)
│ ├── 协议内容 content(Editor)
│ └── 预览 + 保存
└── 预览弹窗
| 原型(Snipaste) | 本实现 |
|---|---|
| 标题「服务协议」 | 卡片 header「商城服务协议」 |
| 「启用协议」开关 | 「是否启用」单选(是/否),值 1/0 |
| 顶部说明段落 | 卡片 header 右侧灰色说明(SP4 文案) |
| 「内容」富文本 + 工具栏 | 全局 Editor 组件 |
| 「提交」按钮 | 「保存」按钮 + agri:mallServiceAgreement:edit |
额外字段(功能需求 §4~§5):协议标题、版本号、最后更新人/时间、预览按钮。
| 组件 | 用途 |
|---|---|
Editor |
富文本,min-height="280" |
校验工具 isBlankHtml 与入驻协议页 相同实现(可后续抽公共 util,本期不抽以保持简单)。
基路径: /agri/mallServiceAgreement
| 前端方法 | HTTP | 路径 | 说明 |
|---|---|---|---|
getMallServiceAgreement |
GET | / |
加载配置 |
saveMallServiceAgreement |
PUT | / |
保存配置 |
与入驻协议一致,表字段对应:
| 前端 | 后端 |
|---|---|
| agreementTitle | agreement_title |
| versionLabel | version_label |
| content | content |
| enableFlag | enable_flag |
{
"agreementTitle": "农资商城用户服务协议",
"versionLabel": "v1.0",
"content": "<p>...</p>",
"enableFlag": "1",
"remark": ""
}
| 规则 | 说明 |
|---|---|
| 标题必填 | AP 对齐:请输入协议标题 |
| 启用=是 时正文必填 | 启用状态下请填写协议内容 |
| 空白 HTML | 协议内容不能为空 |
enableFlag 切换时触发 content 字段重新校验。
v-hasPermi="['agri:mallServiceAgreement:edit']"
| 端 | 接口 | ruoyi-ui 本期 |
|---|---|---|
| 平台 | /agri/mallServiceAgreement |
✅ |
| C 端 | GET /api/member/serviceAgreement |
❌ 另端 |
| 会员注册 | POST /api/member/register + agreementAccepted |
❌ 会员模块 |
| 会员登录 | POST /api/member/login + agreementAccepted(协议启用时) |
❌ 会员模块 |
SP4 前端说明(配置页文案): 协议 enableFlag=0 时,C 端不可新注册;已注册且会员启用的用户登录 不要求 勾选——该逻辑在 C 端/会员 Facade 实现,平台页仅展示提示。
| 项 | 入驻协议 | 服务协议(本模块) |
|---|---|---|
| 页面路径 | .../merchantEntryAgreement/ |
.../mallServiceAgreement/ |
| API | /agri/merchantEntryAgreement |
/agri/mallServiceAgreement |
| 权限前缀 | agri:merchantEntryAgreement:* |
agri:mallServiceAgreement:* |
| 卡片说明文案 | 拦新 商家入驻 | 拦新 会员注册 + 老用户登录不勾选 |
| 默认标题(SQL 种子) | 农资商城商家入驻协议 | 农资商城用户服务协议 |
页面 .vue 结构 intentionally 同构,便于维护。
协议历史、勾选存证、C 端注册/登录页、下单页二次协议、多语言。
| 版本 | 日期 | 说明 |
|---|---|---|
| v1.0 | 2026-05 | 首版:单页配置;对齐原型与功能需求 v1.0 |
文档版本:v1.0 · ruoyi-ui · 关联《商城服务协议功能需求.md》v1.0