define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
    var Controller = {
        index: function () {
            // 初始化表格参数配置
            Table.api.init({
                extend: {
                    index_url: 'department/admin/index',
                    add_url: 'department/admin/add',
                    edit_url: 'department/admin/edit',
                    del_url: 'department/admin/del',
                    multi_url: 'department/admin/multi',
                }
            });
            var table = $("#table");
            //在表格内容渲染完成后回调的事件
            table.on('post-body.bs.table', function (e, json) {
            });
            var columnss=[
                {field: 'state', checkbox: true, },
                // {field: 'id', title: '编号', sortable: true,},
                {field: 'username', title: __('学号'), operate: "LIKE",},
                {field: 'nickname', title: __('姓名'), operate: "LIKE",},
                {field: 'status', title: __("Status"), searchList: {"normal":__('Normal'),"hidden":__('Hidden')}, formatter: Table.api.formatter.status},
                // {field: 'dadmin', title: __('Principal') , operate:false,
                //     formatter: function (value, row, index) {
                //         var str=__('No');
                //         if (value.length == 0)
                //             return str ;
                //         $.each(value,function(i,v){  //arrTmp数组数据
                //             if (v.is_principal==1){
                //                 str=''+__('Yes')+'' ;
                //             }
                //         });
                //         return str ;
                //     }
                // },
                // {field: 'data_scope', title: __('数据范围') , operate:false,
                //     formatter: function (value, row, index) {
                //         var str=__('默认');
                //         if (value==1){
                //             str=''+__('全部')+'' ;
                //         }else if ( row.dadmin.length > 0){
                //             $.each(  row.dadmin,function(i,v){  //arrTmp数组数据
                //                 if (v.is_principal==1){
                //                     str=''+__('部门')+'' ;
                //                 }
                //             });
                //         }
                //         return str ;
                //     }
                // },
                {
                    field: 'department_id',
                    title: __('Department'),
                    visible: false,
                    addclass: 'selectpage',
                    extend: 'data-source="department/index/index" data-field="name"',
                    operate: 'in',
                    formatter: Table.api.formatter.search
                },
                {field: 'cengci_text', title: __('层次'), operate: false,
                    formatter: function (value, row, index) {
                        return  Table.api.formatter.flag.call(this, row.cengci_text, row, index);
                    },
                },
                {field: 'zhuanye_text', title: __('专业'), operate: false,
                    formatter: function (value, row, index) {
                        return  Table.api.formatter.flag.call(this, row.zhuanye_text, row, index);
                    },
                },
                {field: 'dui_text', title: __('队'), operate: false,
                    formatter: function (value, row, index) {
                        return  Table.api.formatter.flag.call(this, row.dui_text, row, index);
                    },
                },
                {
                    field: 'dadmin',
                    title: __('Department'),
                    formatter: function (value, row, index) {
                        if (value.length == 0)
                            return '-' ;
                        var department="";
                        $.each(value,function(i,v){  //arrTmp数组数据
                            if (v.department){
                                department+=department?','+v.department.name:v.department.name;
                            }
                        });
                        return  Table.api.formatter.flag.call(this, department, row, index);
                    }, operate:false
                },
                // {
                //     field: 'groups',
                //     title: __('Group'),
                //     formatter: function (value, row, index) {
                //         if (value.length == 0)
                //             return '-' ;
                //         var groups_text="";
                //         $.each(value,function(i,v){  //arrTmp数组数据
                //             if (v.get_group){
                //                 groups_text+=groups_text?','+v.get_group.name:v.get_group.name;
                //             }
                //         });
                //         return  Table.api.formatter.flag.call(this, groups_text, row, index);
                //     }
                //     , operate:false
                // },
                // {field: 'email', title: __('Email'), operate: "LIKE",},
            ];
            // if (Config.exits_mobile) {
            //     //如果是选择
            //     columnss.push({
            //         field: 'mobile', title: __('Mobile'), operate: "LIKE",
            //     });
            // }
            columnss.push(
                {field: 'createtime', title: __('Create time'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true},
                {field: 'operate', title: __('Operate'), table: table,
                    // events: Table.api.events.operate,
                    formatter: Table.api.formatter.buttons,
                    buttons: [
                        // {
                        //     name: 'principal',
                        //     text: __('Principal'),
                        //     title: __('Principal set'),
                        //     icon: 'fa fa-street-view',
                        //     classname: 'btn btn-xs btn-danger btn-dialog',
                        //     url: 'department/admin/principal',
                        // },
                        {
                            name: 'dispatch',
                            text: '编辑',
                            icon: 'fa fa-pencil',
                            title: '编辑',
                            classname: 'btn btn-success btn-xs btn-magic btn-dialog',
                            url: 'department/admin/edit',
                        },{
                            name: 'dispatch',
                            text: '删除',
                            icon: 'fa fa-trash',
                            title: '删除',
                            classname: 'btn btn-danger btn-xs btn-magic btn-ajax',
                            url: 'department/admin/del',
                            confirm: '确定要删除吗?',
                            success: function (data, ret) {
                                $(".btn-refresh").trigger("click");
                            },
                            error: function (data, ret) {
                                Layer.alert(ret.msg);
                                return false;
                            }
                        }
                    ],
                    // formatter: function (value, row, index) {
                    //     return Table.api.formatter.operate.call(this, value, row, index);
                    // }
                });
            // 初始化表格
            table.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url,
                columns: [columnss],
                //启用固定列
                fixedColumns: true,
                //固定右侧列数
                fixedRightNumber: 1,
                search:false,
                searchFormVisible:true,
                singleSelect : true, //
            });
            // 为表格绑定事件
            Table.api.bindevent(table);
            require(['jstree'], function () {
                //全选和展开
                $(document).on("click", "#checkall", function () {
                    $("#departmenttree").jstree($(this).prop("checked") ? "check_all" : "uncheck_all");
                });
                $(document).on("click", "#expandall", function () {
                    $("#departmenttree").jstree($(this).prop("checked") ? "open_all" : "close_all");
                });
                $('#departmenttree').on("changed.jstree", function (e, data) {
                    console.log(data.selected.join(","));
                    $(".commonsearch-table input[name=department_id]").val(data.selected.join(","));
                    console.log($(".commonsearch-table input[name=department_id]").val()+"@@@@");
                    console.log('222222');
                    table.bootstrapTable('refresh', {});
                    return false;
                });
                $('#departmenttree').jstree({
                    "themes": {
                        "stripes": true
                    },
                    "checkbox": {
                        "keep_selected_style": false,
                    },
                    "types": {
                        "channel": {
                            "icon": false,
                        },
                        "list": {
                            "icon": false,
                        },
                        "link": {
                            "icon": false,
                        },
                        "disabled": {
                            "check_node": false,
                            "uncheck_node": false
                        }
                    },
                    'plugins': ["types", "checkbox"],
                    "core": {
                        "multiple": true,
                        'check_callback': true,
                        "data": Config.departmentList
                    }
                });
            });
        },
        add: function () {
            Controller.api.bindevent();
        },
        principal:function(){
            Controller.api.bindevent();
        },
        edit: function () {
            Controller.api.bindevent();
        },
        api: {
            bindevent: function () {
                Form.api.bindevent($("form[role=form]"));
                // $(document).on("change", "#department_ids", function(){
                //     //变更后的回调事件
                //     var dname=$(this).find("option:selected").first().text()
                //     var nickname=$("#nickname").val();
                //     var a = nickname.indexOf("-");
                //
                //     if (a!=-1){
                //         nickname=nickname.substring(0, a);
                //     }
                //     dname = dname.replace(/\s*/g,"");
                //     nickname+="-"+dname.replace(/ |│|└|├\s*/ig, "");
                //     $("#nickname").val(nickname);
                // });
            },
        }
    };
    return Controller;
});