You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 KiB

分段招标管理

模块编码bidding 端侧Web专属仅医院账号 关联文档01-模块划分 §4.2 / 02-功能清单-医院 §2 / 03-业务流转逻辑-医院 §2 / 05-接口规范 §9.2 强制规范遵循 07-前端界面开发规范.md

功能概览

项目 说明
菜单名称 分段招标管理
子菜单 招标计划、标段管理、供应商管理、招标发布、投标管理、评标管理、定标审批、中标公示
功能编号 HO-BD-01 ~ HO-BD-09
权限编码前缀 bidding:plan:* / bidding:section:* / bidding:supplier:* / bidding:award:*

重要:分段招标管理仅医院账号可用,物业公司不可操作此模块。


页面1招标计划页

页面编号HO-BD-01-P01 端侧归属Web专属 页面路径/bidding/plans

界面布局

┌──────────────────────────────────────────────────────────────────┐
│ [面包屑] 分段招标管理 > 招标计划                                    │
├──────────────────────────────────────────────────────────────────┤
│ [查询条件区]                                                      │
│ 计划名称[____] 状态[▼] 招标方式[▼]                  [查询] [重置]  │
├──────────────────────────────────────────────────────────────────┤
│ [操作栏]  [新增招标计划]                                          │
├──────────────────────────────────────────────────────────────────┤
│ [列表区]                                                          │
│ 序号| 计划名称      | 招标方式 | 标段数 | 状态   | 创建时间 | 操作 │
│ 1  | 2026年保洁招标 | 公开招标 | 3     | 投标中 | 04-01   | 查看  │
│ 2  | 2026年维修招标 | 邀请招标 | 2     | 计划中 | 04-10   | 编辑  │
├──────────────────────────────────────────────────────────────────┤
│ [分页]  共8条                                                     │
└──────────────────────────────────────────────────────────────────┘

表单字段(新增/编辑页)

字段名 控件类型 必填 默认值 数据来源 校验规则
计划名称 文本输入 自填 最大100字
关联项目 下拉单选 本医院院区
招标方式 下拉单选 固定选项 公开招标/邀请招标/竞争性谈判
预算金额 数字输入 自填 >0
投标截止日期 日期时间 自填 晚于当前时间
计划描述 多行文本 自填 最大500字

操作按钮

按钮 权限编码 位置 显示条件 说明
新增招标计划 bidding:plan:create 操作栏 始终
编辑 bidding:plan:update 行操作 状态=计划中
查看 bidding:plan:view 行操作 始终

API端点

页面操作 API路径 方法 说明
列表查询 /api/v1/bidding-plans GET
新增 /api/v1/bidding-plans POST
编辑 /api/v1/bidding-plans/{id} PUT

交互流程要求

  1. 页面加载流程:进入页面 → 调用招标计划列表API → 渲染列表
  2. 查询/筛选交互流程:填写筛选条件 → 点击"查询"按钮 → 调用API携带筛选参数 → 刷新列表;点击"重置"清空条件重新加载
  3. 表单填写与提交流程:点击"新增招标计划" → 弹出新增弹窗(或跳转新增页)→ 填写表单 → 提交保存;点击"编辑"(状态=计划中)→ 弹出编辑弹窗 → 修改后保存
  4. 弹窗/抽屉交互流程:新增/编辑弹窗el-dialog含招标计划表单字段
  5. 行内操作流程:点击"查看"跳转计划详情页;点击"编辑"弹出编辑弹窗
  6. 异常与错误处理API请求失败显示el-message错误提示投标截止日期早于当前时间提交时提示错误
  7. 联动/级联交互状态筛选与列表数据联动筛选后分页重置为第1页
  8. 权限控制交互表现:无创建权限隐藏"新增招标计划"按钮;状态非"计划中"时隐藏"编辑"按钮

前端硬性约束

  • H1 防重复提交(强制): "查询"/"新增招标计划"按钮请求期间置 loading+disabled 状态;行操作(编辑/查看)点击后禁用该行操作直至请求完成;翻页时 abort 未完成请求
  • H2 超时控制(强制): 列表查询(GET)超时 15s表单提交(POST)超时 30s超过阈值提示"请求超时,请稍后重试"
  • H3 操作确认(强制): 本页面无危险操作需二次确认
  • H5 权限隔离(建议): 返回空列表展示"暂无招标计划"code=403 时展示"无权限访问"
  • H6 批量限制(建议): 本页面无批量导出操作
  • H8 反馈机制(建议): 操作成功 successduration=2s+ 静默刷新;失败 errorduration=0网络异常显示重试按钮
  • 弹窗表单(新增/编辑招标计划)额外约束:
    • H1 防重复提交(强制): 弹窗内提交按钮 loading+disabled
    • H2 超时控制(强制): 提交(POST/PUT)超时 30s
    • H4 脏数据检测(强制): 弹窗内表单修改后尝试关闭时拦截确认
    • H8 反馈机制(建议): 成功关闭弹窗 + 刷新 + success(2s);失败 error(0)

