taxDocumentManageModule.controller('DocumentManageController', ['$scope', '$log', 'loginContext', '$translate', 'region', '$cookies'
    , 'apiInterceptor', 'Upload', 'dataImportService', 'SweetAlert', 'vatImportService'
    , '$timeout', '$q', 'enums', 'uiGridConstants', '$interval', 'vatSessionService', 'citSessionService', 'vatOperationLogService'
    , 'projectService', 'vatCommonService', 'productService', '$state', '$stateParams',
function ($scope, $log, loginContext, $translate, region, $cookies, apiInterceptor, Upload, dataImportService
    , SweetAlert, vatImportService, $timeout, $q, enums, uiGridConstants, $interval, vatSessionService, citSessionService
    , vatOperationLogService, projectService, vatCommonService, productService, $state, $stateParams) {
    'use strict';

    console.log("DocumentManageController start.....");

    $scope.monthList = [$translate.instant('Month01'),
    $translate.instant('Month02'),
    $translate.instant('Month03'),
    $translate.instant('Month04'),
    $translate.instant('Month05'),
    $translate.instant('Month06'),
    $translate.instant('Month07'),
    $translate.instant('Month08'),
    $translate.instant('Month09'),
    $translate.instant('Month10'),
    $translate.instant('Month11'),
    $translate.instant('Month12')
    ];


    var taxTypeCode = {
        FinanceLost: '1100', //资产损失
        ResearchCost: '1250', //研发费用
        TaxAudit: '7050' //税务稽查
    };

    var taxCategoryCode = {
        CIT: '1000', //企业所得税申报
        SpecialTaxIssue: '7000' //特殊税务事项

    };


    var taxDocumentCode = {
        PayTaxReport: '7051',//纳税提醒函报告
        CheckNotification: '7052', //税务检查通知书
        WorkingPaper: '7053', //税务稽查工作底稿        
        OriginalRecord: '7054' //税务稽查原始记录       
    };


    var fileExtension = {
        TXT: "text/plain",
        CSV: "csv",
        XLS: "xls",
        XLSX: "xlsx",
        DOC: "doc",
        DOCX: "docx"
    };

    var taxDocGridHeaderType = {
        ORG: 1,
        DocType: 2
    };

    //var setDate = [
    //  [vatSessionService.month, vatSessionService.project.year],
    //  [vatSessionService.month, vatSessionService.project.year]
    //];

    var setDate = [
      [1, 2016],
      [12, 2016]
    ];

    var taxDocTypeDto = {
        value: '',
        name: '',
        rowIndex: 0,
        columnIndex: 0
    }

    // TODO: Remove the default org setting
    var DEFAULT_ORGID = 'fc3246a4-2158-4539-a4c0-a7d498a38098';
    var DEFAULT_TotalMark = '-1';
    //var minDate = [1, vatSessionService.project.year];
    //var maxDate = [12, vatSessionService.project.year + 5];
    var minDate = [1, 2016];
    var maxDate = [12, 2016 + 5];
    var selectedDocCategroyCode = '1000'; //概览: 文档类别Tab,选中的文档类别
    var selectedDocTypeCode = ''; //概览: GridView点击cell,选择的文档类型
    //var selectedDocNameCode = '';
    var apiTokenObj = $cookies.getObject('AtmsApiToken');
    var webHost = apiTokenObj.api_host;
    var uploadFileDtoList = []; //上传文件: DocumentManage数据的List

    $scope.periodId = -1;
    $scope.taxDocumentCategory = [];
    $scope.org = {};
    $scope.taxCategoryNav = []; //文档类别,TaxDocumentCategory表中第一级
    $scope.selectedDocType = {};
    $scope.selectedDocName = {};
    $scope.selectedOrges = []; //文件上传,选中的机构
    $scope.orgTreeView = {};
    $scope.selectedUploadFiles = []; //上传文件:右侧文件图标
    $scope.fileUploadToServer = [];//上传文件:选中的上传文件
    $scope.uploadFilesCards = [];
    $scope.documentDetail = [];//查看文档,详细数据  
    $scope.showProjectCode = true;
    $scope.showAmount = true;
    $scope.documentQueryDetail = [];//详细页面:GridView数据
    $scope.detailSelectedDocCategory = [];//详细: 选中的文档类别
    $scope.detailSelectedOrg = [];//详细:选中的机构
    $scope.selectedMultiDocTypes = []; //上传文件,文档类型多选框
    $scope.docViewDocTypeName = ''; //查看文档,上传文件的文档类型label


    $scope.taxDocTypeGridViewDataSource = {
        header: [],
        row: []
    };

    $scope.orgGridViewDataSource = {
        header: [],
        row: []
    };


    var fileCardConstructor = function (img, header) {
        this.img = img;
        this.header = header;
    };


    //isHeader: 列头
    //isRowHeader:行头
    var taxDocGridRowConstructor = function (type, isHeader, isRowHeader, value) {
        var taxDocTypeDto = {
            value: '',
            name: '',
            rowIndex: 0,
            columnIndex: 0
        };
        var _name = '';
        if (type === taxDocGridHeaderType.DocType) {
            if (isHeader) {
                if (value === "OrgId") {
                    _name = $translate.instant('OrganizationDesc');
                }
                else {
                    var docType = _.where($scope.taxDocumentCategory, { codeLevel: 2, code: value })[0];
                    if (!_.isNull(docType) && !_.isUndefined(docType)) {
                        _name = docType.name;
                    }
                }

            }
            else {
                if (isRowHeader) {
                    var getOrg = _.where($scope.org, { id: value })[0];
                    if (!_.isNull(getOrg) && !_.isUndefined(getOrg)) {
                        _name = getOrg.name;
                    }
                }
                else {
                    _name = value;
                }
            }


            taxDocTypeDto.value = value;
            taxDocTypeDto.name = _name;
            return taxDocTypeDto;
        }

        if (type === taxDocGridHeaderType.ORG) {

        }


    }


    //code-->Code: 文档类型 TaxDocumentCategory中的二级
    //nameCode-->nameCode: 文档名称类型 TaxDocumentCategory中的三级
    var documentManageContructor = function (id, documentTypeId, code, fileId, serviceTypeId, projectId
        , periodId, organizationId, expiredFrom, expiredTo, nameCode, projectCode, amount) {
        this.id = id;
        this.documentTypeId = documentTypeId;
        this.code = code;
        this.fileId = fileId;
        this.serviceTypeId = serviceTypeId;
        this.projectId = projectId;
        this.periodId = periodId;
        this.organizationId = organizationId;
        this.expiredFrom = expiredFrom;
        this.expiredTo = expiredTo;
        this.nameCode = nameCode;
        this.projectCode = projectCode;
        this.amount = amount;
    }


    //跳转到CIT报表
    var lintToItem = function (rowEntity) {
        if (selectedDocCategroyCode === taxCategoryCode.CIT) {
            
            var id = '';
            var tempId = '';
            var name = '';
            var selectedReportCode = '';
            var hasDocument = false;
            var docNum = 0;
            if (rowEntity.taxTypeCode === taxTypeCode.FinanceLost) {
                //资产损失信息表
                id = 'd9dd4ee9-f89e-44d0-8c79-82b5e66a80ed';
                tempId = 'e66814d4-afb6-4a6d-8a56-f5fb6a28598b';
                name = '%E8%B5%84%E4%BA%A7%E6%8D%9F%E5%A4%B1%E4%BF%A1%E6%81%AF%E8%A1%A8';
                selectedReportCode = constant.reportCode.FinanceLostReport;
                hasDocument = true;
                docNum = 2;
            }

            if (rowEntity.taxTypeCode === taxTypeCode.ResearchCost) {
                //本年度研发费用信息表
                id = '71aff095-53e1-44e7-b7eb-9dd05984b47a';
                tempId = '38781660-4d77-4fc1-ae33-a9ffee246310';
                name = '%E6%9C%AC%E5%B9%B4%E5%8F%91%E7%94%9F%E7%A0%94%E5%8F%91%E8%B4%B9%E7%94%A8%E4%BF%A1%E6%81%AF%E8%A1%A8';
                selectedReportCode = constant.reportCode.ResearchCost;
                hasDocument = true;
                docNum = 3;
            }

            if (!PWC.isNullOrEmpty(id) && !PWC.isNullOrEmpty(tempId) && !PWC.isNullOrEmpty(name)) {
                $('#modalDocumentDetail').modal('hide');
                $timeout(function () {
                    $state.go('cit.importData.documentList', {
                        docId: id,
                        docTemplateId: tempId,
                        docName: name,
                        treeTypeCode: rowEntity.taxTypeCode,
                        selectedReportCode: selectedReportCode,
                        hasDocument: hasDocument,
                        docNum: docNum
                    });
                }, 1000);

            }                  
        }


        if (selectedDocCategroyCode === taxCategoryCode.SpecialTaxIssue) {

        }
    };


    //跳转到任务事项
    var linkToTaxTaskIssue = function (rowEntity) {
        var codeValue = null;
        if (rowEntity.taxDocumentCode === taxDocumentCode.PayTaxReport
            || rowEntity.taxDocumentCode === taxDocumentCode.CheckNotification) {
            codeValue = '001';
        }

        if (rowEntity.taxDocumentCode === taxDocumentCode.WorkingPaper
            || rowEntity.taxDocumentCode === taxDocumentCode.OriginalRecord) {
            codeValue = '002';
        }

        $('#modalDocumentDetail').modal('hide');
        setTimeout(function () {
            $state.go('taxTaskManage', { code: codeValue });
        }, 1000);

    };

    //删除文档
    var deleteDocument = function (rowEntity) {
        dataImportService.deleteDocument(rowEntity.documentId).success(function (re) {
            if (re.result) {
                $('#modalDocumentDetail').modal('hide');
                getTaxDocumentsPivot(selectedDocCategroyCode);
            }
        });
    };

    var deleteDocumentQueryDetail = function (rowEntity) {
        dataImportService.deleteDocument(rowEntity.documentId).success(function (re) {
            if (re.result) {
                onClickSearchDetail();
            }
        });
    }


    //初始化各类GridView
    var initTaxGridView = {
        initGridDocumentDetail: function () {
            var columns = [];
            //var actionTemplate = "<div class='document-detail-action'>"
            //                    + " <span ng-click='grid.appScope.lintToItem(row.entity)'>关联事项</span>"
            //                    + " <span ng-click='grid.appScope.deleteDocument(row.entity)'>删除</span>"
            //                    + " </div>";

            columns.push({ name: $translate.instant('Number'), cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.index}}</span></div>', width: '5%' },
                         { name: $translate.instant('DocumentName'), cellTemplate: '<div class="ui-grid-cell-contents"><a href="#" ng-click="grid.appScope.openDocumentFile(row.entity)">{{row.entity.taxDocumentName}}</a></div>', width: '20%' },
                         { name: $translate.instant('DocumentProjectCode'), cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.projectCode}}</span></div>', visible: false },
                         { name: $translate.instant('Amount'), cellTemplate: '<div class="ui-grid-cell-contents" style="text-align:right"><span>{{row.entity.amount}}</span></div>', visible: false },
                         { name: $translate.instant('DocumentExpiredDuration'), cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.expiredDuration}}</span></div>', width: '20%' },
                         { name: $translate.instant('UploadFileTime'), cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.uploadTimeString}}</span></div>' },
                         { name: $translate.instant('UploadUserName'), cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.uploadUserName}}</span></div>' },
                         { name: $translate.instant('LogComments'), cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.comments}}<span></div>' }
                         //{ name: $translate.instant('Action'), cellTemplate: actionTemplate }                   
                       );

            $scope.gridDocumentDetailOptions = {
                enableColumnResizing: true,
                rowHeight: constant.UIGrid.rowHeight,
                selectionRowHeaderWidth: constant.UIGrid.rowHeight,
                enableSorting: false,
                enableColumnMenus: false,
                virtualizationThreshold: 50,//默认加载50条数据,避免在数据展示时,只显示前面4条
                enableHorizontalScrollbar: uiGridConstants.scrollbars.NEVER,
                enableVerticalScrollbar: uiGridConstants.scrollbars.enableVerticalScrollbar,
                columnDefs: columns,
                onRegisterApi: function (gridApi) {
                    $scope.gridDocumentApi = gridApi;
                    // call resize every 500 ms for 5 s after modal finishes opening - usually only necessary on a bootstrap modal
                    $interval(function () {
                        $scope.gridDocumentApi.core.handleWindowResize();
                    }, 500, 60 * 60 * 8);
                }
            }

            $scope.documentDetail = [];
        },

        initGridDocumentQuery: function () {
            var columns = [];
            var linkToIssueDesc = $translate.instant('LinkToIssue');
            var deleteDesc = $translate.instant('Delete');
            var actionTemplate = "<div class='document-detail-action'>"
                                + " <span ng-click='grid.appScope.lintToItem(row.entity)'>" + linkToIssueDesc  + "</span>"
                                + " <span ng-click='grid.appScope.deleteDocumentQueryDetail(row.entity)'>" + deleteDesc + "</span>"
                                + " </div>";

            columns.push({ name: $translate.instant('OrgName'), cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.orgName}}<span></div>', width: '20%' },
                         { name: $translate.instant('DocumentName'), cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.taxDocumentName}}<span></div>', width: '10%' },
                         { name: $translate.instant('TaxTypeName'), cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.taxTypeName}}<span></div>', width: '10%' },
                         //{ name: $translate.instant('DocumentProjectCode'), cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.projectCode}}<span></div>' },
                         //{ name: $translate.instant('Amount'), cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.amount}}<span></div>' },
                         { name: $translate.instant('DocumentExpiredDuration'), cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.expiredDuration}}<span></div>', width: '15%' },
                         { name: $translate.instant('UploadFileTime'), cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.uploadTimeString}}<span></div>' },
                         { name: $translate.instant('UploadUserName'), cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.uploadUserName}}<span></div>' },
                         { name: $translate.instant('LogComments'), cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.comments}}<span></div>' },
                         { name: $translate.instant('Action'), cellTemplate: actionTemplate }
                       );

            $scope.gridDocumentQueryDetailOptions = {
                enableColumnResizing: true,
                rowHeight: constant.UIGrid.rowHeight,
                selectionRowHeaderWidth: constant.UIGrid.rowHeight,
                enableSorting: false,
                enableColumnMenus: false,
                virtualizationThreshold: 50,//默认加载50条数据,避免在数据展示时,只显示前面4条
                enableHorizontalScrollbar: uiGridConstants.scrollbars.NEVER,
                enableVerticalScrollbar: uiGridConstants.scrollbars.enableVerticalScrollbar,
                columnDefs: columns,
                onRegisterApi: function (gridApi) {
                    $scope.gridDocumentQueryApi = gridApi;
                    // call resize every 500 ms for 5 s after modal finishes opening - usually only necessary on a bootstrap modal
                    $interval(function () {
                        $scope.gridDocumentQueryApi.core.handleWindowResize();
                    }, 500, 60 * 60 * 8);
                }
            }

            $scope.documentQueryDetail = [];

        }
    };


    //初始化各类下拉框
    var initDropDown = {
        //文档类型单选框
        initDocType: function (categoryCode) {
            var docTypeDataSource = _.where($scope.taxDocumentCategory, { codeLevel: 2, parentCode: categoryCode });
            $("#ddlDocType").dxSelectBox({
                dataSource: docTypeDataSource,
                valueExpr: 'code',
                displayExpr: 'name',
                height: "35px",
                onValueChanged: function (e) {
                    //initDropDown.initDocName(e.value);
                },
                onSelectionChanged: function (e) {
                    if (!_.isNull(e.selectedItem)) {
                        $scope.selectedDocType = e.selectedItem;
                        $scope.showProjectCode = e.selectedItem.code === taxTypeCode.ResearchCost ? true : false;
                        $scope.showAmount = e.selectedItem.code === taxTypeCode.FinanceLost ? true : false;
                        initDropDown.initDocName(e.selectedItem.code);
                    }
                }
            });
            //$('#ddlDocType').dxSelectBox('instance').option(docTypeDataSource);
            //$('#ddlDocType').dxSelectBox('instance').option('value', docTypeDataSource[0].code);

        },

        //文档类型多选框
        initDocTypeMulti:function(categoryCode){
            var docTypeDataSource = _.where($scope.taxDocumentCategory, { codeLevel: 2, parentCode: categoryCode });            
            $scope.docTypeMultiOptions = {
                bindingOptions: {
                    value: 'selectedMultiDocTypes',
                },
                valueExpr: "code",
                displayExpr: "name",
                placeholder: "",
                showClearButton: false,
                dataSource: docTypeDataSource,
                treeView: {
                    dataSource: docTypeDataSource,
                    dataStructure: "plain",
                    keyExpr: "code",
                    displayExpr: "name",
                    selectByClick: true,
                    selectNodesRecursive: false,
                    showCheckBoxesMode: "normal",
                    selectionMode: "multiple",
                    height: "200px",
                    onContentReady: function (e) {
                        $scope.docTypeMultiComponent = e.component;
                        //if ($scope.docTypeMultiComponent) {
                        //    $scope.docTypeMultiComponent.unselectAll();
                        //}
                  
                    },                 
                    onItemSelectionChanged: function (args) {                     
                        var value = args.component.getSelectedNodesKeys();
                        $scope.selectedMultiDocTypes = value;
                        var getFinanceLost = _.find($scope.selectedMultiDocTypes, function (el) { return el === taxTypeCode.FinanceLost; });
                        var getResearchCost = _.find($scope.selectedMultiDocTypes, function (el) { return el === taxTypeCode.ResearchCost; });
                        $scope.showProjectCode = !_.isUndefined(getResearchCost) ? true : false;
                        $scope.showAmount = !_.isUndefined(getFinanceLost) ? true : false;
                        initDropDown.initDocName($scope.selectedMultiDocTypes);
                    }
                }
            };
           
            
        },

        //文档名称单选框
        initDocName: function (docTypeCode) {
            var docTypeDataSource = [];
            $scope.selectedMultiDocTypes.forEach(function (item, index) {
                var getDocument = _.where($scope.taxDocumentCategory, { codeLevel: 3, parentCode: item });
                docTypeDataSource = docTypeDataSource.concat(getDocument);
            });
            //if (docTypeCode !== '') {
            //    docTypeDataSource = _.where($scope.taxDocumentCategory, { codeLevel: 3, parentCode: docTypeCode });
            //}

            $("#ddlDocName").dxSelectBox({
                dataSource: docTypeDataSource,
                valueExpr: 'code',
                displayExpr: 'name',
                height: "35px",
                onValueChanged: function (e) {
                },
                onSelectionChanged: function (e) {
                    $scope.selectedDocName = e.selectedItem;
                    console.log("选中的文档名称:");
                    console.log($scope.selectedDocName);
                }
            });


            //docNameDataSource = _.where($scope.taxDocumentCategory, { codeLevel: 3, parentCode: docTypeCode });
            //$('#ddlDocName').dxSelectBox('instance').option('dataSource', docNameDataSource);          
        },

        //机构多选框
        initOrg: function () {
            var initalYearTree = function () {
                if ($scope.orgTreeView) {
                    $scope.fromSyncSelection = true;
                    $scope.orgTreeView.unselectAll();
                    $scope.fromSyncSelection = false;
                }
            };

            //$scope.selectedYears = [year];

            $scope.orgFilterOptions = {
                bindingOptions: {
                    value: 'selectedOrges',
                },
                valueExpr: "id",
                displayExpr: "name",
                placeholder: "",
                showClearButton: false,
                dataSource: $scope.org,
                treeView: {
                    dataSource: $scope.org,
                    dataStructure: "plain",
                    keyExpr: "id",
                    displayExpr: "name",
                    selectByClick: true,
                    selectNodesRecursive: false,
                    showCheckBoxesMode: "normal",
                    selectionMode: "multiple",
                    height: "200px",
                    onContentReady: function (e) {
                        $scope.orgTreeView = e.component;
                        initalYearTree();
                    },
                    onItemSelectionChanged: function (args) {
                        if (!$scope.fromSyncSelection) {
                            var value = args.component.getSelectedNodesKeys();
                            $scope.selectedOrges = value;
                            console.log("选中的机构:");
                            console.log($scope.selectedOrges);
                        }
                    }
                }
            };
        },

        //详细页面,文档类别多选框
        initDetailDocCategory: function () {
            $scope.detailDocCategoryOption = {
                bindingOptions: {
                    value: 'detailSelectedDocCategory',
                },
                valueExpr: "id",
                displayExpr: "name",
                placeholder: "",
                showClearButton: false,
                dataSource: $scope.taxCategoryNav,
                treeView: {
                    dataSource: $scope.taxCategoryNav,
                    dataStructure: "plain",
                    keyExpr: "id",
                    displayExpr: "name",
                    selectByClick: true,
                    selectNodesRecursive: false,
                    showCheckBoxesMode: "normal",
                    selectionMode: "multiple",
                    height: "200px",
                    onContentReady: function (e) {
                        //$scope.orgTreeView = e.component;
                        // initalDetailDocCategoryTree();
                    },
                    onItemSelectionChanged: function (args) {
                        if (!$scope.fromSyncSelection) {
                            var value = args.component.getSelectedNodesKeys();
                            $scope.detailSelectedDocCategory = value;
                        }
                    }
                }
            };
        },


        //详细页面,机构类别多选框
        initDetailOrg: function () {
            $scope.detailOrgOptions = {
                bindingOptions: {
                    value: 'detailSelectedOrg',
                },
                valueExpr: "id",
                displayExpr: "name",
                placeholder: "",
                showClearButton: false,
                dataSource: $scope.org,
                treeView: {
                    dataSource: $scope.org,
                    dataStructure: "plain",
                    keyExpr: "id",
                    displayExpr: "name",
                    selectByClick: true,
                    selectNodesRecursive: false,
                    showCheckBoxesMode: "normal",
                    selectionMode: "multiple",
                    height: "200px",
                    onContentReady: function (e) {
                    },
                    onItemSelectionChanged: function (args) {
                        var value = args.component.getSelectedNodesKeys();
                        $scope.detailSelectedOrg = value;
                    }
                }
            };
        }
    };


    //清除下拉框、日期等数据
    var clearData = {
        clearUploadWindowValue: function () {
            $scope.selectedUploadFiles = [];
            $scope.fileUploadToServer = [];
            $scope.selectedMultiDocTypes = [];
            uploadFileDtoList = [];
            $scope.showProjectCode = false;
            $scope.showAmount = false;
            $('#projecCode').val('');
            $("#amount").val('');
            $('#txtRemark').val('');
            //$('#ddlDocType').dxSelectBox('instance').option('value', '');
           
            $('#ddlDocName').dxSelectBox('instance').option('value', '');

           
        },

        cleareDetailPage: function () {
            $scope.detailSelectedDocCategory = [];
            $scope.detailSelectedOrg = [];
            $scope.gridDocumentQueryDetailOptions.data = [];
            $('#detailDateExpiredFrom').dxDateBox('instance').option('value', null);
            $('#detailDateExpiredTo').dxDateBox('instance').option('value', null);
        }

    };


    //初始化各类日期选择框
    var initDatePick = {
        initGridDatePick: function () {
            //初始化month-picker
            $('#period-picker').rangePicker({
                minDate: minDate,
                maxDate: maxDate,
                setDate: setDate,
                months: $scope.monthList,
                ConfirmBtnText: $translate.instant('Confirm'),
                CancelBtnText: $translate.instant('ButtonCancel')
            }).on('datePicker.show', function (ev, picker) {
                console.log('datePicker.show');
            }).on('datePicker.done', function (e, result) {
                //开始月份
                var startMonth = result[0][0];
                //结束月份
                var endMonth = result[1][0];

                console.log(startMonth + "   " + endMonth);
            });
        },

        initUploadDatePick: function (id) {
            $('#' + id).dxDateBox({
                type: "date",
                showClearButton: true,
                value: new Date()
            });
        }
    };


    var onClickTab = function (e) {
        console.log(e);
        //文档类型
        if (e.currentTarget.id === "tabBtDoc") {
            //切换Tab样式
            $("#tabBtDoc").removeClass("tab-inactive").addClass("tab-active");
            $("#tabBtCompany").removeClass("tab-active").addClass("tab-inactive");
            //切换内容样式
            $("#tabDoc").removeClass('left-nav-hidden').addClass('left-nav-show');
            $("#tabCompany").removeClass('left-nav-show').addClass('left-nav-hidden');
            //选中第一个li
            $("#tabDoc>ul>li").removeClass("li-item-active");
            $("#tabDoc>ul>li:first-child").addClass("li-item-active");

            $("#contentTb").show();
            $("#orgTb").hide();
        }


        //机构
        if (e.currentTarget.id === "tabBtCompany") {
            //切换Tab样式
            $("#tabBtCompany").removeClass("tab-inactive").addClass("tab-active");
            $("#tabBtDoc").removeClass("tab-active").addClass("tab-inactive");
            //切换内容样式
            $("#tabCompany").removeClass('left-nav-hidden').addClass('left-nav-show');
            $("#tabDoc").removeClass('left-nav-show').addClass('left-nav-hidden');
            //选中第一个li
            $("#tabCompany>ul>li").removeClass("li-item-active");
            $("#tabCompany>ul>li:first-child").addClass("li-item-active");

            $("#orgTb").show();
            $("#contentTb").hide();

        }
    };


    var onClickDocCategory = function (e, category) {
        $("#tabDoc>ul>li").removeClass("li-item-active");
        e.target.className = 'li-item-active';
        selectedDocCategroyCode = category.code;
        if (selectedDocCategroyCode === taxCategoryCode.CIT || selectedDocCategroyCode === taxCategoryCode.SpecialTaxIssue) {
            if (selectedDocCategroyCode === taxCategoryCode.CIT) {
                $('#period-picker').rangePicker({
                    setDate: [
                  [1, 2016],
                  [12, 2016]
                    ]
                })
            }
            else if (selectedDocCategroyCode === taxCategoryCode.SpecialTaxIssue) {
                $('#period-picker').rangePicker({
                    setDate: [
                  [1, 2018],
                  [12, 2018]
                    ]
                })
            }
            getTaxDocumentsPivot(selectedDocCategroyCode);
        }
    }

    var getUploadFiles = function () {
        dataImportService.getAllUploadFiles().success(function (re) {
            if (re.result) {
                console.log("getAllUploadFiles success");
            }
        });
    };


    var getTaxDocumentsPivot = function (docCategoryCode) {
        $scope.taxDocTypeGridViewDataSource = {
            header: [],
            row: []
        };


        dataImportService.getTaxDocumentsPivot(docCategoryCode).success(function (re) {
            if (re.result) {
                var header = re.data.header;
                var row = re.data.row;
                //初始化Header
                header.forEach(function (item, index) {
                    var caption = item.caption;
                    var itemHeader = taxDocGridRowConstructor(taxDocGridHeaderType.DocType, true, null, caption);
                    $scope.taxDocTypeGridViewDataSource.header.push(itemHeader);
                });

                row.forEach(function (item, index) {
                    var rowIndex = index;
                    var rowData = item.itemArray;
                    var currentRow = [];
                    rowData.forEach(function (colData, colIndex) {
                        var itemColumn = colIndex === 0 ? taxDocGridRowConstructor(taxDocGridHeaderType.DocType, false, true, colData)
                            : taxDocGridRowConstructor(taxDocGridHeaderType.DocType, false, false, colData);
                        itemColumn.rowIndex = rowIndex
                        itemColumn.columnIndex = colIndex;
                        if (itemColumn.value === DEFAULT_TotalMark) {
                            itemColumn.name = $translate.instant('TotalDocumentNumber');
                        }
                        currentRow.push(itemColumn);

                    });
                    $scope.taxDocTypeGridViewDataSource.row.push(currentRow);
                })

                console.log("getTaxDocumentsPivot success");
            }
        });
    }

    var loadPageData = function () {
        dataImportService.getAllTaxDocumentCategory().success(function (re) {
            if (re.result) {
                $scope.taxDocumentCategory = re.data;
                $scope.taxCategoryNav = _.where($scope.taxDocumentCategory, { codeLevel: 1 });
                dataImportService.getOrginaztionById(DEFAULT_ORGID).success(function (re) {
                    if (re.result) {
                        $scope.org = re.data;
                        initDropDown.initDetailDocCategory();
                        initDropDown.initDetailOrg();
                        //加载页面时,默认选中文档类型的第一个li
                        setTimeout(function () {
                            if ($scope.selectID) {
                                $('#' + $scope.selectID).trigger('click');
                                $('#' + $scope.selectID).addClass('li-item-active');
                            } else {
                                $("#tabDoc>ul>li:first-child").trigger('click');
                                $("#tabDoc>ul>li:first-child").addClass('li-item-active');
                            }

                        }, 500);
                        //getTaxDocumentsPivot(selectedDocCategroyCode);
                    }
                });
            }
        });


    }


    var showUpload = function (isFromDocView) {
        if (selectedDocCategroyCode === '') {
            selectedDocCategroyCode = _.where($scope.taxDocumentCategory, { codeLevel: 1 })[0].code;
        }

        $scope.selectedMultiDocTypes = [];
        initDropDown.initDocType(selectedDocCategroyCode);
        initDropDown.initDocTypeMulti(selectedDocCategroyCode);
        initDropDown.initDocName('');
        initDropDown.initOrg();
        clearData.clearUploadWindowValue();
        initDatePick.initUploadDatePick('dateExpiredFrom');
        initDatePick.initUploadDatePick('dateExpiredTo');

        var docTypeMultiDropDownInstance = $("#docTypeMultiDropDown").dxTreeView('instance');
        if (!_.isUndefined(docTypeMultiDropDownInstance)) {
            docTypeMultiDropDownInstance.unselectAll();
        }
          
        if (isFromDocView) {
            $('#ddlMultiDocType').hide();
            $('#docViewDocType').show();
            $scope.showProjectCode = selectedDocTypeCode === taxTypeCode.ResearchCost ? true : false;
            $scope.showAmount = selectedDocTypeCode === taxTypeCode.FinanceLost ? true : false;

            //文档类型多选
            var getDocViewTypeItem = _.where($scope.taxDocumentCategory, { code: selectedDocTypeCode })[0];
            $scope.docViewDocTypeName = getDocViewTypeItem.name;
            $scope.selectedMultiDocTypes.push(getDocViewTypeItem.code);
            initDropDown.initDocName(getDocViewTypeItem.code);

            //文档类型单选框
            //$('#ddlDocType').dxSelectBox('instance').option('value', selectedDocTypeCode);
            //$('#ddlDocType').dxSelectBox('instance').option('disabled', true);
        }
        else {
            //$('#ddlDocType').dxSelectBox('instance').option('disabled', false);
            $('#ddlMultiDocType').show();
            $('#docViewDocType').hide();
        }


        $('#modalUploadFile').modal('show');

    };


    var showDocumentDetail = function (typeCode, rogId) {
        //$scope.documentDetail = [];
        initTaxGridView.initGridDocumentDetail();
        dataImportService.getDocumentManageList(typeCode, rogId).success(function (re) {
            if (re.result) {
                var data = re.data;
                var showDocDetailAmountColumn = false;
                var showDocDetailProjectCode = false;
                if (data[0]) {
                    var firstTypeCode = data[0].taxTypeCode;
                    if (firstTypeCode === taxTypeCode.FinanceLost) {
                        showDocDetailAmountColumn = true;
                        showDocDetailProjectCode = false;
                    }

                    if (firstTypeCode === taxTypeCode.ResearchCost) {
                        showDocDetailProjectCode = true;
                        showDocDetailAmountColumn = false;
                    }
                }

                data.forEach(function (item, index) {
                    var dtExpiredFrom = new Date(item.expiredFrom);
                    var dtExpiredTo = new Date(item.expriedTo);
                    var uploadTime = new Date(item.uploadTime);
                    item.expiredDuration = dtExpiredFrom.formatDateTime('yyyy-MM-dd') + ' ' + $translate.instant('Duration') + ' '
                                            + dtExpiredTo.formatDateTime('yyyy-MM-dd');
                    item.uploadTimeString = uploadTime.formatDateTime('yyyy-MM-dd');
                    item.amount = PWC.round(item.amount, 2);
                    $scope.documentDetail.push(item);
                });

                var linkName = '';
                var linkMethod = '';
                if (selectedDocCategroyCode === taxCategoryCode.CIT) {
                    linkName = $translate.instant('LinkToProject');
                    linkMethod = 'lintToItem';
                }
                if (selectedDocCategroyCode === taxCategoryCode.SpecialTaxIssue) {
                    linkName = $translate.instant('LinkToIssue');
                    linkMethod = 'linkToTaxTaskIssue';
                }


               
                var actionTemplate = "<div class='ui-grid-cell-contents document-detail-action'>"
                                    + " <span ng-click='grid.appScope." + linkMethod + "(row.entity)' title='" + linkName + "'><i class='fa fa-link'></i></span>"
                                    + " <span ng-click='grid.appScope.deleteDocument(row.entity)' title='" + $translate.instant('Delete') + "'><i class='fa fa-trash'></i></span>"
                                    + " </div>";


                var projectColumn = _.where($scope.gridDocumentDetailOptions.columnDefs, { name: $translate.instant('DocumentProjectCode') })[0];
                var amountColumn = _.where($scope.gridDocumentDetailOptions.columnDefs, { name: $translate.instant('Amount') })[0];
                if (!_.isUndefined(projectColumn) && !_.isUndefined(amountColumn)) {
                    projectColumn.visible = showDocDetailProjectCode;
                    amountColumn.visible = showDocDetailAmountColumn;
                }

                $scope.gridDocumentDetailOptions.columnDefs.push({ name: $translate.instant('Action'), cellTemplate: actionTemplate });
                $scope.gridDocumentDetailOptions.data = $scope.documentDetail;
                $('#modalDocumentDetail').modal('show');
            }
        });
    };

    //点击浏览按钮
    var uploadFiles = function (files) {
        $scope.selectedUploadFiles = [];
        $scope.f = files;
        if (files && files.length) {
            angular.forEach($scope.f, function (file) {
                $scope.fileUploadToServer.push(file);
                var fileType = file.name.substring(file.name.indexOf('.') + 1);
                var pic = "";
                if (fileType === fileExtension.DOC || fileType === fileExtension.DOCX) {
                    pic = "word.png";
                }
                else if (fileType === fileExtension.XLSX || fileType === fileExtension.XLS) {
                    pic = "excel.png";
                }
                else {
                    pic = "txt.png";
                }

                var fileDto = new fileCardConstructor("/app-resources/images/docManage/" + pic, file.name);
                $scope.selectedUploadFiles.push(fileDto);
            });
        }
    };


    //上传文件到Server
    var uploadFileToServer = function (files) {
        //uploadFileDtoList = [];
        if (files.length === 0) {
            SweetAlert.warning($translate.instant('SelectUploadFileRequired'));
            return;
        }

        if (files && files.length) {
            var uploadUrl = webHost + '/api/v1/documentManage/uploadDocuments';
            //var code = $("#ddlDocType").dxSelectBox("instance").option('value');
            var code = $scope.selectedMultiDocTypes[0];//数据库不支持多个文档类型,只去选中的第一项内容
            var nameCode = $("#ddlDocName").dxSelectBox("instance").option('value');
            var expireFrom = $("#dateExpiredFrom").dxDateBox("instance").option('value');
            var expireTo = $("#dateExpiredTo").dxDateBox("instance").option('value');
            var projectCode = $('#projecCode').val();
            var amount = $('#amount').val();
            if (_.isNull(code) || _.isNull(nameCode)) {
                SweetAlert.warning($translate.instant('DocTypeDocNameRequired'));
                return;
            }

            for (var i = 0; i < files.length; i++) {
                var file = files[i];
                if (!file.$error) {
                    var fileGuid = PWC.newGuid();
                    var tempFileName = fileGuid + '.dat';
                    var token = $('input[name="__RequestVerificationToken"]').val();
                    var docDto = new documentManageContructor(PWC.newGuid(), 1, code, fileGuid, enums.serviceType.CIT, ''
                                  , $scope.periodId, DEFAULT_ORGID, expireFrom, expireTo, nameCode, projectCode, amount);
                    uploadFileDtoList.push(docDto);

                    Upload.upload({
                        url: uploadUrl,
                        data: {
                            cancel: false,
                            filename: file.name,
                            tempFileName: tempFileName,
                            file: file,
                            period: $scope.period,
                            fileGuid: fileGuid,
                            expireTo: expireTo
                        },
                        resumeChunkSize: 100000,
                        headers: {
                            'Access-Control-Allow-Origin': '*',
                            Authorization: apiInterceptor.tokenType + ' ' + apiInterceptor.apiToken(),
                            from: 'TaxAdmin' + '@cn.pwc.com'
                        },
                        __RequestVerificationToken: token,
                        withCredentials: true
                    }).then(function (resp) {
                        if (resp.data.result) {
                            console.log("uploadDocumentSuccess");
                            uploadDocumentSuccess(uploadFileDtoList);
                        }
                        console.log(resp);
                    });
                }
            }
        }
    };


    var uploadDocumentSuccess = function (uploadFileDtoList) {
        dataImportService.addDoucmentInfor(uploadFileDtoList).success(function (re) {
            if (re.result) {
                console.log("start to addDoucmentInfor");
                $('#modalUploadFile').modal('hide');
                getTaxDocumentsPivot(selectedDocCategroyCode);
                SweetAlert.success($translate.instant('UploadDocumentSuccess'));

            }
        });
    };


    //打开、下载文件
    var openDocumentFile = function (rowEntity) {
        var filePath = rowEntity.fileFullPath;
        var fileName = rowEntity.fileName;//rowEntity.fileName;

        var queryParams = {
            filePath: filePath,
            fileName: fileName
        };
        dataImportService.downloadDocuments(queryParams).success(function (data, status, headers) {
            var octetStreamMime = 'application/octet-stream';
            var contentType = headers('content-type') || octetStreamMime;
            if (window.navigator.msSaveBlob) {

                var blob = new Blob([data], {
                    type: contentType
                });
                navigator.msSaveBlob(blob, fileName);
            } else {
                var urlCreator = window.URL || window.webkitURL || window.mozURL || window.msURL;
                if (urlCreator) {
                    var a = document.createElement('a');
                    var blob = new Blob([data], {
                        type: contentType
                    });
                    var url = urlCreator.createObjectURL(blob);
                    a.href = url;
                    a.target = '_blank';
                    a.download = fileName;//"ddddd.xlsx";//fileName;
                    document.body.appendChild(a);
                    a.click();
                }
            }
        }).error(function () {
            SweetAlert.error($translate.instant('PleaseContactAdministrator'));
        });

    };


    //概览: gridview点击cell
    var onClickDocTypeCell = function (e, obj) {
        //只有默认机构可以点击cell
        if ($scope.taxDocTypeGridViewDataSource.row[obj.rowIndex][0].value !== DEFAULT_ORGID) {
            return;
        }

        var header = $scope.taxDocTypeGridViewDataSource.header[obj.columnIndex];
        selectedDocTypeCode = header.value;
        if (header.value === taxTypeCode.ResearchCost //研发费用
            || header.value === taxTypeCode.FinanceLost //资产损失
            || header.value === taxTypeCode.TaxAudit) {//税务稽查
            showDocumentDetail(header.value, DEFAULT_ORGID);
        }
    };


    //详细:查询
    var onClickSearchDetail = function () {
        $scope.documentQueryDetail = [];
        var queryPara = {
            documentCategoryIds: $scope.detailSelectedDocCategory,
            orgIds: $scope.detailSelectedOrg,
            expiredFrom: $('#detailDateExpiredFrom').dxDateBox('instance').option('value'),
            expiredTo: $('#detailDateExpiredTo').dxDateBox('instance').option('value')
        };

        dataImportService.queryDocumentManage(queryPara).success(function (re) {
            if (re.result) {
                console.log(re.data);
                var data = re.data;
                data.forEach(function (item, index) {
                    var dtExpiredFrom = new Date(item.expiredFrom);
                    var dtExpiredTo = new Date(item.expriedTo);
                    var uploadTime = new Date(item.uploadTime);
                    item.expiredDuration = dtExpiredFrom.formatDateTime('yyyy-MM-dd') + ' ' + $translate.instant('Duration') + ' '
                                            + dtExpiredTo.formatDateTime('yyyy-MM-dd');
                    item.uploadTimeString = uploadTime.formatDateTime('yyyy-MM-dd');

                    $scope.documentQueryDetail.push(item);
                });

                $scope.gridDocumentQueryDetailOptions.data = $scope.documentQueryDetail;

            }
        });
    };


    var showSummary = function () {
        $('#main').show();
        $('#detailMain').hide();
        $('#mainTab').removeClass('header-troggle-item-inactive').addClass('header-troggle-item-active');
        $('#detailTab').removeClass('header-troggle-item-active').addClass('header-troggle-item-inactive');
    };


    var showDetail = function () {
        clearData.cleareDetailPage();
        $('#detailMain').show();
        $('#main').hide();
        $('#detailTab').removeClass('header-troggle-item-inactive').addClass('header-troggle-item-active');
        $('#mainTab').removeClass('header-troggle-item-active').addClass('header-troggle-item-inactive');
        onClickSearchDetail();
    };


    //设置CitSessionService中的project对象,为跳转到CIT项目做准备
    var setCitSessionServiceProject = function () {
        var logUser = {
            ID: "66933E7B-DA75-4B2E-B7D6-AB65DCA20D50",
            UserName: "Admin",
        };


        var reset = function () {
            var date = new Date();
            var m = date.getMonth();
            if (m <= 0) {
                m = 1;
            }
            this.month = m;
        };

        return {
          
            project: {
                "index": 24,
                "id": "896e96d6-4849-4a47-a1e8-f7424e645f26",
                "name": "XXX金融股份有限公司(深圳)分公司(2016)",
                "year": 2016,
                "code": "123456789441",
                "clientCode": "pwc",
                "isActive": true,
                "createTime": "2018-01-10T18:21:04.08+08:00",
                "updateTime": "2018-01-10T18:21:04.08+08:00",
                "regionID": "440300",
                "industryID": "14",
                "ruleType": 1,
                "organizationID": "5d17b9f2-d5d2-452c-ae67-8364b6e1e412",
                "dbName": "a1600003",
                "serviceTypeID": "6",
                "haveCreateProject": true,
                "yearDisplay": 2016,
                "projectStatusDisplay": "进行中",
                "serviceIcon": "fa fa-building",
                "color": "#a32020",
                "organizationName": "XXX银行股份有限公司总行",
                "serviceTypeName": "所得税",
                "industryName": "银行及其他金融服务业",
                "enterpriseAccountSetID": "bf4d4685-3c9d-4408-ab97-5b4dd780fdb8",
                "templateGroupID": "3A660A74-DBD7-4FE6-AC18-448962FA8954",
                "startPeriod": 1,
                "endPeriod": 12,
                "projectStatusList": {
                    "1": 30,
                    "6": 10,
                    "12": 10
                },
                "importSubStatus": null,
                "workflow": null,
                "regionName": "深圳",
                "finalStatus": "../../../app-resources/images/overview/zh-CN/04.png",
                "taxAmount": "481278978.02",
                "prepadidTaxAmount": "1",
                "taxRate": 25,
                "periodDate": "2016",
                "modelAbnormal": false,
                "riskWarning": false,
                "reportAbnormal": false,
                "citDataProcessMockData": [
                    {
                        "id": 1,
                        "name": "更新标准科目余额表",
                        "status": "toUpdate",
                        "text": "需更新",
                        "tasklevel": 1,
                        "parentId": 0,
                        "hasButton": true,
                        "ngClassCol": "",
                        "seqNo": 1
                    },
                    {
                        "id": 2,
                        "name": "生成报表",
                        "status": "unstarted",
                        "text": "未开始",
                        "tasklevel": 1,
                        "parentId": 0,
                        "hasButton": false,
                        "ngClassCol": "",
                        "seqNo": 2
                    },
                    {
                        "id": 3,
                        "name": "- 财务报表",
                        "status": "toUpdate",
                        "text": "需更新",
                        "tasklevel": 2,
                        "parentId": 2,
                        "hasButton": true,
                        "ngClassCol": "",
                        "seqNo": 3
                    },
                    {
                        "id": 4,
                        "name": "- 所得税季度预缴表",
                        "status": "unstarted",
                        "text": "未开始",
                        "tasklevel": 2,
                        "parentId": 2,
                        "hasButton": false,
                        "ngClassCol": "",
                        "seqNo": 4
                    },
                    {
                        "id": 5,
                        "name": "· 第一季度预缴表",
                        "status": "completed",
                        "text": "已生成",
                        "tasklevel": 3,
                        "parentId": 4,
                        "hasButton": true,
                        "ngClassCol": "",
                        "seqNo": 5
                    },
                    {
                        "id": 6,
                        "name": "· 第二季度预缴表",
                        "status": "unstarted",
                        "text": "未开始",
                        "tasklevel": 3,
                        "parentId": 4,
                        "hasButton": true,
                        "ngClassCol": "",
                        "seqNo": 5
                    },
                    {
                        "id": 7,
                        "name": "· 第三季度预缴表",
                        "status": "noData",
                        "text": "无数据",
                        "tasklevel": 3,
                        "parentId": 4,
                        "hasButton": true,
                        "ngClassCol": "",
                        "seqNo": 5
                    },
                    {
                        "id": 8,
                        "name": "· 第四季度预缴表",
                        "status": "noData",
                        "text": "无数据",
                        "tasklevel": 3,
                        "parentId": 4,
                        "hasButton": true,
                        "ngClassCol": "",
                        "seqNo": 5
                    },
                    {
                        "id": 9,
                        "name": "-年度工作底稿",
                        "status": "unstarted",
                        "text": "未开始",
                        "tasklevel": 2,
                        "parentId": 2,
                        "hasButton": true,
                        "ngClassCol": "",
                        "seqNo": 6
                    },
                    {
                        "id": 10,
                        "name": "-年度汇算清缴",
                        "status": "unstarted",
                        "text": "未开始",
                        "tasklevel": 2,
                        "parentId": 2,
                        "hasButton": true,
                        "ngClassCol": "",
                        "seqNo": 7
                    },
                    {
                        "id": 11,
                        "name": "模型分析",
                        "status": "completed",
                        "text": "已生成",
                        "tasklevel": 1,
                        "parentId": 0,
                        "hasButton": true,
                        "ngClassCol": "",
                        "seqNo": 8
                    }
                ],
                "hasWarning": true
            },
            projects: [],
            dataChanged: false,
            logUser: logUser,
            year: 2016,
            month: 1,
            reset: reset
        }
    };

    (function initialize() {

        $scope.selectID = null;
        if ($stateParams && $stateParams.id) {
            $scope.selectID = $stateParams.id;
        }

        $scope.onClickTab = onClickTab;
        $scope.showUpload = showUpload;
        $scope.onClickDocCategory = onClickDocCategory;
        $scope.uploadFiles = uploadFiles;
        $scope.onClickDocTypeCell = onClickDocTypeCell;
        $scope.uploadFileToServer = uploadFileToServer;
        $scope.openDocumentFile = openDocumentFile;
        $scope.showDocumentDetail = showDocumentDetail;
        $scope.lintToItem = lintToItem;
        $scope.deleteDocument = deleteDocument;
        $scope.showDetail = showDetail;
        $scope.showSummary = showSummary;
        $scope.onClickSearchDetail = onClickSearchDetail;
        $scope.deleteDocumentQueryDetail = deleteDocumentQueryDetail;
        $scope.linkToTaxTaskIssue = linkToTaxTaskIssue;


        initDatePick.initUploadDatePick('detailDateExpiredFrom');
        initDatePick.initUploadDatePick('detailDateExpiredTo');
        initTaxGridView.initGridDocumentDetail();
        initTaxGridView.initGridDocumentQuery();
        initDatePick.initGridDatePick();
        loadPageData();
        var citSessionProjectData = setCitSessionServiceProject();
        citSessionService.project = citSessionProjectData.project;
        citSessionService.logUser = citSessionProjectData.logUser;
        citSessionService.year = citSessionProjectData.year;
        citSessionService.month = citSessionProjectData.month;
        citSessionService.isCRBankDemo = false;

        //修复多个modal依次弹出时叠加的问题
        $(document).on('show.bs.modal', '.modal', function () {
            var zIndex = 1040 + (10 * $('.modal:visible').length);
            $(this).css('z-index', zIndex);
            setTimeout(function () {
                $('.modal-backdrop').not('.modal-stack').css('z-index', zIndex - 1).addClass('modal-stack');
            }, 0);
        });

    })();

}]);