apilog.html 17.4 KB
<!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 value="cancel_order">cancel_order</option>
                                <option value="cargetsignalread">cargetsignalread</option>
                                <option value="carputsignalread">carputsignalread</option>
                                <option value="create_order">create_order</option>
                                <option value="Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc">Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc</option>
                                <option value="manyEmptyIn">manyEmptyIn</option>
                                <option value="rollersignalread">rollersignalread</option>
                                <option value="service创建agv任务">service创建agv任务</option>
                                <option value="TaskAssign">TaskAssign</option>
                                <option value="TaskCancel">TaskCancel</option>
                                <option value="wcs任务完成">wcs任务完成</option>
                                <option value="仓位分配">仓位分配</option>
                                <option value="删除AGV任务">删除AGV任务</option>
                                <option value="删除AGV点位库存">删除AGV点位库存</option>
                                <option value="删除AGV点位托盘">删除AGV点位托盘</option>
                                <option value="删除上下游工位">删除上下游工位</option>
                                <option value="到达拣选台">到达拣选台</option>
                                <option value="去向分配">去向分配</option>
                                <option value="取货错">取货错</option>
                                <option value="平板创建agv任务">平板创建agv任务</option>
                                <option value="平板绑定工位">平板绑定工位</option>
                                <option value="平板解除工位绑定">平板解除工位绑定</option>
                                <option value="建立AGV点位托盘">建立AGV点位托盘</option>
                                <option value="建立工位库存(批量)">建立工位库存(批量)</option>
                                <option value="更新AGV任务状态">更新AGV任务状态</option>
                                <option value="检验单 检测">检验单 检测</option>
                                <option value="添加下下游工位">添加下下游工位</option>
                                <option value="添加入库单">添加入库单</option>
                                <option value="添加出库单">添加出库单</option>
                                <option value="添加物料">添加物料</option>
                                <option value="空出处理">空出处理</option>
                                <option value="空托盘组出库">空托盘组出库</option>
                                <option value="维护工位物料">维护工位物料</option>
                                <option value="获取空托盘组">获取空托盘组</option>
                                <option value="解锁AGV点位">解锁AGV点位</option>
                                <option value="重入处理">重入处理</option>
                                <option value="锁定AGV点位">锁定AGV点位</option>
                                <option value="锁定AGV点位">wcs输送线交互点位请求托盘</option>
                                <option value="锁定AGV点位">wcs输送线交互点位托盘到达</option>
                            </select>
                        </li>
                        <li>
                            <label>请求方:</label>
                            <select name="requestFrom">
                                <option value=""></option>
                                <option value=""></option>
                                <option value="AGV">AGV</option>
                                <option value="ERP">ERP</option>
                                <option value="ERP系统">ERP系统</option>
                                <option value="PDA">PDA</option>
                                <option value="ROBOT">ROBOT</option>
                                <option value="service">service</option>
                                <option value="wcs">wcs</option>
                                <option value="WMS">WMS</option>
                                <option value="平板">平板</option>
                            </select>
                        </li>
                        <li>
                            <label>响应方:</label>
                            <select name="responseBy">
                                <option value=""></option>
                                <option value="AGV">AGV</option>
                                <option value="AGV_TASK_ASSIGN">AGV_TASK_ASSIGN</option>
                                <option value="AGV_TASK_CANCEL">AGV_TASK_CANCEL</option>
                                <option value="ERP">ERP</option>
                                <option value="WCS_TASK_ASSIGN">WCS_TASK_ASSIGN</option>
                                <option value="WCS_TASK_CANCEL">WCS_TASK_CANCEL</option>
                                <option value="WMS">WMS</option>
                            </select>
                        </li>
                        <li>
                            <label>httpCode:</label>
                            <input type="text" name="httpCode"/>
                        </li>
                        <li>
                            <label>retCode:</label>
                            <input type="text" name="retCode"/>
                        </li>
                        <li>
                            <label>请求内容:</label>
                            <input type="text" name="requestBody"/>
                        </li>
                        <li>
                            <label>异常:</label>
                            <select name="hasException">
                                <option value=""></option>
                                <option value="1">有异常</option>
                                <option value="0">无异常</option>
                            </select>
                        </li>
                        <li>
                            <label>响应时间 &gt; </label>
                            <input type="text" name="paramDuration" placeholder="1000毫秒"/>
                        </li>
                        <li>
                            <label>请求时间:</label>
                            <div style="display: inline-block;">
                            <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="beginRequestTime"/>
                            </div>
                            <span>-</span>
                            <div style="display: inline-block;">
                            <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="endRequestTime"/>
                            </div>
                        </li>
                        <li>
                            <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 () {

        layui.use('laydate', function () {
            var laydate = layui.laydate;
            laydate.render({elem: '#startTime',  theme: 'molv', type: 'datetime', value: getRecentDay(0), isInitValue: true});
            laydate.render({elem: '#endTime',  theme: 'molv', type: 'datetime', value: getRecentDay(7), isInitValue: true})
        });

        function getRecentDay(day){
            var today = new Date();
            var targetday_milliseconds=today.getTime() + 1000*60*60*24*day - 1000*60*60*24*6;
            today.setTime(targetday_milliseconds);
            var tYear = today.getFullYear();
            var tMonth = today.getMonth();
            var tDate = today.getDate();
            var tHours = today.getHours()<10 ? '0'+new Date().getHours() : new Date().getHours();
            var tMinutes = today.getMinutes()<10 ? '0'+new Date().getMinutes() : new Date().getMinutes();
            var tSeconds = today.getSeconds()<10 ? '0'+new Date().getSeconds() : new Date().getSeconds();
            tMonth = doHandleMonth(tMonth + 1);
            tDate = doHandleMonth(tDate);
            return tYear+"-"+tMonth+"-"+tDate+" "+tHours+":"+tMinutes+":"+tSeconds;
        }
        function doHandleMonth(month){
            var m = month;
            if(month.toString().length == 1){
                m = "0" + month;
            }
            return m;
        }

        var options = {
            url: prefix + "/list",
            detailUrl: prefix + "/list/{id}",
            // createUrl: prefix + "/add",
            // updateUrl: prefix + "/edit/{id}",
            // removeUrl: prefix + "/remove",
            modalName: "接口调用日志",
            pageSize: 30,
            columns: [
                {
                    field: 'id',
                    title: 'id',
                    visible: true
                },
                {
                    title: '操作',
                    align: 'center',
                    formatter: function (value, row, index) {
                        var actions = [];
                        actions.push('<a class="btn btn-success btn-xs " href="#" onclick="$.operate.detail(' + row.id + ')">详情</a> ');
                        return actions.join('');
                    }
                },
                {
                    field: 'requestFrom',
                    title: 'from'
                },
                {
                    field: 'apiName',
                    title: 'API'
                },
                /**
                {
                    field: 'ip',
                    title: 'IP'
                },
                 **/

                {
                    field: 'responseBy',
                    title: 'to'
                },
                /**
                {
                    field: 'url',
                    title: '请求地址'
                },
                 **/
                {
                    field: 'httpCode',
                    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(" ")
                    }
                },
                {
                    field: 'retCode',
                    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(" ")
                    }
                },
                {
                    field: 'requestTime',
                    title: '请求时间'
                },
                /**
                {
                    field: 'responseTime',
                    title: '响应时间'
                },
                 **/
                {
                    field: 'duration',
                    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(" ")
                    }
                },
                /**
                {
                    field: 'requestHeader',
                    title: '请求头'
                },
                 **/

                {
                    field: 'requestBody',
                    title: '请求内容',
                    formatter: function(value, row, index) {
                        var actions = [];
                        if(value == undefined || value == '')
                            value = " "
                        else
                            actions.push('<pre style="max-height:100px; white-space: pre-wrap; width:350px" ondblclick="copy(this)" title="双击复制">'+value+ '</pre>')
                        return actions.join(" ")
                    }
                },
                /**
                {
                    field: 'responseHeader',
                    title: '响应头'
                },
                 **/
                {
                    field: 'responseBody',
                    title: '响应内容',
                    formatter: function(value, row, index) {
                        var actions = [];
                        if(value == undefined)
                            value = " "
                        else
                            actions.push('<pre style="vertical-align: top; max-height:100px; white-space: pre-wrap; width:350px" ondblclick="copy(this)" title="双击复制">'+value+ '</pre>')
                        return actions.join(" ")
                    }
                },

                {
                    field: 'exceptionMsg',
                    title: '异常信息',
                    formatter: function(value, row, index) {
                        var actions = [];
                        if(value == undefined)
                            value = " "
                        else
                            actions.push('<span style="color:red">'+value+ '</span>')
                        return actions.join(" ")
                    }
                }
                ]
        };
        $.table.init(options);
    });

    /**
    function parseJson(obj){
        var str = obj.innerHTML
        try {
            str = JSON.parse(str);
            obj.outerHTML = '<pre style="white-space: pre-wrap; width:350px" ondblclick="unParse(this)">' + JSON.stringify(str, null, 2) + '</pre>';
        }catch (e) {
            str = str.split("&amp;").join("&#10;")
            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');
        }
        transfer.blur();
        document.body.removeChild(transfer);
    }
</script>
</body>
</html>