duidui_mini_program/pages/camp_task_objective_questions_result/index.wxml
2026-03-27 10:41:46 +08:00

162 lines
8.1 KiB
Plaintext

<view class="container">
<!-- 新增的整体预览页面 -->
<view class="result-overview" wx:if="{{!showDetail}}">
<!-- 加载状态 -->
<view class="loading-container" wx:if="{{loading}}">
<view class="loading-content">
<view class="loading-spinner">
<view class="spinner-circle"></view>
</view>
<text class="loading-text">加载中...</text>
</view>
</view>
<block wx:else>
<!-- 顶部成绩展示 -->
<view class="score-section">
<view class="score-main">{{correctCount}}/{{totalCount}}</view>
<view class="score-desc {{isQualified ? 'qualified' : 'unqualified'}}">{{isQualified ? '恭喜达标' : '未达标'}}</view>
</view>
<!-- 答题情况统计 -->
<view class="stats-section">
<view class="stats-item">
<text class="stats-value">{{correctRate}}%</text>
<text class="stats-label">正确率</text>
</view>
<view class="stats-divider"></view>
<view class="stats-item">
<text class="stats-value">{{usedTime}}</text>
<text class="stats-label">用时</text>
</view>
</view>
<!-- 题目列表 -->
<view class="questions-list">
<view class="list-header">
<text class="header-title">答题情况</text>
<view class="status-legend">
<view class="legend-item">
<view class="legend-circle correct"></view>
<text>正确</text>
</view>
<view class="legend-item">
<view class="legend-circle wrong"></view>
<text>错误</text>
</view>
<view class="legend-item">
<view class="legend-circle unanswered"></view>
<text>未答</text>
</view>
</view>
</view>
<view class="question-items">
<view class="question-item" wx:for="{{questions}}" wx:key="id">
<view class="circle-index" bindtap="jumpToQuestion" data-index="{{index}}">
<view class="circle-bg"></view>
<view class="circle-arc {{item.cssClass}}"></view>
<text class="circle-text">{{index + 1}}</text>
</view>
</view>
</view>
</view>
<!-- 统一的底部按钮组 -->
<view class="bottom-btns">
<block wx:if="{{!showDetail}}">
<button class="btn-outline" bindtap="showAnalysis">查看解析</button>
<button class="btn-blue" bindtap="retakeQuiz">重新答题</button>
</block>
<block wx:else>
<button class="btn-outline" bindtap="showSummary">返回结算</button>
<button class="btn-blue" bindtap="retakeQuiz">重新答题</button>
</block>
</view>
</block>
</view>
<!-- 详细解析页面(与答题页相同的双层布局 + 解析) -->
<block wx:else>
<view class="container">
<!-- 加载状态 -->
<view class="loading-container" wx:if="{{loading}}">
<view class="loading-content">
<view class="loading-spinner">
<view class="spinner-circle"></view>
</view>
<text class="loading-text">加载中...</text>
</view>
</view>
<block wx:else>
<view class="detail-wrap" style="height: {{swiperHeight}}px;">
<!-- 背景层:仅当当前题目有关联材料时显示 -->
<view class="layer-back" wx:if="{{currentQuestionMaterial}}" style="height: {{swiperHeight}}px;">
<view class="material-title-fixed">
<text class="section-title">资料</text>
<view class="section-title-underline"></view>
</view>
<scroll-view scroll-y
class="material-scroll-below-title"
style="height: {{materialScrollHeight}}px;"
enhanced="{{true}}"
show-scrollbar="{{true}}"
bounces="{{true}}">
<view class="section section-material">
<view class="material-body">
<rich-text nodes="{{currentQuestionMaterial.content}}" selectable="{{true}}" class="material-rich"></rich-text>
</view>
</view>
<view class="material-placeholder"></view>
</scroll-view>
</view>
<!-- 前置层:问题面板 -->
<view class="movable-area panel-area" style="height: {{movableAreaHeight}}px;">
<view class="movable-panel question-panel-wrap" style="height: {{panelHeight}}px; transform: translateY({{panelY}}px);">
<!-- 仅当有材料时显示拖拽条 -->
<view class="panel-drag-handle"
wx:if="{{currentQuestionMaterial}}"
bindtouchstart="onPanelDragStart"
catchtouchmove="onPanelDragMove"
bindtouchend="onPanelDragEnd"
bindtouchcancel="onPanelDragEnd">
<view class="panel-drag-bar"></view>
</view>
<view class="section section-question">
<swiper class="content-swiper question-content-swiper"
current="{{currentQuestionIndex}}"
bindchange="onQuestionChange"
bindanimationfinish="onQuestionAnimationFinish">
<swiper-item wx:for="{{questions}}"
wx:key="id"
wx:for-index="qIndex"
wx:for-item="q"
class="content-swiper-item">
<view class="question-body">
<question-display
question="{{q}}"
question-index="{{qIndex}}"
answers="{{[]}}"
option-markers="{{optionMarkers}}"
show-analysis="{{true}}"
show-answer-icon="{{true}}"
clickable="{{false}}">
</question-display>
</view>
</swiper-item>
</swiper>
</view>
</view>
</view>
</view>
<!-- 底部按钮组 -->
<view class="bottom-btns">
<button class="btn-outline" bindtap="showSummary">返回结算</button>
<button class="btn-blue" bindtap="retakeQuiz">重新答题</button>
</view>
</block>
</view>
</block>
</view>