invoiceModule.controller('outputReconciliationConfigurationController', ['$log', '$scope', '$q', '$timeout', '$translate', 'outputReconciliationConfiguration', 'SweetAlert', 'outputCommonService', 'messagebox', '$state', function ($log, $scope, $q, $timeout, $translate, outputReconciliationConfiguration, SweetAlert, outputCommonService, messagebox, $state) { var tagRevertArray = _.invert(constant.TagRule); var purchaserSellerArray = _.invert(constant.purchaserSeller); var dateFormat = 'yyyy-MM-dd'; var initGrid = function () { $scope.reconciliationGrid = { bindingOptions: { height: 'gridTable', }, dataSource: new DevExpress.data.CustomStore({ key: "id", load: function (loadOptions) { return outputReconciliationConfiguration.load() .then(function (res) { res.data.data.forEach(function (r) { r.rowCss = "dx-row dx-data-row dx-row-lines dx-column-lines ui-state-disabled"; if (r.tag === 2) { if ($scope.hasReSortPermission) { r.tdCss = "index"; r.rowCss = "dx-row dx-data-row dx-row-lines dx-column-lines sortRow"; } else { r.rowCss = "dx-row dx-data-row dx-row-lines dx-column-lines"; } } }); if ($scope.hasReSortPermission) { $timeout(function () { setSortable(); }, 1000); } return { data: res.data.data, totalCount: res.data.data.length }; }, function (response) { return $q.reject($translate.instant("DataLoadingError")); }); } }), noDataText: $translate.instant('NoDataText'), columnAutoWidth: true, showRowLines: true, showBorders: true, columnChooser: { enabled: true }, searchPanel: { placeholder: $translate.instant("SearchHintText"), visible: true, }, loadPanel: { enabled: false }, onToolbarPreparing: function (e) { var toolbarItems = e.toolbarOptions.items; toolbarItems.unshift({ location: "before", template: "add" }, { location: "before", template: "delete" }, { location: "before", template: "saveSort" }); }, selection: { mode: "single" }, onSelectionChanged: function (e) { $scope.selectedRows = e.selectedRowsData; }, //rowTemplate: 'rowTemplateName', columns: [ { dataField: 'ruleNO', caption: $translate.instant('RuleNo'), cellTemplate: function (container, options) { var data = options.data; try { if (data.tag === 2) { //$(container).addClass("index"); if ($scope.hasReSortPermission) { $("<span class='rule-id' dataid=" + data.id + ">").text(data.ruleNO).appendTo(container); $(container).parent().addClass('sortRow'); } else { $("<span>").text(data.ruleNO).appendTo(container); } } else { $("<span>").text(data.ruleNO).appendTo(container); $(container).parent().addClass('ui-state-disabled'); } } catch (e) { $log.debug(e); } } }, { dataField: 'category', caption: $translate.instant('Category') }, { dataField: 'journalKeywords', caption: $translate.instant('JournalKeywords'), calculateDisplayValue: function (rowData) { return rowData.journalKeywords; } }, { dataField: 'preVoucherNumber', caption: $translate.instant('PreVoucherNumber'), calculateDisplayValue: function (rowData) { return outputCommonService.transferReconciliationSpecial(rowData.preVoucherNumber).text; } }, { dataField: 'vehicleNumber', caption: $translate.instant('VehicleNumber'), calculateDisplayValue: function (rowData) { return outputCommonService.transferReconciliationSpecial(rowData.vehicleNumber).text; } }, { dataField: 'postedBy', caption: $translate.instant('PostedBy'), calculateDisplayValue: function (rowData) { return outputCommonService.transferReconciliationSpecial(rowData.postedBy).text; } }, { dataField: 'fapiaoKeywords', caption: $translate.instant('FapiaoKeywords'), calculateDisplayValue: function (rowData) { return rowData.fapiaoKeywords; } }, { dataField: 'taxRate', caption: $translate.instant('TaxRate'), calculateDisplayValue: function (rowData) { // return rowData.taxRate.formatRate(0); var num = (rowData.taxRate * 100).formatAmount(0); return num + "%"; } }, { dataField: 'purchaserTesla', caption: $translate.instant('PurchaserTesla'), alignment: 'left', calculateDisplayValue: function (rowData) { return $translate.instant(purchaserSellerArray[rowData.purchaserTesla]); } }, { dataField: 'sellerTesla', caption: $translate.instant('SellerTesla'), alignment: 'left', calculateDisplayValue: function (rowData) { return $translate.instant(purchaserSellerArray[rowData.sellerTesla]); } }, { dataField: 'activeStartTime', caption: $translate.instant('ActiveStartTime'), dataType: 'date', format: dateFormat, visible: false }, { dataField: 'activeEndTime', caption: $translate.instant('ActiveEndTime'), dataType: 'date', format: dateFormat, visible: false }, { dataField: 'tag', caption: $translate.instant('Tag'), alignment: 'left', calculateDisplayValue: function (rowData) { return $translate.instant(tagRevertArray[rowData.tag]); } }, { dataField: 'status', caption: $translate.instant('RuleStatus') }, { caption: $translate.instant('Action'), cellTemplate: 'details' } ] }; }; $scope.eventService = { refreshTable: function () { $('#reconciliation-grid').dxDataGrid('instance').refresh(); }, deleteRule: function () { if (!$scope.selectedRows || $scope.selectedRows.length < 1) { SweetAlert.warning($translate.instant('SelectCheck')); return; } var msg = $translate.instant('Confirm') + ' ' + $translate.instant('Delete') + '?'; messagebox.confirm(msg, '', constant.teslaConfirmClassName).then(function (isConfirm) { if (isConfirm) { var id = $scope.selectedRows[0].id; outputReconciliationConfiguration.deleteRule(id).success(function (response) { if (response.result) { $("#reconciliation-grid").dxDataGrid('instance').refresh(); } }).error(function () { SweetAlert.error($translate.instant('CommonFail')); }); } }); }, addOutputReconciliationConfiguration: function () { $scope.editType = constant.Operation.Add; $scope.editModel = {}; }, showRule: function (rule) { $scope.editModel = rule; $scope.editType = constant.Operation.Query; }, saveSort: function () { var ruleIdList = $('.rule-id'); var list = []; $('.rule-id').each(function () { var obj = this; list.push($(obj).attr('dataid')); }); outputReconciliationConfiguration.saveSort(list).success(function (data) { if (data && data.result) { messagebox.success('SaveSuccess'); $scope.eventService.refreshTable(); } }); } }; var setSortable = function () { var fixHelperModified = function (e, tr) { var $originals = tr.children(); var $helper = tr.clone(); $helper.children().each(function (index) { $(this).width($originals.eq(index).width()) }); return $helper; }; var updateIndex = function (e, ui) { var prefix = "RN"; $('.rule-id', ui.item.parent()).each(function (i) { var obj = this; var no = i + 2; $(obj).text(prefix + no); }); }; //#reconciliation-grid .dx-datagrid-rowsview tbody $('#reconciliation-grid .dx-datagrid-rowsview tbody').sortable({ helper: fixHelperModified, stop: updateIndex, //cancel: ".ui-state-disabled" items: '.sortRow' //items: 'tr:not(.ui-state-disabled)', }); $("#reconciliation-grid .sortRow").disableSelection(); }; //检查用户机构权限 var checkUserOrganizationPermissionList = function () { var tempPermission = constant.vatPermission.outputInvoice.reconciliationConfig; var list = []; list.push(tempPermission.queryCode); list.push(tempPermission.deleteCode); list.push(tempPermission.addCode); list.push(tempPermission.editCode); list.push(tempPermission.reSortCode); $scope.hasDeletePermission = false; $scope.hasAddPermission = false; $scope.hasEditPermission = false; $scope.hasReSortPermission = false; $scope.$root.checkUserPermissionList(list).success(function (data) { var permissionMap = data; if (!data[tempPermission.queryCode]) { $state.go('noPermissionPage'); return; } if (data[tempPermission.reSortCode]) { $scope.hasReSortPermission = true; } if (data[tempPermission.deleteCode]) { $scope.hasDeletePermission = true; } if (data[tempPermission.addCode]) { $scope.hasAddPermission = true; } if (data[tempPermission.editCode]) { $scope.hasEditPermission = true; } initGrid(); //设置表格高度 $timeout(function () { $scope.setInvoiceGridHeight(); }, 500); }); }; (function () { // 加权限 checkUserOrganizationPermissionList(); })(); } ]);