247 lines
6.4 KiB
TypeScript
247 lines
6.4 KiB
TypeScript
import { Component, OnInit, ViewChild } from '@angular/core';
|
||
import { Router } from '@angular/router';
|
||
import { STComponent, STColumn, STChange } from '@delon/abc/st';
|
||
import { SFComponent, SFSchema, SFDateWidgetSchema, SFUISchema, SFSelectWidgetSchema } from '@delon/form';
|
||
import { NzModalService } from 'ng-zorro-antd/modal';
|
||
import { ContractManagementService } from '../../services/contract-management.service';
|
||
import { DatePipe } from '@angular/common';
|
||
|
||
@Component({
|
||
selector: 'app-contract-management-contract-list',
|
||
templateUrl: './contract-list.component.html',
|
||
styleUrls: ['./contract-list.component.less'],
|
||
providers: [DatePipe]
|
||
})
|
||
export class ContractManagementContractListComponent implements OnInit {
|
||
url = `/rule?_allow_anonymous=true`;
|
||
@ViewChild('st', { static: true })
|
||
st!: STComponent;
|
||
@ViewChild('sf', { static: false })
|
||
sf!: SFComponent;
|
||
@ViewChild('auditModal', { static: false })
|
||
auditModal!: any;
|
||
schema: SFSchema = {};
|
||
columns: STColumn[] = [];
|
||
ui: SFUISchema = {};
|
||
_$expand = false;
|
||
/**
|
||
* 查询参数
|
||
*/
|
||
get reqParams() {
|
||
const params = {
|
||
...this.sf?.value,
|
||
}
|
||
delete params.signTime;
|
||
delete params._$expand;
|
||
if(this.datePipe.transform(this.sf?.value?.signTime?.[0], 'yyyy-MM-dd HH:mm:ss') && this.datePipe.transform(this.sf?.value?.signTime?.[1], 'yyyy-MM-dd HH:mm:ss')) {
|
||
params.signTime = {
|
||
start: this.datePipe.transform(this.sf?.value?.signTime?.[0], 'yyyy-MM-dd HH:mm:ss'),
|
||
end: this.datePipe.transform(this.sf?.value?.signTime?.[1], 'yyyy-MM-dd HH:mm:ss'),
|
||
}
|
||
}
|
||
return {
|
||
...params
|
||
};
|
||
}
|
||
selectedRows: any[] = [];
|
||
constructor(
|
||
public service: ContractManagementService,
|
||
private nzModalService: NzModalService,
|
||
private router: Router,
|
||
private datePipe: DatePipe,
|
||
) {}
|
||
|
||
ngOnInit(): void {
|
||
this.initST()
|
||
this.initSF()
|
||
}
|
||
/**
|
||
* 初始化数据列表
|
||
*/
|
||
initST() {
|
||
this.columns = [
|
||
{
|
||
title: '合同编号',
|
||
width: '100px',
|
||
className: 'text-center',
|
||
render: 'contractCode'
|
||
},
|
||
{
|
||
title: '单据类型',
|
||
width: '100px',
|
||
className: 'text-center',
|
||
index:'documentType'
|
||
},
|
||
{
|
||
title: '合同名称',
|
||
width: '100px',
|
||
className: 'text-center',
|
||
index:'contractName'
|
||
},
|
||
{ title: '托运人', index: 'shipperName', width: '120px', className: 'text-center' },
|
||
{ title: '承运人', index: 'carrierName', width: '120px', className: 'text-center' },
|
||
{
|
||
title: '业务单号',
|
||
className: 'text-center',
|
||
width: '120px',
|
||
index: 'businessCode'
|
||
},
|
||
{
|
||
title: '签署日期',
|
||
className: 'text-center',
|
||
width: '120px',
|
||
index: 'signTime'
|
||
},
|
||
{
|
||
title: '状态',
|
||
className: 'text-center',
|
||
width: '120px',
|
||
type: 'badge',
|
||
index: 'esignFlowStatus',
|
||
badge: {
|
||
'0': { text: '未发起', color: 'default' },
|
||
'1': { text: '待签章', color: 'default' },
|
||
'2': { text: '已生效', color: 'success' },
|
||
'3': { text: '已撤销', color: 'warning' },
|
||
'4': { text: '已作废', color: 'warning' },
|
||
'5': { text: '已过期', color: 'warning' },
|
||
'7': { text: '已拒签', color: 'warning' },
|
||
},
|
||
},
|
||
|
||
];
|
||
}
|
||
/**
|
||
* 初始化查询表单
|
||
*/
|
||
initSF() {
|
||
this.schema = {
|
||
properties: {
|
||
_$expand: { type: 'boolean', ui: { hidden: true } },
|
||
contractCode: {
|
||
type: 'string',
|
||
title: '合同编号',
|
||
},
|
||
businessCode: {
|
||
type: 'string',
|
||
title: '业务单号'
|
||
},
|
||
shipperName: {
|
||
type: 'string',
|
||
title: '托运人'
|
||
},
|
||
carrierName: {
|
||
type: 'string',
|
||
title: '承运人',
|
||
ui: {
|
||
visibleIf: {
|
||
_$expand: (value: boolean) => value,
|
||
},
|
||
}
|
||
},
|
||
documentType: {
|
||
title: '单据类型',
|
||
type: 'string',
|
||
default: '',
|
||
ui: {
|
||
widget: 'dict-select',
|
||
containsAllLable: true,
|
||
params: { dictKey: 'contract:document:type' },
|
||
containAllLable:true,
|
||
visibleIf: {
|
||
_$expand: (value: boolean) => value,
|
||
},
|
||
} as SFSelectWidgetSchema,
|
||
},
|
||
signTime: {
|
||
title: '签署日期',
|
||
type: 'string',
|
||
ui: {
|
||
widget: 'custom',
|
||
visibleIf: {
|
||
_$expand: (value: boolean) => value,
|
||
},
|
||
}
|
||
},
|
||
},
|
||
type: 'object',
|
||
};
|
||
this.ui = { '*': { spanLabelFixed: 110, grid: { span: 8, gutter: 4 } } };
|
||
}
|
||
/**
|
||
* 查询字段个数
|
||
*/
|
||
get queryFieldCount(): number {
|
||
return Object.keys(this.schema?.properties || {}).length;
|
||
}
|
||
stChange(e: STChange): void {
|
||
switch (e.type) {
|
||
case 'checkbox':
|
||
this.selectedRows = e.checkbox!;
|
||
break;
|
||
case 'filter':
|
||
this.st.load();
|
||
break;
|
||
}
|
||
}
|
||
routeTo(item: any) {
|
||
this.router.navigate(['/ticket/invoice-requested-detail/1']);
|
||
}
|
||
|
||
auditAction(item: any) {
|
||
const modal = this.nzModalService.create({
|
||
nzTitle: '审核',
|
||
nzContent: this.auditModal,
|
||
nzFooter: [
|
||
{
|
||
label: '拒绝',
|
||
type: 'default',
|
||
onClick: () => {
|
||
modal.destroy();
|
||
}
|
||
},
|
||
{
|
||
label: '通过',
|
||
type: 'primary',
|
||
onClick: () => {
|
||
modal.destroy();
|
||
}
|
||
}
|
||
]
|
||
});
|
||
modal.afterClose.subscribe(res => {
|
||
this.st.load();
|
||
});
|
||
}
|
||
|
||
showReason(item: any) {
|
||
const modal = this.nzModalService.create({
|
||
nzTitle: '查看原因',
|
||
nzContent: '运单数据异常,暂时无法开票,请联系客服400-xxxx-xxxx',
|
||
nzFooter: [
|
||
{
|
||
label: '关闭',
|
||
type: 'primary',
|
||
onClick: () => {
|
||
modal.destroy();
|
||
}
|
||
}
|
||
]
|
||
});
|
||
}
|
||
/**
|
||
* 重置表单
|
||
*/
|
||
resetSF() {
|
||
this.sf.reset();
|
||
this._$expand = false;
|
||
}
|
||
/**
|
||
* 伸缩查询条件
|
||
*/
|
||
expandToggle(): void {
|
||
this._$expand = !this._$expand;
|
||
this.sf?.setValue('/_$expand', this._$expand);
|
||
}
|
||
}
|