weicw-dshsa
|
cadb2b837f
|
feat(order): 下单页新增发票类型选择
- BuyDocument.vue:购买页新增「发票类型」单选(VAT_SPECIAL 电子专票 / VAT_NORMAL 电子普票),
必填,未选时拦在 $fetch 之前并点名提示「请选择发票类型」
- 预选值取企业档案的 invoiceType(走 /api/tender/enterprise,用 useRequestFetch 保证 SSR/CSR 一致);
取不到或值不在枚举内则不预选,由提交那道兜住
- 建单 body 带上 invoiceType
- order.post.ts 本就把 readBody 结果整体透传给后端,未做字段白名单,无需改动;
仅更新接口契约注释
|
2026-10-08 14:54:22 +08:00 |
|
weicw-dshsa
|
57543cfade
|
feat(order): 收银台与购标流程改为先选支付方式再发起支付
- 新增 useHjcPayFlow(select/code 两段状态机)与 HjcPayPanel(两处共用):
进页只查单、不发起支付,不预选支付方式;出码后不再有切换控件,
只能显式「更换支付方式」回到选择态(不自动重发、不停查单)
- 发起失败留在选择态并保留所选(渠道侧什么都没产生,没有理由锁住用户)
- 收银台 pages/tender/pay.vue 只留订单侧职责:取单、终态屏、超时锁、付款成功跳列表
- 购标流程 BuyDocument:下单后停在选择态(不再按默认微信自动发起),
补支付剩余时间与超时锁,超时后回表单步重新下单
- 订单详情:只有已完成订单才显示支付方式渠道名,其余显示「—」;
标签按前缀判,修掉 ALIPAY_QR 被显示成「微信支付」
- useHjcPayStatus:新增结构化 channelClosed——「渠道单已关闭」在选择态说
「重新选择支付方式」、出码态才说「重新获取二维码」,不靠匹配 message 字符串
Refs .scratch/cashier-pay-method-selection/issues/01-pay-method-before-pay.md
|
2026-09-30 09:16:36 +08:00 |
|
weicw-dshsa
|
5bbe383736
|
fix(tender): 去掉购标流程里写死的「2 小时内支付」文案
收银台那处上一轮已改;购标流程的支付步骤(BuyDocument)里还剩一处,
两处都会与新的支付时限(默认 30 分钟)自相矛盾。
支付时限由后端配置、且随本单剩余窗口变化,页面上写死一个数字迟早与事实不符,
所以一律改成「在支付时限内」。同时更正 useHjcPayStatus 里"本地计时 2 小时"
的注释:它现在只是**兜底值**,优先用后端随订单下发的 payDeadline。
|
2026-09-29 18:16:27 +08:00 |
|
weicw-dshsa
|
755866e28b
|
revert: PC 支付宝改回电脑网站支付(自提交表单跳转)
配合后端把支付宝默认渠道改回电脑网站支付(当面付需单独签约并提交
资料审核,实测被网关以 ACQ.ACCESS_FORBIDDEN 拒绝)。
改动(tender/pay.vue 收银台 + template-07/BuyDocument.vue 购标流程):
- 恢复 alipayForm 这套处理:后端返回自提交表单时用 document.write
写进新窗口跳转支付宝收银台,原页面留在原标签页继续轮询查单;
弹窗被拦截时给出可行动提示,按钮可重试。
- 模板恢复「表单」与「二维码」两支:支付宝走表单、微信走 codeUrl。
- 切换支付方式时把两种产物都清掉,避免上一支的残留留在页面上。
- 文件头注释同步:微信出码、支付宝跳转。
前端不传 payType 之外的值即可——裸 alipay 现在由后端解析为网页支付,
所以「微信支付 / 支付宝」选择器保持不变。
验证:eslint 0 error;npm run build:dev 通过。
|
2026-09-21 21:49:28 +08:00 |
|
weicw-dshsa
|
1b4dbda28e
|
feat: PC 两处支付入口的支付宝统一改为扫码出码(与微信交互一致)
用户选择:PC 不再跳支付宝账单页,改为像微信一样直接出一张二维码。
此前 PC(收银台 + 购标流程)走电脑网站支付(自提交表单 + 跳转),
H5 走扫码,两个渠道两种交互。
改动:
- tender/pay.vue 与 template-07/BuyDocument.vue 删除自提交表单整套逻辑
(alipayForm 状态、openAlipayForm 的 document.write、弹窗拦截兜底、
模板里的「前往支付宝付款」分支)——两个渠道现在都是 codeUrl 出码,
渲染与轮询完全复用同一套。
- 支付宝提交 payType=alipay(裸值),由后端按默认渠道(当面付扫码)下单。
- 两处文件头注释同步:支付宝默认当面付,与微信 Native 同一交互。
不改的部分:
- 后端本就两条路都实现(precreate / page.pay),本次只翻转默认,
网页支付保留为显式 alipay_page / alipay_web 的可选路径——
扫码签约「当面付」、网页支付签约「电脑网站支付」,是不同的产品签约,
留一条备用便于按实际签约情况切换,不必改代码。
- H5 原本就是扫码(显式 alipay_qr),行为不变。
验证:eslint 0 error;npm run build:dev 通过。
|
2026-09-20 21:16:07 +08:00 |
|
weicw-dshsa
|
5e1106d8ce
|
feat: 购标流程(/buy)支持支付宝支付
上一轮我只改了独立收银台 `/tender/pay`,**漏了购标流程**——
`/buy` 走的是 `templates/template-07/pages/BuyDocument.vue`,
它自己那一套支付步骤同样硬编码微信:「提交订单并用微信支付」、
「请使用微信扫码支付」,且调 `/api/tender/pay` 不传 payType。
结果是用户从标书详情页买标书(主路径)根本看不到支付宝入口。
改动(与收银台保持同一套交互,便于对照):
- 支付步骤加支付方式选择器(微信支付 / 支付宝),默认微信,
保持接入前行为不变。
- 支付宝走电脑网站支付:后端返回自提交表单,`document.write` 进新窗口。
用 document.write 而非 v-html——后者插入的脚本标签不会执行(HTML 规范),
表单永远不会自动提交。原页面留在原标签页继续轮询查单。
- 弹窗被拦截时给出可行动提示,并用「前往支付宝付款」按钮兜底重试。
- 切换支付方式清掉上一张码,避免两张码同时留在页面上。
- 两处 `/api/tender/pay` 调用(submit 与 refreshQr)都带上 payType。
- 文案按渠道取词(channelLabel / qrAlt),状态判定仍走渠道无关的
useHjcPayStatus,不引入支付宝词表。
验证:eslint 0 error;npm run build:dev 通过。
|
2026-09-20 20:44:29 +08:00 |
|
weicw-dshsa
|
5b6e1b67bc
|
feat(tender): 支付链接改为站内二维码,支付确认改走微信侧查单
- BuyDocument:支付步骤原先把后端 Native 下单返回的 codeUrl(weixin://wxpay/...)当明文
链接渲染成一个 <a target="_blank">,而 weixin:// 在浏览器里点击没有任何有效行为——标题写
着「请使用微信扫码支付」,页面上却没有二维码,PC 端 Native 支付实质不可用。改为渲染真正
的二维码,并删掉那个链接。
- HjcPayQrcode(新):uqr 站内生成,renderSVG() → data:image/svg+xml → <img :src>。不用
v-html(避开 vue/no-v-html),不用第三方外链(hjc-h5 用的 api.qrserver.com 在境内不可靠,
且等于把支付凭据交给第三方),也不改后端契约。
- useHjcPayStatus(新):支付结果一律以**微信侧**为准——轮询 pay-status(3s,页面隐藏暂停,
2 小时上限),手动「我已完成支付」按钮也走同一条查单通道。原先只有 mark-paid 一条路,而它
不向微信查单(HjcOrderController 的 javadoc 自陈「订单置为已支付只有 /mark-paid 一条路」),
用户一分钱不付、点一下就能把订单置为已支付并触发一站式推送。故 hjc-web 弃用它,并删除
server/api/tender/mark-paid.put.ts,不留这个入口给下一个人误用。
- 查单的另一好处:微信已支付而本地仍未支付时它会就地补写状态(幂等)。于是「付了钱但页面被
关掉/断网」这类漏单能被认出来——进入支付步骤即开始轮询,正是为了认出这种订单。
- 拿不到二维码时(例如租户支付配置错误)不再显示空白卡片,而是失败原因 +「重新获取二维码」。
微信 Native 码默认 2 小时且服务端不下发 expireTime,故按发起支付时刻本地计时,过期把二维码
置灰并提示重新获取;「重新获取二维码」重调 /api/tender/pay(同 out_trade_no 的 Native→
Native 重下微信允许)。
- 由此 hjc-web 与 hjc-h5/小程序端的支付确认语义**有意不一致**(那两端仍在用 mark-paid,改动
它们等于同时动三端线上支付路径)。理由与边界记在 ADR 0009。
- 依赖:新增 uqr;两份锁文件同步更新(pnpm 装,package-lock.json 同步)。
- 删除 BUY_TENDER_MAP_REPORT.md:530 行历史快照,结论与现状全面矛盾(称购买流程是桩函数、
/buy 不可用、没有登录流程、pay 代理路径写错),已实际误导过一次调研;历史价值留在 git 里。
|
2026-09-17 02:32:39 +08:00 |
|
weicw-dshsa
|
d0c2dd17cb
|
feat(tender): 登录加图形验证码、注册加短信验证码;改按 body.code 判定 401/403
- 新增 captcha / sms / logout 三个 Nuxt server 代理
- 修复代理把 ApiResult 拍扁成 data 的问题(my-orders、enterprise、order、pay、
mark-paid):登录态失败被前端当成「没有订单 / 未提交资质」,无法区分
- 新增 handleAuthCode 统一处理:401 → 清凭据并跳 /login?redirect=…;
403 → 只提示「没有访问权限」,不清 token、不跳登录页
- 登录页与注册页分别接入图形验证码与短信验证码(含 60s 倒计时)
- 修复回跳开放重定向:redirect 参数安全解码且只接受站内路径
(拒绝 //evil.com、https://… 及反斜杠变体 /\evil.com)
- 下单成功但发起支付失败时停在支付步,避免用户重提交产生重复订单
|
2026-09-10 23:44:19 +08:00 |
|
weicw-dshsa
|
0fbf122a57
|
feat(tender): 阶段3b 企业登录/注册 + 购买→支付→确认 闭环
- useHjcAuth:token 存 cookie(hjc_token),login/register/isLoggedIn
- 页面 /login /register(企业名称+密码)
- server/api/tender/{auth/login,auth/register,pay,mark-paid} 代理;order 代理从 cookie 读取 hjc_token 透传 Authorization
- BuyDocument:未登录跳登录;下单→pay(codeUrl)→确认 mark-paid→成功
- types 增 HjcUser
|
2026-09-08 22:44:30 +08:00 |
|
weicw-dshsa
|
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 |
|
gxwebsoft
|
2b69686795
|
feat(app): 添加多模板关于我们页面及相关路由和404页面
- 新增404页面,优化未找到页面体验,避免被搜索引擎索引
- 增加文件代理接口,隐藏真实文件服务器地址,支持文件请求代理
- 实现/article、/case、/product及/page动态路由兼容列表与详情展示
- 添加动态CMS页面兼容入口处理旧式路径,统一路由与SEO设置
- 新增模板1、模板7、模板2、模板3关于我们页面,实现多模板支持
- 模板增强支持CMS单页内容加载及SEO信息动态设置
- 配置环境变量及Git忽略文件规则辅助开发和构建环境管理
|
2026-09-08 12:13:44 +08:00 |
|