浏览代码

中台-日志改造-第二步-修改接口日志功能

limeng 2 年之前
父节点
当前提交
8c8af53c89

+ 17 - 5
mybusiness/src/main/java/com/sooka/system/controller/TUInterfaceinfoController.java

@@ -10,9 +10,7 @@ import com.sooka.common.core.domain.AjaxResult;
 import com.sooka.common.core.page.TableDataInfo;
 import com.sooka.common.enums.BusinessType;
 import com.sooka.common.utils.poi.ExcelUtil;
-import com.sooka.system.domain.SysUser;
-import com.sooka.system.domain.TUParamsbusiness;
-import com.sooka.system.domain.TUParamspublic;
+import com.sooka.system.domain.*;
 import com.sooka.system.service.ITUParamsbusinessService;
 import com.sooka.system.service.ITUParamspublicService;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -24,7 +22,6 @@ import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
-import com.sooka.system.domain.TUInterfaceinfo;
 import com.sooka.system.service.ITUInterfaceinfoService;
 
 import javax.annotation.Resource;
@@ -78,6 +75,9 @@ public class TUInterfaceinfoController extends BaseController {
         tuInterfaceinfo.setDeptId(deptId);
         //只查询可用的接口
         tuInterfaceinfo.setStatus("0");
+        //只查询 市共享和省上报的接口
+        tuInterfaceinfo.setShareType1("share_type_1");
+        tuInterfaceinfo.setShareType3("share_type_3");
         startPage();
         List<TUInterfaceinfo> list = tUInterfaceinfoService.selectTUInterfaceinfoList(tuInterfaceinfo);
         mmap.put("list", list.stream().collect(Collectors.toList()));
@@ -186,7 +186,7 @@ public class TUInterfaceinfoController extends BaseController {
     }
 
     /**
-     * 用户状态修改
+     * 状态修改
      */
     @Log(title = "接口管理", businessType = BusinessType.UPDATE)
     @RequiresPermissions("system:interfaceinfo:edit")
@@ -197,4 +197,16 @@ public class TUInterfaceinfoController extends BaseController {
         return toAjax(tUInterfaceinfoService.updateTUInterfaceinfo(interfaceinfo));
     }
 
+    /**
+     * 查询接口日志台账
+     */
+    @PostMapping("/interfaceLogList")
+    @ResponseBody
+    public TableDataInfo interfaceLogList(TUInterfaceinfo interfaceinfo)
+    {
+        startPage();
+        List<TUInterfaceinfo> list = tUInterfaceinfoService.interfaceLogList(interfaceinfo);
+        return getDataTable(list);
+    }
+
 }

+ 16 - 2
mybusiness/src/main/java/com/sooka/system/controller/TULogController.java

@@ -60,16 +60,30 @@ public class TULogController extends BaseController
     }
 
     /**
+     * 跳转日志列表
+     */
+    @GetMapping("/logList/{id}")
+    public String logList(@PathVariable("id") String id, ModelMap modelMap)
+    {
+        modelMap.put("intId",id);
+        return prefix + "/logList";
+    }
+
+    /**
      * 查询接口调用日志列表
      */
     @RequiresPermissions("system:log:list")
     @PostMapping("/list")
     @ResponseBody
-    public TableDataInfo list(TULog tULog)
+    public TableDataInfo list(String id,String loginName, String platformInterfacetype)
     {
+        TULog tULog = new TULog();
+        tULog.setInterfaceinfoId(id);
+        tULog.setLoginName(loginName);
+        tULog.setPlatformInterfacetype(platformInterfacetype);
         startPage();
         List<TULog> list = tULogService.selectTULogList(tULog);
-        return getDataTable(list,this.getTotal(tULog));
+        return getDataTable(list);
     }
 
     /**

+ 1 - 1
mybusiness/src/main/java/com/sooka/system/domain/BaseBusinessEntity.java

@@ -19,7 +19,7 @@ public class BaseBusinessEntity extends BaseEntity {
     private String interfacetype;
 
     /** 调用者部门ID lm 20221101 add **/
-    private String deptId;
+    private Long deptId;
 
     /** 调用者部门 lm 20221101 add **/
     private String deptName;

