Commit 062c42aa authored by zhkwei's avatar zhkwei

CIT报表生成迁移计算逻辑

parent aa2b62ac
package pwc.taxtech.atms.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import pwc.taxtech.atms.constant.enums.EnumServiceType;
import pwc.taxtech.atms.dpo.ReportDto;
import pwc.taxtech.atms.dto.OperationResultDto;
import pwc.taxtech.atms.service.impl.CitReportServiceImpl;
import pwc.taxtech.atms.vat.service.impl.ReportServiceImpl;
import java.util.List;
import java.util.Optional;
/**
* @author zhikai.z.wei
* @description CIT报表生成(数据处理)
*/
@RestController
@RequestMapping(value = "api/v1/citReport")
public class CitReportController {
@Autowired
ReportServiceImpl reportService;
@Autowired
CitReportServiceImpl citReportService;
/**
* 获取CIT所有要生成的报表模板相关信息,
* 注意CIT不存在月份期间
* @param projectId
* @param serviceType
* @return
*/
@RequestMapping(value = "citTemplate/{projectId}/{serviceType}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public OperationResultDto<List<ReportDto>> getCitTemplate(@PathVariable String projectId, @PathVariable int serviceType) {
return citReportService.getReportTemplate(projectId, EnumServiceType.getEnumByCode(serviceType));
}
/**
* 生成CIT所有的报表
* @param projectId
* @param generator
* @param mergeManual
* @return
*/
@RequestMapping(value = "generateByTotal/{projectId}/{mergeManual}", method = RequestMethod.POST,
produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity generateAllData(@PathVariable String projectId,
@RequestParam Optional<String> generator, @PathVariable Boolean mergeManual) {
return ResponseEntity.ok(citReportService.generateCitData(projectId, EnumServiceType.CIT, mergeManual,0,null, generator));
}
}
\ No newline at end of file
......@@ -95,8 +95,9 @@ public class CitDataPreviewServiceImpl extends BaseService {
* @return
*/
public PageInfo<CitJournalAdjustDto> getJournalMergeData(CitJournalAdjustDto citJournalAdjustDto) {
CitJournalEntryAdjust citJournalEntryAdjust = beanUtil.copyProperties(citJournalAdjustDto, new CitJournalEntryAdjust());
Page page = PageHelper.startPage(citJournalAdjustDto.getPageInfo().getPageIndex(), citJournalAdjustDto.getPageInfo().getPageSize());
List<CitJournalEntryAdjust> journalMerges = citJournalMapper.getJournalMerge(citJournalAdjustDto.getProjectId());
List<CitJournalEntryAdjust> journalMerges = citJournalMapper.getJournalMerge(citJournalEntryAdjust);
List<CitJournalAdjustDto> journalAdjustDtos = Lists.newArrayList();
journalMerges.forEach(journal -> {
CitJournalAdjustDto citJournalDto = new CitJournalAdjustDto();
......@@ -112,7 +113,8 @@ public class CitDataPreviewServiceImpl extends BaseService {
public int exportJournalMergeData(CitJournalAdjustDto citJournalAdjustDto, OutputStream os) {
try {
List<CitJournalEntryAdjust> journalMerges = citJournalMapper.getJournalMerge(citJournalAdjustDto.getProjectId());
CitJournalEntryAdjust citJournalEntryAdjust = beanUtil.copyProperties(citJournalAdjustDto, new CitJournalEntryAdjust());
List<CitJournalEntryAdjust> journalMerges = citJournalMapper.getJournalMerge(citJournalEntryAdjust);
Map<String, String> header = generalJMHeader();
List<JournalMergeExportDto> cellList = new ArrayList<>();
......
......@@ -126,8 +126,8 @@ public interface CitJournalEntryAdjustMapper extends MyMapper {
/**
* fetch data by projectId
*
* @param projectId
* @param record
* @return List<CitJournalEntryAdjust>
*/
List<CitJournalEntryAdjust> getJournalMerge(String projectId);
List<CitJournalEntryAdjust> getJournalMerge(CitJournalEntryAdjust record);
}
\ No newline at end of file
......@@ -198,6 +198,18 @@
created_by, created_date, late_updated_by,
late_updated_date, create_time, update_time
from cit_journal_entry_adjust where project_id=''
<if test="orgCode != null">
and org_code = #{orgCode,jdbcType=VARCHAR}
</if>
<if test="subjectCode != null">
and subject_code = #{record.subjectCode,jdbcType=VARCHAR}
</if>
<if test="orgName != null">
and org_name = #{orgName,jdbcType=VARCHAR}
</if>
<if test="subjectName != null">
and subject_name = #{subjectName,jdbcType=VARCHAR}
</if>
UNION ALL
select
id, organization_id, project_id, tms_period as period ,date,source, ledger_id, ledger_name, currency_code,
......@@ -206,6 +218,18 @@
segment1_name as org_name, segment3_name as subject_name, accounted_dr, accounted_cr,
created_by, created_date, late_updated_by, late_updated_date, create_time, update_time
from journal_entry where project_id=''
<if test="orgCode != null">
and segment1 = #{orgCode,jdbcType=VARCHAR}
</if>
<if test="subjectCode != null">
and segment3 = #{subjectCode,jdbcType=VARCHAR}
</if>
<if test="orgName != null">
and segment1_name = #{orgName,jdbcType=VARCHAR}
</if>
<if test="subjectName != null">
and segment3_name = #{subjectName,jdbcType=VARCHAR}
</if>
</select>
</mapper>
\ No newline at end of file
......@@ -985,7 +985,7 @@ init-row="initRow" init-col="initCol" service-type="\'6\'" is-document-list="tru
function ($scope, $stateParams, appTranslation) {
appTranslation.load([appTranslation.cit]);
}],
template: '<cit-caculate-data></cit-caculate-data>',
template: '<cit-calculate-data></cit-calculate-data>',
}
},
resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit),
......
......@@ -105,5 +105,6 @@
"CreditAmount": "Credit Amount",
"BeginningBalance": "Beginning Balance",
"EndingBalance": "Ending Balance",
"Attribute": "Attribute"
"Attribute": "Attribute",
"MainBodyCode": "Main Body Code"
}
\ No newline at end of file
......@@ -1140,7 +1140,8 @@
"citSalaryAdvance" : "预提重分类数据源",
"assetLabelNumber" : "资产标签号",
"compensationSaleAmount" : "赔偿/变卖金额",
"EAMDisposal" : "EAM资产处理金额"
"EAMDisposal" : "EAM资产处理金额",
"MainBodyCode": "主体代码"
}
\ No newline at end of file
<div class="popover">
<div class="popover-content">
<div>
<table class=" table table-responsive">
<tr>
<td><span translate="TaxAccountDifference"></span></td>
<td>
<!--税会差异的选择-->
<div class="input-group">
<div class="option" style="display: inline-block">
<div id="taxAccountDifferenceButton" dx-select-box="taxAccountDifferenceOptions"></div>
</div>
</div>
</td>
</tr>
<tr>
<td><span translate="AccountCode"></span></td>
<td>
<div class="input-group">
<input class="form-control " type="text" id="accountCode" placeholder=""
ng-model="filterData.accountCode">
<a class="input-group-addon btn btn-sm" ng-click="popTheParentCode()"><i
class="fa fa-columns" aria-hidden="true"></i></a>
</div>
</td>
</tr>
<tr>
<td><span translate="AccountName"></span></td>
<td><input class="form-control " type="text" id="accountName" placeholder=""
ng-model="filterData.accountName"></td>
</tr>
<tr>
<td><span translate="DebitOpeningBalance"></span></td>
<td>
<div>
<input class="form-control input-width-small" style="width: 115px; text-align: right;"
type="text" id="debitOpeningBalanceFrom" ng-keyup="PWC.inputNumberFormat(this);"
placeholder="" ng-model="filterData.debitOpeningBalanceFrom">
-
<input class="form-control input-width-small" style="width: 115px; text-align: right; "
type="text" id="debitOpeningBalanceTo" ng-keyup="PWC.inputNumberFormat(this);"
placeholder="" ng-model="filterData.debitOpeningBalanceTo">
</div>
</td>
</tr>
<tr>
<td><span translate="CreditOpeningBalance"></span></td>
<td>
<div>
<input class="form-control input-width-small" style="width: 115px; text-align: right; "
type="text" id="creditOpeningBalanceFrom" ng-keyup="PWC.inputNumberFormat(this);"
placeholder="" ng-model="filterData.creditOpeningBalanceFrom">
-
<input class="form-control input-width-small" style="width: 115px; text-align: right; "
type="text" id="creditOpeningBalanceTo" ng-keyup="PWC.inputNumberFormat(this);"
placeholder="" ng-model="filterData.creditOpeningBalanceTo">
</div>
</td>
</tr>
<tr>
<td><span translate="AccumulatedDebitAmount"></span></td>
<td>
<div>
<input class="form-control input-width-small" style="width: 115px; text-align: right; "
type="text" id="accumulatedDebitAmountFrom" ng-keyup="PWC.inputNumberFormat(this);"
placeholder="" ng-model="filterData.accumulatedDebitAmountFrom">
-
<input class="form-control input-width-small" style="width: 115px; text-align: right; "
type="text" id="accumulatedDebitAmountTo" ng-keyup="PWC.inputNumberFormat(this);"
placeholder="" ng-model="filterData.accumulatedDebitAmountTo">
</div>
</td>
</tr>
<tr>
<td><span translate="AccumulatedCreditAmount"></span></td>
<td>
<div>
<input class="form-control input-width-small" style="width: 115px; text-align: right; "
type="text" id="accumulatedCreditAmountFrom" ng-keyup="PWC.inputNumberFormat(this);"
placeholder="" ng-model="filterData.accumulatedCreditAmountFrom">
-
<input class="form-control input-width-small" style="width: 115px; text-align: right; "
type="text" id="accumulatedCreditAmountTo" ng-keyup="PWC.inputNumberFormat(this);"
placeholder="" ng-model="filterData.accumulatedCreditAmountTo">
</div>
</td>
</tr>
<tr>
<td><span translate="DebitClosingBalance"></span></td>
<td>
<div>
<input class="form-control input-width-small" style="width: 115px; text-align: right; "
type="text" id="debitClosingBalanceFrom" ng-keyup="PWC.inputNumberFormat(this);"
placeholder="" ng-model="filterData.debitClosingBalanceFrom">
-
<input class="form-control input-width-small" style="width: 115px; text-align: right; "
type="text" id="debitClosingBalanceTo" ng-keyup="PWC.inputNumberFormat(this);"
placeholder="" ng-model="filterData.debitClosingBalanceTo">
</div>
</td>
</tr>
<tr>
<td><span translate="CreditClosingBalance"></span></td>
<td>
<div>
<input class="form-control input-width-small" style="width: 115px; text-align: right;"
type="text" id="creditClosingBalanceFrom" ng-keyup="PWC.inputNumberFormat(this);"
placeholder="" ng-model="filterData.creditClosingBalanceFrom">
-
<input class="form-control input-width-small" style="width: 115px; text-align: right; "
type="text" id="creditClosingBalanceTo" ng-keyup="PWC.inputNumberFormat(this);"
placeholder="" ng-model="filterData.creditClosingBalanceTo">
</div>
</td>
</tr>
</table>
</div>
<div class="row">
<div style="float:right">
<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" style="margin-right:15px" type="button" ng-click="doDataFilterReset()">
<span class="fa fa-times" aria-hidden="true"> </span> <span translate="Reset"></span>
</button>
</div>
</div>
</div>
</div>
......@@ -989,9 +989,9 @@
//scrolling: { mode: "virtual" },
noDataText: $translate.instant('AccountVoucher_DataGrid_NoDataText'),
height: '99%',
filterRow: {
visible: true
},
// filterRow: {
// visible: true
// },
onRowUpdating: function (e) {
var data = $.extend({}, e.oldData, e.newData);
if(data.isRetain == true)
......@@ -1005,6 +1005,10 @@
targetArray.push(data);
},
onToolbarPreparing: function (e) {
e.toolbarOptions.items.unshift({
location: "after",
template: "totalGroupCount"
});
var toolbarItems = e.toolbarOptions.items;
var savebutton = _.find(e.toolbarOptions.items, function (m) { return m.name === "saveButton" });
var defaultFun = savebutton.options.onClick;
......
......@@ -6,7 +6,11 @@
<span class="active" ng-click="switchTab($event,2)">{{'FixedAssets' | translate}}</span><span
ng-click="switchTab($event,3)">{{'LongTermPrepaid' | translate}}</span><span
ng-click="switchTab($event,4)">{{'InvisibleAssets' | translate}}</span>
<!--税会差异的选择-->
<!--<div class="option" style="display: inline-block">-->
<!--<span>{{'TaxAccountDifference' | translate}}</span>-->
<!--<div id="taxAccountDifferenceButton" dx-select-box="taxAccountDifferenceOptions"></div>-->
<!--</div>-->
</div>
</div>
<!--导入界面-->
......@@ -50,19 +54,19 @@
<!--</div>-->
<div class="form-group">
<div class="col-sm-5">
<input class="form-control" type="text" name="fileName"
value="{{file ? file.name : '' | limitString :25}}" readonly placeholder="" required>
</div>
<div class="col-sm-4">
<button type="button" type="file" ngf-select ng-model="file" accept=".xls,.xlsx"
class="btn btn-secondary browse">{{'SelectFile' | translate}}
</button>
</div>
<div class="col-sm-3">
<button class="btn btn-vat-primary" style="height: 34px" translate="ImportBtn"
ng-click="importDataNew()"></button>
</div>
<div class="col-sm-5">
<input class="form-control" type="text" name="fileName"
value="{{file ? file.name : '' | limitString :25}}" readonly placeholder="" required>
</div>
<div class="col-sm-4">
<button type="button" type="file" ngf-select ng-model="file" accept=".xls,.xlsx"
class="btn btn-secondary browse">{{'SelectFile' | translate}}
</button>
</div>
<div class="col-sm-3">
<button class="btn btn-vat-primary" style="height: 34px" translate="ImportBtn"
ng-click="importDataNew()"></button>
</div>
</div>
......@@ -152,11 +156,6 @@
<!--计算结果显示界面-->
<div id="tab_Assets" ng-if="displayType >1">
<!--税会差异的选择-->
<div class="option">
<span>{{'TaxAccountDifference' | translate}}</span>
<div id="taxAccountDifferenceButton" dx-select-box="taxAccountDifferenceOptions"></div>
</div>
<!--计算结果-->
<div class="total-Wrapper">
<span>{{'TotalNumber' | translate}}<span class="total_span">{{TotalCount}}</span> {{'RecordCount' | translate}}</span>
......@@ -170,7 +169,18 @@
<!--资产清单结果集-->
<div class="dt-asset-result">
<!--<asset-list-edit-modal asset-type="displayType-1" type="0"></asset-list-edit-modal>-->
<div id="assetsResultGrid" dx-data-grid="assetsResultGridOptions"></div>
<div id="assetsResultGrid" dx-data-grid="assetsResultGridOptions">
<div style="display: inline-block" data-options="dxTemplate:{ name:'totalGroupCount' }">
<button class="filter-button"
atms-popover ng-mouseenter="prepareSummary()"
popover-container="body" popover-auto-hide="true" data-overwrite="true"
use-optimized-placement-algorithm="true"
data-placement="bottom"
data-templateurl="/app/cit/import/cit-import-asset-list/cit-import-asset-list-search.html">
<i class="fa fa-filter" aria-hidden="true"></i>
</button>
</div>
</div>
</div>
</div>
......
......@@ -43,6 +43,7 @@
.active {
background-color: #F91000;
}
}
}
......@@ -303,19 +304,6 @@
/*font-size:13px !important;*/
}
}
.option {
margin-top: 10px;
margin-bottom: 10px;
}
.option > span {
margin-right: 10px;
}
.option > .dx-selectbox {
display: inline-block;
vertical-align: middle;
}
}
.error-list-modal {
......@@ -402,3 +390,62 @@
}
}
.option {
margin-top: 10px;
margin-bottom: 10px;
}
.option > span {
margin-right: 10px;
}
.option > .dx-selectbox {
display: inline-block;
vertical-align: middle;
}
.filter-button {
width: 30px;
//margin-top: 16px;
}
.popover {
min-width: 370px;
.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;
}
}
......@@ -5,52 +5,35 @@
<table class="table table-responsive">
<tr>
<td>
<span translate="TBAccountCode"></span>
<input class="form-control input-width-middle" type="text" id="segment3" ng-model="queryParams.segment3" />
<span translate="AccountCode"></span>
<input class="form-control input-width-middle" type="text" id="subjectCode" ng-model="queryParams.subjectCode" />
</td>
</tr>
<tr>
<td>
<span translate="AccountName"></span>
<input class="form-control input-width-middle" type="text" id="segment3Name" ng-model="queryParams.segment3Name" />
<input class="form-control input-width-middle" type="text" id="subjectName" ng-model="queryParams.subjectName" />
</td>
</tr>
<tr>
<td>
<span translate="ProfitCenterCode"></span>
<input class="form-control input-width-middle" type="text" id="segment5" ng-model="queryParams.segment5" />
<span translate="orgCode"></span>
<input class="form-control input-width-middle" type="text" id="orgCode" ng-model="queryParams.orgCode" />
</td>
</tr>
<tr>
<td>
<span translate="ProfitCenterName"></span>
<input class="form-control input-width-middle" type="text" id="segment5Name" ng-model="queryParams.segment5Name" />
<span translate="orgName"></span>
<input class="form-control input-width-middle" type="text" id="orgName" ng-model="queryParams.orgName" />
</td>
</tr>
<tr>
<td>
<span translate="ProductCode"></span>
<input class="form-control input-width-middle" type="text" id="segment6" ng-model="queryParams.segment6" />
</td>
</tr>
<tr>
<td>
<span translate="TBProductName"></span>
<input class="form-control input-width-middle" type="text" id="segment6Name" ng-model="queryParams.segment6Name" />
</td>
</tr>
<tr>
<td>
<span translate="Summary"></span>
<input class="form-control input-width-middle" type="text" id="description" ng-model="queryParams.description" />
</td>
</tr>
<tr>
<td>
<span translate="IsContainsAdjustmentRecord"></span>
<input class="form-control input-width-middle" type="text" id="containsAdjustmentRecord" ng-model="queryParams.containsAdjustmentRecord" />
<span translate="DocumentDate"></span>
<input class="form-control input-width-middle" type="text" id="documentDate" ng-model="queryParams.documentDate" />
</td>
</tr>
<!--<tr>
<td>
<span translate="InvoiceFPLXQuery"></span>
......
......@@ -39,15 +39,11 @@
pageInfo: {},
periodStart: '',
periodEnd: '',
// orgId: '',
// segment3: null,
// segment3Name: null,
// segment5: null,
// segment5Name: null,
// segment6: null,
// segment6Name: null,
// description: null,
// containsAdjustmentRecord: null
subjectCode: null,
subjectName: null,
orgCode: null,
orgName: null,
documentDate: null,
projectId: vatSessionService.project.id
};
};
......@@ -153,39 +149,33 @@
//将选择了的查询条件显示在grid上方
var doDataFilter = function (removeData) {
// if ($scope.queryParams.periodStart > $scope.queryParams.periodEnd) {
// $scope.queryParams.periodEnd = $scope.queryParams.periodStart;
// }
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.segment3 === null) {
// $scope.queryParams.segment3 = '';
// }
// if ($scope.queryParams.segment3Name === null) {
// $scope.queryParams.segment3Name = '';
// }
// if ($scope.queryParams.segment5 === null) {
// $scope.queryParams.segment5Name = '';
// }
// if ($scope.queryParams.segment6 === null) {
// $scope.queryParams.segment6 = '';
// }
// if ($scope.queryParams.segment6Name === null) {
// $scope.queryParams.segment6Name = '';
// }
// if ($scope.queryParams.description === null) {
// $scope.queryParams.description = '';
// }
// if ($scope.queryParams.invoiceType === null) {
// $scope.InvoiceType.selected = undefined;
// }
// });
// }
if (!PWC.isNullOrEmpty(removeData)) {
var removeItem = removeData.split("|");
removeItem.forEach(function (v) {
$scope.queryParams[v] = null;
if ($scope.queryParams.subjectCode === null) {
$scope.queryParams.subjectCode = '';
}
if ($scope.queryParams.subjectName === null) {
$scope.queryParams.subjectName = '';
}
if ($scope.queryParams.orgCode === null) {
$scope.queryParams.orgCode = '';
}
if ($scope.queryParams.orgName === null) {
$scope.queryParams.orgName = '';
}
if ($scope.queryParams.documentDate === null) {
$scope.queryParams.documentDate = '';
}
});
}
loadJournalEntryDataFromDB(1);
if ($scope.criteriaList.length > 6) {
......@@ -204,14 +194,11 @@
pageInfo: {},
periodStart: '',
periodEnd: '',
// segment3: null,
// segment3Name: null,
// segment5: null,
// segment5Name: null,
// segment6: null,
// segment6Name: null,
// description: null,
// containsAdjustmentRecord: null
subjectCode: null,
subjectName: null,
orgCode: null,
orgName: null,
documentDate: null,
projectId: vatSessionService.project.id
};
$scope.queryParams.periodStart = $scope.startMonth;
......@@ -318,8 +305,10 @@
{ name: $translate.instant('JournalName'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span >{{row.entity.name}}</span></div>' },
{ name: $translate.instant('DocumentNo'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span >{{row.entity.voucherNum}}</span></div>' },
{ name: $translate.instant('Summary'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.description}}</span></div>' },
{ name: $translate.instant('MainBodyCode'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.orgCode}}</span></div>' },
{ name: $translate.instant('MainBodyDescription'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.orgName}}</span></div>' },
// { name: $translate.instant('CostCenterDescription'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.segment2Name}}</span></div>' },
{ name: $translate.instant('AccountCode'),width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.subjectCode}}</span></div>' },
{ name: $translate.instant('SubjectDescription'),width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.subjectName}}</span></div>' },
// { name: $translate.instant('AuxiliaryAccountDescription'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.segment4Name}}</span></div>' },
// { name: $translate.instant('ProfitCenterDescription'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.segment5Name}}</span></div>' },
......
<div id="cit-calculate-data">
<div class="cit-calculate-data-title" ng-if="tasks.length > 0">
<!--<span translate="vatCaculateDataDesc"></span>-->
<!--<button class="btn btn-vat-primary" translate="startCaculateData" ng-disabled="readonly" ng-click="startCaculate()"></button>-->
<button class="btn btn-vat-primary" translate="startCaculateData" ng-disabled="readonly" ng-click="startCaculate2()"></button>
<span ng-click="showOperateLogPop()"><i class="fa fa-file-excel-o" aria-hidden="true"></i>{{'Remarks' | translate}}</span>
</div>
<!--<div class="vat-caculate-data-progress progress progress-striped active">
<div class="progress-bar progress-bar-warning" role="progressbar"
aria-valuenow="60" aria-valuemin="0" aria-valuemax="100"
ng-style="{width:progress+'%'}">
<span>{{progress}}</span>
</div>
</div>-->
<div class="vat-caculate-data-progress">
<div class="Bar" ng-style="{width:progress+'%'}">
<div>{{progress}}%</div>
</div>
</div>
<div class="vat-caculate-data-list">
<perfect-scrollbar class="scroller" wheel-propagation="true" wheel-speed="1" min-scrollbar-length="20">
<div ng-repeat="group in tasks" ng-include="'group_template'" />
</perfect-scrollbar>
</div>
<script type="text/ng-template" id="group_template">
<div>
<div ng-if="group.items.length >= 1" class="task" style="margin-bottom:5px;padding-left:20px;">{{group.name}}</div>
<ul ng-if="group.items.length >= 1" ng-repeat="task in group.items track by $index">
<li ng-include="'task_template'" />
</ul>
<!-- <div ng-if="group.items.length == 1" ng-repeat="task in group.items track by $index" style="height:42px;" ng-include="'task_template'" />-->
</script>
<script type="text/ng-template" id="task_template">
<div class="task">
<span>{{task.name}}</span>
<span ng-if="task.status == 'unstarted'">{{task.text}}</span>
<span ng-if="task.status == 'unstarted'" style="align-content:center;"><i class="fa fa-hourglass-o" aria-hidden="true" style="font-size:18px;"></i></span>
<span ng-if="task.status == 'completed'">{{task.text}}</span>
<span ng-if="task.status == 'completed'" style="align-content:center;"><i class="fa fa-check" aria-hidden="true" style="color:#73BF00;font-size:28px;"></i></span>
<span ng-if="task.status == 'processing'">{{task.text}}</span>
<!--<span ng-if="task.status == 'processing'" class='loader--audioWave' />-->
<span ng-if="task.status == 'processing'" class='load' style="align-content:center;">
<span class="rect1"></span>
<span class="rect2"></span>
<span class="rect3"></span>
<span class="rect4"></span>
<spanmoduleType class="rect5"></spanmoduleType>
<!--<img src="/app-resources/images/loading.gif" alt="loading...">-->
</span>
<span ng-if="task.status == 'error'" style="color:red;">{{task.text}}</span>
<span ng-if="task.status == 'error'" style="color:red;align-content:center;"><i class="fa fa-times" aria-hidden="true" style="color:red;font-size:28px;"></i></span>
</div>
</script>
<vat-operate-log period="period" module-type="moduleid" is-show="isShowLog"></vat-operate-log>
</div>

vatModule.directive('citCalculateData', ['$log',
function ($log) {
'use strict';
$log.debug('citCalculateData.ctor()...');
return {
restrict: 'E',
templateUrl: '/app/cit/reduction/cit-calculate-data/cit-calculate-data.html' + '?_=' + Math.random(),
replace: true,
scope: {},
controller: 'citCalculateDataController',
link: function ($scope, $element, $attr) {
$scope.token = $('input[name="__RequestVerificationToken"]').val();
}
};
}
]);
\ No newline at end of file
@import "~/app-resources/less/theme.less";
#cit-calculate-data {
width: 100%;
height: 100%;
padding: 0 10px;
position: relative;
background-color: @color-white;
.cit-calculate-data-title {
margin: 20px 0;
height: 30px;
line-height: 30px;
vertical-align: middle;
/*
span {
font-weight: bold;
}
*/
button {
background-color: @color-deep-red;
color: @color-white;
}
span {
float: right;
margin: 0 0 20px 0;
cursor: pointer;
}
}
.vat-caculate-data-progress {
width: 100%;
border: 1px solid @color-light-gray;
border-radius: 8px;
height: 16px;
text-align: center;
line-height: 16px;
font-weight: bold;
color: #fff;
overflow: hidden;
.Bar {
width: 50%;
height: 16px;
background: @color-red;
}
}
.vat-caculate-data-list {
height: calc(~"100% - 100px");
width: 100%;
margin: 10px 0;
padding: 0 5px;
overflow-y: auto;
font-weight: bold;
font-size: 14px;
.scroller {
/*white-space: pre-line;*/
overflow-y: hidden;
position: relative;
height: 100%;
}
.task {
width: 100%;
height: 40px;
line-height: 40px;
vertical-align: middle;
border-bottom: 1px solid @color-light-gray;
> span:first-child {
margin-left: 20px;
width:auto;
float: left;
}
> span {
float: right;
margin-right: 20px;
width: 80px;
height: 39px;
line-height: 39px;
vertical-align: middle;
align-content:center;
}
}
li {
list-style: none;
img {
width: 28px;
height: 28px;
}
}
.loader--audioWave {
width: 3em;
height: 2em;
background: linear-gradient(@color-orange, @color-orange) 0 50%, linear-gradient(@color-orange, @color-orange) 0.625em 50%, linear-gradient(@color-orange, @color-orange) 1.25em 50%, linear-gradient(@color-orange, @color-orange) 1.875em 50%, linear-gradient(@color-orange, @color-orange) 2.5em 50%;
background-repeat: no-repeat;
background-size: 0.5em 0.25em, 0.5em 0.25em, 0.5em 0.25em, 0.5em 0.25em, 0.5em 0.25em;
animation: audioWave 1.5s linear infinite;
}
@keyframes audioWave {
25% {
background: linear-gradient(#FFD700, #FFD700) 0 50% 0.5em 2em, linear-gradient(@color-orange, @color-orange) 0.625em 50%, linear-gradient(@color-orange, @color-orange) 1.25em 50%, linear-gradient(@color-orange, @color-orange) 1.875em 50%, linear-gradient(@color-orange, @color-orange) 2.5em 50%;
background-repeat: no-repeat;
background-size: 0.5em 100%, 0.5em 0.25em, 0.5em 0.25em, 0.5em 0.25em, 0.5em 0.25em;
}
37.5% {
background: linear-gradient(@color-orange, @color-orange) 0 50%, linear-gradient(#FFD700, #FFD700) 0.625em 50%, linear-gradient(@color-orange, @color-orange) 1.25em 50%, linear-gradient(@color-orange, @color-orange) 1.875em 50%, linear-gradient(@color-orange, @color-orange) 2.5em 50%;
background-repeat: no-repeat;
background-size: 0.5em 0.25em, 0.5em 100%, 0.5em 0.25em, 0.5em 0.25em, 0.5em 0.25em;
}
50% {
background: linear-gradient(@color-orange, @color-orange) 0 50%, linear-gradient(@color-orange, @color-orange) 0.625em 50%, linear-gradient(#FFD700, #FFD700) 1.25em 50%, linear-gradient(@color-orange, @color-orange) 1.875em 50%, linear-gradient(@color-orange, @color-orange) 2.5em 50%;
background-repeat: no-repeat;
background-size: 0.5em 0.25em, 0.5em 0.25em, 0.5em 100%, 0.5em 0.25em, 0.5em 0.25em;
}
62.5% {
background: linear-gradient(@color-orange, @color-orange) 0 50%, linear-gradient(@color-orange, @color-orange) 0.625em 50%, linear-gradient(@color-orange, @color-orange) 1.25em 50%, linear-gradient(#FFD700, #FFD700) 1.875em 50%, linear-gradient(@color-orange, @color-orange) 2.5em 50%;
background-repeat: no-repeat;
background-size: 0.5em 0.25em, 0.5em 0.25em, 0.5em 0.25em, 0.5em 100%, 0.5em 0.25em;
}
75% {
background: linear-gradient(@color-orange, @color-orange) 0 50%, linear-gradient(@color-orange, @color-orange) 0.625em 50%, linear-gradient(@color-orange, @color-orange) 1.25em 50%, linear-gradient(@color-orange, @color-orange) 1.875em 50%, linear-gradient(#FFD700, #FFD700) 2.5em 50%;
background-repeat: no-repeat;
background-size: 0.5em 0.25em, 0.5em 0.25em, 0.5em 0.25em, 0.5em 0.25em, 0.5em 100%;
}
}
.load {
width: 4em;
height: 2em;
> span {
background-color: @color-red;
width: 0.5em;
height: 2em;
display: inline-block;
transform: scaleY(0.125);
animation: stretchdelay 1.5s linear infinite;
}
.rect2 {
-webkit-animation-delay: 0.4s;
animation-delay: 0.4s;
}
.rect3 {
-webkit-animation-delay: 0.6s;
animation-delay: 0.6s;
}
.rect4 {
-webkit-animation-delay: 0.8s;
animation-delay: 0.8s;
}
.rect5 {
-webkit-animation-delay: 1.0s;
animation-delay: 1.0s;
}
}
@keyframes stretchdelay {
20% {
transform: scaleY(1.0);
-webkit-transform: scaleY(1.0);
background-color: @color-yellow;
}
0%, 40%, 100% {
transform: scaleY(0.125);
-webkit-transform: scaleY(0.125);
}
}
}
}
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