From ec995356434f88d6eca97cb3131e09cd9a09d00b Mon Sep 17 00:00:00 2001 From: halo Date: Thu, 23 Jul 2026 17:26:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=AA=E4=BA=BA=E5=BC=80=E6=88=B7?= =?UTF-8?q?=E9=82=80=E8=AF=B7=E6=89=AB=E7=A0=81=E5=8A=9E=E7=90=86=E7=94=9F?= =?UTF-8?q?=E6=88=90=E5=B9=B6=E5=B1=95=E7=A4=BA=E4=BA=8C=E7=BB=B4=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wallet/personal-open/PersonalOpenForm.vue | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/views/wallet/personal-open/PersonalOpenForm.vue b/src/views/wallet/personal-open/PersonalOpenForm.vue index 0eb0097..b06215d 100644 --- a/src/views/wallet/personal-open/PersonalOpenForm.vue +++ b/src/views/wallet/personal-open/PersonalOpenForm.vue @@ -210,6 +210,7 @@ import { ref, reactive, computed, watch, onMounted } from 'vue' import { useRoute, useRouter } from 'vue-router' import { message, Modal } from 'ant-design-vue' import dayjs from 'dayjs' +import QrcodeVue from 'qrcode.vue' import ChannelSelect from '@/components/ChannelSelect.vue' import IdCardUpload from '@/components/IdCardUpload.vue' import FacePhotoUpload from '@/components/FacePhotoUpload.vue' @@ -615,6 +616,29 @@ async function handleModalSave() { } } +// 拼接扫码 H5 地址:域名/路径来自环境变量,域名未配置(生产环境尚未确定)时用占位域名兜底, +// 保证二维码始终可以生成,不阻断柜员操作;域名确定后只需修改 .env.production,无需改代码。 +function buildQrCodeUrl(applicationNo) { + const base = import.meta.env.VITE_H5_QRCODE_BASE_URL || 'https://example.com' + const path = import.meta.env.VITE_H5_QRCODE_PATH || '/mobile/personal-open' + return `${base}${path}?applicationNo=${applicationNo}` +} + +// 弹窗内"邀请扫码办理":与"保存"调用同一个提交接口,成功后不关闭弹窗,切换为二维码展示态 +async function handleModalInvite() { + modalInviting.value = true + try { + const applicationNo = await submitCreateDraft() + if (applicationNo) { + qrApplicationNo.value = applicationNo + qrCodeUrl.value = buildQrCodeUrl(applicationNo) + confirmModalStep.value = 'qrcode' + } + } finally { + modalInviting.value = false + } +} + // 弹窗内"取消"/关闭图标/邀请扫码办理成功后的"关闭"按钮:统一只关闭弹窗,不发请求、不跳转 function handleModalCancel() { confirmModalVisible.value = false