Blame view

src/main/resources/templates/monitor/apilog/apilog.html 11.8 KB
周峰 authored
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!DOCTYPE HTML>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="gray-bg">
<div class="container-div">
    <div class="row">
        <div class="col-sm-12 select-info">
            <form id="formId">
                <div class="select-list">
                    <ul>
                        <li>
                            <label>API:</label>
                            <select name="apiName">
                                <option value=""></option>
                                <option th:each="item:${@apiLogService.getApiNameList()}" th:value="${item}" th:text="${item}"></option>
                            </select>
                        </li>
                        <li>
                            <label>请求方:</label>
                            <select name="requestFrom">
                                <option value=""></option>
                                <option th:each="item:${@apiLogService.getRequestFromList()}" th:value="${item}" th:text="${item}"></option>
                            </select>
                        </li>
                        <li>
                            <label>响应方:</label>
                            <select name="responseBy">
                                <option value=""></option>
                                <option th:each="item:${@apiLogService.getResponseByList()}" th:value="${item}" th:text="${item}"></option>
                            </select>
                        </li>
                        <li>
                            <label>httpCode:</label>
                            <select name="httpCode">
                                <option value=""></option>
                                <option th:each="item:${@apiLogService.getHttpCodeList()}" th:value="${item}" th:text="${item}"></option>
                            </select>
                        </li>
                        <li>
                            <label>retCode:</label>
                            <select name="retCode">
                                <option value=""></option>
周峰 authored
44
                                <option th:each="item:${@apiLogService.getRetCodeList()}" th:value="${item}" th:text="${item}"></option>
周峰 authored
45
46
47
                            </select>
                        </li>
                        <li>
周峰 authored
48
49
50
51
52
53
54
55
                            <label>异常:</label>
                            <select name="hasException">
                                <option value=""></option>
                                <option value="1">有异常</option>
                                <option value="0">无异常</option>
                            </select>
                        </li>
                        <li>
周峰 authored
56
57
                            <label>响应时间 &gt; </label>
                            <input type="text" name="paramDuration" placeholder="1000毫秒"/>
周峰 authored
58
59
60
61
62
63
64
65
                        </li>
                        <li class="time">
                            <label>请求时间:</label>
                            <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="beginRequestTime"/>
                            <span>-</span>
                            <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="endRequestTime"/>
                        </li>
                        <li>
周峰 authored
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
                            <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i
                                    class="fa fa-search"></i>&nbsp;搜索</a>
                            <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i
                                    class="fa fa-refresh"></i>&nbsp;重置</a>
                        </li>
                    </ul>
                </div>
            </form>
        </div>
        <div class="btn-group hidden-xs" id="toolbar" role="group">
            <a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()"
               shiro:hasPermission="apilog:apiLog:add">
                <i class="fa fa-plus"></i> 新增
            </a>
            <a class="btn btn-outline btn-primary single disabled" onclick="$.operate.edit()"
               shiro:hasPermission="apilog:apilog:edit">
                <i class="fa fa-edit"></i> 修改
            </a>
            <a class="btn btn-outline btn-danger btn-rounded multiple disabled" onclick="$.operate.batRemove()"
               shiro:hasPermission="apilog:apiLog:remove">
                <i class="fa fa-trash-o"></i> 删除
            </a>
        </div>

        <div class="col-sm-12 select-info table-striped">
            <table id="bootstrap-table" data-mobile-responsive="true"></table>
        </div>
    </div>
