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/`
This commit is contained in:
2026-09-17 18:09:27 +08:00
parent 9299485899
commit 2e847b5e09
8 changed files with 490 additions and 17 deletions
+1 -1
View File
@@ -90,7 +90,7 @@ const { isLoggedIn, handleAuthCode } = useHjcAuth()
* **不会**把浏览器请求里的 Cookie 转发给站内 `/api` 代理。代理拿不到 `hjc_token`
* 就等于匿名调用,后端按契约返回 `code=401``handleAuthCode` 据此判定「凭据失效」
* → 在服务端清 Token → 结果是**刷新「我的收藏」= 把自己登出**。
* (同一段坑的完整说明见 app/pages/tender/orders.vue:77-88。)
* (同一段坑的完整说明见 app/pages/tender/orders/index.vue:101-110。)
*
* 客户端侧 `useRequestFetch()` 等价于 `globalThis.$fetch`,行为不变。
*/