使用html-docx-js-typescript实现功能
<page-header [autoBreadcrumb]="false"/>
<nz-card>
<form [formGroup]="formItem" [nzLayout]="'inline'" nz-form>
<nz-form-item>
<nz-form-label>周期</nz-form-label>
<nz-form-control>
<nz-select formControlName="zqType">
<nz-option nzLabel="季度" nzValue="季度"/>
<nz-option nzLabel="年" nzValue="年"/>
<nz-option nzLabel="月" nzValue="月"/>
</nz-select>
</nz-form-control>
</nz-form-item>
@if (this.formItem.value.zqType === '季度') {
<nz-form-item>
<nz-form-label>选择日期</nz-form-label>
<nz-form-control>
<nz-date-picker nzMode="quarter" formControlName="timeJd" nzFormat="yyyy年Q季度"
[nzDateRender]="tplQuarterRender"/>
<ng-template #tplQuarterRender let-current>
<div class="ant-picker-cell-inner">{{ getQuarter(current) }}</div>
</ng-template>
</nz-form-control>
</nz-form-item>
}
@if (this.formItem.value.zqType === '年') {
<nz-form-item>
<nz-form-label>选择日期</nz-form-label>
<nz-form-control>
<nz-date-picker nzMode="year" formControlName="timeNian"/>
</nz-form-control>
</nz-form-item>
}
@if (this.formItem.value.zqType === '月') {
<nz-form-item>
<nz-form-label>选择日期</nz-form-label>
<nz-form-control>
<nz-date-picker nzMode="month" formControlName="timeYue"/>
</nz-form-control>
</nz-form-item>
}
<nz-form-item>
<nz-form-label nzFor="shipName" nzRequired>轮驳</nz-form-label>
<nz-form-control nzErrorTip="不能为空!">
<nz-tree-select
#nts
(nzTreeCheckBoxChange)="checkBoxChange($event)"
(nzTreeClick)="nzEvent($event)"
[nzAllowClear]="false"
[nzCheckStrictly]="true"
[nzDefaultExpandAll]="true"
[nzMaxTagCount]="3"
[nzMaxTagPlaceholder]="omittedPlaceHolder"
[nzNodes]="nodes"
formControlName="shipName"
nzPlaceHolder="请选择"
nzShowSearch
nzVirtualHeight="300px"
style="width: 250px"
/>
<ng-template #omittedPlaceHolder let-omittedValues>and {{ omittedValues.length }} more...</ng-template>
</nz-form-control>
</nz-form-item>
<button (click)="search()" nz-button nzType="primary">查询</button>
<button (click)=" exportDivToWord( {
title: '2024年度项目报告',
author: '技术部',
margins: { top: 1.2, bottom: 1.2 },
fonts: { body: '微软雅黑', heading: '黑体' }
})" nz-button nzType="primary">下载
</button>
</form>
<div #baogao *ngIf="formItem.value.zqType === '月' && yuedeobj !== null" style="margin-top: 1%">
<h2 style="text-align: center">{{ getriqi() }}{{ getcbname() }}能耗分析报告</h2>
<div id="bjs" style="width: 90%; border: 1px black solid; margin: 0 auto; background-color: gainsboro">
<p style="text-indent: 2em">
{{ getcbname() }}
本月燃油消耗{{ yuedeobj?.bqryl }} 吨,环比上月{{
yuedeobj?.bqrylhb >= 0 ? '增加' + yuedeobj?.bqrylhb + '吨' : '减少' + Math.abs(yuedeobj?.bqrylhb) + '吨'
}}
,同比去年同期{{
yuedeobj?.bqryltb >= 0 ? '增加' + yuedeobj?.bqryltb + '吨' : '减少' + Math.abs(yuedeobj?.bqryltb) + '吨'
}}
。作业艘次{{ yuedeobj?.bqsoci }} 艘次,环比上月{{
yuedeobj?.bqsocihb >= 0 ? '增加' + yuedeobj?.bqsocihb + '艘次' : '减少' + Math.abs(yuedeobj?.bqsocihb) + '艘次'
}}
,同比去年同期{{
yuedeobj?.bqsocitb >= 0 ? '增加' + yuedeobj?.bqsocitb + '艘次' : '减少' + Math.abs(yuedeobj?.bqsocitb) + '艘次'
}}
。主机小时{{ yuedeobj?.bqzjxs }}小时,环比上月{{
yuedeobj?.bqzjxshb >= 0 ? '增加' + yuedeobj?.bqzjxshb + '小时' : '减少' + Math.abs(yuedeobj?.bqzjxshb) + '小时'
}},同比去年同{{
yuedeobj?.bqzjxstb >= 0 ? '增加' + yuedeobj?.bqzjxstb + '小时' : '减少' + Math.abs(yuedeobj?.bqzjxstb) + '小时'
}}。航行里程{{ yuedeobj?.bqlc }} 海里,环比上月{{
yuedeobj?.bqlchb >= 0 ? '增加' + yuedeobj?.bqlchb + '海里' : '减少' + Math.abs(yuedeobj?.bqlchb) + '海里'
}}
,同比去年同期{{ yuedeobj?.bqlctb >= 0 ? '增加' + yuedeobj?.bqlctb + '海里' : '减少' + Math.abs(yuedeobj?.bqlctb) + '海里' }}
。</p
>
<p style="text-indent: 2em">
作业艘次单耗{{ yuedeobj?.bqscdh }} 吨/艘次,环比上月{{
yuedeobj?.bqscdhhb >= 0 ? '上升' + yuedeobj?.bqscdhhb + '%' : '下降' + Math.abs(yuedeobj?.bqscdhhb) + '%'
}}
,同比去年同期{{
yuedeobj?.bqscdhtb >= 0 ? '上升' + yuedeobj?.bqscdhtb + '%' : '下降' + Math.abs(yuedeobj?.bqscdhtb) + '%'
}}
。主机小时单耗{{ yuedeobj?.bqzjxsdh }}吨/小时,环比上月{{
yuedeobj?.sqzjxsdhhb >= 0 ? '上升' + yuedeobj?.sqzjxsdhhb + '%' : '下降' + Math.abs(yuedeobj?.sqzjxsdhhb) + '%'
}}
,同比去年同期{{
yuedeobj?.tqzjxsdhtb >= 0 ? '上升' + yuedeobj?.tqzjxsdhtb + '%' : '下降' + Math.abs(yuedeobj?.tqzjxsdhtb) + '%'
}}
。 航行里程单耗{{ yuedeobj?.bqlcdh }}吨/海里,环比上月{{
yuedeobj?.sqlcdhhb >= 0 ? '上升' + yuedeobj?.sqlcdhhb + '%' : '下降' + Math.abs(yuedeobj?.sqlcdhhb) + '%'
}}
,同比去年同期{{ yuedeobj?.tqlcdhtb >= 0 ? '上升' + yuedeobj?.tqlcdhtb + '%' : '下降' + Math.abs(yuedeobj?.tqlcdhtb) + '%' }}
平均艘次航行里程{{ yuedeobj?.bqpjschxlc }}海里/艘次,{{
yuedeobj?.sqpjschxlc >= 0 ? '上升' + yuedeobj?.sqpjschxlc + '%' : '下降' + Math.abs(yuedeobj?.sqpjschxlc) + '%'
}}
,同比去年同期{{ yuedeobj?.tqpjschxlc >= 0 ? '上升' + yuedeobj?.tqpjschxlc + '%' : '下降' + Math.abs(yuedeobj?.tqpjschxlc) + '%' }}
。
</p>
<p style="text-indent: 2em">
一、环比分析及影响因素:(环比{{
yuedeobj?.bqrylhb >= 0 ? '增加' + yuedeobj?.bqrylhb + '吨' : '减少' + Math.abs(yuedeobj?.bqrylhb) + '吨'
}})
</p>
<p *ngFor="let hbyItem of hbysList" style="text-indent: 4em">
{{ hbyItem }}
</p>
<div id="tu1" style="height: 40vh; width: 40vw; margin: 0 auto"></div>
<p style="text-indent: 2em">
二、同比分析及影响因素:(同比{{
yuedeobj?.bqryltb >= 0 ? '增加' + yuedeobj?.bqryltb + '吨' : '减少' + Math.abs(yuedeobj?.bqryltb) + '吨'
}})
</p>
<p *ngFor="let tbyItem of tbysList" style="text-indent: 4em">
{{ tbyItem }}
</p>
<div id="tu2" style="height: 40vh; width: 40vw; margin: 0 auto"></div>
</div>
</div>
<div #baogao *ngIf="formItem.value.zqType === '季度' && yuedeobj !== null" style="margin-top: 1%">
<h2 style="text-align: center">{{ getriqi() }}{{ getcbname() }}能耗分析报告</h2>
<div style="width: 90%; border: 1px black solid; margin: 0 auto; background-color: gainsboro">
<p style="text-indent: 2em">
{{ getcbname() }}
本季度燃油消耗{{ yuedeobj?.bqryl }} 吨,环比上季度{{
yuedeobj?.bqrylhb >= 0 ? '增加' + yuedeobj?.bqrylhb + '吨' : '减少' + Math.abs(yuedeobj?.bqrylhb) + '吨'
}}
,同比去年同期{{
yuedeobj?.bqryltb >= 0 ? '增加' + yuedeobj?.bqryltb + '吨' : '减少' + Math.abs(yuedeobj?.bqryltb) + '吨'
}}
。作业艘次{{ yuedeobj?.bqsoci }} 艘次,环比上季度{{
yuedeobj?.bqsocihb >= 0 ? '增加' + yuedeobj?.bqsocihb + '艘次' : '减少' + Math.abs(yuedeobj?.bqsocihb) + '艘次'
}}
,同比去年同期{{
yuedeobj?.bqsocitb >= 0 ? '增加' + yuedeobj?.bqsocitb + '艘次' : '减少' + Math.abs(yuedeobj?.bqsocitb) + '艘次'
}}
。主机小时{{ yuedeobj?.bqzjxs }}小时,环比上季度{{
yuedeobj?.bqzjxshb >= 0 ? '增加' + yuedeobj?.bqzjxshb + '小时' : '减少' + Math.abs(yuedeobj?.bqzjxshb) + '小时'
}},同比去年同{{
yuedeobj?.bqzjxstb >= 0 ? '增加' + yuedeobj?.bqzjxstb + '小时' : '减少' + Math.abs(yuedeobj?.bqzjxstb) + '小时'
}}。航行里程{{ yuedeobj?.bqlc }} 海里,环比上季度{{
yuedeobj?.bqlchb >= 0 ? '增加' + yuedeobj?.bqlchb + '海里' : '减少' + Math.abs(yuedeobj?.bqlchb) + '海里'
}}
,同比去年同期{{ yuedeobj?.bqlctb >= 0 ? '增加' + yuedeobj?.bqlctb + '海里' : '减少' + Math.abs(yuedeobj?.bqlctb) + '海里' }}
。</p
>
<p style="text-indent: 2em">
作业艘次单耗{{ yuedeobj?.bqscdh }} 吨/艘次,环比上季度{{
yuedeobj?.bqscdhhb >= 0 ? '上升' + yuedeobj?.bqscdhhb + '%' : '下降' + Math.abs(yuedeobj?.bqscdhhb) + '%'
}}
,同比去年同期{{
yuedeobj?.bqscdhtb >= 0 ? '上升' + yuedeobj?.bqscdhtb + '%' : '下降' + Math.abs(yuedeobj?.bqscdhtb) + '%'
}}
。主机小时单耗{{ yuedeobj?.bqzjxsdh }}吨/小时,环比上季度{{
yuedeobj?.sqzjxsdhhb >= 0 ? '上升' + yuedeobj?.sqzjxsdhhb + '%' : '下降' + Math.abs(yuedeobj?.sqzjxsdhhb) + '%'
}}
,同比去年同期{{
yuedeobj?.tqzjxsdhtb >= 0 ? '上升' + yuedeobj?.tqzjxsdhtb + '%' : '下降' + Math.abs(yuedeobj?.tqzjxsdhtb) + '%'
}}
。 航行里程单耗{{ yuedeobj?.bqlcdh }}吨/海里,环比上季度{{
yuedeobj?.sqlcdhhb >= 0 ? '上升' + yuedeobj?.sqlcdhhb + '%' : '下降' + Math.abs(yuedeobj?.sqlcdhhb) + '%'
}}
,同比去年同期{{ yuedeobj?.tqlcdhtb >= 0 ? '上升' + yuedeobj?.tqlcdhtb + '%' : '下降' + Math.abs(yuedeobj?.tqlcdhtb) + '%' }}
平均艘次航行里程{{ yuedeobj?.bqpjschxlc }}海里/艘次,{{
yuedeobj?.sqpjschxlc >= 0 ? '上升' + yuedeobj?.sqpjschxlc + '%' : '下降' + Math.abs(yuedeobj?.sqpjschxlc) + '%'
}}
,同比去年同期{{ yuedeobj?.tqpjschxlc >= 0 ? '上升' + yuedeobj?.tqpjschxlc + '%' : '下降' + Math.abs(yuedeobj?.tqpjschxlc) + '%' }}
。
</p>
<p style="text-indent: 2em">
一、环比分析及影响因素:(环比{{
yuedeobj?.bqrylhb >= 0 ? '增加' + yuedeobj?.bqrylhb + '吨' : '减少' + Math.abs(yuedeobj?.bqrylhb) + '吨'
}})
</p>
<p *ngFor="let hbyItem of hbysList" style="text-indent: 4em">
{{ hbyItem }}
</p>
<div id="tu1" style="height: 40vh; width: 40vw; margin: 0 auto"></div>
<p style="text-indent: 2em">
二、同比分析及影响因素:(同比{{
yuedeobj?.bqryltb >= 0 ? '增加' + yuedeobj?.bqryltb + '吨' : '减少' + Math.abs(yuedeobj?.bqryltb) + '吨'
}})
</p>
<p *ngFor="let tbyItem of tbysList" style="text-indent: 4em">
{{ tbyItem }}
</p>
<div id="tu2" style="height: 40vh; width: 40vw; margin: 0 auto"></div>
</div>
</div>
<div #baogao *ngIf="formItem.value.zqType === '年' && yuedeobj !== null" style="margin-top: 1%">
<p style="text-indent: 2em">
一、环比分析及影响因素:(环比{{
yuedeobj?.bqrylhb >= 0 ? '增加' + yuedeobj?.bqrylhb + '吨' : '减少' + Math.abs(yuedeobj?.bqrylhb) + '吨'
}})
</p>
<div id="tu1" style="height: 40vh; width: 40vw; margin: 0 auto"></div>
</div>
</div>
</nz-card>
import {NgForOf, NgIf} from '@angular/common';
import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, inject, OnInit, ViewChild} from '@angular/core';
import {FormBuilder, FormGroup, FormsModule, ReactiveFormsModule, Validators} from '@angular/forms';
import {PageHeaderComponent} from '@delon/abc/page-header';
import * as echarts from 'echarts';
import {EChartsType} from 'echarts';
import {saveAs} from 'file-saver';
import {asBlob} from 'html-docx-js-typescript';
import html2canvas from 'html2canvas';
import {jsPDF} from 'jspdf';
import moment from 'moment';
import {NzButtonModule} from 'ng-zorro-antd/button';
import {NzCardComponent} from 'ng-zorro-antd/card';
import {NzDatePickerComponent} from 'ng-zorro-antd/date-picker';
import {NzFormControlComponent, NzFormDirective, NzFormItemComponent, NzFormLabelComponent} from 'ng-zorro-antd/form';
import {NzColDirective, NzRowDirective} from 'ng-zorro-antd/grid';
import {NzMessageService} from 'ng-zorro-antd/message';
import {NzOptionComponent, NzSelectComponent} from 'ng-zorro-antd/select';
import {NzSkeletonComponent} from 'ng-zorro-antd/skeleton';
import {NzTabComponent, NzTabSetComponent} from 'ng-zorro-antd/tabs';
import {NzFormatEmitEvent} from 'ng-zorro-antd/tree';
import {NzTreeSelectComponent} from 'ng-zorro-antd/tree-select';
import {EnergyDataQueryService} from '../../data-query/data-query.service';
import {LcdhComponent} from '../dhfx/dhuanbifx/lcdh/lcdh.component';
import {SouciComponent} from '../dhfx/dhuanbifx/souci/souci.component';
import {WydhComponent} from '../dhfx/dhuanbifx/wydh/wydh.component';
import {XsdhComponent} from '../dhfx/dhuanbifx/xsdh/xsdh.component';
import {ZjzdhComponent} from '../dhfx/dhuanbifx/zjzdh/zjzdh.component';
import {CbynbgService} from './cbynbg.service';
// 添加:定义配置项接口
interface DocxOptions {
title?: string; // 文档标题(可选)
author?: string; // 文档作者(可选)
margins?: {
// 页边距(可选)
top?: number; // 上边距(英寸)
bottom?: number; // 下边距(英寸)
left?: number; // 左边距(英寸)
right?: number; // 右边距(英寸)
};
fonts?: {
// 字体配置(可选)
body?: string; // 正文字体(如 '微软雅黑')
heading?: string; // 标题字体(如 '黑体')
};
}
@Component({
selector: 'app-cbynbg',
standalone: true,
imports: [
NzButtonModule,
PageHeaderComponent,
LcdhComponent,
NzCardComponent,
NzTabComponent,
NzTabSetComponent,
SouciComponent,
WydhComponent,
XsdhComponent,
ZjzdhComponent,
FormsModule,
NzColDirective,
NzFormControlComponent,
NzFormItemComponent,
NzFormLabelComponent,
NzRowDirective,
NzTreeSelectComponent,
ReactiveFormsModule,
NzDatePickerComponent,
NzOptionComponent,
NzSelectComponent,
NzDatePickerComponent,
NzFormDirective,
NgIf,
NzSkeletonComponent,
NgForOf
],
templateUrl: './cbynbg.component.html',
styles: ``
})
export class CbynbgComponent implements OnInit {
@ViewChild('nts') nts: NzTreeSelectComponent | undefined;
@ViewChild('baogao') baogao!: ElementRef;
nodes: any = [];
option2: any = {
tooltip: {
trigger: 'item'
},
series: []
};
option: any = {
tooltip: {
trigger: 'item'
},
series: []
};
shipList: any = null;
formItem: FormGroup;
yuedeobj: any = null;
hbysList: any[] = [];
tbysList: any[] = [];
jddeobj: any[] = [];
ndeobj: any[] = [];
protected readonly Math = Math;
private readonly mess = inject(NzMessageService);
private readonly cbynbgs = inject(CbynbgService);
private readonly dataQueryService = inject(EnergyDataQueryService);
private tu1echars!: EChartsType;
private tu2echars!: EChartsType;
constructor(
private fb: FormBuilder,
private cd: ChangeDetectorRef
) {
this.formItem = fb.group({
zqType: ['月'],
timeJd: [new Date()],
timeNian: [new Date()],
timeYue: [new Date()],
shipName: [null, [Validators.required]]
});
}
nzEvent(event: NzFormatEmitEvent): void {
if (event.node?.level === 1) {
event.node!.isChecked = false;
event.node.getParentNode()!.isChecked = false;
for (let child of event.node.getChildren()) {
child.isChecked = !child.isChecked;
}
}
}
getQuarter(date: Date): string {
const quarter = Math.floor((date.getMonth() + 3) / 3);
const quarterMapper: Record<string, string> = {1: '一', 2: '二', 3: '三', 4: '四'};
return `${quarterMapper[quarter]}季度`;
}
checkBoxChange($event: NzFormatEmitEvent) {
let a = new Set();
for (let nodesKey of $event.nodes!) {
a.add(nodesKey.getParentNode()?.key);
}
if (a.size > 1) {
let a1 = new Set();
for (let nodesKey of $event.nodes!) {
a1.add(nodesKey.getParentNode()?.getParentNode()?.key);
}
if (a1.size > 1 || a1.has(null) || a1.has(undefined)) {
this.mess.create('error', '只能选择同类型的耗能单元!');
}
}
}
ngOnInit(): void {
this.cbynbgs.getShipList().subscribe((res: any) => {
this.shipList = res;
});
this.dataQueryService.getTreeDatareturnId().subscribe(res => {
this.nodes = [];
this.nodes.push(res);
});
this.formItem.patchValue({shipName: '总'});
setTimeout(() => {
this.search();
}, 500);
}
getcbname() {
if (this.nts?.value[0] == '总') {
return '总体船舶';
} else if (this.nts?.value[0] == '临港' || this.nts?.value[0] == '轮驳') {
return `${this.nts?.value[0]}公司`;
} else if (this.shipList !== null && this.shipList !== undefined) {
let a = Array.of(...this.shipList);
for (let shipListElement in a) {
if (a[shipListElement].id == this.nts?.value[0]) {
return a[shipListElement].shipName;
}
}
} else {
return '';
}
}
getriqi() {
if ('年' == this.formItem.value.zqType) {
return moment(this.formItem.value.timeNian).format('YYYY年度');
} else if ('月' == this.formItem.value.zqType) {
return moment(this.formItem.value.timeYue).format('YYYY年MM月份');
} else if ('季度' == this.formItem.value.zqType) {
return moment(this.formItem.value.timeJd).format('YYYY年Q季度');
} else {
return '';
}
}
// 将所有ECharts图表替换为图片
async replaceChartsWithImages(container: HTMLElement) {
const chartContainersArray1 = Array.from(container.querySelectorAll('#tu1'));
const chartContainersArray2 = Array.from(container.querySelectorAll('#tu2'));
const chartContainersArray = [...chartContainersArray1, ...chartContainersArray2];
for (const chartContainer of chartContainersArray) {
try {
// 获取ECharts实例
const chart = echarts.getInstanceByDom(chartContainer as HTMLDivElement);
if (chart) {
// 获取图表的Base64图片数据
const chartImage = chart.getDataURL({
type: 'png',
pixelRatio: 1, // 提高图片质量
backgroundColor: '#fff'
});
// 创建img元素替换原图表容器
const img = document.createElement('img');
img.src = chartImage;
img.style.width = '50px';
img.style.height = '50px';
img.alt = 'ECharts图表';
img.style.margin = '0 auto';
img.style.border = 'none';
// 替换原容器
chartContainer.parentNode?.replaceChild(img, chartContainer);
}
} catch (error) {
console.error('处理图表时出错:', error);
}
}
}
// 等待图表渲染完成的辅助函数
waitForChartRender(chart: echarts.ECharts) {
return new Promise<void>(resolve => {
if ((chart as any).isReady()) {
resolve();
} else {
chart.on('rendered', () => {
resolve();
chart.off('rendered'); // 避免内存泄漏
});
}
});
}
async exportDivToWord(options?: DocxOptions) {
// 1. 获取目标 div 元素
const baogaoDiv = this.baogao.nativeElement as HTMLElement;
let b = baogaoDiv.cloneNode(true) as HTMLElement;
b.style.backgroundColor = '#fff';
const bjsElement = b.querySelector('#bjs') as HTMLElement;
bjsElement.style.backgroundColor = '#fff';
bjsElement.style.border = 'none';
if (!b) {
alert('未找到指定的 div 元素');
return;
}
await this.replaceChartsWithImages(b);
// 2. 获取 div 的 HTML 内容(包含样式)
const htmlContent = b.outerHTML;
try {
const result: Blob = (await asBlob(htmlContent, options)) as Blob;
// 4. 下载 Word 文件(此时 docxBlob 是已解析的 Blob)
saveAs(result, `aa.docx`, false);
} catch (error) {
console.error('转换失败:', error);
alert('生成 Word 文档时出错,请重试');
}
}
printDivAsPdf() {
console.log(this.baogao.nativeElement);
let a = this.baogao.nativeElement as HTMLElement;
const bjsElement = a.querySelector('#bjs') as HTMLElement; // 获取id="bjs"的子元素
bjsElement.style.backgroundColor = '#fff';
console.log(bjsElement);
html2canvas(a).then((canvas: HTMLCanvasElement) => {
const imgData = canvas.toDataURL('image/png');
const pdf = new jsPDF();
const imgProps = pdf.getImageProperties(imgData);
const pdfWidth = pdf.internal.pageSize.getWidth();
const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width;
pdf.addImage(imgData, 'PNG', 2, 2, pdfWidth, pdfHeight);
pdf.save('printable_echarts_div.pdf');
});
bjsElement.style.backgroundColor = 'gainsboro';
}
search() {
if (this.formItem.valid) {
const params: any = {zqType: this.formItem.value.zqType};
try {
if (this.formItem.value.zqType === '年') {
params['opt'] = moment(this.formItem.value.timeNian).startOf('year').format('yyyy-MM-DD HH:mm:ss');
params['ovt'] = moment(this.formItem.value.timeNian).endOf('year').format('yyyy-MM-DD HH:mm:ss');
}
if (this.formItem.value.zqType === '季度') {
params['ovt'] = moment(this.formItem.value.timeJd).endOf('month').format('yyyy-MM-DD HH:mm:ss');
params['opt'] = moment(this.formItem.value.timeJd).subtract(2, 'month').startOf('month').format('yyyy-MM-DD HH:mm:ss');
}
if (this.formItem.value.zqType === '月') {
params['opt'] = moment(this.formItem.value.timeYue).startOf('month').format('yyyy-MM-DD HH:mm:ss');
params['ovt'] = moment(this.formItem.value.timeYue).endOf('month').format('yyyy-MM-DD HH:mm:ss');
}
if (this.formItem.value.zqType === '日') {
params['opt'] = moment(this.formItem.value.timeRi).startOf('day').format('yyyy-MM-DD HH:mm:ss');
params['ovt'] = moment(this.formItem.value.timeRi).endOf('day').format('yyyy-MM-DD HH:mm:ss');
}
} catch (ex: any) {
this.mess.create('error', '请选择日期范围');
}
if (this.formItem.value.shipName === '总') {
params['ywlx'] = '总';
} else if (Array.of('临港', '轮驳').includes(this.formItem.value.shipName)) {
params['ywlx'] = '公司';
} else {
params['ywlx'] = '船舶';
}
params['xzdnhdy'] = this.formItem.value.shipName;
this.cbynbgs.search(params).subscribe((res: any) => {
if (this.formItem.value.zqType === '月') {
this.yuedeobj = res;
this.cd.detectChanges();
this.hbysList = [];
this.tbysList = [];
// 减少集合
let jshbysList: any[] = [];
//增加集合
let zjhbysList: any[] = [];
// 减少集合
let tjshbysList: any[] = [];
//增加集合
let tzjhbysList: any[] = [];
// 第一项
if (this.yuedeobj.bqsocihb >= 0) {
zjhbysList.push(
`本月作业艘次${this.yuedeobj.bqsoci}艘次,环比上月${
this.yuedeobj?.bqsocihb >= 0 ? `增加${this.yuedeobj?.bqsocihb}艘次` : `减少${Math.abs(this.yuedeobj?.bqsocihb)}艘次`
},约${
this.yuedeobj?.tlscyxyhl >= 0 ? `增加油耗${this.yuedeobj?.tlscyxyhl}吨` : `减少油耗${Math.abs(this.yuedeobj?.tlscyxyhl)}吨`
}`
);
} else {
jshbysList.push(
`本月作业艘次${this.yuedeobj.bqsoci}艘次,环比上月${
this.yuedeobj?.bqsocihb >= 0 ? `增加${this.yuedeobj?.bqsocihb}艘次` : `减少${Math.abs(this.yuedeobj?.bqsocihb)}艘次`
},约${
this.yuedeobj?.tlscyxyhl >= 0 ? `增加油耗${this.yuedeobj?.tlscyxyhl}吨` : `减少油耗${Math.abs(this.yuedeobj?.tlscyxyhl)}吨`
}`
);
}
// 第二项
if (this.yuedeobj?.sqgyhzysc >= 0) {
zjhbysList.push(
`本月高油耗作业艘次${this.yuedeobj?.bqgyhzysc}艘次,环比上月${
this.yuedeobj?.sqgyhzysc >= 0 ? `增加${this.yuedeobj?.sqgyhzysc}艘次` : `减少${Math.abs(this.yuedeobj?.sqgyhzysc)}艘次`
},约${
this.yuedeobj?.gyhtlscyxzhsjyh >= 0
? `增加油耗${this.yuedeobj?.gyhtlscyxzhsjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.gyhtlscyxzhsjyh)}吨`
}。`
);
} else {
jshbysList.push(
`本月高油耗作业艘次${this.yuedeobj?.bqgyhzysc}艘次,环比上月${
this.yuedeobj?.sqgyhzysc >= 0 ? `增加${this.yuedeobj?.sqgyhzysc}艘次` : `减少${Math.abs(this.yuedeobj?.sqgyhzysc)}艘次`
},约${
this.yuedeobj?.gyhtlscyxzhsjyh >= 0
? `增加油耗${this.yuedeobj?.gyhtlscyxzhsjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.gyhtlscyxzhsjyh)}吨`
}。`
);
}
// 第三项
if (this.yuedeobj?.yhyhbhz >= 0) {
zjhbysList.push(
`本月沿海作业燃油消耗${this.yuedeobj?.bqyhyh}吨,上月消耗${this.yuedeobj?.sqyhyh}吨,约${
this.yuedeobj?.yhyhbhz >= 0 ? `增加油耗${this.yuedeobj?.yhyhbhz}吨` : `减少油耗${Math.abs(this.yuedeobj?.yhyhbhz)}吨`
}。`
);
} else {
jshbysList.push(
`本月沿海作业燃油消耗${this.yuedeobj?.bqyhyh}吨,上月消耗${this.yuedeobj?.sqyhyh}吨,约${
this.yuedeobj?.yhyhbhz >= 0 ? `增加油耗${this.yuedeobj?.yhyhbhz}吨` : `减少油耗${Math.abs(this.yuedeobj?.yhyhbhz)}吨`
}。`
);
}
// 第四项
switch (params['ywlx']) {
case '船舶':
if (this.yuedeobj?.hbsqyhsc >= 0) {
zjhbysList.push(
`本月接送引水作业${this.yuedeobj?.yhsc}艘次,环比上月约${
this.yuedeobj?.hbsqyhsc >= 0 ? `增加${this.yuedeobj?.hbsqyhsc}艘次` : `减少${Math.abs(this.yuedeobj?.hbsqyhsc)}艘次`
},环比上月约${
this.yuedeobj?.hbsqyhscyzjyh >= 0
? `增加油耗${this.yuedeobj?.hbsqyhscyzjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.hbsqyhscyzjyh)}吨`
}。`
);
} else {
jshbysList.push(
`本月接送引水作业${this.yuedeobj?.yhsc}艘次,环比上月约${
this.yuedeobj?.hbsqyhsc >= 0 ? `增加${this.yuedeobj?.hbsqyhsc}艘次` : `减少${Math.abs(this.yuedeobj?.hbsqyhsc)}艘次`
},环比上月约${
this.yuedeobj?.hbsqyhscyzjyh >= 0
? `增加油耗${this.yuedeobj?.hbsqyhscyzjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.hbsqyhscyzjyh)}吨`
}。`
);
}
break;
case '公司':
if (this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi >= 0) {
zjhbysList.push(
`本月接送引水作业${this.yuedeobj?.yhsc}艘次(拖轮${this.yuedeobj?.bqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.bqjsyszyztlzzdz}%),上月接送引水作业${this.yuedeobj?.sqyhsc}艘次(拖轮${this.yuedeobj?.sqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.sqjsyszyztlzzdz}%),本月拖轮接送引水作业艘次环
比${this.yuedeobj?.bqtlyszyschbsqbhz > 0 ? `增加${this.yuedeobj?.bqtlyszyschbsqbhz}艘次` : `减少${Math.abs(this.yuedeobj?.bqtlyszyschbsqbhz)}艘次`},
接送引水作业总艘次环比${this.yuedeobj?.zjsyszyhbbhz > 0 ? `增加${this.yuedeobj?.zjsyszyhbbhz}艘次` : `减少${Math.abs(this.yuedeobj?.zjsyszyhbbhz)}艘次`},
约总共${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi > 0 ? `增加油耗${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi}艘次` : `减少油耗${Math.abs(this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi)}艘次`},
`
);
} else {
jshbysList.push(
`本月接送引水作业${this.yuedeobj?.yhsc}艘次(拖轮${this.yuedeobj?.bqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.bqjsyszyztlzzdz}%),上月接送引水作业${this.yuedeobj?.sqyhsc}艘次(拖轮${this.yuedeobj?.sqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.sqjsyszyztlzzdz}%),本月拖轮接送引水作业艘次环
比${this.yuedeobj?.bqtlyszyschbsqbhz > 0 ? `增加${this.yuedeobj?.bqtlyszyschbsqbhz}艘次` : `减少${Math.abs(this.yuedeobj?.bqtlyszyschbsqbhz)}艘次`},
接送引水作业总艘次环比${this.yuedeobj?.zjsyszyhbbhz > 0 ? `增加${this.yuedeobj?.zjsyszyhbbhz}艘次` : `减少${Math.abs(this.yuedeobj?.zjsyszyhbbhz)}艘次`},
约总共${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi > 0 ? `增加油耗${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi}艘次` : `减少油耗${Math.abs(this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi)}艘次`},
`
);
}
break;
case '总':
if (this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi >= 0) {
zjhbysList.push(
`本月接送引水作业${this.yuedeobj?.yhsc}艘次(拖轮${this.yuedeobj?.bqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.bqjsyszyztlzzdz}%),上月接送引水作业${this.yuedeobj?.sqyhsc}艘次(拖轮${this.yuedeobj?.sqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.sqjsyszyztlzzdz}%),本月拖轮接送引水作业艘次环
比${this.yuedeobj?.bqtlyszyschbsqbhz > 0 ? `增加${this.yuedeobj?.bqtlyszyschbsqbhz}艘次` : `减少${Math.abs(this.yuedeobj?.bqtlyszyschbsqbhz)}艘次`},
接送引水作业总艘次环比${this.yuedeobj?.zjsyszyhbbhz > 0 ? `增加${this.yuedeobj?.zjsyszyhbbhz}艘次` : `减少${Math.abs(this.yuedeobj?.zjsyszyhbbhz)}艘次`},
约总共${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi > 0 ? `增加油耗${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi}艘次` : `减少油耗${Math.abs(this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi)}艘次`},
`
);
} else {
jshbysList.push(
`本月接送引水作业${this.yuedeobj?.yhsc}艘次(拖轮${this.yuedeobj?.bqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.bqjsyszyztlzzdz}%),上月接送引水作业${this.yuedeobj?.sqyhsc}艘次(拖轮${this.yuedeobj?.sqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.sqjsyszyztlzzdz}%),本月拖轮接送引水作业艘次环
比${this.yuedeobj?.bqtlyszyschbsqbhz > 0 ? `增加${this.yuedeobj?.bqtlyszyschbsqbhz}艘次` : `减少${Math.abs(this.yuedeobj?.bqtlyszyschbsqbhz)}艘次`},
接送引水作业总艘次环比${this.yuedeobj?.zjsyszyhbbhz > 0 ? `增加${this.yuedeobj?.zjsyszyhbbhz}艘次` : `减少${Math.abs(this.yuedeobj?.zjsyszyhbbhz)}艘次`},
约总共${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi > 0 ? `增加油耗${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi}艘次` : `减少油耗${Math.abs(this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi)}艘次`},
`
);
}
break;
default:
// 当 expression 的值与所有 case 的值都不匹配时执行的代码
}
// 第5项
if (this.yuedeobj?.bqpjschxlchbsyzj >= 0) {
zjhbysList.push(
`本月平均艘次航行里程${this.yuedeobj?.bqpjschxlc}海里/艘次,环比上月${
this.yuedeobj?.bqpjschxlchbsyzj >= 0
? `增加${this.yuedeobj?.bqpjschxlchbsyzj}海里/艘次`
: `减少${Math.abs(this.yuedeobj?.bqpjschxlchbsyzj)}海里/艘次`
},约${
this.yuedeobj?.bqpjschxlchbsyzjyh >= 0
? `增加油耗${this.yuedeobj?.bqpjschxlchbsyzjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.bqpjschxlchbsyzjyh)}吨`
}。`
);
} else {
jshbysList.push(
`本月平均艘次航行里程${this.yuedeobj?.bqpjschxlc}海里/艘次,环比上月${
this.yuedeobj?.bqpjschxlchbsyzj >= 0
? `增加${this.yuedeobj?.bqpjschxlchbsyzj}海里/艘次`
: `减少${Math.abs(this.yuedeobj?.bqpjschxlchbsyzj)}海里/艘次`
},约${
this.yuedeobj?.bqpjschxlchbsyzjyh >= 0
? `增加油耗${this.yuedeobj?.bqpjschxlchbsyzjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.bqpjschxlchbsyzjyh)}吨`
}。`
);
}
if (this.yuedeobj.bqrylhb >= 0) {
this.hbysList.push(...zjhbysList);
this.hbysList.push(...jshbysList);
for (let item = 0; item < this.hbysList.length; item++) {
this.hbysList[item] = `${item + 1}、${this.hbysList[item]}`;
}
} else {
this.hbysList.push(...jshbysList);
this.hbysList.push(...zjhbysList);
for (let item = 0; item < this.hbysList.length; item++) {
this.hbysList[item] = `${item + 1}、${this.hbysList[item]}`;
}
}
this.hbysList.push(
`
综上所述,环比上月,作业因素导致本月油耗${
this.yuedeobj?.bt1zyys >= 0 ? `增加${this.yuedeobj?.bt1zyys}吨` : `减少${Math.abs(this.yuedeobj?.bt1zyys)}吨`
},调度因素导致本月油耗${
this.yuedeobj?.bt1ddys >= 0 ? `增加${this.yuedeobj?.bt1ddys}吨` : `减少${Math.abs(this.yuedeobj?.bt1ddys)}吨`
},其它因素导致本月油耗${
this.yuedeobj?.bt1qtys >= 0 ? `增加${this.yuedeobj?.bt1qtys}吨` : `减少${Math.abs(this.yuedeobj?.bt1qtys)}吨`
}。 `
);
// 第一项
if (this.yuedeobj.bqsocitb >= 0) {
tzjhbysList.push(
`本月作业艘次${this.yuedeobj.bqsoci}艘次,同比去年同期${
this.yuedeobj?.bqsocitb >= 0 ? `增加${this.yuedeobj?.bqsocitb}艘次` : `减少${Math.abs(this.yuedeobj?.bqsocitb)}艘次`
},约${
this.yuedeobj?.bqsocitbyh >= 0
? `增加油耗${this.yuedeobj?.bqsocitbyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.bqsocitbyh)}吨`
}`
);
} else {
tjshbysList.push(
`本月作业艘次${this.yuedeobj.bqsoci}艘次,同比去年同期${
this.yuedeobj?.bqsocitb >= 0 ? `增加${this.yuedeobj?.bqsocitb}艘次` : `减少${Math.abs(this.yuedeobj?.bqsocitb)}艘次`
},约${
this.yuedeobj?.bqsocitbyh >= 0
? `增加油耗${this.yuedeobj?.bqsocitbyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.bqsocitbyh)}吨`
}`
);
}
// 第二项
if (this.yuedeobj?.tbgyhtlscyxzhsjyh >= 0) {
tzjhbysList.push(
`本月高油耗作业艘次${this.yuedeobj?.bqgyhzysc}艘次,同比去年同期${
this.yuedeobj?.tbgyhtlscyxzhsjyh >= 0
? `增加${this.yuedeobj?.tbgyhtlscyxzhsjyh}艘次`
: `减少${Math.abs(this.yuedeobj?.tbgyhtlscyxzhsjyh)}艘次`
},约${
this.yuedeobj?.tbgyhtlscyxzhsjyh >= 0
? `增加油耗${this.yuedeobj?.tbgyhtlscyxzhsjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.tbgyhtlscyxzhsjyh)}吨`
}。`
);
} else {
tjshbysList.push(
`本月高油耗作业艘次${this.yuedeobj?.bqgyhzysc}艘次,同比去年同期${
this.yuedeobj?.tbgyhtlscyxzhsjyh >= 0
? `增加${this.yuedeobj?.tbgyhtlscyxzhsjyh}艘次`
: `减少${Math.abs(this.yuedeobj?.tbgyhtlscyxzhsjyh)}艘次`
},约${
this.yuedeobj?.tbgyhtlscyxzhsjyh >= 0
? `增加油耗${this.yuedeobj?.tbgyhtlscyxzhsjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.tbgyhtlscyxzhsjyh)}吨`
}。`
);
}
// 第三项
if (this.yuedeobj?.tbyhyhbhz >= 0) {
tzjhbysList.push(
`本月沿海作业燃油消耗${this.yuedeobj?.bqyhyh}吨,同比去年同期约${
this.yuedeobj?.tbyhyhbhz >= 0 ? `增加油耗${this.yuedeobj?.tbyhyhbhz}吨` : `减少油耗${Math.abs(this.yuedeobj?.tbyhyhbhz)}吨`
}。`
);
} else {
tjshbysList.push(
`本月沿海作业燃油消耗${this.yuedeobj?.bqyhyh}吨,同比去年同期约${
this.yuedeobj?.tbyhyhbhz >= 0 ? `增加油耗${this.yuedeobj?.tbyhyhbhz}吨` : `减少油耗${Math.abs(this.yuedeobj?.tbyhyhbhz)}吨`
}。`
);
}
// 第四项
switch (params['ywlx']) {
case '船舶':
if (this.yuedeobj?.tbsqyhsc >= 0) {
tzjhbysList.push(
`本月接送引水作业${this.yuedeobj?.yhsc}艘次,同比去年同期约${
this.yuedeobj?.tbsqyhsc >= 0 ? `增加${this.yuedeobj?.tbsqyhsc}艘次` : `减少${Math.abs(this.yuedeobj?.tbsqyhsc)}艘次`
},同比去年同期约${
this.yuedeobj?.tbsqyhscyzjyh >= 0
? `增加油耗${this.yuedeobj?.tbsqyhscyzjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.tbsqyhscyzjyh)}吨`
}。`
);
} else {
tjshbysList.push(
`本月接送引水作业${this.yuedeobj?.yhsc}艘次,同比去年同期约${
this.yuedeobj?.tbsqyhsc >= 0 ? `增加${this.yuedeobj?.tbsqyhsc}艘次` : `减少${Math.abs(this.yuedeobj?.tbsqyhsc)}艘次`
},同比去年同期约${
this.yuedeobj?.tbsqyhscyzjyh >= 0
? `增加油耗${this.yuedeobj?.tbsqyhscyzjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.tbsqyhscyzjyh)}吨`
}。`
);
}
break;
case '公司':
if (this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi >= 0) {
tzjhbysList.push(
`本月度接送引水作业${this.yuedeobj?.yhsc}艘次(拖轮${this.yuedeobj?.bqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.bqjsyszyztlzzdz}%),去年同期接送引水作业${this.yuedeobj?.tqyhsc}艘次(拖轮${this.yuedeobj?.tqyhscshuyuTuolun}艘次
,占比${this.yuedeobj?.tqyhscshujuzb}%),本月度拖轮接送引水作业艘次同比${this.yuedeobj?.bjdtlyhsctb > 0 ? `增加${this.yuedeobj?.bjdtlyhsctb}艘次` : `减少${Math.abs(this.yuedeobj?.bjdtlyhsctb)}艘次`},
接送引水作业总艘次同比${this.yuedeobj?.bjdtlyhsctbz > 0 ? `增加${this.yuedeobj?.bjdtlyhsctbz}艘次` : `减少${Math.abs(this.yuedeobj?.bjdtlyhsctbz)}艘次`},
约总共${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb > 0 ? `增加油耗${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb}艘次` : `减少油耗${Math.abs(this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb)}吨`},
`
);
} else {
tjshbysList.push(
`本月度接送引水作业${this.yuedeobj?.yhsc}艘次(拖轮${this.yuedeobj?.bqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.bqjsyszyztlzzdz}%),去年同期接送引水作业${this.yuedeobj?.tqyhsc}艘次(拖轮${this.yuedeobj?.tqyhscshuyuTuolun}艘次
,占比${this.yuedeobj?.tqyhscshujuzb}%),本月度拖轮接送引水作业艘次同比${this.yuedeobj?.bjdtlyhsctb > 0 ? `增加${this.yuedeobj?.bjdtlyhsctb}艘次` : `减少${Math.abs(this.yuedeobj?.bjdtlyhsctb)}艘次`},
接送引水作业总艘次同比${this.yuedeobj?.bjdtlyhsctbz > 0 ? `增加${this.yuedeobj?.bjdtlyhsctbz}艘次` : `减少${Math.abs(this.yuedeobj?.bjdtlyhsctbz)}艘次`},
约总共${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb > 0 ? `增加油耗${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb}艘次` : `减少油耗${Math.abs(this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb)}吨`},
`
);
}
break;
case '总':
if (this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi >= 0) {
tzjhbysList.push(
`本月度接送引水作业${this.yuedeobj?.yhsc}艘次(拖轮${this.yuedeobj?.bqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.bqjsyszyztlzzdz}%),去年同期接送引水作业${this.yuedeobj?.tqyhsc}艘次(拖轮${this.yuedeobj?.tqyhscshuyuTuolun}艘次
,占比${this.yuedeobj?.tqyhscshujuzb}%),本月度拖轮接送引水作业艘次同比${this.yuedeobj?.bjdtlyhsctb > 0 ? `增加${this.yuedeobj?.bjdtlyhsctb}艘次` : `减少${Math.abs(this.yuedeobj?.bjdtlyhsctb)}艘次`},
接送引水作业总艘次同比${this.yuedeobj?.bjdtlyhsctbz > 0 ? `增加${this.yuedeobj?.bjdtlyhsctbz}艘次` : `减少${Math.abs(this.yuedeobj?.bjdtlyhsctbz)}艘次`},
约总共${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb > 0 ? `增加油耗${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb}艘次` : `减少油耗${Math.abs(this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb)}吨`},
`
);
} else {
tjshbysList.push(
`本月度接送引水作业${this.yuedeobj?.yhsc}艘次(拖轮${this.yuedeobj?.bqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.bqjsyszyztlzzdz}%),去年同期接送引水作业${this.yuedeobj?.tqyhsc}艘次(拖轮${this.yuedeobj?.tqyhscshuyuTuolun}艘次
,占比${this.yuedeobj?.tqyhscshujuzb}%),本月度拖轮接送引水作业艘次同比${this.yuedeobj?.bjdtlyhsctb > 0 ? `增加${this.yuedeobj?.bjdtlyhsctb}艘次` : `减少${Math.abs(this.yuedeobj?.bjdtlyhsctb)}艘次`},
接送引水作业总艘次同比${this.yuedeobj?.bjdtlyhsctbz > 0 ? `增加${this.yuedeobj?.bjdtlyhsctbz}艘次` : `减少${Math.abs(this.yuedeobj?.bjdtlyhsctbz)}艘次`},
约总共${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb > 0 ? `增加油耗${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb}艘次` : `减少油耗${Math.abs(this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb)}吨`},
`
);
}
break;
default:
// 当 expression 的值与所有 case 的值都不匹配时执行的代码
}
// 第5项
if (this.yuedeobj?.bqpjschxlchbsyzj >= 0) {
tzjhbysList.push(
`本月平均艘次航行里程${this.yuedeobj?.bqpjschxlc}海里/艘次,同比去年同期${
this.yuedeobj?.bqpjschxlctbsyzj >= 0
? `增加${this.yuedeobj?.bqpjschxlctbsyzj}海里/艘次`
: `减少${Math.abs(this.yuedeobj?.bqpjschxlctbsyzj)}海里/艘次`
},约${
this.yuedeobj?.bqpjschxlctbsyzjyh >= 0
? `增加油耗${this.yuedeobj?.bqpjschxlctbsyzjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.bqpjschxlctbsyzjyh)}吨`
}。`
);
} else {
tjshbysList.push(
`本月平均艘次航行里程${this.yuedeobj?.bqpjschxlc}海里/艘次,同比去年同期${
this.yuedeobj?.bqpjschxlctbsyzj >= 0
? `增加${this.yuedeobj?.bqpjschxlctbsyzj}海里/艘次`
: `减少${Math.abs(this.yuedeobj?.bqpjschxlctbsyzj)}海里/艘次`
},约${
this.yuedeobj?.bqpjschxlctbsyzjyh >= 0
? `增加油耗${this.yuedeobj?.bqpjschxlctbsyzjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.bqpjschxlctbsyzjyh)}吨`
}。`
);
}
if (this.yuedeobj.bqsocitbyh >= 0) {
this.tbysList.push(...tzjhbysList);
this.tbysList.push(...tjshbysList);
for (let item = 0; item < this.tbysList.length; item++) {
this.tbysList[item] = `${item + 1}、${this.tbysList[item]}`;
}
} else {
this.tbysList.push(...tjshbysList);
this.tbysList.push(...tzjhbysList);
for (let item = 0; item < this.tbysList.length; item++) {
this.tbysList[item] = `${item + 1}、${this.tbysList[item]}`;
}
}
this.tbysList.push(
`
综上所述,环比去年同期,作业因素导致本月油耗${
this.yuedeobj?.bt2zyys >= 0 ? `增加${this.yuedeobj?.bt2zyys}吨` : `减少${Math.abs(this.yuedeobj?.bt2zyys)}吨`
},调度因素导致本月油耗${
this.yuedeobj?.bt2ddys >= 0 ? `增加${this.yuedeobj?.bt2ddys}吨` : `减少${Math.abs(this.yuedeobj?.bt2ddys)}吨`
},其它因素导致本月油耗${
this.yuedeobj?.bt2qtys >= 0 ? `增加${this.yuedeobj?.bt2qtys}吨` : `减少${Math.abs(this.yuedeobj?.bt2qtys)}吨`
}。 `
);
this.option['series'] = [
{
name: 'Access From',
type: 'pie',
radius: '50%',
label: {
show: true,
formatter: '{b}: {c} ({d}%)'
},
data: this.yuedeobj?.bt1,
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
];
this.tu1echars = echarts.init(window.document.getElementById('tu1'));
this.tu1echars.setOption(this.option);
this.option2['series'] = [
{
name: 'Access From',
type: 'pie',
radius: '50%',
label: {
show: true,
formatter: '{b}: {c} ({d}%)'
},
data: this.yuedeobj?.bt2,
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
];
this.tu2echars = echarts.init(window.document.getElementById('tu2'));
this.tu2echars.setOption(this.option2);
} else if (this.formItem.value.zqType === '季度') {
this.yuedeobj = res;
this.cd.detectChanges();
this.hbysList = [];
this.tbysList = [];
// 减少集合
let jshbysList: any[] = [];
//增加集合
let zjhbysList: any[] = [];
// 减少集合
let tjshbysList: any[] = [];
//增加集合
let tzjhbysList: any[] = [];
// 第一项
if (this.yuedeobj.bqsocihb >= 0) {
zjhbysList.push(
`本季度作业艘次${this.yuedeobj.bqsoci}艘次,环比上季度${
this.yuedeobj?.bqsocihb >= 0 ? `增加${this.yuedeobj?.bqsocihb}艘次` : `减少${Math.abs(this.yuedeobj?.bqsocihb)}艘次`
},约${
this.yuedeobj?.tlscyxyhl >= 0 ? `增加油耗${this.yuedeobj?.tlscyxyhl}吨` : `减少油耗${Math.abs(this.yuedeobj?.tlscyxyhl)}吨`
}`
);
} else {
jshbysList.push(
`本季度作业艘次${this.yuedeobj.bqsoci}艘次,环比上季度${
this.yuedeobj?.bqsocihb >= 0 ? `增加${this.yuedeobj?.bqsocihb}艘次` : `减少${Math.abs(this.yuedeobj?.bqsocihb)}艘次`
},约${
this.yuedeobj?.tlscyxyhl >= 0 ? `增加油耗${this.yuedeobj?.tlscyxyhl}吨` : `减少油耗${Math.abs(this.yuedeobj?.tlscyxyhl)}吨`
}`
);
}
// 第二项
if (this.yuedeobj?.sqgyhzysc >= 0) {
zjhbysList.push(
`本季度高油耗作业艘次${this.yuedeobj?.bqgyhzysc}艘次,环比上季度${
this.yuedeobj?.sqgyhzysc >= 0 ? `增加${this.yuedeobj?.sqgyhzysc}艘次` : `减少${Math.abs(this.yuedeobj?.sqgyhzysc)}艘次`
},约${
this.yuedeobj?.gyhtlscyxzhsjyh >= 0
? `增加油耗${this.yuedeobj?.gyhtlscyxzhsjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.gyhtlscyxzhsjyh)}吨`
}。`
);
} else {
jshbysList.push(
`本季度高油耗作业艘次${this.yuedeobj?.bqgyhzysc}艘次,环比上季度${
this.yuedeobj?.sqgyhzysc >= 0 ? `增加${this.yuedeobj?.sqgyhzysc}艘次` : `减少${Math.abs(this.yuedeobj?.sqgyhzysc)}艘次`
},约${
this.yuedeobj?.gyhtlscyxzhsjyh >= 0
? `增加油耗${this.yuedeobj?.gyhtlscyxzhsjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.gyhtlscyxzhsjyh)}吨`
}。`
);
}
// 第三项
if (this.yuedeobj?.yhyhbhz >= 0) {
zjhbysList.push(
`本季度沿海作业燃油消耗${this.yuedeobj?.bqyhyh}吨,上季度消耗${this.yuedeobj?.sqyhyh}吨,约${
this.yuedeobj?.yhyhbhz >= 0 ? `增加油耗${this.yuedeobj?.yhyhbhz}吨` : `减少油耗${Math.abs(this.yuedeobj?.yhyhbhz)}吨`
}。`
);
} else {
jshbysList.push(
`本季度沿海作业燃油消耗${this.yuedeobj?.bqyhyh}吨,上季度消耗${this.yuedeobj?.sqyhyh}吨,约${
this.yuedeobj?.yhyhbhz >= 0 ? `增加油耗${this.yuedeobj?.yhyhbhz}吨` : `减少油耗${Math.abs(this.yuedeobj?.yhyhbhz)}吨`
}。`
);
}
// 第四项
switch (params['ywlx']) {
case '船舶':
if (this.yuedeobj?.hbsqyhsc >= 0) {
zjhbysList.push(
`本季度接送引水作业${this.yuedeobj?.yhsc}艘次,环比上季度约${
this.yuedeobj?.hbsqyhsc >= 0 ? `增加${this.yuedeobj?.hbsqyhsc}艘次` : `减少${Math.abs(this.yuedeobj?.hbsqyhsc)}艘次`
},环比上季度约${
this.yuedeobj?.hbsqyhscyzjyh >= 0
? `增加油耗${this.yuedeobj?.hbsqyhscyzjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.hbsqyhscyzjyh)}吨`
}。`
);
} else {
jshbysList.push(
`本季度接送引水作业${this.yuedeobj?.yhsc}艘次,环比上季度约${
this.yuedeobj?.hbsqyhsc >= 0 ? `增加${this.yuedeobj?.hbsqyhsc}艘次` : `减少${Math.abs(this.yuedeobj?.hbsqyhsc)}艘次`
},环比上季度约${
this.yuedeobj?.hbsqyhscyzjyh >= 0
? `增加油耗${this.yuedeobj?.hbsqyhscyzjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.hbsqyhscyzjyh)}吨`
}。`
);
}
break;
case '公司':
if (this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi >= 0) {
zjhbysList.push(
`本季度接送引水作业${this.yuedeobj?.yhsc}艘次(拖轮${this.yuedeobj?.bqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.bqjsyszyztlzzdz}%),上季度接送引水作业${this.yuedeobj?.sqyhsc}艘次(拖轮${this.yuedeobj?.sqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.sqjsyszyztlzzdz}%),本季度拖轮接送引水作业艘次环
比${this.yuedeobj?.bqtlyszyschbsqbhz > 0 ? `增加${this.yuedeobj?.bqtlyszyschbsqbhz}艘次` : `减少${Math.abs(this.yuedeobj?.bqtlyszyschbsqbhz)}艘次`},
接送引水作业总艘次环比${this.yuedeobj?.zjsyszyhbbhz > 0 ? `增加${this.yuedeobj?.zjsyszyhbbhz}艘次` : `减少${Math.abs(this.yuedeobj?.zjsyszyhbbhz)}艘次`},
约总共${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi > 0 ? `增加油耗${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi}艘次` : `减少油耗${Math.abs(this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi)}吨`},
`
);
} else {
jshbysList.push(
`本季度接送引水作业${this.yuedeobj?.yhsc}艘次(拖轮${this.yuedeobj?.bqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.bqjsyszyztlzzdz}%),上季度接送引水作业${this.yuedeobj?.sqyhsc}艘次(拖轮${this.yuedeobj?.sqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.sqjsyszyztlzzdz}%),本季度拖轮接送引水作业艘次环
比${this.yuedeobj?.bqtlyszyschbsqbhz > 0 ? `增加${this.yuedeobj?.bqtlyszyschbsqbhz}艘次` : `减少${Math.abs(this.yuedeobj?.bqtlyszyschbsqbhz)}艘次`},
接送引水作业总艘次环比${this.yuedeobj?.zjsyszyhbbhz > 0 ? `增加${this.yuedeobj?.zjsyszyhbbhz}艘次` : `减少${Math.abs(this.yuedeobj?.zjsyszyhbbhz)}艘次`},
约总共${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi > 0 ? `增加油耗${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi}艘次` : `减少油耗${Math.abs(this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi)}吨`},
`
);
}
break;
case '总':
if (this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi >= 0) {
zjhbysList.push(
`本季度接送引水作业${this.yuedeobj?.yhsc}艘次(拖轮${this.yuedeobj?.bqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.bqjsyszyztlzzdz}%),上季度接送引水作业${this.yuedeobj?.sqyhsc}艘次(拖轮${this.yuedeobj?.sqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.sqjsyszyztlzzdz}%),本季度拖轮接送引水作业艘次环
比${this.yuedeobj?.bqtlyszyschbsqbhz > 0 ? `增加${this.yuedeobj?.bqtlyszyschbsqbhz}艘次` : `减少${Math.abs(this.yuedeobj?.bqtlyszyschbsqbhz)}艘次`},
接送引水作业总艘次环比${this.yuedeobj?.zjsyszyhbbhz > 0 ? `增加${this.yuedeobj?.zjsyszyhbbhz}艘次` : `减少${Math.abs(this.yuedeobj?.zjsyszyhbbhz)}艘次`},
约总共${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi > 0 ? `增加油耗${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi}艘次` : `减少油耗${Math.abs(this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi)}吨`},
`
);
} else {
jshbysList.push(
`本季度接送引水作业${this.yuedeobj?.yhsc}艘次(拖轮${this.yuedeobj?.bqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.bqjsyszyztlzzdz}%),上季度接送引水作业${this.yuedeobj?.sqyhsc}艘次(拖轮${this.yuedeobj?.sqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.sqjsyszyztlzzdz}%),本季度拖轮接送引水作业艘次环
比${this.yuedeobj?.bqtlyszyschbsqbhz > 0 ? `增加${this.yuedeobj?.bqtlyszyschbsqbhz}艘次` : `减少${Math.abs(this.yuedeobj?.bqtlyszyschbsqbhz)}艘次`},
接送引水作业总艘次环比${this.yuedeobj?.zjsyszyhbbhz > 0 ? `增加${this.yuedeobj?.zjsyszyhbbhz}艘次` : `减少${Math.abs(this.yuedeobj?.zjsyszyhbbhz)}艘次`},
约总共${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi > 0 ? `增加油耗${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi}艘次` : `减少油耗${Math.abs(this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi)}吨`},
`
);
}
break;
default:
// 当 expression 的值与所有 case 的值都不匹配时执行的代码
}
// 第5项
if (this.yuedeobj?.bqpjschxlchbsyzj >= 0) {
zjhbysList.push(
`本季度平均艘次航行里程${this.yuedeobj?.bqpjschxlc}海里/艘次,环比上季度${
this.yuedeobj?.bqpjschxlchbsyzj >= 0
? `增加${this.yuedeobj?.bqpjschxlchbsyzj}海里/艘次`
: `减少${Math.abs(this.yuedeobj?.bqpjschxlchbsyzj)}海里/艘次`
},约${
this.yuedeobj?.bqpjschxlchbsyzjyh >= 0
? `增加油耗${this.yuedeobj?.bqpjschxlchbsyzjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.bqpjschxlchbsyzjyh)}吨`
}。`
);
} else {
jshbysList.push(
`本季度平均艘次航行里程${this.yuedeobj?.bqpjschxlc}海里/艘次,环比上季度${
this.yuedeobj?.bqpjschxlchbsyzj >= 0
? `增加${this.yuedeobj?.bqpjschxlchbsyzj}海里/艘次`
: `减少${Math.abs(this.yuedeobj?.bqpjschxlchbsyzj)}海里/艘次`
},约${
this.yuedeobj?.bqpjschxlchbsyzjyh >= 0
? `增加油耗${this.yuedeobj?.bqpjschxlchbsyzjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.bqpjschxlchbsyzjyh)}吨`
}。`
);
}
if (this.yuedeobj.bqrylhb >= 0) {
this.hbysList.push(...zjhbysList);
this.hbysList.push(...jshbysList);
for (let item = 0; item < this.hbysList.length; item++) {
this.hbysList[item] = `${item + 1}、${this.hbysList[item]}`;
}
} else {
this.hbysList.push(...jshbysList);
this.hbysList.push(...zjhbysList);
for (let item = 0; item < this.hbysList.length; item++) {
this.hbysList[item] = `${item + 1}、${this.hbysList[item]}`;
}
}
this.hbysList.push(
`
综上所述,环比上季度,作业因素导致本季度油耗${
this.yuedeobj?.bt1zyys >= 0 ? `增加${this.yuedeobj?.bt1zyys}吨` : `减少${Math.abs(this.yuedeobj?.bt1zyys)}吨`
},调度因素导致本季度油耗${
this.yuedeobj?.bt1ddys >= 0 ? `增加${this.yuedeobj?.bt1ddys}吨` : `减少${Math.abs(this.yuedeobj?.bt1ddys)}吨`
},其它因素导致本季度油耗${
this.yuedeobj?.bt1qtys >= 0 ? `增加${this.yuedeobj?.bt1qtys}吨` : `减少${Math.abs(this.yuedeobj?.bt1qtys)}吨`
}。 `
);
// 第一项
if (this.yuedeobj.bqsocitb >= 0) {
tzjhbysList.push(
`本季度作业艘次${this.yuedeobj.bqsoci}艘次,同比去年同期${
this.yuedeobj?.bqsocitb >= 0 ? `增加${this.yuedeobj?.bqsocitb}艘次` : `减少${Math.abs(this.yuedeobj?.bqsocitb)}艘次`
},约${
this.yuedeobj?.bqsocitbyh >= 0
? `增加油耗${this.yuedeobj?.bqsocitbyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.bqsocitbyh)}吨`
}`
);
} else {
tjshbysList.push(
`本季度作业艘次${this.yuedeobj.bqsoci}艘次,同比去年同期${
this.yuedeobj?.bqsocitb >= 0 ? `增加${this.yuedeobj?.bqsocitb}艘次` : `减少${Math.abs(this.yuedeobj?.bqsocitb)}艘次`
},约${
this.yuedeobj?.bqsocitbyh >= 0
? `增加油耗${this.yuedeobj?.bqsocitbyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.bqsocitbyh)}吨`
}`
);
}
// 第二项
if (this.yuedeobj?.tbgyhtlscyxzhsjyh >= 0) {
tzjhbysList.push(
`本季度高油耗作业艘次${this.yuedeobj?.bqgyhzysc}艘次,同比去年同期${
this.yuedeobj?.tbgyhtlscyxzhsjyh >= 0
? `增加${this.yuedeobj?.tbgyhtlscyxzhsjyh}艘次`
: `减少${Math.abs(this.yuedeobj?.tbgyhtlscyxzhsjyh)}艘次`
},约${
this.yuedeobj?.tbgyhtlscyxzhsjyh >= 0
? `增加油耗${this.yuedeobj?.tbgyhtlscyxzhsjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.tbgyhtlscyxzhsjyh)}吨`
}。`
);
} else {
tjshbysList.push(
`本季度高油耗作业艘次${this.yuedeobj?.bqgyhzysc}艘次,同比去年同期${
this.yuedeobj?.tbgyhtlscyxzhsjyh >= 0
? `增加${this.yuedeobj?.tbgyhtlscyxzhsjyh}艘次`
: `减少${Math.abs(this.yuedeobj?.tbgyhtlscyxzhsjyh)}艘次`
},约${
this.yuedeobj?.tbgyhtlscyxzhsjyh >= 0
? `增加油耗${this.yuedeobj?.tbgyhtlscyxzhsjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.tbgyhtlscyxzhsjyh)}吨`
}。`
);
}
// 第三项
if (this.yuedeobj?.tbyhyhbhz >= 0) {
tzjhbysList.push(
`本季度沿海作业燃油消耗${this.yuedeobj?.bqyhyh}吨,同比去年同期约${
this.yuedeobj?.tbyhyhbhz >= 0 ? `增加油耗${this.yuedeobj?.tbyhyhbhz}吨` : `减少油耗${Math.abs(this.yuedeobj?.tbyhyhbhz)}吨`
}。`
);
} else {
tjshbysList.push(
`本季度沿海作业燃油消耗${this.yuedeobj?.bqyhyh}吨,同比去年同期约${
this.yuedeobj?.tbyhyhbhz >= 0 ? `增加油耗${this.yuedeobj?.tbyhyhbhz}吨` : `减少油耗${Math.abs(this.yuedeobj?.tbyhyhbhz)}吨`
}。`
);
}
// 第四项
switch (params['ywlx']) {
case '船舶':
if (this.yuedeobj?.tbsqyhsc >= 0) {
tzjhbysList.push(
`本季度接送引水作业${this.yuedeobj?.yhsc}艘次,同比去年同期${
this.yuedeobj?.tbsqyhsc >= 0 ? `增加${this.yuedeobj?.tbsqyhsc}艘次` : `减少${Math.abs(this.yuedeobj?.tbsqyhsc)}艘次`
},同比去年同期约${
this.yuedeobj?.tbsqyhscyzjyh >= 0
? `增加油耗${this.yuedeobj?.tbsqyhscyzjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.tbsqyhscyzjyh)}吨`
}。`
);
} else {
tjshbysList.push(
`本季度接送引水作业${this.yuedeobj?.yhsc}艘次,同比去年同期${
this.yuedeobj?.tbsqyhsc >= 0 ? `增加${this.yuedeobj?.tbsqyhsc}艘次` : `减少${Math.abs(this.yuedeobj?.tbsqyhsc)}艘次`
},同比去年同期约${
this.yuedeobj?.tbsqyhscyzjyh >= 0
? `增加油耗${this.yuedeobj?.tbsqyhscyzjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.tbsqyhscyzjyh)}吨`
}。`
);
}
break;
case '公司':
if (this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi >= 0) {
tzjhbysList.push(
`本季度接送引水作业${this.yuedeobj?.yhsc}艘次(拖轮${this.yuedeobj?.bqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.bqjsyszyztlzzdz}%),去年同期接送引水作业${this.yuedeobj?.tqyhsc}艘次(拖轮${this.yuedeobj?.tqyhscshuyuTuolun}艘次
,占比${this.yuedeobj?.tqyhscshujuzb}%),本季度拖轮接送引水作业艘次同比${this.yuedeobj?.bjdtlyhsctb > 0 ? `增加${this.yuedeobj?.bjdtlyhsctb}艘次` : `减少${Math.abs(this.yuedeobj?.bjdtlyhsctb)}艘次`},
接送引水作业总艘次同比${this.yuedeobj?.bjdtlyhsctbz > 0 ? `增加${this.yuedeobj?.bjdtlyhsctbz}艘次` : `减少${Math.abs(this.yuedeobj?.bjdtlyhsctbz)}艘次`},
约总共${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb > 0 ? `增加油耗${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb}艘次` : `减少油耗${Math.abs(this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb)}艘次`},
`
);
} else {
tjshbysList.push(
`本季度接送引水作业${this.yuedeobj?.yhsc}艘次(拖轮${this.yuedeobj?.bqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.bqjsyszyztlzzdz}%),去年同期接送引水作业${this.yuedeobj?.tqyhsc}艘次(拖轮${this.yuedeobj?.tqyhscshuyuTuolun}艘次
,占比${this.yuedeobj?.tqyhscshujuzb}%),本季度拖轮接送引水作业艘次同比${this.yuedeobj?.bjdtlyhsctb > 0 ? `增加${this.yuedeobj?.bjdtlyhsctb}艘次` : `减少${Math.abs(this.yuedeobj?.bjdtlyhsctb)}艘次`},
接送引水作业总艘次同比${this.yuedeobj?.bjdtlyhsctbz > 0 ? `增加${this.yuedeobj?.bjdtlyhsctbz}艘次` : `减少${Math.abs(this.yuedeobj?.bjdtlyhsctbz)}艘次`},
约总共${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb > 0 ? `增加油耗${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb}艘次` : `减少油耗${Math.abs(this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb)}艘次`},
`
);
}
break;
case '总':
if (this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi >= 0) {
tzjhbysList.push(
`本季度接送引水作业${this.yuedeobj?.yhsc}艘次(拖轮${this.yuedeobj?.bqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.bqjsyszyztlzzdz}%),去年同期接送引水作业${this.yuedeobj?.tqyhsc}艘次(拖轮${this.yuedeobj?.tqyhscshuyuTuolun}艘次
,占比${this.yuedeobj?.tqyhscshujuzb}%),本季度拖轮接送引水作业艘次同比${this.yuedeobj?.bjdtlyhsctb > 0 ? `增加${this.yuedeobj?.bjdtlyhsctb}艘次` : `减少${Math.abs(this.yuedeobj?.bjdtlyhsctb)}艘次`},
接送引水作业总艘次同比${this.yuedeobj?.bjdtlyhsctbz > 0 ? `增加${this.yuedeobj?.bjdtlyhsctbz}艘次` : `减少${Math.abs(this.yuedeobj?.bjdtlyhsctbz)}艘次`},
约总共${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb > 0 ? `增加油耗${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb}艘次` : `减少油耗${Math.abs(this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb)}艘次`},
`
);
} else {
tjshbysList.push(
`本季度接送引水作业${this.yuedeobj?.yhsc}艘次(拖轮${this.yuedeobj?.bqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.bqjsyszyztlzzdz}%),去年同期接送引水作业${this.yuedeobj?.tqyhsc}艘次(拖轮${this.yuedeobj?.tqyhscshuyuTuolun}艘次
,占比${this.yuedeobj?.tqyhscshujuzb}%),本季度拖轮接送引水作业艘次同比${this.yuedeobj?.bjdtlyhsctb > 0 ? `增加${this.yuedeobj?.bjdtlyhsctb}艘次` : `减少${Math.abs(this.yuedeobj?.bjdtlyhsctb)}艘次`},
接送引水作业总艘次同比${this.yuedeobj?.bjdtlyhsctbz > 0 ? `增加${this.yuedeobj?.bjdtlyhsctbz}艘次` : `减少${Math.abs(this.yuedeobj?.bjdtlyhsctbz)}艘次`},
约总共${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb > 0 ? `增加油耗${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb}艘次` : `减少油耗${Math.abs(this.yuedeobj?.jsyszuoyscyxbhuayouhaozhitb)}艘次`},
`
);
}
break;
default:
// 当 expression 的值与所有 case 的值都不匹配时执行的代码
}
// 第5项
if (this.yuedeobj?.bqpjschxlchbsyzj >= 0) {
tzjhbysList.push(
`本季度平均艘次航行里程${this.yuedeobj?.bqpjschxlc}海里/艘次,同比去年同期${
this.yuedeobj?.bqpjschxlctbsyzj >= 0
? `增加${this.yuedeobj?.bqpjschxlctbsyzj}海里/艘次`
: `减少${Math.abs(this.yuedeobj?.bqpjschxlctbsyzj)}海里/艘次`
},约${
this.yuedeobj?.bqpjschxlctbsyzjyh >= 0
? `增加油耗${this.yuedeobj?.bqpjschxlctbsyzjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.bqpjschxlctbsyzjyh)}吨`
}。`
);
} else {
tjshbysList.push(
`本季度平均艘次航行里程${this.yuedeobj?.bqpjschxlc}海里/艘次,同比去年同期${
this.yuedeobj?.bqpjschxlctbsyzj >= 0
? `增加${this.yuedeobj?.bqpjschxlctbsyzj}海里/艘次`
: `减少${Math.abs(this.yuedeobj?.bqpjschxlctbsyzj)}海里/艘次`
},约${
this.yuedeobj?.bqpjschxlctbsyzjyh >= 0
? `增加油耗${this.yuedeobj?.bqpjschxlctbsyzjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.bqpjschxlctbsyzjyh)}吨`
}。`
);
}
if (this.yuedeobj.bqsocitbyh >= 0) {
this.tbysList.push(...tzjhbysList);
this.tbysList.push(...tjshbysList);
for (let item = 0; item < this.tbysList.length; item++) {
this.tbysList[item] = `${item + 1}、${this.tbysList[item]}`;
}
} else {
this.tbysList.push(...tjshbysList);
this.tbysList.push(...tzjhbysList);
for (let item = 0; item < this.tbysList.length; item++) {
this.tbysList[item] = `${item + 1}、${this.tbysList[item]}`;
}
}
this.tbysList.push(
`
综上所述,环比去年同期,作业因素导致本季度油耗${
this.yuedeobj?.bt2zyys >= 0 ? `增加${this.yuedeobj?.bt2zyys}吨` : `减少${Math.abs(this.yuedeobj?.bt2zyys)}吨`
},调度因素导致本季度油耗${
this.yuedeobj?.bt2ddys >= 0 ? `增加${this.yuedeobj?.bt2ddys}吨` : `减少${Math.abs(this.yuedeobj?.bt2ddys)}吨`
},其它因素导致本季度油耗${
this.yuedeobj?.bt2qtys >= 0 ? `增加${this.yuedeobj?.bt2qtys}吨` : `减少${Math.abs(this.yuedeobj?.bt2qtys)}吨`
}。 `
);
this.option['series'] = [
{
name: 'Access From',
type: 'pie',
radius: '50%',
label: {
show: true,
formatter: '{b}: {c} ({d}%)'
},
data: this.yuedeobj?.bt1,
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
];
this.tu1echars = echarts.init(window.document.getElementById('tu1'));
this.tu1echars.setOption(this.option);
this.option2['series'] = [
{
name: 'Access From',
type: 'pie',
radius: '50%',
label: {
show: true,
formatter: '{b}: {c} ({d}%)'
},
data: this.yuedeobj?.bt2,
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
];
this.tu2echars = echarts.init(window.document.getElementById('tu2'));
this.tu2echars.setOption(this.option2);
} else if (this.formItem.value.zqType === '年') {
this.yuedeobj = res;
this.cd.detectChanges();
this.hbysList = [];
// 减少集合
let jshbysList: any[] = [];
//增加集合
let zjhbysList: any[] = [];
// 第一项
if (this.yuedeobj.bqsocihb >= 0) {
zjhbysList.push(
`本年度作业艘次${this.yuedeobj.bqsoci}艘次,环比上年度${
this.yuedeobj?.bqsocihb >= 0 ? `增加${this.yuedeobj?.bqsocihb}艘次` : `减少${Math.abs(this.yuedeobj?.bqsocihb)}艘次`
},约${
this.yuedeobj?.tlscyxyhl >= 0 ? `增加油耗${this.yuedeobj?.tlscyxyhl}吨` : `减少油耗${Math.abs(this.yuedeobj?.tlscyxyhl)}吨`
}`
);
} else {
jshbysList.push(
`本年度作业艘次${this.yuedeobj.bqsoci}艘次,环比上年度${
this.yuedeobj?.bqsocihb >= 0 ? `增加${this.yuedeobj?.bqsocihb}艘次` : `减少${Math.abs(this.yuedeobj?.bqsocihb)}艘次`
},约${
this.yuedeobj?.tlscyxyhl >= 0 ? `增加油耗${this.yuedeobj?.tlscyxyhl}吨` : `减少油耗${Math.abs(this.yuedeobj?.tlscyxyhl)}吨`
}`
);
}
// 第二项
if (this.yuedeobj?.sqgyhzysc >= 0) {
zjhbysList.push(
`本年度高油耗作业艘次${this.yuedeobj?.bqgyhzysc}艘次,环比上年度${
this.yuedeobj?.sqgyhzysc >= 0 ? `增加${this.yuedeobj?.sqgyhzysc}艘次` : `减少${Math.abs(this.yuedeobj?.sqgyhzysc)}艘次`
},约${
this.yuedeobj?.gyhtlscyxzhsjyh >= 0
? `增加油耗${this.yuedeobj?.gyhtlscyxzhsjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.gyhtlscyxzhsjyh)}吨`
}。`
);
} else {
jshbysList.push(
`本年度高油耗作业艘次${this.yuedeobj?.bqgyhzysc}艘次,环比上年度${
this.yuedeobj?.sqgyhzysc >= 0 ? `增加${this.yuedeobj?.sqgyhzysc}艘次` : `减少${Math.abs(this.yuedeobj?.sqgyhzysc)}艘次`
},约${
this.yuedeobj?.gyhtlscyxzhsjyh >= 0
? `增加油耗${this.yuedeobj?.gyhtlscyxzhsjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.gyhtlscyxzhsjyh)}吨`
}。`
);
}
// 第三项
if (this.yuedeobj?.yhyhbhz >= 0) {
zjhbysList.push(
`本年度沿海作业燃油消耗${this.yuedeobj?.bqyhyh}吨,上年度消耗${this.yuedeobj?.sqyhyh}吨,约${
this.yuedeobj?.yhyhbhz >= 0 ? `增加油耗${this.yuedeobj?.yhyhbhz}吨` : `减少油耗${Math.abs(this.yuedeobj?.yhyhbhz)}吨`
}。`
);
} else {
jshbysList.push(
`本年度沿海作业燃油消耗${this.yuedeobj?.bqyhyh}吨,上年度消耗${this.yuedeobj?.sqyhyh}吨,约${
this.yuedeobj?.yhyhbhz >= 0 ? `增加油耗${this.yuedeobj?.yhyhbhz}吨` : `减少油耗${Math.abs(this.yuedeobj?.yhyhbhz)}吨`
}。`
);
}
// 第四项
switch (params['ywlx']) {
case '船舶':
if (this.yuedeobj?.hbsqyhsc >= 0) {
zjhbysList.push(
`本年度接送引水作业${this.yuedeobj?.yhsc}艘次,环比上年度约${
this.yuedeobj?.hbsqyhsc >= 0 ? `增加${this.yuedeobj?.hbsqyhsc}艘次` : `减少${Math.abs(this.yuedeobj?.hbsqyhsc)}艘次`
},环比上年度约${
this.yuedeobj?.hbsqyhscyzjyh >= 0
? `增加油耗${this.yuedeobj?.hbsqyhscyzjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.hbsqyhscyzjyh)}吨`
}。`
);
} else {
jshbysList.push(
`本年度接送引水作业${this.yuedeobj?.yhsc}艘次,环比上年度约${
this.yuedeobj?.hbsqyhsc >= 0 ? `增加${this.yuedeobj?.hbsqyhsc}艘次` : `减少${Math.abs(this.yuedeobj?.hbsqyhsc)}艘次`
},环比上年度约${
this.yuedeobj?.hbsqyhscyzjyh >= 0
? `增加油耗${this.yuedeobj?.hbsqyhscyzjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.hbsqyhscyzjyh)}吨`
}。`
);
}
break;
case '公司':
if (this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi >= 0) {
zjhbysList.push(
`本年度接送引水作业${this.yuedeobj?.yhsc}艘次(拖轮${this.yuedeobj?.bqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.bqjsyszyztlzzdz}%),上年度接送引水作业${this.yuedeobj?.sqyhsc}艘次(拖轮${this.yuedeobj?.sqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.sqjsyszyztlzzdz}%),本年度拖轮接送引水作业艘次环
比${this.yuedeobj?.bqtlyszyschbsqbhz > 0 ? `增加${this.yuedeobj?.bqtlyszyschbsqbhz}艘次` : `减少${Math.abs(this.yuedeobj?.bqtlyszyschbsqbhz)}艘次`},
接送引水作业总艘次环比${this.yuedeobj?.zjsyszyhbbhz > 0 ? `增加${this.yuedeobj?.zjsyszyhbbhz}艘次` : `减少${Math.abs(this.yuedeobj?.zjsyszyhbbhz)}艘次`},
约总共${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi > 0 ? `增加油耗${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi}艘次` : `减少油耗${Math.abs(this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi)}吨`},
`
);
} else {
jshbysList.push(
`本年度接送引水作业${this.yuedeobj?.yhsc}艘次(拖轮${this.yuedeobj?.bqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.bqjsyszyztlzzdz}%),上年度接送引水作业${this.yuedeobj?.sqyhsc}艘次(拖轮${this.yuedeobj?.sqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.sqjsyszyztlzzdz}%),本年度拖轮接送引水作业艘次环
比${this.yuedeobj?.bqtlyszyschbsqbhz > 0 ? `增加${this.yuedeobj?.bqtlyszyschbsqbhz}艘次` : `减少${Math.abs(this.yuedeobj?.bqtlyszyschbsqbhz)}艘次`},
接送引水作业总艘次环比${this.yuedeobj?.zjsyszyhbbhz > 0 ? `增加${this.yuedeobj?.zjsyszyhbbhz}艘次` : `减少${Math.abs(this.yuedeobj?.zjsyszyhbbhz)}艘次`},
约总共${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi > 0 ? `增加油耗${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi}艘次` : `减少油耗${Math.abs(this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi)}吨`},
`
);
}
break;
case '总':
if (this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi >= 0) {
zjhbysList.push(
`本年度接送引水作业${this.yuedeobj?.yhsc}艘次(拖轮${this.yuedeobj?.bqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.bqjsyszyztlzzdz}%),上年度接送引水作业${this.yuedeobj?.sqyhsc}艘次(拖轮${this.yuedeobj?.sqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.sqjsyszyztlzzdz}%),本年度拖轮接送引水作业艘次环
比${this.yuedeobj?.bqtlyszyschbsqbhz > 0 ? `增加${this.yuedeobj?.bqtlyszyschbsqbhz}艘次` : `减少${Math.abs(this.yuedeobj?.bqtlyszyschbsqbhz)}艘次`},
接送引水作业总艘次环比${this.yuedeobj?.zjsyszyhbbhz > 0 ? `增加${this.yuedeobj?.zjsyszyhbbhz}艘次` : `减少${Math.abs(this.yuedeobj?.zjsyszyhbbhz)}艘次`},
约总共${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi > 0 ? `增加油耗${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi}艘次` : `减少油耗${Math.abs(this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi)}吨`},
`
);
} else {
jshbysList.push(
`本年度接送引水作业${this.yuedeobj?.yhsc}艘次(拖轮${this.yuedeobj?.bqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.bqjsyszyztlzzdz}%),上年度接送引水作业${this.yuedeobj?.sqyhsc}艘次(拖轮${this.yuedeobj?.sqtuolunzuoyinshuizuoyedesouoci}艘次
,占比${this.yuedeobj?.sqjsyszyztlzzdz}%),本年度拖轮接送引水作业艘次环
比${this.yuedeobj?.bqtlyszyschbsqbhz > 0 ? `增加${this.yuedeobj?.bqtlyszyschbsqbhz}艘次` : `减少${Math.abs(this.yuedeobj?.bqtlyszyschbsqbhz)}艘次`},
接送引水作业总艘次环比${this.yuedeobj?.zjsyszyhbbhz > 0 ? `增加${this.yuedeobj?.zjsyszyhbbhz}艘次` : `减少${Math.abs(this.yuedeobj?.zjsyszyhbbhz)}艘次`},
约总共${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi > 0 ? `增加油耗${this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi}艘次` : `减少油耗${Math.abs(this.yuedeobj?.jsyszuoyscyxbhuayouhaozhi)}吨`},
`
);
}
break;
default:
// 当 expression 的值与所有 case 的值都不匹配时执行的代码
}
// 第5项
if (this.yuedeobj?.bqpjschxlchbsyzj >= 0) {
zjhbysList.push(
`本年度平均艘次航行里程${this.yuedeobj?.bqpjschxlc}海里/艘次,环比上年度${
this.yuedeobj?.bqpjschxlchbsyzj >= 0
? `增加${this.yuedeobj?.bqpjschxlchbsyzj}海里/艘次`
: `减少${Math.abs(this.yuedeobj?.bqpjschxlchbsyzj)}海里/艘次`
},约${
this.yuedeobj?.bqpjschxlchbsyzjyh >= 0
? `增加油耗${this.yuedeobj?.bqpjschxlchbsyzjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.bqpjschxlchbsyzjyh)}吨`
}。`
);
} else {
jshbysList.push(
`本年度平均艘次航行里程${this.yuedeobj?.bqpjschxlc}海里/艘次,环比上年度${
this.yuedeobj?.bqpjschxlchbsyzj >= 0
? `增加${this.yuedeobj?.bqpjschxlchbsyzj}海里/艘次`
: `减少${Math.abs(this.yuedeobj?.bqpjschxlchbsyzj)}海里/艘次`
},约${
this.yuedeobj?.bqpjschxlchbsyzjyh >= 0
? `增加油耗${this.yuedeobj?.bqpjschxlchbsyzjyh}吨`
: `减少油耗${Math.abs(this.yuedeobj?.bqpjschxlchbsyzjyh)}吨`
}。`
);
}
if (this.yuedeobj.bqrylhb >= 0) {
this.hbysList.push(...zjhbysList);
this.hbysList.push(...jshbysList);
for (let item = 0; item < this.hbysList.length; item++) {
this.hbysList[item] = `${item + 1}、${this.hbysList[item]}`;
}
} else {
this.hbysList.push(...jshbysList);
this.hbysList.push(...zjhbysList);
for (let item = 0; item < this.hbysList.length; item++) {
this.hbysList[item] = `${item + 1}、${this.hbysList[item]}`;
}
}
this.hbysList.push(
`
综上所述,环比上年度,作业因素导致本年度油耗${
this.yuedeobj?.bt1zyys >= 0 ? `增加${this.yuedeobj?.bt1zyys}吨` : `减少${Math.abs(this.yuedeobj?.bt1zyys)}吨`
},调度因素导致本年度油耗${
this.yuedeobj?.bt1ddys >= 0 ? `增加${this.yuedeobj?.bt1ddys}吨` : `减少${Math.abs(this.yuedeobj?.bt1ddys)}吨`
},其它因素导致本年度油耗${
this.yuedeobj?.bt1qtys >= 0 ? `增加${this.yuedeobj?.bt1qtys}吨` : `减少${Math.abs(this.yuedeobj?.bt1qtys)}吨`
}。 `
);
this.option['series'] = [
{
name: 'Access From',
type: 'pie',
radius: '50%',
label: {
show: true,
formatter: '{b}: {c} ({d}%)'
},
data: this.yuedeobj?.bt1,
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
];
this.tu1echars = echarts.init(window.document.getElementById('tu1'));
this.tu1echars.setOption(this.option);
}
});
} else {
Object.values(this.formItem.controls).forEach(control => {
if (control.invalid) {
control.markAsDirty();
control.updateValueAndValidity({onlySelf: true});
}
});
}
}
}