weicw1996
|
1ff4dfffb9
|
feat(hjc-web): 订单页展示并下载电子发票
发票由一站式平台开具后推给后端(官方网不开票,见工作区根目录 docs/adr/0006),
订单响应里新增 invoices;文件是本平台副本,下载走与附件同一条链路(点击时取票)。
- 抽出 composable useAttachmentDownload:把「先换票据、再取文件」的逻辑从
HjcTenderFiles 里提出来,附件与发票共用(各写一份必然分叉);同时把资源标识解析
扩到 orderNo/projectNo/invoiceId 三种。
- 新增 HjcInvoiceFiles.vue:发票号/类型/开票日期/金额 + 下载;作废(红冲)的也列出来
且仍可下载——它是留档凭证。
- HjcTenderFiles.vue 改用 composable,行为不变。
- 订单详情加发票区块,订单列表加「已开票」标记与发票列表。
- 不判"是否已支付":有没有发票取决于甲方开没开票,与订单当前状态无关。
校验:npm run build 通过。
|
2026-09-18 17:33:01 +08:00 |
|
weicw1996
|
6c40165f86
|
feat(hjc-web): 附件下载改为「点击时取票再下载」
一站式的静态文件服务已加鉴权,附件不再直连(工作区根目录 docs/adr/0007):
后端下发的地址现在是**本平台资源地址**(kind + 订单号/项目编号 + 序号),
既没有文件路径(路径由后端查,防越权)也没有票据。
- 新增 Nitro 透传 server/api/tender/attachment-ticket.get.ts:带 Authorization
(请求头或 hjc_token cookie)+ TenantId 调后端取票,原样透传 ApiResult。
- HjcTenderFiles.vue:`<a :href>` → 按钮 + 点击时取票 + `window.location.href`。
用 location 而不是 window.open:取票是异步的,异步之后弹窗会被浏览器拦截;
附件响应带 Content-Disposition: attachment,下载完仍留在本页。
该组件同时被订单列表/订单详情/项目详情(公告附件)复用,一处改动覆盖三处。
- 错误提示直接复用后端 401/403 约定,组件内联展示,不引入新的 toast 依赖。
校验:npm run build 通过(新增路由已出现在构建产物中)。
|
2026-09-18 17:09:52 +08:00 |
|
weicw1996
|
2e847b5e09
|
feat(hjc-web): 新建订单详情页,订单列表与详情支持下载已支付订单的标书
此前 PC 没有订单详情页,标书下载只有两句文案(`.scratch/hjc-web-order-detail/01`)。
- 新增 `app/pages/tender/orders/[id].vue`:订单状态、标书附件、待支付操作区、
标书/支付/购买人信息;取数走 `useRequestFetch()`(裸 `$fetch` 在 SSR 不转发 Cookie,
会把用户登出)
- `app/pages/tender/orders.vue` → `orders/index.vue`:Nuxt 里同名 file+目录会生成父子路由,
详情页会被父页吞掉,必须让列表页是 `index.vue`
- 列表页每张卡片加「标书附件」(仅已支付)与「查看详情」,不整卡可点(卡内已有按钮与链接)
- 新增 `app/components/HjcTenderFiles.vue` 与代理 `server/api/tender/order-detail.get.ts`
- 附件地址来自后端按 `payStatus=1` 下发的 `tenderFiles`,前端不做权限判断、不自己拼地址
规格与验收:`.scratch/hjc-tender-download/`
|
2026-09-17 18:09:27 +08:00 |
|