组件规范

元素 组件 配置参数
计划名称输入 el-input placeholder="请输入计划名称"clearablemaxlength=100
状态选择 el-select placeholder="请选择状态"clearable
招标方式选择 el-select placeholder="请选择招标方式"clearableoptions: 公开招标/邀请招标/竞争性谈判
查询按钮 el-button type="primary"icon="Search"
重置按钮 el-button type="default"icon="Refresh"
新增招标计划按钮 el-button type="primary"icon="Plus"
计划列表 el-table stripeborderrow-key="id"
状态列 el-tag :type根据状态配色计划中=info投标中=warning已完成=success
编辑按钮 el-button type="primary"size="small"link样式
查看按钮 el-button type="default"size="small"link样式
新增/编辑弹窗 el-dialog title="新增招标计划/编辑招标计划"width="600px"
关联项目选择 el-select placeholder="请选择关联项目"filterable
预算金额 el-input-number :min=0.01:precision=2controls-position="right"
投标截止日期 el-date-picker type="datetime"placeholder="请选择投标截止日期"
计划描述 el-input type="textarea":rows=4maxlength=500show-word-limit

校验规则

字段 规则 错误提示
计划名称 requiredmaxlength=100 请输入计划名称 / 计划名称不能超过100个字符
关联项目 required 请选择关联项目
招标方式 required 请选择招标方式
预算金额 required>0 请输入预算金额 / 预算金额必须大于0
投标截止日期 required晚于当前时间 请选择投标截止日期 / 截止日期必须晚于当前时间

响应式布局

断点 布局调整
≥1280px桌面端 查询条件区单行排列,列表全字段展示
1024-1279pxPad横屏 查询条件区双行排列,隐藏"创建时间"列编辑弹窗宽度90%
768-1023pxPad竖屏 查询条件区纵向堆叠,仅显示计划名称/状态筛选,列表显示核心字段(计划名称/招标方式/状态/操作),弹窗全屏宽度

页面2标段管理页

页面编号HO-BD-02-P01 端侧归属Web专属 页面路径/bidding/sections

列表字段

序号 字段名 列宽 支持排序 说明
1 标段名称 150px
2 所属计划 150px
3 标段范围 200px
4 预算金额 100px
5 投标供应商数 100px
6 状态 80px
7 操作 100px 编辑/查看

表单字段(新增/编辑弹窗)

字段名 控件类型 必填 默认值 数据来源 校验规则
标段名称 文本输入 自填 最大50字
标段范围 多行文本 自填 最大500字
预算金额 数字输入 自填 >0
资质要求 多行文本 自填
评标标准 多行文本 自填

交互流程要求

  1. 页面加载流程:进入页面(从招标计划详情进入)→ 调用标段列表API → 渲染列表
  2. 查询/筛选交互流程:不适用(按所属计划自动过滤)
  3. 表单填写与提交流程:点击"新增标段"(操作栏)→ 弹出新增弹窗 → 填写标段信息 → 保存;点击"编辑" → 弹出编辑弹窗 → 修改后保存
  4. 弹窗/抽屉交互流程:新增/编辑标段弹窗el-dialog含标段名称、范围、预算金额、资质要求、评标标准字段
  5. 行内操作流程:点击"编辑"弹出编辑弹窗;点击"查看"跳转标段详情
  6. 异常与错误处理保存失败显示el-message错误提示预算金额为0时阻止提交
  7. 联动/级联交互:所属计划与标段数据联动,切换计划自动加载对应标段
  8. 权限控制交互表现:无编辑权限时行操作仅显示"查看"

前端硬性约束

  • H1 防重复提交(强制): "新增标段"/行操作(编辑/查看)按钮请求期间置 loading+disabled 状态;操作期间禁用该行其他操作
  • H2 超时控制(强制): 列表查询(GET)超时 15s标段保存(POST)超时 30s超过阈值提示"请求超时,请稍后重试"
  • H3 操作确认(强制): 本页面无危险操作需二次确认
  • H5 权限隔离(建议): 返回空列表展示"暂无标段数据"code=403 时展示"无权限访问"
  • H8 反馈机制(建议): 操作成功 successduration=2s+ 静默刷新列表;失败 errorduration=0网络异常显示重试按钮
  • 弹窗表单(新增/编辑标段)额外约束:
    • H1 防重复提交(强制): 弹窗内提交按钮 loading+disabled
    • H2 超时控制(强制): 提交(POST)超时 30s
    • H4 脏数据检测(强制): 弹窗内表单修改后尝试关闭时拦截确认
    • H8 反馈机制(建议): 成功关闭弹窗 + 刷新 + success(2s);失败 error(0)

