define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form, undefined) {

    var Controller = {
        index: function () {
            // 初始化表格参数配置
            Table.api.init({
                extend: {
                    index_url: 'import/log/index' + location.search,
                    add_url: 'import/log/add',
                    del_url: 'import/log/del',
                    multi_url: 'import/log/multi',
                    table: 'import_log',
                    import_url: 'import/log/import',
                }
            });

            var table = $("#table");

            // 初始化表格
            table.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url,
                pk: 'id',
                sortName: 'id',
                fixedColumns: true,
                columns: [
                    [
                        {checkbox: true},
                        {field: 'id', title: __('Id')},
                        {field: 'table', title: __('Table')},
                        {field: 'row', title: __('Row')},
                        {
                            field: 'head_type',
                            title: __('head_type'),
                            searchList: {"comment": __('comment'), "name": __('name')},
                            formatter: Table.api.formatter.status
                        },
                        {field: 'path', title: __('Path'), formatter: Table.api.formatter.url},
//                        {field: 'admin_id', title: __('Admin_id')},
                        {
                            field: 'createtime',
                            title: __('Createtime'),
                            operate: 'RANGE',
                            addclass: 'datetimerange',
                            formatter: Table.api.formatter.datetime
                        },
                        {
                            field: 'updatetime',
                            title: __('Updatetime'),
                            operate: 'RANGE',
                            addclass: 'datetimerange',
                            formatter: Table.api.formatter.datetime
                        },
                        {
                            field: 'status',
                            title: __('Status'),
                            searchList: {"normal": __('Normal'), "hidden": __('Hidden')},
                            formatter: Table.api.formatter.status
                        },
                        {
                            field: 'operate',
                            title: __('Operate'),
                            table: table,
                            events: Table.api.events.operate,
                            formatter: Table.api.formatter.operate,
                            buttons: [
                                {
                                    name: 'detail',
                                    text: __('查看'),
                                    title: __('查看'),
                                    classname: 'btn btn-xs btn-primary btn-dialog',
                                    icon: 'fa fa-eye',
                                    extend: 'data-area=\'["1000px","800px"]\'',
                                    url: 'import/log/edit',
                                    callback: function (data) {
                                        Layer.alert("接收到回传数据:" + JSON.stringify(data), {title: "回传数据"});
                                    },
                                    visible: function (row) {
                                        //返回true时按钮显示,返回false隐藏
                                        return true;
                                    }
                                }
                            ]
                        }
                    ]
                ]
            });

            // 为表格绑定事件
            Table.api.bindevent(table);
        },
        add: function () {
            function reset() {
                $("#step").val(0);
                $("#import").hide();
                $("#createtable").hide();
                $("#updatetable").hide();
                var table = $("#table");
                var tableField = $("#tableField");
                tableField.bootstrapTable('destroy');
                table.bootstrapTable('destroy');

                if ($("#c-row").val() && $("#selecthead_type select").val() && $("#selectable select").val() && $("#c-rowpath").val()) {
                    Toastr.success('开始预览结果');
                    $("#submit").trigger("click");
                }
            }

            $("#selectable select").on("change", function () {
                $("#c-newtable").val('')
                reset()
            })

            $("#import").on("click", function () {
                $("#submit").trigger("click");
            })

            $("#c-newtable").on("change", function () {
                $("#selectable select").val("");
                reset()
            })

            $("#c-row").on("change", function () {
                reset()
            })
            $("#c-rowpath").on("change", function () {
                reset()
            })
            $("#selecthead_type select").on("change", function () {
                reset()
            })
            Controller.api.bindevent();
        },
        edit: function () {
            Controller.api.bindevent();
        },

        api: {
            bindevent: function () {
                // Form.api.bindevent($("form[role=form]"));
                Form.api.bindevent($("form[role=form]"), function (data, ret) {
                    console.log(ret)
                    if (ret.data.count) {
                        $("#step").val(1);
                        $("#import").show();
                        Toastr.success(ret.msg);
                    } else {
                        Toastr.error(ret.msg);
                    }
                    if (ret.data.params) {
                        // 初始化表格参数配置
                        var params = ret.data.params
                        Table.api.init({
                            extend: {
                                index_url: 'import/log/preview?' + params,
                                field_url: 'import/log/preview?path=' + ret.data.path,
                            }
                        });

                        var table = $("#table");
                        var tableField = $("#tableField");
                        tableField.bootstrapTable('destroy');
                        table.bootstrapTable('destroy');
                        Fast.api.ajax({
                            url: 'import/log/preview/?columns=1&' + params
                        }, function (data) {
                            console.log(data)
                            var columns = [];
                            $.each(data, function (i, item) {
                                var row;
                                row = {
                                    "field": item.field,
                                    "title": item.title,
                                    "titleTooltip": item.field,
                                    "class": item.class,

                                };
                                if (item.width) row.width = item.width
                                if (item.buttons) row.buttons = eval('(' + item.buttons + ')');
                                if (item.type) row.visible = item.type
                                if (item.visible) row.visible = item.visible
                                if (item.operate) row.operate = item.operate
                                if (item.addclass) row.addclass = item.addclass
                                if (item.table) row.table = eval(item.table)
                                if (item.events) row.events = eval(item.events)
                                if (item.formatter) row.formatter = eval(item.formatter)
                                columns.push(row);
                            });

                            // 初始化表格
                            tableField.bootstrapTable({
                                data: data,
                                fixedColumns: true,
                                pagination: false,//是否分页
                                sidePagination: 'client',//server:服务器端分页|client:前端分页
                                pageSize: 20,//单页记录数
                                search: false, showColumns: false, showToggle: false, showExport: false,
                                columns: [
                                    [
                                        {field: 'field', title: __('匹配值')},
                                        {field: 'fieldName', title: __('字段名')},
                                        {field: 'type', title: __('类型')},
                                        {field: 'title', title: __('注释')},
                                        {field: 'class', title: __('匹配结果')}
                                    ]
                                ]
                            });

                            // 为表格绑定事件
                            Table.api.bindevent(tableField);
                            // 初始化表格
                            table.bootstrapTable({
                                url: $.fn.bootstrapTable.defaults.extend.index_url,
                                fixedColumns: true,
                                pagination: true,//是否分页
                                sidePagination: 'client',//server:服务器端分页|client:前端分页
                                pageSize: 20,//单页记录数
                                dataField: 'rows',
                                columns: columns
                            });

                            // 为表格绑定事件
                            Table.api.bindevent(table);

                        }, function () {
                            return false;
                        });
                        return false;
                    }
                    if (ret.url) {
                        window.location.href = ret.url;
                        return false;
                    }
                });
            }
        }
    };
    return Controller;
});