Files
c/miniprogram/pages/batch/index.wxml
2026-05-11 16:09:44 +08:00

108 lines
4.3 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<view class="container">
<view class="hero fade-up">
<view class="hero-badge">BATCH SCAN</view>
<view class="hero-title">批量文本筛查</view>
<view class="hero-sub">上传TXT文件或手动输入每行一条文本系统自动逐行检测。</view>
</view>
<view class="card fade-up fade-up-delay-1">
<view class="card-title">上传文件</view>
<view class="card-desc">支持TXT文本文件每行一条待检测内容。</view>
<view class="btn-row">
<button class="btn btn-primary" bindtap="chooseFile">选择TXT文件</button>
</view>
<view class="field" wx:if="{{fileName}}">
<view class="row">
<text class="label">已选文件</text>
<text class="value">{{fileName}}</text>
</view>
<view class="row">
<text class="label">文本条数</text>
<text class="value">{{lineCount}} 条</text>
</view>
</view>
</view>
<view class="card fade-up fade-up-delay-1">
<view class="card-title">手动输入</view>
<view class="card-desc">或直接粘贴文本内容,每行一条。</view>
<textarea class="textarea" placeholder="示例:&#10;点击链接领取红包&#10;今天下午三点开会" value="{{inputText}}" bindinput="onInput" />
<view class="btn-row">
<button class="btn btn-ghost" bindtap="fillDemo">填充示例</button>
<button class="btn btn-accent" loading="{{loading}}" bindtap="submit">开始识别</button>
</view>
</view>
<view class="card fade-up fade-up-delay-2" wx:if="{{summary}}">
<view class="card-title">识别汇总</view>
<view class="grid-3">
<view class="kpi">
<view class="kpi-value">{{summary.total}}</view>
<view class="kpi-label">总条数</view>
</view>
<view class="kpi">
<view class="kpi-value">{{summary.spam_count}}</view>
<view class="kpi-label">垃圾信息</view>
</view>
<view class="kpi">
<view class="kpi-value">{{summary.ham_count}}</view>
<view class="kpi-label">正常信息</view>
</view>
</view>
<view class="field">
<view class="row">
<text class="label">垃圾占比</text>
<text class="value">{{summary.spam_ratio_text}}</text>
</view>
<view class="progress-track">
<view class="progress-fill" style="width: {{summary.spam_ratio_text}};"></view>
</view>
</view>
<view class="field">
<view class="row">
<text class="label">拦截占比</text>
<text class="value">{{summary.blocked_ratio_text}}</text>
</view>
<view class="progress-track">
<view class="progress-fill-safe" style="width: {{summary.blocked_ratio_text}};"></view>
</view>
</view>
</view>
<view class="card fade-up fade-up-delay-3" wx:if="{{items.length}}">
<view class="card-title">明细结果</view>
<view class="btn-row" style="margin-bottom: 12rpx;">
<button class="btn btn-ghost" bindtap="exportXLSX">导出Excel文件</button>
<button class="btn btn-ghost" bindtap="copyCSVToClipboard">复制CSV内容</button>
</view>
<view class="list-item" wx:for="{{items}}" wx:key="index">
<view class="item-title">{{item.text}}</view>
<view class="row">
<text class="label">判定结果</text>
<text class="{{item.prediction === 'spam' ? 'status-spam' : 'status-ham'}}">{{item.prediction_text}}</text>
</view>
<view class="row" wx:if="{{item.category_label}}">
<text class="label">分类标签</text>
<text class="status-spam">{{item.category_label}}</text>
</view>
<view class="row">
<text class="label">置信度</text>
<text class="value">{{item.confidence_text}}</text>
</view>
<view class="progress-track">
<view class="{{item.prediction === 'spam' ? 'progress-fill' : 'progress-fill-safe'}}" style="width: {{item.confidence_text}};"></view>
</view>
<view class="field" wx:if="{{item.reason_tokens && item.reason_tokens.length}}">
<text class="field-label">风险关键词</text>
<view class="chip-group">
<text class="tag tag-danger" wx:for="{{item.reason_tokens}}" wx:for-item="tokenItem" wx:key="token" data-token="{{tokenItem.token}}" data-weight="{{tokenItem.weight}}" bindtap="showTokenWeight">{{tokenItem.token}}</text>
</view>
</view>
</view>
</view>
</view>