invoiceModule.controller('amountCheckManualInputController', ['$scope', '$log', '$timeout', '$translate', 'messagebox', 'vatOutputInvoiceManageService', function ($scope, $log, $timeout, $translate, messagebox, vatOutputInvoiceManageService) { var initControls = function () { $scope.configOptions = { finalAmountOption: { width: "100%", //placeholder: $translate.instant("InputPlaceholder"), bindingOptions: { value: 'editModel.finalAmount' }, onFocusIn: function () { if ($scope.editModel.finalAmount && !isNaN($scope.editModel.finalAmount.replace(/,/g, '')) && $scope.editModel.finalAmount != 'NaN') { $scope.editModel.finalAmount = $scope.editModel.finalAmount.replace(/,/g, ''); } }, onFocusOut: function () { if (!isNaN($scope.editModel.finalAmount) && $scope.editModel.finalAmount != 'NaN') { $scope.editModel.finalAmount = ($scope.editModel.finalAmount * 1).formatAmount(2); } }, onInitialized: function () { if ($scope.editModel.finalAmount && !isNaN($scope.editModel.finalAmount) && $scope.editModel.finalAmount != 'NaN') { $scope.editModel.finalAmount = ($scope.editModel.finalAmount * 1).formatAmount(2); } } }, reasonOption: $scope.reasonDataSource }; $scope.validateOption = {}; $scope.validateOption.finalAmountOption = { validationRules: [{ type: "required", message: $translate.instant('FinalAmountRequired') }, { type: 'custom', validationCallback: $scope.checkFinalAmountCustom }] }; }; $scope.checkFinalAmountCustom = function (options) { if (isNaN(options.value.replace(/,/g, '')) || options.value == 'NaN') { options.rule.message = $translate.instant('FinalAmountShouldBeNumber'); return false; } else if (options.value.replace(/,/g, '') * 1 <= 0 || options.value.replace(/,/g, '') * 1 >= $scope.invoiceQuota / 1.17) { options.rule.message = $translate.instant('FinalAmountRangeCheck'); return false; } else { return true; } } //关闭弹窗口 $scope.hidePopPanel = function () { $scope.$parent.isOpen = false; $scope.$dismiss({ $value: 'cancel' }); }; var tempValue = ""; $scope.checkFinalAmountKeyUp = function () { if ($scope.isShowInput && isNaN($scope.editModel.finalAmount)) { $scope.editModel.finalAmount = tempValue; return; } else { tempValue = $scope.editModel.finalAmount; } }; $scope.checkFinalAmountKeyPress = function () { if ($scope.isShowInput && isNaN($scope.editModel.finalAmount)) { $scope.editModel.finalAmount = tempValue; return; } }; //保存 $scope.saveManualInput = function () { var dxResult = DevExpress.validationEngine.validateGroup($('#finalAmountForm').dxValidationGroup("instance")).isValid; if (!dxResult) { return; } if (_.isEmpty($scope.editModel.reasonList)) { messagebox.warning('ReasonRequired'); return; } var reasonList = _.chain($scope.editModel.reasonList).pairs().filter(function (x) { return x[1] === true; }).pluck('0').value(); if (_.isEmpty(reasonList)) { messagebox.warning('ReasonRequired'); return; } if (_.isEmpty($scope.editModel.evidenceFiles)) { messagebox.warning('EvidenceFilesRequired'); return; } $scope.$parent.model.manualInput = { finalAmount: $scope.editModel.finalAmount.replace(/,/g, ''), reasonList: reasonList, evidenceFiles: $scope.editModel.evidenceFiles }; if ($scope.isShowInput) { $scope.$parent.model.finalAmount = Number(Number($scope.editModel.finalAmount.replace(/,/g, '')).toFixed(2)); } else { $scope.$parent.model.finalAmount = $scope.$parent.model.shipmentAmount; } if (_.isFunction($scope.refreshParent)) { $scope.refreshParent(); } $scope.$parent.isOpen = false; $scope.$dismiss({ $value: 'cancel' }); }; $scope.$watch('$parent.$parent.$parent.uploadFileOption.files', function (newValue, oldValue) { if (newValue && newValue != oldValue) { $scope.editModel.evidenceFiles = $scope.$parent.$parent.$parent.uploadFileOption.files; } }); //上传文件 $scope.uploadFile = function () { $scope.$parent.$parent.$parent.uploadFileType = 'multiple'; $scope.$parent.$parent.$parent.uploadFileOption = { title: 'Upload Evidence Document', uploadButtonText: 'Select Upload Files', files: $scope.editModel.evidenceFiles || [] }; } //删除证据文件 $scope.deleteEvidenceFile = function (fileId) { var fileList = [fileId]; vatOutputInvoiceManageService.deleteEvidenceFile(fileList).then(function () { $scope.$parent.$parent.$parent.uploadFileOption.files = _.filter($scope.$parent.$parent.$parent.uploadFileOption.files, function (item) { return item.data.fileID != fileId; }); }); } $scope.$watch('model', function (newVal, oldVal) { if (newVal.manualInput && !_.isEmpty(newVal.manualInput.reasonList)) { $scope.editModel.finalAmount = newVal.manualInput.finalAmount; $scope.editModel.reasonList = {}; //for (var i = 0; i < newVal.manualInput.reasonList.length; i++) { // //$scope.editModel.reasonList[newVal.manualInput.reasonList[i]] = true; // $scope.editModel.selectedReasonId = newVal.manualInput.reasonList[0]; //} $scope.editModel.selectedReasonId = newVal.manualInput.reasonList[0]; $scope.editModel.evidenceFiles = newVal.manualInput.evidenceFiles; $scope.isShowInput = $scope.editModel.reasonList[$scope.configOptions.reasonOption[0].id] || $scope.editModel.reasonList[$scope.configOptions.reasonOption[2].id]; //$scope.editModel.evidenceFiles = null; } else { $scope.editModel = { finalAmount: '', reasonList: {}, evidenceFiles: null }; } }); $scope.isShowInput = false; $scope.toggleInput = function (reasonName, id) { for (var key in $scope.editModel.reasonList) { $scope.editModel.reasonList[key] = false; } $scope.editModel.reasonList[id] = true; $scope.isShowInput = $scope.editModel.reasonList[$scope.configOptions.reasonOption[0].id] || $scope.editModel.reasonList[$scope.configOptions.reasonOption[3].id]; }; (function initialize() { $log.debug('amountCheckManualInputController.ctor()...'); $scope.editModel = { finalAmount: '', reasonList: {}, evidenceFiles: null }; vatOutputInvoiceManageService.getInvoiceQuota().then(function (data) { if (data && data.data && data.data.data) { $scope.invoiceQuota = data.data.data; } else { $scope.invoiceQuota = 10000000; } }); initControls(); })(); }]);