126 lines
2.7 KiB
Vue
126 lines
2.7 KiB
Vue
|
<template>
|
|||
|
<view class="fix-top-window">
|
|||
|
<view class="uni-container">
|
|||
|
<uni-stat-table :data="tableData" :filedsMap="popupFieldsMap" :loading="loading" />
|
|||
|
<view class="uni-pagination-box">
|
|||
|
<uni-pagination show-icon show-page-size :page-size="options.pageSize" :current="options.pageCurrent"
|
|||
|
:total="options.total" @change="changePageCurrent" @pageSizeChange="changePageSize" />
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
|
|||
|
<!-- #ifndef H5 -->
|
|||
|
<fix-window />
|
|||
|
<!-- #endif -->
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
|
|||
|
<script>
|
|||
|
import {
|
|||
|
mapfields,
|
|||
|
stringifyQuery,
|
|||
|
getTimeOfSomeDayAgo,
|
|||
|
division,
|
|||
|
format,
|
|||
|
formatDate,
|
|||
|
parseDateTime,
|
|||
|
debounce
|
|||
|
} from '@/js_sdk/uni-stat/util.js'
|
|||
|
import {
|
|||
|
popupFieldsMap
|
|||
|
} from './fieldsMap.js'
|
|||
|
|
|||
|
const panelOption = [{
|
|||
|
title: '错误总数',
|
|||
|
value: 0,
|
|||
|
tooltip: '指应用在某个时间段内出现错误的总数'
|
|||
|
}, {
|
|||
|
title: '错误率',
|
|||
|
value: 0,
|
|||
|
tooltip: '时间范围内的总错误数/应用启动次数,如果小于0.01%,默认显示为0'
|
|||
|
}]
|
|||
|
|
|||
|
export default {
|
|||
|
data() {
|
|||
|
return {
|
|||
|
popupFieldsMap,
|
|||
|
options: {
|
|||
|
pageSize: 20,
|
|||
|
pageCurrent: 1, // 当前页
|
|||
|
total: 0, // 数据总量
|
|||
|
},
|
|||
|
query: {
|
|||
|
error_hash: '',
|
|||
|
create_time: []
|
|||
|
},
|
|||
|
loading: false,
|
|||
|
tableData: []
|
|||
|
}
|
|||
|
},
|
|||
|
onLoad(option) {
|
|||
|
let {
|
|||
|
error_hash,
|
|||
|
create_time
|
|||
|
} = option
|
|||
|
if (error_hash) {
|
|||
|
create_time = Number(create_time)
|
|||
|
this.query.error_hash = error_hash
|
|||
|
this.query.create_time = [create_time, create_time + 24 * 60 * 60 * 1000]
|
|||
|
this.getTableData(stringifyQuery(this.query))
|
|||
|
}
|
|||
|
},
|
|||
|
methods: {
|
|||
|
changePageCurrent(e) {
|
|||
|
this.options.pageCurrent = e.current
|
|||
|
this.getTableData(stringifyQuery(this.query))
|
|||
|
},
|
|||
|
|
|||
|
changePageSize(pageSize) {
|
|||
|
this.options.pageSize = pageSize
|
|||
|
this.options.pageCurrent = 1 // 重置分页
|
|||
|
this.getTableData(stringifyQuery(this.query))
|
|||
|
},
|
|||
|
|
|||
|
|
|||
|
getTableData(query) {
|
|||
|
const {
|
|||
|
pageCurrent
|
|||
|
} = this.options
|
|||
|
this.loading = true
|
|||
|
const db = uniCloud.database()
|
|||
|
db.collection('uni-stat-error-logs')
|
|||
|
.where(query)
|
|||
|
.orderBy('create_time', 'desc')
|
|||
|
.skip((pageCurrent - 1) * this.options.pageSize)
|
|||
|
.limit(this.options.pageSize)
|
|||
|
.get({
|
|||
|
getCount: true
|
|||
|
})
|
|||
|
.then(res => {
|
|||
|
const {
|
|||
|
count,
|
|||
|
data
|
|||
|
} = res.result
|
|||
|
this.options.total = count
|
|||
|
for (const item of data) {
|
|||
|
item.create_time = parseDateTime(item.create_time, 'dateTime')
|
|||
|
}
|
|||
|
this.tableData = data
|
|||
|
})
|
|||
|
.finally(() => {
|
|||
|
this.loading = false
|
|||
|
})
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<style>
|
|||
|
.uni-stat-panel {
|
|||
|
box-shadow: unset;
|
|||
|
border-bottom: 1px solid #eee;
|
|||
|
padding: 0;
|
|||
|
margin: 0 15px;
|
|||
|
}
|
|||
|
</style>
|