From 68efdbaf8c1b385331b9058669b4e5881473e6f5 Mon Sep 17 00:00:00 2001 From: halo Date: Sat, 8 Aug 2026 16:16:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E5=BC=80=E6=88=B7=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E7=A1=AE=E8=AE=A4=E5=92=8C=E4=BC=81=E4=B8=9A=E5=BC=80?= =?UTF-8?q?=E6=88=B7=E4=BF=A1=E6=81=AF=E7=A1=AE=E8=AE=A4=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=E7=9B=B8=E5=90=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fryl_h5/src/views/PersonalOpenMobile.vue | 221 ++++++++++++++++---- fryl_h5/src/views/steps/AgreementStep.vue | 77 +++---- fryl_h5/src/views/steps/InfoConfirmStep.vue | 119 +++++------ fryl_h5/src/views/steps/SmsVerifyStep.vue | 76 +++---- 4 files changed, 298 insertions(+), 195 deletions(-) diff --git a/fryl_h5/src/views/PersonalOpenMobile.vue b/fryl_h5/src/views/PersonalOpenMobile.vue index e9482df..73f5944 100644 --- a/fryl_h5/src/views/PersonalOpenMobile.vue +++ b/fryl_h5/src/views/PersonalOpenMobile.vue @@ -1,7 +1,5 @@ @@ -69,13 +115,25 @@ const draftDetail = ref(null) // 4个向导步骤:INFO(信息核对) -> AGREEMENT(相关协议) -> SMS(手机验证+提交) -> RESULT(结果页, // 终态)。原有的 FACE(人脸识别)步骤自 2026-08-05 二次更新起从流程中跳过(见上方模板注释), -// 不再声明 facePhoto/faceVerified 状态。 +// 不再声明 facePhoto/faceVerified 状态。STEP_ORDER/isDone/rowClass 与企业开户H5 +// (EnterpriseOpenMobile.vue)完全一致,驱动手风琴步骤列表的折叠/展开状态;本页面同样不支持 +// 步骤回退(2026-08-08 对齐企业开户交互样式改造)。 +const STEP_ORDER = ['INFO', 'AGREEMENT', 'SMS', 'RESULT'] const currentStep = ref('INFO') const resultData = ref(null) // AgreementStep 生成+上传《用户支付服务协议》PDF后拿到的文件编号,提升到父组件状态, // 转发给 SmsVerifyStep 用于最终提交(mobile/submit 的 payAgreementFileNo 字段) const payAgreementFileNo = ref('') +function isDone(key) { + return STEP_ORDER.indexOf(key) < STEP_ORDER.indexOf(currentStep.value) +} +function rowClass(key) { + if (isDone(key)) return 'is-done' + if (key === currentStep.value) return 'is-current' + return 'is-pending' +} + function handleAgreementNext(fileNo) { payAgreementFileNo.value = fileNo currentStep.value = 'SMS' @@ -119,4 +177,89 @@ onMounted(async () => { justify-content: center; min-height: 60vh; } +.banner { + display: flex; + align-items: center; + justify-content: space-between; + padding: 14px 16px; + background: linear-gradient(90deg, #1677ff, #4096ff); + color: #fff; +} +.banner-title { + font-size: 16px; + font-weight: 600; +} +.banner-brand { + display: flex; + align-items: center; + gap: 6px; +} +.brand-badge { + display: inline-flex; + align-items: center; + justify-content: center; + width: 18px; + height: 18px; + border-radius: 4px; + background: #fff; + color: #ee0a24; + font-weight: 700; + font-size: 13px; +} +.brand-name { + font-size: 12px; +} +.step-list { + padding: 12px 16px 24px; +} +.step-row { + background: #fff; + border-radius: 8px; + margin-bottom: 12px; + overflow: hidden; +} +.step-row-header { + display: flex; + align-items: center; + gap: 10px; + padding: 14px 16px; +} +.step-icon { + display: inline-flex; + align-items: center; + justify-content: center; + width: 22px; + height: 22px; + flex-shrink: 0; +} +.step-number { + display: inline-flex; + align-items: center; + justify-content: center; + width: 22px; + height: 22px; + border-radius: 50%; + background: #e8e8e8; + color: #969799; + font-size: 13px; +} +.icon-done { + color: #07c160; + font-size: 20px; +} +.step-label { + font-size: 15px; + color: #969799; +} +.is-current .step-number { + background: #1677ff; + color: #fff; +} +.is-current .step-label { + color: #323233; + font-weight: 600; +} +.is-done .step-label { + color: #323233; +} diff --git a/fryl_h5/src/views/steps/AgreementStep.vue b/fryl_h5/src/views/steps/AgreementStep.vue index 8edc6fb..01e6f2d 100644 --- a/fryl_h5/src/views/steps/AgreementStep.vue +++ b/fryl_h5/src/views/steps/AgreementStep.vue @@ -1,25 +1,27 @@