WYB
2021-04-27 ffe328483d7915b5da5bc61a6b86f063bce76755
委外派工
5个文件已修改
7个文件已添加
3696 ■■■■■ 已修改文件
WebTM/Properties/PublishProfiles/LAYUI.pubxml.user 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/WebTM.csproj 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/layuiadmin/treeTable.js 2238 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/index.html 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/基础资料/公用基础资料/Gy_Department.html 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/基础资料/公用基础资料/Gy_Department_Edit.html 190 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/系统管理/会计期间/Xt_AccountPeriodList.html 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/系统管理/单据类型/Xt_BillTypeList.html 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/系统管理/模块管理/Xt_XtgnbList.html 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/系统管理/用户管理/Xt_UserGroupList.html 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/系统管理/用户管理/Xt_UserList.html 193 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/系统管理/系统参数管理/Xt_SystemParameterList.html 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/Properties/PublishProfiles/LAYUI.pubxml.user
@@ -5,7 +5,7 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <_PublishTargetUrl>D:\网站发布\智云MESWMS\LAYUI</_PublishTargetUrl>
    <History>True|2021-04-26T08:06:17.8889031Z;True|2021-04-26T16:01:07.5729037+08:00;True|2021-04-26T15:43:13.1943879+08:00;True|2021-04-26T15:40:31.4783881+08:00;True|2021-04-26T13:48:32.1338637+08:00;True|2021-04-26T13:41:20.7638645+08:00;True|2021-04-26T13:36:41.2688664+08:00;True|2021-04-16T08:22:27.9458518+08:00;True|2021-04-15T16:59:13.8465752+08:00;True|2021-04-15T15:35:34.3385670+08:00;True|2021-04-15T14:45:34.4613245+08:00;True|2021-04-15T14:41:37.0870016+08:00;True|2021-04-15T14:37:07.0200028+08:00;True|2021-04-13T16:40:55.8205619+08:00;True|2021-04-13T16:17:05.5478494+08:00;</History>
    <History>True|2021-04-27T08:36:16.4269210Z;True|2021-04-27T16:24:41.5059209+08:00;True|2021-04-27T15:53:32.5901894+08:00;True|2021-04-27T15:22:47.3758568+08:00;True|2021-04-27T15:20:08.3268603+08:00;True|2021-04-27T15:07:44.8758565+08:00;True|2021-04-27T14:55:25.1708246+08:00;True|2021-04-27T11:29:16.9305170+08:00;True|2021-04-27T11:22:59.6375169+08:00;True|2021-04-27T11:18:40.6175151+08:00;True|2021-04-27T11:11:03.1485102+08:00;True|2021-04-27T10:59:43.1454752+08:00;True|2021-04-27T10:52:14.9373756+08:00;True|2021-04-26T16:06:17.8889031+08:00;True|2021-04-26T16:01:07.5729037+08:00;True|2021-04-26T15:43:13.1943879+08:00;True|2021-04-26T15:40:31.4783881+08:00;True|2021-04-26T13:48:32.1338637+08:00;True|2021-04-26T13:41:20.7638645+08:00;True|2021-04-26T13:36:41.2688664+08:00;True|2021-04-16T08:22:27.9458518+08:00;True|2021-04-15T16:59:13.8465752+08:00;True|2021-04-15T15:35:34.3385670+08:00;True|2021-04-15T14:45:34.4613245+08:00;True|2021-04-15T14:41:37.0870016+08:00;True|2021-04-15T14:37:07.0200028+08:00;True|2021-04-13T16:40:55.8205619+08:00;True|2021-04-13T16:17:05.5478494+08:00;</History>
  </PropertyGroup>
  <ItemGroup>
    <File Include="bin/layuiadmin/layui/layui.js">
@@ -18,10 +18,10 @@
      <publishTime>03/23/2021 16:57:43</publishTime>
    </File>
    <File Include="bin/WebTM.dll">
      <publishTime>04/27/2021 15:00:14</publishTime>
      <publishTime>04/25/2021 11:09:44</publishTime>
    </File>
    <File Include="bin/WebTM.pdb">
      <publishTime>04/27/2021 15:00:14</publishTime>
      <publishTime>04/25/2021 11:09:44</publishTime>
    </File>
    <File Include="layuiadmin/config.js">
      <publishTime>03/23/2021 16:57:43</publishTime>
@@ -512,6 +512,9 @@
    <File Include="layuiadmin/layui/lay/modules/tree.js">
      <publishTime>03/23/2021 16:57:43</publishTime>
    </File>
    <File Include="layuiadmin/layui/lay/modules/treeTable.js">
      <publishTime>04/26/2021 17:18:55</publishTime>
    </File>
    <File Include="layuiadmin/layui/lay/modules/upload.js">
      <publishTime>03/23/2021 16:57:43</publishTime>
    </File>
@@ -588,7 +591,7 @@
      <publishTime>03/23/2021 16:57:43</publishTime>
    </File>
    <File Include="layuiadmin/Scripts/webConfig.js">
      <publishTime>04/26/2021 21:15:55</publishTime>
      <publishTime>04/25/2021 09:24:25</publishTime>
    </File>
    <File Include="layuiadmin/style/admin.css">
      <publishTime>03/23/2021 16:57:43</publishTime>
@@ -643,6 +646,9 @@
    </File>
    <File Include="layuiadmin/tpl/说明.txt">
      <publishTime>03/23/2021 16:57:43</publishTime>
    </File>
    <File Include="layuiadmin/treeTable.js">
      <publishTime>04/27/2021 10:34:16</publishTime>
    </File>
    <File Include="layuiadmin/zgqCustom/zgqCustom.js">
      <publishTime>03/23/2021 16:57:43</publishTime>
@@ -948,13 +954,13 @@
      <publishTime>04/26/2021 18:41:05</publishTime>
    </File>
    <File Include="views/grf/123.txt">
      <publishTime>04/26/2021 20:49:00</publishTime>
      <publishTime>04/27/2021 08:28:40</publishTime>
    </File>
    <File Include="views/grf/a.grf">
      <publishTime>04/26/2021 20:14:15</publishTime>
      <publishTime>04/27/2021 08:28:40</publishTime>
    </File>
    <File Include="views/grf/汇报单.grf">
      <publishTime>04/23/2021 17:05:55</publishTime>
      <publishTime>04/25/2021 08:45:34</publishTime>
    </File>
    <File Include="views/GRInstall.js">
      <publishTime>04/23/2021 17:23:49</publishTime>
@@ -975,7 +981,7 @@
      <publishTime>03/23/2021 16:57:43</publishTime>
    </File>
    <File Include="views/index.html">
      <publishTime>04/26/2021 21:13:12</publishTime>
      <publishTime>04/25/2021 09:06:39</publishTime>
    </File>
    <File Include="views/senior/echarts/bar.html">
      <publishTime>03/23/2021 16:57:43</publishTime>
@@ -1122,10 +1128,13 @@
      <publishTime>04/25/2021 09:06:39</publishTime>
    </File>
    <File Include="views/基础资料/公用基础资料/Gy_Department.html">
      <publishTime>04/25/2021 17:41:13</publishTime>
      <publishTime>04/25/2021 09:06:39</publishTime>
    </File>
    <File Include="views/基础资料/公用基础资料/Gy_Department_Edit.html">
      <publishTime>04/25/2021 17:41:13</publishTime>
      <publishTime>04/27/2021 10:34:16</publishTime>
    </File>
    <File Include="views/基础资料/公用基础资料/Gy_Department_Edit.html">
      <publishTime>04/27/2021 10:34:16</publishTime>
    </File>
    <File Include="views/基础资料/公用基础资料/Gy_Employee.html">
      <publishTime>03/29/2021 20:16:17</publishTime>
@@ -1143,10 +1152,10 @@
      <publishTime>04/25/2021 17:41:13</publishTime>
    </File>
    <File Include="views/基础资料/公用基础资料/Gy_StockPlace.html">
      <publishTime>04/25/2021 17:41:13</publishTime>
      <publishTime>04/26/2021 11:08:02</publishTime>
    </File>
    <File Include="views/基础资料/公用基础资料/Gy_Unit.html">
      <publishTime>04/25/2021 17:41:13</publishTime>
      <publishTime>04/26/2021 11:08:02</publishTime>
    </File>
    <File Include="views/基础资料/公用基础资料/Gy_Warehouse.html">
      <publishTime>03/29/2021 20:16:17</publishTime>
@@ -1173,7 +1182,7 @@
      <publishTime>03/29/2021 20:16:17</publishTime>
    </File>
    <File Include="views/基础资料/销售基础资料/Gy_Customer.html">
      <publishTime>03/29/2021 20:16:17</publishTime>
      <publishTime>03/29/2021 10:48:23</publishTime>
    </File>
    <File Include="views/模治具管理/Sc_CheckToolsRepairWorkBillList.html">
      <publishTime>03/24/2021 14:28:14</publishTime>
@@ -1233,7 +1242,7 @@
      <publishTime>04/08/2021 10:57:44</publishTime>
    </File>
    <File Include="views/生产工序管理/增加不良评审单/QC_Add_NoPassProdCheckBill.html">
      <publishTime>04/20/2021 21:10:48</publishTime>
      <publishTime>04/20/2021 21:46:06</publishTime>
    </File>
    <File Include="views/生产工序管理/增加不良评审单/QC_NoPassProdCheckBill.html">
      <publishTime>04/13/2021 10:12:44</publishTime>
@@ -1254,19 +1263,19 @@
      <publishTime>04/26/2021 16:37:04</publishTime>
    </File>
    <File Include="views/生产工序管理/委外工序派工单/WW_EntrustProcSendWorkBillList.html">
      <publishTime>04/26/2021 18:31:40</publishTime>
      <publishTime>04/27/2021 08:28:40</publishTime>
    </File>
    <File Include="views/生产工序管理/委外工序计划汇报单/WW_EntrustProcessReportBillList.html">
      <publishTime>04/26/2021 21:23:25</publishTime>
      <publishTime>04/26/2021 18:30:16</publishTime>
    </File>
    <File Include="views/生产工序管理/委外工序计划转出单/WW_EntrustProcessSendOutBillList.html">
      <publishTime>04/26/2021 18:28:12</publishTime>
      <publishTime>04/27/2021 08:28:40</publishTime>
    </File>
    <File Include="views/生产工序管理/工序汇报单/HBarPlanPrint.html">
      <publishTime>04/26/2021 20:59:11</publishTime>
      <publishTime>04/25/2021 11:06:24</publishTime>
    </File>
    <File Include="views/生产工序管理/工序汇报单/Sc_Add_ProcessReportList.html">
      <publishTime>04/26/2021 19:58:41</publishTime>
      <publishTime>04/25/2021 10:35:02</publishTime>
    </File>
    <File Include="views/生产工序管理/工序汇报单/Sc_ProcessReport_PDA.html">
      <publishTime>04/09/2021 17:56:11</publishTime>
@@ -1275,7 +1284,7 @@
      <publishTime>04/23/2021 16:41:10</publishTime>
    </File>
    <File Include="views/生产工序管理/工序派工单/Sc_Add_ProcessSendWork.html">
      <publishTime>04/21/2021 16:40:38</publishTime>
      <publishTime>04/22/2021 17:13:32</publishTime>
    </File>
    <File Include="views/生产管理/生产任务单/Sc_ICMOBillList.html">
      <publishTime>03/23/2021 16:57:43</publishTime>
@@ -1286,23 +1295,41 @@
    <File Include="views/生产管理/生产汇报单/Sc_ICMOReportBillList.html">
      <publishTime>03/29/2021 20:16:17</publishTime>
    </File>
    <File Include="views/系统管理/会计期间/Xt_AccountPeriodList.html">
      <publishTime>04/27/2021 11:29:07</publishTime>
    </File>
    <File Include="views/系统管理/单据类型/Xt_BillTypeList.html">
      <publishTime>04/27/2021 16:35:57</publishTime>
    </File>
    <File Include="views/系统管理/日志管理/Xt_SystemLogList.html">
      <publishTime>04/26/2021 21:13:12</publishTime>
    </File>
    <File Include="views/系统管理/模块管理/Xt_XtgnbList.html">
      <publishTime>04/27/2021 11:18:03</publishTime>
    </File>
    <File Include="views/系统管理/用户管理/Xt_UserGroupList.html">
      <publishTime>04/27/2021 14:54:34</publishTime>
    </File>
    <File Include="views/系统管理/用户管理/Xt_UserList.html">
      <publishTime>04/27/2021 10:48:50</publishTime>
    </File>
    <File Include="views/系统管理/系统参数管理/Xt_SystemParameterList.html">
      <publishTime>04/27/2021 11:10:50</publishTime>
    </File>
    <File Include="views/组装单/Sc_AssemblyBill_Fast.html">
      <publishTime>03/29/2021 20:16:17</publishTime>
    </File>
    <File Include="views/计划管理/工艺路线/Gy_RoutingBill.html">
      <publishTime>04/25/2021 17:41:13</publishTime>
      <publishTime>04/25/2021 16:05:20</publishTime>
    </File>
    <File Include="views/计划管理/工艺路线/Gy_RoutingBillList.html">
      <publishTime>03/29/2021 20:16:17</publishTime>
    </File>
    <File Include="views/生产工序管理/工序汇报单/Sc_ProcessReportList.html">
      <publishTime>04/26/2021 20:56:58</publishTime>
      <publishTime>04/21/2021 18:59:55</publishTime>
    </File>
    <File Include="views/生产工序管理/工序派工单/Sc_ProcessSendWorkList.html">
      <publishTime>04/09/2021 21:12:33</publishTime>
      <publishTime>04/21/2021 14:26:35</publishTime>
    </File>
    <File Include="views/生产工序管理/工序计划单/Sc_ProcessPlanList.html">
      <publishTime>04/27/2021 15:15:37</publishTime>
@@ -1317,7 +1344,7 @@
      <publishTime>03/29/2021 20:16:17</publishTime>
    </File>
    <File Include="views/计划管理/工艺路线/Gy_RoutingBill_loser.html">
      <publishTime>04/25/2021 17:41:13</publishTime>
      <publishTime>04/25/2021 13:29:33</publishTime>
    </File>
    <File Include="views/车间管理/不良品评审单/Cj_NoPassProc.html">
      <publishTime>03/26/2021 09:58:10</publishTime>
@@ -1551,7 +1578,7 @@
      <publishTime>03/29/2021 20:16:17</publishTime>
    </File>
    <File Include="Web.config">
      <publishTime>04/26/2021 21:18:41</publishTime>
      <publishTime>04/25/2021 11:09:48</publishTime>
    </File>
  </ItemGroup>
</Project>
WebTM/WebTM.csproj
@@ -64,6 +64,7 @@
    <Content Include="layuiadmin\layui\font\iconfont.ttf" />
    <Content Include="layuiadmin\layui\font\iconfont.woff" />
    <None Include="Properties\PublishProfiles\JFTM.pubxml" />
    <Content Include="layuiadmin\treeTable.js" />
    <Content Include="views\CreateControl.js" />
    <Content Include="views\grf\123.txt" />
    <Content Include="views\grf\a.grf" />
@@ -458,7 +459,13 @@
    <Content Include="views\生产工序管理\委外工序计划转出单\WW_EntrustProcessSendOutBillList.html" />
    <Content Include="views\生产工序管理\工序汇报单\HBarPlanPrint.html" />
    <Content Include="views\生产工序管理\工序汇报单\xmlLBM_ProcessReport.aspx" />
    <Content Include="views\系统管理\会计期间\Xt_AccountPeriodList.html" />
    <Content Include="views\系统管理\单据类型\Xt_BillTypeList.html" />
    <Content Include="views\系统管理\日志管理\Xt_SystemLogList.html" />
    <Content Include="views\系统管理\模块管理\Xt_XtgnbList.html" />
    <Content Include="views\系统管理\用户管理\Xt_UserGroupList.html" />
    <Content Include="views\系统管理\用户管理\Xt_UserList.html" />
    <Content Include="views\系统管理\系统参数管理\Xt_SystemParameterList.html" />
    <Content Include="views\计划管理\工艺路线\Gy_RoutingBill_loser.html" />
    <Content Include="views\计划管理\工艺路线\Gy_RoutingBill.html" />
    <Content Include="views\车间管理\工序出站汇报单\Cj_StationOutBill.html" />
WebTM/layuiadmin/treeTable.js
New file
@@ -0,0 +1,2238 @@
/** æ ‘形表格3.x Created by wangfan on 2020-05-12 https://gitee.com/whvse/treetable-lay */
layui.define(['laytpl', 'form', 'util'], function (exports) {
    var $ = layui.jquery;
    var laytpl = layui.laytpl;
    var form = layui.form;
    var util = layui.util;
    var device = layui.device();
    var MOD_NAME = 'treeTable';  // æ¨¡å—名
    var _instances = {};  // è®°å½•所有实例
    /* è¡¨æ ¼é»˜è®¤å‚æ•° */
    var defaultOption = {
        elem: undefined,                                 // å®¹å™¨
        cols: undefined,                                 // åˆ—参数
        url: undefined,                                  // url模式请求
        method: undefined,                               // url模式请求方式
        where: undefined,                                // url模式请求条件
        contentType: undefined,                          // url模式请求类型
        headers: undefined,                              // url模式请求headers
        parseData: undefined,                            // url模式处理请求数据
        request: {pidName: 'pid'},                       // url模式请求字段自定义
        toolbar: undefined,                              // è¡¨å¤´å·¥å…·æ 
        defaultToolbar: undefined,                       // è¡¨å¤´å·¥å…·æ å³ä¾§æŒ‰é’®
        width: undefined,                                // å®¹å™¨å®½åº¦
        height: undefined,                               // å®¹å™¨é«˜åº¦
        cellMinWidth: 90,                                // å•元格最小宽度
        done: undefined,                                 // æ•°æ®å¤„理完回调
        data: undefined,                                 // ç›´æŽ¥èµ‹å€¼æ•°æ®
        title: undefined,                                // å®šä¹‰table大标题,文件导出会用到
        skin: undefined,                                 // è¡¨æ ¼é£Žæ ¼
        even: undefined,                                 // æ˜¯å¦å¼€å¯éš”行变色
        size: undefined,                                 // è¡¨æ ¼å°ºå¯¸
        text: {
            none: '无数据'                               // ç©ºæ•°æ®æç¤º
        },
        reqData: undefined,                              // è‡ªå®šä¹‰åŠ è½½æ•°æ®æ–¹æ³•
        useAdmin: false,                                  // æ˜¯å¦ä½¿ç”¨admin.ajax
        tree: {
            idName: 'id',                                // id的字段名
            pidName: 'pid',                              // pid的字段名
            childName: 'children',                       // children的字段名
            haveChildName: 'haveChild',                  // æ˜¯å¦æœ‰children标识的字段名
            openName: 'open',                            // æ˜¯å¦é»˜è®¤å±•开的字段名
            iconIndex: 0,                                // å›¾æ ‡åˆ—的索引
            arrowType: undefined,                        // æŠ˜å ç®­å¤´ç±»åž‹
            onlyIconControl: undefined,                  // ä»…点击图标控制展开折叠
            getIcon: function (d) {                      // è‡ªå®šä¹‰å›¾æ ‡
                var haveChild = d[this.haveChildName];
                if (haveChild !== undefined) haveChild = haveChild === true || haveChild === 'true';
                else if (d[this.childName]) haveChild = d[this.childName].length > 0;
                if (haveChild) return '<i class="ew-tree-icon layui-icon layui-icon-layer"></i>';
                else return '<i class="ew-tree-icon layui-icon layui-icon-file"></i>';
            }
        }
    };
    /* åˆ—默认参数 */
    var colDefaultOption = {
        field: undefined,     // å­—段名
        title: undefined,     // æ ‡é¢˜
        width: undefined,     // å®½åº¦
        minWidth: undefined,  // æœ€å°å®½åº¦
        type: 'normal',       // åˆ—类型
        fixed: undefined,     // å›ºå®šåˆ—
        hide: undefined,      // æ˜¯å¦åˆå§‹éšè—åˆ—
        unresize: undefined,  // ç¦ç”¨æ‹–拽列宽
        style: undefined,     // å•元格样式
        align: undefined,     // å¯¹é½æ–¹å¼
        colspan: undefined,   // å•元格所占的列数
        rowspan: undefined,   // å•元格所占的行数
        templet: undefined,   // è‡ªå®šä¹‰æ¨¡æ¿
        toolbar: undefined,   // å·¥å…·åˆ—
        'class': undefined,   // å•元格class
        singleLine: undefined // æ˜¯å¦ä¸€è¡Œæ˜¾ç¤º
    };
    /** TreeTable类构造方法 */
    var TreeTable = function (options) {
        _instances[options.elem.substring(1)] = this;
        this.reload(options);
    };
    /** å‚数设置 */
    TreeTable.prototype.initOptions = function (opt) {
        var that = this;
        // å¤„理特殊列
        function initCol(item) {
            if (!item.INIT_OK) item = $.extend({INIT_OK: true}, colDefaultOption, item);
            // ç‰¹æ®Šåˆ—处理
            if (item.type === 'space') {  // ç©ºåˆ—
                if (!item.width) item.width = 15;
                item.minWidth = item.width;
            } else if (item.type === 'numbers') {  // åºå·åˆ—
                if (!item.width) item.width = 40;
                item.minWidth = item.width;
                if (!item.singleLine) item.singleLine = false;
                if (!item.unresize) item.unresize = true;
                if (!item.align) item.align = 'center';
            } else if (item.type === 'checkbox' || item.type === 'radio') {  // å¤/单选框列
                if (!item.width) item.width = 48;
                item.minWidth = item.width;
                if (!item.singleLine) item.singleLine = false;
                if (!item.unresize) item.unresize = true;
                if (!item.align) item.align = 'center';
            }
            if (item.toolbar) item.type = 'tool';
            return item;
        }
        // åˆå§‹åŒ–列参数
        if ('Array' !== isClass(opt.cols[0])) opt.cols = [opt.cols];
        // æ¢å¤cols参数初始状态
        for (var m = 0; m < opt.cols.length; m++) {
            for (var n = 0; n < opt.cols[m].length; n++) {
                opt.cols[m][n].INIT_OK = undefined;
                opt.cols[m][n].key = undefined;
                opt.cols[m][n].colGroup = undefined;
                opt.cols[m][n].HAS_PARENT = undefined;
                opt.cols[m][n].parentKey = undefined;
                opt.cols[m][n].PARENT_COL_INDEX = undefined;
            }
        }
        // cols参数处理
        var colArrays = [], colIndex = 0;
        for (var i1 = 0; i1 < opt.cols.length; i1++) {
            var item1 = opt.cols[i1];
            for (var i2 = 0; i2 < item1.length; i2++) {
                var item2 = item1[i2];
                if (!item2) {
                    item1.splice(i2, 1);
                    continue;
                }
                item2 = initCol(item2);
                // åˆå¹¶å•元格处理
                item2.key = i1 + '-' + i2;
                var CHILD_COLS = undefined;
                if (item2.colGroup || item2.colspan > 1) {
                    item2.colGroup = true;
                    item2.type = 'group';
                    CHILD_COLS = [];
                    colIndex++;
                    var childIndex = 0;
                    for (var i22 = 0; i22 < opt.cols[i1 + 1].length; i22++) {
                        var item22 = $.extend({INIT_OK: true}, colDefaultOption, opt.cols[i1 + 1][i22]);
                        if (item22.HAS_PARENT || (childIndex > 1 && childIndex == item2.colspan)) {
                            opt.cols[i1 + 1][i22] = item22;
                            continue;
                        }
                        item22.HAS_PARENT = true;
                        item22.parentKey = i1 + '-' + i2;
                        item22.key = (i1 + 1) + '-' + i22;
                        item22.PARENT_COL_INDEX = colIndex;
                        item22 = initCol(item22);
                        CHILD_COLS.push(item22);
                        childIndex = childIndex + parseInt(item22.colspan > 1 ? item22.colspan : 1);
                        opt.cols[i1 + 1][i22] = item22;
                    }
                }
                item2.CHILD_COLS = CHILD_COLS;
                if (!item2.PARENT_COL_INDEX) colArrays.push(item2);
                opt.cols[i1][i2] = item2;
            }
        }
        this.options = $.extend(true, {}, defaultOption, opt);
        this.options.colArrays = colArrays;
        // url加载模式转为reqData模式
        if (this.options.url) {
            this.options.reqData = function (data, callback) {
                if (!that.options.where) that.options.where = {};
                if (data) that.options.where[that.options.request.pidName] = data[that.options.tree.idName];
                (that.options.useAdmin ? layui.admin : $).ajax({
                    url: that.options.url,
                    data: that.options.contentType && that.options.contentType.indexOf('application/json') === 0 ? JSON.stringify(that.options.where) : that.options.where,
                    headers: that.options.headers,
                    type: that.options.method,
                    dataType: 'json',
                    contentType: that.options.contentType,
                    success: function (res) {
                        if (that.options.parseData) res = that.options.parseData(res);
                        if (res.code == 0) callback(res.data);
                        else callback(res.msg || '加载失败');
                    },
                    error: function (xhr) {
                        callback(xhr.status + ' - ' + xhr.statusText);
                    }
                });
            };
        } else if (this.options.data && this.options.data.length > 0 && this.options.tree.isPidData) {  // pid形式数据转children形式
            this.options.data = tt.pidToChildren(this.options.data, this.options.tree.idName, this.options.tree.pidName, this.options.tree.childName);
        }
        // toolbar参数处理
        if ('default' === this.options.toolbar) {
            this.options.toolbar = [
                '<div>',
                '   <div class="ew-tree-table-tool-item" title="添加" lay-event="add">',
                '      <i class="layui-icon layui-icon-add-1"></i>',
                '   </div>',
                '   <div class="ew-tree-table-tool-item" title="修改" lay-event="update">',
                '      <i class="layui-icon layui-icon-edit"></i>',
                '   </div>',
                '   <div class="ew-tree-table-tool-item" title="删除" lay-event="delete">',
                '      <i class="layui-icon layui-icon-delete"></i>',
                '   </div>',
                '</div>'
            ].join('');
        }
        if (this.options.defaultToolbar === undefined) this.options.defaultToolbar = ['filter', 'exports', 'print'];
        // è‡ªå®šä¹‰å›¾æ ‡å‚数处理
        if (typeof this.options.tree.getIcon === 'string') {
            var icon = this.options.tree.getIcon;
            this.options.tree.getIcon = function (d) {
                if (icon !== 'ew-tree-icon-style2') return icon;
                var haveChild = d[this.haveChildName];
                if (haveChild !== undefined) haveChild = haveChild === true || haveChild === 'true';
                else if (d[this.childName]) haveChild = d[this.childName].length > 0;
                if (haveChild) return '<i class="ew-tree-icon ew-tree-icon-folder"></i>';
                else return '<i class="ew-tree-icon ew-tree-icon-file"></i>';
            }
        }
    };
    /** åˆå§‹åŒ–表格 */
    TreeTable.prototype.init = function () {
        var options = this.options;
        var $elem = $(options.elem);  // åŽŸå§‹è¡¨æ ¼
        var tbFilter = options.elem.substring(1);  // è¡¨æ ¼çš„filter
        // ç¬¬ä¸€æ¬¡ç”Ÿæˆæ ‘表格dom
        $elem.removeAttr('lay-filter');
        if ($elem.next('.ew-tree-table').length === 0) {
            $elem.css('display', 'none');
            $elem.after([
                '<div class="layui-form ew-tree-table" lay-filter="', tbFilter, '" style="', options.style || '', '">',
                '   <div class="ew-tree-table-tool" style="display: none;"></div>',
                '   <div class="ew-tree-table-head">',
                '      <table class="layui-table"></table>',
                '   </div>',
                '   <div class="ew-tree-table-box">',
                '      <table class="layui-table"></table>',
                '      <div class="ew-tree-table-loading">',
                '         <i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"></i>',
                '      </div>',
                '      <div class="ew-tree-table-empty">', options.text.none || '', '</div>',
                '   </div>',
                '</div>'
            ].join(''));
        }
        // èŽ·å–å„ä¸ªç»„ä»¶
        var components = this.getComponents();
        // åŸºç¡€å‚数设置
        if (options.skin) components.$table.attr('lay-skin', options.skin);
        if (options.size) components.$table.attr('lay-size', options.size);
        if (options.even) components.$table.attr('lay-even', options.even);
        // å¤´éƒ¨å·¥å…·æ 
        components.$toolbar.empty();
        if (options.toolbar === false || options.toolbar === undefined) {
            components.$toolbar.hide();
        } else {
            components.$toolbar.show();
            if (typeof options.toolbar === 'string') {
                laytpl($(options.toolbar).html()).render({}, function (html) {
                    components.$toolbar.html('<div style="display: inline-block;">' + html + '</div>');
                });
            }
            var tbRights = ['<div class="ew-tree-table-tool-right">'];
            for (var i = 0; i < options.defaultToolbar.length; i++) {
                var tbItem;
                if ('filter' === options.defaultToolbar[i]) {
                    tbItem = {title: '筛选', layEvent: 'LAYTABLE_COLS', icon: 'layui-icon-cols'};
                } else if ('exports' === options.defaultToolbar[i]) {
                    tbItem = {title: '导出', layEvent: 'LAYTABLE_EXPORT', icon: 'layui-icon-export'};
                } else if ('print' === options.defaultToolbar[i]) {
                    tbItem = {title: '打印', layEvent: 'LAYTABLE_PRINT', icon: 'layui-icon-print'};
                } else {
                    tbItem = options.defaultToolbar[i];
                }
                if (tbItem) {
                    tbRights.push('<div class="ew-tree-table-tool-item"');
                    tbRights.push(' title="' + tbItem.title + '"');
                    tbRights.push(' lay-event="' + tbItem.layEvent + '">');
                    tbRights.push('<i class="layui-icon ' + tbItem.icon + '"></i></div>');
                }
            }
            components.$toolbar.append(tbRights.join('') + '</div>');
        }
        // å›ºå®šå®½åº¦
        if (options.width) {
            components.$view.css('width', options.width);
            components.$tHeadGroup.css('width', options.width);
            components.$tBodyGroup.css('width', options.width);
        }
        // è¡¨æ ¼å°ºå¯¸è®¾ç½®
        var colgroupHtml = this.resize(true);
        // ç”Ÿæˆthead
        var headHtml = '<thead>' + this.renderBodyTh() + '</thead>';
        // æ¸²æŸ“表头及空的表主体的结构
        components.$tBodyGroup.children('style').remove();
        if (options.height) {  // å›ºå®šè¡¨å¤´
            components.$tHead.html(colgroupHtml + headHtml);
            components.$tBody.html(colgroupHtml + '<tbody></tbody>');
            if (options.height.indexOf('full-') === 0) {  // å·®å€¼é«˜åº¦
                var h = parseFloat(options.height.substring(5)) + components.$toolbar.outerHeight()
                    + components.$tHeadGroup.outerHeight() + 1;
                components.$tBodyGroup.append([
                    '<style>[lay-filter="', tbFilter, '"] .ew-tree-table-box {',
                    '   height: ', getPageHeight() - h, 'px;',
                    '   height: -moz-calc(100vh - ', h, 'px);',
                    '   height: -webkit-calc(100vh - ', h, 'px);',
                    '   height: calc(100vh - ', h, 'px);',
                    '}</style>'
                ].join(''));
                components.$tBodyGroup.data('full', h);
                components.$tBodyGroup.css('height', '');
            } else {  // å›ºå®šé«˜åº¦
                components.$tBodyGroup.css('height', options.height);
                components.$tBodyGroup.data('full', '');
            }
            components.$tHeadGroup.show();
        } else {
            components.$tHeadGroup.hide();
            var trH = {lg: 50, sm: 30, md: 38};
            components.$tBodyGroup.append([
                '<style>[lay-filter="', tbFilter, '"] .ew-tree-table-box:before {',
                '   content: "";',
                '   position: absolute;',
                '   top: 0; left: 0; right: 0;',
                '   height: ' + (trH[options.size || 'md'] * options.cols.length) + 'px;',
                '   background-color: #f2f2f2;',
                '   border-bottom: 1px solid #e6e6e6;',
                '}</style>'
            ].join(''));
            components.$tBody.html(colgroupHtml + headHtml + '<tbody></tbody>');
        }
        form.render('checkbox', tbFilter);  // æ¸²æŸ“表头的表单元素
        // é»˜è®¤éšè—åˆ—修正colspan
        function patchHide($tr) {
            var parentKey = $tr.data('parent'), pCol;
            if (!parentKey) return;
            var $parent = components.$table.children('thead').children('tr').children('[data-key="' + parentKey + '"]');
            var colspan = $parent.attr('colspan') - 1;
            $parent.attr('colspan', colspan);
            if (colspan === 0) $parent.addClass('layui-hide');
            patchHide($parent);
        }
        components.$table.children('thead').children('tr').children('th.layui-hide').each(function () {
            patchHide($(this));
        });
        // æ¸²æŸ“数据
        if (options.reqData) {  // å¼‚步加载
            this.options.data = undefined;
            this.renderBodyAsync();
        } else if (options.data && options.data.length > 0) {
            this.renderBodyData(options.data);
        } else {
            components.$loading.hide();
            components.$empty.show();
        }
    };
    /** ç»‘定各项事件 */
    TreeTable.prototype.bindEvents = function () {
        var that = this;
        var options = this.options;
        var components = this.getComponents();
        var $allBody = components.$table.children('tbody');
        /* è¡Œäº‹ä»¶å…¬å…±è¿”回对象 */
        var member = function (ext) {
            // èŽ·å–è¡Œdom
            var $tr = $(this);
            if (!$tr.is('tr')) {
                var $temp = $tr.parent('tr');
                if ($temp.length > 0) $tr = $temp;
                else $tr = $tr.parentsUntil('tr').last().parent();
            }
            var data = that.getDataByTr($tr);  // è¡Œå¯¹åº”数据
            var obj = {
                tr: $tr,
                data: data,
                del: function () { // åˆ é™¤è¡Œ
                    var index = $tr.data('index');
                    var indent = parseInt($tr.data('indent'));
                    // åˆ é™¤å­çº§
                    $tr.nextAll('tr').each(function () {
                        if (parseInt($(this).data('indent')) <= indent) return false;
                        $(this).remove();
                    });
                    // æ›´æ–°åŽé¢åŒè¾ˆçš„index
                    var indexLength = (typeof index === 'number' ? 1 : index.split('-').length);
                    $tr.nextAll('tr').each(function () {
                        var $this = $(this);
                        if (parseInt($this.data('indent')) < indent) return false;
                        var _index = $this.data('index').toString().split('-');
                        _index[indexLength - 1] = parseInt(_index[indexLength - 1]) - 1;
                        $this.data('index', _index.join('-'));
                    });
                    // åˆ é™¤å½“前行
                    var $pTr = $tr.prevAll('tr');
                    that.del(undefined, index);
                    $tr.remove();
                    that.renderNumberCol();  // æ¸²æŸ“序号列
                    // è”动父级多选框
                    $pTr.each(function () {
                        var tInd = parseInt($(this).data('indent'));
                        if (tInd >= indent) return true;
                        that.checkParentCB($(this));
                        indent = tInd;
                    });
                    that.checkChooseAllCB();  // è”动全选框
                    if (options.data.length === 0) components.$empty.show();
                    updateFixedTbHead(components.$view);  // æ›´æ–°æ»šåŠ¨æ¡è¡¥ä¸
                },
                update: function (fields) {  // ä¿®æ”¹è¡Œ
                    data = $.extend(true, data, fields);
                    var indent = parseInt($tr.data('indent'));
                    that.renderBodyTr(data, indent, undefined, $tr);  // æ›´æ–°ç•Œé¢
                    form.render(null, components.filter);  // æ¸²æŸ“表单元素
                    that.renderNumberCol();  // æ¸²æŸ“序号列
                    // è”动父级多选框
                    $tr.prevAll('tr').each(function () {
                        var tInd = parseInt($(this).data('indent'));
                        if (tInd >= indent) return true;
                        that.checkParentCB($(this));
                        indent = tInd;
                    });
                    that.checkChooseAllCB();  // è”动全选框
                }
            };
            return $.extend(obj, ext);
        };
        // ç»‘定折叠展开事件
        $allBody.off('click.fold').on('click.fold', '.ew-tree-pack', function (e) {
            layui.stope(e);
            var $tr = $(this).parentsUntil('tr').last().parent();
            if ($tr.hasClass('ew-tree-table-loading')) return; // å·²æ˜¯åŠ è½½ä¸­
            var haveChild = $tr.data('have-child');
            if (haveChild !== true && haveChild !== 'true') return; // å­èŠ‚ç‚¹
            var open = $tr.hasClass('ew-tree-table-open');
            var data = that.getDataByTr($tr);
            if (!open && !data[options.tree.childName]) {
                that.renderBodyAsync(data, $tr);
            } else {
                data[options.tree.openName] = toggleRow($tr);
            }
        });
        // ç»‘定lay-event事件
        $allBody.off('click.tool').on('click.tool', '*[lay-event]', function (e) {
            layui.stope(e);
            var $this = $(this);
            layui.event.call(this, MOD_NAME, 'tool(' + components.filter + ')', member.call(this, {
                event: $this.attr('lay-event')
            }));
        });
        // ç»‘定单选框事件
        form.on('radio(' + components.radioFilter + ')', function (data) {
            var d = that.getDataByTr($(data.elem).parentsUntil('tr').last().parent());
            that.removeAllChecked();
            d.LAY_CHECKED = true;  // åŒæ—¶æ›´æ–°æ•°æ®
            d.LAY_INDETERMINATE = false;
            layui.event.call(this, MOD_NAME, 'checkbox(' + components.filter + ')',
                {checked: true, data: d, type: 'one'});
        });
        // ç»‘定复选框事件
        form.on('checkbox(' + components.checkboxFilter + ')', function (data) {
            var checked = data.elem.checked;
            var $cb = $(data.elem);
            var $layCb = $cb.next('.layui-form-checkbox');
            // å¦‚果是半选状态,点击全选
            if (!checked && $cb.hasClass('ew-form-indeterminate')) {
                checked = true;
                $cb.prop('checked', checked);
                $layCb.addClass('layui-form-checked');
                $cb.removeClass('ew-form-indeterminate');
            }
            var $tr = $cb.parentsUntil('tr').last().parent();
            var d = that.getDataByTr($tr);
            d.LAY_CHECKED = checked;  // åŒæ—¶æ›´æ–°æ•°æ®
            d.LAY_INDETERMINATE = false;
            // è”动操作
            if (d[options.tree.childName] && d[options.tree.childName].length > 0) {
                that.checkSubCB($tr, checked);  // è”动子级
            }
            var indent = parseInt($tr.data('indent'));
            $tr.prevAll('tr').each(function () {
                var tInd = parseInt($(this).data('indent'));
                if (tInd < indent) {
                    that.checkParentCB($(this));  // è”动父级
                    indent = tInd;
                }
            });
            that.checkChooseAllCB();  // è”动全选框
            // å›žè°ƒäº‹ä»¶
            layui.event.call(this, MOD_NAME, 'checkbox(' + components.filter + ')',
                {checked: checked, data: d, type: 'more'});
        });
        // ç»‘定全选复选框事件
        form.on('checkbox(' + components.chooseAllFilter + ')', function (data) {
            var checked = data.elem.checked;
            var $cb = $(data.elem);
            var $layCb = $cb.next('.layui-form-checkbox');
            if (!options.data || options.data.length === 0) {  // å¦‚果数据为空
                $cb.prop('checked', false);
                $layCb.removeClass('layui-form-checked');
                $cb.removeClass('ew-form-indeterminate');
                return;
            }
            // å¦‚果是半选状态,点击全选
            if (!checked && $cb.hasClass('ew-form-indeterminate')) {
                checked = true;
                $cb.prop('checked', checked);
                $layCb.addClass('layui-form-checked');
                $cb.removeClass('ew-form-indeterminate');
            }
            layui.event.call(this, MOD_NAME, 'checkbox(' + components.filter + ')', {checked: checked, type: 'all'});
            that.checkSubCB(components.$tBody.children('tbody'), checked);  // è”动操作
        });
        // ç»‘定行单击事件
        $allBody.off('click.row').on('click.row', 'tr', function () {
            layui.event.call(this, MOD_NAME, 'row(' + components.filter + ')', member.call(this, {}));
        });
        // ç»‘定行双击事件
        $allBody.off('dblclick.rowDouble').on('dblclick.rowDouble', 'tr', function () {
            layui.event.call(this, MOD_NAME, 'rowDouble(' + components.filter + ')', member.call(this, {}));
        });
        // ç»‘定单元格点击事件
        $allBody.off('click.cell').on('click.cell', 'td', function (e) {
            var $td = $(this);
            var type = $td.data('type');
            // åˆ¤æ–­æ˜¯å¦æ˜¯å¤é€‰æ¡†ã€å•选框列
            if (type === 'checkbox' || type === 'radio') return layui.stope(e);
            var edit = $td.data('edit');
            var field = $td.data('field');
            if (edit) {  // å¼€å¯äº†å•元格编辑
                layui.stope(e);
                if ($allBody.find('.ew-tree-table-edit').length > 0) return;
                var index = $td.data('index');
                var indent = $td.find('.ew-tree-table-indent').length;
                var d = that.getDataByTr($td.parent());
                if ('text' === edit || 'number' === edit) {  // æ–‡æœ¬æ¡†
                    var $input = $('<input type="' + edit + '" class="layui-input ew-tree-table-edit"/>');
                    $input[0].value = d[field];
                    $td.append($input);
                    $input.focus();
                    $input.blur(function () {
                        var value = $(this).val();
                        if (value == d[field]) return $(this).remove();
                        var rs = layui.event.call(this, MOD_NAME, 'edit(' + components.filter + ')', member.call(this,
                            {value: value, field: field}));
                        if (rs === false) {
                            $(this).addClass('layui-form-danger');
                            $(this).focus();
                        } else {
                            d[field] = value;  // åŒæ­¥æ›´æ–°æ•°æ®
                            var keys = $td.data('key').split('-');
                            that.renderBodyTd(d, indent, index, $td, options.cols[keys[0]][keys[1]]);  // æ›´æ–°å•元格
                        }
                    });
                } else {
                    console.error('不支持的单元格编辑类型:' + edit);
                }
            } else {  // å›žè°ƒå•元格点击事件
                var rs = layui.event.call(this, MOD_NAME, 'cell(' + components.filter + ')', member.call(this,
                    {td: $td, field: field}));
                if (rs === false) layui.stope(e);
            }
        });
        // ç»‘定单元格双击事件
        $allBody.off('dblclick.cellDouble').on('dblclick.cellDouble', 'td', function (e) {
            var $td = $(this);
            var type = $td.data('type');
            // åˆ¤æ–­æ˜¯å¦æ˜¯å¤é€‰æ¡†ã€å•选框列
            if (type === 'checkbox' || type === 'radio') return layui.stope(e);
            var edit = $td.data('edit');
            var field = $td.data('field');
            if (edit) return layui.stope(e);  // å¼€å¯äº†å•元格编辑
            // å›žè°ƒå•元格双击事件
            var rs = layui.event.call(this, MOD_NAME, 'cellDouble(' + components.filter + ')', member.call(this,
                {td: $td, field: field}));
            if (rs === false) layui.stope(e);
        });
        // ç»‘定头部工具栏事件
        components.$toolbar.off('click.toolbar').on('click.toolbar', '*[lay-event]', function (e) {
            layui.stope(e);
            var $this = $(this);
            var event = $this.attr('lay-event');
            if ('LAYTABLE_COLS' === event) that.toggleCol();
            else if ('LAYTABLE_EXPORT' === event) that.exportData('show');
            else if ('LAYTABLE_PRINT' === event) that.printTable();
            else layui.event.call(this, MOD_NAME, 'toolbar(' + components.filter + ')', {event: event, elem: $this});
        });
        // åŒæ­¥æ»šåŠ¨æ¡
        components.$tBodyGroup.on('scroll', function () {
            var $this = $(this);
            components.$tHeadGroup.scrollLeft($this.scrollLeft());
        });
        // å¯¼å‡ºæ•°æ®
        components.$toolbar.off('click.export').on('click.export', '.layui-table-tool-panel>[data-type]', function () {
            var type = $(this).data('type');
            if ('csv' === type || 'xls' === type) that.exportData(type);
        });
        components.$toolbar.off('click.panel').on('click.panel', '.layui-table-tool-panel', function (e) {
            layui.stope(e);
        });
        // ç­›é€‰åˆ—
        form.on('checkbox(' + components.colsToggleFilter + ')', function (data) {
            that.toggleCol(data.elem.checked, undefined, data.value);
        });
    };
    /** èŽ·å–å„ä¸ªç»„ä»¶ */
    TreeTable.prototype.getComponents = function () {
        var $view = $(this.options.elem).next('.ew-tree-table');  // å®¹å™¨
        var filter = $view.attr('lay-filter');                    // å®¹å™¨filter
        var $tHeadGroup = $view.children('.ew-tree-table-head');  // è¡¨å¤´éƒ¨åˆ†å®¹å™¨
        var $tBodyGroup = $view.children('.ew-tree-table-box');   // ä¸»ä½“部分容器
        return {
            $view: $view,
            filter: filter,
            $tHeadGroup: $tHeadGroup,
            $tBodyGroup: $tBodyGroup,
            $tHead: $tHeadGroup.children('.layui-table'),                // è¡¨å¤´è¡¨æ ¼
            $tBody: $tBodyGroup.children('.layui-table'),                // ä¸»ä½“表格
            $table: $view.find('.layui-table'),                          // æ‰€æœ‰è¡¨æ ¼
            $toolbar: $view.children('.ew-tree-table-tool'),             // å¤´éƒ¨å·¥å…·æ 
            $empty: $tBodyGroup.children('.ew-tree-table-empty'),        // ç©ºè§†å›¾
            $loading: $tBodyGroup.children('.ew-tree-table-loading'),    // åŠ è½½è§†å›¾
            checkboxFilter: 'ew_tb_checkbox_' + filter,                  // å¤é€‰æ¡†filter
            radioFilter: 'ew_tb_radio_' + filter,                        // å•选框filter
            chooseAllFilter: 'ew_tb_choose_all_' + filter,               // å…¨é€‰æŒ‰é’®filter
            colsToggleFilter: 'ew_tb_toggle_cols' + filter               // ç­›é€‰åˆ—çš„filter
        };
    };
    /**
     * éåŽ†è¡¨å¤´
     * @param callback
     * @param obj
     */
    TreeTable.prototype.eachCols = function (callback, obj) {
        if (!obj) obj = this.options.colArrays;
        for (var i = 0; i < obj.length; i++) {
            var item = obj[i];
            callback && callback(i, item);
            if (item.CHILD_COLS) this.eachCols(callback, item.CHILD_COLS);
        }
    };
    /**
     * éåŽ†æ•°æ®
     * @param callback
     * @param data
     */
    TreeTable.prototype.eachData = function (callback, data) {
        if (!data) data = this.options.data;
        for (var i = 0; i < data.length; i++) {
            var item = data[i];
            callback && callback(i, item);
            if (item[this.options.tree.childName]) this.eachData(callback, item[this.options.tree.childName]);
        }
    };
    /**
     * å¼‚步加载渲染
     * @param d çˆ¶çº§æ•°æ®
     * @param $tr çˆ¶çº§dom
     */
    TreeTable.prototype.renderBodyAsync = function (d, $tr) {
        var that = this;
        var options = this.options;
        var components = this.getComponents();
        // æ˜¾ç¤ºloading
        if ($tr) {
            $tr.addClass('ew-tree-table-loading');
            $tr.find('.ew-tree-pack').children('.ew-tree-table-arrow').addClass('layui-anim layui-anim-rotate layui-anim-loop');
        } else {
            components.$empty.hide();
            if (options.data && options.data.length > 0) components.$loading.addClass('ew-loading-float');
            components.$loading.show();
        }
        // è¯·æ±‚数据
        options.reqData(d, function (data) {
            if (typeof data !== 'string' && data && data.length > 0 && options.tree.isPidData) {
                data = tt.pidToChildren(data, options.tree.idName, options.tree.pidName, options.tree.childName);
            }
            that.renderBodyData(data, d, $tr);  // æ¸²æŸ“内容
        });
    };
    /**
     * æ ¹æ®æ•°æ®æ¸²æŸ“body
     * @param data  æ•°æ®é›†åˆ
     * @param d çˆ¶çº§æ•°æ®
     * @param $tr çˆ¶çº§dom
     */
    TreeTable.prototype.renderBodyData = function (data, d, $tr) {
        var msg;
        if (typeof data === 'string') {
            msg = data;
            data = [];
        }
        var that = this;
        var options = this.options;
        var components = this.getComponents();
        // æ›´æ–°åˆ°æ•°æ®
        if (d === undefined) options.data = data;
        else d[options.tree.childName] = data;
        var indent;
        if ($tr) {
            indent = parseInt($tr.data('indent')) + 1;
            d[options.tree.openName] = true;
        }
        var htmlStr = this.renderBody(data, indent, d);
        if ($tr) {
            // ç§»é™¤æ—§dom
            $tr.nextAll('tr').each(function () {
                if (parseInt($(this).data('indent')) <= (indent - 1)) return false;
                $(this).remove();
            });
            // æ¸²æŸ“æ–°dom
            $tr.after(htmlStr).addClass('ew-tree-table-open');
        } else {
            components.$tBody.children('tbody').html(htmlStr);
        }
        form.render(null, components.filter);  // æ¸²æŸ“表单元素
        this.renderNumberCol();  // æ¸²æŸ“序号列
        if ($tr) {
            // æ›´æ–°çˆ¶çº§å¤é€‰æ¡†çŠ¶æ€
            this.checkParentCB($tr);
            $tr.prevAll('tr').each(function () {
                var tInd = parseInt($(this).data('indent'));
                if (tInd < (indent - 1)) {
                    that.checkParentCB($(this));
                    indent = tInd + 1;
                }
            });
            // ç§»é™¤loading
            $tr.removeClass('ew-tree-table-loading');
            var $arrow = $tr.find('.ew-tree-pack').children('.ew-tree-table-arrow');
            $arrow.removeClass('layui-anim layui-anim-rotate layui-anim-loop');
            if (msg) {  // åŠ è½½å¤±è´¥
                $tr.removeClass('ew-tree-table-open');
            } else if (data && data.length === 0) {  // æ— å­é›†
                d[options.tree.haveChildName] = false;
                $tr.data('have-child', false);
                $arrow.addClass('ew-tree-table-arrow-hide');
                $arrow.next('.ew-tree-icon').after(options.tree.getIcon(d)).remove();
            }
        } else {
            // ç§»é™¤loading
            components.$loading.hide();
            components.$loading.removeClass('ew-loading-float');
            // æ˜¾ç¤ºç©ºè§†å›¾
            if (data && data.length > 0) {
                components.$empty.hide();
            } else {
                components.$empty.show();
                if (msg) components.$empty.text(msg);
                else components.$empty.html(options.text.none);
            }
        }
        this.checkChooseAllCB();  // è”动全选框
        updateFixedTbHead(components.$view);  // æ»šåŠ¨æ¡è¡¥ä¸
        options.done && options.done(data);
    };
    /**
     * é€’归渲染表格主体部分
     * @param data æ•°æ®åˆ—表
     * @param indent ç¼©è¿›å¤§å°
     * @param parent çˆ¶çº§
     * @param h çˆ¶çº§æ˜¯å¦éšè—
     * @returns {string}
     */
    TreeTable.prototype.renderBody = function (data, indent, parent, h) {
        var options = this.options;
        if (!indent) indent = 0;
        var html = '';
        if (!data || data.length === 0) return html;
        var hide = parent ? !parent[options.tree.openName] : undefined;
        if (h) hide = h;//当所有父级存在隐藏时,隐藏所有子集
        for (var i = 0; i < data.length; i++) {
            var d = data[i];
            d.LAY_INDEX = (parent ? parent.LAY_INDEX + '-' : '') + i;
            html += this.renderBodyTr(d, indent, hide);
            // é€’归渲染子集
            html += this.renderBody(d[options.tree.childName], indent + 1, d, h);
        }
        return html;
    };
    /**
     * æ¸²æŸ“每一行数据
     * @param d è¡Œæ•°æ®
     * @param indent ç¼©è¿›å¤§å°
     * @param hide æ˜¯å¦éšè—
     * @param $tr
     * @returns {string}
     */
    TreeTable.prototype.renderBodyTr = function (d, indent, hide, $tr) {
        var that = this;
        var options = this.options;
        if (!indent) indent = 0;
        var haveChild = d[options.tree.haveChildName];
        if (haveChild === undefined) haveChild = d[options.tree.childName] && d[options.tree.childName].length > 0;
        if ($tr) {
            $tr.data('have-child', haveChild ? 'true' : 'false');
            $tr.data('indent', indent);
            $tr.removeClass('ew-tree-table-loading');
        }
        var html = '<tr';
        var classNames = '';
        if (haveChild && d[options.tree.openName]) classNames += 'ew-tree-table-open';
        if (hide) classNames += 'ew-tree-tb-hide';
        html += (' class="' + classNames + '"');
        if (haveChild) html += (' data-have-child="' + haveChild + '"');
        html += (' data-index="' + d.LAY_INDEX + '"');
        html += (' data-indent="' + indent + '">');
        var index = 0;
        this.eachCols(function (i, col) {
            if (col.colGroup) return;
            html += that.renderBodyTd(d, indent, index, $tr ? $tr.children('td').eq(index) : undefined, col);
            index++;
        });
        html += '</tr>';
        return html;
    };
    /**
     * æ¸²æŸ“每一个单元格数据
     * @param d è¡Œæ•°æ®
     * @param indent ç¼©è¿›å¤§å°
     * @param index ç¬¬å‡ åˆ—
     * @param $td
     * @param col
     * @returns {string}
     */
    TreeTable.prototype.renderBodyTd = function (d, indent, index, $td, col) {
        if (!col||col.colGroup) return '';
        var options = this.options;
        var components = this.getComponents();
        if (!indent) indent = 0;
        // å†…容填充
        var content = '', cell = '', icon = '';
        if (col.type === 'numbers') {  // åºå·åˆ—
            content = '<span class="ew-tree-table-numbers"></span>';
        } else if (col.type === 'checkbox') {  // å¤é€‰æ¡†åˆ—
            content = [
                '<input type="checkbox"', d.LAY_CHECKED ? ' checked="checked"' : '',
                ' lay-filter="', components.checkboxFilter, '"',
                ' lay-skin="primary" class="ew-tree-table-checkbox',
                d.LAY_INDETERMINATE ? ' ew-form-indeterminate' : '', '" />'
            ].join('');
        } else if (col.type === 'radio') {  // å•选框列
            content = [
                '<input type="radio"', d.LAY_CHECKED ? ' checked="checked"' : '',
                ' lay-filter="', components.radioFilter, '"',
                ' name="', components.radioFilter, '"',
                ' class="ew-tree-table-radio" />'
            ].join('');
        } else if (col.templet) {  // è‡ªå®šä¹‰æ¨¡æ¿
            if (typeof col.templet === 'function') {
                content = col.templet(d);
            } else if (typeof col.templet === 'string') {
                laytpl($(col.templet).html()).render(d, function (html) {
                    content = html;
                });
            }
        } else if (col.toolbar) {  // æ“ä½œåˆ—
            if (typeof col.toolbar === 'function') {
                content = col.toolbar(d);
            } else if (typeof col.toolbar === 'string') {
                laytpl($(col.toolbar).html()).render(d, function (html) {
                    content = html;
                });
            }
        } else if (col.field && d[col.field] !== undefined && d[col.field] !== null) {  // æ™®é€šå­—段
            content = util.escape(d[col.field] === 0 ? '0' : d[col.field]);
        }
        // å›¾æ ‡åˆ—处理
        if (index === options.tree.iconIndex) {
            // ç¼©è¿›
            for (var i = 0; i < indent; i++) icon += '<span class="ew-tree-table-indent"></span>';
            icon += '<span class="ew-tree-pack">';
            // åŠ ç®­å¤´
            var haveChild = d[options.tree.haveChildName];
            if (haveChild === undefined) haveChild = d[options.tree.childName] && d[options.tree.childName].length > 0;
            icon += ('<i class="ew-tree-table-arrow layui-icon' + (haveChild ? '' : ' ew-tree-table-arrow-hide'));
            icon += (' ' + (options.tree.arrowType || '') + '"></i>');
            // åŠ å›¾æ ‡
            icon += options.tree.getIcon(d);
            content = '<span>' + content + '</span>';
            if (options.tree.onlyIconControl) content = icon + '</span>' + content;
            else content = icon + content + '</span>';
        }
        cell = [
            '<div class="ew-tree-table-cell', col.singleLine === undefined || col.singleLine ? ' single-line' : '', '"',
            col.align ? ' align="' + col.align + '"' : '',
            '>',
            '   <div class="ew-tree-table-cell-content">', content, '</div>',
            '   <i class="layui-icon layui-icon-close ew-tree-tips-c"></i>',
            '   <div class="layui-table-grid-down" style="display: none;"><i class="layui-icon layui-icon-down"></i></div>',
            '</div>'
        ].join('');
        if ($td) $td.html(cell);
        var html = '<td';
        if (col.field) html += (' data-field="' + col.field + '"');
        if (col.edit) html += (' data-edit="' + col.edit + '"');
        if (col.type) html += (' data-type="' + col.type + '"');
        if (col.key) html += (' data-key="' + col.key + '"');
        if (col.style) html += (' style="' + col.style + '"');
        if (col['class']) html += (' class="' + col['class'] + (col.hide ? ' layui-hide' : '') + '"');
        else if (col.hide) html += (' class="layui-hide"');
        html += ('>' + cell + '</td>');
        return html;
    };
    /**
     * æ¸²æŸ“表头
     * @returns {string}
     */
    TreeTable.prototype.renderBodyTh = function () {
        var options = this.options;
        var components = this.getComponents();
        var html = [];
        $.each(options.cols, function (i1, item1) {
            html.push('<tr>');
            $.each(item1, function (i2, item2) {
                html.push('<th');
                if (item2.colspan) html.push(' colspan="' + item2.colspan + '"');
                if (item2.rowspan) html.push(' rowspan="' + item2.rowspan + '"');
                if (item2.type) html.push(' data-type="' + item2.type + '"');
                if (item2.key) html.push(' data-key="' + item2.key + '"');
                if (item2.parentKey) html.push(' data-parent="' + item2.parentKey + '"');
                if (item2.hide) html.push(' class="layui-hide"');
                html.push('>');
                html.push('<div class="ew-tree-table-cell' + (item2.singleLine === undefined || item2.singleLine ? ' single-line' : '') + '"');
                if (item2.thAlign || item2.align) html.push(' align="' + (item2.thAlign || item2.align) + '"');
                html.push('>');
                html.push('<div class="ew-tree-table-cell-content">');
                // æ ‡é¢˜
                var ca = '<input type="checkbox" lay-filter="' + components.chooseAllFilter + '" lay-skin="primary" class="ew-tree-table-checkbox"/>';
                if (item2.type === 'checkbox') html.push(ca);
                else html.push(item2.title || '');
                html.push('</div><i class="layui-icon layui-icon-close ew-tree-tips-c"></i>');
                html.push('<div class="layui-table-grid-down" style="display: none;"><i class="layui-icon layui-icon-down"></i></div></div>');
                // åˆ—宽拖拽
                if (!item2.colGroup && !item2.unresize) html.push('<span class="ew-tb-resize"></span>');
                html.push('</th>');
            });
            html.push('</tr>');
        });
        return html.join('');
    };
    /** é‡ç½®è¡¨æ ¼å°ºå¯¸ */
    TreeTable.prototype.resize = function (returnColgroup) {
        // è®¡ç®—表格宽度、最小宽度、百分比宽度
        var options = this.options;
        var components = this.getComponents();
        var minWidth = 1, width = 1, needSetWidth = true, mwPercent = 0;
        this.eachCols(function (i, item) {
            if (item.colGroup || item.hide) return;
            if (item.width) {
                width += (item.width + 1);
                if (item.minWidth) {
                    if (item.width < item.minWidth) item.width = item.minWidth;
                } else if (item.width < options.cellMinWidth) item.width = options.cellMinWidth;
            } else needSetWidth = false;
            if (item.width) minWidth += (item.width + 1);
            else if (item.minWidth) {
                minWidth += (item.minWidth + 1);
                mwPercent += item.minWidth;
            } else {
                minWidth += (options.cellMinWidth + 1);
                mwPercent += options.cellMinWidth;
            }
        });
        if (minWidth) {
            components.$tHead.css('min-width', minWidth);
            components.$tBody.css('min-width', minWidth);
        } else {
            components.$tHead.css('min-width', 'auto');
            components.$tBody.css('min-width', 'auto');
        }
        if (needSetWidth) {
            components.$tHead.css('width', width);
            components.$tBody.css('width', width);
        } else {
            components.$tHead.css('width', '100%');
            components.$tBody.css('width', '100%');
        }
        // ç”Ÿæˆcolgroup
        var colgroupHtml = [];
        this.eachCols(function (i, item) {
            if (item.colGroup || item.hide) return;
            colgroupHtml.push('<col');
            if (item.width) colgroupHtml.push(' width="' + item.width + '"');
            else if (item.minWidth) colgroupHtml.push(' width="' + (item.minWidth / mwPercent * 100).toFixed(2) + '%"');
            else colgroupHtml.push(' width="' + (options.cellMinWidth / mwPercent * 100).toFixed(2) + '%"');
            if (item.type) colgroupHtml.push(' data-type="' + item.type + '"');
            if (item.key) colgroupHtml.push(' data-key="' + item.key + '"');
            colgroupHtml.push('/>');
        });
        colgroupHtml = colgroupHtml.join('');
        if (returnColgroup) return '<colgroup>' + colgroupHtml + '</colgroup>';
        components.$table.children('colgroup').html(colgroupHtml);
    };
    /** èŽ·å–è¡Œå¯¹åº”æ•°æ® */
    TreeTable.prototype.getDataByTr = function ($tr) {
        var data, index;
        if (typeof $tr !== 'string' && typeof $tr !== 'number') {
            if ($tr) index = $tr.data('index');
        } else index = $tr;
        if (index === undefined) return;
        if (typeof index === 'number') index = [index];
        else index = index.split('-');
        for (var i = 0; i < index.length; i++) {
            if (data) data = data[this.options.tree.childName][index[i]];
            else data = this.options.data[index[i]];
        }
        return data;
    };
    /**
     * è”动子级复选框状态
     * @param $tr å½“前tr的dom
     * @param checked
     */
    TreeTable.prototype.checkSubCB = function ($tr, checked) {
        var that = this;
        var components = this.getComponents();
        var indent = -1, $trList;
        if ($tr.is('tbody')) {
            $trList = $tr.children('tr');
        } else {
            indent = parseInt($tr.data('indent'));
            $trList = $tr.nextAll('tr');
        }
        $trList.each(function () {
            if (parseInt($(this).data('indent')) <= indent) return false;
            var $cb = $(this).children('td').find('input[lay-filter="' + components.checkboxFilter + '"]');
            $cb.prop('checked', checked);
            $cb.removeClass('ew-form-indeterminate');
            if (checked) $cb.next('.layui-form-checkbox').addClass('layui-form-checked');
            else $cb.next('.layui-form-checkbox').removeClass('layui-form-checked');
            var d = that.getDataByTr($(this));
            d.LAY_CHECKED = checked;  // åŒæ­¥æ›´æ–°æ•°æ®
            d.LAY_INDETERMINATE = false;
        });
    };
    /**
     * è”动父级复选框状态
     * @param $tr çˆ¶çº§çš„dom
     */
    TreeTable.prototype.checkParentCB = function ($tr) {
        var options = this.options;
        var components = this.getComponents();
        var d = this.getDataByTr($tr);
        var ckNum = 0, unCkNum = 0;
        if (d[options.tree.childName]) {
            function checkNum(data) {
                for (var i = 0; i < data.length; i++) {
                    if (data[i].LAY_CHECKED) ckNum++;
                    else unCkNum++;
                    if (data[i][options.tree.childName]) checkNum(data[i][options.tree.childName]);
                }
            }
            checkNum(d[options.tree.childName]);
        }
        var $cb = $tr.children('td').find('input[lay-filter="' + components.checkboxFilter + '"]');
        if (ckNum > 0 && unCkNum === 0) {  // å…¨é€‰
            $cb.prop('checked', true);
            $cb.removeClass('ew-form-indeterminate');
            $cb.next('.layui-form-checkbox').addClass('layui-form-checked');
            d.LAY_CHECKED = true;  // åŒæ­¥æ›´æ–°æ•°æ®
            d.LAY_INDETERMINATE = false;
        } else if (ckNum === 0 && unCkNum > 0) {  // å…¨ä¸é€‰
            $cb.prop('checked', false);
            $cb.removeClass('ew-form-indeterminate');
            $cb.next('.layui-form-checkbox').removeClass('layui-form-checked');
            d.LAY_CHECKED = false;  // åŒæ­¥æ›´æ–°æ•°æ®
            d.LAY_INDETERMINATE = false;
        } else if (ckNum > 0 && unCkNum > 0) {  // åŠé€‰
            $cb.prop('checked', true);
            $cb.data('indeterminate', 'true');
            $cb.addClass('ew-form-indeterminate');
            $cb.next('.layui-form-checkbox').addClass('layui-form-checked');
            d.LAY_CHECKED = true;  // åŒæ­¥æ›´æ–°æ•°æ®
            d.LAY_INDETERMINATE = true;
        }
    };
    /** è”动全选复选框 */
    TreeTable.prototype.checkChooseAllCB = function () {
        var options = this.options;
        var components = this.getComponents();
        var ckNum = 0, unCkNum = 0;
        function checkNum(data) {
            for (var i = 0; i < data.length; i++) {
                if (data[i].LAY_CHECKED) ckNum++;
                else unCkNum++;
                if (data[i][options.tree.childName]) checkNum(data[i][options.tree.childName]);
            }
        }
        checkNum(options.data);
        var $cb = components.$view.find('input[lay-filter="' + components.chooseAllFilter + '"]');
        if (ckNum > 0 && unCkNum === 0) {  // å…¨é€‰
            $cb.prop('checked', true);
            $cb.removeClass('ew-form-indeterminate');
            $cb.next('.layui-form-checkbox').addClass('layui-form-checked');
        } else if ((ckNum === 0 && unCkNum > 0) || (ckNum === 0 && unCkNum === 0)) {  // å…¨ä¸é€‰
            $cb.prop('checked', false);
            $cb.removeClass('ew-form-indeterminate');
            $cb.next('.layui-form-checkbox').removeClass('layui-form-checked');
        } else if (ckNum > 0 && unCkNum > 0) {  // åŠé€‰
            $cb.prop('checked', true);
            $cb.addClass('ew-form-indeterminate');
            $cb.next('.layui-form-checkbox').addClass('layui-form-checked');
        }
    };
    /** å¡«å……序号列 */
    TreeTable.prototype.renderNumberCol = function () {
        this.getComponents().$tBody.children('tbody').children('tr').each(function (i) {
            $(this).children('td').find('.ew-tree-table-numbers').text(i + 1);
        });
    };
    /** æ ¹æ®id获取tr的index */
    TreeTable.prototype.getIndexById = function (id) {
        var options = this.options;
        function each(data, pi) {
            for (var i = 0; i < data.length; i++) {
                if (data[i][options.tree.idName] === id) return pi !== undefined ? pi + '-' + i : i;
                if (data[i][options.tree.childName]) {
                    var res = each(data[i][options.tree.childName], pi !== undefined ? pi + '-' + i : i);
                    //值不为undefined才return
                    if (res) return res;
                }
            }
        }
        return each(options.data);
    };
    /** å±•开指定行 */
    TreeTable.prototype.expand = function (id, cascade) {
        var components = this.getComponents();
        var $tr = components.$table.children('tbody').children('tr[data-index="' + this.getIndexById(id) + '"]');
        if (!$tr.hasClass('ew-tree-table-open')) $tr.children('td').find('.ew-tree-pack').trigger('click');
        if (cascade === false) return;
        // è”动父级
        var indent = parseInt($tr.data('indent'));
        $tr.prevAll('tr').each(function () {
            var tInd = parseInt($(this).data('indent'));
            if (tInd < indent) {
                if (!$(this).hasClass('ew-tree-table-open')) {
                    $(this).children('td').find('.ew-tree-pack').trigger('click');
                }
                indent = tInd;
            }
        });
    };
    /** æŠ˜å æŒ‡å®šè¡Œ */
    TreeTable.prototype.fold = function (id) {
        var components = this.getComponents();
        var $tr = components.$table.children('tbody').children('tr[data-index="' + this.getIndexById(id) + '"]');
        if ($tr.hasClass('ew-tree-table-open')) $tr.children('td').find('.ew-tree-pack').trigger('click');
    };
    /** å…¨éƒ¨å±•å¼€ */
    TreeTable.prototype.expandAll = function () {
        this.getComponents().$table.children('tbody').children('tr').each(function () {
            if (!$(this).hasClass('ew-tree-table-open')) $(this).children('td').find('.ew-tree-pack').trigger('click');
        });
    };
    /** å…¨éƒ¨æŠ˜å  */
    TreeTable.prototype.foldAll = function () {
        this.getComponents().$table.children('tbody').children('tr').each(function () {
            if ($(this).hasClass('ew-tree-table-open')) $(this).children('td').find('.ew-tree-pack').trigger('click');
        });
    };
    /** èŽ·å–å½“å‰æ•°æ® */
    TreeTable.prototype.getData = function () {
        return this.options.data;
    };
    /** é‡è½½è¡¨æ ¼ */
    TreeTable.prototype.reload = function (opt) {
        this.initOptions(this.options ? $.extend(true, this.options, opt) : opt);
        this.init();  // åˆå§‹åŒ–表格
        this.bindEvents();  // ç»‘定事件
    };
    /** èŽ·å–å½“å‰é€‰ä¸­è¡Œ */
    TreeTable.prototype.checkStatus = function (needIndeterminate) {
        if (needIndeterminate === undefined) needIndeterminate = true;
        var list = [];
        this.eachData(function (i, item) {
            if ((needIndeterminate || !item.LAY_INDETERMINATE) && item.LAY_CHECKED)
                list.push($.extend({isIndeterminate: item.LAY_INDETERMINATE}, item));
        });
        return list;
    };
    /** è®¾ç½®å¤/单选框选中 */
    TreeTable.prototype.setChecked = function (ids) {
        var that = this;
        var components = this.getComponents();
        var $radio = components.$table.find('input[lay-filter="' + components.radioFilter + '"]');
        if ($radio.length > 0) {  // å¼€å¯äº†å•选框
            $radio.each(function () {
                var d = that.getDataByTr($(this).parentsUntil('tr').parent());
                if (d && ids[ids.length - 1] == d[that.options.tree.idName]) {
                    $(this).next('.layui-form-radio').trigger('click');
                    return false;
                }
            });
        } else {  // å¼€å¯äº†å¤é€‰æ¡†
            components.$table.find('input[lay-filter="' + components.checkboxFilter + '"]').each(function () {
                var $cb = $(this);
                var $layCb = $cb.next('.layui-form-checkbox');
                var checked = $cb.prop('checked');
                var indeterminate = $cb.hasClass('ew-form-indeterminate');
                var d = that.getDataByTr($cb.parentsUntil('tr').parent());
                for (var i = 0; i < ids.length; i++) {
                    if (d && ids[i] == d[that.options.tree.idName]) {
                        if (d[that.options.tree.childName] && d[that.options.tree.childName].length > 0) continue;
                        if (!checked || indeterminate) $layCb.trigger('click');
                    }
                }
            });
        }
    };
    /** ç§»é™¤å…¨éƒ¨é€‰ä¸­ */
    TreeTable.prototype.removeAllChecked = function () {
        this.checkSubCB(this.getComponents().$table.children('tbody'), false);
    };
    /** å¯¼å‡º */
    TreeTable.prototype.exportData = function (type) {
        var components = this.getComponents();
        if ('show' === type) {
            components.$toolbar.find('.layui-table-tool-panel').remove();
            components.$toolbar.find('[lay-event="LAYTABLE_EXPORT"]').append([
                '<ul class="layui-table-tool-panel">',
                '   <li data-type="csv">导出到 Csv æ–‡ä»¶</li>',
                '   <li data-type="xls">导出到 Excel æ–‡ä»¶</li>',
                '</ul>'
            ].join(''));
        } else {
            if (device.ie) return layer.msg('不支持ie导出');
            if (!type) type = 'xls';
            var head = [], body = [];
            this.eachCols(function (i, item) {
                if (item.type !== 'normal' || item.hide) return;
                head.push(item.title || '');
            });
            components.$tBody.children('tbody').children('tr').each(function () {
                var items = [];
                $(this).children('td').each(function () {
                    var $this = $(this);
                    if ($this.data('type') !== 'normal' || $this.hasClass('layui-hide')) return true;
                    items.push($this.text().trim().replace(/,/g, ','));
                });
                body.push(items.join(','));
            });
            // åˆ›å»ºä¸‹è½½æ–‡ä»¶çš„a标签
            var alink = document.createElement('a');
            var content = encodeURIComponent(head.join(',') + '\r\n' + body.join('\r\n'));
            var contentType = ({csv: 'text/csv', xls: 'application/vnd.ms-excel'})[type];
            alink.href = 'data:' + contentType + ';charset=utf-8,\ufeff' + content;
            alink.download = (this.options.title || 'table') + '.' + type;
            document.body.appendChild(alink);
            alink.click();
            document.body.removeChild(alink);
        }
    };
    /** æ‰“印 */
    TreeTable.prototype.printTable = function () {
        var components = this.getComponents();
        var head = components.$tHead.children('thead').html();
        if (!head) head = components.$tBody.children('thead').html();
        var body = components.$tBody.children('tbody').html();
        var colgroup = components.$tBody.children('colgroup').html();
        var $html = $([
            '<table class="ew-tree-table-print">',
            '   <colgroup>', colgroup, '</colgroup>',
            '   <thead>', head, '</thead>',
            '   <tbody>', body, '</tbody>',
            '</table>'
        ].join(''));
        // éšè—ç‰¹æ®Šåˆ—
        $html.find('col[data-type="checkbox"],col[data-type="radio"],col[data-type="tool"]').remove();
        $html.find('td[data-type="checkbox"],td[data-type="radio"],td[data-type="tool"],.layui-hide').remove();
        function hideCol($temp) {
            var parentKey = $temp.data('parent'), pCol;
            if (!parentKey) return;
            var $parent = $html.children('thead').children('tr').children('[data-key="' + parentKey + '"]');
            var colspan = parseInt($parent.attr('colspan')) - 1;
            $parent.attr('colspan', colspan);
            if (colspan === 0) $parent.remove();
            hideCol($parent);
        }
        $html.find('th[data-type="checkbox"],th[data-type="radio"],th[data-type="tool"]').each(function () {
            hideCol($(this));
        }).remove();
        // æ‰“印内容样式
        var style = [
            '<style>',
            '   /* æ‰“印表格样式 */',
            '   .ew-tree-table-print {',
            '      border: none;',
            '      border-collapse: collapse;',
            '      width: 100%;',
            '      table-layout: fixed;',
            '   }',
            '   .ew-tree-table-print td, .ew-tree-table-print th {',
            '      color: #555;',
            '      font-size: 14px;',
            '      padding: 9px 15px;',
            '      word-break: break-all;',
            '      border: 1px solid #888;',
            '      text-align: left;',
            '   }',
            '   .ew-tree-table-print .ew-tree-table-cell {',
            '      min-height: 20px;',
            '   }',
            '   /* åºå·åˆ—样式 */',
            '   .ew-tree-table-print td[data-type="numbers"], .ew-tree-table-print th[data-type="numbers"] {',
            '      padding-left: 0;',
            '      padding-right: 0;',
            '   }',
            '   /* å•/复选框列样式 */',
            '   .ew-tree-table-print td[data-type="tool"], .ew-tree-table-print th[data-type="tool"], ',
            '   .ew-tree-table-print td[data-type="checkbox"], .ew-tree-table-print th[data-type="checkbox"], ',
            '   .ew-tree-table-print td[data-type="radio"], .ew-tree-table-print th[data-type="radio"] {',
            '      border: none;',
            '   }',
            '   .ew-tree-table-print td.layui-hide + td, .ew-tree-table-print th.layui-hide + th, ',
            '   .ew-tree-table-print td[data-type="tool"] + td, .ew-tree-table-print th[data-type="tool"] + th, ',
            '   .ew-tree-table-print td[data-type="checkbox"] + td, .ew-tree-table-print th[data-type="checkbox"] + th, ',
            '   .ew-tree-table-print td[data-type="radio"] + td, .ew-tree-table-print th[data-type="radio"] + th {',
            '      border-left: none;',
            '   }',
            '  /* ä¸æ˜¾ç¤ºçš„元素 */',
            '   .layui-hide, ',
            '   .ew-tree-table-print td[data-type="tool"] *, .ew-tree-table-print th[data-type="tool"] *, ',
            '   .ew-tree-table-print td[data-type="checkbox"] *, .ew-tree-table-print th[data-type="checkbox"] *, ',
            '   .ew-tree-table-print td[data-type="radio"] *, .ew-tree-table-print th[data-type="radio"] *, ',
            '   .layui-table-grid-down, .ew-tree-tips-c, .ew-tree-icon, .ew-tree-table-arrow.ew-tree-table-arrow-hide {',
            '      display: none;',
            '   }',
            '   /* tree缩进 */',
            '   .ew-tree-table-indent {',
            '      padding-left: 13px;',
            '   }',
            '   /* ç®­å¤´ */',
            '   .ew-tree-table-arrow {',
            '      position: relative;',
            '      padding-left: 13px;',
            '   }',
            '   .ew-tree-table-arrow:before {',
            '      content: "";',
            '      border: 5px solid transparent;',
            '      border-top-color: #666;',
            '      position: absolute;',
            '      left: 0;',
            '      top: 6px;',
            '   }',
            '</style>'
        ].join('');
        var pWindow = window.open('', '_blank');
        pWindow.focus();
        var pDocument = pWindow.document;
        pDocument.open();
        pDocument.write($html[0].outerHTML + style);
        pDocument.close();
        pWindow.print();
        pWindow.close();
    };
    /** ç­›é€‰åˆ— */
    TreeTable.prototype.toggleCol = function (show, field, key) {
        var components = this.getComponents();
        if (show === undefined) {
            components.$toolbar.find('.layui-table-tool-panel').remove();
            var cols = ['<ul class="layui-table-tool-panel">'];
            this.eachCols(function (i, item) {
                if (item.type !== 'normal') return;
                cols.push('<li><input type="checkbox" lay-skin="primary"');
                cols.push(' lay-filter="' + components.colsToggleFilter + '"');
                cols.push(' value="' + item.key + '" title="' + util.escape(item.title || '') + '"');
                cols.push((item.hide ? '' : ' checked') + '></li>');
            });
            components.$toolbar.find('[lay-event="LAYTABLE_COLS"]').append(cols.join('') + '</ul>');
            form.render('checkbox', components.filter);
        } else {
            if (key) {
                var $td = components.$table.children('tbody').children('tr').children('[data-key="' + key + '"]');
                var $th = components.$table.children('thead').children('tr').children('[data-key="' + key + '"]');
                if (show) {
                    $td.removeClass('layui-hide');
                    $th.removeClass('layui-hide');
                } else {
                    $td.addClass('layui-hide');
                    $th.addClass('layui-hide');
                }
                // åŒæ­¥æ›´æ–°æ•°æ®
                var ks = key.split('-');
                var col = this.options.cols[ks[0]][ks[1]];
                col.hide = !show;
                // æ›´æ–°colspan数据
                function changeParent($temp) {
                    var parentKey = $temp.data('parent'), pCol;
                    if (!parentKey) return;
                    var $parent = components.$table.children('thead').children('tr').children('[data-key="' + parentKey + '"]');
                    var colspan = $parent.attr('colspan');
                    show ? colspan++ : colspan--;
                    $parent.attr('colspan', colspan);
                    if (colspan === 0) $parent.addClass('layui-hide');
                    else $parent.removeClass('layui-hide');
                    changeParent($parent);
                }
                changeParent($th);
                // åŒæ­¥eachCols数据
                this.eachCols(function (i, item) {
                    if (item.key === key) item.hide = col.hide;
                });
                this.resize();  // æ›´æ–°è¡¨æ ¼å°ºå¯¸
            }
        }
    };
    /**
     * æœç´¢æ•°æ®
     * @param ids å…³é”®å­—或数据id集合
     */
    TreeTable.prototype.filterData = function (ids) {
        var components = this.getComponents();
        components.$loading.show();
        if (this.options.data.length > 0) components.$loading.addClass('ew-loading-float');
        var $trList = components.$table.children('tbody').children('tr');
        var indexList = [];
        if (typeof ids === 'string') {  // å…³é”®å­—
            $trList.each(function () {
                var index = $(this).data('index');
                $(this).children('td').each(function () {
                    if ($(this).text().indexOf(ids) !== -1) {
                        indexList.push(index);
                        return false;
                    }
                });
            });
        } else {
            for (var i = 0; i < ids.length; i++) {
                indexList.push(this.getIndexById(ids[i]));
            }
        }
        $trList.addClass('ew-tree-table-filter-hide');
        for (var j = 0; j < indexList.length; j++) {
            var $tr = $trList.filter('[data-index="' + indexList[j] + '"]');
            $tr.removeClass('ew-tree-table-filter-hide');
            var indent = parseInt($tr.data('indent'));
            // è”动子级
            $tr.nextAll('tr').each(function () {
                if (parseInt($(this).data('indent')) <= indent) return false;
                $(this).removeClass('ew-tree-table-filter-hide');
            });
            if ($tr.hasClass('ew-tree-table-open')) toggleRow($tr);
            // è”动父级
            $tr.prevAll('tr').each(function () {
                var tInd = parseInt($(this).data('indent'));
                if (tInd < indent) {
                    $(this).removeClass('ew-tree-table-filter-hide');
                    if (!$(this).hasClass('ew-tree-table-open')) toggleRow($(this));
                    indent = tInd;
                }
            });
        }
        // æœ€åŽå†æ£€æŸ¥ä¸€é
        /*$trList.not('.ew-tree-table-filter-hide').not('.ew-tree-tb-hide').each(function () {
            var index = $(this).data('index'), hide = true;
            for (var k = 0; k < indexList.length; k++) {
                if (indexList[k] === index) hide = false;
            }
            if (hide) $(this).addClass('ew-tree-table-filter-hide');
        });*/
        components.$loading.hide();
        components.$loading.removeClass('ew-loading-float');
        if (indexList.length === 0) components.$empty.show();
        updateFixedTbHead(components.$view);  // æ›´æ–°æ»šåŠ¨æ¡è¡¥ä¸
    };
    /** é‡ç½®æœç´¢ */
    TreeTable.prototype.clearFilter = function () {
        var components = this.getComponents();
        components.$table.children('tbody').children('tr').removeClass('ew-tree-table-filter-hide');
        if (this.options.data.length > 0) components.$empty.hide();
        updateFixedTbHead(components.$view);  // æ›´æ–°æ»šåŠ¨æ¡è¡¥ä¸
    };
    /**
     * åˆ·æ–°æŒ‡å®šçˆ¶çº§ä¸‹çš„节点
     * @param id çˆ¶çº§id,空则全部刷新
     * @param data éžå¼‚步模式替换的数据
     */
    TreeTable.prototype.refresh = function (id, data) {
        if (isClass(id) === 'Array') {
            data = id;
            id = undefined;
        }
        var components = this.getComponents();
        var d, $tr;
        if (id !== undefined) {
            $tr = components.$table.children('tbody').children('tr[data-index="' + this.getIndexById(id) + '"]');
            d = this.getDataByTr($tr);
        }
        if (data) {  // æ•°æ®æ¨¡å¼
            if (data.length > 0) components.$loading.addClass('ew-loading-float');
            components.$loading.show();
            if (data.length > 0 && this.options.tree.isPidData) {  // pid形式数据
                this.renderBodyData(tt.pidToChildren(data, this.options.tree.idName, this.options.tree.pidName, this.options.tree.childName), d, $tr);
            } else {
                this.renderBodyData(data, d, $tr);
            }
        } else {  // å¼‚步模式
            this.renderBodyAsync(d, $tr);
        }
    };
    /** åˆ é™¤æ•°æ® */
    TreeTable.prototype.del = function (id, index) {
        if (index === undefined) index = this.getIndexById(id);
        var indexList = (typeof index === 'number' ? [index] : index.split('-'));
        var d = this.options.data;
        if (indexList.length > 1) {
            for (var i = 0; i < indexList.length - 1; i++) {
                d = d[parseInt(indexList[i])][this.options.tree.childName];
            }
        }
        d.splice(indexList[indexList.length - 1], 1);
    };
    /** æ›´æ–°æ•°æ® */
    TreeTable.prototype.update = function (id, fields) {
        $.extend(true, this.getDataByTr(this.getIndexById(id)), fields);
    };
    /** æŠ˜å /展开行 */
    function toggleRow($tr) {
        var indent = parseInt($tr.data('indent'));
        var open = $tr.hasClass('ew-tree-table-open');
        if (open) {  // æŠ˜å 
            $tr.removeClass('ew-tree-table-open');
            $tr.nextAll('tr').each(function () {
                if (parseInt($(this).data('indent')) <= indent) return false;
                $(this).addClass('ew-tree-tb-hide');
            });
        } else {  // å±•å¼€
            $tr.addClass('ew-tree-table-open');
            var hideInd;
            $tr.nextAll('tr').each(function () {
                var ind = parseInt($(this).data('indent'));
                if (ind <= indent) return false;
                if (hideInd !== undefined && ind > hideInd) return true;
                $(this).removeClass('ew-tree-tb-hide');
                if (!$(this).hasClass('ew-tree-table-open')) hideInd = parseInt($(this).data('indent'));
                else hideInd = undefined;
            });
        }
        updateFixedTbHead($tr.parentsUntil('.ew-tree-table').last().parent());
        return open;
    }
    /** å›ºå®šè¡¨å¤´æ»šåŠ¨æ¡è¡¥ä¸ */
    function updateFixedTbHead($view) {
        var $headBox = $view.children('.ew-tree-table-head');
        var $tbBox = $view.children('.ew-tree-table-box');
        var sWidth = $tbBox.width() - $tbBox.prop('clientWidth');
        $headBox.css('border-right', (sWidth > 0 ? sWidth : 0) + 'px solid #f2f2f2');
    }
    // ç›‘听窗口大小改变
    $(window).resize(function () {
        $('.ew-tree-table').each(function () {
            updateFixedTbHead($(this));
            var $tbBox = $(this).children('.ew-tree-table-box');
            var full = $tbBox.data('full');
            if (full && device.ie && device.ie < 10) {
                $tbBox.css('height', getPageHeight() - full);
            }
        });
    });
    /** è¡¨æ ¼æº¢å‡ºç‚¹å‡»å±•开功能 */
    $(document).on('mouseenter', '.ew-tree-table-cell.single-line', function () {
        var $content = $(this).children('.ew-tree-table-cell-content');
        if ($content.prop('scrollWidth') > $content.outerWidth()) $(this).children('.layui-table-grid-down').show();
    }).on('mouseleave', '.ew-tree-table-cell.single-line', function () {
        $(this).children('.layui-table-grid-down').hide();
    });
    // ç‚¹å‡»ç®­å¤´å±•å¼€
    $(document).on('click', '.ew-tree-table-cell>.layui-table-grid-down', function (e) {
        e.stopPropagation();
        hideAllTdTips();
        var $cell = $(this).parent();
        $cell.addClass('ew-tree-tips-open');
        $cell.children('.layui-table-grid-down').hide();
        var tw = $cell.parent().outerWidth() + 4;
        if ($cell.outerWidth() < tw) $cell.children('.ew-tree-table-cell-content').css({'width': tw, 'max-width': tw});
        var $box = $cell.parents().filter('.ew-tree-table-box');
        if ($box.length === 0) $box = $cell.parents().filter('.ew-tree-table-head');
        if ($box.length === 0) return;
        if (($cell.outerWidth() + $cell.offset().left) + 20 > $box.offset().left + $box.outerWidth()) {
            $cell.addClass('ew-show-left');
        }
        if (($cell.outerHeight() + $cell.offset().top + 10) > $box.offset().top + $box.outerHeight()) {
            $cell.addClass('ew-show-bottom');
        }
    });
    // ç‚¹å‡»å…³é—­æŒ‰é’®å…³é—­
    $(document).on('click', '.ew-tree-table-cell>.ew-tree-tips-c', function () {
        hideAllTdTips();
    });
    // ç‚¹å‡»ç©ºç™½éƒ¨åˆ†å…³é—­
    $(document).on('click', function () {
        hideAllTdTips();
        $('.ew-tree-table .layui-table-tool-panel').remove();
    });
    $(document).on('click', '.ew-tree-table-cell.ew-tree-tips-open', function (e) {
        e.stopPropagation();
    });
    /* å…³é—­æ‰€æœ‰å•元格溢出提示框 */
    function hideAllTdTips() {
        $('.ew-tree-table-cell').removeClass('ew-tree-tips-open ew-show-left ew-show-bottom');
        $('.ew-tree-table-cell>.ew-tree-table-cell-content').css({'width': '', 'max-width': ''});
    }
    /** æ‹–拽调整列宽 */
    $(document).on('mousedown', '.ew-tb-resize', function (e) {
        layui.stope(e);
        var $this = $(this);
        $this.attr('move', 'true');
        var key = $this.parent().data('key');
        $this.data('x', e.clientX);
        var w = $this.parent().parent().parent().parent().children('colgroup').children('col[data-key="' + key + '"]').attr('width');
        if (!w || w.toString().indexOf('%') !== -1) w = $this.parent().outerWidth();
        $this.data('width', w);
        $('body').addClass('ew-tree-table-resizing');
    }).on('mousemove', function (e) {
        var $rs = $('.ew-tree-table .ew-tb-resize[move="true"]');
        if ($rs.length === 0) return;
        layui.stope(e);
        var x = $rs.data('x');
        var w = $rs.data('width');
        var nw = parseFloat(w) + e.clientX - parseFloat(x);
        if (nw <= 0) nw = 1;
        // æ›´æ–°å®žä¾‹options中的宽度
        var ins = _instances[$rs.parentsUntil('.ew-tree-table').last().parent().attr('lay-filter')];
        var key = $rs.parent().data('key');
        var ks = key.split('-');
        ins.options.cols[ks[0]][ks[1]].width = nw;
        ins.eachCols(function (i, item) {
            if (item.key === key) item.width = nw;
        });
        ins.resize();
    }).on('mouseup', function (e) {
        $('.ew-tree-table .ew-tb-resize[move="true"]').attr('move', 'false');
        $('body').removeClass('ew-tree-table-resizing');
    }).on('mouseleave', function (e) {
        $('.ew-tree-table .ew-tb-resize[move="true"]').attr('move', 'false');
        $('body').removeClass('ew-tree-table-resizing');
    });
    /** èŽ·å–é¡¶çº§çš„pId */
    function getPids(data, idName, pidName) {
        var pids = [];
        for (var i = 0; i < data.length; i++) {
            var hasPid = false;
            for (var j = 0; j < data.length; j++) {
                if (data[i][pidName] == data[j][idName]) {
                    hasPid = true;
                    break;
                }
            }
            if (!hasPid) pids.push(data[i][pidName]);
        }
        return pids;
    }
    /** åˆ¤æ–­pId是否相等 */
    function pidEquals(pId, pIds) {
        if (isClass(pIds) === 'Array') {
            for (var i = 0; i < pIds.length; i++)
                if (pId == pIds[i]) return true;
        }
        return pId == pIds;
    }
    /** èŽ·å–å˜é‡ç±»åž‹ */
    function isClass(o) {
        if (o === null) return 'Null';
        if (o === undefined) return 'Undefined';
        return Object.prototype.toString.call(o).slice(8, -1);
    }
    /** èŽ·å–æµè§ˆå™¨é«˜åº¦ */
    function getPageHeight() {
        return document.documentElement.clientHeight || document.body.clientHeight;
    }
    /** å¯¹å¤–提供的方法 */
    var tt = {
        /* æ¸²æŸ“ */
        render: function (options) {
            return new TreeTable(options);
        },
        /* é‡è½½ */
        reload: function (id, opt) {
            _instances[id].reload(opt);
        },
        /* äº‹ä»¶ç›‘听 */
        on: function (events, callback) {
            return layui.onevent.call(this, MOD_NAME, events, callback);
        },
        /* pid转children形式 */
        pidToChildren: function (data, idName, pidName, childName, pId) {
            if (!childName) childName = 'children';
            var newList = [];
            for (var i = 0; i < data.length; i++) {
                if (data[i][idName] == data[i][pidName])
                    return console.error('第' + i + '条数据的' + idName + '与' + pidName + '相同', data[i]);
                if (pId === undefined) pId = getPids(data, idName, pidName);
                if (pidEquals(data[i][pidName], pId)) {
                    var children = this.pidToChildren(data, idName, pidName, childName, data[i][idName]);
                    if (children.length > 0) data[i][childName] = children;
                    newList.push(data[i]);
                }
            }
            return newList;
        }
    };
    /** æ·»åŠ æ ·å¼ */
    $('head').append([
        '<style id="ew-tree-table-css">',
        '/** æœ€å¤–层容器 */',
        '.ew-tree-table {',
        '    margin: 10px 0;',
        '    position: relative;',
        '    border: 1px solid #e6e6e6;',
        '    border-bottom: none;',
        '    border-right: none;',
        '}',
        '.ew-tree-table:before, .ew-tree-table:after, .ew-tree-table .ew-tree-table-head:after {',
        '    content: "";',
        '    background-color: #e6e6e6;',
        '    position: absolute;',
        '    right: 0;',
        '    bottom: 0;',
        '}',
        '.ew-tree-table:before {',
        '    width: 1px;',
        '    top: 0;',
        '    z-index: 1;',
        '}',
        '.ew-tree-table:after, .ew-tree-table .ew-tree-table-head:after {',
        '    height: 1px;',
        '    left: 0;',
        '}',
        '.ew-tree-table .layui-table {',
        '    margin: 0;',
        '    position: relative;',
        '    table-layout: fixed;',
        '}',
        '/** è¡¨æ ¼ */',
        '.ew-tree-table .layui-table td, .ew-tree-table .layui-table th {',
        '    border-top: none;',
        '    border-left: none;',
        '    padding: 0 !important;',
        '}',
        '.ew-tree-table .ew-tree-table-box {',
        '    overflow: auto;',
        '    position: relative;',
        '}',
        '.ew-tree-table .ew-tree-table-head {',
        '    overflow: hidden;',
        '    box-sizing: border-box;',
        '    background-color: #f2f2f2;',
        '    position: relative;',
        '}',
        '/** loading */',
        '.ew-tree-table div.ew-tree-table-loading {',
        '    padding: 10px 0;',
        '    text-align: center;',
        '}',
        '.ew-tree-table div.ew-tree-table-loading > i {',
        '    color: #999;',
        '    font-size: 30px;',
        '}',
        '.ew-tree-table div.ew-tree-table-loading.ew-loading-float {',
        '    position: absolute;',
        '    top: 0;',
        '    left: 0;',
        '    right: 0;',
        '}',
        '/** ç©ºæ•°æ® */',
        '.ew-tree-table .ew-tree-table-empty {',
        '    color: #666;',
        '    font-size: 14px;',
        '    padding: 18px 0;',
        '    text-align: center;',
        '    display: none;',
        '}',
        '/** å•元格 */',
        '.ew-tree-table-cell.ew-tree-tips-open {',
        '    position: absolute;',
        '    top: 0;',
        '    left: 0;',
        '    padding: 0;',
        '    z-index: 9999;',
        '    background-color: #fff;',
        '    box-shadow: 3px 3px 8px rgba(0, 0, 0, .15);',
        '}',
        'thead .ew-tree-table-cell.ew-tree-tips-open {',
        '    background-color: #f2f2f2;',
        '}',
        '.ew-tree-table-cell.ew-tree-tips-open.ew-show-left {',
        '    right: 0;',
        '    left: auto;',
        '    box-shadow: -3px 3px 8px rgba(0, 0, 0, .15);',
        '}',
        '.ew-tree-table-cell.ew-tree-tips-open.ew-show-bottom {',
        '    bottom: 0;',
        '    top: auto;',
        '    box-shadow: 3px -3px 8px rgba(0, 0, 0, .15);',
        '}',
        '.ew-tree-table-cell.ew-tree-tips-open.ew-show-left.ew-show-bottom {',
        '    box-shadow: -3px -3px 8px rgba(0, 0, 0, .15);',
        '}',
        '.ew-tree-table-cell > .ew-tree-tips-c {',
        '    position: absolute;',
        '    right: -6px;',
        '    top: -3px;',
        '    width: 22px;',
        '    height: 22px;',
        '    line-height: 22px;',
        '    font-size: 16px;',
        '    color: #fff;',
        '    background-color: #666;',
        '    border-radius: 50%;',
        '    text-align: center;',
        '    cursor: pointer;',
        '    display: none;',
        '}',
        'table tr:first-child .ew-tree-table-cell > .ew-tree-tips-c {',
        '    top: 0;',
        '}',
        '.ew-tree-table-cell.ew-tree-tips-open > .ew-tree-tips-c {',
        '    display: block;',
        '}',
        '.ew-tree-table-cell.ew-tree-tips-open.ew-show-left > .ew-tree-tips-c {',
        '    left: -6px;',
        '    right: auto;',
        '}',
        '.ew-tree-table-cell > .ew-tree-table-cell-content {',
        '    padding: 5px 15px;',
        '    line-height: 28px;',
        '}',
        '[lay-size="lg"] .ew-tree-table-cell > .ew-tree-table-cell-content {',
        '    line-height: 40px;',
        '}',
        '[lay-size="sm"] .ew-tree-table-cell > .ew-tree-table-cell-content {',
        '    padding: 1px 15px;',
        '}',
        '.ew-tree-table-cell.single-line > .ew-tree-table-cell-content {',
        '    overflow: hidden;',
        '    white-space: nowrap;',
        '    text-overflow: ellipsis;',
        '}',
        '.ew-tree-table-cell.ew-tree-tips-open > .ew-tree-table-cell-content {',
        '    overflow: auto;',
        '    padding: 9px 15px;',
        '    height: auto;',
        '    min-height: 100%;',
        '    max-height: 110px;',
        '    line-height: inherit;',
        '    max-width: 260px;',
        '    width: 200px;',
        '    width: max-content;',
        '    width: -moz-max-content;',
        '    box-sizing: border-box;',
        '    white-space: normal;',
        '}',
        '.ew-tree-table-cell > .layui-table-grid-down {',
        '    box-sizing: border-box;',
        '}',
        '/** å›¾æ ‡åˆ— */',
        '.ew-tree-table .ew-tree-pack {',
        '    cursor: pointer;',
        '    line-height: 16px;',
        '}',
        '.ew-tree-table .ew-tree-pack > .layui-icon, .ew-tree-table .ew-tree-pack > .ew-tree-icon {',
        '    margin-right: 5px;',
        '}',
        '.ew-tree-table .ew-tree-pack > * {',
        '    vertical-align: middle;',
        '}',
        '/* ç¼©è¿› */',
        '.ew-tree-table .ew-tree-table-indent {',
        '    margin-right: 5px;',
        '    padding-left: 16px;',
        '}',
        '/* ç®­å¤´ */',
        '.ew-tree-table .ew-tree-table-arrow:before {',
        '    content: "\\e623";',
        '}',
        '.ew-tree-table .ew-tree-table-open .ew-tree-table-arrow:before {',
        '    content: "\\e625";',
        '}',
        '.ew-tree-table .ew-tree-table-arrow.arrow2 {',
        '    font-size: 12px;',
        '    font-weight: 600;',
        '    line-height: 16px;',
        '    height: 16px;',
        '    width: 16px;',
        '    display: inline-block;',
        '    text-align: center;',
        '    color: #888;',
        '}',
        '.ew-tree-table .ew-tree-table-arrow.arrow2:before {',
        '    content: "\\e602";',
        '}',
        '.ew-tree-table .ew-tree-table-open .ew-tree-table-arrow.arrow2:before {',
        '    content: "\\e61a";',
        '}',
        '.ew-tree-table-arrow.ew-tree-table-arrow-hide {',
        '    visibility: hidden;',
        '}',
        '/* ç®­å¤´å˜åŠ è½½ä¸­çŠ¶æ€ */',
        '.ew-tree-table tr.ew-tree-table-loading > td .ew-tree-table-arrow:before {',
        '    content: "\\e63d" !important;',
        '}',
        '.ew-tree-table tr.ew-tree-table-loading > td .ew-tree-table-arrow {',
        '    margin-right: 0;',
        '}',
        '.ew-tree-table tr.ew-tree-table-loading > td .ew-tree-table-arrow + * {',
        '    margin-left: 5px;',
        '}',
        '.ew-tree-table tr.ew-tree-table-loading * {',
        '    pointer-events: none !important;',
        '}',
        '/** æŠ˜å è¡Œ */',
        '.ew-tree-table .ew-tree-tb-hide {',
        '    display: none;',
        '}',
        '/** ç‰¹æ®Šåˆ—调整 */',
        '.ew-tree-table td[data-type="numbers"] > .ew-tree-table-cell,',
        '.ew-tree-table th[data-type="numbers"] > .ew-tree-table-cell,',
        '.ew-tree-table td[data-type="checkbox"] > .ew-tree-table-cell,',
        '.ew-tree-table th[data-type="checkbox"] > .ew-tree-table-cell,',
        '.ew-tree-table td[data-type="radio"] > .ew-tree-table-cell,',
        '.ew-tree-table th[data-type="radio"] > .ew-tree-table-cell,',
        '.ew-tree-table td[data-type="space"] > .ew-tree-table-cell,',
        '.ew-tree-table th[data-type="space"] > .ew-tree-table-cell {',
        '    padding-left: 0;',
        '    padding-right: 0;',
        '}',
        '/* å•元格内表单元素样式调整 */',
        '.ew-tree-table .layui-form-switch',
        '.ew-tree-table .layui-form-radio {',
        '    margin: 0;',
        '}',
        '/* checkbox列调整 */',
        '.ew-tree-table-checkbox + .layui-form-checkbox {',
        '    padding: 0;',
        '}',
        '.ew-tree-table-checkbox + .layui-form-checkbox > .layui-icon {',
        '    font-weight: 600;',
        '    color: transparent;',
        '    transition: background-color .1s linear;',
        '    -webkit-transition: background-color .1s linear;',
        '}',
        '.ew-tree-table-checkbox + .layui-form-checkbox.layui-form-checked > .layui-icon {',
        '    color: #fff;',
        '}',
        '/* checkbox半选状态 */',
        '.ew-form-indeterminate + .layui-form-checkbox .layui-icon:before {',
        '    content: "";',
        '    width: 10px;',
        '    height: 2px;',
        '    background-color: #f1f1f1;',
        '    position: absolute;',
        '    top: 50%;',
        '    left: 50%;',
        '    margin: -1px 0 0 -5px;',
        '}',
        '/* radio列调整 */',
        '.ew-tree-table-radio + .layui-form-radio {',
        '    margin: 0;',
        '    padding: 0;',
        '    height: 20px;',
        '    line-height: 20px;',
        '}',
        '.ew-tree-table-radio + .layui-form-radio > i {',
        '    margin: 0;',
        '    height: 20px;',
        '    font-size: 20px;',
        '    line-height: 20px;',
        '}',
        '/** å•元格编辑 */',
        '.ew-tree-table .layui-table td[data-edit] {',
        '    cursor: text;',
        '}',
        '.ew-tree-table .ew-tree-table-edit {',
        '    position: absolute;',
        '    left: 0;',
        '    top: 0;',
        '    width: 100%;',
        '    height: 100%;',
        '    border-radius: 0;',
        '    box-shadow: 1px 1px 20px rgba(0, 0, 0, .15);',
        '}',
        '.ew-tree-table .ew-tree-table-edit:focus {',
        '    border-color: #5FB878 !important;',
        '}',
        '.ew-tree-table .ew-tree-table-edit.layui-form-danger {',
        '    border-color: #FF5722 !important;',
        '}',
        '/** æœç´¢æ•°æ®éšè—è¡Œ */',
        '.ew-tree-table tr.ew-tree-table-filter-hide {',
        '    display: none !important;',
        '}',
        '/** å¤´éƒ¨å·¥å…·æ  */',
        '.ew-tree-table .ew-tree-table-tool {',
        '    min-height: 50px;',
        '    line-height: 30px;',
        '    padding: 10px 15px;',
        '    box-sizing: border-box;',
        '    background-color: #f2f2f2;',
        '    border-bottom: 1px solid #e6e6e6;',
        '}',
        '.ew-tree-table .ew-tree-table-tool .ew-tree-table-tool-right {',
        '    float: right;',
        '}',
        '.ew-tree-table .ew-tree-table-tool .ew-tree-table-tool-item {',
        '    position: relative;',
        '    color: #333;',
        '    width: 26px;',
        '    height: 26px;',
        '    line-height: 26px;',
        '    text-align: center;',
        '    margin-left: 10px;',
        '    display: inline-block;',
        '    border: 1px solid #ccc;',
        '    box-sizing: border-box;',
        '    vertical-align: middle;',
        '    -webkit-transition: .3s all;',
        '    transition: .3s all;',
        '    cursor: pointer;',
        '}',
        '.ew-tree-table .ew-tree-table-tool .ew-tree-table-tool-item:first-child {',
        '    margin-left: 0;',
        '}',
        '.ew-tree-table .ew-tree-table-tool .ew-tree-table-tool-item:hover {',
        '    border-color: #999;',
        '}',
        '.ew-tree-table .ew-tree-table-tool-right .layui-table-tool-panel {',
        '    left: auto;',
        '    right: -1px;',
        '    z-index: 9999;',
        '}',
        '/* åˆ—宽拖拽调整 */',
        '.ew-tree-table .ew-tb-resize {',
        '    position: absolute;',
        '    right: 0;',
        '    top: 0;',
        '    bottom: 0;',
        '    width: 10px;',
        '    cursor: col-resize;',
        '}',
        '.ew-tree-table-resizing {',
        '    cursor: col-resize;',
        '    -ms-user-select: none;',
        '    -moz-user-select: none;',
        '    -webkit-user-select: none;',
        '    user-select: none;',
        '}',
        '/* è¾…助样式 */',
        '.ew-tree-table .layui-form-switch {',
        '    margin: 0;',
        '}',
        '.ew-tree-table .pd-tb-0 {',
        '    padding-top: 0 !important;',
        '    padding-bottom: 0 !important;',
        '}',
        '.ew-tree-table .break-all {',
        '    word-break: break-all !important;',
        '}',
        '/** æ‰©å±•图标 */',
        '.ew-tree-table .ew-tree-icon-folder:after, .ew-tree-table .ew-tree-icon-file:after {',
        '    content: "";',
        '    padding: 2px 10px;',
        '    -webkit-background-size: cover;',
        '    -moz-background-size: cover;',
        '    -o-background-size: cover;',
        '    background-size: cover;',
        '    background-repeat: no-repeat;',
        '    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAE6UlEQVR4Xu2ZPYhcVRiGny9hC0FsTEBCGkFTWIQE/IlpgmKpWAiLyR0XLbYTxEKxkCAEhRCxEOwsjJnJioKIYClWKgqiskIIaCoLYyASVJT87JGspN37LrOXvec777Tzzrnvz7Nn2dnAr6YbiKbTOzwGoHEIDIABaLyBxuP7BjAAjTfQeHzfAAag8QYaj+8bwAA03kDj8X0DGIDGG2g8/lw3QFlhD9fZN7oOF7gYT3NudL5GaGjTAJQP2c1VXgIOExyGkf4/oXCe4I3oeH+EvY/G0qYAKFOWCV4Hdo8mQb+RL7jBE7HE3/3S9hQyAGXGCeDVSiv6lqscief4t1L/g9mWAChTHiD4ZrTXvVbPu9GxrEnbUWkAzPgeOJCglsXo+ChBji2L0AtAmfEgrP/0Z3hdZoF7Y5HLGcJsRQYFgLeAF7fiYSM540x0LI3Ey7bb6AdgytcEh7bd6VYa2MGhOJrmVpurmX4AZlwCds31lPF9+AI32O8/DYUvccqUKwR3jG/DuR29Gd36F1pNv/pvgKwAFK5RuC+e4eeWCWgXgJurFz6LCY8bgA0aSPwr4P/UhVNc43ir3xK2fQPcAr/wO/AewU/Ar6xRqroVdvAnC6zGIlc369sAbLax8er/ofAJOzkVR9e/uZVeBkCqqTrRyeh4RXFtAJSWatQUno0Jp/usG4C+hup9/yJ72BuPcH2jCAag3oEV50vRccYAKFXl1LwdHS8YgJzj9qcqfBoTnjQA/VVlVXwXHfcbgKzz9uf6IToOGoD+orIqDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzGUAxKKyygxA1mXFXAZALCqrzABkXVbMZQDEorLKDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzGUAxKKyygxA1mXFXAZALCqrzABkXVbMZQDEorLKDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzGUAxKKyygxA1mXFXAZALCqrzABkXVbMZQDEorLKDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzGUAxKKyygxA1mXFXAZALCqrzABkXVbMZQDEorLKDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzGUAxKKyygxA1mXFXAZALCqrzABkXVbMZQDEorLKDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzLUFAMy4BOwSH2jZmBoorMaE/RtZij6/ZcoFgrv7dH5/lA38Eh33zAfAjM+BR0cZz6Y2bqDwY0w4MB8AU04SvOyuq2zg4+h4aj4AzvIwha+qjN+66cLzMeGduQC4+eEy4zywr/U+K8t/hQX2xiJ/zQ/ACgdZ40vgtspKaNducCyOsdJXQO9fAbcOKGc5whofENzVd6jf3/YGTkTHccWFDMD6r4LT3MlOloHHCB4CblceYs3gDfxB4TeCcxReiwmr6hM3BYB6qHX1NGAA6tlqEKcGYJBa6znUANSz1SBODcAgtdZzqAGoZ6tBnBqAQWqt51ADUM9Wgzg1AIPUWs+hBqCerQZxagAGqbWeQw1APVsN4tQADFJrPYcagHq2GsTpf+KxwJB5Cd5mAAAAAElFTkSuQmCC");',
        '}',
        '.ew-tree-table tr.ew-tree-table-open > td .ew-tree-icon-folder:after {',
        '    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAKwElEQVR4Xu2df9AVVRnHP899gUxmYKhsCpJREEeMakSoiGGCbIxSizIJ7i5OksZkMIxQjlOQyOCQ5o/8RWmkMdz7wjDC5I+hcFSKxEENh4YsEwPJAbVQ8AeQL733NPcKyn3v7r17d8/uvfvus//ec57n+3yf7z179uw5zwp6ZZoByXT0GjwqgIyLQAWgAsg4AxkPX0cAFUDGGch4+DoCqAAyzkDGw9cRQAWQcQYyHr6OACqA5hkw63kfr3IyOQZTIte8BUs9OnibEi/isEcEY8lqpswEHgHMGgbSxTyEyRjGIC1MfM8UGQ4CfyLHWp7jbllEKVNZjBBsIAGYAi7CrcCgCL6S6voM4IrDtqQcptlPQwGYAksRrkpVkIZD5JgmeR5IFe4WgK0rAFPkamBRC3BFd2k4AkwSl83RjfVeC74CMCuZSI6NqQ7d8G9KDJOLK3MEvTwY8BdAga0Io3sBa0vEYWEviCOWEDwFYDoZh+HxWDwmb/R18gzSx0Rv4r0FUORa4EfJ5yomj8IEyfNYTNZTbdZbAAU2IJyb6siOB2+4Qlx+3mvisRiInwC2I4yy6Ke1pgw/E5crWwuiPb373QL+BZzcnpBDobpLHGaF6tnLO6kAenmCG4WXFQH8WhwubURGFn/PhgAMD4nLl7KY4EYxZ0MAcBhhqOTZ14iQrP2eFQGU8/ogeb6qC0LVEs+SAMqRL+ctLpdZlRdFeoH32UBTpLc9Br6XbMMuhLUIm+jmzbZSQUdlV9M++rBTpnI4CWxZGwGS4NSWj2eBh4CbxGG3LaM97agA4mLWnt23gZ+yg8VxbHVTAdhLVNyWHqabKbb3NqgA4k6bTfuG+3GYYvNJRgVgM0FJ2DL8QFxutOVKBWCLyaTsGN6gH0NlKq/bcKkCsMFi0jYMs8XlDhtuVQA2WEzahuH34vJlG25VADZYTN7GPnE4yYZbFYANFlth4y362VjSVgG0Ink2fAon2Xi7qQKwkYxW2OglAtiP4QlgN8LLreAxtT4HcL1cwKGo+FsxAnQDv6HEbTKDv0QNQPtHYyBpAZSPm7mSp/ymS682YCA5ARiWMYS5Mon/tUHcCuEoA0kJ4AZx+KGy3n4MJCGA9eJwXqPQzSJyjGAMJU5s1FZ/r8NAH7roYIdM5T9BeIpXAIaXOMKZcgkH/MCYIp8GvgN8A/hQENDaJhADrwG/oy9X1BNDvAIQZkqee+okfwGGa9qq4FQgblPVaC85xsp09nqhjlMAO9nBCK9tTGYjfdhLJ3BRqqhMK1jDdoYw2msCHqcAypsZ53txZoqVo9pz08pnKnEbLhKXe3tij1MAk8VhQ0+HZjWj6GZ7KklMM2jD3eJW5lpVV5wC+IA47K8RQJEVwMVp5jKV2H3OR8YjAMPL4vLRmuSvoYMjvAoMTCWJ6Qa9Vhy+mdQIsEEcJtcIYCWjybE13TymFL2wVPK1dZ/iGgE8S7KYTi7F8KuUUphu2AlPAsu1eose9/9lwPfSzWRq0Q8Xh53J3AI6+IRM4681AiiwBeEzqaUwrcANh8Slvxf8OG4BXezg/T0XgCpr/afxX4S+aeUxtbgNfxCXSUkJYJs4nKXP/20ll5vFYV4yAjCsEJdve9z/y8/+5TUAvZJmwDBDXArJCADmicPNHgLQ5d+kE3/Mn+Hj4vK3ZARg+KK4POIxAdyEMKFVHGTWb/m7Cc9zgl9tgTgmgd5LwAUOIrrZI3EhGraIyzg/v7YFsFcchnhMAE+nm38kHrw6BMMycfl+MgLwObRoikwDVmk+WsCAcJnkWZ6MAOA6cWo/MGUKXI/optAWpB9KnC0zeDoZAQh5ydf+002BhxHOaQkBWXZqKHGQE+odIrU7BxBGSZ7yd/uqLlOsbArVV8DJi9FzUe54GDYF4L0EvIpTKLEr+djVIz67gOIRgOFpcTnb499f3u69VtPREgbmiMPt9TzbHAHuEYeZHgtASxB+3JLws+40x3iZXv/rb/YE4PNhJlNgPWKnnk3W89l0/APo3+gIuT0BwBfEqf3SqCnwCsKHmwavHaIy8Kw4jGxkxKYAapaAzSoGU2JPIxD6ewwMGDrFxWlk2Y4ADHvE5WMe9//zEf2Cd6MkxPJ7wIqidgQAnieATYGfIFwTS4BqtD4DwjmS59FGNNkRgM+WY1Pkt8DXGoHQ32NgoItB9U5lH/NoRwAwXRxWe6wB9N4vj8SQM4smXxCHU4PYsyOADs6Uafz9eIdmDQM54l8XIAg4bROagXXicGGQ3jYE4L0EXOBcpPZwaBBQ2iYiA4YF4la+AN/wsiGAP4vDWI8ngKsQljZEoA3iYOA8cVgfxHB0Afi8cDBF1mgBiCApiKGN8BHJ80oQy9EFAHPF4VaPCeDzwPAgILSNRQYML4nL4KAWowtAmCh5/lg1AXyAE3mDg0FBaDurDASqynbMY3QBQO0S8Eomkqt9L2A1TDXmx8AScVgYlJ6oAnhRHIZ6TADnI9wQFIS2s8rAheKwLqjFqAJ4UBwu8BBAESEfFIS2s8hAjlNlOi8EtRhNAIZrxWWBxwSwvCh0RlAQ2s4SA4YD4jKoGWvRBCB8S/KVx713L6MTwGb4t932UXGa230dTQAlzpAZ1Sd+TIHxCI/ZjkztBWKg6aLcUQTgtwQ8B6ldFwgEXxtFY8DnXEY9o+EFYHhK3Eqh56rLFCu1gWvqA0SLTHsHYkAY2ezHOMILAJaLw2UeAih/BuaTgQBrI3sM1KkDFM8IADV7zs2d9KV/pQ5Qzl5kaikQA4bHxWV8oLbHNYoyAnxeHDZVPQEUGIvwZLMgtL0VBm4XhznNWgovAI8956aTWRh+2SwIbW+BgQbfZvDzEFYAu8XhFI/7/53Ady2EoyaaZ+AscdjWbLdwAjDcL27tZk9T5ClgTLMgtH1EBhrUAYpjEljzxkkLQUZMYrTuW8UJ98cLOwLUfH3CrORT5JofgqLFrb2PMuD5SB6EnXACgNPFYUfVE0Anl5TPowdxqm2sM3C5OPwijNXmBeCz4GCK3AbMDgNC+0RkwDBOXLaEseIngOeAEZ4GDU+Iy2drngAKbEb4XBgQ2icCAwHqADU/CSzwJFK71fuoobvEYVbV8P9OJfA3tRBkhESG7/qMOIwK2917BCiwDuHrPiPAbHG5o0oAqxlJt3ct2rDAtF9ABnyKcwfsjd8tYDH4bCwUJki++n2/KVbOoXtWow4KRNuFZsDzXGZQa34jgP+xLq8l4CI3gnc9+qBAtF0IBgwH6MdgmcrhEL0rXbwFUP68WxevIQyoMmzYJS7DPCaAGxEmhgWh/UIyIMyXPDeF7O0vgPIvpsB1CFf2MH6fOEzxEIBWAo+ShXB915PnfBFMuO7v9PIcASoCWMEH6VNZ7Hlvl6lhsbhc3WMCOJxuysfA9EqKAUO5+P7MeiVgg0LxFUBFBEW+AtwH9DlqsObQgSlWvgBetTM4qHNt1zQD+zEs7PkU1rSV4zrUFcDRW0G50NMtwDBKjJAZ1f92U2ApUlshPAoo7fsuA12YCt+bgXvpxyMylW6b/DQUwDFnZiWn4fLPqPccm+DVVnQGAgsguiu10I4MqADaMSsJYlIBJEh2O7pSAbRjVhLEpAJIkOx2dKUCaMesJIhJBZAg2e3oSgXQjllJEJMKIEGy29GVCqAds5IgJhVAgmS3oysVQDtmJUFM/wdaDlOuM5Eu/AAAAABJRU5ErkJggg==");',
        '}',
        '.ew-tree-table .ew-tree-icon-file:after {',
        '    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAJNUlEQVR4Xu2dXYxdVRXHf2tghhYaoba1Qk1owIwmfVBaTKRgQqMPlGjig2nDnDsF0whSnwqJ4SNoU2OLUSNPVDSx2t47hEkxaQMBI1hB/EiE6osYqjGUYPGjCihN6Uy525wzt7UdZu7ZZ87a5949Z52XeVl77bX//9/d52vvM4IdtVZAaj16GzwGQM0hMAAMgJorUPPh2wxgANRcgZoP32YAA6DmCtR8+DYDGADVKuB2s4BB1gMbEYZxLEFYDlxQbSU97+0Ejn8hHMPxR4R9LOZxuZGTVVZW2QzgxlnGBNuBUYSLqhxkNH05jgN7GeIrsoF/VlF3cADcQc7nKHfiuM+M97Q0BUH4GpfxbVnHKc9WcwoLCoBrsRjHYwhr51Rd3Rs5foXwaUl4PZQUwQBwLa4AngZWhiq+JnlfBj4pCX8JMd4gALgxluJ4Hrg8RNE1zHkE4WoZ4Zj22NUBcOMsZILnEFZrF1vrfI5DDHGdbOCEpg76ADTZiXCXZpGWq6OAsFNGuEdTD1UA3B7exwDpdLUgt0jHqwjjwH6EF0NMb7k19DAgO03CKtp8pvNM5AO55TjeZoCVMsLfc2M9A3QBaPEQcGtO328hbOYw+2Qbbc8653WY28YAw3yONrsRLswZ7Pck4TYtQdQAcOMMMckbwMIuxaVPua6VhBe0BjCf8rgWa4Bf5jwVPcEgl8gGJjTGrgfAGDfgeCKnqC2SsEuj8Pmaw7W4HXiw6/iE9TLCkxoa6AHQyopOi5/5cLzCCq4M/WRLQ5Re5ug8Of1z11tox3el0UXrAgPQA6DJQYTru/R9ryTsKFBbbUNdK7vS/3qXH9PPpcE6DYH0AGjxEjA8a1Ft1sgohzSKnu853MNcRburVocl4UMaOugB0MxeYMx+BTt14fKmRtHzPYcb5+LOBfVsp9Pj0mCRhg56ALRw3QqSxPYgFDHMVaSnAVDElQpjDYAKxe7HrgyAfnSlwpoMgArF7seuDIB+dKXCmgyACsXux64MgH50pcKaDIAKxe7HrgyAfnSlwpoMgBnEduO8n0m+j+MahCUV+pHf1dQun18zyBdkA3/Lb9A9wgCYpk9nj8EfEC4tK27Q9o7XGOIjZXf2GADTAWjyQ4Sbg5qnl3yvJGwqk84AePcMkO6VSxdSxnAck4RlZQo1AN4NwF+By8qIWmHbo5Kwokx/BkDcp4A9kpQ7XRkA0wGY2nPw+yguAoVVZTd0GgAz3Qbu5VIGsr0H1wLvLTPFBmj772xJd5vbZJTXyuY3AMoqGHl7AyByA8uWbwCUVTDy9gZA5AaWLd8AKKtg5O0NgMgNLFu+AVBWwcjbGwCRG1i2fAOgrIKRtzcAIjewbPkGQFkFI29vAERuYNnyDYCZXgbZmsAzqmjtto5md7CtCTz3F1E/AGxN4DkE1A+AVvb9fFsT2MGgjgDYmsCz5oD6ARDXKcDWBE6/iC9LbOc7xLYmsK6ngHTcztYE1vc2sOyDldja24Og2BxTrtcAUBY0tnQGQGyOKddrACgLGls6AyA2x5TrNQCUBY0tnQEQm2PK9RoAyoLGls4AiM0x5XoNAGVBY0tnAMTmmHK9BsAMgqp+J1D5u37K/mMATFM02JpApe/6GQCB/8eNC7sgpPR3/QyA0ACEXRNY+rt+BkB4AEKuCSz9XT8DIDQAYU8BpdfwGQChAQj1ncD0IlDhu34GQGAAUoGV1wSqftfPAKgAAG2RQ+Rzu1nAIOuBjQjDOJYgLAcu0Oyv7Crr07VEszdQU7wQudw4y5hgOzCKcFGIPs7OaQCEVtgzvzvI+RzlThz3VWF8p6wJSXRmFJsBPI2eKazzdPIxhLUl0syl6RFJWDmXhtPbGABzVNG1uAJ4GnSMKFSG4zfS4JpCbWYJNgDmoKIbYymO54HL59C8fBPHj6TBLeUTgQFQUEU3zkImeA5hdcGmeuHCRhlhXCOhAVBQRddkJ8JdBZtphr/DIEtkA29qJDUACqjY2aF8BGFBbjPHq0j2K92P8KKMcKxbGzfGKhy/ABbn5N4vCZ/N7d8zwADwFCoNc63sv5XcmtPkLYTNHGafbKPtk76A+dDmwzLKSz55fWIMAB+VUvPHGWKSN4CFXZqcTP+djSS84JmWQuY7xqRB4pvbJ84A8FEpBWCMG3A8kRO+RRJ2eaZMZ5SPAj/zmPbTlEd5h6tkE//wze8TZwD4qDQ1/T8I3D5ruOMVVnClrOOUT8rMfMczCO/JjXdM4vi4jHIoN7ZggAHgKZhrchDh+i7h90rCDp90hcwHB9wiCXt8cheNMQA8FXOt7MJreNbwNmt8fqEFzU/t3ywNfuBZZuEwA8BTMtfkOMKFs4YPcknevblr8jHgKa9pf6qjQtcUnkM5J8wA8FSt7Dr9zHzJLvgWeXYZ3Py0DgPA040yABQ237FVGjzgWVqpME0A/tuVbsfF0uA/partYeO5AtDP5uvOAE3+hPDBWT0aYLXcxO966GGprucCQL+brw3AswifmFVlxz3SYGcpF3rYuCgA7mHW0uYn3ud8x93S4P6qh6h3CmiyC+GLXQAo9KCkaiHy+isCQMf8p3IeG/+/yx6ZrzsDtLgReLyrkI4vSSN7ohbd4QvAHMzfLg2+2itB9GaA9GXJBK93vVeGk7RZ6/PApFeCzNavDwCuxaeAAwV++fdLg7t7OVY1ANJBeL8udXyehEdFssecURx5AAB3AN8EzvMakOMBabDVKzZgkC4AYyynzcveCybgEYQDPgsmAmrgldoDAK88WVCfmK96DXB69K7JNxC+7K9GzSL7yPwwAKSLJid5Fri6Ztb6DHeXJGzxCawqRvUUcGYWmFo2/duerJmvSrni/fSd+UFmgDMQTG2c+Clkf+t+fEeS7CKx744gM8BZEKQrXNPbouv6buTVFHQSx83S4JFquiveS1AAsgvehxhkEXdUvHmyuBL6LZ5hgK39/v4jOABnZoN0+/QkO3DcVOEuWn1bu2V0vA38mPP4Vr8bf3oYlQFwFgjpXcJ6HBshe3u4NMQHFII7ny7UlOy/maYbPtI3oY9yigOyiePB+1bsoHIAFGu3VAoKGAAKIsacwgCI2T2F2g0ABRFjTmEAxOyeQu0GgIKIMacwAGJ2T6F2A0BBxJhTGAAxu6dQuwGgIGLMKf4HAR/hrhUhGSQAAAAASUVORK5CYII=");',
        '}',
        '</style>'
    ].join(''));
    exports('treeTable', tt);
});
WebTM/views/index.html
@@ -538,6 +538,17 @@
                  </a>
                  <dl class="layui-nav-child">
                      <dd><a lay-href="系统管理/日志管理/Xt_SystemLogList.html">系统日志列表</a></dd>
                      <dd>
                          <a>用户管理</a>
                          <dl class="layui-nav-child">
                              <dd><a lay-href="系统管理/用户管理/Xt_UserList.html">系统用户列表</a></dd>
                              <dd><a lay-href="系统管理/用户管理/Xt_UserGroupList.html">用户角色列表</a></dd>
                          </dl>
                      </dd>
                      <dd><a lay-href="系统管理/系统参数管理/Xt_SystemParameterList.html">系统参数列表</a></dd>
                      <dd><a lay-href="系统管理/模块管理/Xt_XtgnbList.html">系统模块列表</a></dd>
                      <dd><a lay-href="系统管理/单据类型/Xt_BillTypeList.html">单据类型列表</a></dd>
                      <dd><a lay-href="系统管理/会计期间/Xt_AccountPeriodList.html">会计期间列表</a></dd>
                      <dd class="layui-nav-itemed">
                          <a href="javascript:;">我的设置</a>
                          <dl class="layui-nav-child">
