feat(hjc-web): 订单页展示并下载电子发票

发票由一站式平台开具后推给后端(官方网不开票,见工作区根目录 docs/adr/0006),
订单响应里新增 invoices;文件是本平台副本,下载走与附件同一条链路(点击时取票)。

- 抽出 composable useAttachmentDownload:把「先换票据、再取文件」的逻辑从
  HjcTenderFiles 里提出来,附件与发票共用(各写一份必然分叉);同时把资源标识解析
  扩到 orderNo/projectNo/invoiceId 三种。
- 新增 HjcInvoiceFiles.vue:发票号/类型/开票日期/金额 + 下载;作废(红冲)的也列出来
  且仍可下载——它是留档凭证。
- HjcTenderFiles.vue 改用 composable,行为不变。
- 订单详情加发票区块,订单列表加「已开票」标记与发票列表。
- 不判"是否已支付":有没有发票取决于甲方开没开票,与订单当前状态无关。

校验:npm run build 通过。
This commit is contained in:
2026-09-18 17:33:01 +08:00
parent 6c40165f86
commit 1ff4dfffb9
6 changed files with 230 additions and 71 deletions
+28
View File
@@ -136,6 +136,34 @@ export interface HjcOrder {
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 关键字段) */