123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- <template>
- <view>
- <view class="uni-header">
- <view class="uni-group">
- <view class="uni-title"></view>
- <view class="uni-sub-title"></view>
- </view>
- <view class="uni-group">
- <input class="uni-search" type="text" v-model="query" @confirm="search" placeholder="请输入搜索内容" />
- <button class="uni-button" type="default" size="mini" @click="search">搜索</button>
- <button class="uni-button" type="default" size="mini" @click="navigateTo('./add')">新增</button>
- <button class="uni-button" type="default" size="mini" :disabled="!selectedIndexs.length"
- @click="delTable">批量删除</button>
- <download-excel class="hide-on-phone" :fields="exportExcel.fields" :data="exportExcelData"
- :type="exportExcel.type" :name="exportExcel.filename">
- <button class="uni-button" type="primary" size="mini">导出 Excel</button>
- </download-excel>
- </view>
- </view>
- <view class="uni-container">
- <unicloud-db ref="udb" :collection="collectionList"
- field="app_status,user_name,user_brand,user_model,api_src,request_parameters,response_parameters,api_status,error_info"
- :where="where" page-data="replace" :orderby="orderby" :getcount="true" :page-size="options.pageSize"
- :page-current="options.pageCurrent" v-slot:default="{data,pagination,loading,error,options}"
- :options="options" loadtime="manual" @load="onqueryload">
- <uni-table ref="table" :loading="loading" :emptyText="error.message || '没有更多数据'" border stripe
- type="selection" @selection-change="selectionChange">
- <uni-tr>
- <uni-th align="center" filter-type="search" @filter-change="filterChange($event, 'app_status')"
- sortable @sort-change="sortChange($event, 'app_status')">app_status</uni-th>
- <uni-th align="center" filter-type="search" @filter-change="filterChange($event, 'user_name')"
- sortable @sort-change="sortChange($event, 'user_name')">user_name</uni-th>
- <uni-th align="center" filter-type="search" @filter-change="filterChange($event, 'user_brand')"
- sortable @sort-change="sortChange($event, 'user_brand')">user_brand</uni-th>
- <uni-th align="center" filter-type="search" @filter-change="filterChange($event, 'user_model')"
- sortable @sort-change="sortChange($event, 'user_model')">user_model</uni-th>
- <uni-th align="center" filter-type="search" @filter-change="filterChange($event, 'api_src')"
- sortable @sort-change="sortChange($event, 'api_src')">api_src</uni-th>
- <uni-th align="center" filter-type="search"
- @filter-change="filterChange($event, 'request_parameters')" sortable
- @sort-change="sortChange($event, 'request_parameters')">request_parameters</uni-th>
- <uni-th align="center" filter-type="search"
- @filter-change="filterChange($event, 'response_parameters')" sortable
- @sort-change="sortChange($event, 'response_parameters')">response_parameters</uni-th>
- <uni-th align="center" filter-type="search" @filter-change="filterChange($event, 'api_status')"
- sortable @sort-change="sortChange($event, 'api_status')">api_status</uni-th>
- <uni-th align="center" filter-type="search" @filter-change="filterChange($event, 'error_info')"
- sortable @sort-change="sortChange($event, 'error_info')">error_info</uni-th>
- <uni-th align="center">操作</uni-th>
- </uni-tr>
- <uni-tr v-for="(item,index) in data" :key="index">
- <uni-td align="center">{{item.app_status}}</uni-td>
- <uni-td align="center">{{item.user_name}}</uni-td>
- <uni-td align="center">{{item.user_brand}}</uni-td>
- <uni-td align="center">{{item.user_model}}</uni-td>
- <uni-td align="center">{{item.api_src}}</uni-td>
- <uni-td align="center">{{item.request_parameters}}</uni-td>
- <uni-td align="center">
- <y-json-view :json="item.response_parameters"/>
- <!-- {{item.response_parameters}} change() -->
- </uni-td>
- <uni-td align="center">{{item.api_status}}</uni-td>
- <uni-td align="center">{{item.error_info}}</uni-td>
- <uni-td align="center">
- <view class="uni-group">
- <button @click="navigateTo('./edit?id='+item._id, false)" class="uni-button" size="mini"
- type="primary">修改</button>
- <button @click="confirmDelete(item._id)" class="uni-button" size="mini"
- type="warn">删除</button>
- </view>
- </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>
- import {
- enumConverter,
- filterToWhere
- } from '../../js_sdk/validator/cyt-logs.js';
- const db = uniCloud.database()
- // 表查询配置
- const dbOrderBy = '' // 排序字段
- const dbSearchFields = [] // 模糊搜索字段,支持模糊搜索的字段列表。联表查询格式: 主表字段名.副表字段名,例如用户表关联角色表 role.role_name
- // 分页配置
- const pageSize = 20
- const pageCurrent = 1
- const orderByMapping = {
- "ascending": "asc",
- "descending": "desc"
- }
- export default {
- data() {
- return {
- collectionList: "cyt-logs",
- query: '',
- where: '',
- orderby: dbOrderBy,
- orderByFieldName: "",
- selectedIndexs: [],
- options: {
- pageSize,
- pageCurrent,
- filterData: {},
- ...enumConverter
- },
- imageStyles: {
- width: 64,
- height: 64
- },
- exportExcel: {
- "filename": "cyt-logs.xls",
- "type": "xls",
- "fields": {
- "app_status": "app_status",
- "user_name": "user_name",
- "user_brand": "user_brand",
- "user_model": "user_model",
- "api_src": "api_src",
- "request_parameters": "request_parameters",
- "response_parameters": "response_parameters",
- "api_status": "api_status",
- "error_info": "error_info"
- }
- },
- exportExcelData: []
- }
- },
- onLoad() {
- this._filter = {}
- },
- onReady() {
- this.$refs.udb.loadData()
- },
- methods: {
- lookdetails(){
-
- },
- onqueryload(data) {
- this.exportExcelData = data
- },
- 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()
- this.where = newWhere
- this.$nextTick(() => {
- this.loadData()
- })
- },
- loadData(clear = true) {
- this.$refs.udb.loadData({
- clear
- })
- },
- onPageChanged(e) {
- this.selectedIndexs.length = 0
- this.$refs.table.clearSelection()
- this.$refs.udb.loadData({
- current: e.current
- })
- },
- navigateTo(url, clear) {
- // clear 表示刷新列表时是否清除页码,true 表示刷新并回到列表第 1 页,默认为 true
- uni.navigateTo({
- url,
- events: {
- refreshData: () => {
- this.loadData(clear)
- }
- }
- })
- },
- // 多选处理
- selectedItems() {
- var dataList = this.$refs.udb.dataList
- return this.selectedIndexs.map(i => dataList[i]._id)
- },
- // 批量删除
- delTable() {
- this.$refs.udb.remove(this.selectedItems(), {
- success: (res) => {
- this.$refs.table.clearSelection()
- }
- })
- },
- // 多选
- selectionChange(e) {
- this.selectedIndexs = e.detail.index
- },
- confirmDelete(id) {
- this.$refs.udb.remove(id, {
- success: (res) => {
- this.$refs.table.clearSelection()
- }
- })
- },
- sortChange(e, name) {
- this.orderByFieldName = name;
- if (e.order) {
- this.orderby = name + ' ' + orderByMapping[e.order]
- } else {
- this.orderby = ''
- }
- this.$refs.table.clearSelection()
- this.$nextTick(() => {
- this.$refs.udb.loadData()
- })
- },
- filterChange(e, name) {
- this._filter[name] = {
- type: e.filterType,
- value: e.filter
- }
- let newWhere = filterToWhere(this._filter, db.command)
- if (Object.keys(newWhere).length) {
- this.where = newWhere
- } else {
- this.where = ''
- }
- this.$nextTick(() => {
- this.$refs.udb.loadData()
- })
- }
- }
- }
- </script>
- <style>
- </style>
|