Commit ce95e9d0 authored by gary's avatar gary

1、fixbug

2、数据处理校验日志20%
parent 4e1f53ea
......@@ -9,6 +9,7 @@ import pwc.taxtech.atms.common.message.ErrorMessage;
import pwc.taxtech.atms.dpo.PagingDto;
import pwc.taxtech.atms.dto.*;
import pwc.taxtech.atms.dto.dataimport.DataImportParam;
import pwc.taxtech.atms.dto.dataimport.DataProcessParam;
import pwc.taxtech.atms.dto.input.CamelPagingResultDto;
import pwc.taxtech.atms.dto.vatdto.TrialBalanceDto;
import pwc.taxtech.atms.dto.vatdto.TrialBalanceParam;
......@@ -218,6 +219,12 @@ public class DataImportController extends BaseController {
return new CamelPagingResultDto<>(dataImportService.displayImportLog(param));
}
/* @ResponseBody
@RequestMapping(value = "displayProcessLog", method = RequestMethod.POST)
public CamelPagingResultDto<DataProcessLogDto> displayProcessLog(@RequestBody DataProcessParam param) {
return new CamelPagingResultDto<>(dataImportService.displayProcessLog(param));
}*/
@ResponseBody
@RequestMapping(value = "callExtractFinancialData", method = RequestMethod.POST)
public OperationResultDto callExtractFinancialData(@RequestBody DataExtractParam dataExtractParam) {
......
......@@ -46,7 +46,7 @@ import java.util.List;
@RestController
@RequestMapping(value = "api/v1/template")
public class TemplateController extends BaseController implements ServletContextAware {
public class TemplateController extends BaseController{
private ServletContext servletContext;
......@@ -242,7 +242,6 @@ public class TemplateController extends BaseController implements ServletContext
@RequestMapping(value = "file/downloadTemplate", method = RequestMethod.GET)
public void fileDownload(@RequestParam Integer fileType, @RequestParam(required=false) Integer serviceType, HttpServletResponse response){
//获取网站部署路径(通过ServletContext对象),用于确定下载文件位置,从而实现下载
String path = servletContext.getRealPath("/")+"\\WEB-INF\\classes";
String fileName = "";
if(serviceType == null){
fileName = getFileName(fileType);
......@@ -252,9 +251,8 @@ public class TemplateController extends BaseController implements ServletContext
response.setContentType("multipart/form-data");
response.setHeader("Content-Disposition", "attachment;fileName="+fileName+".xlsx");
ServletOutputStream out;
File file = new File(path + "\\document\\DataImport\\" + fileName+".xlsx");
try {
FileInputStream inputStream = new FileInputStream(file);
InputStream inputStream = this.getClass().getResourceAsStream("/document/DataImport/" + fileName+".xlsx");
out = response.getOutputStream();
int b = 0;
byte[] buffer = new byte[512];
......@@ -314,9 +312,4 @@ public class TemplateController extends BaseController implements ServletContext
return null;
}
@Override
public void setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;
}
}
package pwc.taxtech.atms.dto.dataimport;
import pwc.taxtech.atms.dto.input.CamelPagingDto;
public class DataProcessParam {
private CamelPagingDto pageInfo;
//后续添加查询条件
public CamelPagingDto getPageInfo() {
return this.pageInfo;
}
public void setPageInfo(CamelPagingDto pageInfo) {
this.pageInfo = pageInfo;
}
}
......@@ -1420,6 +1420,24 @@ var dataImpModule = angular.module('app.dataImp', ['ui.grid', 'ui.router','ui.gr
sticky: true
});
$stateProvider.state({
name: 'recordProcessLog',
url: "/dataImportLog/dataProcessingCheck",
dsr: true,
views: {
'importContent': {
controller: ['$scope', '$state','appTranslation',
function ($scope, $state, appTranslation) {
$scope.state = $state;
appTranslation.load([appTranslation.appPart]);
}],
template: '<process-log></process-log>'
}
},
resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.dataImp),
sticky: true
});
$stateProvider.state({
name: 'certifiedInvoicesListImportDistribution',
url: "/importDistribution/certifiedInvoicesList",
......
......@@ -1880,6 +1880,10 @@
"extractInvoiceData": "Extract Invoice Data",
"ExtractInvoiceDataTitle": "Extract Invoice Data",
"TBInterCompany": "Inter-Company",
"~MustBeEndOneApp": "I Must be the End One, please!",
"dataValidate" : "data Validate"
"dataValidate" : "data Validate",
"DataProcessLog": "Data Process Log",
"DataProcessLogTitle": "Data Process Log",
"~MustBeEndOneApp": "I Must be the End One, please!"
}
\ No newline at end of file
......@@ -2122,6 +2122,9 @@
"SelectedOrganization": "选择机构",
"SelectedDataType": "选择数据类型",
"DataProcessLog": "数据处理校验记录",
"DataProcessLogTitle": "数据处理校验记录",
"extractFinancialData": "财务数据抽取",
"ExtractFinancialDataTitle": "财务数据抽取",
......@@ -2147,7 +2150,7 @@
"RevenueGetOrgError": "获取机构信息失败",
"RevenueAddSuccess": "添加成功",
"RevenueUpdateSuccess": "更新成功",
"dataValidate" : "数据校验",
"dataValidate": "数据校验",
"RevDetail": "收入明细",
"RevSearchAccountCode": "科目代码",
"RevSearchAccountName": "科目名称",
......@@ -2173,61 +2176,36 @@
"RevDetailType": "收入类型",
"RevDetailCategory": "收入类别",
"RevDetailTaxOn": "计税方法",
"RevDetail": "收入明细",
"RevSearchAccountCode": "科目代码",
"RevSearchAccountName": "科目名称",
"RevSearchProfitCenterCode": "利润中心代码",
"RevSearchProfitCenterName": "利润中心名称",
"RevSearchProductCode": "产品代码",
"RevSearchProductName": "产品名称",
"RevSearchType": "收入类型",
"RevSearchCategory": "收入类别",
"RevSearchTaxOn": "计税方法",
"RevDetailSearch": "查询",
"RevDetailReset": "重置",
"RevDetailColSerialNo": "序号",
"RevDetailColSubject": "主体",
"RevDetailColAccount": "科目",
"RevDetailColProfitCenter": "利润中心",
"RevDetailProduct": "产品",
"RevDetailColSubjectExp": "主体说明",
"RevDetailColAccountExp": "科目说明",
"RevDetailColProfitCenterExp": "利润中心说明",
"RevDetailProductExp": "产品说明",
"RevDetailAmount": "发生额",
"RevDetailType": "收入类型",
"RevDetailCategory": "收入类别",
"RevDetailTaxOn": "计税方法",
"BillDetail": "开票明细",
"BillEditRevenueType": "编辑收入类型",
"BillDtlHandle": "操作",
"BillSearchType": "发票类型",
"BillSearchCustomer": "客户名称",
"BillSearchProfitCenter": "利润中心代码",
"BillSearchContent": "开票内容",
"BillSearchDate": "开票日期",
"BillSearchRevenueType": "收入类型",
"BillSearchDepartment": "申请部门",
"BillSearchTaxRate": "税率",
"BillSearchNumber": "发票号码",
"BillDtlSearch": "查询",
"BillDtlReset": "重置",
"BillDtlMoreSearch": "更多查询",
"BillDtlShrink": "收起",
"BillDtlColSerialNo": "序号",
"BillDtlColSubject": "开票主体",
"BillDtlColCustCompany": "客户公司名称",
"BillDtlColType": "发票类型",
"BillDtlColContent": "开票内容",
"BillDtlColAmount": "开票金额",
"BillDtlColTaxRate": "税率",
"BillDtlColTaxAmount": "税额",
"BillDtlColOANo": "OA申请单号",
"BillDtlColDepartment": "所属部门",
"BillDtlColDate": "开票日期",
"BillDtlColCode": "发票代码",
"BillDtlColNumber": "发票号码",
"BillDtlColRevenueType": "收入类型",
"BillDtlUpdateSuccess": "更新成功",
"BillDetail": "开票明细",
"BillEditRevenueType": "编辑收入类型",
"BillDtlHandle": "操作",
"BillSearchType": "发票类型",
"BillSearchCustomer": "客户名称",
"BillSearchProfitCenter": "利润中心代码",
"BillSearchContent": "开票内容",
"BillSearchDate": "开票日期",
"BillSearchRevenueType": "收入类型",
"BillSearchDepartment": "申请部门",
"BillSearchTaxRate": "税率",
"BillSearchNumber": "发票号码",
"BillDtlSearch": "查询",
"BillDtlReset": "重置",
"BillDtlMoreSearch": "更多查询",
"BillDtlShrink": "收起",
"BillDtlColSerialNo": "序号",
"BillDtlColSubject": "开票主体",
"BillDtlColCustCompany": "客户公司名称",
"BillDtlColType": "发票类型",
"BillDtlColContent": "开票内容",
"BillDtlColAmount": "开票金额",
"BillDtlColTaxRate": "税率",
"BillDtlColTaxAmount": "税额",
"BillDtlColOANo": "OA申请单号",
"BillDtlColDepartment": "所属部门",
"BillDtlColDate": "开票日期",
"BillDtlColCode": "发票代码",
"BillDtlColNumber": "发票号码",
"BillDtlColRevenueType": "收入类型",
"BillDtlUpdateSuccess": "更新成功",
"~MustBeEndOneApp": "我必须是最后一个!"
}
// web service proxy for voucher
webservices.factory('dataProcessService', ['$log', 'vatReportService', function ($log, vatReportService) {
'use strict';
function Job(serviceType, tplId, month, status) {
this.serviceType = serviceType;
this.tplId = tplId;
this.month = month;
this.status = status;
}
var jobsArr = [];
//执行更新项目状态的任务
function status_job() {
var job = jobsArr.shift();
if (job) {
//更新每个状态值
vatReportService.updateProcInfo(job.serviceType, job.tplId, job.month, job.status).then(function (resData) {
setTimeout(status_job, 100);
$log.log("status_job request: " + job.tplId + ", " + job.status);
});
} else {
setTimeout(status_job, 1000);
}
}
//页面容错机制
//1. 后台查询当前项目有没有正在 处理中的报表, 间隔连续两次没查询到,证明没有处理中的,更新页面状态
var timeInterval = 15 * 1000;
var noProcItemCount = 0;
var _serviceType, _projectId, _month, _status,_cb;
function heartBeat() {
vatReportService.heartBeat(_projectId, _month).then(function (resData) {
//if ($scope.isStartProcData) {//如果是当前处理页面
$log.info("heartBeat......" + noProcItemCount);
if (resData && resData.data.result) {
//没有处理中加一次
noProcItemCount++;
//超过两次,就更新状态
if (noProcItemCount > 3) {
//1. 更新项目状态,当前项目状态更改为 处理已完成
//vatReportService.updateProcInfo($scope.serviceType, vatSessionService.project.id, vatSessionService.month, getStatus('completed')).then(function (resData) {
vatReportService.updateProcInfo(_serviceType, _projectId, _month, _status).then(function (resData) {
//更新页面状态
_cb();
timeInterval = 60 * 1000;//60s
});
//注意后台要考虑的问题, 为了防止 signalR 的断线情况,将报表完成状态放到后台更新,前台通知更新显示而已
}
} else {
//表示有处理中
noProcItemCount = 0;
}
if (noProcItemCount == 0) {
timeInterval = 60 * 1000 * 3;//正在处理中,降低频率
} else {
timeInterval = 15 * 1000;
}
setTimeout(heartBeat, timeInterval);
//}
});
}
return {
startJob: function () {
setTimeout(status_job, 100);
},
addJob: function (serviceType, tplId, month, status) {
jobsArr.push(new Job(serviceType, tplId, month, status));
},
startHeartBeat: function (serviceType, projectId, month, status,cb) {
_serviceType = serviceType;
_projectId = projectId;
_month = month;
_status = status;
_cb = cb;
setTimeout(heartBeat, timeInterval);
}
};
// web service proxy for voucher
webservices.factory('dataProcessService', ['$log', 'vatReportService', function ($log, vatReportService) {
'use strict';
function Job(serviceType, tplId, month, status) {
this.serviceType = serviceType;
this.tplId = tplId;
this.month = month;
this.status = status;
}
var jobsArr = [];
//执行更新项目状态的任务
function status_job() {
var job = jobsArr.shift();
if (job) {
//更新每个状态值
vatReportService.updateProcInfo(job.serviceType, job.tplId, job.month, job.status).then(function (resData) {
setTimeout(status_job, 100);
$log.log("status_job request: " + job.tplId + ", " + job.status);
});
} else {
setTimeout(status_job, 1000);
}
}
//页面容错机制
//1. 后台查询当前项目有没有正在 处理中的报表, 间隔连续两次没查询到,证明没有处理中的,更新页面状态
var timeInterval = 15 * 1000;
var noProcItemCount = 0;
var _serviceType, _projectId, _month, _status,_cb;
function heartBeat() {
vatReportService.heartBeat(_projectId, _month).then(function (resData) {
//if ($scope.isStartProcData) {//如果是当前处理页面
$log.info("heartBeat......" + noProcItemCount);
if (resData && resData.data.result) {
//没有处理中加一次
noProcItemCount++;
//超过两次,就更新状态
if (noProcItemCount > 3) {
//1. 更新项目状态,当前项目状态更改为 处理已完成
//vatReportService.updateProcInfo($scope.serviceType, vatSessionService.project.id, vatSessionService.month, getStatus('completed')).then(function (resData) {
vatReportService.updateProcInfo(_serviceType, _projectId, _month, _status).then(function (resData) {
//更新页面状态
_cb();
timeInterval = 60 * 1000;//60s
});
//注意后台要考虑的问题, 为了防止 signalR 的断线情况,将报表完成状态放到后台更新,前台通知更新显示而已
}
} else {
//表示有处理中
noProcItemCount = 0;
}
if (noProcItemCount == 0) {
timeInterval = 60 * 1000 * 3;//正在处理中,降低频率
} else {
timeInterval = 15 * 1000;
}
setTimeout(heartBeat, timeInterval);
//}
});
}
return {
startJob: function () {
setTimeout(status_job, 100);
},
addJob: function (serviceType, tplId, month, status) {
jobsArr.push(new Job(serviceType, tplId, month, status));
},
startHeartBeat: function (serviceType, projectId, month, status,cb) {
_serviceType = serviceType;
_projectId = projectId;
_month = month;
_status = status;
_cb = cb;
setTimeout(heartBeat, timeInterval);
},
displayProcessLog: function (queryParams) {
return $http.post('/DataImport/displayProcessLog', queryParams, apiConfig.create());
}
};
}]);
\ No newline at end of file
......@@ -134,10 +134,10 @@
}
}
};
getImportIDStatus();
getImportLog();
};
var getImportIDStatus = function () {
var getImportLog = function () {
vatImportService.displayImportLog($scope.pagingOptions,constant.importFileType.undefined).success(function (data) {
if (data && data.list) {
$scope.ImportLogGridSource = data.list;
......
citModule.controller('processLogController', ['$scope', '$log', '$translate', '$timeout', '$q', '$interval'
, 'apiInterceptor', 'Upload', 'vatImportService', 'SweetAlert', 'uiGridConstants', '$uibModal'
, 'vatSessionService', 'enums',
function ($scope, $log, $translate, $timeout, $q, $interval
, apiInterceptor, Upload, vatImportService, SweetAlert, uiGridConstants, $uibModal
, vatSessionService, enums) {
'use strict';
$scope.period = $scope.periodId;
$scope.moduleid = enums.vatModuleEnum.Import_TrialBalance;
$scope.chunkSize = 100000;
$scope.projectID = vatSessionService.project.id;
$scope.startRowNum = 2;
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth();
$scope.selectedDate = new Date(vatSessionService.year, vatSessionService.month - 1, 1);
$scope.startDate = new Date(year - 20, 1, 1);
$scope.endDate = new Date(year + 20, 1, 1);
$scope.viewMode = 1;
$scope.dateFormat = $translate.instant('dateFormat4YearMonth');
//初始化ack-pagination
$scope.pagingOptions = {
pageIndex: 1, //当前页码
totalItems: 0, //总数据
totalPages: 10, //总页数
maxSize: 5, //分页数字的限制。
pageSize: constant.page.pageSizeArrary[3], //每页多少条数据,100条
pageSizeString: constant.page.pageSizeArrary[3].toString(),
firstPage: $translate.instant('PagingFirstPage'),
previousPage: $translate.instant('PagingPreviousPage'),
nextPage: $translate.instant('PagingNextPage'),
lastPage: $translate.instant('PagingLastPage')
};
//初始化查询参数
$scope.queryParams = {
pageInfo: {
pageIndex: 1, //当前页码
totalItems: 0, //总数据
totalPages: 10, //总页数
maxSize: 5, //分页数字的限制。
pageSize: constant.page.pageSizeArrary[3], //每页多少条数据,100条
pageSizeString: constant.page.pageSizeArrary[3].toString(),
firstPage: $translate.instant('PagingFirstPage'),
previousPage: $translate.instant('PagingPreviousPage'),
nextPage: $translate.instant('PagingNextPage'),
lastPage: $translate.instant('PagingLastPage'),
}
};
var loadProcessLogInfoDatagrid = function () {
$scope.processLogGridOptions = {
bindingOptions: {
dataSource: 'ProcessLogGridSource'
},
showBorders: true,
columns: [{
dataField: "id",
visible: false,
allowHeaderFiltering: false,
caption: $translate.instant('id')
}, {
dataField: "taxpayerIdNum",
width: '15%',
allowHeaderFiltering: false,
caption: $translate.instant('TaxpayerIdNum')
}, {
dataField: "companyCode",
allowHeaderFiltering: false,
caption: $translate.instant('CompanyCode'),
width: '15%'
}, {
dataField: "companyName",
allowHeaderFiltering: false,
width: '27%',
caption: $translate.instant('CompanyName')
}, {
dataField: "periodYear",
allowHeaderFiltering: false,
width: '5%',
caption: $translate.instant('YearPeriod')
}, {
dataField: "periodMonth",
allowHeaderFiltering: false,
width: '10%',
caption: $translate.instant('TMSPeriod')
}, {
dataField: "periodMonth",
allowHeaderFiltering: false,
width: '5%',
caption: $translate.instant('Period')
}, {
dataField: "recordSize",
allowHeaderFiltering: false,
width: '8%',
caption: $translate.instant('RecordSize')
}, {
dataField: "errorMsg",
allowHeaderFiltering: false,
width: '15%',
caption: $translate.instant('Status')
}
],
onContentReady: function (e) {
$scope.accountingRateListInstance = e.component;
var totalCount = e.component.totalCount();
if (totalCount > 0) {
$scope.totalCount = totalCount;
}
},
loadPanel: {
enabled: false
},
selection: {
mode: "single"
},
grouping: {
autoExpandAll: false
},
allowColumnResizing: true,
columnAutoWidth: true,
showRowLines: true,
showColumnLines: true,
rowAlternationEnabled: true, //单双行颜色
noDataText: $translate.instant('NoDataText'),
selectAllText: $translate.instant('SelectAll'),
headerFilter: {
visible: false,
texts: {
cancel: $translate.instant('Cancel'),
ok: $translate.instant('Confirm'),
emptyValue: $translate.instant('Empty'),
selectAllText: $translate.instant('SelectAll')
}
}
};
getProcessLog();
};
var getProcessLog = function () {
vatImportService.displayProcessLog($scope.queryParams).success(function (data) {
if (data && data.list) {
$scope.ProcessLogGridSource = data.list;
$scope.pagingOptions.totalItems = data.pageInfo.totalCount;
}else {
SweetAlert.error($translate.instant('SystemError'));
}
});
};
var initPagingControl = function (totalItemsCount) {
$scope.pagingOptions.totalItems = totalItemsCount;
};
// 检查用户机构权限
var checkUserOrganizationPermissionList = function () {
var list = [];
var userManageTemp = constant.vatPermission.dataImport.balanceSheet;
list.push(userManageTemp.importCode);
$scope.hasImportPermission = false;
$scope.$root.checkUserOrganizationPermissionList(list).success(function (data) {
$scope.hasImportPermission = data[userManageTemp.importCode];
});
};
//控制明细信息中删除权限
var getUserPermission = function () {
var list = [];
var code = constant.vatPermission.dataImport.balanceSheet.importCode;
list.push(code);
$scope.$root.checkUserOrganizationPermissionList(list).success(function (data) {
$scope.hasEditPermission = data[code];
});
};
var setButtonWrapStyle = function () {
if ($scope.fileName) {
return { width: "100%" };
}
};
var setGridStyle = function () {
if ($scope.showTotalSecondRow) {
return { 'margin-top': '60px' }
}
else {
return { 'margin-top': '55px' }
}
};
var initDatePicker = function () {
var ele1 = $("#periodDatepicker");
ele1.datepicker({
startDate: $scope.startDate,
endDate: $scope.endDate,
viewMode: $scope.viewMode,
minViewMode: $scope.viewMode,
autoclose: true, //选中之后自动隐藏日期选择框
clearBtn: true, //清除按钮
todayBtn: false, //今日按钮
format: $scope.dateFormat //日期格式,详见 http://bootstrap-datepicker.readthedocs.org/en/release/options.html#format
});
ele1.datepicker("setDate", $scope.selectedDate);
};
var initParam = function () {
$scope.initPagingControl = initPagingControl;
$scope.setButtonWrapStyle = setButtonWrapStyle;
$scope.setGridStyle = setGridStyle;
};
//开始
(function initialize() {
$log.debug('ImportLogController.ctor()...');
initParam();
checkUserOrganizationPermissionList();
getUserPermission();
loadProcessLogInfoDatagrid();
initDatePicker();
$timeout(function () {
$scope.isLoadComplete = true;
}, 500);
})();
}
]);
\ No newline at end of file
<div class="process-log">
<!--标题-->
<div class="nav-wrapper">
<div class="nav-header" translate="DataProcessLogTitle"></div>
</div>
<div id="tab_total">
<div class="dt-init-wrapper">
<div class="dx-viewport grid-container">
<div id="processLogGridContainer" dx-data-grid="processLogGridOptions"
style="margin-top: 30px;">
</div>
</div>
<!--<div class="page-footer">
<ack-pagination page-options="pagingOptions"
refresh-table="refreshConfigGrid()"></ack-pagination>
</div>-->
</div>
</div>
</div>
citModule.directive('processLog', ['$log',
function ($log) {
'use strict';
$log.debug('processLog.ctor()...');
return {
restrict: 'E',
templateUrl: '/app/dataImport/log/process-log/process-log.html' + '?_=' + Math.random(),
scope: {
serviceTypeId: "=?",
periodId: "=?"
},
controller: 'processLogController',
link: function (scope, element) {
$('.main-contents')[0].style.width = "260px";
$('.data-import-contents')[0].style.display = "block";
$('.main-contents')[0].style.float = "left";
$('.main-contents')[0].style.styleFloat = "left";
$('.main-contents')[0].style.cssFloat = "left";
}
};
}
]);
\ No newline at end of file
@import "~/app-resources/less/theme.less";
.process-log {
/*background-color: @color-white;*/
padding-left: 20px;
/*min-height: 800px;*/
height: 96%;
.nav-wrapper {
/*padding-bottom: 5px;
border-bottom: 1px solid #DBD8D3;*/
.nav-header {
height: 54px;
line-height: 54px;
font-family: "Microsoft YaHei Bold", "Microsoft YaHei Regular", "Microsoft YaHei";
font-weight: 700;
font-style: normal;
font-size: 15px;
color: #333;
display: inline-block;
}
.nav-tab {
span {
display: inline-block;
height: 34px;
line-height: 34px;
padding: 0 10px;
background-color: #B90808;
color: #FFF;
font-family: "Microsoft YaHei";
font-weight: 400;
font-style: normal;
font-size: 14px;
cursor: pointer;
}
.active {
background-color: #F91000;
}
}
.alert-warning {
background-color: #FDE2DE;
cursor: pointer;
}
.alert {
color: #CF2D1B;
font-weight: bold;
display: inline-block;
padding: 5px;
margin-left: 60px;
margin-bottom: 0px;
i {
font-size: 20px;
vertical-align: middle;
margin-right: 5px;
}
}
.operation-wrapper {
margin: 15px 25px 10px 10px;
span {
cursor: pointer;
}
}
}
.dropdown-common() {
display: inline-block;
.select-button {
background-color: #F5F5F5;
padding: 6px 0;
width: 100px;
}
.caret {
margin-top: 8px;
}
.dropdown-menu {
min-width: 100px;
li {
text-align: center;
min-height: 0px;
height: 30px;
line-height: 30px;
color: #000;
font-weight: normal;
&:hover {
background-color: #F91000;
color: #FFF;
}
}
}
}
#tab_total {
display: block;
height: calc(~'100% - 40px');
position: relative;
.import-wrapper {
span {
margin-left: 10px;
color: #333;
font-family: "Microsoft YaHei";
font-style: normal;
font-size: 14px;
font-weight: bold;
}
.period-picker {
width: 150px;
border: 1px solid #c7c5c0;
display: inline-block;
line-height: 20px;
margin-top: 7px;
}
.imp-subheader {
display: inline-block;
font-size: 15px;
height: 30px;
line-height: 30px;
vertical-align: middle;
border: none;
select {
appearance: none;
-moz-appearance: none;
-webkit-appearance: none;
background: transparent;
}
}
.dropdown {
.dropdown-common();
}
input {
width: 50px;
outline: none;
border-radius: 3px;
border: 1px solid #3c3a36;
padding: 2px;
text-align: center;
}
> button:last-child {
float: right;
margin-right: 20px;
}
.btn-wrapper {
border-radius: 5px;
background-color: #e0301e;
color: #FFF;
display: inline-block;
float: right;
margin-right: 10px;
.btn-vat-primary {
min-width: 80px;
}
}
}
.dt-init-wrapper {
max-width: 99%;
height: calc(~'100% - 25px');
position: relative;
.dropdown {
.dropdown-common();
i {
color: #F85550;
}
}
.processLogGridContainer {
height: calc(~'100% - 30px');
overflow: hidden;
position: absolute;
top: 0;
bottom: 136px; /* 130 + 6 */
left: 0;
right: 0;
background-color: #FFF;
}
}
.error-info-wrapper {
position: absolute;
height: 150px;
bottom: 0;
left: 0;
right: 0;
overflow: hidden;
background-color: #FFF;
margin-left: -40px;
}
#content-resizer {
width: 110%;
position: absolute;
height: 4px;
bottom: 150px;
left: 0;
right: 0;
background-color: red;
cursor: n-resize;
margin-left: -40px;
#topIcon {
cursor: pointer;
margin-top: -19px;
width: 38px;
margin-left: 46%;
z-index: 999;
bottom: -381px;
text-align: center;
display: block !important;
}
}
.dt-import-wrapper {
margin: 60px 0;
max-width: 99%;
overflow: auto;
height: calc(~"100% - 35px");
.dropdown {
.dropdown-common();
i {
color: #F85550;
}
}
}
}
.error-list-modal {
.modal-title {
color: #FF0000;
}
.modal-body {
max-height: 300px;
overflow-y: auto;
table {
border: 1px solid #CCC;
thead tr th {
height: 30px;
border: 1px solid #CCC;
}
tbody tr td {
height: 25px;
border: 1px solid #CCC;
}
}
}
.modal-footer {
text-align: center;
}
}
#tab_detail {
display: none;
}
/*覆写ack-pagination.less中:.page-size, .pagination 中的margin演示 */
.page-form-group{
float:right;
.page-size{
margin:0;
}
.pagination {
margin:0;
}
}
}
.tb-model-period-dropdow-popup {
width: 400px;
height: 500px;
position: fixed;
top: 25%;
left: 40%;
.modal-dialog {
width: 100%;
height: 90%;
margin: 20px auto;
.modal-content {
width: 100%;
.modal-body {
height: 90%;
}
}
}
}
#totalWrapper {
margin: 5px 10px 10px -10px;
width: 100%;
padding-left: 10px;
font-family: Microsoft YaHei;
font-size: 13px;
float:right;
.total_span{
color: #B4122A !important;
background-color:#ddd !important;
font-size: 12px !important;
font-weight:bold !important;
border-radius:10px !important;
padding-left: 8px !important;
padding-right: 8px !important;
}
.total-column{
width:15%;
float:left;
padding-left: 15px;
}
}
\ No newline at end of file
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