layui.define(['form', 'laydate', 'table'], function (exports) {
    var form = layui.form,
        laydate = layui.laydate,
        table = layui.table,
        resourcesInfoTable = null,
        courseInfoMap = {},//课程map
        zjMap = {},//章节map
        selectMap = {},//已经生成过select的map

        htmY = '<optgroup label="应用课程类">',
        htmL = '<optgroup label="理论课程类">',
        htmK = '<optgroup label="考证课程类">',
        htmO = '<optgroup label="开课课程类">',

        currentAuthCourseInfoDetails = Common.getAjax("/jlw/universitiesCollegesJurisdictionCurriculumResources/getCourseSystemOAndUniversities.json").data;
    /*// 应用课程类
    var applicationCourseList = currentAuthCourseInfoDetails.applicationCourseList || [];
    // 理论课程类
    var theoryCourseList = currentAuthCourseInfoDetails.theoryCourseList || [];
    // 考证课程类
    var textualResearchCourseList = currentAuthCourseInfoDetails.textualResearchCourseList || [];*/

    // 应用课程类
    var applicationCourseList = [];
    // 理论课程类
    var theoryCourseList = [];
    // 考证课程类
    var textualResearchCourseList = [];
    // 理论课程类+开课课程
    var openCourseList = [];

    function childCourseList(courseInfoId,courseInfoType,sourceType){
        var data = Common.getAjax("/jlw/courseInfo/getChapterSystemOAndUniversities.json", {
            courseInfoParentId: courseInfoId,
            courseInfoType:courseInfoType,
            sourceType:sourceType
        }).data;//获取课程数据
        return data
    }

    currentAuthCourseInfoDetails.forEach(function(e,i){
        if(e.sourceType == 2){
            if(e.courseLabelType == '考证课程类'){
                textualResearchCourseList.push(e);
            }else if(e.courseLabelType == '理论课程类'){
                theoryCourseList.push(e);
            }else if(e.courseLabelType == '应用课程类'){
                applicationCourseList.push(e);
            }
        }else if(e.sourceType == 1){
            openCourseList.push(e)
        }
    });
    var selectList ="<select lay-filter='select_courseInfoIds_'><option value=''>请选择</option>";

    for (let currentAuthCourseInfoDetail of applicationCourseList) {
        htmY += '<option value="' + (currentAuthCourseInfoDetail.courseInfoId || '-1')+'" status="'+currentAuthCourseInfoDetail.sourceType+'">' + (currentAuthCourseInfoDetail.courseInfoName || '未查询到数据') + '</option>';
    }

    for (let currentAuthCourseInfoDetail of theoryCourseList) {
        htmL += '<option value="'+ (currentAuthCourseInfoDetail.courseInfoId || '-1')+'" status="'+currentAuthCourseInfoDetail.sourceType+'">'+ (currentAuthCourseInfoDetail.courseInfoName || '未查询到数据') +'</option>';
    }

    for (let currentAuthCourseInfoDetail of textualResearchCourseList) {
        htmK += '<option value="'+ (currentAuthCourseInfoDetail.courseInfoId || '-1') + '" status="'+currentAuthCourseInfoDetail.sourceType+'">'+ (currentAuthCourseInfoDetail.courseInfoName || '未查询到数据') +'</option>';
    }
    for (let currentAuthCourseInfoDetail of openCourseList) {
        htmO += '<option value="'+ (currentAuthCourseInfoDetail.courseInfoId || '-1') +'" status="'+currentAuthCourseInfoDetail.sourceType+'">'+ (currentAuthCourseInfoDetail.courseInfoName || '未查询到数据') +'</option>';
    }

    if($("#isUser").val() === "true"){
        selectList += htmY + '</optgroup>' + htmK + '</optgroup>' + htmL + '</optgroup>' + htmO + '</optgroup>' +  "</select>";
        //console.log($("#isUser").val())
    }else {
        selectList+= htmL + '</optgroup>' + htmO + '</optgroup>' + "</select>";
    }

    function selectedHandler(val,val1) {
        return val == val1 ? 'selected = "selected"' : '';
    }
    /*$.each(courseLabelTypes, function (key, value) {
        courseInfoMap[value.courseInfoId] = {courseInfoName: value.courseInfoName, children: value.children};
        $.each(value.children, function (k, v) {
            zjMap[v.courseInfoId] = {courseInfoName: v.courseInfoName, children: v.children};
        });
    });*/


    var view = {
        init: function () {
            this.initTable();
            this.initSearchForm();
            this.initToolBar();
            window.dataReload = function () {
                Lib.doSearchForm($("#searchForm"), resourcesInfoTable);
            }
        },
        initTable: function () {
            resourcesInfoTable = table.render({
                elem: '#resourcesInfoTable',
                height: Lib.getTableHeight(),
                cellMinWidth: 100,
                method: 'post',
                even: true,
                size: "lg",
                url: Common.ctxPath + '/jlw/resourcesInfo/list.json' // 数据接口
                , page: Lib.tablePage // 开启分页
                , limit: 10,
                cols: [[ // 表头
                    {
                        type: 'checkbox'
                    },
                    {
                        field: 'resourcesInfoName', title: '资源名称', align: "center", style: "text-align: left;"
                    },
                    {
                        field: 'courseInfoParentParentName',
                        title: '归属课程',
                        templet: function (d) {
                            return selectList; //一级
                        }
                    },
                    {
                        field: 'courseInfoParentName',
                        title: '归属章节',
                        align: "center",
                        templet: function (d) {
                            var htm = "<select lay-filter='select_courseInfoIds_1'><option value=''>请选择</option>";
                            if (!$.isEmpty(d.courseInfoParentId)) {
                                if ($.isEmpty(selectMap[d.courseInfoParentParentId])) {
                                    var h = htm;
                                    var courseInfoChildtList = childCourseList(d.courseInfoParentParentId,2,d.sourceType);
                                    if (!$.isEmpty(courseInfoChildtList)) {
                                        courseInfoMap[d.courseInfoParentParentId] = courseInfoChildtList;
                                        $.each(courseInfoChildtList, function (key, v) {
                                            h += "<option value='" + v.courseInfoId + "'>" + v.courseInfoName + "</option>";
                                        });
                                    }
                                    selectMap[d.courseInfoParentParentId] = h + "</select>";
                                    return h;
                                } else {
                                    return selectMap[d.courseInfoParentParentId];
                                }
                            } else {
                                return htm + "</select>"; //二级
                            }

                        }
                    },
                    {
                        field: 'courseInfoName', title: '归属小节', align: "center", width: 200, templet: function (d) {
                            var htm = "<select lay-filter='select_courseInfoIds_2'><option value=''>请选择</option>";
                            if (!$.isEmpty(d.courseInfoId)) {
                                if ($.isEmpty(selectMap[d.courseInfoParentId])) {
                                    var h = htm;
                                    var courseInfoChildtChildList = childCourseList(d.courseInfoParentId,3,d.sourceType);
                                    if (!$.isEmpty(courseInfoChildtChildList)) {
                                        zjMap[d.courseInfoParentId] = courseInfoChildtChildList;
                                        $.each(courseInfoChildtChildList, function (key, v) {
                                            h += "<option value='" + v.courseInfoId + "'>" + v.courseInfoName + "</option>";
                                        });
                                    }
                                    selectMap[d.courseInfoParentId] = h + "</select>";
                                    return h;
                                } else {
                                    return selectMap[d.courseInfoParentId];
                                }

                            } else {
                                return htm + "</select>"; //三级
                            }

                        }
                    },
                    {
                        field: 'addTypeText', title: '来源', align: "center"
                    },
                    /*{
                        field: 'orgIdText', title: '上传院校', align: "center"
                    },*/
                    {
                        field: 'resourcesInfoType', title: '资源类型', align: "center", templet: function (d) {//(1视频 2PPT 3PDF)
                            var text = d.resourcesInfoType == 1 ? "视频" : d.resourcesInfoType == 2 ? "PPT" : d.resourcesInfoType == 3 ? "PDF" : d.resourcesInfoType == 4 ? "链接" : d.resourcesInfoType == 5 ? "图文" : '-';
                            return '<span class="textType">' + text + '</span>';
                        }
                    },
                    {
                        field: 'userId', title: '操作', align: "center", field: 'right', templet: function (d) {
                            var htm = '<a class="layui-table-link" lay-event="edit">编辑</a>';
                           // htm += '<a class="layui-table-link" lay-event="previewPage" >' + (d.resourcesInfoType == 3 ? '下载' : '预览') + '</a>';
                            if(d.resourcesInfoType == 4){
                                htm += '<a class="layui-table-link" href="'+d.resourcesInfoContent+'" target="_blank" >预览</a>';
                            }else {
                                htm += '<a class="layui-table-link" lay-event="previewPage" >预览</a>';
                            }
                            htm += '<a class="layui-table-link" lay-event="del">删除</a>';
                            return htm;
                        }
                    }
                ]], done: function (res, curr, count) {
                    $.each(res.data, function (k, v) {
                        $("div[lay-id='resourcesInfoTable'] tbody tr:eq(" + k + ")").find("select:eq(0)").val(v.courseInfoParentParentId);
                        $("div[lay-id='resourcesInfoTable'] tbody tr:eq(" + k + ")").find("select:eq(1)").val(v.courseInfoParentId);
                        $("div[lay-id='resourcesInfoTable'] tbody tr:eq(" + k + ")").find("select:eq(2)").val(v.courseInfoId);
                    });
                    form.render();
                    $.each($("td[data-field='courseInfoName']"), function (k, v) {
                        $(this).find("input").val($(this).find("input").context.dataset.content);
                    });
                }
            });

            table.on('checkbox(resourcesInfoTable)', function (obj) {
                var resourcesInfo = obj.data;
                if (obj.checked) {
                    //按钮逻辑Lib.buttonEnable()
                } else {

                }
            })
        },

        initSearchForm: function () {
            Lib.initSearchForm($("#searchForm"), resourcesInfoTable, form);
        },
        initToolBar: function () {
            toolbar = {
                add: function () { // 获取选中数据
                    var url = "/jlw/resourcesInfo/add.do";
                    Common.openDlg(url, "资源管理/新增资源");
                },
                refresh: function () {//刷新
                    searchForm.reset();
                    Lib.doSearchForm($("#searchForm"), resourcesInfoTable, 1);
                },
                search: function () {
                    Lib.doSearchForm($("#searchForm"), resourcesInfoTable, 1);
                },
                allDel: function () {//批量删除
                    var checkStatus = table.checkStatus('resourcesInfoTable')
                        , data = checkStatus.data, ids = "";
                    for (var i = 0; i < data.length; i++) {
                        ids += data[i].resourcesInfoId;
                        if (i < data.length - 1) {
                            ids += ",";
                        }
                    }
                    if ($.isEmpty(ids)) {
                        layer.msg("请选择需要删除的数据!", {
                            offset: ['50%'],
                            icon: 2,
                            time: 1500 //2秒关闭(如果不配置,默认是3秒)
                        });
                        return;
                    }
                    deleteInfo(ids);
                },
                bindingCourseInfo: function () {//批量绑定课程
                    var checkStatus = table.checkStatus('resourcesInfoTable')
                        , data = checkStatus.data, ids = "";
                    for (var i = 0; i < data.length; i++) {
                        ids += data[i].resourcesInfoId;
                        if (i < data.length - 1) {
                            ids += ",";
                        }
                    }
                    if ($.isEmpty(ids)) {
                        layer.msg("请选择需要绑定章节的数据!", {
                            offset: ['50%'],
                            icon: 2,
                            time: 1500 //2秒关闭(如果不配置,默认是3秒)
                        });
                        return;
                    }
                    bindingCourseInfo(ids);
                }
            };
            $('.ext-toolbar').on('click', function () {
                var type = $(this).data('type');
                toolbar[type] ? toolbar[type].call(this) : '';
            });
        }, initTableTool: table.on('tool(resourcesInfoTable)', function (obj) {
            var data = obj.data;
            if (obj.event === 'edit') {
                var url = "/jlw/resourcesInfo/add.do?resourcesInfoId=" + data.resourcesInfoId;
                Common.openDlg(url, "资源管理/编辑资源");
            } else if (obj.event === "del") {
                deleteInfo(data.resourcesInfoId);
            } else if (obj.event === "previewPage") {
                Lib.downloadFile(data);
            }else if(obj.event === "look"){
                var url = data.resourcesInfoContent;
                var name = data.resourcesInfoName;
                Lib.downloadFile2(url,name);
            }
        })
    }

    function deleteInfo(ids) {
        layer.confirm('是否确定删除数据?', function (index) {
            var ret = Common.postAjax("/jlw/resourcesInfo/deleteCourseSystemOAndUniversities.json", {ids: ids});
            layer.msg(ret.code == 0 ? "删除成功!" : ret.msg, {
                offset: ['50%'],
                icon: ret.code == 0 ? 1 : 2,
                time: 1500 //2秒关闭(如果不配置,默认是3秒)
            }, function () {
                if (ret.code == 0) {
                    Lib.tableRefresh();
                }
            });
        });
    }

    //批量绑定章节
    function bindingCourseInfo(ids) {
        layer.open({
            type: 1,
            title: "批量绑定章节",
            shadeClose: true,
            btn: ['确定', '关闭'],
            btnAlign: 'c',
            area: ['620px', '360px'],
            content: $("#bindingCourseInfo_dialog"),
            success: function (layero, index) {
                $("#bindingCourseInfo_dialog select").val("");
                $("#bindingCourseInfo_dialog .layui-input-inline").css("width", "400px");
                form.render();
            }, yes: function (index) {
                var courseInfoId = $("#bindingCourseInfo_dialog select[name='courseInfoId']").val();
                if ($.isEmpty(courseInfoId)) {
                    layer.msg("请选择归属小结!");
                    return;
                }
                var ret = Common.postAjax("/jlw/resourcesInfo/setCourseInfoId.json", {
                    courseInfoId: courseInfoId,
                    resourcesInfoIds: ids
                });
                layer.msg(ret.code == 0 ? "绑定成功!" : ret.msg, {
                    offset: ['50%'],
                    icon: ret.code == 0 ? 1 : 2,
                    time: 1500 //2秒关闭(如果不配置,默认是3秒)
                }, function () {
                    if (ret.code == 0) {
                        Lib.tableRefresh();
                        layer.close(index);
                    }
                });
            }, btn2: function (index, layero) {
                layer.close(index);
            }
        });
    }

    //选择归属课程 并且根据选择的课程查询章节 resourcesQuestionIdsIsNotNull:查询题目不为空的章节
    form.on('select(select_courseInfoIds)', function (obj) {
        let sourceType = $("select[name='courseInfoId_0']").find('option:selected').attr("status");
        let courseInfoType = 2;//courseInfoType(2 章节,3 节)
        Lib.getCourseInfo($("select[name='courseInfoId_1']"), obj.value,courseInfoType,sourceType, 1);
        $("select[name='courseInfoId_2']").empty();
        layui.form.render();
    });

    //选择归属课程 并且根据选择的课程查询章节
    form.on('select(select_courseInfoIds_Node)', function (obj) {
        let sourceType = $("select[name='courseInfoId_0']").find('option:selected').attr("status");
        let courseInfoType = 3;//courseInfoType(2 章节,3 节)
        Lib.getCourseInfo($("select[name='courseInfoId_2']"), obj.value,courseInfoType,sourceType);
    });
    //选择归属课程 并且根据选择的课程查询章节
    form.on('select(select_courseId)', function (obj) {
        var this_ = $("#bindingCourseInfo_dialog select[name='chapterId']");
        var this_1 = $("#bindingCourseInfo_dialog select[name='courseInfoId']");
        this_.empty();
        this_.append("<option value=''>请选择</option>");
        this_1.empty();
        this_1.append("<option value=''>请选择</option>");
        if (!$.isEmpty(obj.value)) {
            $.each(courseInfoMap[obj.value].children, function (key, v) {
                this_.append("<option value='" + v.courseInfoId + "'>" + v.courseInfoName + "</option>");
            });
        }
        form.render();
    });

    //选择归属课程 并且根据选择的课程查询章节
    form.on('select(select_chapterId)', function (obj) {
        var this_ = $("#bindingCourseInfo_dialog select[name='courseInfoId']");
        this_.empty();
        this_.append("<option value=''>请选择</option>");
        if (!$.isEmpty(obj.value)) {
            $.each(zjMap[obj.value].children, function (key, v) {
                this_.append("<option value='" + v.courseInfoId + "'>" + v.courseInfoName + "</option>");
            });
        }
        form.render();
    });

    //选择归属课程 并且根据选择的课程查询章节
    form.on('select(select_courseInfoIds_)', function (obj) {
        var this_ = $(this).parents("td").next().find("select");
        this_.empty();
        this_.append("<option value=''>请选择</option>");

        $(this).parents("td").next().next().find("select").empty();
        $(this).parents("td").next().next().find("select").append("<option value=''>请选择</option>");
        if (!$.isEmpty(obj.value)) {
            if(!$.isEmpty(courseInfoMap[obj.value])){
                $.each(courseInfoMap[obj.value], function (key, v) {
                    this_.append("<option value='" + v.courseInfoId + "'>" + v.courseInfoName + "</option>");
                });
            }else {
                let sourceType = $(obj.elem).find("option:selected").attr("status");
                var courseInfoChildtList = childCourseList(obj.value,2,sourceType);
                if (!$.isEmpty(courseInfoChildtList)) {
                    courseInfoMap[obj.value] = courseInfoChildtList;
                    $.each(courseInfoChildtList, function (key, v) {
                        this_.append("<option value='" + v.courseInfoId + "'>" + v.courseInfoName + "</option>");
                    });
                }
                selectMap[obj.value] = this_.html();
            }

        }
        form.render();
    });

    //选择归属课程 并且根据选择的课程查询章节
    form.on('select(select_courseInfoIds_1)', function (obj) {
        var this_ = $(this).parents("td").next().find("select");
        this_.empty();
        this_.append("<option value=''>请选择</option>");
        if (!$.isEmpty(obj.value)) {
            if(!$.isEmpty(zjMap[obj.value])){
                $.each(zjMap[obj.value], function (key, v) {
                    this_.append("<option value='" + v.courseInfoId + "'>" + v.courseInfoName + "</option>");
                });
            }else{
                let sourceType = $(obj.elem).parents("td").prevAll('td').find("option:selected").attr("status");;
                var courseInfoChildtChildList = childCourseList(obj.value,3,sourceType);
                if (!$.isEmpty(courseInfoChildtChildList)) {
                    zjMap[obj.value] = courseInfoChildtChildList;
                    $.each(courseInfoChildtChildList, function (key, v) {
                        this_.append("<option value='" + v.courseInfoId + "'>" + v.courseInfoName + "</option>");
                    });
                }
                selectMap[obj.value] = this_.html();
            }


        }
        form.render();
    });

    //选择归属课程 并且根据选择的课程查询章节
    form.on('select(select_courseInfoIds_2)', function (obj) {
        var r = $(this).parents("td").find("input").context.innerHTML.replace(/&nbsp;/g, "");
        $(this).parents("td").find("input").val(r);
        var resourcesInfoId = table.cache['resourcesInfoTable'][$(this).parents("tr").attr("data-index")].resourcesInfoId;
        if (!$.isEmpty(resourcesInfoId)) {
            var ret = Common.postAjax("/jlw/resourcesInfo/edit.json", {
                resourcesInfoId: resourcesInfoId,
                courseInfoId: obj.value
            });
            layer.msg(ret.code == 0 ? "绑定成功!" : ret.msg, {
                offset: ['50%'],
                icon: ret.code == 0 ? 1 : 2,
                time: 1000 //2秒关闭(如果不配置,默认是3秒)
            });
        }
    });

    exports('index', view);

});