+ 6 - 0
mybusiness/src/main/java/com/sooka/system/mapper/TUInterfaceinfoMapper.java

@@ -158,4 +158,10 @@ public interface TUInterfaceinfoMapper
      * @return 结果
      * */
     public int pullFrequency();
+
+    /**
+     * 查询接口日志台账
+     * @return 结果
+     */
+    public List<TUInterfaceinfo> interfaceLogList(TUInterfaceinfo interfaceinfo);
 }

+ 6 - 0
mybusiness/src/main/java/com/sooka/system/service/ITUInterfaceinfoService.java

@@ -155,4 +155,10 @@ public interface ITUInterfaceinfoService
      * */
     public int pullFrequency();
 
+    /**
+     * 查询接口日志台账
+     * @return 结果
+     */
+    public List<TUInterfaceinfo> interfaceLogList(TUInterfaceinfo interfaceinfo);
+
 }

+ 1 - 1
mybusiness/src/main/java/com/sooka/system/service/impl/Guiji_Base_Service.java

@@ -45,7 +45,7 @@ public class Guiji_Base_Service {
         tuLog.setInterfaceinfoId(baseBusinessEntity.getInterfaceinfoId());
         tuLog.setInterfaceinfoName(baseBusinessEntity.getInterfaceinfoName());
         /** 写入调用者部门ID,名称 lm 20221101 add **/
-        tuLog.setDeptId(baseBusinessEntity.getDeptId());
+        tuLog.setDeptId(baseBusinessEntity.getDeptId().toString());
         tuLog.setDeptName(baseBusinessEntity.getDeptName());
         tuLog.setIpaddress(ipaddress);
         tuLog.setLoginUser(sysUser.getUserId());

+ 9 - 0
mybusiness/src/main/java/com/sooka/system/service/impl/TUInterfaceinfoServiceImpl.java

@@ -266,4 +266,13 @@ public class TUInterfaceinfoServiceImpl implements ITUInterfaceinfoService
     public int pullFrequency(){
         return tUInterfaceinfoMapper.pullFrequency();
     }
+
+    /**
+     * 查询接口日志台账
+     * @return 结果
+     */
+    @Override
+    public List<TUInterfaceinfo> interfaceLogList(TUInterfaceinfo interfaceinfo){
+        return tUInterfaceinfoMapper.interfaceLogList(interfaceinfo);
+    }
 }

+ 22 - 0
mybusiness/src/main/resources/mapper/system/TUInterfaceinfoMapper.xml

@@ -58,6 +58,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="code != null  and code != ''"> and code = #{code}</if>
             <if test="callsuccnum != null  and callsuccnum != ''"> and callsuccnum = #{callsuccnum}</if>
             <if test="callfailnum != null  and callfailnum != ''"> and callfailnum = #{callfailnum}</if>
+            and share_type in (#{shareType1}, #{shareType3})
         </where>
         order by create_time desc
     </select>
@@ -500,4 +501,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 'share_type_4'
             )
     </select>
+
+    <select id="interfaceLogList" resultMap="TUInterfaceinfoResult">
+        SELECT
+            id,
+            interface_name,
+            share_type,
+            dept_id,
+            dept_name,
+            callsuccnum + callfailnum count,
+            callsuccnum,
+            callfailnum
+        FROM
+            t_u_interfaceinfo
+        <where>
+            <if test="deptId != null  and deptId != ''"> and dept_id = #{deptId}</if>
+            <if test="interfaceName != null  and interfaceName != ''"> and interface_name like concat('%', #{interfaceName}, '%')</if>
+            <if test="shareType != null  and shareType != ''"> and share_type = #{shareType}</if>
+        </where>
+        order by count desc
+    </select>
+
 </mapper>

+ 1 - 1
mybusiness/src/main/resources/templates/apply/record/add.html

@@ -138,7 +138,7 @@
             $.modal.alertError('请先选择接口提供部门');
         }else{
             let url = prefix + '/interfaceinfo/selectInterfaceByDeptId/' + deptId;
-            $.modal.open("请选择接口", url,1050,380,interfaceCallback);
+            $.modal.open("请选择接口", url, ($(window).width() - 50),($(window).height() - 50), interfaceCallback);
         }
     }
 

