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