123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- <template>
- <view>
- <view class="uni-header">
- <uni-stat-breadcrumb class="uni-stat-breadcrumb-on-phone" />
- <view class="uni-group">
- <!-- <input class="uni-search" type="text" v-model="query" placeholder="用户/内容" />
- <button class="uni-button" type="default" size="mini" @click="search">搜索</button> -->
- <input class="uni-search" type="text" v-model="query" @confirm="search" :placeholder="$t('common.placeholder.query')" />
- <button class="uni-button hide-on-phone" type="default" size="mini" @click="search">{{$t('common.button.search')}}</button>
- </view>
- </view>
- <view class="uni-container">
- <unicloud-db ref="udb" :collection="collectionName" orderby="create_date desc" field="type, ip, create_date, user_id{username}[0].username as username" :options="options" :where="where" page-data="replace" :orderby="orderby"
- :getcount="true" :page-size="options.pageSize" :page-current="options.pageCurrent" v-slot:default="{data,pagination,loading,error}">
- <uni-table :loading="loading" :emptyText="error.message || '没有更多数据'" border stripe >
- <uni-tr>
- <uni-th align="center">序号</uni-th>
- <uni-th align="center">用户</uni-th>
- <uni-th align="center">内容</uni-th>
- <uni-th align="center">IP</uni-th>
- <uni-th align="center">时间</uni-th>
- </uni-tr>
- <uni-tr v-for="(item,index) in data" :key="index">
- <uni-td align="center">{{(pagination.current -1)*pagination.size + (index+1)}}</uni-td>
- <uni-td align="center">{{item.user_id[0] && item.user_id[0].username || '-'}}</uni-td>
- <uni-td align="center">{{item.type}}</uni-td>
- <uni-td align="center">{{item.ip}}</uni-td>
- <uni-td align="center">
- <uni-dateformat :date="item.create_date" :threshold="[0, 0]" />
- </uni-td>
- </uni-tr>
- </uni-table>
- <view class="uni-pagination-box">
- <uni-pagination show-icon :page-size="pagination.size" v-model="pagination.current" :total="pagination.count"
- @change="onPageChanged" />
- </view>
- </unicloud-db>
- </view>
- </view>
- </template>
- <script>
- const db = uniCloud.database()
- // 表查询配置
- const dbCollectionName = 'uni-id-log, uni-id-users'
- const dbOrderBy = 'create_date' // 排序字段
- const dbSearchFields = ["user_id.username","type", "ip"] // 支持模糊搜索的字段列表
- // 分页配置
- const pageSize = 20
- const pageCurrent = 1
- export default {
- data() {
- return {
- query: '',
- where: '',
- orderby: dbOrderBy,
- collectionName: dbCollectionName,
- options: {
- pageSize,
- pageCurrent
- }
- }
- },
- methods: {
- getWhere() {
- const query = this.query.trim()
- if (!query) {
- return ''
- }
- const queryRe = new RegExp(query, 'i')
- return dbSearchFields.map(name => queryRe + '.test(' + name + ')').join(' || ')
- },
- search() {
- const newWhere = this.getWhere()
- const isSameWhere = newWhere === this.where
- this.where = newWhere
- if (isSameWhere) { // 相同条件时,手动强制刷新
- this.loadData()
- }
- },
- loadData(clear = true) {
- this.$refs.udb.loadData({
- clear
- })
- },
- onPageChanged(e) {
- this.$refs.udb.loadData({
- current: e.current
- })
- },
- navigateTo(url) {
- uni.navigateTo({
- url,
- events: {
- refreshData: () => {
- this.loadData()
- }
- }
- })
- },
- // 多选处理
- selectedItems() {
- var dataList = this.$refs.udb.dataList
- return this.selectedIndexs.map(i => dataList[i]._id)
- },
- //批量删除
- delTable() {
- this.$refs.udb.remove(this.selectedItems())
- },
- // 多选
- selectionChange(e) {
- this.selectedIndexs = e.detail.index
- },
- confirmDelete(id) {
- this.$refs.udb.remove(id)
- }
- }
- }
- </script>
- <style>
- </style>
|