themblem/scanner/pages/emblemscanner/emblemscanner.wxml
2025-10-29 21:27:29 +00:00

126 lines
4.5 KiB
Plaintext

<view class="wrapper">
<!-- STATE: LOADING -->
<view wx:if="{{ app_state == 'loading' }}" class="loading-spinner">
<view class="spinner"></view>
<text>初始化相机...</text>
</view>
<!-- STATE: SCANNING_CAMERA -->
<block wx:if="{{ app_state == 'scanning_camera' }}">
<!-- QR targeting arcs overlay -->
<view class="qrarc {{ qrarc_class }}">
<image class="topleft arc" src="./assets/arc.png"></image>
<image class="topright arc" src="./assets/arc.png"></image>
<image class="bottomleft arc" src="./assets/arc.png"></image>
<image class="bottomright arc" src="./assets/arc.png"></image>
</view>
<!-- QR markers overlay -->
<view class="qrmarkers {{ qrmarkers_class }}">
<image class="square" src="./assets/qrmarkers.png"></image>
</view>
<!-- On-screen display for hints -->
<view class="osd">
<view class="upper" bindtap="debug_tap">
{{ hint_text }}
</view>
</view>
<!-- WeChat native camera -->
<camera class="camera"
flash="{{ camera_flash }}"
bindready="onCameraReady"
binderror="onCameraError">
</camera>
</block>
<!-- STATE: SCANNING_WEBVIEW -->
<block wx:if="{{ app_state == 'scanning_webview' }}">
<!-- Web-view camera (no overlays) -->
<web-view src="{{ emblem_camera_url }}"
bindmessage="on_webview_message">
</web-view>
</block>
<!-- Debug overlay (available in all states) -->
<view class="debug" wx:if="{{ enable_debug }}">
<view><image src="{{ debug_image_data_url }}"></image></view>
<view wx:for="{{ debug_msgs }}">{{ item }}</view>
<view>state: {{ app_state }} ({{ scan_mode }})</view>
<view>model: {{ phone_model }}</view>
<view>zoom: {{ zoom }} (rule: {{ rule_zoom }})</view>
<view>camera rule: {{ camera_rule.model || 'default' }} (web_view: {{ use_web_view }})</view>
<view wx:if="{{ force_camera }}">FORCE_CAMERA: enabled</view>
<view>sensitivity: {{ camera_sensitivity }}</view>
<view>max zoom: {{ max_zoom }}</view>
<view>result: {{ result }}</view>
</view>
<!-- Bottom action controls (only for camera scanning) -->
<view wx:if="{{ app_state == 'scanning_camera' }}" class="bottomfixed">
<view class="actions">
<view class="half {{ show_tip ? 'brighter' : '' }}" bindtap="show_scanguide">
<view class="icon">
<image src="./assets/play-button.png"></image>
</view>
<view class="text">
扫描指南
</view>
</view>
<view class="half {{ camera_flash == 'torch' ? 'brighter' : '' }}" bindtap="toggle_torch">
<view class="icon">
<image src="./assets/flash-button.png"></image>
</view>
<view class="text">
开启补光
</view>
</view>
</view>
</view>
</view>
<!-- Tooltip -->
<view wx:if="{{ show_tip && show_modal == '' }}" class="tooltip">
<view class="tooltip-content">
<text>将QR码置于框内进行扫描</text>
</view>
</view>
<!-- Service Modal -->
<view wx:if="{{ show_modal == 'service' }}" class="modal">
<view class="modal-content">
<text>服务联系信息</text>
<button bindtap="close_modal">关闭</button>
</view>
</view>
<!-- Verification Spinner -->
<view wx:if="{{ show_modal == 'verifying' }}" class="modal">
<view class="modal-content verifying">
<view class="spinner"></view>
<text>正在验证中...</text>
</view>
</view>
<!-- Verification Failed -->
<view wx:if="{{ show_modal == 'verifyfailed' }}" class="modal">
<view class="modal-content">
<text>验证失败</text>
<button bindtap="restart_camera">重新扫描</button>
<button bindtap="show_service">联系客服</button>
</view>
</view>
<!-- Scan Guide -->
<view wx:if="{{ show_modal == 'scanguide' }}" class="modal">
<view class="modal-content">
<text>扫描指南</text>
<view>1. 将QR码置于框内</view>
<view>2. 保持稳定</view>
<view>3. 确保光线充足</view>
<button bindtap="restart_camera">开始扫描</button>
<button bindtap="show_service">联系客服</button>
</view>
</view>