import { Router } from '@angular/router'; import { Component, OnInit, ViewChild } from '@angular/core'; import { STColumn, STComponent } from '@delon/abc/st'; import { SFComponent, SFDateWidgetSchema, SFSchema, SFSelectWidgetSchema, SFUISchema } from '@delon/form'; import { ModalHelper, _HttpClient } from '@delon/theme'; import { NzModalService } from 'ng-zorro-antd/modal'; import { map } from 'rxjs/operators'; import { OrderManagementService } from '../../services/order-management.service'; @Component({ selector: 'app-supply-management-complaint', templateUrl: './complaint.component.html', styleUrls: ['./complaint.component.less'] }) export class OrderManagementComplaintComponent implements OnInit { ui: SFUISchema = {}; uiView: SFUISchema = {}; schema: SFSchema = {}; schemaView: SFSchema = {}; auditMany = false; isVisibleRE = false; _$expand = false; channelId: any; resourceStatus: any; @ViewChild('st') private readonly st!: STComponent; @ViewChild('sf', { static: false }) sf!: SFComponent; @ViewChild('sfView', { static: false }) sfView!: SFComponent; columns: STColumn[] = []; datass: any = [ { one: '1', two: '1', three: '1', id: 1 }, { one: '2', two: '2', three: '2', id: 2 }, ]; tabs = [ { name: '全部', type: 0, }, { name: '待处理', type: 1, }, { name: '已处理', type: 2, }, { name: '已撤销', type: 3, } ]; constructor( public service: OrderManagementService, private modal: NzModalService, private router: Router ) { } /** * 查询参数 */ get reqParams() { const a: any = {}; if(this.resourceStatus) { a.complaintStatus = this.resourceStatus } const params: any = Object.assign({}, this.sf?.value || {}); delete params._$expand; return { ...a, ...params, complainantTime: { start: this.sf?.value?.complainantTime?.[0] || '', end: this.sf?.value?.complainantTime?.[1] || '' } }; } get selectedRows() { return this.st?.list.filter((item) => item.checked) || []; } ngOnInit(): void { this.initSF(); this.initST(); this.initSTAudit(); } /** * 初始化查询表单 */ initSF() { this.schema = { properties: { complaintCode: { type: 'string', title: '投诉单号', }, complainantTime: { title: '投诉时间', type: 'string', ui: { widget: 'date', mode: 'range', format: 'yyyy-MM-dd', } as SFDateWidgetSchema, }, }, }; this.ui = { '*': { spanLabelFixed: 110, grid: { span: 8, gutter: 4 } } }; } /** * 初始化数据列表 */ initST() { this.columns = [ { title: '投诉单号', width: '170px', fixed: 'left', className: 'text-center', render: 'complaintCode' }, { title: '运单号', width: '170px', className: 'text-center', index: 'wayBillCode' }, { title: '投诉时间', width: '170px', index: 'complainantTime', className: 'text-center', }, { title: '托运方', index: 'shipperAppUserName', width: '200px', className: 'text-center' }, { title: '司机', index: 'driverIdLabel', width: '120px', className: 'text-center' }, { title: '投诉原因', className: 'text-center', width: '170px', index: 'complaintCauseLabel' }, { title: '投诉状态', className: 'text-center', width: '120px', index: 'complaintStatusLabel' }, { title: '处理结果', className: 'text-center', width: '170px', index:'handleResult' }, { title: '投诉方', className: 'text-center', width: '120px', index: 'complainantPartyLabel' }, { title: '投诉人', className: 'text-center', width: '120px', index: 'complainantName' }, { title: '操作', fixed: 'right', width: '100px', className: 'text-left', buttons: [ // { // text: '处理', // click: (_record) => this.viewEvaluate(_record), // iif: (item) => item.complaintStatus == 1 // }, { text: '查看', click: (_record) => this.view(_record), acl: { ability: ['ORDER-COMPLAINT-view'] }, }, ], }, ]; } initSTAudit() { this.schemaView = { properties: { handleResult: { title: '处理结果', type: 'string', maxLength: 50, ui: { placeholder: '最多不超过50字', widget: 'textarea', autosize: { minRows: 3, maxRows: 6 } }, }, }, required: ['handleResult'] }; this.uiView = { '*': { spanLabelFixed: 110, grid: { span: 24 } } }; } /** * 查询字段个数 */ get queryFieldCount(): number { return Object.keys(this.schema?.properties || {}).length; } /** * 伸缩查询条件 */ expandToggle(): void { this._$expand = !this._$expand; this.sf?.setValue('/_$expand', this._$expand); } tabChange(item: any) { } /** * 重置表单 */ resetSF(): void { this.sf.reset(); this._$expand = false; } selectChange(e: number) { this.resourceStatus = e; this.initST(); setTimeout(() => { this.st.load(); }, 500); } /** * 导入货源 */ importGoodsSource() { } audit(item: any) { } /* * 审核关闭弹窗 view: 1 浮动费用: 0 查看评价: 3 */ handleCancel(type: string) { const paramsa = { ...this.sfView.value, handleStatus: 0, id: this.channelId } this.service.request(this.service.$api_get_dealWithComplaint, paramsa).subscribe((res: any) =>{ if(res) { this.service.msgSrv.success('已拒绝!') this.isVisibleRE = false this.st.reload(1) } else{ this.service.msgSrv.error(res?.msg) } }) this.isVisibleRE = false } Cancel() { this.isVisibleRE = false } handleCancel2() { const paramsa = { id: this.channelId } this.service.request(this.service.$api_get_canelComplaint, paramsa).subscribe((res: any) =>{ if(res) { this.service.msgSrv.success('已拒绝!') this.isVisibleRE = false this.st.reload(1) } else{ this.service.msgSrv.error(res?.msg) } }) this.isVisibleRE = false } /** * 审核通过按钮 */ handleOK() { const paramsa = { ...this.sfView.value, handleStatus: 1, id: this.channelId } this.service.request(this.service.$api_get_dealWithComplaint, paramsa).subscribe((res: any) =>{ if(res) { this.service.msgSrv.success('已通过!') this.isVisibleRE = false this.st.reload(1) } else{ this.service.msgSrv.error(res?.msg) } }) } /** *查看评价 */ viewEvaluate(item: any) { this.isVisibleRE = true this.channelId = item.id; } view(value: any) { this.router.navigate(['/order-management/complaint-detail/' + value.id], { queryParams: { detail: JSON.stringify(value) } }) } }