组件规范

元素 组件 配置参数
标段列表 el-table stripeborderrow-key="id"
状态列 el-tag :type根据状态配色
编辑按钮 el-button type="primary"size="small"link样式
查看按钮 el-button type="default"size="small"link样式
新增/编辑弹窗 el-dialog title="新增标段/编辑标段"width="600px"
标段名称输入 el-input placeholder="请输入标段名称"maxlength=50
标段范围 el-input type="textarea":rows=3maxlength=500show-word-limit
预算金额 el-input-number :min=0.01:precision=2controls-position="right"
资质要求 el-input type="textarea":rows=3
评标标准 el-input type="textarea":rows=3

校验规则

字段 规则 错误提示
标段名称 requiredmaxlength=50 请输入标段名称 / 标段名称不能超过50个字符
标段范围 requiredmaxlength=500 请输入标段范围 / 标段范围不能超过500个字符
预算金额 required>0 请输入预算金额 / 预算金额必须大于0

响应式布局

断点 布局调整
≥1280px桌面端 列表全字段展示,操作列右对齐
1024-1279pxPad横屏 隐藏"标段范围"列编辑弹窗宽度90%
768-1023pxPad竖屏 仅显示标段名称/预算金额/状态/操作核心字段,弹窗全屏宽度

页面3供应商管理页

页面编号HO-BD-03-P01 端侧归属Web专属 页面路径/bidding/suppliers

列表字段

序号 字段名 列宽 支持排序 说明
1 供应商名称 150px
2 联系人 80px
3 联系电话 120px
4 资质状态 80px 已审核/待审核/黑名单
5 合作次数 80px
6 操作 140px 编辑/审核/拉黑

表单字段(新增/编辑弹窗)

字段名 控件类型 必填 默认值 数据来源 校验规则
供应商名称 文本输入 自填 最大100字
统一社会信用代码 文本输入 自填 18位
联系人 文本输入 自填
联系电话 文本输入 自填 手机号格式
地址 文本输入 自填
资质文件 文件上传 上传 ≤5个文件
备注 多行文本 自填 最大200字

操作按钮

按钮 权限编码 位置 显示条件 说明
新增供应商 bidding:supplier:create 操作栏 始终
编辑 bidding:supplier:update 行操作 始终
资质审核 bidding:supplier:approve 行操作 资质状态=待审核 通过/驳回
拉黑/移出黑名单 bidding:supplier:update 行操作 始终 黑名单供应商不可投标

API端点

页面操作 API路径 方法 说明
列表查询 /api/v1/suppliers GET
新增 /api/v1/suppliers POST
资质审核 /api/v1/suppliers/{id}/audit POST
拉黑 /api/v1/suppliers/{id}/blacklist PUT

交互流程要求

  1. 页面加载流程:进入页面 → 调用供应商列表API → 渲染列表,黑名单供应商行灰色标记
  2. 查询/筛选交互流程:支持按供应商名称、资质状态筛选,查询后刷新列表
  3. 表单填写与提交流程:点击"新增供应商" → 弹出新增弹窗 → 填写供应商信息 → 保存;点击"编辑" → 弹出编辑弹窗 → 修改后保存
  4. 弹窗/抽屉交互流程:新增/编辑供应商弹窗el-dialog资质审核弹窗选择通过/驳回驳回需填写原因拉黑确认弹窗el-message-box
  5. 行内操作流程:点击"资质审核"弹出审核弹窗;点击"拉黑"弹出确认弹窗,确认后状态变更;点击"移出黑名单"恢复正常状态
  6. 异常与错误处理:统一社会信用代码重复时提示"该供应商已存在";拉黑后该供应商不可投标,操作时二次确认提醒
  7. 联动/级联交互:资质状态与操作按钮联动(待审核显示审核按钮,黑名单显示移出黑名单按钮)
  8. 权限控制交互表现:无审核权限隐藏"资质审核"按钮;无拉黑权限隐藏"拉黑/移出黑名单"按钮

