@using GBLab.Common.Expand;
@{
    Layout = "~/Areas/Manage/Views/DefaultSkin/Shared_Back/_Layout_ContentBase.cshtml";

    // 树形数据链接
    string dataTreeUrl = ViewData["dataTreeUrl"].ToString();

    // 树形数据链接
    string dataRecommondTreeUrl = ViewData["dataRecommondTreeUrl"].ToString();

    // 数据链接
    string dataUrl = ViewData["dataUrl"].ToString();
}
@section Head{
    @(RenderSection("Head", required: false))
}

@RenderBody()

@(RenderSection("Toolbar", required: false))

@section JavaScript{
    <script>

        // ---------------------------------------------------- 初始参数 ----------------------------------------------------
        var Template = '@(ViewData["Template"])';                                           // 模板名称
        var MvcMarkName = '@(ViewData["MvcMarkName"])';                                     // 扩展分类
        var MvcClassID = '@(ViewData["MvcClassID"].DefaultIsNullOrEmpty(0))';               // 类别ID

        var dataTreeUrl= '@Html.Raw(dataTreeUrl)';
        var dataRecommondTreeUrl= '@Html.Raw(dataRecommondTreeUrl)';
        var dataUrl = '@Html.Raw(dataUrl)';


        // ---------------------------------------------------- 公共处理 ----------------------------------------------------
        // 没有参数的创建链接
        function createLinkNoExtArg(id) {
            if (id === '') {
                return ''
            }
            return "/manage/default/Post?ActionGUID=" + id;
        }

        // 属性 创建显示属性
        function createFlagsComboBox() {
            var data = [['R', '热'], ['T', '推'], ['J', '精'], ['X', '新'], ['F', '频道幻灯']];
            $('#SearchFlags').combobox({ data: data, valueField: 0, textField: 1 });
        }


        // ---------------------------------------------------- 树形处理 ----------------------------------------------------
        /*
         * 菜单树触发
         * 重置查询条件，重置查询结果。
         */
        function clickTree(nodeid) {
            $("#SearchClassID").val(nodeid);
            btnSearch();
        }


        // ---------------------------------------------------- 列表数据 ----------------------------------------------------
        // 执行 - 搜索【可替代，替代方法：btnSearch】
        // 先预留
        function doSearch(value, name) {
            btnSearch();
        }

        // 执行 - 查询
        function btnSearch() {
            grid = loadData(queryParams());

            // 分页信息初始化
            grid.datagrid('getPager').pagination({

                links: 10,                                                                 // 链接数量，只有当 'links' 项包含在 'layout' 中时才是有效的。该属性自版本 1.3.5 起可用。
                /*
                 * 分页布局定义。该属性自版本 1.3.5 起可用。
                 * 布局项目包括一个或多个下列值：
                 * 1、list：页面尺寸列表。
                 * 2、sep：页面按钮分割。
                 * 3、first：第一个按钮。
                 * 4、prev：前一个按钮。
                 * 5、next：后一个按钮。
                 * 6、last：最后一个按钮。
                 * 7、efresh：刷新按钮。
                 * 8、manual：允许输入域页码的手动页码输入框。
                 * 9、links：页码链接。
                 *
                 * 10 info:自定义信息
                 */
                layout: ['list', 'sep', 'links', 'sep', 'first', 'prev', 'next', 'last', 'sep', 'refresh', 'info'],

                total: 1,                                                                  // 记录总数，应该在创建分页（pagination）时设置。
                pageSize: 10,                                                              // 当设置了 pagination 属性时，初始化页面尺寸。
                pageNumber: 1,                                                             // 当设置了 pagination 属性时，初始化页码。
                pageList: [10 ,20 , 30, 50, 100],                                               // 分页信息

                loading: true,                                                             // 定义数据是否正在加载。

                showPageList: true,                                                        // 定义是否显示页面列表。
                showRefresh: true,                                                         // 定义是否显示刷新按钮。

                beforePageText: "第",                                                      // 在 input 组件之前显示 label。
                afterPageText: "页 ，共 <span class=\"red\">{pages}</span> 页",            // 在 input 组件之后显示 label。
                displayMsg: '当前 <span class=\"red\">{from}</span> 到 <span class=\"red\">{to}</span> 条，总 <span class=\"red\">{total}</span> 条，耗时 <span class=\"red\" id=\"timeOut\"></span> 毫秒',   // Display a page information.
            });
            $('body').layout();
        }


        // ---------------------------------------------------- 列表数据 - 业务 ----------------------------------------------------
        // 打印预览
        function PrintPage(fang) {
            if (fang < 10) {
                bdhtml = window.document.body.innerHTML;//获取当前页的html代码
                sprnstr = "<!--startprint" + fang + "-->";//设置打印开始区域
                eprnstr = "<!--endprint" + fang + "-->";//设置打印结束区域
                prnhtml = bdhtml.substring(bdhtml.indexOf(sprnstr) + 18); //从开始代码向后取html
                prnhtml = prnhtml.substring(0, prnhtml.indexOf(eprnstr));//从结束代码向前取html
                window.document.body.innerHTML = prnhtml;
                window.print();
                window.document.body.innerHTML = bdhtml;
            } else {
                window.print();
            }
        }

        // 选择 - 获得选中列表个数
        function getSelectedArr(id) {
            var ids = [];
            var rows = grid.datagrid('getSelections');
            if (id == 0) {
                for (var i = 0; i < rows.length; i++) {
                    ids.push(rows[i].F_Id);
                }
            }
            else {
                ids.push(id);
            }
            return ids;
        }

        // 选择 - 重置
        function resetGrid() {
            grid.treegrid('clearSelections');
            $("input[type='checkbox']").eq(0).attr("checked", false);
        }

        // 选择 - 检查
        function Checkclick(rowid) {
            if (rowid == undefined || rowid == "00000000-0000-0000-0000-000000000000" || rowid == "") {
                $.messager.alert("操作提示", "请选择一条要修改的记录！");
                return false;
            }
            return true;
        }


        // ---------------------------------------------------- 列表数据 - 信息编辑 ----------------------------------------------------
        // 编辑窗口 - 打开 - 添加
        function Add(actionId) {
            dialogWin = openWindow("#form-window", " 添加 ", createLink(actionId), "icon-add").dialog('open');
        }

        // 查看窗口 - 打开 - 查看
        function Detail(actionId, rowId, rowGuid) {
            if (rowId == undefined) {
                var idArray = getSelectedArr(0);
                if (grid.datagrid('getSelections').length > 0) {
                    rowGuid = grid.datagrid('getSelections')[0].F_Guid;
                }
            } else {
                var idArray = getSelectedArr(rowId);
            }

            if (idArray.length == 1) {
                console.log(createLink(actionId) + '&F_Id=' + idArray[0] + '&F_Guid=' + rowGuid);
                dialogWin = openWindow("#form-window", " 查看 ID:" + idArray[0], createLink(actionId) + '&F_Id=' + idArray[0] + '&F_Guid=' + rowGuid, "icon-add").dialog('open');
            }
            else {
                msgShow('提示', '请至少且只能选择一条记录进行操作!', 'info');
            }
            return;
        }

        // 编辑窗口 - 打开 - 编辑
        function Edit(actionId, rowId, rowGuid) {
            if (rowId == undefined) {
                var idArray = getSelectedArr(0);
                if (grid.datagrid('getSelections').length > 0) {
                    rowId = grid.datagrid('getSelections')[0].F_Id;
                    rowGuid = grid.datagrid('getSelections')[0].F_Guid;
                }
            } else {
                var idArray = getSelectedArr(rowId);
            }

            if (idArray.length == 1) {
                dialogWin = openWindow("#form-window", " 修改 ID:" + idArray[0], createLink(actionId) + '&F_Id=' + idArray[0] + '&F_Guid=' + rowGuid, "icon-add").dialog('open');
            }
            else {
                msgShow('提示', '请至少且只能选择一条记录进行操作!', 'info');
            }
            return;
        }

        // 批量处理
        function Delete(actionId) {
            var idArray = getSelectedArr(0);
            if (idArray.length == 0) {
                $.messager.alert("操作错误", "请选择要进行操作的记录！");
            } else {
                $.messager.confirm("操作确认", "您确定要【批量操作】这 <b style='color:red;'>" + idArray.length + "</b> 记录吗？", function (b) {
                    if (b) {
                        ajaxAction(createLink(actionId) +'&InfoID=' + idArray.join(','), 'post', 100000);
                    }
                });
            }
        }

        // 批量处理
        function BatchAction() {
            return arraylistWin.window('open');
        }


        // ---------------------------------------------------- 列表数据 - 信息编辑 ----------------------------------------------------

        // 编辑窗口 - 关闭
        function closeWin() {
            if (arraylistWin != null) { arraylistWin.dialog('close'); }
            if (dialogWin != null) { dialogWin.dialog('close'); }
        }

        // 编辑窗口 - 关闭 - 刷新列表并回到首页
        function close() {
            resetGrid();
            closeWin();
            grid.datagrid('load');
        }

        //  编辑窗口 - 关闭 - 取消
        function cancel() {
            closeWin();
        }

        // 编辑窗口 - 关闭 - 刷新列表
        function refreshGrid() {
            resetGrid();
            closeWin();
            grid.datagrid('reload');
        }


        // ---------------------------------------------------- 列表数据 - 批量处理 ----------------------------------------------------

        // 批量 标识 状态
        function Action_MarkStatus(actionId) {
            var idArray = getSelectedArr(0);
            if (idArray.length == 0) {
                $.messager.alert("操作错误", "请选择要进行操作的记录！");
            } else {
                var MarkStatus = $("#Info_Action_MarkStatus").combobox('getValue');
                if (MarkStatus == "") {
                    $.messager.alert("操作错误", "请确认 标识状态");
                } else {
                    $.messager.confirm("操作确认", "您确定要【批量操作】这 <b style='color:red;'>" + idArray.length + "</b> 记录吗？", function (b) {
                        if (b) {
                            ajaxAction(createLink(actionId) + '&ActionArg=' + MarkStatus + '&InfoID=' + idArray.join(','), 'post', 100000);
                        }
                    });
                }
            }
        }

        // 批量 移动 栏目
        function Action_ClassID(actionId) {
            var idArray = getSelectedArr(0);
            if (idArray.length == 0) {
                $.messager.alert("操作错误", "请选择要进行操作的记录！");
            } else {
                var ClassID = $("#Info_Action_ClassID").combobox('getValue');
                if (ClassID == "") {
                    $.messager.alert("操作错误", "请确认 栏目分类");
                } else {
                    $.messager.confirm("操作确认", "您确定要【批量 移动栏目】这 <b style='color:red;'>" + idArray.length + "</b> 记录吗？", function (b) {
                        if (b) {
                            ajaxAction(createLink(actionId) + '&ActionArg=' + ClassID + '&InfoID=' + idArray.join(','), 'post', 100000);
                        }
                    });
                }
            }
        }

        // 批量 移动 栏目
        function Action_ClassIDS(actionId) {
            var idArray = getSelectedArr(0);
            if (idArray.length == 0) {
                $.messager.alert("操作错误", "请选择要进行操作的记录！");
            } else {
                var nodes = $("#Info_Action_ClassIdS").combotree('getValues');
                var ClassID = '';
                for (var i = 0; i < nodes.length; i++) {
                    if (ClassID != '') ClassID += ',';
                    ClassID += nodes[i];
                }

                if (ClassID == "") {
                    $.messager.alert("操作错误", "请确认 栏目分类");
                } else {
                    $.messager.confirm("操作确认", "您确定要【批量 移动栏目】这 <b style='color:red;'>" + idArray.length + "</b> 记录吗？", function (b) {
                        if (b) {
                            ajaxAction(createLink(actionId) + '&ActionArg=' + ClassID + '&InfoID=' + idArray.join(','), 'post', 100000);
                        }
                    });
                }
            }
        }

        // 批量 推荐
        function Action_RecommendID_Add(actionId) {
            var idArray = getSelectedArr(0);
            if (idArray.length == 0) {
                $.messager.alert("操作错误", "请选择要进行操作的记录！");
            } else {
                var nodes = $("#Info_Action_Recommend_ClassID").combotree('getValues');
                var ClassID = '';
                for (var i = 0; i < nodes.length; i++) {
                    if (ClassID != '') ClassID += ',';
                    ClassID += nodes[i];
                }

                if (ClassID == "") {
                    $.messager.alert("操作错误", "请确认 栏目分类");
                } else {
                    $.messager.confirm("操作确认", "您确定要【批量 推荐】这 <b style='color:red;'>" + idArray.length + "</b> 记录吗？", function (b) {
                        if (b) {
                            ajaxAction(createLink(actionId) + '&ActionArg=' + ClassID + '&InfoID=' + idArray.join(','), 'post', 100000);
                        }
                    });
                }
            }
        }

        // 批量 推荐 取消
        function Action_RecommendID_Remove(actionId) {
            var idArray = getSelectedArr(0);
            if (idArray.length == 0) {
                $.messager.alert("操作错误", "请选择要进行操作的记录！");
            } else {
                var nodes = $("#Info_Action_Recommend_ClassID").combotree('getValues');
                var ClassID = '';
                for (var i = 0; i < nodes.length; i++) {
                    if (ClassID != '') ClassID += ',';
                    ClassID += nodes[i];
                }

                if (ClassID == "") {
                    $.messager.alert("操作错误", "请确认 栏目分类");
                } else {
                    $.messager.confirm("操作确认", "您确定要【批量 取消 推荐】这 <b style='color:red;'>" + idArray.length + "</b> 记录吗？", function (b) {
                        if (b) {
                            ajaxAction(createLink(actionId) + '&ActionArg=' + ClassID + '&InfoID=' + idArray.join(','), 'post', 100000);
                        }
                    });
                }
            }
        }

        // ---------------------------------------------------- 初始方法 ----------------------------------------------------
        $(function () {

            /* 初始化-标签页
             * 目前的tab的方式，是只使用tab的头，并没有使用tab对应的容器信息，
             * 这样做的初衷应该是为了避免多个容器中多个列表对象的问题。
             * 但衍生的带来一个问题，那就是最后的帮助里面撑开的时候会占用到视图的呈现高度。
             * 详细说明：http://www.jeasyui.net/plugins/160.html
             * */
            var tabs = $('#tabs').tabs({
                //tabPosition: 'bottom',                        // tab的方向，Top，Bottom，Left，Right
                border: false,                                  // 是否需要边框，提到的边框就是底部的边框。
                onSelect: function (title, index) {             // 切换的事件,还有更多的触发事件支持：onLoad，onUnselect，等等
                    console.log(title);
                    console.log(index);
                    if (title != 'Ajax') {
                        $("#SearchMarkStatus").val(tabs.tabs('getSelected').panel('options').id);
                        btnSearch();
                    } else {
                    }
                }
            });

            /*
             * 初始化-批量操作窗口
             * 详细说明：http://www.jeasyui.net/plugins/180.html
             */
            arraylistWin = $('#arraylist-window').window({
                title: '批量操作',                  // 窗口的标题文本。
                collapsible: false,                 // 定义是否显示折叠按钮。

                minimizable: false,                 // 定义是否显示最小化按钮。
                maximizable: false,                 // 定义是否显示最大化按钮。

                closable: true,                     // 定义是否显示关闭按钮。
                closed: true,                       // 定义是否关闭窗口。

                zIndex: 999999,                     // 从其开始增加的窗口的 z-index。

                draggable: true,                    // 定义窗口是否可拖拽。
                resizable: false,                    // 定义窗口是否可调整尺寸。

                shadow: true,                       // 如果设置为 true，当窗口能够显示阴影的时候将会显示阴影。

                inline: false,                      // 定义如何放置窗口，当设置为 true 时则放在它的父容器里，当设置为 false 时则浮在所有元素的顶部。

                modal: true,                        // 定义窗口是不是模态（modal）窗口。

                iconCls: 'icon-redo',               //
            });

            /*
             * 初始化-分类树
             * http://www.jeasyui.net/plugins/185.html
             */
            tree = $('#tree').tree({
                url: dataTreeUrl,
                methord: 'get',                                 // 检索数据的 http 方法（method）。
                animate: true,                                  // 定义当节点展开折叠时是否显示动画效果。
                checkbox: false,                                // 定义是否在每个节点前边显示复选框。
                cascadeCheck: true,                             // 定义是否级联检查。
                onlyLeafCheck: false,                           // 定义是否只在叶节点前显示复选框。
                lines: false,                                   // 定义是否显示树线条。
                dnd: false,                                     // 定义是否启用拖放。


                onClick: function (node) {                      // 点击节点的时候触发的事件
                    clickTree(node.id);
                },

                formatter: function (node) {                    // 格式化展示
                    var s = '<span title=\'' + node.id + '\'> ' + node.text + '</span>';
                    if (node.count > 0) {
                        s += '&nbsp;(<span style=\'color:blue\'>' + node.count + '</span>)';
                    }
                    return s;
                }
            });

            // 属性 创建显示属性
            createFlagsComboBox();

            // 展示数据
            btnSearch();
        })

        // ---------------------------------------------------- 列表数据 - EasyUi - 扩展方法 ----------------------------------------------------
        var onBeforeLoad = function (param) {
            // console.log('加载之前的事件');
            // console.log(param);
        };

        var onLoadSuccess = function (data) {
            setTimeout(function () {
                $("#timeOut").html(data.timeOut);
                grid.datagrid('fixDetailRowHeight');
                grid.datagrid("clearSelections");
                bindFancybox();
            }, 0);
        };

        var onLoadError = function () {
            msgShow("操作失败", "发生错误,获取列表失败！", "error");
        };

        var onClickCell = function (index, field, value) {
            //console.log(index);
            //console.log(field);
            //console.log(value);
        };

        var onDblClickRow = function (rowIndex, rowData) {
            console.log(rowData);
            Info_Update(rowData);
        };

        function MarkStatusName(markstatus) {
            switch (markstatus) {
                case 0:
                    return "正式";
                case 10:
                    return "锁定";
                case 20:
                    return "待审核";
                case 50:
                    return "未通过";
                case 30:
                    return "过期";
                case 40:
                    return "停用";
                case -1:
                    return "删除";
            }
        }
    </script>

    @(RenderSection("JavaScript", required: false))
}