infrastructureModule.controller('docManageController',
    ['$log', '$http', '$q', '$scope', '$translate', '$timeout', 'SweetAlert', '$compile', 'docManageService', '$filter',
        function ($log, $http, $q, $scope, $translate, $timeout, SweetAlert, $compile, docManageService, $filter) {

            $scope.localData = {};
            $scope.pagingOptions = {
                totalItems: 10,  //总数据
            };
            $scope.loadMainData = function () {

                var config = {
                    params: {}
                };
                docManageService.getMainList(config).then(function (data, status, headers) {
                    if (status === 204) {
                        SweetAlert.warning("没有数据可以下载");
                        return;
                    }
                    $scope.dataGridUpdate(data);

                })
            };
            $scope.dataGridUpdate = function (_data) {
                $scope.localData = _data.items;

                $scope.pagingOptions = {
                    totalItems: $scope.localData.length,  //总数据
                };

                $scope.dataGridOptions = {
                    // dataSource: {
                    //     store: $scope.localData.items,
                    //     reshapeOnPush: true
                    // },
                    bindingOptions: {
                        dataSource: 'localData',
                    },
                    // repaintChangesOnly: true,
                    // twoWayBindingEnabled: true,
                    showBorders: true,
                    paging: {
                        enable: true,
                        pageIndex: 0,
                        pageSize: 10
                    },
                    pager: {
                        allowedPageSizes: 5,
                        infoText: "当前 {0}页 /共 {1}页 ({2} 项)",
                        showInfo: true,
                        showNavigationButtons: true,
                        showPageSizeSelector: true,
                        visible: true
                    },
                    searchPanel: {//查询
                        highlightCaseSensitive: true,
                        highlightSearchText: true,
                        searchVisibleColumnsOnly: false,
                        text: "",
                        width: 518,
                        visible: true,
                        placeholder: $translate.instant('Search'),
                    },
                    sorting: {//排序
                        ascendingText: "Sort Ascending",
                        clearText: "Clear Sorting",
                        descendingText: "Sort Descending",
                        mode: "single"
                    },
                    'export': {
                        allowExportSelectedData: false,//允许选择导出
                        customizeExcelCell: null,
                        enabled: true,//允许导出
                        excelFilterEnabled: false,
                        excelWrapTextEnabled: false,
                        fileName: "docManage",//名字
                        ignoreExcelErrors: true,

                    },
                    showRowLines: true,
                    columnAutoWidth: true,
                    allowColumnReordering: true,
                    columns: [
                        {
                            dataField: "id",
                            caption: $translate.instant('DocumentID'),
                            allowHeaderFiltering: true,
                            cellTemplate: function (container, options) {
                                try {
                                    var style = options.data.status == 1 ? '' : 'style="color:#999"';
                                    if (options.data.id) {
                                        $('<span ' + style + '>').text(options.data.id).appendTo(container);
                                    } else {
                                        $('<span>').text("").appendTo(container);
                                    }
                                } catch (e) {
                                    $log.error(e);
                                }
                            }
                        },
                        {
                            dataField: "fileAttr",
                            caption: $translate.instant('DocumentAttr'),
                            allowHeaderFiltering: true,
                            cellTemplate: function (container, options) {
                                try {
                                    var style = options.data.status == 1 ? '' : 'style="color:#999"';
                                    if (options.data.fileAttr) {
                                        $('<span ' + style + '>').text(options.data.fileAttr).appendTo(container);
                                    } else {
                                        $('<span>').text("").appendTo(container);
                                    }
                                } catch (e) {
                                    $log.error(e);
                                }
                            }
                        },
                        {
                            dataField: "fileType",
                            caption: $translate.instant('DocumentType'),
                            allowHeaderFiltering: true,
                            cellTemplate: function (container, options) {
                                try {
                                    var style = options.data.status == 1 ? '' : 'style="color:#999"';
                                    if (options.data.fileType) {
                                        $('<span ' + style + '>').text(options.data.fileType).appendTo(container);
                                    } else {
                                        $('<span>').text("").appendTo(container);
                                    }
                                } catch (e) {
                                    $log.error(e);
                                }
                            }
                        },
                        {
                            dataField: "description",
                            caption: $translate.instant('Explain'),
                            allowHeaderFiltering: true,
                            cellTemplate: function (container, options) {
                                try {
                                    var style = options.data.status == 1 ? '' : 'style="color:#999"';
                                    if (options.data.description) {
                                        $('<span ' + style + '>').text(options.data.description).appendTo(container);
                                    } else {
                                        $('<span>').text("").appendTo(container);
                                    }
                                } catch (e) {
                                    $log.error(e);
                                }
                            }
                        },

                        {
                            dataField: "requiredField",
                            caption: $translate.instant('RequiredFields'),
                            allowHeaderFiltering: true,
                            cellTemplate: function (container, options) {
                                try {
                                    var style = options.data.status == 1 ? '' : 'style="color:#999"';
                                    if (options.data.requiredField) {
                                        $('<span '+style+'>').text(options.data.requiredField.join(",")).appendTo(container);
                                    } else {
                                        $('<span>').text("").appendTo(container);
                                    }
                                } catch (e) {
                                    $log.error(e);
                                }
                            }
                        },

                        {
                            dataField: "creator",
                            caption: $translate.instant('Creator'),
                            allowHeaderFiltering: true,
                            cellTemplate: function (container, options) {
                                try {
                                    var style = options.data.status == 1 ? '' : 'style="color:#999"';
                                    if (options.data.creator) {
                                        $('<span ' + style + '>').text(options.data.creator).appendTo(container);
                                    } else {
                                        $('<span>').text("").appendTo(container);
                                    }
                                } catch (e) {
                                    $log.error(e);
                                }
                            }
                        },
                        {
                            dataField: "updateTime",
                            caption: $translate.instant('UpdateTime'),
                            allowHeaderFiltering: true,

                            cellTemplate: function (container, options) {
                                try {
                                    var style = options.data.status == 1 ? '' : 'style="color:#999"';
                                    if (options.data.updateTime) {
                                        $('<span '+style+'>').text($filter('date')(options.data.updateTime, 'yyyy-MM-dd')).appendTo(container);
                                    } else {
                                        $('<span>').text().appendTo(container);
                                    }
                                } catch (e) {
                                    $log.error(e);
                                }
                            }
                        },
                        {
                            dataField: "status",
                            caption: $translate.instant('State'),
                            allowHeaderFiltering: true,
                            cellTemplate: function (container, options) {
                                try {
                                    if (options.data.status == 1) {
                                        options.data.status = $translate.instant('Enabled');
                                        $('<span>').text(options.data.status).appendTo(container);
                                    } else {
                                        options.data.status = $translate.instant('Disabled');
                                        $('<span style="color:#999">').text($translate.instant('Disabled')).appendTo(container);
                                    }
                                } catch (e) {
                                    $log.error(e);
                                }
                            }
                        },
                        {
                            dataField: "operation",
                            caption: $translate.instant('Operation'),
                            allowHeaderFiltering: false,
                            cellTemplate: function (container, options) {
                                try {
                                    var eventTarget = $('<a style="color:#506bf7;" data-id="'+options.data.id+'" href="javascript:void(0)"><span>'+$translate.instant("Edit")+'</span></a>');
                                    eventTarget.off('click').on('click',function(){
                                        $scope.openEditPop(options.data.id);
                                    });
                                    container.append(eventTarget);
                                } catch (e) {
                                    $log.error(e);
                                }
                            }
                        }
                    ],
                    rowAlternationEnabled: true,  //单双行颜色
                };
            };

            //弹出框
            var openEditPop = function (rowId) {
                if (rowId) {
                    $scope.confirmDocFileType = editDocFileType;
                    $scope.localData.forEach(function (item) {
                        if (item.id == rowId) {
                            $scope.editModel = angular.copy(item);
                            if($scope.editModel.status != 1 || $scope.editModel.status != 0){
                                // 特殊处理状态值,1 = “已启用”, 0 = “已禁用”
                                $scope.editModel.status = item.status == $translate.instant("Enabled") ?  1 : 0;
                            }
                        }
                    });
                }
                else {
                    $scope.confirmDocFileType = createDocFileType;
                    $scope.editModel = {};
                }
                createMultiSelect();
                $('#editPopDialog').modal('show');
            };

            function createMultiSelect() {
                $("#appMultiSelectContainer").html("");
                var htmlTemplate = $('<app-multi-select class="form-control" style="width:320px;"'
                    + ' this-option-map="editRequiredFieldsMap"'
                    + ' this-callback="editRequiredFieldsCallback"'
                    + ' this-default-checked="editModel.requiredField"'
                    + '></app-multi-select>');
                $compile(htmlTemplate)($scope);
                $("#appMultiSelectContainer").append(htmlTemplate);
            }

            //保存 增加档案类型
            var createDocFileType = function () {
                var uploadModel = angular.copy($scope.editModel);
                delete uploadModel.id; //新增文档不需要上传ID
                docManageService.addFileType(uploadModel).then(function (data) {
                    if (data == true) {
                        SweetAlert.success($translate.instant('SaveSuccess'));
                        $scope.loadMainData();
                    } else {
                        SweetAlert.warning($translate.instant('SaveFail'));
                    }
                });
                $('#editPopDialog').modal('hide');
            };

            var editDocFileType = function () {
                var uploadModel = angular.copy($scope.editModel);
                docManageService.editFileType(uploadModel).then(function (data) {
                    if (data == true) {
                        SweetAlert.success($translate.instant('SaveSuccess'));
                        $scope.loadMainData();
                    } else {
                        SweetAlert.warning($translate.instant('SaveFail'));
                    }
                });
                $('#editPopDialog').modal('hide');
            };

            //取消
            var cancelDocFileType = function () {
                console.log("cancelDocFileType")
            };

            $scope.editModel = {
                "id": 0,//主键id
                "fileAttr": "",//档案属性 手写
                "fileTypeId": null,//暂无作用 因档案类型手写
                "fileType": "",//档案类型
                "requiredField": [],//必填字段对应id(先写死) 对应关系以前端为主导
                "requiredFieldJson": "",//后台转换使用
                "description": "",//说明
                "creatorId": 1,//创建人id
                "creator": "",//创建人名字
                "createTime": "2019-02-27T17:53:58.000+08:00",//创建时间
                "updateTime": null,//更新时间
                "status": 0,//'状态(0代表停用,1代表启用)'
                "remarks": ""//备注
            };
            $scope.editRequiredFieldsMap = {
                1: "文件生效日期",
                2: "所属期间",
                3: "到期日",
                4: "实物索引号",
                5: "实物存放地点",
                6: "实物保管人",
                7: "税种"
            };
            $scope.editRequiredFieldsCallback = function (keys, values) {
                $scope.editModel.requiredField = values;
                $scope.editModel.requiredFieldJson = JSON.stringify(values);
            }

            //----------------------taxation----basic-end-------------------------------
            ;(function initialize() {

                $scope.loadMainData();
                //注册方法
                $scope.openEditPop = openEditPop;
                $scope.confirmDocFileType = createDocFileType;
                $scope.cancelDocFileType = cancelDocFileType;

            })();
        }]);