394 lines
19 KiB
Plaintext
394 lines
19 KiB
Plaintext
<!--pages/index/result.wxml - AI分析结果(按旧版模板重构)-->
|
||
<view class="container">
|
||
<!-- 分析中状态 -->
|
||
<view class="analyzing-modal" wx:if="{{isAnalyzing}}">
|
||
<view class="analyzing-content">
|
||
<view class="analyzing-icon">
|
||
<view class="spinner"></view>
|
||
</view>
|
||
<text class="analyzing-title">{{analyzingTitle || '正在分析中'}}</text>
|
||
<text class="analyzing-desc">{{analyzingTip}}</text>
|
||
<view class="analyzing-bar">
|
||
<view class="analyzing-bar-fill" style="width: {{progress}}%"></view>
|
||
</view>
|
||
<text class="analyzing-hint">这个过程可能需要30秒到1分钟,请耐心等待...</text>
|
||
</view>
|
||
</view>
|
||
|
||
<!-- 无人脸错误状态 -->
|
||
<view class="no-face-wrap" wx:if="{{!isAnalyzing && noFaceError}}">
|
||
<view class="no-face-card">
|
||
<view class="no-face-icon">
|
||
<text class="no-face-emoji">🚫</text>
|
||
</view>
|
||
<text class="no-face-title">未检测到人脸</text>
|
||
<text class="no-face-desc">{{noFaceMessage}}</text>
|
||
<view class="no-face-tips">
|
||
<text class="no-face-tips-title">拍摄建议:</text>
|
||
<text class="no-face-tip-item">• 确保面部完整出现在画面中</text>
|
||
<text class="no-face-tip-item">• 保持光线充足,避免逆光</text>
|
||
<text class="no-face-tip-item">• 正对镜头,不要遮挡面部</text>
|
||
<text class="no-face-tip-item">• 保持适当距离,不要过近或过远</text>
|
||
</view>
|
||
<view class="no-face-btn" bindtap="retake">
|
||
<text class="no-face-btn-text">重新拍摄</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
<!-- 分析结果 -->
|
||
<view wx:if="{{!isAnalyzing && showResult}}">
|
||
<!-- 状态横幅 -->
|
||
<view class="status-banner {{hasError ? 'error-banner' : ''}}">
|
||
<view class="status-dot {{hasError ? 'error-dot' : ''}}"></view>
|
||
<text class="status-text">{{hasError ? '分析出现异常' : '分析完成,以下是您的个性化报告'}}</text>
|
||
</view>
|
||
|
||
<!-- 支付成功后:引导手机号 → 完善资料(不挡报告阅读) -->
|
||
<view class="post-pay-guide" wx:if="{{!hasError && payInfo.isPaid && (!hasPhone || !isProfileComplete)}}">
|
||
<text class="post-pay-guide-title">再完成两步,报告更好归属到您的账号</text>
|
||
<text class="post-pay-guide-desc">① 授权手机号 ② 完善头像与昵称(「我的」- 个人资料)</text>
|
||
<view class="post-pay-guide-actions">
|
||
<button
|
||
wx:if="{{!hasPhone}}"
|
||
class="post-pay-guide-btn phone"
|
||
open-type="getPhoneNumber"
|
||
bindgetphonenumber="onPostPayBindPhone"
|
||
>授权手机号</button>
|
||
<view wx:if="{{hasPhone && !isProfileComplete}}" class="post-pay-guide-btn profile" bindtap="goToCompleteProfile">去完善资料</view>
|
||
</view>
|
||
</view>
|
||
|
||
<!-- 错误内容 -->
|
||
<view class="error-content" wx:if="{{hasError}}">
|
||
<text class="error-title">错误信息</text>
|
||
<text class="error-message">{{errorMessage}}</text>
|
||
<view class="retry-btn" bindtap="retake">
|
||
<text class="retry-text">重新分析</text>
|
||
</view>
|
||
</view>
|
||
|
||
<!-- 报告预览区:未解锁时整区加盖高遮罩,避免概述/盖洛普等全文外露 -->
|
||
<view class="report-gate-wrap" wx:if="{{!hasError}}">
|
||
<view
|
||
class="card personality-card {{(payInfo.requiresPayment && !payInfo.isPaid) ? 'personality-card--locked' : ''}}"
|
||
>
|
||
<text class="card-title">性格类型分析</text>
|
||
|
||
<view class="personality-type">
|
||
<text class="type-code">{{result.mbti}}</text>
|
||
<text class="type-name">{{result.title}}</text>
|
||
<text class="type-desc">{{result.summary}}</text>
|
||
</view>
|
||
|
||
<view class="type-details type-details--wrap">
|
||
<view class="type-box pdp-box">
|
||
<text class="type-emoji" wx:if="{{result.pdpEmoji}}">{{result.pdpEmoji}}</text>
|
||
<text class="type-label">PDP主性格</text>
|
||
<text class="type-value">{{result.pdp || '--'}}</text>
|
||
<text class="type-sub" wx:if="{{result.pdpAux}}">辅助: {{result.pdpAux}}</text>
|
||
</view>
|
||
<view class="type-box disc-box">
|
||
<text class="type-emoji type-emoji--disc">◎</text>
|
||
<text class="type-label">DISC类型</text>
|
||
<text class="type-value">{{result.disc || '--'}}型</text>
|
||
<text class="type-sub" wx:if="{{result.discAux}}">辅助: {{result.discAux}}</text>
|
||
</view>
|
||
<!-- SBTI:重构为盒子家族成员,占据全宽 -->
|
||
<view
|
||
class="type-box sbti-box"
|
||
wx:if="{{showSbtiFace && (result.sbtiCode || result.sbtiCn)}}"
|
||
>
|
||
<text class="type-emoji">✨</text>
|
||
<text class="type-label">SBTI解读</text>
|
||
<text class="type-value">{{result.sbtiCode}}({{result.sbtiCn}})</text>
|
||
<text class="type-desc-small">{{result.sbtiMainTypeDesc}}</text>
|
||
</view>
|
||
</view>
|
||
|
||
<view class="advantages-box" wx:if="{{result.traits.length > 0}}">
|
||
<text class="advantages-label">主要优势</text>
|
||
<view class="advantages-list">
|
||
<view class="advantage-pill" wx:for="{{result.traits}}" wx:key="*this">
|
||
<text class="advantage-pill-text">{{item}}</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
</view>
|
||
|
||
<view
|
||
class="card report-gate-teaser {{(payInfo.requiresPayment && !payInfo.isPaid) ? 'report-gate-teaser--locked' : ''}}"
|
||
wx:if="{{result.summary}}"
|
||
>
|
||
<text class="card-title">📝 性格概述</text>
|
||
<text class="card-text">{{result.summary}}</text>
|
||
</view>
|
||
|
||
<view
|
||
class="card gallup-card report-gate-teaser {{(payInfo.requiresPayment && !payInfo.isPaid) ? 'report-gate-teaser--locked' : ''}}"
|
||
wx:if="{{result.gallupTop3.length > 0}}"
|
||
>
|
||
<text class="card-title">盖洛普前三大优势</text>
|
||
<view class="gallup-list">
|
||
<view class="gallup-item" wx:for="{{result.gallupTop3}}" wx:key="*this">
|
||
<text class="gallup-rank">{{index + 1}}</text>
|
||
<text class="gallup-text">{{item}}</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
<!-- 未解锁:三大生活场景仅标题 + 占位行(正文付费后见) -->
|
||
<view class="card scene-teaser-bundle" wx:if="{{payInfo.requiresPayment && !payInfo.isPaid}}">
|
||
<text class="scene-bundle-hint">以下版块解锁后展示完整正文</text>
|
||
<view class="scene-teaser-item">
|
||
<text class="scene-teaser-title">职业发展方向</text>
|
||
<view class="scene-teaser-lines">
|
||
<view class="scene-teaser-line"></view>
|
||
<view class="scene-teaser-line scene-teaser-line--short"></view>
|
||
</view>
|
||
</view>
|
||
<view class="scene-teaser-item">
|
||
<text class="scene-teaser-title">家庭亲子关系</text>
|
||
<view class="scene-teaser-lines">
|
||
<view class="scene-teaser-line"></view>
|
||
<view class="scene-teaser-line scene-teaser-line--short"></view>
|
||
</view>
|
||
</view>
|
||
<view class="scene-teaser-item scene-teaser-item--last">
|
||
<text class="scene-teaser-title">寻找合伙人</text>
|
||
<view class="scene-teaser-lines">
|
||
<view class="scene-teaser-line"></view>
|
||
<view class="scene-teaser-line scene-teaser-line--short"></view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
<!-- 全幅遮罩 + 底部操作(覆盖性格概述、盖洛普等主要预览,仅留顶部少量「悬念」) -->
|
||
<view
|
||
class="report-gate-overlay"
|
||
wx:if="{{payInfo.requiresPayment && !payInfo.isPaid}}"
|
||
>
|
||
<view class="report-gate-gradient"></view>
|
||
<view class="report-gate-cta-wrap">
|
||
<view class="report-gate-panel">
|
||
<text class="paywall-fake-title">完整版深度解析</text>
|
||
<text class="paywall-tip">含面相、骨相、人际与职业 / 家庭 / 合伙三大场景</text>
|
||
<view class="paywall-btn paywall-btn-inline paywall-btn--compact" bindtap="onTapUnlockPay">
|
||
<text class="paywall-btn-main">{{payInfo.amountYuan || 1}} 元解锁</text>
|
||
</view>
|
||
<text class="paywall-tip paywall-tip-panel">解锁后可在「历史记录」再次查看;绑定手机与资料见上方绿色提示条</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
<!-- ========== 详细分析区(解锁后可见) ========== -->
|
||
<block wx:if="{{!hasError && (!payInfo.requiresPayment || payInfo.isPaid)}}">
|
||
|
||
<!-- 生活场景深度分析(AI 或本地兜底) -->
|
||
<view class="card scene-detail-card" wx:if="{{result.careerDevelopment}}">
|
||
<text class="card-title">职业发展方向</text>
|
||
<text class="card-text">{{result.careerDevelopment}}</text>
|
||
</view>
|
||
<view class="card scene-detail-card" wx:if="{{result.familyParenting}}">
|
||
<text class="card-title">家庭亲子关系</text>
|
||
<text class="card-text">{{result.familyParenting}}</text>
|
||
</view>
|
||
<view class="card scene-detail-card" wx:if="{{result.partnerCofounder}}">
|
||
<text class="card-title">寻找合伙人</text>
|
||
<text class="card-text">{{result.partnerCofounder}}</text>
|
||
</view>
|
||
|
||
<!-- 面相分析 -->
|
||
<block wx:if="{{result.faceAnalysis}}">
|
||
<!-- 完整结构化面相(旧 object 格式) -->
|
||
<view class="card" wx:if="{{result.faceAnalysis.facialFeatures && result.faceAnalysis.facialFeatures.length > 0}}">
|
||
<text class="card-title">面部特征分析</text>
|
||
<view class="feature-list">
|
||
<view class="feature-item" wx:for="{{result.faceAnalysis.facialFeatures}}" wx:key="label">
|
||
<text class="feature-label">{{item.label}}:</text>
|
||
<text class="feature-desc">{{item.description}}</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</block>
|
||
<!-- 字符串版面相(新 prompt 返回) -->
|
||
<view class="card" wx:elif="{{result.faceAnalysisText}}">
|
||
<text class="card-title">面相分析</text>
|
||
<text class="card-text">{{result.faceAnalysisText}}</text>
|
||
</view>
|
||
|
||
<!-- 骨相分析 -->
|
||
<block wx:if="{{result.boneAnalysis && result.boneAnalysis.boneFormSummary}}">
|
||
<!-- 完整结构化骨相(旧 object 格式) -->
|
||
<view class="card">
|
||
<text class="card-title">骨相分析(《冰鉴》八骨)</text>
|
||
<view class="bone-content">
|
||
<view class="bone-item" wx:if="{{result.boneAnalysis.boneFormSummary.elementType}}">
|
||
<text class="bone-label">五行形相:</text>
|
||
<text class="bone-text">{{result.boneAnalysis.boneFormSummary.elementType}}</text>
|
||
</view>
|
||
<view class="bone-item" wx:if="{{result.boneAnalysis.boneFormSummary.boneFleshRelation}}">
|
||
<text class="bone-label">骨肉关系:</text>
|
||
<text class="bone-text">{{result.boneAnalysis.boneFormSummary.boneFleshRelation}}</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</block>
|
||
<!-- 字符串版骨相(新 prompt 返回) -->
|
||
<view class="card" wx:elif="{{result.boneAnalysisText}}">
|
||
<text class="card-title">骨相分析(《冰鉴》八骨)</text>
|
||
<text class="card-text">{{result.boneAnalysisText}}</text>
|
||
</view>
|
||
|
||
<!-- 人际关系 -->
|
||
<view class="card" wx:if="{{result.relationship}}">
|
||
<text class="card-title">人际关系与团队合作</text>
|
||
<text class="card-text">{{result.relationship}}</text>
|
||
</view>
|
||
|
||
<!-- 企业版:简历亮点 -->
|
||
<view class="card" wx:if="{{result.resumeHighlights}}">
|
||
<text class="card-title">简历亮点</text>
|
||
<text class="card-text">{{result.resumeHighlights}}</text>
|
||
</view>
|
||
|
||
<!-- 企业版:职业画像 portrait -->
|
||
<view class="card" wx:if="{{result.portrait}}">
|
||
<text class="card-title">职业画像</text>
|
||
<view class="enterprise-section" wx:if="{{result.portrait.coreStrengths && result.portrait.coreStrengths.length > 0}}">
|
||
<text class="enterprise-label">核心优势</text>
|
||
<view class="enterprise-tags">
|
||
<text class="enterprise-tag" wx:for="{{result.portrait.coreStrengths}}" wx:key="*this">{{item}}</text>
|
||
</view>
|
||
</view>
|
||
<view class="enterprise-section" wx:if="{{result.portrait.coreRisks && result.portrait.coreRisks.length > 0}}">
|
||
<text class="enterprise-label">潜在风险</text>
|
||
<view class="enterprise-tags">
|
||
<text class="enterprise-tag risk" wx:for="{{result.portrait.coreRisks}}" wx:key="*this">{{item}}</text>
|
||
</view>
|
||
</view>
|
||
<view class="enterprise-section" wx:if="{{result.portrait.workStyle}}">
|
||
<text class="enterprise-label">工作风格</text>
|
||
<text class="card-text">{{result.portrait.workStyle}}</text>
|
||
</view>
|
||
</view>
|
||
|
||
<!-- 企业版:HR视角 hrView -->
|
||
<view class="card" wx:if="{{result.hrView}}">
|
||
<text class="card-title">HR视角</text>
|
||
<view class="enterprise-section" wx:if="{{result.hrView.roleRecommend}}">
|
||
<text class="enterprise-label">岗位推荐</text>
|
||
<view wx:if="{{result.hrView.roleRecommend.bestFit && result.hrView.roleRecommend.bestFit.length > 0}}">
|
||
<text class="enterprise-sublabel">最适合</text>
|
||
<view class="enterprise-tags">
|
||
<text class="enterprise-tag" wx:for="{{result.hrView.roleRecommend.bestFit}}" wx:key="*this">{{item}}</text>
|
||
</view>
|
||
</view>
|
||
<view wx:if="{{result.hrView.roleRecommend.notSuitable && result.hrView.roleRecommend.notSuitable.length > 0}}" style="margin-top: 12rpx;">
|
||
<text class="enterprise-sublabel">不适合</text>
|
||
<view class="enterprise-tags">
|
||
<text class="enterprise-tag risk" wx:for="{{result.hrView.roleRecommend.notSuitable}}" wx:key="*this">{{item}}</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="enterprise-section" wx:if="{{result.hrView.lifecycle}}">
|
||
<text class="enterprise-label">成长周期</text>
|
||
<view class="lifecycle-list">
|
||
<view class="lifecycle-item" wx:if="{{result.hrView.lifecycle.onboarding}}">
|
||
<text class="lifecycle-key">入职适应</text>
|
||
<text class="lifecycle-val">{{result.hrView.lifecycle.onboarding}}</text>
|
||
</view>
|
||
<view class="lifecycle-item" wx:if="{{result.hrView.lifecycle.probation}}">
|
||
<text class="lifecycle-key">试用期</text>
|
||
<text class="lifecycle-val">{{result.hrView.lifecycle.probation}}</text>
|
||
</view>
|
||
<view class="lifecycle-item" wx:if="{{result.hrView.lifecycle.growth}}">
|
||
<text class="lifecycle-key">成长期</text>
|
||
<text class="lifecycle-val">{{result.hrView.lifecycle.growth}}</text>
|
||
</view>
|
||
<view class="lifecycle-item" wx:if="{{result.hrView.lifecycle.retention}}">
|
||
<text class="lifecycle-key">留人因素</text>
|
||
<text class="lifecycle-val">{{result.hrView.lifecycle.retention}}</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="enterprise-section" wx:if="{{result.hrView.performance}}">
|
||
<text class="enterprise-label">绩效潜力</text>
|
||
<text class="card-text" wx:if="{{result.hrView.performance.potential}}">潜力:{{result.hrView.performance.potential}}</text>
|
||
<view wx:if="{{result.hrView.performance.drivers && result.hrView.performance.drivers.length > 0}}" style="margin-top: 8rpx;">
|
||
<text class="enterprise-sublabel">驱动因子:</text>
|
||
<text class="card-text">{{result.hrView.performance.drivers.join('、')}}</text>
|
||
</view>
|
||
</view>
|
||
<view class="enterprise-section" wx:if="{{result.hrView.teamFit}}">
|
||
<text class="enterprise-label">团队适配</text>
|
||
<text class="card-text">{{result.hrView.teamFit.bestTeam || ''}}</text>
|
||
<text class="card-text" wx:if="{{result.hrView.teamFit.manageAdvice}}" style="margin-top: 8rpx; display: block;">管理建议:{{result.hrView.teamFit.manageAdvice}}</text>
|
||
</view>
|
||
</view>
|
||
|
||
<!-- 企业版:老板视角 bossView -->
|
||
<view class="card boss-card" wx:if="{{result.bossView}}">
|
||
<text class="card-title">老板视角</text>
|
||
<text class="boss-headline" wx:if="{{result.bossView.headline}}">{{result.bossView.headline}}</text>
|
||
<view class="boss-metrics" wx:if="{{result.bossView.metrics && result.bossView.metrics.length > 0}}">
|
||
<view class="boss-metric" wx:for="{{result.bossView.metrics}}" wx:key="label">
|
||
<text class="boss-metric-label">{{item.label}}</text>
|
||
<text class="boss-metric-value {{item.level}}">{{item.value}}</text>
|
||
</view>
|
||
</view>
|
||
<text class="card-text" wx:if="{{result.bossView.costInsight}}" style="margin-top: 16rpx;">用人成本预判:{{result.bossView.costInsight}}</text>
|
||
</view>
|
||
|
||
</block>
|
||
|
||
<!-- 成交链路已迁至底部固定操作栏 -->
|
||
<view class="face-journey-deprecated" wx:if="{{false}}">
|
||
<view class="face-journey__title">
|
||
<text class="face-journey__title-main">继续下一步</text>
|
||
<text class="face-journey__title-sub">完整面相 + 性格报告只差两步</text>
|
||
</view>
|
||
|
||
<view class="face-journey-step face-journey-step--purple" bindtap="goToQuestionnaireFromFace">
|
||
<view class="face-journey-step__no">01</view>
|
||
<view class="face-journey-step__body">
|
||
<text class="face-journey-step__title">补做四套性格测评</text>
|
||
<text class="face-journey-step__desc">MBTI · PDP · DISC · SBTI 各测一次,面相 + 问卷组合才解锁完整人格画像。</text>
|
||
</view>
|
||
<text class="face-journey-step__arrow">›</text>
|
||
</view>
|
||
|
||
<view class="face-journey-step face-journey-step--indigo" bindtap="goToDeepServiceFromFace">
|
||
<view class="face-journey-step__no">02</view>
|
||
<view class="face-journey-step__body">
|
||
<text class="face-journey-step__title">升级深度解读方案</text>
|
||
<text class="face-journey-step__desc">个人深读 / 团队适配 / 企业岗位匹配。综合面相、性格与行为风格出具可落地建议。</text>
|
||
</view>
|
||
<text class="face-journey-step__arrow">›</text>
|
||
</view>
|
||
|
||
</view>
|
||
</view>
|
||
|
||
<!-- 固定底部操作栏:三按钮常驻 -->
|
||
<view class="result-action-bar" wx:if="{{!isAnalyzing && showResult && !hasError}}">
|
||
<view class="result-action-bar__btn result-action-bar__btn--test" bindtap="goToQuestionnaireFromFace">
|
||
<text class="result-action-bar__ic">🧠</text>
|
||
<text class="result-action-bar__label">详细性格测试</text>
|
||
</view>
|
||
<view class="result-action-bar__btn result-action-bar__btn--deep" bindtap="goToDeepServiceFromFace">
|
||
<text class="result-action-bar__ic">💎</text>
|
||
<text class="result-action-bar__label">找专家·深度解读</text>
|
||
</view>
|
||
<button class="result-action-bar__btn result-action-bar__btn--share" open-type="share">
|
||
<text class="result-action-bar__ic">📣</text>
|
||
<view class="result-action-bar__share-body">
|
||
<text class="result-action-bar__label">分享赚</text>
|
||
<text class="result-action-bar__label-hl">90%</text>
|
||
</view>
|
||
</button>
|
||
</view>
|
||
</view>
|