+ 1 - 1
mybusiness/src/main/resources/templates/apply/record/edit.html

@@ -192,7 +192,7 @@
             $.modal.alertError('请先选择接口提供部门');
         }else{
             let url = prefix + '/interfaceinfo/selectInterfaceByDeptId/' + deptId;
-            $.modal.open("请选择接口", url,1050,380,interfaceCallback);
+            $.modal.open("请选择接口", url, ($(window).width() - 50),($(window).height() - 50), interfaceCallback);
         }
     }
 

+ 4 - 3
mybusiness/src/main/resources/templates/system/log/detail.html

@@ -10,9 +10,9 @@
     <form class="form-horizontal m" id="form-log-edit" th:object="${tULog}">
         <input name="id" th:field="*{id}" type="hidden">
         <div class="form-group">
-            <label class="col-sm-3 control-label">登录人:</label>
+            <label class="col-sm-3 control-label">调用部门:</label>
             <div class="col-sm-8">
-                <input name="loginUser" th:disabled="disabled" th:field="*{loginUser}" class="form-control" type="text">
+                <input name="deptName" th:disabled="disabled" th:field="*{deptName}" class="form-control" type="text">
             </div>
         </div>
         <div class="form-group">
@@ -49,7 +49,7 @@
             <label class="col-sm-3 control-label">平台接口类型:</label>
             <div class="col-sm-8">
                 <select name="platformInterfacetype" th:disabled="disabled" class="form-control m-b"
-                        th:with="type=${@dict.getType('platform_interfacetype')}">
+                        th:with="type=${@dict.getType('share_type')}">
                     <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{platformInterfacetype}"></option>
                 </select>
             </div>
@@ -92,6 +92,7 @@
 <script th:inline="javascript">
     let prefix = ctx + "system/log";
     let platform_interfacetype_datas = [[${@dict.getType('platform_interfacetype')}]];
+    let shareType_datas = [[${@dict.getType('share_type')}]];
     $("#form-log-edit").validate({
         focusCleanup: true
     });

+ 142 - 116
mybusiness/src/main/resources/templates/system/log/log.html

@@ -1,61 +1,94 @@
 <!DOCTYPE html>
 <html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
 <head>
-    <th:block th:include="include :: header('接口调用日志列表')"/>
+    <th:block th:include="include :: header('用户列表')" />
+    <th:block th:include="include :: layout-latest-css" />
+    <th:block th:include="include :: ztree-css" />
 </head>
 <body class="gray-bg">
-<div class="container-div">
-    <div class="row">
-        <div class="col-sm-12 search-collapse">
-            <form id="formId">
-                <div class="select-list">
-                    <ul>
-                        <li>
-                            <label>登录名:</label>
-                            <input type="text" name="loginName"/>
-                        </li>
-                        <li>
-                            <label>接口类型:</label>
-                            <select name="platformInterfacetype"
-                                    th:with="type=${@dict.getType('platform_interfacetype')}">
-                                <option value="">所有</option>
-                                <option th:each="dict : ${type}" th:text="${dict.dictLabel}"
-                                        th:value="${dict.dictValue}"></option>
-                            </select>
-                        </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 class="ui-layout-west">
+    <div class="box box-main">
+        <div class="box-header">
+            <div class="box-title">
+                <i class="fa icon-grid"></i> 组织机构
+            </div>
+            <div class="box-tools pull-right">
+                <button type="button" class="btn btn-box-tool" id="btnExpand" title="展开" style="display:none;"><i class="fa fa-chevron-up"></i></button>
+                <button type="button" class="btn btn-box-tool" id="btnCollapse" title="折叠"><i class="fa fa-chevron-down"></i></button>
+                <button type="button" class="btn btn-box-tool" id="btnRefresh" title="刷新部门"><i class="fa fa-refresh"></i></button>
+            </div>
         </div>
-
-        <div class="btn-group-sm" id="toolbar" role="group">
-            <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:log:export">
-                <i class="fa fa-download"></i> 导出
-            </a>
+        <div class="ui-layout-content">
+            <div id="tree" class="ztree"></div>
         </div>