WebTM/views/»ù´¡×ÊÁÏ/¹«Óûù´¡×ÊÁÏ/Gy_Department.html
@@ -9,6 +9,7 @@
    <link rel="stylesheet" href="../../../layuiadmin/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../../layuiadmin/style/admin.css" media="all">
    <script src="../../../layuiadmin/layui/layui.js"></script>
    <script src="../../../layuiadmin/treeTable.js"></script>
    <script src="../../../layuiadmin/Scripts/json2.js"></script>
    <script src="../../../layuiadmin/Scripts/jquery-1.4.1.js"></script>
    <script src="../../../layuiadmin/Scripts/webConfig.js"></script>
@@ -36,42 +37,49 @@
                                    <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnJY" id="btnJY" style="padding:0 5px">禁用</button>
                                    <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnFJY" id="btnFJY" style="padding:0 5px">反禁用</button>
                                </div>
                                <div class="layui-inline">
                                    <label class="layui-form-label">部门代码</label>
                                    <div class="layui-input-block">
                                        <input type="text" class="layui-input" name="HNumber" id="HNumber">
                                    </div>
                                </div>
                                <div class="layui-inline">
                                    <label class="layui-form-label">部门名称</label>
                                    <div class="layui-input-block">
                                        <input type="text" class="layui-input" name="HName" id="HName">
                                    </div>
                                </div>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnSearch" id="btnSearch">
                                    <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
                                </button>
                                <div class="layui-card">
                                    <div class="layui-card-header"></div>
                                    <div class="layui-card-body">
                                        <div class="layui-tab">
                                            <ul class="layui-tab-title" lay-filter="tab-all">
                                                <li data-status="">部门信息</li>
                                                <li data-status="2">其他</li>
                                            </ul>
                                            <div class="layui-tab-content">
                                                <div class="layui-tab-item layui-show">
                                                    <table class="layui-hide" id="hk-table-jh" lay-filter="hk-table-jh"></table>
                                                </div>
                                                <div class="layui-tab-item">
                                                    <table class="layui-hide" id="fj-table-qd" lay-filter="fj-table-qd"></table>
                                <div class="layui-row">
                                    <!--<div class="layui-col-xs2">
                                        <div id="treeDepartment" lay-filter="treeDepartment" class="demo-tree demo-tree-box" style="width: 200px; height: 500px; overflow: scroll;"></div>
                                    </div>-->
                                    <div class="layui-col-xs10">
                                        <div class="layui-inline">
                                            <label class="layui-form-label">部门代码</label>
                                            <div class="layui-input-block">
                                                <input type="text" class="layui-input" name="HNumber" id="HNumber">
                                            </div>
                                        </div>
                                        <div class="layui-inline">
                                            <label class="layui-form-label">部门名称</label>
                                            <div class="layui-input-block">
                                                <input type="text" class="layui-input" name="HName" id="HName">
                                            </div>
                                        </div>
                                        <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnSearch" id="btnSearch">
                                            <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
                                        </button>
                                        <div class="layui-card">
                                            <div class="layui-card-header"></div>
                                            <div class="layui-card-body">
                                                <div class="layui-tab">
                                                    <ul class="layui-tab-title" lay-filter="tab-all">
                                                        <li data-status="">部门信息</li>
                                                        <li data-status="2">其他</li>
                                                    </ul>
                                                    <div class="layui-tab-content">
                                                        <div class="layui-tab-item layui-show">
                                                            <table class="layui-hide" id="hk-table-jh" lay-filter="hk-table-jh"></table>
                                                        </div>
                                                        <div class="layui-tab-item">
                                                            <table class="layui-hide" id="fj-table-qd" lay-filter="fj-table-qd"></table>
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            </div>
                        </div>
                        <table class="" id="mainTable" lay-filter="mainTable"></table>
                        <script type="text/html" id="toolbarDemo">
                            <div class="layui-btn-container">
