basicDataModule .controller('StandardAccountManageController', ['$scope', '$log', 'SweetAlert', 'keywordmapService', 'uiGridConstants', 'stdAccountService', '$translate', 'orgService', function ($scope, $log, SweetAlert, keywordmapService, uiGridConstants, stdAccountService, $translate, orgService) { 'use strict'; var loadProjectIndustryList = function () { orgService.getProjectIndustrys().success(function (orgData) { $scope.projectIndustryList = orgData; }); }; var defaultSelectStandardAccount = { id: 0, name: '', fullName: '', code: '', parentCode: '', acctLevel: 0, selectValue: ' ' }; var loadstdAccountList = function () { stdAccountService.GetStdAccountList().success(function (data) { data.forEach(function (row) { row.directionStr = $scope.directionMap[row.direction + '']; row.acctPropStr = $scope.acctPropArray[row.acctProp]; row.selectValue = row.code + ' ' + row.fullName; }); var list = data.concat(); list = _.sortBy(list, 'code'); if (list && list.length > 0) { list.splice(0, 0, defaultSelectStandardAccount); } else { list = []; list.push(defaultSelectStandardAccount); } $scope.stdAccountList = list; $scope.gridOptions.data = data; $scope.gridOptions.noData = data.length === 0; $log.debug('keywordmapService.get...'); }); }; var loadKeyWordMapList = function () { keywordmapService.get(1).success(function (data) { $scope.gridOptions.data = data; $scope.gridOptions.noData = data.length === 0; $log.debug('keywordmapService.get...'); }); }; var load = function () { var selectedKeywordMapList = $scope.gridApi.selection.getSelectedRows(); if (selectedKeywordMapList && selectedKeywordMapList.length > 0) { // 选中 stdAccountService.get(selectedKeywordMapList[0].id).success(function (data) { $scope.editModel = data; $scope.isAdd = false; $scope.selectStandardAccount = _.find($scope.stdAccountList, function (num) { return num.code === data.parentCode }); if (!$scope.selectStandardAccount) { $scope.selectStandardAccount = defaultSelectStandardAccount; } $scope.selectDirection = _.find($scope.directionList, function (num) { return num.id === data.direction }); $scope.selectAcctProp = _.find($scope.acctPropList, function (num) { return num.id === data.acctProp }); $scope.selectProjectIndustry = _.find($scope.projectIndustryList, function (num) { return num.id === data.industryID }); $('#addStandardAccountPop').modal('show'); }); } else { $log.debug('please select one keywordMap...'); } }; var changesStdAccountSelect = function () { if ($scope.selectAccount) { $scope.editModel.name = $scope.selectAccount.name; $scope.editModel.stdFullName = $scope.selectAccount.fullName; $scope.editModel.stdCode = $scope.selectAccount.code; } else { $scope.editModel.name = ''; $scope.editModel.stdFullName = ''; $scope.editModel.stdCode = ''; } }; var save = function () { if (!($('#addStandardAccountForm').valid())) { return; } $scope.editModel.isActive = 1; $scope.editModel.ruleType = 2; if ($scope.selectStandardAccount && $scope.selectStandardAccount.code && $scope.selectStandardAccount.code.length > 0) { $scope.editModel.parentCode = $scope.selectStandardAccount.code; $scope.editModel.fullName = $scope.selectStandardAccount.fullName + '-' + $scope.editModel.name; $scope.editModel.acctLevel = $scope.selectStandardAccount.acctLevel + 1; } else { $scope.editModel.acctLevel = 1; $scope.editModel.fullName = $scope.editModel.name; } if ($scope.selectProjectIndustry && $scope.selectProjectIndustry.id) { $scope.editModel.industryID = $scope.selectProjectIndustry.id; } if ($scope.selectDirection && $scope.selectDirection.id) { $scope.editModel.direction = $scope.selectDirection.id; } if ($scope.selectAcctProp && $scope.selectAcctProp.id) { $scope.editModel.acctProp = $scope.selectAcctProp.id; } if ($scope.isAdd) { stdAccountService.add($scope.editModel).success(function (data) { if (!data.result) { var errorList = []; var template = $translate.instant(data.resultMsg); data.data.forEach(function (row) { var error = template.formatObj({ code: row.code, name: row.name }); errorList.push(error); }); showInfo('region', errorList.join(';', errorList), 'addStandardAccountPop'); //SweetAlert.info("region", errorList.join(';', errorList)); //$log.debug("add error", errorList.join(';', errorList)); return; } $('#addStandardAccountPop').modal('hide'); loadstdAccountList(); }); } else { stdAccountService.update($scope.editModel).success(function (data) { if (!data.result) { var errorList = []; var template = $translate.instant(data.resultMsg); data.data.forEach(function (row) { var error = template.formatObj({ code: row.code, name: row.name }); errorList.push(error); }); //SweetAlert.info("region", errorList.join(';', errorList)); showInfo('region', errorList.join(';', errorList), 'addStandardAccountPop'); return; } $('#addStandardAccountPop').modal('hide'); loadstdAccountList(); }); } }; var search = function () { $scope.gridApi.grid.refresh(); }; // 新增 var newModel = function () { $scope.editModel = {}; $scope.isAdd = true; $scope.selectStandardAccount = defaultSelectStandardAccount; $scope.selectDirection = null; $scope.selectAcctProp = null; resetErrorStatus(); $('#addStandardAccountPop').modal('show'); }; var resetErrorStatus = function () { var currentForm = $('#addStandardAccountForm'); $.each(currentForm.children(), function (index, element) { // 去除div $(element).children('div').removeClass('has-error'); }); validator.resetForm(); }; var resources = { codeRequired: $translate.instant('StandardAccountCodeRequired'), nameRequired: $translate.instant('StandardAccountNameRequired'), selectDirectionRequired: $translate.instant('StandardAccountRequired'), selectAcctPropRequired: $translate.instant('StandardAccountAccountTypesRequired') }; var validator = $("#addStandardAccountForm").validate({ errorClass: "has-error", rules: { code: { required: true }, name: { required: true }, selectDirection: { required: true }, selectAcctProp: { required: true } }, messages: { code: { required: resources.codeRequired }, name: { required: resources.nameRequired }, selectDirection: { required: resources.selectDirectionRequired }, selectAcctProp: { required: resources.selectAcctPropRequired } }, errorPlacement: function (error, element) { setErrorStyle(error, element); } }); var setErrorStyle = function (error, element) { if (element.hasClass('has-error')) { element.parent().addClass('has-error'); error.insertAfter(element); error.addClass('label'); // error.addClass('label-danger'); } }; var modifyIsActive = function () { var selectedKeywordMapList = $scope.gridApi.selection.getSelectedRows(); if (selectedKeywordMapList && selectedKeywordMapList.length > 0) { SweetAlert.swal({ title: $translate.instant('ComfirmDisable') + '?', text: $translate.instant('ComfirmStandardAccountDisable').formatObj({ code: selectedKeywordMapList[0].code, fullName: selectedKeywordMapList[0].fullName }), type: "warning", showCancelButton: true, confirmButtonColor: "#DD6B55", confirmButtonText: $translate.instant('Confirm'), cancelButtonText: $translate.instant('Cancel'), closeOnConfirm: false, closeOnCancel: true }, function (isConfirm) { if (isConfirm) { // 选中 var model = selectedKeywordMapList[0]; model.isActive = !model.isActive; stdAccountService.isactive(model).success(function (data) { SweetAlert.info('info', 'log success'); if (!data.result) { SweetAlert.info('info', $translate.instant(data.resultMsg)); } else { SweetAlert.swal($translate.instant('ComfirmDisable') + '!', $translate.instant("ComfirmDisableSuccess"), "success"); loadstdAccountList(); } }); } }); } else { $log.debug('please select one keywordMap...'); } }; var showInfo = function (title, msg, id) { if (id) { $('#' + id).modal('hide'); } SweetAlert.swal({ title: title, text: msg, type: "info", showCancelButton: false, confirmButtonClass: "btn-info", confirmButtonText: $translate.instant('Confirm'), closeOnConfirm: true }, function () { if (id) { $('#' + id).modal('show'); } }); }; (function initialize() { $log.debug('StandardAccountManageControllerController.ctor()...'); $scope.stdAccountList = []; $scope.search = search; $scope.newModel = newModel; $scope.changesStdAccountSelect = changesStdAccountSelect; $scope.save = save; $scope.load = load; $scope.modifyIsActive = modifyIsActive; $scope.acctPropArray = ['', $translate.instant('StandardAccountAcctPropAsset'), $translate.instant('StandardAccountAcctPropDebt'), $translate.instant('StandardAccountAcctPropCommon'), $translate.instant('StandardAccountAcctPropInterest'), $translate.instant('StandardAccountAcctPropCost'), $translate.instant('StandardAccountAcctPropProfitAndLoss')]; $scope.directionMap = { '1': $translate.instant('StandardAccountDebit'), '-1': $translate.instant('StandardAccountCredit') }; $scope.selectStandardAccount = defaultSelectStandardAccount; $scope.selectDirection = null; $scope.selectAcctProp = null; $scope.directionList = [ { id: 1, name: $translate.instant('StandardAccountDebit') }, { id: -1, name: $translate.instant('StandardAccountCredit') }, ]; $scope.acctPropList = [ { id: 1, name: $translate.instant('StandardAccountAcctPropAsset') }, { id: 2, name: $translate.instant('StandardAccountAcctPropDebt') }, { id: 3, name: $translate.instant('StandardAccountAcctPropCommon') }, { id: 4, name: $translate.instant('StandardAccountAcctPropInterest') }, { id: 5, name: $translate.instant('StandardAccountAcctPropCost') }, { id: 6, name: $translate.instant('StandardAccountAcctPropProfitAndLoss') }, ]; loadProjectIndustryList(); loadstdAccountList(); //loadKeyWordMapList(); $scope.gridOptions = { rowHeight: 45, selectionRowHeaderWidth: 45, enableFullRowSelection: true, enableRowSelection: true, enableSorting: false, enableFiltering: false, enableColumnMenus: false, enableRowHeaderSelection: false, multiSelect: false, enableHorizontalScrollbar: uiGridConstants.scrollbars.NEVER, columnDefs: [ { field: 'code', name: $translate.instant('StandardAccountCode'), width: '20%', headerCellClass: 'header-cell-class', cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.code}}</span></div>' }, { field: 'name', name: $translate.instant('StandardAccountName'), width: '30%', headerCellClass: 'header-cell-class', cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.name}}</span></div>' }, { field: 'parentName', name: $translate.instant('StandardAccountSuperiorAccount'), width: '30%', headerCellClass: 'header-cell-class', cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.parentName}}</span></div>' }, { field: 'directionStr', name: $translate.instant('StandardAccountDirection'), width: '10%', headerCellClass: 'header-cell-class', cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.directionStr}}</span></div>' }, { field: 'acctPropStr', name: $translate.instant('StandardAccountAccountTypes'), width: '10%', headerCellClass: 'header-cell-class', cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.acctPropStr}}</span></div>' } ], onRegisterApi: function (gridApi) { $scope.gridApi = gridApi; $scope.gridApi.grid.registerRowsProcessor($scope.singleFilter, 200); } }; $scope.singleFilter = function (renderableRows) { var matcher = new RegExp($scope.searchText); renderableRows.forEach(function (row) { var match = false; ['code', 'name', 'parentName', 'directionStr', 'acctPropStr'].forEach(function (field) { if (row.entity[field].match(matcher)) { match = true; } }); if (!match) { row.visible = false; } }); return renderableRows; }; })(); } ]);