前端硬性约束

  • H1 防重复提交(强制): "新增供应商"/行操作(编辑/资质审核/拉黑)按钮请求期间置 loading+disabled 状态;操作期间禁用该行其他操作
  • H2 超时控制(强制): 列表查询(GET)超时 15s提交/审核(POST)超时 30s超过阈值提示"请求超时,请稍后重试"
  • H3 操作确认(强制): "拉黑"前弹出 confirm(确定要将供应商"${supplierName}"加入黑名单?加入后该供应商将无法参与任何投标。, type='error')"移出黑名单"前弹出 confirm("确定要将该供应商移出黑名单?", type='warning')"资质审核-驳回"前弹出 confirm + 驳回原因输入框(必填)
  • H5 权限隔离(建议): 返回空列表展示"暂无供应商数据"code=403 时展示"无权限访问"
  • H7 文件上传(建议): 资质文件上传限制单个文件≤10MB、总数≤9个超出时提示"单文件不超过10MB附件总数不超过9个"
  • H8 反馈机制(建议): 操作成功 successduration=2s+ 静默刷新列表;失败 errorduration=0网络异常显示重试按钮
  • 弹窗表单(新增/编辑供应商)额外约束:
    • H1 防重复提交(强制): 弹窗内提交按钮 loading+disabled
    • H2 超时控制(强制): 提交(POST)超时 30s
    • H4 脏数据检测(强制): 弹窗内表单修改后尝试关闭时拦截确认
    • H8 反馈机制(建议): 成功关闭弹窗 + 刷新 + success(2s);失败 error(0)
  • 弹窗表单(资质审核)额外约束:
    • H1 防重复提交(强制): 弹窗内确认按钮 loading+disabled
    • H2 超时控制(强制): 审核(POST)超时 30s
    • H3 操作确认(强制): 已由外层 H3 覆盖(驳回需原因)
    • H4 脏数据检测(强制): 审核结果/驳回原因修改后尝试关闭时拦截
    • H8 反馈机制(建议): 成功关闭弹窗 + 刷新 + success(2s);失败 error(0)

组件规范

元素 组件 配置参数
供应商列表 el-table stripeborder:row-class-name黑名单行灰色
资质状态列 el-tag :type根据状态配色已审核=success待审核=warning黑名单=danger
新增供应商按钮 el-button type="primary"icon="Plus"
编辑按钮 el-button type="primary"size="small"link样式
资质审核按钮 el-button type="warning"size="small"link样式
拉黑按钮 el-button type="danger"size="small"link样式
新增/编辑弹窗 el-dialog title="新增供应商/编辑供应商"width="600px"
统一社会信用代码 el-input placeholder="请输入统一社会信用代码"maxlength=18
联系电话 el-input placeholder="请输入联系电话"
资质文件上传 el-upload action="/api/v1/files/upload":limit=5:file-list.sync
资质审核弹窗 el-dialog title="资质审核"width="500px"
审核结果 el-radio-group 通过/驳回单选
审核驳回原因 el-input type="textarea":rows=3v-if="审核结果=驳回"

校验规则

字段 规则 错误提示
供应商名称 requiredmaxlength=100 请输入供应商名称 / 供应商名称不能超过100个字符
统一社会信用代码 requiredpattern=/^[0-9A-Z]{18}$/ 请输入统一社会信用代码 / 统一社会信用代码格式不正确18位字母数字
联系人 required 请输入联系人
联系电话 requiredpattern=/^1[3-9]\d{9}$/ 请输入联系电话 / 联系电话格式不正确
审核结果 required审核时 请选择审核结果
审核驳回原因 required审核驳回时 请输入驳回原因

响应式布局

断点 布局调整
≥1280px桌面端 列表全字段展示,操作列右对齐
1024-1279pxPad横屏 隐藏"合作次数"列,操作收入"更多"下拉
768-1023pxPad竖屏 仅显示供应商名称/资质状态/操作核心字段,弹窗全屏宽度

页面4招标发布页

页面编号HO-BD-04-P01 端侧归属Web专属 页面路径/bidding/publish

操作流程

选择招标计划 → 确认标段 → 上传招标文件 → 邀请供应商(邀请招标时) → 发布

表单字段

字段名 控件类型 必填 默认值 数据来源 校验规则
招标计划 下拉单选 计划中/待发布的计划
招标公告 多行文本 自填
招标文件 文件上传 上传 ≤10个文件
邀请供应商 下拉多选 条件 供应商列表(已审核) 邀请招标时必填

交互流程要求

  1. 页面加载流程:进入页面 → 加载可选招标计划(状态=待发布)→ 渲染发布表单
  2. 查询/筛选交互流程:不适用
  3. 表单填写与提交流程:选择招标计划 → 自动加载关联标段信息 → 确认标段 → 上传招标文件 → 填写招标公告 → (邀请招标时)选择邀请供应商 → 点击"发布" → 二次确认后调用发布API → 发布成功跳转招标计划页
  4. 弹窗/抽屉交互流程发布确认弹窗el-message-box提示"确认发布招标?发布后不可撤回"招标文件上传使用el-upload支持预览已上传文件
  5. 行内操作流程:不适用(发布页为表单交互)
  6. 异常与错误处理:招标文件未上传时阻止发布;邀请招标未选择供应商时提示"请选择邀请供应商"发布失败显示el-message错误提示
  7. 联动/级联交互:招标方式为"邀请招标"时显示邀请供应商选择(必填);招标方式为"公开招标"时隐藏;选择招标计划后自动加载标段信息
  8. 权限控制交互表现:无发布权限时隐藏"发布"按钮