-        <div class="col-sm-12 select-table table-striped">
-            <table id="bootstrap-table"></table>
+    </div>
+</div>
+
+<div class="ui-layout-center">
+    <div class="container-div">
+        <div class="row">
+            <div class="col-sm-12 search-collapse">
+                <form id="formId">
+                    <div class="select-list">
+                        <ul>
+                            <input type="hidden" id="deptId" name="deptId">
+                            <input type="hidden" id="parentId" name="parentId">
+                            <li>
+                                <label>接口名称:</label>
+                                <input type="text" name="interfaceName"/>
+                            </li>
+                            <li>
+                                <label>接口类型:</label>
+                                <select name="shareType"
+                                        th:with="type=${@dict.getType('share_type')}">
+                                    <option value="">所有</option>
+                                    <option th:each="dict : ${type}" th:text="${dict.dictLabel}"
+                                            th:value="${dict.dictValue}"></option>
+                                </select>
+                            </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-sm" id="toolbar" role="group"></div>
+            <div class="col-sm-12 select-table table-striped">
+                <table id="bootstrap-table"></table>
+            </div>
         </div>
     </div>
 </div>
-<th:block th:include="include :: footer"/>
+
+<th:block th:include="include :: footer" />
+<th:block th:include="include :: layout-latest-js" />
+<th:block th:include="include :: ztree-js" />
 <script th:inline="javascript">
-    let viewFlag = [[${@permission.hasPermi('system:log:view')}]];
-    let prefix = ctx + "system/log";
+    let prefix = ctx + "system/interfaceinfo";
+    let log_prefix = ctx + "system/log";
     let platform_interfacetype_datas = [[${@dict.getType('platform_interfacetype')}]];
+    let shareType_datas = [[${@dict.getType('share_type')}]];
 