</div>
<div th:include="include :: footer"></div>
<script th:inline="javascript">
    var editFlag = [[${@permission.hasPermi('apilog:apiLog:edit')}]];
    var removeFlag = [[${@permission.hasPermi('apilog:apiLog:remove')}]];
    var prefix = ctx + "monitor/apilog"

    $(function () {
        var options = {
            url: prefix + "/list",
周峰 authored
104
105
106
107
            detailUrl: prefix + "/list/{id}",
            // createUrl: prefix + "/add",
            // updateUrl: prefix + "/edit/{id}",
            // removeUrl: prefix + "/remove",
周峰 authored
108
            modalName: "接口调用日志",
周峰 authored
109
110
            pageSize: 30,
            columns: [
周峰 authored
111
112
                {
                    field: 'id',
周峰 authored
113
114
115
116
117
118
119
120
                    title: 'id',
                    visible: true
                },
                {
                    title: '操作',
                    align: 'center',
                    formatter: function (value, row, index) {
                        var actions = [];
121
                        actions.push('<a class="btn btn-success btn-xs " href="#" onclick="$.operate.detail(' + row.id + ')">详情</a> ');
周峰 authored
122
123
                        return actions.join('');
                    }
周峰 authored
124
125
                },
                {
126
127
128
129
                    field: 'requestFrom',
                    title: 'from'
                },
                {
周峰 authored
130
131
132
                    field: 'apiName',
                    title: 'API'
                },
周峰 authored
133
                /**
周峰 authored
134
135
136
137
                {
                    field: 'ip',
                    title: 'IP'
                },
周峰 authored
138
                 **/
139
周峰 authored
140
141
142
143
                {
                    field: 'responseBy',
                    title: 'to'
                },
周峰 authored
144
                /**
周峰 authored
145
146
147
148
                {
                    field: 'url',
                    title: '请求地址'
                },
周峰 authored
149
                 **/
周峰 authored
150
151
                {
                    field: 'httpCode',
周峰 authored
152
153
154
155
156
157
158
159
160
161
162
                    title: 'http',
                    formatter: function(value, row, index) {
                        var actions = [];
                        var style = "style='color:green'"
                        if(value>200)
                            style = " style='color:red'";
                        if(value == undefined)
                            value = " "
                        actions.push('<span '+ style + '>'+value+ '</span>')
                        return actions.join(" ")
                    }
周峰 authored
163
164
165
                },
                {
                    field: 'retCode',
周峰 authored
166
167
168
169
170
171
172
173
174
175
176
                    title: 'ret',
                    formatter: function(value, row, index) {
                        var actions = [];
                        var style = "style='color:green'"
                        if(value>200)
                            style = " style='color:red'";
                        if(value == undefined)
                            value = " "
                        actions.push('<span '+ style + '>'+value+ '</span>')
                        return actions.join(" ")
                    }
周峰 authored
177
178
179
180
181
                },
                {
                    field: 'requestTime',
                    title: '请求时间'
                },
周峰 authored
182
                /**
周峰 authored
183
184
185
186
                {
                    field: 'responseTime',
                    title: '响应时间'
                },
周峰 authored
187
                 **/
周峰 authored
188
189
                {
                    field: 'duration',
周峰 authored
190
191
192
193
194
195
196
197
198
199
200
                    title: '耗时',
                    formatter: function(value, row, index) {
                        var actions = [];
                        var style = ""
                        if(value>1000)
                            style = " style='color:red'";
                        if(value == undefined)
                            value = " "
                        actions.push('<span '+ style + ' title="毫秒">'+value+ '</span>')
                        return actions.join(" ")
                    }
周峰 authored
201
                },
周峰 authored
202
                /**
周峰 authored
203
204
                {
                    field: 'requestHeader',
周峰 authored
205
                    title: '请求头'
周峰 authored
206
                },
周峰 authored
207
                 **/
周峰 authored
208
209
210

                {
                    field: 'requestBody',
周峰 authored
211
212
213
                    title: '请求内容',
                    formatter: function(value, row, index) {
                        var actions = [];
周峰 authored
214
                        if(value == undefined || value == '')
周峰 authored
215
                            value = " "
周峰 authored
216
217
                        else
                            actions.push('<pre style="max-height:100px; white-space: pre-wrap; width:350px" ondblclick="copy(this)" title="双击复制">'+value+ '</pre>')
周峰 authored
218
219
                        return actions.join(" ")
                    }
周峰 authored
220
                },
周峰 authored
221
                /**
周峰 authored
222
223
224
225
226
227
                {
                    field: 'responseHeader',
                    title: '响应头'
                },
                 **/
                {
周峰 authored
228
229
230
231
232
233
                    field: 'responseBody',
                    title: '响应内容',
                    formatter: function(value, row, index) {
                        var actions = [];
                        if(value == undefined)
                            value = " "
周峰 authored
234
235
                        else
                            actions.push('<pre style="vertical-align: top; max-height:100px; white-space: pre-wrap; width:350px" ondblclick="copy(this)" title="双击复制">'+value+ '</pre>')
周峰 authored
236
237
                        return actions.join(" ")
                    }
周峰 authored
238
                },
周峰 authored
239
周峰 authored
240
                {
周峰 authored
241
242
243
                    field: 'exceptionMsg',
                    title: '异常信息',
                    formatter: function(value, row, index) {
周峰 authored
244
                        var actions = [];
周峰 authored
245
246
                        if(value == undefined)
                            value = " "
周峰 authored
247
248
                        else
                            actions.push('<span style="color:red">'+value+ '</span>')
周峰 authored
249
                        return actions.join(" ")
周峰 authored
250
                    }
周峰 authored
251
252
                }
                ]
周峰 authored
253
254
255
        };
        $.table.init(options);
    });
周峰 authored
256
257
    /**
周峰 authored
258
259
260
261
    function parseJson(obj){
        var str = obj.innerHTML
        try {
            str = JSON.parse(str);
262
            obj.outerHTML = '<pre style="white-space: pre-wrap; width:350px" ondblclick="unParse(this)">' + JSON.stringify(str, null, 2) + '</pre>';
周峰 authored
263
264
        }catch (e) {
            str = str.split("&amp;").join("&#10;")
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
            obj.outerHTML = '<pre style="white-space: pre-wrap; width:350px" ondblclick="unParse(this)">' + str + '</pre>';
        }
    }

    function unParse(obj) {
        var str = obj.innerHTML;

        obj.outerHTML = '<pre style="white-space: pre-wrap; width:350px" ondblclick="parseJson(this)" title="双击格式化">'+str.replaceAll("\n","")+ '</pre>'
    }
    **/

    function copy(obj) {
        let transfer = document.createElement('textarea');
        document.body.appendChild(transfer);
        transfer.value = obj.innerHTML;
        // transfer.focus();
        transfer.select();
        if (document.execCommand('copy')) {
            document.execCommand('copy');
周峰 authored
284
        }
285
286
        transfer.blur();
        document.body.removeChild(transfer);
周峰 authored
287
    }
周峰 authored
288
289
290
</script>
</body>
</html>