vat-goods-mapping.ctrl.js 7.39 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
vatModule.controller('vatGoodsMappingController', ['$scope', '$log', '$timeout', '$q', '$translate', 'loginContext', 'apiInterceptor', 'SweetAlert', 'vatSessionService', 'uiGridConstants', 'enums', 'vatReductionService', 'vatOperationLogService',
function ($scope, $log, $timeout, $q, $translate, loginContext, apiInterceptor, SweetAlert, vatSessionService, uiGridConstants, enums, vatReductionService, vatOperationLogService) {
    'use strict';
    $log.debug('vatGoodsMappingController.ctor()...');

    var isDouble = 0;
    var comment = vatSessionService.project.name + " " + vatSessionService.project.year + "年" + vatSessionService.month + "月";
    //写日志
    $scope.period = vatSessionService.month;
    $scope.moduleid = enums.vatModuleEnum.Import_GoodsMapping;
    var logDto = {
        ID: '',
        OperationName: '',
        ModuleID: $scope.moduleid,
        OperationObject: '',
        OperationType: '',
        OperationContent: '',
        OriginalState: '',
        UpdateState: '',
        CreatorID: vatSessionService.logUser.ID,
        Comment: comment,
        IP: '',
        Period: $scope.period,
    };

    $scope.mappingList = [];
    $scope.stdGoodsList = [
            { StdId: 1, StdName: $translate.instant('GP_TransportationService') },
            { StdId: 2, StdName: $translate.instant('GP_TelecomService') },
            { StdId: 3, StdName: $translate.instant('GP_BuildService') },
            { StdId: 4, StdName: $translate.instant('GP_EstateLeasingService') },
            { StdId: 5, StdName: $translate.instant('GP_LandUseRight') },
            { StdId: 6, StdName: $translate.instant('GP_FinancialService') },
            { StdId: 7, StdName: $translate.instant('GP_LifeService') },
            { StdId: 8, StdName: $translate.instant('GP_InvisibleCapital') },
            { StdId: 9, StdName: $translate.instant('GP_TangibleMovablesService') },
            { StdId: 10, StdName: $translate.instant('GP_GoodsAndRepairService') },
            { StdId: 11, StdName: $translate.instant('Other') }
    ];

    //匹配结果
    $scope.gridLeftOptions = {
        columns: [{ caption: $translate.instant('CustGoodsName'), dataField: "custGoodsName", alignment: 'left', },
              { caption: $translate.instant('StdGoodsName'), dataField: "stdGoodsName", alignment: 'left', }, ],
        bindingOptions: { "dataSource.store.data": "mappingList", },
        dataSource: { store: { type: "array", key: 'id' } },
        selection: { mode: "multiple", showCheckBoxesMode: "always", },
        hoverStateEnabled: true,
        scrolling: { mode: "virtual" },
        noDataText: $translate.instant('AccountVoucher_DataGrid_NoDataText')
        //remoteOperations: { sorting: true, paging: false }, 
        //onSelectionChanged: function (selectedItems) { 
        //    var data = selectedItems.selectedRowsData;
        //    $scope.selectMappIds = [];
        //    if (data.length > 0) {
        //        data.forEach(function (v) {
        //            $scope.selectMappIds.push(v.id);
        //        }); 
        //    }
        //}
    }

    //标准货物名称
    $scope.gridRightOptions = {
        columns: [{
            caption: $translate.instant('StdGoodsNameList'),
            dataField: "StdName",
            alignment: 'left',
        }],
        bindingOptions: {
            "dataSource.store.data": "stdGoodsList"
        },
        dataSource: {
            store: { type: "array", key: 'StdId' }
        },
        remoteOperations: { sorting: true, paging: false },
        hoverStateEnabled: true,

        onRowPrepared: function (e) {
            if (e.rowType == "header") {
                e.rowElement.css("display", 'none');
            }
        },
        onCellClick: function (e) {
            isDouble++;
            setTimeout(function () {
                if (isDouble == 2) {
                    if ($scope.hasEditPermission)
                    {
                        doGoodsMapping(e.value);
                    }                   
                }
                isDouble = 0;
            }, 500);
        }
    }
    var doGoodsMapping = function (value) {
        var dataGrid = $('#gridLeft').dxDataGrid("instance");
        if (dataGrid.getSelectedRowsData().length > 0) {
            var modifyList = [];
            var customerList = [];
            var stdList = [];
            var originalList = [];
            dataGrid.getSelectedRowsData().forEach(function (m) {
                stdList.push(m.stdGoodsName);
                originalList.push(m.custGoodsName + "-" + m.stdGoodsName);
                customerList.push(m.custGoodsName);
                var mapp = m;
                mapp.stdGoodsName = value;
                modifyList.push(mapp);
            });

            logDto.ID = PWC.newGuid();
            logDto.CreateTime = new Date();
            logDto.UpdateTime = new Date();
            if (PWC.isNullOrEmpty(value)) {
                //取消对应
                logDto.OperationObject = customerList.join(",");
                logDto.OperationContent = value;
                logDto.OperationName = $translate.instant('CancelMapping');
                logDto.OperationType = enums.vatLogOperationTypeEnum.GM_CancelMapping;
                logDto.OriginalState = originalList.join(",");
                logDto.UpdateState = customerList.join(",");
            }
            else {
                //手动对应
                logDto.OperationObject = customerList.join(",");
                logDto.OperationContent = stdList.join(",");
                logDto.OperationName = $translate.instant('HandleMapping');
                logDto.OperationType = enums.vatLogOperationTypeEnum.GM_ManualMapping;
                logDto.OriginalState = customerList.join(",");
                logDto.UpdateState = customerList.join(",") + "-" + value;
            }

            vatReductionService.updateGoodsMapping(modifyList).success(function (result) {
                if (result) {
                    vatOperationLogService.addOperationLog(logDto);

                    initGoodsMappingFromDB();
                    dataGrid.refresh();
                    dataGrid.clearSelection();
                }
            }).error(function () {
                SweetAlert.error($translate.instant('PleaseContactAdministrator'));
            });
        }
        else {
            SweetAlert.warning($translate.instant('SelectMappTips'));
        }
    }

    var cancelGoodsMapping = function () {
        doGoodsMapping("");
    }

    function initGoodsMappingFromDB() {
        vatReductionService.getGoodsMappingList().success(function (data) {
            if (data && data.length > 0) {
                $scope.mappingList = data;
            }
        }).error(function () {
            SweetAlert.error($translate.instant('PleaseContactAdministrator'));
        });
    }

    //日志
    $scope.showOperateLogPop = function () {
        $scope.isShowLog = true;
    };

    var getUserPermission = function () {

        var list = [];

        var code = constant.vatPermission.dataManage.goodsMapping.saveCode; 
        list.push(code);

        $scope.$root.checkUserOrganizationPermissionList(list).success(function (data) {
            $scope.hasEditPermission = data[code];
        });
    };

    (function initialize() {
        $log.debug('vatGoodsMappingController.ctor()...');
        getUserPermission();
        $scope.cancelGoodsMapping = cancelGoodsMapping;
        initGoodsMappingFromDB();

    })();
}
]);