327 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			327 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 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)
 | |
|       }
 | |
|     })
 | |
|   }
 | |
| }
 |