前端硬性约束

  • H1 防重复提交(强制): "发布"按钮请求期间置 loading+disabled 状态;提交后禁用所有表单交互直至请求完成
  • H2 超时控制(强制): 表单提交(POST)超时 30s文件上传超时 60s超过阈值提示"请求超时,请稍后重试"
  • H3 操作确认(强制): "发布"前弹出 confirm("确定要发布该招标?发布后不可撤回,供应商将可查看并投标。", type='warning')
  • H4 脏数据检测(强制): 页面加载时 deep clone 初始表单数据为 _originData监听表单变化维护 isDirty 标志;用户未保存尝试离开时通过 beforeRouteLeave 拦截并弹窗确认
  • H7 文件上传(建议): 招标文件上传限制单个文件≤10MB、总数≤9个超出时提示"单文件不超过10MB文件总数不超过9个";支持 .pdf/.doc/.docx
  • H8 反馈机制(建议): 发布成功显示 successduration=2s+ 延迟跳转招标计划页;失败显示 errorduration=0网络异常时显示重试按钮

组件规范

元素 组件 配置参数
招标计划选择 el-select placeholder="请选择招标计划"filterable@change加载标段信息
标段确认区 el-table :data=关联标段stripeborderdisabled不可编辑
招标公告 el-input type="textarea":rows=6placeholder="请输入招标公告"
招标文件上传 el-upload action="/api/v1/files/upload":limit=10accept=".pdf,.doc,.docx"drag拖拽上传:on-preview预览
邀请供应商 el-select placeholder="请选择供应商"multiplefilterablecollapse-tagsv-if="招标方式=邀请招标"
发布按钮 el-button type="primary"icon="Promotion":loading提交中

校验规则

字段 规则 错误提示
招标计划 required 请选择招标计划
招标公告 required 请输入招标公告
招标文件 required≤10个 请上传招标文件 / 招标文件不能超过10个
邀请供应商 required邀请招标时 请选择邀请供应商

响应式布局

断点 布局调整
≥1280px桌面端 表单双列布局,标段确认区全宽展示
1024-1279pxPad横屏 表单单列布局,标段确认区全宽展示
768-1023pxPad竖屏 表单单列布局文件上传区域宽度100%,邀请供应商选择全宽展示

页面5投标管理页

页面编号HO-BD-05-P01 端侧归属Web专属 页面路径/bidding/bids

列表字段

序号 字段名 列宽 支持排序 说明
1 标段名称 120px
2 供应商 120px
3 投标时间 140px
4 投标金额 100px
5 投标文件 100px 下载查看
6 状态 80px 已投标/已开标

交互流程要求

  1. 页面加载流程:进入页面 → 调用投标列表API → 渲染列表,默认按投标时间倒序
  2. 查询/筛选交互流程:支持按标段名称、供应商、状态筛选
  3. 表单填写与提交流程:不适用(医院端仅查看投标数据,投标由供应商提交)
  4. 弹窗/抽屉交互流程:点击投标文件"下载查看" → 新窗口打开/下载投标文件
  5. 行内操作流程:点击投标文件列链接下载查看
  6. 异常与错误处理:投标文件下载失败提示"文件下载失败,请重试"列表为空显示el-empty
  7. 联动/级联交互:标段选择后自动过滤该标段下的投标数据
  8. 权限控制交互表现:医院账号仅查看,无操作按钮

前端硬性约束

  • H1 防重复提交(强制): 投标文件下载按钮点击后置 loading+disabled 状态直至下载完成
  • H2 超时控制(强制): 列表查询(GET)超时 15s文件下载超时 60s超过阈值提示"请求超时,请稍后重试"
  • H8 反馈机制(建议): 文件下载失败显示 errorduration=0网络异常时显示重试按钮列表加载成功静默刷新

组件规范

元素 组件 配置参数
投标列表 el-table stripeborder:default-sort="{prop: 'bidTime', order: 'descending'}"
状态列 el-tag :type根据状态配色已投标=info已开标=success
投标文件 el-link type="primary":underline=falseicon="Download"@click下载
标段筛选 el-select placeholder="请选择标段"clearablefilterable
供应商筛选 el-input placeholder="请输入供应商名称"clearable
状态筛选 el-select placeholder="请选择状态"clearable

校验规则

字段 规则 错误提示
(无表单校验)

响应式布局

断点 布局调整
≥1280px桌面端 列表全字段展示
1024-1279pxPad横屏 隐藏"投标文件"列(改为行操作下载按钮)
768-1023pxPad竖屏 仅显示标段名称/供应商/投标金额/状态核心字段

页面6评标管理页