-    $(function () {
-        var options = {
-            url: prefix + "/list",
-            detailUrl: prefix + "/detail/{id}",
+    $(function() {
+        let panehHidden = false;
+        if ($(this).width() < 769) {
+            panehHidden = true;
+        }
+        $('body').layout({ initClosed: panehHidden, west__size: 185 });
+        queryLogList();
+        queryDeptTree();
+    });
+
+    function queryLogList() {
+        let options = {
+            url: prefix + "/interfaceLogList",
             exportUrl: prefix + "/export",
-            modalName: "接口调用日志",
+            modalName: "接口调用",
             columns: [{
                 checkbox: true
             },
@@ -65,105 +98,98 @@
                     visible: false
                 },
                 {
-                    field: 'status',
-                    title: '状态',
-                    visible: false
-                },
-                {
-                    field: 'remark',
-                    title: '注释',
-                    visible: false
-                },
-                {
-                    field: 'loginUser',
-                    title: '登录人',
-                    visible: false
-                },
-                {
-                    field: 'loginName',
-                    title: '登录名'
-                },
-                {
-                    field: 'createTime',
-                    title: '调用时间'
-                },
-                {
-                    field: 'interfaceinfoId',
-                    title: '调用接口id',
-                    visible: false
-                },
-                {
-                    field: 'interfaceinfoName',
-                    title: '调用接口名'
-                },
-                {
-                    field: 'operationStatus',
-                    title: '调用结果',
-                    sortable: true,
-                    formatter: function (value,row,index) {
-                        return value == 1 ? '<span class="badge badge-primary">成功</span>' : '<span class="badge badge-danger">失败</span>';
-                    }
-                },
-                {
-                    field: 'ipaddress',
-                    title: 'ip地址'
-                },
-                {
-                    field: 'os',
-                    title: '操作系统',
-                    cellStyle:formatTableUnit,
-                    formatter: paramsMatter
-
+                    field: 'interfaceName',
+                    title: '接口名称',
+                    visible: true
                 },
                 {
-                    field: 'platformInterfacetype',
-                    title: '平台接口类型',
+                    field: 'shareType',
+                    title: '接口类型',
                     formatter: function (value, item, index) {
-                        return $.table.selectDictLabel(platform_interfacetype_datas, item.platformInterfacetype);
+                        return $.table.selectDictLabel(shareType_datas, item.shareType);
                     }
                 },
                 {
-                    field: 'browser',
-                    title: '访问浏览器',
+                    field: 'deptId',
+                    title: '所属部门ID',
                     visible: false
                 },
                 {
-                    field: 'param',
-                    title: '参数条件',
-                    visible: false
+                    field: 'deptName',
+                    title: '所属部门'
                 },
                 {
-                    field: 'results',
-                    title: '返回结果',
-                    visible: false
-                },
-                {
-                    field: 'operationQuantity',
-                    title: '操作数量',
-                    visible: false
+                    field: 'count',
+                    title: '调用总数',
+                    formatter: function(value, item, index) {
+                        return '<span class="label label-success">'+value+'</span>';
+                    }
                 },
                 {
-                    field: 'operationStatus',
-                    title: '操作状态',
-                    visible: false
+                    field: 'callsuccnum',
+                    title: '调用成功数',
+                    formatter: function(value, item, index) {
+                        return '<span class="label label-primary">'+value+'</span>';
+                    }
                 },
                 {
-                    field: 'exceptionLog',
-                    title: '异常记录',
-                    visible: false
+                    field: 'callfailnum',
+                    title: '调用失败数',
+                    formatter: function(value, item, index) {
+                        return '<span class="label label-danger">'+value+'</span>';
+                    }
                 },
                 {
                     title: '操作',
                     align: 'center',
                     formatter: function(value, row, index) {
                         var actions = [];
-                        actions.push('<a class="btn btn-warning btn-xs ' + viewFlag + '" href="javascript:void(0)" onclick="$.operate.detail(\'' + row.id + '\')"><i class="fa fa-search"></i>详情</a> ');
+                        actions.push('<a class="btn btn-warning btn-xs" href="javascript:void(0)" onclick="getLogList(\'' + row.id + '\')"><i class="fa fa-search"></i>查看日志</a> ');
                         return actions.join('');
                     }
                 }
             ]
         };
         $.table.init(options);
+    }
+
+    function getLogList(id){
+        let title = "接口日志列表";
+        let url = log_prefix + "/logList/" + id;
+        $.modal.openTab(title, url);
+    }
+
+    function queryDeptTree()
+    {
+        var url = ctx + "system/dept/treeData";
+        var options = {
+            url: url,
+            expandLevel: 2,
+            onClick : zOnClick
+        };
+        $.tree.init(options);
+
+        function zOnClick(event, treeId, treeNode) {
+            $("#deptId").val(treeNode.id);
+            $("#parentId").val(treeNode.pId);
+            $.table.search();
+        }
+    }
+
+    $('#btnExpand').click(function() {
+        $._tree.expandAll(true);
+        $(this).hide();
+        $('#btnCollapse').show();
+    });
+
+    $('#btnCollapse').click(function() {
+        $._tree.expandAll(false);
+        $(this).hide();
+        $('#btnExpand').show();
+    });
+
+    $('#btnRefresh').click(function() {
+        queryDeptTree();
     });
 
     //表格超出宽度鼠标悬停显示td内容

+ 200 - 0
mybusiness/src/main/resources/templates/system/log/logList.html

@@ -0,0 +1,200 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
+<head>
+    <th:block th:include="include :: header('接口调用日志列表')"/>
+</head>
+<body class="gray-bg">
+<div class="container-div">
+    <div class="row">
+        <div class="col-sm-12 search-collapse">
+            <form id="formId">
+                <div class="select-list">
+                    <ul>
+                        <li>
+                            <label>登录名:</label>
+                            <input type="text" name="loginName"/>
+                        </li>
+                        <li>
+                            <label>接口类型:</label>
+                            <select name="platformInterfacetype"
+                                    th:with="type=${@dict.getType('share_type')}">
+                                <option value="">所有</option>
+                                <option th:each="dict : ${type}" th:text="${dict.dictLabel}"
+                                        th:value="${dict.dictValue}"></option>
+                            </select>
+                        </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-sm" id="toolbar" role="group">
+            <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:log:export">
+                <i class="fa fa-download"></i> 导出
+            </a>
+        </div>
+        <div class="col-sm-12 select-table table-striped">
+            <table id="bootstrap-table"></table>
+        </div>
+    </div>
+</div>
+<th:block th:include="include :: footer"/>
+<script th:inline="javascript">
+    let viewFlag = [[${@permission.hasPermi('system:log:view')}]];
+    let prefix = ctx + "system/log";
+    let platform_interfacetype_datas = [[${@dict.getType('platform_interfacetype')}]];
+    let shareType_datas = [[${@dict.getType('share_type')}]];
+    let intId = [[${intId}]];
+
+    $(function () {
+        var options = {
+            url: prefix + "/list?id=" + intId,
+            detailUrl: prefix + "/detail/{id}",
+            exportUrl: prefix + "/export",
+            modalName: "接口调用日志",
+            columns: [{
+                checkbox: true
+            },
+                {
+                    field: 'id',
+                    title: '主键ID',
+                    visible: false
+                },
+                {
+                    field: 'status',
+                    title: '状态',
+                    visible: false
+                },
+                {
+                    field: 'remark',
+                    title: '注释',
+                    visible: false
+                },
+                {
+                    field: 'loginUser',
+                    title: '登录人',
+                    visible: false
+                },
+                {
+                    field: 'deptId',
+                    title: '调用部门ID',
+                    visible: false
+                },
+                {
+                    field: 'deptName',
+                    title: '调用部门'
+                },
+                {
+                    field: 'loginName',
+                    title: '登录名'
+                },
+                {
+                    field: 'createTime',
+                    title: '调用时间'
+                },
+                {
+                    field: 'interfaceinfoId',
+                    title: '调用接口id',
+                    visible: false
+                },
+                {
+                    field: 'interfaceinfoName',
+                    title: '调用接口名'
+                },
+                {
+                    field: 'operationStatus',
+                    title: '调用结果',
+                    sortable: true,
+                    formatter: function (value,row,index) {
+                        return value == 1 ? '<span class="badge badge-primary">成功</span>' : '<span class="badge badge-danger">失败</span>';
+                    }
+                },
+                {
+                    field: 'ipaddress',
+                    title: 'ip地址'
+                },
+                {
+                    field: 'os',
+                    title: '操作系统',
+                    cellStyle:formatTableUnit,
+                    formatter: paramsMatter
+
+                },
+                {
+                    field: 'platformInterfacetype',
+                    title: '接口类型',
+                    formatter: function (value, item, index) {
+                        return $.table.selectDictLabel(shareType_datas, item.platformInterfacetype);
+                    }
+                },
+                {
+                    field: 'browser',
+                    title: '访问浏览器',
+                    visible: false
+                },
+                {
+                    field: 'param',
+                    title: '参数条件',
+                    visible: false
+                },
+                {
+                    field: 'results',
+                    title: '返回结果',
+                    visible: false
+                },
+                {
+                    field: 'operationQuantity',
+                    title: '操作数量',
+                    visible: false
+                },
+                {
+                    field: 'operationStatus',
+                    title: '操作状态',
+                    visible: false
+                },
+                {
+                    field: 'exceptionLog',
+                    title: '异常记录',
+                    visible: false
+                },
+                {
+                    title: '操作',
+                    align: 'center',
+                    formatter: function(value, row, index) {
+                        var actions = [];
+                        actions.push('<a class="btn btn-warning btn-xs" href="javascript:void(0)" onclick="$.operate.detail(\'' + row.id + '\')"><i class="fa fa-search"></i>详情</a> ');
+                        return actions.join('');
+                    }
+                }
+            ]
+        };
+        $.table.init(options);
+    });
+
+    //表格超出宽度鼠标悬停显示td内容
+    function paramsMatter(value,row,index) {
+        let span=document.createElement("span");
+        span.setAttribute("title",value);
+        span.innerHTML = value;
+        return span.outerHTML;
+    }
+    //td宽度以及内容超过宽度隐藏
+    function formatTableUnit(value, row, index) {
+        return {
+            css: {
+                "white-space": "nowrap",
+                "text-overflow": "ellipsis",
+                "overflow": "hidden",
+                "max-width":"150px"
+            }
+        }
+    }
+</script>
+</body>
+</html>