@@ -95,7 +103,7 @@
            base: '../../../layuiadmin/' //静态资源所在路径
        }).extend({
            index: 'lib/index', //主入口模块
        }).use(['index', 'form', 'table', 'element', 'laypage','laydate'], function () {
        }).use(['tree','index', 'form', 'table', 'element', 'laypage','laydate'], function () {
            var $ = layui.$
                , admin = layui.admin
                , layer = layui.layer
@@ -105,7 +113,35 @@
                , laypage = layui.laypage
                , laydate = layui.laydate
                , util = layui.util
                , tree = layui.tree
            var sWhere = "";
            //$.ajax({
            //    url: GetWEBURL() + '/Gy_Department/list',
            //    type: "post",
            //    contentType: "application/json",
            //    dataType: "json",
            //    contentType: " application/json; charset=utf-8 ",
            //    data: { "sWhere": sWhere },
            //    success: function (data1) {
            //        var xtree1 = new layuixtree({
            //            elem: 'xtree1',
            //            form: form,
            //            data: strToJson(data1),
            //            isopen: true, //false初始关闭,true打开
            //            click: function (data1) { //节点选中状态改变事件监听,全选框有自己的监听事件
            //                console.log(data1.elem); //得到checkbox原始DOM对象
            //                console.log(data1.elem.checked); //是否选中,true选中
            //                alert(data.value); //弹出value值
            //            }
            //        });
            //        //to do:这里处理数据
            //    },
            //    error: function (x, y, z) {
            //        layer.msg("操作失败");
            //    }
            //});
            var option = {
                elem: '#mainTable'
@@ -169,7 +205,7 @@
                //    return;
                //}
                
                var ModRightNameDelete = 'Gy_Department_Delete'
                var data = obj.data //获得当前行数据
                    , layEvent = obj.event; //获得 lay-event å¯¹åº”的值
@@ -182,7 +218,7 @@
                            url: GetWEBURL() + '/Gy_Department/Delete_Json',
                            type: "GET",
                            //async: true,
                            data: { "HItemID": checkStatus.data[0].HItemID},
                            data: { "HItemID": checkStatus.data[0].HItemID, "User": sessionStorage["HUserName"], "ModRightNameDelete": ModRightNameDelete},
                            success: function (result) {
                                if (result.count == 1) {
                                    $("#btnSearch").click();
WebTM/views/»ù´¡×ÊÁÏ/¹«Óûù´¡×ÊÁÏ/Gy_Department_Edit.html
@@ -21,7 +21,23 @@
            <div class="layui-card-body" style="padding: 1px;">
                <form class="layui-form" action="" lay-filter="formData" style="background-color:white;">
                    <div class="maintitle">部门</div>
                    <div class="title">基本信息</div>
                    <div style="padding: 10px;">
                        <button class="layui-btn layuiadmin-btn-order main-btn" type="button" lay-submit="" lay-filter="Saver" id="Saver">
                            <i class="layui-icon layui-icon-add-1 layuiadmin-button-btn"><span class="btn-title">保存</span></i>
                        </button>
                        <button class="layui-btn layuiadmin-btn-order main-btn" type="button" lay-submit="" lay-filter="Add" id="Add">
                            <i class="layui-icon layui-icon-add-1 layuiadmin-button-btn"><span class="btn-title">新增</span></i>
                        </button>
                        <button class="layui-btn layuiadmin-btn-order main-btn" type="button" lay-submit="" lay-filter="Check" id="Check">
                            <i class="layui-icon layui-icon-add-1 layuiadmin-button-btn"><span class="btn-title">审核</span></i>
                        </button>
                        <button class="layui-btn layuiadmin-btn-order main-btn" type="button" lay-submit="" lay-filter="FCheck" id="FCheck">
                            <i class="layui-icon layui-icon-add-1 layuiadmin-button-btn"><span class="btn-title">反审核</span></i>
                        </button>
                        <button class="layui-btn layuiadmin-btn-order main-btn" type="button" lay-submit="" lay-filter="Cancel" id="Cancel">
                            <i class="layui-icon layui-icon-close layuiadmin-button-btn"><span class="btn-title">退出</span></i>
                        </button>
                    </div>
                    <div class="layui-form-item" style="padding-top: 10px;">
                        <div class="layui-row">
                            <div class="layui-inline">
@@ -50,18 +66,6 @@
                            </div>
                        </div>
                        <div class="layui-row">
                            <!--<div class="layui-inline">
            <label class="layui-form-label" style="width: 85px;">禁用标记</label>
            <div class="layui-input-inline" style="margin-left: 120px;">
                <input type="text" name="HStopFlag" id="HStopFlag" lay-verify="HStopFlag" autocomplete="off" placeholder="" class="layui-input">
            </div>
        </div>
        <div class="layui-inline">
            <label class="layui-form-label" style="width: 85px;">使用标记</label>
            <div class="layui-input-inline" style="margin-left: 120px;">
                <input type="text" name="HUseFlag" id="HUseFlag" lay-verify="HUseFlag" autocomplete="off" placeholder="" class="layui-input">
            </div>
        </div>-->
                            <div class="layui-inline">
                                <label class="layui-form-label" style="width: 85px;">备注</label>
                                <div class="layui-input-inline" style="margin-left: 120px;">
@@ -70,39 +74,104 @@
                            </div>
                        </div>
                        <!--<div class="title">基本信息</div>-->
                        <div class="layui-tab" lay-filter="tab-POStockInBill">
                            <ul class="layui-tab-title" lay-filter="tab-all">
                                <li lay-id="1" style="padding:1px;" class="layui-this">基本信息</li>
                                <li lay-id="2" style="padding:1px;">其他</li>
                                <!--<li lay-id="5">日志</li>-->
                            </ul>
                            <div class="layui-inline">
                                <label class="layui-form-label" style="width: 85px;">条形码</label>
                                <div class="layui-input-inline" style="margin-left: 120px;">
                                    <input type="text" name="HBarCode" id="HBarCode" lay-verify="HBarCode" autocomplete="off" placeholder="" class="layui-input">
                            <div class="layui-tab-content">
                                <!--基本信息-->
                                <div class="layui-tab-item layui-show">
                                    <div class="layui-form-item" style="padding-top: 10px;">
                                        <div class="layui-row">
                                            <div class="layui-col-xs3">
                                                <label class="layui-form-label">条形码</label>
                                                <div class="layui-input-inline">
                                                    <input type="text" name="HBarCode" id="HBarCode" lay-verify="HBarCode" autocomplete="off" placeholder="" class="layui-input">
                                                </div>
                                            </div>
                                            <div class="layui-col-xs3">
                                                <label class="layui-form-label">助记码</label>
                                                <div class="layui-input-inline">
                                                    <input type="text" name="HHelpCode" id="HHelpCode" lay-verify="HHelpCode" autocomplete="off" placeholder="" class="layui-input">
                                                </div>
                                            </div>
                                            <div class="layui-col-xs3">
                                                <label class="layui-form-label">负责人</label>
                                                <div class="layui-input-inline">
                                                    <input type="text" name="HSecManager" id="HSecManager" lay-verify="HSecManager" autocomplete="off" class="layui-input">
                                                    <input type="hidden" name="HSecManagerID" id="HSecManagerID" lay-verify="HSecManagerID" value="0" autocomplete="off" class="layui-input">
                                                </div>
                                                    <button type="button" lay-submit="" class="layui-btn" lay-filter="HSecManagerID-BT">...</button>
                                                </div>
                                            </div>
                                        </div>
                                </div>
                                <!--其他信息-->
                                <div class="layui-tab-item ">
                                    <div class="layui-form-item" style="padding-top: 10px;">
                                        <div class="layui-row">
                                            <div class="layui-col-xs3">
                                                <label class="layui-form-label">创建人</label>
                                                <div class="layui-input-inline">
                                                    <input type="text" name="HCreator" id="HCreator" lay-verify="HCreator" autocomplete="off" placeholder="" class="layui-input">
                                                </div>
                                            </div>
                                            <div class="layui-col-xs3">
                                                <label class="layui-form-label">创建日期</label>
                                                <div class="layui-input-inline">
                                                    <input type="text" name="HCreateDate" id="HCreateDate" lay-verify="HCreateDate" autocomplete="off" placeholder="" class="layui-input">
                                                </div>
                                            </div>
                                            <div class="layui-col-xs3">
                                                <label class="layui-form-label">修改人</label>
                                                <div class="layui-input-inline">
                                                    <input type="text" name="HUpDater" id="HUpDater" lay-verify="HUpDater" autocomplete="off" placeholder="" class="layui-input">
                                                </div>
                                            </div>
                                            <div class="layui-col-xs3">
                                                <label class="layui-form-label">修改日期</label>
                                                <div class="layui-input-inline">
                                                    <input type="text" name="HUpDateDate" id="HUpDateDate" lay-verify="HUpDateDate" autocomplete="off" placeholder="" class="layui-input">
                                                </div>
                                            </div>
                                        </div>
                                        <div class="layui-row">
                                            <div class="layui-col-xs3">
                                                <label class="layui-form-label">审核人</label>
                                                <div class="layui-input-inline">
                                                    <input type="text" name="HChecker" id="HChecker" lay-verify="HChecker" autocomplete="off" placeholder="" class="layui-input">
                                                </div>
                                            </div>
                                            <div class="layui-col-xs3">
                                                <label class="layui-form-label">审核日期</label>
                                                <div class="layui-input-inline">
                                                    <input type="text" name="HCheckDate" id="HCheckDate" lay-verify="HCheckDate" autocomplete="off" placeholder="" class="layui-input">
                                                </div>
                                            </div>
                                            <div class="layui-col-xs3">
                                                <label class="layui-form-label">作废人</label>
                                                <div class="layui-input-inline">
                                                    <input type="text" name="HDeleteMan" id="HDeleteMan" lay-verify="HDeleteMan" autocomplete="off" placeholder="" class="layui-input">
                                                </div>
                                            </div>
                                            <div class="layui-col-xs3">
                                                <label class="layui-form-label">作废日期</label>
                                                <div class="layui-input-inline">
                                                    <input type="text" name="HDeleteDate" id="HDeleteDate" lay-verify="HDeleteDate" autocomplete="off" placeholder="" class="layui-input">
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-inline">
                                <label class="layui-form-label" style="width: 85px;">助记码</label>
                                <div class="layui-input-inline" style="margin-left: 120px;">
                                    <input type="text" name="HHelpCode" id="HHelpCode" lay-verify="HHelpCode" autocomplete="off" placeholder="" class="layui-input">
                                </div>
                            </div>
                            <div class="layui-inline">
                                    <label class="layui-form-label" style="width:85px;">负责人</label>
                                    <input type="text" name="HEmpName" id="HEmpName" lay-verify="HEmpName" autocomplete="off" class="layui-input" style="background-color:#efefef4d;" readonly>
                                    <input type="hidden" name="HEmpID" id="HEmpID" lay-verify="HEmpID" value="0" autocomplete="off" class="layui-input">
                                <div class="layui-col-xs3">
                                    <button type="button" lay-submit="" class="layui-btn" lay-filter="HEmpID-BT" style="display:none">...</button>
                                </div>
                            </div>
                            <div class="layer-footer" style="text-align: center;">
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="Saver" id="Saver" style="padding:0 5px">提交</button>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="Cancel" id="Cancel" style="padding:0 5px">退出</button>
                            </div>
                        </div>
                            <!--<di-->
                            <!--v class="layer-footer" style="text-align: center;">
        </div>-->
                            <!--隐藏字段-->
                            <input type="hidden" name="lngBillKey" id="lngBillKey">
                            <input type="hidden" name="lngBillSubKey" id="lngBillSubKey">
@@ -129,6 +198,9 @@
            var sWhere = "";
            //获取参数
            function getUrlVars() {
                var vars = [], hash;
@@ -141,12 +213,12 @@
                return vars;
            }
            //判断是否登录 æœªç™»å½•则跳到登录页
            if (sessionStorage.login != "login") {
                layer.confirm("登录失效,请重新登录!", {
                    icon: 4, skin: 'layui-layer-lan', title: "温馨提示", closeBtn: 0, btn: ['重新登录']
                }, function () { window.location.href = "../../user/login.html"; });
            }
            ////判断是否登录 æœªç™»å½•则跳到登录页
            //if (sessionStorage.login != "login") {
            //    layer.confirm("登录失效,请重新登录!", {
            //        icon: 4, skin: 'layui-layer-lan', title: "温馨提示", closeBtn: 0, btn: ['重新登录']
            //    }, function () { window.location.href = "../../user/login.html"; });
            //}
            var params = getUrlVars();
            var linterid = params[params[0]]; //从参数中获取 å•据内码
@@ -188,16 +260,17 @@
            }
            //选择负责人
            form.on('submit(HEmpID-BT)', function () {
            //选择验收
            form.on('submit(HSecManagerID-BT)', function (data) {//选择验收
                var sMainStr = JSON.stringify(data.field);
                layer.open({
                    type: 2
                    , area: ['100%', '100%']
                    , title: '负责人列表'
                    , title: '验收列表'
                    , shade: 0.6 //遮罩透明度
                    , maxmin: true //允许全屏最小化
                    , anim: 0 //0-6的动画形式,-1不开启
                    , content: ['../../../views/基础资料/公用基础资料/Gy_Employee.html', 'yes']
                    , content: ['../../../views/Baseset/基础资料/Gy_EmployeeList.html?Type=HSecManager', 'yes']
                    , resize: false
                    , cancel: function () {
                        //$(".layui-btn").removeClass("layui-btn-disabled");
@@ -215,6 +288,20 @@
                    $("#HInterID").val(d.data[0].hitemid);
                }
            });
            //新增
            form.on('submit(Add)', function () {
                window.location.reload();
            });
            //审核
            form.on('submit(Check)', function () {
            });
            //提交
            form.on('submit(Saver)', function (data) {//提交
@@ -292,6 +379,13 @@
        });
        //以上为layui模块
        function GetHSecManagerValue(obj) {  //返回验收
            $("#HSecManager").val(obj[0].HName);
            $("#HSecManagerID").val(obj[0].HItemID);
        }
WebTM/views/ϵͳ¹ÜÀí/»á¼ÆÆÚ¼ä/Xt_AccountPeriodList.html
New file
@@ -0,0 +1,165 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>会计期间列表</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../../layuiadmin/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../../layuiadmin/style/admin.css" media="all">
    <script src="../../../layuiadmin/layui/layui.js"></script>
</head>
<body>
    <div class="layui-fluid">
        <div class="layui-col-md12">
            <div class="layui-card" style="padding: 1px">
                <div class="layui-card-body" style="padding: 1px;">
                    <form class="layui-form" action="" lay-filter="component-form-group">
                        <div class="layui-collapse">
                            <div class="layui-colla-item">
                                <div class="layui-colla-title layui-inline">
                                    <div class="layui-inline">
                                        <span></span>
                                    </div>
                                </div>
                                <div class="layui-inline">
                                    <label class="layui-form-label">会计年份</label>
                                    <div class="layui-input-block">
                                        <input type="text" class="layui-input" name="HNumber" id="HNumber">
                                    </div>
                                </div>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnSearch" id="btnSearch">
                                    <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
                                </button>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnReSearch" id="btnReSearch" style="padding:0 5px">重置</button>
                            </div>
                        </div>
                        <table class="" id="mainTable" lay-filter="mainTable"></table>
                        <script type="text/html" id="toolbarDemo">
                            <div class="layui-btn-container">
                                <!--<button type="button" class="layui-btn layui-btn-sm" lay-event="btn-getCheckData"><i class="layui-icon layui-icon-tips"></i>预览</button>-->
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-reload"><i class="layui-icon layui-icon-refresh"></i>刷新</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-confirm" id="btn_confirm"><i class="layui-icon layui-icon-ok-circle"></i>确认</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-back" id="btn_back"><i class="layui-icon layui-icon-close-fill"></i>驳回</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-details"><i class="layui-icon layui-icon-form"></i>详情</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-generate"><i class="layui-icon layui-icon-file"></i>生成送货单</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-exit"><i class="layui-icon layui-icon-return"></i>退出</button>
                            </div>
                        </script>
                    </form>
                </div>
            </div>
        </div>
    </div>
    <script src="../../../layuiadmin/layui/layui.js"></script>
    <script src="../../../layuiadmin/Scripts/json2.js"></script>
    <script src="../../../layuiadmin/Scripts/jquery-1.4.1.js"></script>
    <script src="../../../layuiadmin/Scripts/webConfig.js"></script>
    <script>
        layui.config({
            base: '../../../layuiadmin/' //静态资源所在路径
        }).extend({
            index: 'lib/index', //主入口模块
        }).use(['index', 'form', 'table', 'element', 'laypage','laydate'], function () {
            var $ = layui.$
            , admin = layui.admin
            , layer = layui.layer
            , table = layui.table
            , form = layui.form
            , element = layui.element
            , laypage = layui.laypage
            , laydate = layui.laydate
            var sWhere = "";
            var option = {
                elem: '#mainTable'
                //, toolbar: '#toolbarDemo'
                ,height: 'full-50'
                , page: true
                ,cellMinWidth: 90
                , cols: [[
                    { field: '会计年份', title: '会计年份' }
                    , { field: '会计月份', title: '会计月份' }
                    , { field: '开始日期', title: '开始日期' }
                    , { field: '结束日期', title: '结束日期' }
                    , { field: '过账标记', title: '过账标记' }
                ]]
            };
            var index = layer.load(0, { shade: false });
            //进入页面显示的缓存列表
            $.ajax({
                //url: "http://61.130.49.162:9090/WMSAPI///Web/GetMAXNum",
                url: GetWEBURL() + '/Xt_AccountPeriod/list',
                type: "GET",
                data: { "sWhere": sWhere },
                success: function (data1) {
                    if (data1.count == 1) {
                        option.data = data1.data;
                        table.render(option);
                        layer.close(index);
                    } else {
                        layer.close(index);
                        layer.alert(data1.code + data1.Message, { icon: 5 });
                    }
                }, error: function () {
                    layer.close(index);
                    layer.alert("接口请求失败!", { icon: 5 });
                }
            });
            //重置按钮
            form.on('submit(btnReSearch)', function (data) {
                $("#HNumber").val("");
                $("#btnSearch").click();
            });
            //查询按钮
            form.on('submit(btnSearch)', function (data) {
                var HNumber = $("#HNumber").val();
                if (HNumber) {
                    sWhere += " and ä¼šè®¡å¹´ä»½ like '%" + HNumber + "%'";
                }
                $.ajax({
                    //url: "http://61.130.49.162:9090/WMSAPI///Web/GetMAXNum",
                    url: GetWEBURL() + '/Xt_AccountPeriod/list',
                    type: "GET",
                    data: { "sWhere": sWhere },
                    success: function (data1) {
                        if (data1.count == 1) {
                            option.data = data1.data;
                            table.render(option);
                            layer.alert("查询成功", { icon: 1 });
                        } else {
                            layer.alert(data1.code + data1.Message, { icon: 5 });
                        }
                    }, error: function () {
                        layer.alert("接口请求失败!", { icon: 5 });
                    }
                });
                sWhere = "";//调用接口后清空sWhere缓存
            });
            //laydate.render({
            //    elem: '#HDate'
            //    , type: 'datetime'
            //    , trigger: 'click'
            //    , format:'yyyy-MM-dd HH:mm'
            //});
            //以上是layui模块
        });
    </script>
</body>
</html>
WebTM/views/ϵͳ¹ÜÀí/µ¥¾ÝÀàÐÍ/Xt_BillTypeList.html
New file
@@ -0,0 +1,188 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>单据类型列表</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../../layuiadmin/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../../layuiadmin/style/admin.css" media="all">
    <script src="../../../layuiadmin/layui/layui.js"></script>
</head>
<body>
    <div class="layui-fluid">
        <div class="layui-col-md12">
            <div class="layui-card" style="padding: 1px">
                <div class="layui-card-body" style="padding: 1px;">
                    <form class="layui-form" action="" lay-filter="component-form-group">
                        <div class="layui-collapse">
                            <div class="layui-colla-item">
                                <div class="layui-colla-title layui-inline">
                                    <div class="layui-inline">
                                        <span></span>
                                    </div>
                                </div>
                                <div class="layui-inline">
                                    <label class="layui-form-label">单据类型资料代码</label>
                                    <div class="layui-input-block">
                                        <input type="text" class="layui-input" name="HNumber" id="HNumber">
                                    </div>
                                </div>
                                <div class="layui-inline">
                                    <label class="layui-form-label">单据类型资料名称</label>
                                    <div class="layui-input-block">
                                        <input type="text" class="layui-input" name="HName" id="HName">
                                    </div>
                                </div>
                                <div class="layui-inline">
                                    <label class="layui-form-label">模块名</label>
                                    <div class="layui-input-block">
                                        <input type="text" class="layui-input" name="HTemplate" id="HTemplate">
                                    </div>
                                </div>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnSearch" id="btnSearch">
                                    <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
                                </button>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnReSearch" id="btnReSearch" style="padding:0 5px">重置</button>
                            </div>
                        </div>
                        <table class="" id="mainTable" lay-filter="mainTable"></table>
                        <script type="text/html" id="toolbarDemo">
                            <div class="layui-btn-container">
                                <!--<button type="button" class="layui-btn layui-btn-sm" lay-event="btn-getCheckData"><i class="layui-icon layui-icon-tips"></i>预览</button>-->
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-reload"><i class="layui-icon layui-icon-refresh"></i>刷新</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-confirm" id="btn_confirm"><i class="layui-icon layui-icon-ok-circle"></i>确认</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-back" id="btn_back"><i class="layui-icon layui-icon-close-fill"></i>驳回</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-details"><i class="layui-icon layui-icon-form"></i>详情</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-generate"><i class="layui-icon layui-icon-file"></i>生成送货单</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-exit"><i class="layui-icon layui-icon-return"></i>退出</button>
                            </div>
                        </script>
                    </form>
                </div>
            </div>
        </div>
    </div>
    <script src="../../../layuiadmin/layui/layui.js"></script>
    <script src="../../../layuiadmin/Scripts/json2.js"></script>
    <script src="../../../layuiadmin/Scripts/jquery-1.4.1.js"></script>
    <script src="../../../layuiadmin/Scripts/webConfig.js"></script>
    <script>
        layui.config({
            base: '../../../layuiadmin/' //静态资源所在路径
        }).extend({
            index: 'lib/index', //主入口模块
        }).use(['index', 'form', 'table', 'element', 'laypage','laydate'], function () {
            var $ = layui.$
            , admin = layui.admin
            , layer = layui.layer
            , table = layui.table
            , form = layui.form
            , element = layui.element
            , laypage = layui.laypage
            , laydate = layui.laydate
            var sWhere = "";
            var option = {
                elem: '#mainTable'
                //, toolbar: '#toolbarDemo'
                ,height: 'full-50'
                , page: true
                ,cellMinWidth: 90
                , cols: [[
                    { field: 'HItemID', title: 'HItemID', sort: true, hide: true }
                    , { field: '单据类型资料代码', title: '单据类型资料代码' }
                    , { field: '单据类型资料名称', title: '单据类型资料名称' }
                    , { field: '模块名', title: '模块名' }
                    , { field: '数据库主表', title: '数据库主表' }
                    , { field: '数据库子表', title: '数据库子表' }
                ]]
            };
            var index = layer.load(0, { shade: false });
            //进入页面显示的缓存列表
            $.ajax({
                //url: "http://61.130.49.162:9090/WMSAPI///Web/GetMAXNum",
                url: GetWEBURL() + '/Xt_BillType/list',
                type: "GET",
                data: { "sWhere": sWhere },
                success: function (data1) {
                    if (data1.count == 1) {
                        option.data = data1.data;
                        table.render(option);
                        layer.close(index);
                    } else {
                        layer.close(index);
                        layer.alert(data1.code + data1.Message, { icon: 5 });
                    }
                }, error: function () {
                    layer.close(index);
                    layer.alert("接口请求失败!", { icon: 5 });
                }
            });
            //重置按钮
            form.on('submit(btnReSearch)', function (data) {
                $("#HNumber").val("");
                $("#HName").val("");
                $("#HTemplate").val("");
                $("#btnSearch").click();
            });
            //查询按钮
            form.on('submit(btnSearch)', function (data) {
                var HNumber = $("#HNumber").val();
                var HName = $("#HName").val();
                var HTemplate = $("#HTemplate").val();
                if (HNumber) {
                    sWhere += " and å•据类型资料代码 like '%" + HNumber + "%'";
                }
                if (HName) {
                    sWhere += " and å•据类型资料名称 like '%" + HName + "%'";
                }
                if (HTemplate) {
                    sWhere += " and æ¨¡å—名 like '%" + HTemplate + "%'";
                }
                $.ajax({
                    //url: "http://61.130.49.162:9090/WMSAPI///Web/GetMAXNum",
                    url: GetWEBURL() + '/Xt_BillType/list',
                    type: "GET",
                    data: { "sWhere": sWhere },
                    success: function (data1) {
                        if (data1.count == 1) {
                            option.data = data1.data;
                            table.render(option);
                            layer.alert("查询成功", { icon: 1 });
                        } else {
                            layer.alert(data1.code + data1.Message, { icon: 5 });
                        }
                    }, error: function () {
                        layer.alert("接口请求失败!", { icon: 5 });
                    }
                });
                sWhere = "";//调用接口后清空sWhere缓存
            });
            //laydate.render({
            //    elem: '#HDate'
            //    , type: 'datetime'
            //    , trigger: 'click'
            //    , format:'yyyy-MM-dd HH:mm'
            //});
            //以上是layui模块
        });
    </script>
</body>
</html>
WebTM/views/ϵͳ¹ÜÀí/Ä£¿é¹ÜÀí/Xt_XtgnbList.html
New file
@@ -0,0 +1,182 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>系统模块列表</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../../layuiadmin/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../../layuiadmin/style/admin.css" media="all">
    <script src="../../../layuiadmin/layui/layui.js"></script>
</head>
<body>
    <div class="layui-fluid">
        <div class="layui-col-md12">
            <div class="layui-card" style="padding: 1px">
                <div class="layui-card-body" style="padding: 1px;">
                    <form class="layui-form" action="" lay-filter="component-form-group">
                        <div class="layui-collapse">
                            <div class="layui-colla-item">
                                <div class="layui-colla-title layui-inline">
                                    <div class="layui-inline">
                                        <span></span>
                                    </div>
                                </div>
                                <div class="layui-inline">
                                    <label class="layui-form-label">功能编码</label>
                                    <div class="layui-input-block">
                                        <input type="text" class="layui-input" name="HNumber" id="HNumber">
                                    </div>
                                </div>
                                <div class="layui-inline">
                                    <label class="layui-form-label">功能名称</label>
                                    <div class="layui-input-block">
                                        <input type="text" class="layui-input" name="HName" id="HName">
                                    </div>
                                </div>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnSearch" id="btnSearch">
                                    <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
                                </button>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnReSearch" id="btnReSearch" style="padding:0 5px">重置</button>
                            </div>
                        </div>
                        <table class="" id="mainTable" lay-filter="mainTable"></table>
                        <script type="text/html" id="toolbarDemo">
                            <div class="layui-btn-container">
                                <!--<button type="button" class="layui-btn layui-btn-sm" lay-event="btn-getCheckData"><i class="layui-icon layui-icon-tips"></i>预览</button>-->
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-reload"><i class="layui-icon layui-icon-refresh"></i>刷新</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-confirm" id="btn_confirm"><i class="layui-icon layui-icon-ok-circle"></i>确认</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-back" id="btn_back"><i class="layui-icon layui-icon-close-fill"></i>驳回</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-details"><i class="layui-icon layui-icon-form"></i>详情</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-generate"><i class="layui-icon layui-icon-file"></i>生成送货单</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-exit"><i class="layui-icon layui-icon-return"></i>退出</button>
                            </div>
                        </script>
                    </form>
                </div>
            </div>
        </div>
    </div>
    <script src="../../../layuiadmin/layui/layui.js"></script>
    <script src="../../../layuiadmin/Scripts/json2.js"></script>
    <script src="../../../layuiadmin/Scripts/jquery-1.4.1.js"></script>
    <script src="../../../layuiadmin/Scripts/webConfig.js"></script>
    <script>
        layui.config({
            base: '../../../layuiadmin/' //静态资源所在路径
        }).extend({
            index: 'lib/index', //主入口模块
        }).use(['index', 'form', 'table', 'element', 'laypage','laydate'], function () {
            var $ = layui.$
            , admin = layui.admin
            , layer = layui.layer
            , table = layui.table
            , form = layui.form
            , element = layui.element
            , laypage = layui.laypage
            , laydate = layui.laydate
            var sWhere = "";
            var option = {
                elem: '#mainTable'
                //, toolbar: '#toolbarDemo'
                ,height: 'full-50'
                , page: true
                ,cellMinWidth: 90
                , cols: [[
                    { field: 'Hitemid', title: 'Hitemid', sort: true, hide: true }
                    , { field: '功能编码', title: '功能编码' }
                    , { field: '模块名称', title: '模块名称' }
                    , { field: '功能名称', title: '功能名称' }
                    , { field: '功能MS', title: '功能MS' }
                    , { field: '上级功能编码', title: '上级功能编码' }
                    , { field: '末级标志', title: '末级标志' }
                    , { field: '可见标志', title: '可见标志' }
                    , { field: '权限标志', title: '权限标志' }
                    , { field: '启用标志', title: '启用标志' }
                    , { field: 'NET可见标志', title: 'NET可见标志' }
                ]]
            };
            var index = layer.load(0, { shade: false });
            //进入页面显示的缓存列表
            $.ajax({
                //url: "http://61.130.49.162:9090/WMSAPI///Web/GetMAXNum",
                url: GetWEBURL() + '/Xt_Xtgnb/list',
                type: "GET",
                data: { "sWhere": sWhere },
                success: function (data1) {
                    if (data1.count == 1) {
                        option.data = data1.data;
                        table.render(option);
                        layer.close(index);
                    } else {
                        layer.close(index);
                        layer.alert(data1.code + data1.Message, { icon: 5 });
                    }
                }, error: function () {
                    layer.close(index);
                    layer.alert("接口请求失败!", { icon: 5 });
                }
            });
            //重置按钮
            form.on('submit(btnReSearch)', function (data) {
                $("#HNumber").val("");
                $("#HName").val("");
                $("#btnSearch").click();
            });
            //查询按钮
            form.on('submit(btnSearch)', function (data) {
                var HNumber = $("#HNumber").val();
                var HName = $("#HName").val();
                if (HNumber) {
                    sWhere += " and åŠŸèƒ½ç¼–ç  like '%" + HNumber + "%'";
                }
                if (HName) {
                    sWhere += " and åŠŸèƒ½åç§° like '%" + HName + "%'";
                }
                $.ajax({
                    //url: "http://61.130.49.162:9090/WMSAPI///Web/GetMAXNum",
                    url: GetWEBURL() + '/Xt_Xtgnb/list',
                    type: "GET",
                    data: { "sWhere": sWhere },
                    success: function (data1) {
                        if (data1.count == 1) {
                            option.data = data1.data;
                            table.render(option);
                            layer.alert("查询成功", { icon: 1 });
                        } else {
                            layer.alert(data1.code + data1.Message, { icon: 5 });
                        }
                    }, error: function () {
                        layer.alert("接口请求失败!", { icon: 5 });
                    }
                });
                sWhere = "";//调用接口后清空sWhere缓存
            });
            //laydate.render({
            //    elem: '#HDate'
            //    , type: 'datetime'
            //    , trigger: 'click'
            //    , format:'yyyy-MM-dd HH:mm'
            //});
            //以上是layui模块
        });
    </script>
</body>
</html>
WebTM/views/ϵͳ¹ÜÀí/Óû§¹ÜÀí/Xt_UserGroupList.html
New file
@@ -0,0 +1,175 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>用户角色列表</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../../layuiadmin/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../../layuiadmin/style/admin.css" media="all">
    <script src="../../../layuiadmin/layui/layui.js"></script>
</head>
<body>
    <div class="layui-fluid">
        <div class="layui-col-md12">
            <div class="layui-card" style="padding: 1px">
                <div class="layui-card-body" style="padding: 1px;">
                    <form class="layui-form" action="" lay-filter="component-form-group">
                        <div class="layui-collapse">
                            <div class="layui-colla-item">
                                <div class="layui-colla-title layui-inline">
                                    <div class="layui-inline">
                                        <span></span>
                                    </div>
                                </div>
                                <div class="layui-inline">
                                    <label class="layui-form-label">角色</label>
                                    <div class="layui-input-block">
                                        <input type="text" class="layui-input" name="HNumber" id="HNumber">
                                    </div>
                                </div>
                                <div class="layui-inline">
                                    <label class="layui-form-label">级别</label>
                                    <div class="layui-input-block">
                                        <input type="text" class="layui-input" name="HName" id="HName">
                                    </div>
                                </div>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnSearch" id="btnSearch">
                                    <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
                                </button>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnReSearch" id="btnReSearch" style="padding:0 5px">重置</button>
                            </div>
                        </div>
                        <table class="" id="mainTable" lay-filter="mainTable"></table>
                        <script type="text/html" id="toolbarDemo">
                            <div class="layui-btn-container">
                                <!--<button type="button" class="layui-btn layui-btn-sm" lay-event="btn-getCheckData"><i class="layui-icon layui-icon-tips"></i>预览</button>-->
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-reload"><i class="layui-icon layui-icon-refresh"></i>刷新</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-confirm" id="btn_confirm"><i class="layui-icon layui-icon-ok-circle"></i>确认</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-back" id="btn_back"><i class="layui-icon layui-icon-close-fill"></i>驳回</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-details"><i class="layui-icon layui-icon-form"></i>详情</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-generate"><i class="layui-icon layui-icon-file"></i>生成送货单</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-exit"><i class="layui-icon layui-icon-return"></i>退出</button>
                            </div>
                        </script>
                    </form>
                </div>
            </div>
        </div>
    </div>
    <script src="../../../layuiadmin/layui/layui.js"></script>
    <script src="../../../layuiadmin/Scripts/json2.js"></script>
    <script src="../../../layuiadmin/Scripts/jquery-1.4.1.js"></script>
    <script src="../../../layuiadmin/Scripts/webConfig.js"></script>
    <script>
        layui.config({
            base: '../../../layuiadmin/' //静态资源所在路径
        }).extend({
            index: 'lib/index', //主入口模块
        }).use(['index', 'form', 'table', 'element', 'laypage','laydate'], function () {
            var $ = layui.$
            , admin = layui.admin
            , layer = layui.layer
            , table = layui.table
            , form = layui.form
            , element = layui.element
            , laypage = layui.laypage
            , laydate = layui.laydate
            var sWhere = "";
            var option = {
                elem: '#mainTable'
                //, toolbar: '#toolbarDemo'
                ,height: 'full-50'
                , page: true
                ,cellMinWidth: 90
                , cols: [[
                    { field: 'HGroupID', title: 'HGroupID', sort: true, hide: true }
                    , { field: '角色', title: '角色' }
                    , { field: '级别', title: '级别' }
                    , { field: '说明', title: '说明' }
                ]]
            };
            var index = layer.load(0, { shade: false });
            //进入页面显示的缓存列表
            $.ajax({
                //url: "http://61.130.49.162:9090/WMSAPI///Web/GetMAXNum",
                url: GetWEBURL() + '/Xt_UserGroup/list',
                type: "GET",
                data: { "sWhere": sWhere },
                success: function (data1) {
                    if (data1.count == 1) {
                        option.data = data1.data;
                        table.render(option);
                        layer.close(index);
                    } else {
                        layer.close(index);
                        layer.alert(data1.code + data1.Message, { icon: 5 });
                    }
                }, error: function () {
                    layer.close(index);
                    layer.alert("接口请求失败!", { icon: 5 });
                }
            });
            //重置按钮
            form.on('submit(btnReSearch)', function (data) {
                $("#HNumber").val("");
                $("#HName").val("");
                $("#btnSearch").click();
            });
            //查询按钮
            form.on('submit(btnSearch)', function (data) {
                var HNumber = $("#HNumber").val();
                var HName = $("#HName").val();
                if (HNumber) {
                    sWhere += " and è§’色 like '%" + HNumber + "%'";
                }
                if (HName) {
                    sWhere += " and çº§åˆ« like '%" + HName + "%'";
                }
                $.ajax({
                    //url: "http://61.130.49.162:9090/WMSAPI///Web/GetMAXNum",
                    url: GetWEBURL() + '/Xt_UserGroup/list',
                    type: "GET",
                    data: { "sWhere": sWhere },
                    success: function (data1) {
                        if (data1.count == 1) {
                            option.data = data1.data;
                            table.render(option);
                            layer.alert("查询成功", { icon: 1 });
                        } else {
                            layer.alert(data1.code + data1.Message, { icon: 5 });
                        }
                    }, error: function () {
                        layer.alert("接口请求失败!", { icon: 5 });
                    }
                });
                sWhere = "";//调用接口后清空sWhere缓存
            });
            //laydate.render({
            //    elem: '#HDate'
            //    , type: 'datetime'
            //    , trigger: 'click'
            //    , format:'yyyy-MM-dd HH:mm'
            //});
            //以上是layui模块
        });
    </script>
</body>
</html>
WebTM/views/ϵͳ¹ÜÀí/Óû§¹ÜÀí/Xt_UserList.html
New file
@@ -0,0 +1,193 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>系统用户列表</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../../layuiadmin/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../../layuiadmin/style/admin.css" media="all">
    <script src="../../../layuiadmin/layui/layui.js"></script>
</head>
<body>
    <div class="layui-fluid">
        <div class="layui-col-md12">
            <div class="layui-card" style="padding: 1px">
                <div class="layui-card-body" style="padding: 1px;">
                    <form class="layui-form" action="" lay-filter="component-form-group">
                        <div class="layui-collapse">
                            <div class="layui-colla-item">
                                <div class="layui-colla-title layui-inline">
                                    <div class="layui-inline">
                                        <span></span>
                                    </div>
                                </div>
                                <div class="layui-inline">
                                    <label class="layui-form-label">用户编码</label>
                                    <div class="layui-input-block">
                                        <input type="text" class="layui-input" name="HNumber" id="HNumber">
                                    </div>
                                </div>
                                <div class="layui-inline">
                                    <label class="layui-form-label">用户名称</label>
                                    <div class="layui-input-block">
                                        <input type="text" class="layui-input" name="HName" id="HName">
                                    </div>
                                </div>
                                <div class="layui-inline">
                                    <label class="layui-form-label">对应CLOUD组织</label>
                                    <div class="layui-input-block">
                                        <input type="text" class="layui-input" name="HUSEORGID" id="HUSEORGID">
                                    </div>
                                </div>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnSearch" id="btnSearch">
                                    <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
                                </button>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnReSearch" id="btnReSearch" style="padding:0 5px">重置</button>
                            </div>
                        </div>
                        <table class="" id="mainTable" lay-filter="mainTable"></table>
                        <script type="text/html" id="toolbarDemo">
                            <div class="layui-btn-container">
                                <!--<button type="button" class="layui-btn layui-btn-sm" lay-event="btn-getCheckData"><i class="layui-icon layui-icon-tips"></i>预览</button>-->
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-reload"><i class="layui-icon layui-icon-refresh"></i>刷新</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-confirm" id="btn_confirm"><i class="layui-icon layui-icon-ok-circle"></i>确认</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-back" id="btn_back"><i class="layui-icon layui-icon-close-fill"></i>驳回</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-details"><i class="layui-icon layui-icon-form"></i>详情</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-generate"><i class="layui-icon layui-icon-file"></i>生成送货单</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-exit"><i class="layui-icon layui-icon-return"></i>退出</button>
                            </div>
                        </script>
                    </form>
                </div>
            </div>
        </div>
    </div>
    <script src="../../../layuiadmin/layui/layui.js"></script>
    <script src="../../../layuiadmin/Scripts/json2.js"></script>
    <script src="../../../layuiadmin/Scripts/jquery-1.4.1.js"></script>
    <script src="../../../layuiadmin/Scripts/webConfig.js"></script>
    <script>
        layui.config({
            base: '../../../layuiadmin/' //静态资源所在路径
        }).extend({
            index: 'lib/index', //主入口模块
        }).use(['index', 'form', 'table', 'element', 'laypage','laydate'], function () {
            var $ = layui.$
            , admin = layui.admin
            , layer = layui.layer
            , table = layui.table
            , form = layui.form
            , element = layui.element
            , laypage = layui.laypage
            , laydate = layui.laydate
            var sWhere = "";
            var option = {
                elem: '#mainTable'
                //, toolbar: '#toolbarDemo'
                ,height: 'full-50'
                , page: true
                ,cellMinWidth: 90
                , cols: [[
                    { field: '用户编码', title: '用户编码' }
                    , { field: '用户名称', title: '用户名称' }
                    , { field: '对应保管', title: '对应保管' }
                    , { field: '对应验收', title: '对应验收' }
                    , { field: '对应业务员', title: '对应业务员' }
                    , { field: '对应部门', title: '对应部门' }
                    , { field: '对应仓库', title: '对应仓库' }
                    , { field: '对应调入仓库', title: '对应调入仓库' }
                    , { field: '对应供应商', title: '对应供应商' }
                    , { field: '对应CLOUD账号', title: '对应CLOUD账号' }
                    , { field: '对应CLOUD组织', title: '对应CLOUD组织' }
                ]]
            };
            var index = layer.load(0, { shade: false });
            //进入页面显示的缓存列表
            $.ajax({
                //url: "http://61.130.49.162:9090/WMSAPI///Web/GetMAXNum",
                url: GetWEBURL() + '/Xt_User/list',
                type: "GET",
                data: { "sWhere": sWhere },
                success: function (data1) {
                    if (data1.count == 1) {
                        option.data = data1.data;
                        table.render(option);
                        layer.close(index);
                    } else {
                        layer.close(index);
                        layer.alert(data1.code + data1.Message, { icon: 5 });
                    }
                }, error: function () {
                    layer.close(index);
                    layer.alert("接口请求失败!", { icon: 5 });
                }
            });
            //重置按钮
            form.on('submit(btnReSearch)', function (data) {
                $("#HNumber").val("");
                $("#HName").val("");
                $("#HUSEORGID").val("");
                $("#btnSearch").click();
            });
            //查询按钮
            form.on('submit(btnSearch)', function (data) {
                var HNumber = $("#HNumber").val();
                var HName = $("#HName").val();
                var HUSEORGID = $("#HUSEORGID").val();
                if (HNumber) {
                    sWhere += " and ç”¨æˆ·ç¼–码 like '%" + HNumber + "%'";
                }
                if (HName) {
                    sWhere += " and ç”¨æˆ·åç§° like '%" + HName + "%'";
                }
                if (HUSEORGID) {
                    sWhere += " and å¯¹åº”CLOUD组织 like '%" + HUSEORGID + "%'";
                }
                $.ajax({
                    //url: "http://61.130.49.162:9090/WMSAPI///Web/GetMAXNum",
                    url: GetWEBURL() + '/Xt_User/list',
                    type: "GET",
                    data: { "sWhere": sWhere },
                    success: function (data1) {
                        if (data1.count == 1) {
                            option.data = data1.data;
                            table.render(option);
                            layer.alert("查询成功", { icon: 1 });
                        } else {
                            layer.alert(data1.code + data1.Message, { icon: 5 });
                        }
                    }, error: function () {
                        layer.alert("接口请求失败!", { icon: 5 });
                    }
                });
                sWhere = "";//调用接口后清空sWhere缓存
            });
            //laydate.render({
            //    elem: '#HDate'
            //    , type: 'datetime'
            //    , trigger: 'click'
            //    , format:'yyyy-MM-dd HH:mm'
            //});
            //以上是layui模块
        });
    </script>
</body>
</html>
WebTM/views/ϵͳ¹ÜÀí/ϵͳ²ÎÊý¹ÜÀí/Xt_SystemParameterList.html
New file
@@ -0,0 +1,168 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>系统参数列表</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../../layuiadmin/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../../layuiadmin/style/admin.css" media="all">
    <script src="../../../layuiadmin/layui/layui.js"></script>
</head>
<body>
    <div class="layui-fluid">
        <div class="layui-col-md12">
            <div class="layui-card" style="padding: 1px">
                <div class="layui-card-body" style="padding: 1px;">
                    <form class="layui-form" action="" lay-filter="component-form-group">
                        <div class="layui-collapse">
                            <div class="layui-colla-item">
                                <div class="layui-colla-title layui-inline">
                                    <div class="layui-inline">
                                        <span></span>
                                    </div>
                                </div>
                                <div class="layui-inline">
                                    <label class="layui-form-label">参数名称</label>
                                    <div class="layui-input-block">
                                        <input type="text" class="layui-input" name="HName" id="HName">
                                    </div>
                                </div>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnSearch" id="btnSearch">
                                    <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
                                </button>
                                <button class="layui-btn layuiadmin-btn-order" type="button" lay-submit="" lay-filter="btnReSearch" id="btnReSearch" style="padding:0 5px">重置</button>
                            </div>
                        </div>
                        <table class="" id="mainTable" lay-filter="mainTable"></table>
                        <script type="text/html" id="toolbarDemo">
                            <div class="layui-btn-container">
                                <!--<button type="button" class="layui-btn layui-btn-sm" lay-event="btn-getCheckData"><i class="layui-icon layui-icon-tips"></i>预览</button>-->
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-reload"><i class="layui-icon layui-icon-refresh"></i>刷新</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-confirm" id="btn_confirm"><i class="layui-icon layui-icon-ok-circle"></i>确认</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-back" id="btn_back"><i class="layui-icon layui-icon-close-fill"></i>驳回</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-details"><i class="layui-icon layui-icon-form"></i>详情</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-generate"><i class="layui-icon layui-icon-file"></i>生成送货单</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-exit"><i class="layui-icon layui-icon-return"></i>退出</button>
                            </div>
                        </script>
                    </form>
                </div>
            </div>
        </div>
    </div>
    <script src="../../../layuiadmin/layui/layui.js"></script>
    <script src="../../../layuiadmin/Scripts/json2.js"></script>
    <script src="../../../layuiadmin/Scripts/jquery-1.4.1.js"></script>
    <script src="../../../layuiadmin/Scripts/webConfig.js"></script>
    <script>
        layui.config({
            base: '../../../layuiadmin/' //静态资源所在路径
        }).extend({
            index: 'lib/index', //主入口模块
        }).use(['index', 'form', 'table', 'element', 'laypage','laydate'], function () {
            var $ = layui.$
            , admin = layui.admin
            , layer = layui.layer
            , table = layui.table
            , form = layui.form
            , element = layui.element
            , laypage = layui.laypage
            , laydate = layui.laydate
            var sWhere = "";
            var option = {
                elem: '#mainTable'
                //, toolbar: '#toolbarDemo'
                ,height: 'full-50'
                , page: true
                ,cellMinWidth: 90
                , cols: [[
                    { field: 'Hitemid', title: 'Hitemid', sort: true, hide: true }
                    , { field: '模块大类', title: '模块大类' }
                    , { field: '关键码', title: '关键码' }
                    , { field: '参数名称', title: '参数名称' }
                    , { field: '值', title: '值' }
                    , { field: '是否可编辑', title: '是否可编辑' }
                    , { field: '描述', title: '描述' }
                    , { field: '数据类型', title: '数据类型' }
                ]]
            };
            var index = layer.load(0, { shade: false });
            //进入页面显示的缓存列表
            $.ajax({
                //url: "http://61.130.49.162:9090/WMSAPI///Web/GetMAXNum",
                url: GetWEBURL() + '/Xt_SystemParameter/list',
                type: "GET",
                data: { "sWhere": sWhere },
                success: function (data1) {
                    if (data1.count == 1) {
                        option.data = data1.data;
                        table.render(option);
                        layer.close(index);
                    } else {
                        layer.close(index);
                        layer.alert(data1.code + data1.Message, { icon: 5 });
                    }
                }, error: function () {
                    layer.close(index);
                    layer.alert("接口请求失败!", { icon: 5 });
                }
            });
            //重置按钮
            form.on('submit(btnReSearch)', function (data) {
                $("#HName").val("");
                $("#btnSearch").click();
            });
            //查询按钮
            form.on('submit(btnSearch)', function (data) {
                var HName = $("#HName").val();
                if (HName) {
                    sWhere += " and å‚数名称 like '%" + HName + "%'";
                }
                $.ajax({
                    //url: "http://61.130.49.162:9090/WMSAPI///Web/GetMAXNum",
                    url: GetWEBURL() + '/Xt_SystemParameter/list',
                    type: "GET",
                    data: { "sWhere": sWhere },
                    success: function (data1) {
                        if (data1.count == 1) {
                            option.data = data1.data;
                            table.render(option);
                            layer.alert("查询成功", { icon: 1 });
                        } else {
                            layer.alert(data1.code + data1.Message, { icon: 5 });
                        }
                    }, error: function () {
                        layer.alert("接口请求失败!", { icon: 5 });
                    }
                });
                sWhere = "";//调用接口后清空sWhere缓存
            });
            //laydate.render({
            //    elem: '#HDate'
            //    , type: 'datetime'
            //    , trigger: 'click'
            //    , format:'yyyy-MM-dd HH:mm'
            //});
            //以上是layui模块
        });
    </script>
</body>
</html>