页面编号HO-BD-06-P01 端侧归属Web专属 页面路径/bidding/evaluations

界面布局

┌──────────────────────────────────────────────────────────────────┐
│ [面包屑] 分段招标管理 > 评标管理                                    │
├──────────────────────────────────────────────────────────────────┤
│ [评标委员会]  [组建评标委员会]                                      │
│ 评标人1张三  评标人2李四  评标人3王五                         │
├──────────────────────────────────────────────────────────────────┤
│ [评分标准]  [设置评分标准]                                          │
│ 商务评分权重40%  技术评分权重40%  价格评分权重20%             │
├──────────────────────────────────────────────────────────────────┤
│ [评分录入]                                                         │
│ 供应商    | 商务分 | 技术分 | 价格分 | 总分 | 排名                  │
│ XX公司    | [___]  | [___]  | [___]  | —   | —                    │
│ YY公司    | [___]  | [___]  | [___]  | —   | —                    │
│                                              [提交评标结果]        │
└──────────────────────────────────────────────────────────────────┘

操作按钮

按钮 权限编码 位置 显示条件 说明
组建评标委员会 bidding:award:create 操作栏 始终
设置评分标准 bidding:award:create 操作栏 始终
提交评标结果 bidding:award:update 操作栏 始终

交互流程要求

  1. 页面加载流程:进入页面 → 调用评标数据API → 渲染评标委员会信息、评分标准、评分录入表格
  2. 查询/筛选交互流程:不适用
  3. 表单填写与提交流程:流程步骤:组建评标委员会 → 设置评分标准 → 录入各供应商评分 → 提交评标结果。组建委员会:点击按钮 → 弹窗选择评标人员 → 保存;设置评分标准:点击按钮 → 弹窗设置各维度权重 → 保存(权重之和必须=100%);录入评分:在评分表格中逐行填写各供应商的商务分/技术分/价格分 → 系统自动计算总分和排名 → 点击"提交评标结果"
  4. 弹窗/抽屉交互流程组建评标委员会弹窗el-dialog含评标人员多选设置评分标准弹窗el-dialog含各维度权重滑块/输入)
  5. 行内操作流程:评分录入表格中行内输入评分数据,总分和排名自动计算
  6. 异常与错误处理评分权重之和不等于100%时阻止保存;单项评分超出范围提示错误;提交评标结果时校验所有供应商评分是否填写完整
  7. 联动/级联交互:评分标准设置后,评分录入表头动态显示对应权重;各维度评分输入后自动计算总分和排名
  8. 权限控制交互表现:无评标权限时仅查看评分结果,不可编辑

前端硬性约束

  • H1 防重复提交(强制): "组建评标委员会"/"设置评分标准"/"提交评标结果"按钮请求期间置 loading+disabled 状态;评分录入期间锁定已填写行
  • H2 超时控制(强制): 数据加载(GET)超时 15s提交(POST)超时 30s超过阈值提示"请求超时,请稍后重试"
  • H3 操作确认(强制): "提交评标结果"前弹出 confirm("确定要提交评标结果?提交后将进入定标审批流程,不可修改评分。", type='warning')
  • H4 脏数据检测(强制): 页面加载时 deep clone 初始评分数据为 _originData监听评分变化维护 isDirty 标志;用户有未保存评分尝试离开时通过 beforeRouteLeave 拦截确认
  • H8 反馈机制(建议): 操作成功显示 successduration=2s+ 静默刷新页面状态;失败显示 errorduration=0网络异常显示重试按钮
  • 弹窗表单(组建委员会/设置标准)额外约束:
    • H1 防重复提交(强制): 弹窗内确认按钮 loading+disabled
    • H2 超时控制(强制): 提交(POST)超时 30s
    • H4 脏数据检测(强制): 弹窗内数据修改后尝试关闭时拦截确认
    • H8 反馈机制(建议): 成功关闭弹窗 + 刷新 + success(2s);失败 error(0)

组件规范

元素 组件 配置参数
评标步骤指示 el-steps :active=当前步骤,:space=200finish-status="success"
评标委员会区 el-card shadow="hover",含评标人员列表
组建评标委员会按钮 el-button type="primary"icon="User"size="small"
评标人员展示 el-tag v-for遍历评标人员closable
评分标准区 el-card shadow="hover",含各维度权重展示
设置评分标准按钮 el-button type="primary"icon="Setting"size="small"
评分录入表格 el-table :data=供应商评分数据stripebordershow-summary
商务分/技术分/价格分 el-input-number :min=0:max=100:precision=1controls-position="right"size="small"
总分列 自动计算 :formatter根据权重加权计算
排名列 自动计算 根据总分降序排列
提交评标结果按钮 el-button type="primary"icon="Check":loading提交中
组建评标委员会弹窗 el-dialog title="组建评标委员会"width="600px"
评标人员选择 el-select multiplefilterableplaceholder="请选择评标人员"
设置评分标准弹窗 el-dialog title="设置评分标准"width="500px"
权重输入 el-slider :min=0:max=100show-input:marks="{0:'0%', 50:'50%', 100:'100%'}"

