1
2
3
4
5
6
7
8
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="业务ID">
9
<j-input placeholder="请输入业务ID" v-model="queryParam.bizId"></j-input>
10
11
12
13
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="业务类型">
14
<j-input placeholder="请选择业务类型" v-model="queryParam.bizType"/>
15
16
17
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
18
<a-form-item label="业务标签">
19
<j-input placeholder="请输入业务标签" v-model="queryParam.bizTag"></j-input>
20
21
22
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
23
24
25
26
<a-form-item label="操作内容">
<j-input placeholder="请输入操作内容" v-model="queryParam.operationMsg"></j-input>
</a-form-item>
</a-col>
27
<a-col :xl="12" :lg="14" :md="16" :sm="24">
28
<a-form-item label="创建日期">
曾湘平
authored
about a year ago
29
<j-date :show-date="true" date-format="YYYY-MM-DD" placeholder="请选择开始时间"
30
31
class="query-group-cust" v-model="queryParam.operationTime_begin"></j-date>
<span class="query-group-split-cust"></span>
曾湘平
authored
about a year ago
32
<j-date :show-date="true" date-format="YYYY-MM-DD" placeholder="请选择结束时间"
33
34
35
36
37
class="query-group-cust" v-model="queryParam.operationTime_end"></j-date>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="操作结果状态">
38
39
<j-dict-select-tag placeholder="请输入操作结果状态容" v-model="queryParam.operationStatus"
dictCode="operation_status"/>
40
41
</a-form-item>
</a-col>
42
43
44
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
45
46
<a-button v-has="'operationLog:export'" type="primary" @click="handleExportXls('操作记录')"
icon="download" style="margin-left: 8px">导出</a-button>
47
48
49
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
</span>
</a-col>
50
51
</a-row>
52
53
54
55
56
</a-form>
</div>
<!-- 查询区域-END -->
57
58
59
60
61
62
<!-- 操作按钮区域 -->
<div class="table-operator">
<j-super-query :fieldList="superFieldList" v-has="'operationLog:superQuery'"
@handleSuperQuery="handleSuperQuery"/>
</div>
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<!-- table区域-begin -->
<div>
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
class="j-table-force-nowrap"
@change="handleTableChange">
谭毅彬
authored
about a year ago
78
79
80
81
82
83
84
85
86
87
88
<template :slot="expandedRowRender" slot-scope="record">
<div style="margin: 0">
<div v-if="record.contentReturn">
<a-button @click="copyToClipboard(record.contentReturn)" type="link" icon="copy" style="vertical-align: revert;"></a-button>
<span style="vertical-align: initial; word-break:break-all; white-space:pre-wrap; overflow:hidden; color:#0066CC;">方法响应内容:{{ record.contentReturn }}</span>
</div>
<div v-if="record.contentException">
<a-button @click="copyToClipboard(record.contentException)" type="link" icon="copy" style="vertical-align: revert;"></a-button>
<span style="vertical-align: initial; word-break:break-all; white-space:pre-wrap; overflow:hidden; color:red">方法异常内容:{{ record.contentException }}</span>
</div>
</div>
89
90
91
92
93
94
95
96
97
98
99
100
101
</template>
<span slot="action" slot-scope="text, record">
<a @click="handleDetail(record)">详情</a>
</span>
</a-table>
</div>
<operation-log-modal ref="modalForm" @ok="modalFormOk"></operation-log-modal>
</a-card>
</template>
102
103
104
105
106
107
108
<script>
import {filterObj} from '@/utils/util';
import '@/assets/less/TableExpand.less'
import {mixinDevice} from '@/utils/mixin'
import {JeecgListMixin} from '@/mixins/JeecgListMixin'
import OperationLogModal from './modules/OperationLogModal'
import JEllipsis from "@comp/jeecg/JEllipsis"
谭毅彬
authored
about a year ago
109
import ClipboardJS from 'clipboard'
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
export default {
name: 'OperationLogList',
mixins: [JeecgListMixin, mixinDevice],
components: {
OperationLogModal,
JEllipsis
},
data() {
let ellipsis1 = (v, l = 80) => (<j-ellipsis value={v} length={l}/>)
return {
description: '操作记录管理页面',
// 表头
columns: [
{
title: '业务ID',
align: "center",
dataIndex: 'bizId',
sorter: true,
129
},
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
{
title: '业务类型',
align: "center",
dataIndex: 'bizType'
},
{
title: '业务标签',
align: "center",
dataIndex: 'bizTag'
},
{
title: '操作内容',
align: "center",
dataIndex: 'operationMsg',
customRender: (t) => ellipsis1(t)
},
{
谭毅彬
authored
about a year ago
147
title: '操作人',
148
149
150
151
align: "center",
dataIndex: 'operatorName'
},
{
谭毅彬
authored
about a year ago
152
title: '操作时间',
153
align: "center",
谭毅彬
authored
about a year ago
154
dataIndex: 'operationTime'
155
156
},
{
谭毅彬
authored
about a year ago
157
title: '操作耗时',
158
align: "center",
谭毅彬
authored
about a year ago
159
dataIndex: 'operationCostTime'
160
}
161
162
163
164
165
166
167
168
],
url: {
list: "/config/operationLog/list",
delete: "/config/operationLog/delete",
deleteBatch: "/config/operationLog/deleteBatch",
exportXlsUrl: "/config/operationLog/exportXls",
importExcelUrl: "config/operationLog/importExcel",
169
},
170
171
dictOptions: {},
superFieldList: [],
谭毅彬
authored
about a year ago
172
expandedRowRender: undefined
173
174
175
176
177
}
},
created() {
this.getSuperFieldList();
},
谭毅彬
authored
about a year ago
178
179
180
mounted() {
this.expandedRowRender = "expandedRowRender";
},
181
182
183
184
185
186
computed: {
importExcelUrl: function () {
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
},
},
methods: {
谭毅彬
authored
about a year ago
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
copyToClipboard(content) {
const clipboard = new ClipboardJS('.copy-button', {
text: () => content
});
clipboard.on('success', () => {
clipboard.destroy();
this.$message.success('已复制到剪贴板');
});
clipboard.on('error', () => {
clipboard.destroy();
this.$message.error('复制失败');
});
clipboard.onClick(event); // 添加这一行来触发点击事件
},
204
205
206
207
208
209
getQueryParams() {
// 重写查询条件
let sqp = {}
if (this.superQueryParams) {
sqp['superQueryParams'] = encodeURI(this.superQueryParams)
sqp['superQueryMatchType'] = this.superQueryMatchType
210
}
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
var param = Object.assign(sqp, this.queryParam, {}, this.filters)
param.field = this.getQueryField()
param.pageNo = this.ipagination.current
param.pageSize = this.ipagination.pageSize
return filterObj(param)
},
initDictConfig() {
},
getSuperFieldList() {
let fieldList = [];
fieldList.push({type: 'string', value: 'bizId', text: '业务ID', dictCode: ''})
fieldList.push({type: 'string', value: 'bizType', text: '业务类型', dictCode: ''})
fieldList.push({type: 'string', value: 'operationMsg', text: '操作内容', dictCode: ''})
fieldList.push({type: 'datetime', value: 'operationTime', text: '操作时间'})
fieldList.push({type: 'int', value: 'operationCostTime', text: '操作耗时', dictCode: ''})
fieldList.push({type: 'string', value: 'contentReturn', text: '方法返回内容', dictCode: ''})
fieldList.push({type: 'string', value: 'contentException', text: '方法异常内容', dictCode: ''})
fieldList.push({type: 'string', value: 'operatorName', text: '操作人姓名', dictCode: ''})
fieldList.push({type: 'int', value: 'operationStatus', text: '操作结果状态', dictCode: 'operation_status'})
this.superFieldList = fieldList
231
232
}
}
233
}
234
235
</script>
<style scoped>
236
@import '~@assets/less/common.less';
237
</style>