Files
weicw1996 2828ba6718 feat(tender): 汇吉采标书购买 阶段3 - C端标书列表/详情/购买入口
- server/api/tender/{list.get,detail.get,order.post}.ts 代理到 mp-api /api/hjc/bid-project|order
- app/types/tender.ts 前端视图模型
- app/templates/template-07/pages/{TenderList,TenderDetail,BuyDocument}.vue(Tailwind,仿 Product 页)
- app/pages/tender/index.vue + tender/[id].vue + buy.vue 路由,经 useTemplate 加载
- useTemplate.ts 注册 TenderList/TenderDetail/BuyDocument(全部模板安全可选)
- 附 BUY_TENDER_MAP_REPORT.md(hjc-web 结构映射参考)
2026-09-08 21:45:34 +08:00

40 lines
1.3 KiB
TypeScript
Raw Permalink 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.
import { $fetch } from 'ofetch'
import { createError, defineEventHandler, getQuery } from 'h3'
import { useRuntimeConfig } from '#imports'
import { getTenantFromContext } from '../../utils/tenant'
/**
* 标书项目列表
* GET /api/tender/list?page=1&limit=10&keywords=xx&category=xx
* 代理到 mp-apimp-java hjc 标书项目列表(仅上架 status=1),归一化为 { list, count }。
*/
export default defineEventHandler(async (event) => {
const config = useRuntimeConfig()
const ctx = getTenantFromContext(event, config)
const query = getQuery(event)
const modulesApiBase = config.public.modulesApiBase as string
try {
const res = await $fetch('/hjc/bid-project/list', {
baseURL: modulesApiBase,
headers: { TenantId: ctx.tenantId },
query: {
...query,
status: 1,
TenantId: ctx.tenantId
}
}) as any
const data = (res && res.data !== undefined ? res.data : res) || {}
return {
list: Array.isArray(data.list) ? data.list : [],
count: data.count ?? data.total ?? 0
}
} catch (error: any) {
throw createError({
statusCode: error?.statusCode || error?.response?.status || 502,
statusMessage: error?.statusMessage || 'Failed to fetch tender list'
})
}
})