invoiceModule.controller('invoiceManageMapController', ['InvoiceManageService', '$scope', '$log', '$timeout', 'SweetAlert', '$translate', 'uiGridConstants', 'apiInterceptor', '$interval', '$q', function (InvoiceManageService, $scope, $log, $timeout, SweetAlert, $translate, uiGridConstants, apiInterceptor, $interval, $q) { 'use strict'; //当前页面的常量 //分页的设置 $scope.pagingOptions = { pageIndex: 1, //当前页码 totalItems: 100, //总数据 totalPages: 10,//总页数 maxSize: 10, //分页数字的限制。 pageSize: constant.page.pageSizeArrary[1], //每页多少条数据 pageSizeString: constant.page.pageSizeArrary[1].toString(), }; $scope.translated = { NoData: $translate.instant('NoDataText'), pleaseSelect: $translate.instant("ChoosePlaceholder"), pleaseInput: $translate.instant('InputPlaceholder'), }; $scope.relevanceType = -1; $scope.isFour = false; $scope.isShowModal = false; $scope.queryParam = {}; $scope.selectedInvoice = null; //当前选中的发票 var yeaOrNoSelectItem = [{ 'id': 1, 'value': '是' }, { 'id': 0, 'value': '否' }]; var relevanceDataSource = new DevExpress.data.CustomStore({ load: function (loadOptions) { var pagingDto = { totalCount: null }; pagingDto.pageSize = $scope.pagingOptions.pageSize || 10; pagingDto.pageIndex = $scope.pagingOptions.pageIndex; //$scope.queryParam.isIncludedInTaxAmount = $scope.queryParam.isIncludedInTaxAmount === null ? null : // ($scope.queryParam.isIncludedInTaxAmount === 1 ? true : false); var pagingQueryParams = { QueryParam: $scope.queryParam, PagingDto: $scope.pagingOptions, }; var deferred = $q.defer(); InvoiceManageService.getInvoiceRelevanceDisplayList(pagingQueryParams).success(function (data) { if (data) { $scope.pagingOptions.totalItems = data.pageInfo && data.pageInfo.totalCount; if (data.list && data.list.length > 0) { //将重复的字段设置为空 var newOrderIdentifier = ''; var counter = 0; newOrderIdentifier = data.list[0].orderIdentifier; for (var i = 0; i < data.list.length; i++) { //将发票来源不是“原料”的订单数据设置为————— if (data.list[i].invoiceSourceType !== 1) { data.list[i].sellerName = '————'; data.list[i].buyerName = '————'; data.list[i].orderAmount = '————'; data.list[i].orderDate = '————'; data.list[i].acceptNO = '————'; } data.list[i].statusString = $translate.instant(data.list[i].statusString); data.list[i].invoiceSourceTypeString = $translate.instant(data.list[i].invoiceSourceTypeString); data.list[i].invoiceTypeString = $translate.instant(data.list[i].invoiceTypeString); data.list[i].productionTypeString = $translate.instant(data.list[i].productionTypeString); data.list[i].invoiceDate = moment(data.list[i].invoiceDate).format(constant.date.dateFormatUppercase); data.list[i].isIncludedInTaxAmountString = data.list[i].isIncludedInTaxAmount == null ? '' : (data.list[i].isIncludedInTaxAmount == 1 ? '是' : '否'); if (i > 0) { if (newOrderIdentifier === data.list[i].orderIdentifier) { //如果最新行的订单识别号跟当前行比较,相等,则counter++,将发票主数据部分字段设置为空 data.list[i].orderIdentifier = ''; data.list[i].sellerName = ''; data.list[i].buyerName = ''; data.list[i].orderAmount = ''; data.list[i].orderDate = ''; if (data.list[i].invoiceSourceType != 1) { data.list[i].acceptNO = ''; } counter++; } else { //如果最新行跟当前行比较,不相等,则重置counter为0 counter = 0; newOrderIdentifier = data.list[i].orderIdentifier; } } } } deferred.resolve(data.list); } }) .error(function () { deferred.reject("Data Loading Error"); }); return deferred.promise; } }); //页面中的DXGrid事件 $scope.thisDXGridService = { //初始化DataGrid DX控件,查询结果 initDXGridData: function () { $("#invoiceManageMapList").dxDataGrid({ dataSource: { store: relevanceDataSource }, selection: { mode: "single" }, paging: { enabled: false, }, hoverStateEnabled: true, //showRowLines: true, //showColumnLines: true, //rowAlternationEnabled: true, showBorders: true, allowColumnResizing: true, columnResizingMode: "widget", columnAutoWidth: true, noDataText: $translate.instant('NoDataText'), columns: [ { caption: $translate.instant('OrderIdentifier'), dataField: 'orderIdentifier' }, { caption: $translate.instant('VendorName'), dataField: "sellerName" }, { caption: $translate.instant('BuyerName'), dataField: "buyerName" }, { caption: $translate.instant('OrderAmount'), dataField: "orderAmount" }, { caption: $translate.instant('PurchaseDate'), dataField: "orderDate", dateType: "date" }, { caption: $translate.instant('AcceptNO'), dataField: "acceptNO" }, { caption: $translate.instant('invoiceCode'), dataField: "invoiceCode" }, { caption: $translate.instant('invoiceNumber'), dataField: "invoiceNumber" }, { caption: $translate.instant('FaceTaxAmount'), dataField: "amount" }, { caption: $translate.instant('InvoiceKPRQ'), dataField: "invoiceDate" }, { caption: $translate.instant('InvoiceFPLX'), dataField: "invoiceTypeString" }, { caption: $translate.instant('InvoiceStatus'), dataField: "statusString" }, { caption: $translate.instant('InvoiceSource'), dataField: "invoiceSourceTypeString" }, { caption: $translate.instant('ProductionType'), dataField: "productionTypeString" }, { caption: $translate.instant('VoucherNO'), dataField: "voucherNO" }, { caption: $translate.instant('IsIncludedInTaxAmount'), dataField: "isIncludedInTaxAmountString" }], onSelectionChanged: function (selectedItems) { if (selectedItems) { $scope.selectedInvoice = selectedItems.selectedRowsData[0]; $scope.relevanceType = $scope.selectedInvoice.invoiceSourceType; $scope.isFour = true; } } }); $timeout(function () { $scope.thisDXGridService.repaintInvoiceGrid(); }, 300); }, //重绘发票dataGrid高度 repaintInvoiceGrid: function () { $timeout(function () { $scope.setInvoiceGridHeight(); }, 100); }, //重新刷新dataGrid数据(在点击查询按钮或者点击页码的时候执行) refreshTable: function () { var grid = $('#invoiceManageMapList').dxDataGrid('instance'); grid.clearSelection(); grid.refresh(); $scope.thisDXGridService.repaintInvoiceGrid(); } }; //当前页面的service var thisPageService = { //初始化查询条件DX控件 initQueryCondition: function () { var isShowClearButton = true; var valueExpr = "id"; var displayExpr = "value"; $scope.searchEntityOptions = { //订单识别号 txtOrderIdentifierOptions: { bindingOptions: { value: 'queryParam.OrderIdentifier', }, placeholder: $translate.instant('PleaseInputOrderIdentifierTips') }, //订单金额 txtStartOrderAmountOptions: { bindingOptions: { value: 'queryParam.orderAmountStart', } }, txtEndOrderAmountOptions: { bindingOptions: { value: 'queryParam.orderAmountEnd', } }, //供应商名称 txtVendorNameOptions: { bindingOptions: { value: 'queryParam.sellerName', }, placeholder: $translate.instant('PleaseInputVendorNameTips'), }, //采购日期 txtStartOrderDateOptions: { bindingOptions: { value: 'queryParam.orderDateStart', } }, txtEndOrderDateOptions: { bindingOptions: { value: 'queryParam.orderDateEnd', }, }, //是否计入进项税额 selectboxIsIncludedInTaxAmountOptions: { displayExpr: displayExpr, valueExpr: valueExpr, bindingOptions: { value: 'queryParam.isIncludedInTaxAmount', dataSource: 'searchFilterOptions.isIncludedInTaxAmountList' }, placeholder: $scope.pleaseSelect, showClearButton: isShowClearButton, noDataText: $scope.translated.NoData }, //收货单号 txtAcceptNOOptions: { bindingOptions: { value: 'queryParam.acceptNO', }, placeholder: $translate.instant('PleaseInputAcceptNO'), }, //票面金额(含税) txtStartAmountOptions: { bindingOptions: { value: 'queryParam.totalPriceLowerCaseStart', }, placeholder: "", }, txtEndAmountOptions: { bindingOptions: { value: 'queryParam.totalPriceLowerCaseEnd', }, placeholder: "", }, //购方名称 txtBuyerNameOptions: { bindingOptions: { value: 'queryParam.buyerName', }, placeholder: $translate.instant('PleaseInputBuyerName') }, //开票日期 txtStartInvoiceDateOptions: { bindingOptions: { value: 'queryParam.invoiceDateStart', }, placeholder: "", }, txtEndInvoiceDateOptions: { bindingOptions: { value: 'queryParam.invoiceDateEnd', }, placeholder: "", }, //发票状态 selectboxInvoiceStatusOptions: { displayExpr: displayExpr, valueExpr: valueExpr, bindingOptions: { value: 'queryParam.invoiceStatus', dataSource: 'searchFilterOptions.invoiceStatusList' }, placeholder: $scope.pleaseSelect, showClearButton: isShowClearButton, noDataText: $scope.translated.NoData }, //发票号码 txtInvoiceNumberOptions: { bindingOptions: { value: 'queryParam.invoiceNumber', }, placeholder: $translate.instant('PleaseInputInvoiceNumber'), }, //发票来源 selectboxInvoiceSourceOptions: { displayExpr: displayExpr, valueExpr: valueExpr, bindingOptions: { value: 'queryParam.invoiceSourceType', dataSource: 'searchFilterOptions.invoiceSourceList' }, placeholder: $scope.pleaseSelect, showClearButton: isShowClearButton, noDataText: $scope.translated.NoData }, //发票类型 selectboxInvoiceTypeOptions: { displayExpr: displayExpr, valueExpr: valueExpr, bindingOptions: { value: 'queryParam.invoiceType', dataSource: 'searchFilterOptions.invoiceTypeList' }, placeholder: $scope.pleaseSelect, showClearButton: isShowClearButton, noDataText: $scope.translated.NoData }, //商品种类 selectboxProductTypeOptions: { displayExpr: displayExpr, valueExpr: valueExpr, bindingOptions: { value: 'queryParam.productionType', dataSource: 'searchFilterOptions.invoiceProductionTypeList' }, placeholder: $scope.pleaseSelect, showClearButton: isShowClearButton, noDataText: $scope.translated.NoData }, //凭证单号 txtVoucherNOOptions: { bindingOptions: { value: 'queryParam.voucherNO', }, placeholder: $translate.instant('PleaseInputVoucherNO') } }; }, //打开关联管理模态框 openRelevanceModal: function () { if (!$scope.selectedInvoice) { SweetAlert.swal('请先选择一条发票信息!'); return; } if ($scope.selectedInvoice.status !== 7) { SweetAlert.swal('当前选择的发票不能进行票帐匹配,只能选择状态为[待匹配]的发票!'); return; } $scope.isShowModal = true; }, //toggle查询条件显示区域 toggleQueryCondition: function () { $scope.expandAllQueryCondition = !$scope.expandAllQueryCondition; $scope.thisDXGridService.repaintInvoiceGrid(); }, //获取关联数据列表 loadRelevanceDataList: function () { $scope.thisDXGridService.refreshTable(); }, //翻译查询的数据源 translateEnumValue: function (data) { if (!data || data.length == 0) return null; data.forEach(function (item) { item.value = $translate.instant(item.value); }); return data; }, //查询的数据源准备 getInvoiceFilterBasicData: function () { InvoiceManageService.getInvoiceFilterBasicData().success(function (data) { if (data) { if (!$scope.searchFilterOptions) { $scope.searchFilterOptions = {}; } $scope.searchFilterOptions = { invoiceStatusList: thisPageService.translateEnumValue(data.invoiceStatusList), invoiceTypeList: thisPageService.translateEnumValue(data.invoiceTypeList), invoiceSourceList: thisPageService.translateEnumValue(data.invoiceSourceList), invoiceProductionTypeList: thisPageService.translateEnumValue(data.invoiceProductionTypeList), isIncludedInTaxAmountList: yeaOrNoSelectItem }; } }); } }; //分页里面的处理 //$scope.pagingSercice = { // setPage: function (pageNo) { // }, // //分页下拉 // populatePagingSelection: function () { // var pagingSelection = []; // var pageArray = constant.page.pageSizeArrary; // for (var i = 0 ; i < pageArray.length; i++) { // var selection = { id: pageArray[i], value: pageArray[i] }; // pagingSelection.push(selection); // } // $scope.pagingOptions.pagingSelection = pagingSelection; // }, // //分页的时候改变数字 // pageIndexChanging: function () { // if ($scope.pagingOptions.pageIndex > $scope.pagingOptions.totalPages) { // $scope.pagingOptions.pageIndex = $scope.pagingOptions.totalPages; // } // if ($scope.pagingOptions.pageIndex <= 0) { // $scope.pagingOptions.pageIndex = 1; // } // $log.log('Page changed to: ' + $scope.pagingOptions.pageIndex); // thisDXGridService.refreshTable(); // }, // //每页显示的数据下拉改变 // pageSizeSelectionChanged: function () { // $scope.pagingOptions.pageSize = parseInt($scope.pagingOptions.pageSizeString); // thisDXGridService.refreshTable(); // }, //}; //初始化页面 var initPage = function () { thisPageService.initQueryCondition(); $scope.thisDXGridService.initDXGridData(); thisPageService.getInvoiceFilterBasicData(); // $scope.pagingSercice.populatePagingSelection(); }; (function initialize() { $scope.expandAllQueryCondition = false; $log.debug('invoiceManageMapController.ctor()...'); initPage(); $scope.showRevelanceModal = thisPageService.openRelevanceModal; $scope.toggleQueryCondition = thisPageService.toggleQueryCondition; $scope.queryRelevanceDataList = thisPageService.loadRelevanceDataList; $scope.thisDXGridService.repaintInvoiceGrid(); })(); } ]);