Commit 40104c90 authored by neo's avatar neo

[DEV] add output off voice page

parent 3029eabf
......@@ -589,6 +589,23 @@ var vatModule = angular.module('app.vat', ['ui.grid', 'ui.grid.selection', 'ui.g
sticky: true
});
$stateProvider.state({
name: 'vat.previewData.outputoffInvoice',
url: '/outputoffInvoice',
views: {
'@vat.previewData': {
controller: ['$scope', '$stateParams', 'appTranslation',
function ($scope, $stateParams, appTranslation) {
appTranslation.load([appTranslation.vat]);
}],
template: '<vat-preview-outputoff-invoice></vat-preview-outputoff-invoice>',
}
},
resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat),
deepStateRedirect: true,
sticky: true
});
$stateProvider.state({
name: 'vat.previewData.inputInvoice',
url: '/inputInvoice',
......
......@@ -520,6 +520,23 @@ var vatModule = angular.module('app.vat', ['ui.grid', 'ui.grid.selection', 'ui.g
sticky: true
});
$stateProvider.state({
name: 'vat.previewData.outputoffInvoice',
url: '/outputoffInvoice',
views: {
'@vat.previewData': {
controller: ['$scope', '$stateParams', 'appTranslation',
function ($scope, $stateParams, appTranslation) {
appTranslation.load([appTranslation.vat]);
}],
template: '<vat-preview-outputoff-invoice></vat-preview-outputoff-invoice>',
}
},
resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat),
deepStateRedirect: true,
sticky: true
});
$stateProvider.state({
name: 'vat.previewData.inputInvoice',
url: '/inputInvoice',
......
......@@ -36,6 +36,10 @@ function ($scope, $log, $translate, $location, loginContext, enums, vatSessionSe
name: 'outputInvoice', permission: constant.vatPermission.dataPreview.outputInvoice.queryCode,
text: $translate.instant('outputInvoice'), icon: 'fa fa-file-text-o', show: true
},
{
name: 'outputoffInvoice', permission: constant.vatPermission.dataPreview.outputInvoice.queryCode,
text: '线下开票', icon: 'fa fa-file-text-o', show: true
},
// ,
// {
// name: 'customInvoice', permission: constant.vatPermission.dataPreview.customInvoice.queryCode,
......
<div class="popover">
<div class="arrow"></div>
<div class="popover-content">
<div>
<table class="table table-responsive">
<tr>
<td>
<span translate="InvoiceDate"></span>
<input class="form-control input-width-small" id="invoiceDateStart" ng-model="queryParams.invoiceDateStart" />&nbsp;-&nbsp;
<input class="form-control input-width-small" id="invoiceDateEnd" ng-model="queryParams.invoiceDateEnd" />
</td>
</tr>
<tr>
<td>
<span translate="ClassCode"></span>
<input class="form-control input-width-middle" type="text" id="classCode" ng-model="queryParams.classCode" />
</td>
</tr>
<tr>
<td>
<span translate="InvoiceNumber"></span>
<input class="form-control input-width-middle" type="text" id="invoiceNumber" ng-model="queryParams.invoiceNumber" />
</td>
</tr>
<tr>
<td>
<span translate="BuyerName"></span>
<input class="form-control input-width-middle" type="text" id="buyerName" ng-model="queryParams.buyerName" />
</td>
</tr>
<tr>
<td>
<span translate="ProductName"></span>
<input class="form-control input-width-middle" type="text" id="productName" ng-model="queryParams.productName" />
</td>
</tr>
<tr>
<td>
<span translate="Amount"></span>
<input class="form-control input-width-small" type="text" id="amountStart" ng-model="queryParams.amountStart" onkeyup="PWC.inputNumberFormat(this);" />&nbsp;-&nbsp;
<input class="form-control input-width-small" type="text" id="amountEnd" ng-model="queryParams.amountEnd" onkeyup="PWC.inputNumberFormat(this);" />
</td>
</tr>
<tr>
<td>
<span translate="TaxAmount"></span>
<input class="form-control input-width-small" type="text" id="taxAmountStart" ng-model="queryParams.taxAmountStart" onkeyup="PWC.inputNumberFormat(this);" />&nbsp;-&nbsp;
<input class="form-control input-width-small" type="text" id="taxAmountEnd" ng-model="queryParams.taxAmountEnd" onkeyup="PWC.inputNumberFormat(this);" />
</td>
</tr>
<tr>
<td>
<span translate="InvoiceType"></span>
<div class="ui-select-has-border input-width-middle">
<ui-select ng-model="InvoiceType.selected" search-enabled="false" style="text-align:left;" class="input-width-middle">
<ui-select-match>{{$select.selected.name}}</ui-select-match>
<ui-select-choices repeat="item in invoiceTypeList | propsFilter: {name: $select.search}">
<div title="{{item.name}}" ng-bind-html="item.name"></div>
</ui-select-choices>
</ui-select>
</div>
</td>
</tr>
</table>
</div>
<div class="row">
<div style="float:right;margin-right:10px;">
<button class="btn btn-default btn-primary" ng-click="doDataFilter('')">
<span class="fa fa-chevron-down" aria-hidden="true"> </span> <span translate="Confirm"></span>
</button>
<button class="btn btn-default margin-right10" ng-click="doDataFilterReset()">
<span class="fa fa-times" aria-hidden="true"> </span> <span translate="Reset"></span>
</button>
</div>
</div>
</div>
</div>
vatModule.controller('vatPreviewOutputoffInvoiceController', ['$scope', '$log', '$translate', '$timeout', 'SweetAlert', '$q', 'uiGridConstants', '$interval', 'vatPreviewService', 'vatSessionService', 'browserService', 'enums','region','vatExportService',
function ($scope, $log, $translate, $timeout, SweetAlert, $q, uiGridConstants, $interval, vatPreviewService, vatSessionService, browserService, enums, region, vatExportService) {
'use strict';
$scope.startDate = new Date(vatSessionService.project.year, 0, 1);
$scope.endDate = new Date(vatSessionService.project.year, 11, 31);
$scope.dateFormat = $translate.instant('dateFormat4YearMonthDay');
$scope.curPageItemCount = 0;
$scope.totalMoneyAmount = 0;
$scope.totalTaxAmount = 0;
var startMonth = vatSessionService.month;
var endMonth = vatSessionService.month;
var minDate = [1, vatSessionService.project.year];
var maxDate = [12, vatSessionService.project.year];
var setDate = [
[vatSessionService.month, vatSessionService.project.year],
[vatSessionService.month, vatSessionService.project.year]];
//发票类型
var invoiceTypeEnum = {
Normal: $translate.instant('Normal'),
Special: $translate.instant('Special'),
ElectronicReceipt: '电子发票'
};
//区间
$scope.monthList = [$translate.instant('Month01'),
$translate.instant('Month02'),
$translate.instant('Month03'),
$translate.instant('Month04'),
$translate.instant('Month05'),
$translate.instant('Month06'),
$translate.instant('Month07'),
$translate.instant('Month08'),
$translate.instant('Month09'),
$translate.instant('Month10'),
$translate.instant('Month11'),
$translate.instant('Month12')
];
//发票类型
$scope.invoiceTypeList = [
{ id: 999, name: $translate.instant('AllTheItems') },
{ id: enums.outputInvoiceType.Normal, name: $translate.instant('Normal') },
{ id: enums.outputInvoiceType.Special, name: $translate.instant('Special') },
];
$scope.PeriodStart = {};
$scope.PeriodEnd = {};
$scope.InvoiceType = {};
//初始化期间
var initPeriods = function () {
$scope.queryParams = {
pageInfo: {},
periodStart: '',
periodEnd: '',
invoiceDateStart: null,
invoiceDateEnd: null,
classCode: '',
invoiceNumber: '',
buyerName: '',
productName:'',
amountStart: null,
amountEnd: null,
invoiceType: null,
taxAmountStart: null,
taxAmountEnd: null
};
$scope.queryParams.periodStart = vatSessionService.month;
$scope.queryParams.periodEnd = vatSessionService.month;
};
var countTotal = function(){
var totalMoneyAmount = 0;
var totalTaxAmount = 0;
vatPreviewService.queryOutputInvoiceAllList($scope.queryParams).success(function (data) {
if (data) {
_.each(data, function (x) {
totalMoneyAmount += parseFloat(x.hjje.replace(/,/g, ""));
totalTaxAmount += parseFloat(x.hjse.replace(/,/g, ""));
})
}
$scope.totalMoneyAmount = totalMoneyAmount.toLocaleString();
$scope.totalTaxAmount = totalTaxAmount.toLocaleString();
}).error(function () {
SweetAlert.error($translate.instant('PleaseContactAdministrator'));
});
}
//从数据库中load数据
var loadOutputInvoiceDataFromDB = function (pageIndex) {
initOutputInvoicePagination();
$scope.curOutputInvoiceItemPage = pageIndex;
//初始化查询信息
$scope.queryParams.pageInfo = {
totalCount: $scope.queryOutputInvoiceResult.pageInfo.totalCount,
pageIndex: pageIndex,
pageSize: $scope.queryOutputInvoiceResult.pageInfo.pageSize,
totalPage: 0,
}
vatPreviewService.queryOutputInvoiceList($scope.queryParams).success(function (data) {
if (data) {
var index = 1;
data.list.forEach(function (v) {
v.index = index++;
v.amount = PWC.round(parseFloat(v.hjje.replace(/,/g, "")), 2);
v.taxAmount = PWC.round(parseFloat(v.hjse.replace(/,/g, "")), 2);
});
$scope.gridOptions.data = data.list;
$scope.queryOutputInvoiceResult.pageInfo = data;
computeOutputInvoiceItemPage();
countTotal();
}
}).error(function () {
SweetAlert.error($translate.instant('PleaseContactAdministrator'));
});
}
//点击任意一页加载数据事件
var loadOutputInvoiceDataByPage = function (pageIndex) {
loadOutputInvoiceDataFromDB(pageIndex);
};
//计算页数,创建分页栏
var computeOutputInvoiceItemPage = function () {
if ($scope.queryOutputInvoiceResult.pageInfo && $scope.queryOutputInvoiceResult.pageInfo.total > 0) {
var totalPage = parseInt($scope.queryOutputInvoiceResult.pageInfo.total / $scope.queryOutputInvoiceResult.pageInfo.pageSize);
totalPage = $scope.queryOutputInvoiceResult.pageInfo.total % $scope.queryOutputInvoiceResult.pageInfo.pageSize == 0 ? totalPage : totalPage + 1;
if ($scope.queryOutputInvoiceResult.pageInfo.pageNum === totalPage) {
$scope.curPageItemCount = $scope.queryOutputInvoiceResult.pageInfo.total % $scope.queryOutputInvoiceResult.pageInfo.pageSize;
}
else {
$scope.curPageItemCount = $scope.queryOutputInvoiceResult.pageInfo.pageSize;
}
$scope.queryOutputInvoiceResult.pageInfo.totalPage = totalPage;
var createPage = $("#totalInvoicePage").createPage({
pageCount: totalPage,
current: $scope.curOutputInvoiceItemPage,
backFn: function (p) {
//单击回调方法,p是当前页码
loadOutputInvoiceDataByPage(p);
}
});
$('#totalInvoicePage').css('display', 'inline-block');
} else {
var createPage = $("#totalInvoicePage").createPage({
pageCount: 0,
current: $scope.curOutputInvoiceItemPage,
backFn: function (p) {
//单击回调方法,p是当前页码
loadOutputInvoiceDataByPage(p);
}
});
$scope.curPageItemCount = 0;
$('#totalInvoicePage').css('display', 'inline-block');
}
};
//初始化分页信息
var initOutputInvoicePagination = function () {
$scope.queryOutputInvoiceResult = {
list: [],
pageInfo: {
totalCount: -1,
pageIndex: 1,
pageSize: constant.pagesize,
totalPage: 0,
}
}
$scope.curOutputInvoiceItemPage = 1;
};
//发票类型转换'发票类型代码 004专票007普票026电子发票'
$scope.typeToString = function (strType) {
var type = invoiceTypeEnum.Normal;
switch (strType) {
case '007':
type = invoiceTypeEnum.Normal;
break;
case '004':
type = invoiceTypeEnum.Special;
break;
case '026':
type = invoiceTypeEnum.ElectronicReceipt;
break;
default:
type = "";
}
return type;
}
//将选择了的查询条件显示在grid上方
var doDataFilter = function (removeData) {
//设置起止期间
if ($scope.queryParams.periodStart > $scope.queryParams.periodEnd) {
$scope.queryParams.periodEnd = $scope.queryParams.periodStart;
}
//设置需要去掉的查询条件的值为空
if (!PWC.isNullOrEmpty(removeData)) {
var removeItem = removeData.split("|");
removeItem.forEach(function (v) {
$scope.queryParams[v] = null;
if ($scope.queryParams.invoiceType === null) {
$scope.InvoiceType.selected = undefined;
}
});
}
//设置发票类型和认证结果
if ($scope.InvoiceType.selected !== undefined)
$scope.queryParams.invoiceType = $scope.InvoiceType.selected.id;
else
$scope.queryParams.invoiceType = null;
// 将查询条件加入到grid上方
var crits = $scope.queryParams;
//定义查询条件数组用于存放已选的查询条件
$scope.criteriaList = [];
var crit = [];
//日期
if (!PWC.isNullOrEmpty(crits.invoiceDateStart) && !PWC.isNullOrEmpty(crits.invoiceDateEnd)) {
if (new Date(crits.invoiceDateStart.replace(/[\.-]/g, '/')) > new Date(crits.invoiceDateEnd.replace(/[\.-]/g, '/'))) {
$scope.criteriaList = [];
SweetAlert.warning($translate.instant('InvoiceDateQueryError'));
return;
}
crit = new Object;
crit.name = $translate.instant('InvoiceDate')+":" + crits.invoiceDateStart + "-" + crits.invoiceDateEnd;
crit.valueFrom = crits.invoiceDateStart;
crit.valueTo = crits.invoiceDateEnd;
crit.propertyName = "invoiceDateStart|invoiceDateEnd";
$scope.criteriaList.push(crit);
}
else if (!PWC.isNullOrEmpty(crits.invoiceDateStart) && PWC.isNullOrEmpty(crits.invoiceDateEnd)) {
crit = new Object;
crit.name = $translate.instant('InvoiceDate') + ":" + crits.invoiceDateStart + $translate.instant('After');
crit.valueFrom = crits.invoiceDateStart;
crit.valueTo = crits.invoiceDateEnd;
crit.propertyName = "invoiceDateStart|invoiceDateEnd";
$scope.criteriaList.push(crit);
}
else if (PWC.isNullOrEmpty(crits.invoiceDateStart) && !PWC.isNullOrEmpty(crits.invoiceDateEnd)) {
crit = new Object;
crit.name = $translate.instant('InvoiceDate') + ":" + crits.invoiceDateEnd + $translate.instant('Before');
crit.valueFrom = crits.invoiceDateStart;
crit.valueTo = crits.invoiceDateEnd;
crit.propertyName = "invoiceDateStart|invoiceDateEnd";
$scope.criteriaList.push(crit);
}
//发票代码
if (!PWC.isNullOrEmpty(crits.classCode)) {
crit = new Object;
crit.name = $translate.instant('ClassCode') + ":" + PWC.limitString(crits.classCode, 10);
crit.valueFrom = crits.classCode;
crit.propertyName = "classCode";
$scope.criteriaList.push(crit);
}
//发票号码
if (!PWC.isNullOrEmpty(crits.invoiceNumber)) {
crit = new Object;
crit.name = $translate.instant('InvoiceNumber') + ":" + PWC.limitString(crits.invoiceNumber, 10);
crit.valueFrom = crits.invoiceNumber;
crit.propertyName = "invoiceNumber";
$scope.criteriaList.push(crit);
}
//购方名称
if (!PWC.isNullOrEmpty(crits.buyerName)) {
crit = new Object;
crit.name = $translate.instant('BuyerName') + ":" + PWC.limitString(crits.buyerName, 10);
crit.valueFrom = crits.buyerName;
crit.propertyName = "buyerName";
$scope.criteriaList.push(crit);
}
//产品名称
if (!PWC.isNullOrEmpty(crits.productName)) {
crit = new Object;
crit.name = $translate.instant('ProductName') + ":" + PWC.limitString(crits.productName, 10);
crit.valueFrom = crits.productName;
crit.propertyName = "productName";
$scope.criteriaList.push(crit);
}
//发票类型
if (!PWC.isNullOrEmpty(crits.invoiceType)) {
crit = new Object;
crit.valueFrom = _.find($scope.invoiceTypeList, function (v) {
return v.id === crits.invoiceType;
}).name;
crit.name = $translate.instant('InvoiceType') + ":" + crit.valueFrom;
crit.propertyName = "invoiceType";
$scope.criteriaList.push(crit);
}
//金额
if (!PWC.isNullOrEmpty(crits.amountStart) && !PWC.isNullOrEmpty(crits.amountEnd)) {
if (Number(crits.amountStart) > Number(crits.amountEnd)) {
$scope.criteriaList = [];
SweetAlert.warning($translate.instant('AmountQueryError'));
return;
}
crit = new Object;
crit.name = $translate.instant('Amount') + ":" + PWC.limitString(crits.amountStart, 5) + "-" + PWC.limitString(crits.amountEnd, 5);
crit.valueFrom = crits.amountStart;
crit.valueTo = crits.amountEnd;
crit.propertyName = "amountStart|amountEnd";
$scope.criteriaList.push(crit);
}
else if (!PWC.isNullOrEmpty(crits.amountStart) && PWC.isNullOrEmpty(crits.amountEnd)) {
crit = new Object;
crit.name = $translate.instant('Amount') + ":" + PWC.limitString(crits.amountStart, 5) + $translate.instant('MoreThan');
crit.valueFrom = crits.amountStart;
crit.valueTo = crits.amountEnd;
crit.propertyName = "amountStart|amountEnd";
$scope.criteriaList.push(crit);
}
else if (PWC.isNullOrEmpty(crits.amountStart) && !PWC.isNullOrEmpty(crits.amountEnd)) {
crit = new Object;
crit.name = $translate.instant('Amount') + ":" + PWC.limitString(crits.amountEnd, 5) + $translate.instant('LessThan');
crit.valueFrom = crits.amountStart;
crit.valueTo = crits.amountEnd;
crit.propertyName = "amountStart|amountEnd";
$scope.criteriaList.push(crit);
}
//税额
if (!PWC.isNullOrEmpty(crits.taxAmountStart) && !PWC.isNullOrEmpty(crits.taxAmountEnd)) {
if (Number(crits.taxAmountStart) > Number(crits.taxAmountEnd)) {
$scope.criteriaList = [];
SweetAlert.warning($translate.instant('TaxAmountQueryError'));
return;
}
crit = new Object;
crit.name = $translate.instant('TaxAmount') + ":" + PWC.limitString(crits.taxAmountStart, 5) + "-" + PWC.limitString(crits.taxAmountEnd, 5);
crit.valueFrom = crits.taxAmountStart;
crit.valueTo = crits.taxAmountEnd;
crit.propertyName = "taxAmountStart|taxAmountEnd";
$scope.criteriaList.push(crit);
}
else if (!PWC.isNullOrEmpty(crits.taxAmountStart) && PWC.isNullOrEmpty(crits.taxAmountEnd)) {
crit = new Object;
crit.name = $translate.instant('TaxAmount') + ":" + PWC.limitString(crits.taxAmountStart, 5) + $translate.instant('MoreThan');
crit.valueFrom = crits.taxAmountStart;
crit.valueTo = crits.taxAmountEnd;
crit.propertyName = "taxAmountStart|taxAmountEnd";
$scope.criteriaList.push(crit);
}
else if (!PWC.isNullOrEmpty(crits.taxAmountStart) && PWC.isNullOrEmpty(crits.taxAmountEnd)) {
crit = new Object;
crit.name = $translate.instant('TaxAmount') + ":" + PWC.limitString(crits.taxAmountEnd, 5) + $translate.instant('LessThan');
crit.valueFrom = crits.taxAmountStart;
crit.valueTo = crits.taxAmountEnd;
crit.propertyName = "taxAmountStart|taxAmountEnd";
$scope.criteriaList.push(crit);
}
// add to Criteria List for display on top of the grid:
//********************************************************************************
var criteria = JSON.stringify($scope.queryParams);
if (browserService.isIE() || browserService.isEdge())
criteria = encodeURIComponent(criteria);
countTotal();
loadOutputInvoiceDataFromDB(1);
$('.filter-button').popover("hide");
};
//去掉所有的查询条件,重新load数据
var doDataFilterReset = function () {
$scope.queryParams = {
pageInfo: {},
periodStart: '',
periodEnd: '',
invoiceDateStart: null,
invoiceDateEnd: null,
classCode: '',
invoiceNumber: '',
buyerName: '',
productName: '',
amountStart: null,
amountEnd: null,
invoiceType: null,
taxAmountStart: null,
taxAmountEnd: null
};
$scope.criteriaList = [];
$scope.queryParams.periodStart = startMonth;
$scope.queryParams.periodEnd = endMonth;
countTotal();
loadOutputInvoiceDataFromDB(1);
$('.filter-button').popover("hide");
};
//在popover打开时执行事件
var showPopover = function () {
$timeout(function () {
initDatePickers();
}, 500);
};
//初始化时间控件
var initDatePickers = function () {
//开票开始时间
var ele1 = $("#invoiceDateStart");
ele1.datepicker({
startDate: $scope.startDate,
endDate: $scope.endDate,
language: region,
autoclose: true,//选中之后自动隐藏日期选择框
clearBtn: true,//清除按钮
todayBtn: false,//今日按钮
format: $scope.dateFormat//日期格式,详见 http://bootstrap-datepicker.readthedocs.org/en/release/options.html#format
});
ele1.datepicker("setDate", $scope.queryParams.invoiceDateStart);
//开票结束时间
var ele2 = $("#invoiceDateEnd");
ele2.datepicker({
startDate: $scope.startDate,
endDate: $scope.endDate,
language: region,
autoclose: true,//选中之后自动隐藏日期选择框
clearBtn: true,//清除按钮
todayBtn: false,//今日按钮
format: $scope.dateFormat//日期格式,详见 http://bootstrap-datepicker.readthedocs.org/en/release/options.html#format
})
ele2.datepicker("setDate", $scope.queryParams.invoiceDateEnd);
//初始化已选择的发票类型和认证结果
$scope.InvoiceType.selected = _.find($scope.invoiceTypeList, function (v) {
return v.id == $scope.queryParams.invoiceType;
})
};
//转换百分比
$scope.decimalToPercent = function (data) {
return (data * 100).toFixed(0) + "%";
}
//导出
var doExport = function ()
{
vatPreviewService.getExportOutputInvoiceList($scope.queryParams).success(function (data, status, headers) {
if(status===204){
SweetAlert.warning("没有数据可以下载");
return;
}
vatExportService.exportToExcel(data, status, headers, '销项发票信息.xls');
}).error(function () {
SweetAlert.error($translate.instant('PleaseContactAdministrator'));
});
}
//$scope.$on('ngRepeatFinished', function (ngRepeatFinishedEvent) {
// export_table_to_excel('exportTable', 'OutputInvoice', 'xlsx', '');
//});
$scope.gridOptionsColumnDefs = [
{
name: $translate.instant('ImportErrorPopUpNoCol'), width: '5%',
cellTemplate: '<div class="ui-grid-cell-contents" ><span>{{row.entity.index}}<span></div>'
},
// {
// name: $translate.instant('PeriodId'), width: '5%',
// cellTemplate: '<div class="ui-grid-cell-contents" title="{{row.entity.periodID}}"><span>{{row.entity.periodID}}<span></div>'
// },
{
name: $translate.instant('InvoiceDate'), width: '10%',
cellTemplate: '<div class="ui-grid-cell-contents" ><span>{{row.entity.kprq | date:"yyyy-MM-dd"}}</span></div>'
},
{
name: $translate.instant('InvoiceType'), width: '10%',
cellTemplate: '<div class="ui-grid-cell-contents" title="{{grid.appScope.typeToString(row.entity.fplxdm)}}"><span>{{grid.appScope.typeToString(row.entity.fplxdm)}}<span></div>'
},
{
name: $translate.instant('ClassCode'), width: '10%',
cellTemplate: '<div class="ui-grid-cell-contents" title="{{row.entity.fpdm}}"><span>{{row.entity.fpdm}}<span></div>'
},
{
name: $translate.instant('InvoiceNumber'), width: '10%',
cellTemplate: '<div class="ui-grid-cell-contents" title="{{row.entity.fphm}}"><span>{{row.entity.fphm}}</span></div>'
},
{
name: $translate.instant('BuyerName'), width: '18%',
cellTemplate: '<div class="ui-grid-cell-contents" title="{{row.entity.gfmc}}"><span>{{row.entity.gfmc}}</span></div>'
},
{
name: $translate.instant('BuyerTaxNumber'), width: '18%',
cellTemplate: '<div class="ui-grid-cell-contents" title="{{row.entity.gfsh}}"><span>{{row.entity.gfsh}}</span></div>'
},
//{
// name: $translate.instant('BankAccount'), width: '10%',
// cellTemplate: '<div class="ui-grid-cell-contents" title="{{row.entity.bankAccount}}"><span>{{row.entity.bankAccount}}</span></div>'
//},
//{
// name: $translate.instant('PhoneNum'), width: '8%',
// cellTemplate: '<div class="ui-grid-cell-contents" title="{{row.entity.phoneNum}}"><span>{{row.entity.phoneNum}}</span></div>'
//},
{
name: $translate.instant('Amount'), width: '8%', headerCellClass: 'right',
cellTemplate: '<div class="ui-grid-cell-contents right" title="{{row.entity.hjje}}"><span>{{row.entity.hjje}}</span></div>'
},
{
name: $translate.instant('TaxAmount'), width: '8%', headerCellClass: 'right',
cellTemplate: '<div class="ui-grid-cell-contents right" title="{{row.entity.hjse}}"><span>{{row.entity.hjse}}</span></div>'
}
];
$scope.subGridOptionsColumnDefs = [
// {
// name: $translate.instant('ImportErrorPopUpNoCol'), width: '5%',
// cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.seqNo}}</span></div>'
// },
{
name: $translate.instant('ProductName'),
cellTemplate: '<div class="ui-grid-cell-contents" title="{{row.entity.spmc}}"><span>{{row.entity.spmc}}</span></div>'
},
{
name: $translate.instant('Quantity'), headerCellClass: 'right',
cellTemplate: '<div class="ui-grid-cell-contents right" title="{{row.entity.sl}}"><span>{{row.entity.sl}}</span></div>'
},
{
name: $translate.instant('UnitPrice'), headerCellClass: 'right',
cellTemplate: '<div class="ui-grid-cell-contents right" title="{{row.entity.dj}}"><span>{{row.entity.dj}}</span></div>'
},
{
name: $translate.instant('Amount'), headerCellClass: 'right',
cellTemplate: '<div class="ui-grid-cell-contents right" title="{{row.entity.je}}"><span>{{row.entity.je}}</span></div>'
},
{
name: $translate.instant('TaxRate'), headerCellClass: 'right',
cellTemplate: '<div class="ui-grid-cell-contents right" title="{{row.entity.slv}}"><span>{{row.entity.slv * 100 + "%"}}</span></div>'
},
{
name: $translate.instant('TaxAmount'), headerCellClass: 'right',
cellTemplate: '<div class="ui-grid-cell-contents right" title="{{row.entity.se}}"><span>{{row.entity.se}}</span></div>'
},
//{
// name: $translate.instant('CodeVersion'), width: '8%',
// cellTemplate: '<div class="ui-grid-cell-contents" title="{{row.entity.codeVersion}}"><span>{{row.entity.codeVersion}}</span></div>'
//},
//{
// name: $translate.instant('DocumentNum'), width: '8%',
// cellTemplate: '<div class="ui-grid-cell-contents" title="{{row.entity.documentNum}}"><span>{{row.entity.documentNum}}</span></div>'
//},
//{
// name: $translate.instant('ProductStandar'), width: '8%',
// cellTemplate: '<div class="ui-grid-cell-contents" title="{{row.entity.productStandard}}"><span>{{row.entity.productStandard}}</span></div>'
//},
//{
// name: $translate.instant('Unit'), width: '8%',
// cellTemplate: '<div class="ui-grid-cell-contents" title="{{row.entity.unit}}"><span>{{row.entity.unit}}</span></div>'
//},
//{
// name: $translate.instant('TaxClassCode'), width: '15%',
// cellTemplate: '<div class="ui-grid-cell-contents" title="{{row.entity.taxClassCode}}"><span>{{row.entity.taxClassCode}}</span></div>'
//}
];
(function initialize() {
$log.debug('vatPreviewOutputInvoiceController.ctor()...');
$scope.periodId = vatSessionService.month;
//初始化month-picker
$('#output-invoice-period-picker').rangePicker({
minDate: minDate,
maxDate: maxDate,
setDate: setDate,
months: $scope.monthList,
ConfirmBtnText: $translate.instant('Confirm'),
CancelBtnText: $translate.instant('ButtonCancel')
})
.on('datePicker.done', function (e, result) {
//开始月份
startMonth = result[0][0];
//结束月份
endMonth = result[1][0];
$scope.queryParams.periodStart = startMonth;
$scope.queryParams.periodEnd = endMonth;
countTotal();
loadOutputInvoiceDataFromDB(1);
});
$scope.gridOptions = {
rowHeight: constant.UIGrid.rowHeight,
selectionRowHeaderWidth: constant.UIGrid.rowHeight,
expandableRowTemplate: '<div ui-grid="row.entity.subGridOptions" style="height:150px;"></div>',
virtualizationThreshold: 50,//默认加载50条数据,避免在数据展示时,只显示前面4条
enableSorting: false,
enableColumnMenus: false,
columnDefs: $scope.gridOptionsColumnDefs,
onRegisterApi: function (gridApi) {
$scope.gridApi = gridApi;
//定义子table属性
gridApi.expandable.on.rowExpandedStateChanged($scope, function (row) {
if (row.isExpanded) {
row.entity.subGridOptions = {
rowHeight: constant.UIGrid.rowHeight,
selectionRowHeaderWidth: constant.UIGrid.rowHeight,
virtualizationThreshold: 50,//默认加载50条数据,避免在数据展示时,只显示前面4条
enableSorting: false,
enableColumnMenus: false,
columnDefs: $scope.subGridOptionsColumnDefs,
};
//获取子table数据
vatPreviewService.queryOutputInvoiceItemList(row.entity.id).success(function (data) {
if (data) {
data.forEach(function (v) {
v.dj = PWC.round(v.dj, 2);
v.je = PWC.round(v.je, 2);
v.slv = PWC.round(v.slv, 2);
v.se = PWC.round(v.se, 2);
});
row.entity.subGridOptions.data = data;
}
});
}
});
$interval(function () {
$scope.gridApi.core.handleWindowResize();
}, 500, 60 * 60 * 8);
}
};
$scope.doDataFilter = doDataFilter;
$scope.doDataFilterReset = doDataFilterReset;
$scope.doExport = doExport;
$scope.showPopover = showPopover;
initPeriods();
initOutputInvoicePagination();
countTotal();
loadOutputInvoiceDataFromDB(1);
})();
}
]);
\ No newline at end of file
<div class="vat-preview-output-invoice" id="mainPreviewDiv">
<div class="top-area-wrapper">
<!--<button class="filter-button"
atms-popover ng-mouseenter="prepareSummary()" ng-click="showPopover()"
popover-container="body" popover-auto-hide="true" data-overwrite="true"
use-optimized-placement-algorithm="true"
data-placement="bottom"
data-templateurl="/app/vat/preview/vat-preview-output-invoice/vat-preview-output-invoice-search.html">
<i class="fa fa-filter" aria-hidden="true"></i>
</button>-->
<span translate="OutputInvoiceTitle" class="text-bold"></span> &nbsp;&nbsp;|&nbsp;&nbsp;<span class="text-bold" translate="InvoiceQJ"></span>
<input type="text" class="form-control input-width-middle" id="output-invoice-period-picker" />
<div class="pull-right operation-wrapper">
<span ng-click="doExport()"><i class="fa fa-file-excel-o" aria-hidden="true"></i>{{'ExportBtn' | translate}}</span>
</div>
</div>
<div style="margin-bottom: 8px;margin-left: 30px">
<span class="text-bold">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;
金额<span class="numAmount">{{totalMoneyAmount}}</span>&nbsp;&nbsp;&nbsp;
税额<span class="numAmount">{{totalTaxAmount}}</span>
</div>
<div id="filterCriteriaDiv" style="max-width:98%;margin-bottom:2px;" ng-show="criteriaList.length>0">
<!--<span class="text-bold margin-left20" translate="FilterCriteriaTags"></span>:
<div id="filterDiv" >
<span class="tag label label-default" ng-repeat="criteria in criteriaList" >
<span>{{criteria.name | limitString:20}}</span>
<a><i class="remove glyphicon glyphicon-remove-sign glyphicon-white" ng-click="doDataFilter(criteria.propertyName)"></i></a>
</span>
</div>-->
<span class="text-bold margin-left20" translate="FilterCriteriaTags"></span>:
<span class="tag label label-default" ng-repeat="criteria in criteriaList">
<span>
{{criteria.name}}
</span>
<a><i class="remove glyphicon glyphicon-remove-sign glyphicon-white" ng-click="doDataFilter(criteria.propertyName)"></i></a>
</span>
</div>
<!--数据列表界面-->
<div id="mainAreaDiv" class="main-area">
<div class="outputInvoiceGrid" ui-grid-expandable ui-grid="gridOptions">
<div class="watermark" ng-show="!gridOptions.data.length"><span translate="NoDataAvailable"></span></div>
</div>
<div class="pagination-container">
<span >本页{{curPageItemCount}}条记录,共{{queryOutputInvoiceResult.pageInfo.total}}条记录</span>
<div id="totalInvoicePage" class="common-pagination" style="display:none;">
</div>
</div>
</div>
</div>
vatModule.directive('vatPreviewOutputoffInvoice', ['$log',
function ($log) {
'use strict';
$log.debug('vatImportOutputInvoice.ctor()...');
return {
restrict: 'E',
templateUrl: '/app/vat/preview/vat-preview-outputoff-invoice/vat-preview-outputoff-invoice.html' + '?_=' + Math.random(),
scope: {},
controller: 'vatPreviewOutputInvoiceController',
link: function (scope, element) {
}
};
}
]);
\ No newline at end of file
@import "~/app-resources/less/theme.less";
.vat-preview-output-invoice {
background-color: white;
height: 100%;
.top-area-wrapper {
height: 60px;
width: 98%;
margin: 0 20px;
.filter-button {
width: 30px;
margin-top: 16px;
}
.operation-wrapper {
margin: 15px 25px 10px 10px;
span {
cursor: pointer;
}
}
}
.filter-popup-wrapper {
display: none;
}
.margin-left20 {
margin-left: 20px;
}
/*******************************************/
/*Filter Criteria tags:*/
.tag {
font-size: 12px;
padding: .3em .4em .4em;
margin: 0 .1em;
a {
color: #bbb;
cursor: pointer;
opacity: 0.6;
margin: 0 0 0 .3em;
&:hover {
opacity: 1.0;
}
.glyphicon-white {
color: #fff;
margin-bottom: 2px;
}
}
.remove {
vertical-align: bottom;
top: 0;
}
}
/*Filter Criteria tags:*/
/*******************************************/
.main-area {
height: 100%;
margin: 0 20px;
.watermark {
position: absolute;
top: 50%;
transform: translateY(-50%);
opacity: .25;
font-size: 3em;
width: 100%;
text-align: center;
z-index: 1000;
}
.outputInvoiceGrid {
width: 100%;
height: calc(~'100% - 158px');
.ui-grid-header-cell-wrapper .ui-grid-header-cell-row .ui-grid-cell-contents {
height: 40px;
i {
display: none;
}
}
}
}
.form-control {
display: inline-block;
&:focus {
border-color: transparent;
-webkit-box-shadow: none;
box-shadow: none;
border: 1px solid #ccc;
}
}
.numAmount {
padding: 0 3px;
height: 21px;
margin-left: 5px;
/* font-family: 'Arial'; */
font-weight: 600;
border-radius: 2px;
font-style: normal;
outline: none;
border: none;
min-width: 20px;
background-color: #DDDDDD;
color: #AA0000;
}
.input-width-middle {
width: 217px;
}
}
.popover {
min-width: 370px;
left: 119px !important;
.arrow {
left: 5% !important;
}
}
.popover-content {
td {
text-align: right;
padding: 6px;
span {
float: left;
}
}
.form-control {
display: inline-block;
&:focus {
border-color: transparent;
-webkit-box-shadow: none;
box-shadow: none;
border: 1px solid #ccc;
}
}
.input-width-small {
width: 100px;
}
.input-width-middle {
width: 217px;
}
}
......@@ -266,7 +266,7 @@ function ($scope, $rootScope, $q, $log, $timeout, $state, $translate, projectSer
name: 'previewData.balanceSheet', state: 'previewData.balanceSheet', num: 2,
permission: constant.vatPermission.dataPreview.balanceSheet.queryCode, url: '#/vat/previewData/balanceSheet'
});
}
// }
// else if (data[constant.vatPermission.dataPreview.accountVoucher.queryCode]) {
// $scope.menus.push({
// name: 'previewData', state: 'previewData', num: 2,
......@@ -277,25 +277,29 @@ function ($scope, $rootScope, $q, $log, $timeout, $state, $translate, projectSer
// permission: constant.vatPermission.dataPreview.accountVoucher.queryCode, url: '#/vat/previewData/accountVoucher'
// });
// }
else if (data[constant.vatPermission.dataPreview.inputInvoice.queryCode]) {
$scope.menus.push({
name: 'previewData', state: 'previewData', num: 2,
permission: constant.vatPermission.dataPreview.dataPreviewCode, url: '#/vat/previewData'
});
// else if (data[constant.vatPermission.dataPreview.inputInvoice.queryCode]) {
// $scope.menus.push({
// name: 'previewData', state: 'previewData', num: 2,
// permission: constant.vatPermission.dataPreview.dataPreviewCode, url: '#/vat/previewData'
// });
subMenus.push({
name: 'previewData.inputInvoice', state: 'previewData.inputInvoice', num: 2,
permission: constant.vatPermission.dataPreview.inputInvoice.queryCode, url: '#/vat/previewData/inputInvoice'
});
}
else if (data[constant.vatPermission.dataPreview.outputInvoice.queryCode]) {
$scope.menus.push({
name: 'previewData', state: 'previewData', num: 2,
permission: constant.vatPermission.dataPreview.dataPreviewCode, url: '#/vat/previewData'
});
// }
// else if (data[constant.vatPermission.dataPreview.outputInvoice.queryCode]) {
// $scope.menus.push({
// name: 'previewData', state: 'previewData', num: 2,
// permission: constant.vatPermission.dataPreview.dataPreviewCode, url: '#/vat/previewData'
// });
subMenus.push({
name: 'previewData.outputInvoice', state: 'previewData.outputInvoice', num: 2,
permission: constant.vatPermission.dataPreview.outputInvoice.queryCode, url: '#/vat/previewData/outputInvoice'
});
subMenus.push({
name: 'previewData.outputoffInvoice', state: 'previewData.outputoffInvoice', num: 2,
permission: constant.vatPermission.dataPreview.outputInvoice.queryCode, url: '#/vat/previewData/outputoffInvoice'
});
}
// else if (data[constant.vatPermission.dataPreview.customInvoice.queryCode]) {
// $scope.menus.push({
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment