Files
ai_dianshang/miniprogram/pages/error-log/index.wxml
2025-11-17 13:32:54 +08:00

105 lines
4.6 KiB
Plaintext
Raw 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.

<!--pages/error-log/index.wxml-->
<view class="error-log-container">
<!-- 页面标题 -->
<view class="header">
<text class="title">错误日志</text>
<view class="header-actions">
<button class="action-btn export-btn" bindtap="exportErrorLogs">导出</button>
<button class="action-btn clear-btn" bindtap="clearErrorLogs">清空</button>
</view>
</view>
<!-- 错误日志列表 -->
<view class="error-list" wx:if="{{errorLogs.length > 0}}">
<view class="error-item" wx:for="{{errorLogs}}" wx:key="id" bindtap="showErrorDetail" data-error="{{item}}">
<view class="error-header">
<view class="error-type {{item.level}}">{{item.type}}</view>
<view class="error-time">{{formatTime(item.timestamp)}}</view>
</view>
<view class="error-message">{{item.message}}</view>
<view class="error-preview" wx:if="{{item.detail.url}}">
<text class="url">{{item.detail.url}}</text>
</view>
</view>
</view>
<!-- 空状态 -->
<view class="empty-state" wx:else>
<view class="empty-icon">📝</view>
<view class="empty-text">暂无错误日志</view>
</view>
<!-- 错误详情弹窗 -->
<view class="error-detail-modal" wx:if="{{showDetail}}" bindtap="closeErrorDetail">
<view class="modal-content" catchtap="">
<view class="modal-header">
<text class="modal-title">错误详情</text>
<view class="close-btn" bindtap="closeErrorDetail">×</view>
</view>
<scroll-view class="modal-body" scroll-y>
<view class="detail-section">
<view class="section-title">基本信息</view>
<view class="detail-item">
<text class="label">时间:</text>
<text class="value">{{formatTime(currentError.timestamp)}}</text>
</view>
<view class="detail-item">
<text class="label">类型:</text>
<text class="value {{currentError.level}}">{{currentError.type}}</text>
</view>
<view class="detail-item">
<text class="label">消息:</text>
<text class="value">{{currentError.message}}</text>
</view>
</view>
<view class="detail-section" wx:if="{{currentError.detail.url}}">
<view class="section-title">请求信息</view>
<view class="detail-item">
<text class="label">URL:</text>
<text class="value url-text">{{currentError.detail.url}}</text>
<button class="copy-btn" bindtap="copyErrorInfo" data-text="{{currentError.detail.url}}">复制</button>
</view>
<view class="detail-item" wx:if="{{currentError.detail.method}}">
<text class="label">方法:</text>
<text class="value">{{currentError.detail.method}}</text>
</view>
<view class="detail-item" wx:if="{{currentError.detail.statusCode}}">
<text class="label">状态码:</text>
<text class="value">{{currentError.detail.statusCode}}</text>
</view>
</view>
<view class="detail-section" wx:if="{{currentError.detail.errMsg}}">
<view class="section-title">错误信息</view>
<view class="error-msg-box">
<text class="error-msg">{{currentError.detail.errMsg}}</text>
<button class="copy-btn" bindtap="copyErrorInfo" data-text="{{currentError.detail.errMsg}}">复制</button>
</view>
</view>
<view class="detail-section" wx:if="{{currentError.detail.response}}">
<view class="section-title">响应数据</view>
<view class="json-box">
<text class="json-text">{{JSON.stringify(currentError.detail.response, null, 2)}}</text>
<button class="copy-btn" bindtap="copyErrorInfo" data-text="{{JSON.stringify(currentError.detail.response, null, 2)}}">复制</button>
</view>
</view>
<view class="detail-section" wx:if="{{currentError.detail.stack}}">
<view class="section-title">堆栈信息</view>
<view class="stack-box">
<text class="stack-text">{{currentError.detail.stack}}</text>
<button class="copy-btn" bindtap="copyErrorInfo" data-text="{{currentError.detail.stack}}">复制</button>
</view>
</view>
</scroll-view>
<view class="modal-footer">
<button class="modal-btn copy-all-btn" bindtap="copyErrorInfo" data-text="{{JSON.stringify(currentError, null, 2)}}">复制完整信息</button>
<button class="modal-btn close-modal-btn" bindtap="closeErrorDetail">关闭</button>
</view>
</view>
</view>
</view>