Files
hjc-web/app/types/tender.ts
T
weicw-dshsa 9587a27ede feat(order): 收银台支付倒计时,超时锁死并引导重新下单
- 到期时刻由后端下发(payDeadline),倒计时与"到点锁页面"都用它,前端不自己算时限
- 解析后端时间时把空格换成 T:后端格式是 `yyyy-MM-dd HH:mm:ss`,
  而 iOS Safari / 微信内置浏览器解析不了不带 T 的写法(返回 NaN,
  会让倒计时与锁页在最主要的那一端静默失效)
- 修正收银台写死的「2 小时」文案:有效期由后端配置,页面不该复述一个具体数字
- 订单列表/详情:超时后不再给「去支付」,并显示「已取消(支付超时)」
- `hjcCanActOn` 收成共享导出,两个页面不再各写一份判定
- 与 hjc-h5 的 utils/orderStatus 保持同一套定义(两仓逐字对齐)
2026-09-29 17:44:59 +08:00

189 lines
6.2 KiB
TypeScript
Raw 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.
/** 汇吉采标书项目(前端视图模型,与后端 HjcBidProject 对齐) */
export interface Tender {
id: number
/** 项目编号 */
projectNo: string
/** 项目名称 */
projectName: string
/** 分类:服务类/工程类/货物类 */
category?: string
/** 发布时间 */
publishTime?: string
/** 投标截止时间 */
deadlineTime?: string
/** 招标人 */
tenderer?: string
/** 中标公司 */
winnerSupplier?: string
/** 中标金额 */
bidAmount?: number
/** 公告标题 */
bulletinTitle?: string
/** 公告正文 */
bulletinContent?: string
/** 公告附件(JSON字符串,一站式推送的原始值) */
bulletinFileList?: string
/**
* 公告附件(后端解析好的可下载列表)。
*
* **门槛与 `tenderFiles` 不同**:公告附件是公开资料(公告正文本来就公开下发),
* 匿名也能拿到——不判登录、不判资质、不判购买;`tenderFiles`(标书附件)才是付费内容、
* 只在已支付订单上出现。
*
* **唯一没有的情况是项目已下架**:后端对 `status != 1` 的项目不下发本字段(前端不自己判)。
*/
bulletinFiles?: HjcTenderFile[] | null
/** 标书价格(信息服务费) */
tenderPrice?: number
/** 标书附件(JSON字符串) */
tenderFile?: string
/** 开售时间 */
onsaleTime?: string
/** 停售时间 */
offsaleTime?: string
/** 售卖方式:1公司财务 2公众号 3交易中心 4政采云 */
sellingMethod?: number
/** 是否卖标书 */
needSell?: number
/** 状态:1上架 0停售 */
status?: number
/** 来源 */
dataSource?: string
/** 已售数量(下单即加、从不回退;当前已无展示用途,历史字段) */
saleCount?: number
/**
* 购买人数:后端实时统计的**已付款订单数**(`COUNT(*) WHERE pay_status=1`)。
* 口径与「人数」字面有偏差(同一企业买 2 单计 2),这是明确拍定的取值。
*/
buyerCount?: number
/**
* 当前登录企业是否已收藏本项目(后端**内联**在详情响应里的非表字段)。
* 未登录恒为 `false` —— 详情是公开接口,不因为没登录而报错。
*/
favorited?: boolean
}
/** 「我的收藏」单条(对应后端 HjcFavoriteVo) */
export interface HjcFavorite {
/** 收藏行 id(排查用,不是项目 id) */
id: number
/** 标书项目 id(进详情要用它,不是 id) */
projectId: number
/** 收藏时间 */
createTime?: string
/** 项目已被物理删除时为 null */
projectName?: string
projectNo?: string
category?: string
tenderPrice?: number
deadlineTime?: string
offsaleTime?: string
/**
* 售卖状态,由**后端**算好(口径只有一份):`onsale` 在售 / `ended` 已结束 / `removed` 已下架。
* 前端只渲染文案,不要自己比 status 或算时间。
*/
saleState?: 'onsale' | 'ended' | 'removed'
/**
* 本企业是否已购买该项目(已付款订单口径,与详情页「购买人数」同一口径)。
* 已购**不会**从收藏夹移除——收藏是存档,不是购物车。
*/
purchased?: boolean
}
/** 分页返回结构 */
export interface TenderPage {
list: Tender[]
count: number
}
/**
* 标书附件(对应后端 `HjcTenderFileVo`)。
*
* 由**后端**把项目的 `tender_file`(JSON 数组或逗号分隔)解析成结构化列表,
* 前端只渲染、不解析也不判权限。
*/
export interface HjcTenderFile {
/** 展示名;后端取不到时会兜底成「标书附件」 */
name?: string
/** 可下载地址 */
url: string
}
/**
* 订单(对应后端 `HjcOrder`,只列页面用得到的字段)。
*
* `tenderFiles` 是**付费内容**:只有 `payStatus === 1`(已支付)的订单,后端才会下发;
* 待支付 / 支付失败 / 已退款一律为 `null`(空数组表示已支付但项目没有附件)。
* 前端**不根据 payStatus 自己拼地址**——地址没下发就是拿不到。
*/
export interface HjcOrder {
id: number
orderNo: string
projectId?: number
projectNo?: string
projectName?: string
enterpriseName?: string
contactName?: string
contactPhone?: string
contactEmail?: string
quantity?: number
unitPrice?: number
totalAmount?: number
payMethod?: string
payTime?: string
payStatus?: number
orderStatus?: number
/** 取消来源:`BUYER`(买家取消)/ `TIMEOUT`(超时取消),仅已取消订单有值 */
cancelSource?: string | null
/** 取消时间 */
cancelTime?: string | null
/**
* 支付时限的到期时刻(仅**仍待支付**的订单由后端下发)。
*
* 它是算出来的(创建时刻 + 配置时限),不是一列。收银台靠它显示倒计时——
* 前端不要自己拿 `createTime` 加时限,两边各算一次会让「倒计时归零」与「后端判定超时」错开。
*/
payDeadline?: string | null
createTime?: string
/** 仅已支付订单由后端下发 */
tenderFiles?: HjcTenderFile[] | null
/**
* 电子发票:**有才有**(甲方开票后推送过来才会有这条记录)。
* 作废(红冲)的也在列表里(仍可下载原件),靠 `status` 区分。
*/
invoices?: HjcInvoiceFile[] | null
}
/**
* 电子发票(对应后端 `HjcInvoiceVo`)。
*
* 由**一站式平台开具后推给我们的**(官方网不开票,见 ADR 0006);文件留的是本平台副本,
* 下载地址同样是资源地址——点击时先换票据(见 `useAttachmentDownload`)。
*/
export interface HjcInvoiceFile {
/** 发票号码 */
invoiceNo?: string
/** VAT_NORMAL 电子普票 / VAT_SPECIAL 电子专票 */
invoiceType?: string
/** 开票日期 yyyy-MM-dd */
invoiceDate?: string
/** 发票金额(含税) */
amount?: number
/** ISSUED 已开票 / CANCELLED 已作废(红冲) */
status?: string
/** 展示名(下载时用作文件名) */
name?: string
/** 可下载地址(本平台资源地址,点击时先换票据) */
url: string
}
/** 登录用户(对应后端 common.system.User 关键字段) */
export interface HjcUser {
userId: number
username: string
nickname?: string
phone?: string
tenantId?: number
[key: string]: any
}