校验规则

字段 规则 错误提示
评标人员 required≥3人 请选择评标人员 / 评标委员会至少3人
商务评分权重 required0-100 请设置商务评分权重
技术评分权重 required0-100 请设置技术评分权重
价格评分权重 required0-100 请设置价格评分权重
权重总和 =100% 评分权重之和必须等于100%
商务分/技术分/价格分 required0-100 请输入评分 / 评分范围为0-100

响应式布局

断点 布局调整
≥1280px桌面端 评标委员会与评分标准左右并排,评分录入表格全宽
1024-1279pxPad横屏 评标委员会与评分标准上下排列,评分录入表格全宽,评分输入列宽缩小
768-1023pxPad竖屏 全部区域纵向堆叠,评分录入表格横向滚动,弹窗全屏宽度

页面7定标审批页

页面编号HO-BD-07-P01 端侧归属Web专属 页面路径/bidding/award

操作按钮

按钮 权限编码 位置 显示条件 说明
定标审批 bidding:award:approve 行操作 状态=待定标 通过/驳回

交互流程要求

  1. 页面加载流程:进入页面 → 调用待定标项目列表API → 渲染列表
  2. 查询/筛选交互流程:支持按标段名称、状态筛选
  3. 表单填写与提交流程:点击"定标审批" → 弹出审批弹窗(查看评标结果摘要,选择通过/驳回)→ 驳回需填写原因 → 确认后调用API → 刷新列表
  4. 弹窗/抽屉交互流程定标审批弹窗el-dialog含评标结果摘要展示、通过/驳回选择、驳回原因输入)
  5. 行内操作流程:仅状态=待定标时显示"定标审批"按钮
  6. 异常与错误处理审批操作失败显示el-message错误提示
  7. 联动/级联交互:审批结果与列表状态联动(通过→公示中,驳回→评标中)
  8. 权限控制交互表现:无审批权限隐藏"定标审批"按钮

前端硬性约束

  • H1 防重复提交(强制): "定标审批"行操作按钮点击后置 loading+disabled 状态;弹窗内确认按钮同样 loading+disabled
  • H2 超时控制(强制): 列表查询(GET)超时 15s定标审批(POST)超时 30s超过阈值提示"请求超时,请稍后重试"
  • H3 操作确认(强制): "定标审批-通过"前弹出 confirm("确定要通过该定标审批?通过后将进入公示阶段。", type='warning')"定标审批-驳回"前弹出 confirm + 驳回原因输入框(必填),含影响说明:"驳回后需重新评标"
  • H5 权限隔离(建议): 返回空列表展示"暂无待定标项目"code=403 时展示"无权限访问"
  • H8 反馈机制(建议): 操作成功 successduration=2s+ 静默刷新列表;失败 errorduration=0网络异常显示重试按钮
  • 弹窗表单(定标审批)额外约束:
    • H1 防重复提交(强制): 弹窗内确认按钮 loading+disabled
    • H2 超时控制(强制): 提交(POST)超时 30s
    • H3 操作确认(强制): 已由外层 H3 覆盖
    • H4 脏数据检测(强制): 审批结果/驳回原因修改后尝试关闭弹窗时拦截确认
    • H8 反馈机制(建议): 成功关闭弹窗 + 刷新 + success(2s);失败 error(0)

组件规范

元素 组件 配置参数
定标列表 el-table stripeborder
状态列 el-tag :type根据状态配色待定标=warning公示中=success评标中=info
定标审批按钮 el-button type="primary"size="small"link样式
定标审批弹窗 el-dialog title="定标审批"width="600px"
评标结果摘要 el-descriptions :column=1border展示中标候选人、评分等
审批结果 el-radio-group 通过/驳回单选
驳回原因 el-input type="textarea":rows=3v-if="审批结果=驳回"

校验规则

字段 规则 错误提示
审批结果 required 请选择审批结果
驳回原因 required审批驳回时 请输入驳回原因

响应式布局

断点 布局调整
≥1280px桌面端 列表全字段展示审批弹窗600px宽度
1024-1279pxPad横屏 列表隐藏次要字段审批弹窗80%宽度
768-1023pxPad竖屏 列表仅显示核心字段,审批弹窗全屏宽度

页面8中标公示页

页面编号HO-BD-08-P01 端侧归属Web专属 页面路径/bidding/publicity

列表字段

序号 字段名 列宽 支持排序 说明
1 标段名称 120px
2 中标供应商 120px
3 中标金额 100px
4 公示开始日 100px
5 公示结束日 100px
6 状态 80px 公示中/已生效
7 操作 100px 生成合同

