feat(ui): 查标第 6 步前端补齐
- 读标页:每条清单项写最近一次检查的结论,点投标侧出处看投标原文;
「已响应」也能反馈判断有误(漏报);证书要求写资质库里的情况
(新接口 GET /projects/{id}/qualification-matches,资质库空时不写)
- 概览:检查记录卡(历次检查、各级问题数、报告下载)、文件卡
- 工作台:「致命」列、统计可点筛选、待处理的致命问题卡(?f= 定位到问题)
- 日期输入加日历弹层(DateInput,Reka UI Calendar)
- 查标页:? 键显示快捷键说明;反馈对话框抽成 FeedbackDialog 共用
- 扫描件提示去掉多余空格
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1257,6 +1257,39 @@ paths:
|
||||
application/json:
|
||||
schema: { $ref: '#/components/schemas/CheckPreview' }
|
||||
|
||||
/projects/{project_id}/qualification-matches:
|
||||
parameters:
|
||||
- $ref: '#/components/parameters/ProjectId'
|
||||
get:
|
||||
tags: [checks]
|
||||
operationId: listQualificationMatches
|
||||
summary: 读标清单上的资质库情况(qualification-plan §4,第 6 步)
|
||||
description: |
|
||||
正式清单里资格条件、评分项中认出证书类别的条目,每类给出资质库里有效期最晚的一条,按投标截止日判断是否过期
|
||||
(没有截止时间按今天)。认类别、排除产品和人员证书的口径和查标一样;资质库是空的时 items 为空(QL3)。
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
required: [as_of, by_deadline, items]
|
||||
properties:
|
||||
as_of: { type: string, format: date, description: 按哪天判断有效期 }
|
||||
by_deadline: { type: boolean, description: as_of 是投标截止日(false 时是今天) }
|
||||
items:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
required: [checklist_item_id, families]
|
||||
properties:
|
||||
checklist_item_id: { $ref: '#/components/schemas/Id' }
|
||||
families:
|
||||
type: array
|
||||
items: { $ref: '#/components/schemas/QualificationMatch' }
|
||||
'404': { $ref: '#/components/responses/NotFound' }
|
||||
|
||||
/projects/{project_id}/check-runs:
|
||||
parameters:
|
||||
- $ref: '#/components/parameters/ProjectId'
|
||||
@@ -1997,6 +2030,27 @@ components:
|
||||
QuotaEntryKind: { type: string, enum: [grant, hold, settle, release, expire, adjust, waive] }
|
||||
PlanCode: { type: string, enum: [free, pro, enterprise] }
|
||||
QualificationKind: { type: string, enum: [certificate, system_cert, software_copyright, other] }
|
||||
QualificationMatch:
|
||||
type: object
|
||||
description: 一类证书在资质库里的情况(读标页用)
|
||||
required: [family, count, record, state]
|
||||
properties:
|
||||
family: { type: string, examples: [ISO 9001 质量管理体系认证] }
|
||||
count: { type: integer, description: 资质库里这一类有几条 }
|
||||
state: { type: string, enum: [valid, expired, missing], description: 按 as_of 判断;missing 是资质库里没有这一类 }
|
||||
record:
|
||||
description: 有效期最晚的一条;没有时为 null
|
||||
oneOf:
|
||||
- type: 'null'
|
||||
- type: object
|
||||
required: [id, name, kind, valid_to]
|
||||
properties:
|
||||
id: { $ref: '#/components/schemas/Id' }
|
||||
name: { type: string }
|
||||
kind: { $ref: '#/components/schemas/QualificationKind' }
|
||||
level: { type: [string, 'null'] }
|
||||
cert_no: { type: [string, 'null'] }
|
||||
valid_to: { type: [string, 'null'], format: date, description: 'null 表示长期有效' }
|
||||
ProjectFieldKey:
|
||||
type: string
|
||||
enum: [name, code, purchaser, agency, procurement_method, legal_regime, budget_total, ceiling_total,
|
||||
|
||||
Reference in New Issue
Block a user