操作按钮

按钮 权限编码 位置 显示条件 说明
生成合同 contract:list:create 行操作 状态=已生效 跳转合同管理创建合同

交互流程要求

  1. 页面加载流程:进入页面 → 调用中标公示列表API → 渲染列表
  2. 查询/筛选交互流程:支持按标段名称、状态筛选
  3. 表单填写与提交流程:点击"生成合同"(状态=已生效)→ 二次确认后跳转合同录入页,自动填充标段信息和中标供应商
  4. 弹窗/抽屉交互流程生成合同确认弹窗el-message-box提示"确认生成合同?将跳转合同管理创建合同"
  5. 行内操作流程:仅状态=已生效时显示"生成合同"按钮
  6. 异常与错误处理生成合同跳转失败显示el-message错误提示列表为空显示el-empty
  7. 联动/级联交互:公示状态与操作按钮联动(仅已生效显示生成合同按钮)
  8. 权限控制交互表现:无合同创建权限隐藏"生成合同"按钮

前端硬性约束

  • H1 防重复提交(强制): "生成合同"行操作按钮点击后置 loading+disabled 状态;操作期间禁用该行其他操作
  • H2 超时控制(强制): 列表查询(GET)超时 15s超过阈值提示"请求超时,请稍后重试"
  • H3 操作确认(强制): "生成合同"前弹出 confirm("确认生成合同?将跳转至合同管理并自动填充中标信息。", type='info')
  • H5 权限隔离(建议): 返回空列表展示"暂无中标公示记录"code=403 时展示"无权限访问"
  • H8 反馈机制(建议): 跳转成功无需提示(已跳转);跳转失败显示 errorduration=0网络异常显示重试按钮列表加载静默刷新

组件规范

元素 组件 配置参数
公示列表 el-table stripeborder
状态列 el-tag :type根据状态配色公示中=warning已生效=success
生成合同按钮 el-button type="primary"size="small"link样式icon="Document"
生成合同确认弹窗 el-message-box title="确认生成合同"type="info"confirm-button-text="确认生成"

校验规则

字段 规则 错误提示
(无表单校验)

响应式布局

断点 布局调整
≥1280px桌面端 列表全字段展示,操作列右对齐
1024-1279pxPad横屏 隐藏"公示开始日/公示结束日"列,操作列固定右侧
768-1023pxPad竖屏 仅显示标段名称/中标供应商/状态/操作核心字段

需求追溯

功能点编号 功能名称 文档来源 后续服务 关联功能
HO-BD-01 招标计划 02-医院 §2 / 03-医院 §2.2 计划→标段拆分
HO-BD-02 标段管理 02-医院 §2 / 03-医院 §2.2 标段→招标发布
HO-BD-03 供应商管理 02-医院 §2 供应商→投标
HO-BD-04 招标发布 02-医院 §2 / 03-医院 §2.2 发布→供应商投标
HO-BD-05 投标管理 02-医院 §2 / 03-医院 §2.2 投标截止→评标
HO-BD-06 评标管理 02-医院 §2 / 03-医院 §2.2 评标完成→定标
HO-BD-07 定标审批 02-医院 §2 / 03-医院 §2.2 定标→公示 操作日志
HO-BD-08 中标公示 02-医院 §2 / 03-医院 §2.2 公示期满→生成合同 合同管理
HO-BD-09 招标导出 02-医院 §2 操作日志

业务规则

  1. 仅医院账号可用物业公司不可操作此模块来源01 §4.2 / 02-医院 §2
  2. 供应商信息自管供应商信息由医院账号在本系统中录入和管理来源03-医院 §2.2
  3. 黑名单供应商黑名单供应商不可参与投标来源02-医院 HO-BD-03
  4. 投标截止截止时间到达后自动截止不可再提交投标来源03-医院 §2.2
  5. 中标→生成合同公示期满后可一键生成合同跳转合同管理创建来源03-医院 §2.2
  6. 所有操作记录日志招标各环节操作自动记录来源06 §4.5

状态流转

招标计划 ──▶ 标段拆分 ──▶ 招标发布 ──▶ 投标中 ──▶ 评标中 ──▶ 待定标 ──▶ 公示中 ──▶ 已定标 ──▶ 生成合同
当前状态 操作 目标状态 执行角色 端侧
创建招标计划 计划中 医院账号 Web
计划中 标段拆分 待发布 医院账号 Web
待发布 发布招标 投标中 医院账号 Web
投标中 投标截止 评标中 系统/医院 Web
评标中 评标完成 待定标 医院账号 Web
待定标 定标审批 公示中 医院账号 Web
公示中 公示期满 已定标 系统自动 Web
已定标 生成合同 医院账号 Web