import { Component } from '@angular/core'; import {FormGroup, FormsModule, NonNullableFormBuilder, ReactiveFormsModule, Validators} from "@angular/forms"; import {DateSelectType, DateUtils} from "../../../utils/dateUtils.service"; import {DictionaryPipe} from "../../../pipes/common/dictionary.pipe"; import {NzMessageService} from "ng-zorro-antd/message"; import {NzModalComponent, NzModalModule, NzModalService} from "ng-zorro-antd/modal"; import {OrderAfterSalesService} from "../../../services/trade/order-after-sales.service"; import {DatePipe, NgForOf, NgIf, NgSwitch} from "@angular/common"; import {NzButtonComponent} from "ng-zorro-antd/button"; import { NzCellEllipsisDirective, NzCellFixedDirective, NzTableCellDirective, NzTableComponent, NzTbodyComponent, NzTheadComponent, NzThMeasureDirective, NzTrDirective } from "ng-zorro-antd/table"; import {NzColDirective, NzRowDirective} from "ng-zorro-antd/grid"; import {NzDividerComponent} from "ng-zorro-antd/divider"; import {NzDropDownADirective, NzDropDownDirective, NzDropdownMenuComponent} from "ng-zorro-antd/dropdown"; import {NzFlexDirective} from "ng-zorro-antd/flex"; import {NzFormControlComponent, NzFormDirective, NzFormItemComponent, NzFormLabelComponent} from "ng-zorro-antd/form"; import {NzIconDirective} from "ng-zorro-antd/icon"; import {NzInputDirective} from "ng-zorro-antd/input"; import {NzMenuDirective, NzMenuItemComponent} from "ng-zorro-antd/menu"; import {NzOptionComponent, NzSelectComponent} from "ng-zorro-antd/select"; import {NzDatePickerComponent, NzDatePickerModule, NzRangePickerComponent} from "ng-zorro-antd/date-picker"; import {NzRadioButtonDirective, NzRadioComponent, NzRadioGroupComponent} from "ng-zorro-antd/radio"; import {NzTooltipDirective} from "ng-zorro-antd/tooltip"; import {NzTreeComponent} from "ng-zorro-antd/tree"; import {NzDescriptionsModule} from "ng-zorro-antd/descriptions"; import {NzTabComponent, NzTabSetComponent, NzTabsModule} from "ng-zorro-antd/tabs"; import {NzTimelineModule} from "ng-zorro-antd/timeline"; import {NzImageDirective, NzImageModule} from "ng-zorro-antd/image"; import {NzTypographyComponent} from "ng-zorro-antd/typography"; import {environment} from "../../../../environments/environment"; import {NzSpinComponent} from "ng-zorro-antd/spin"; import {NzAlertComponent} from "ng-zorro-antd/alert"; import {CommunicationService} from "../../../services/common/communication.service"; import {OrderGoodsService} from "../../../services/trade/order-goods.service"; @Component({ selector: 'app-order-after-sales', standalone: true, imports: [ DatePipe, DictionaryPipe, FormsModule, NgForOf, NgIf, NzButtonComponent, NzCellFixedDirective, NzColDirective, NzDividerComponent, NzDropDownADirective, NzDropDownDirective, NzDropdownMenuComponent, NzFlexDirective, NzFormControlComponent, NzFormDirective, NzFormItemComponent, NzFormLabelComponent, NzIconDirective, NzInputDirective, NzMenuDirective, NzMenuItemComponent, NzModalComponent, NzOptionComponent, NzRowDirective, NzSelectComponent, NzTableCellDirective, NzTableComponent, NzTbodyComponent, NzThMeasureDirective, NzTheadComponent, NzTrDirective, ReactiveFormsModule, NzModalModule, NzRangePickerComponent, NzDatePickerComponent, NzDatePickerModule, NzRadioButtonDirective, NzRadioComponent, NzRadioGroupComponent, NgSwitch, NzCellEllipsisDirective, NzTooltipDirective, NzTreeComponent, NzDescriptionsModule, NzTabSetComponent, NzTabComponent, NzTabsModule, NzTimelineModule, NzImageDirective, NzImageModule, NzTypographyComponent, NzSpinComponent, NzAlertComponent ], templateUrl: './order-after-sales.component.html', styleUrl: './order-after-sales.component.less' }) export class OrderAfterSalesComponent { imageUrl = environment.imageUrl; isSpinning = false; // 表单页数 tablePageNum = 1; // 表单数据 tableData: any = { total: 0, list: [], }; // 搜索表单 searchForm: FormGroup; // 时间类型选择 dateTypeSelect = DateSelectType; // 申请状态 applyStatusArray = new DictionaryPipe().getDictionaryList('ORDER_AFTER_SALES_APPLY_STATUS'); // 申请类型 applyTypeArray = new DictionaryPipe().getDictionaryList('ORDER_AFTER_SALES_APPLY_TYPE'); // 产品类型 orderChildProductType = new DictionaryPipe().getDictionaryList('ORDER_CHILD_PRODUCT_TYPE'); // 申请详情模态框 applyDetailVisible = false; // 申请详情数据 applyDetail: any = { applyOpRecord: [] }; // 申请审核表单 applyAuditForm: FormGroup; // 申请审核模态框 applyAuditVisible = false; // 更多查询条件 isCollapse = false; goodsOrderData: any ={}; constructor(private fb: NonNullableFormBuilder, private orderAfterSalesService : OrderAfterSalesService, private communicationService: CommunicationService, private goodsOrderService: OrderGoodsService, private message: NzMessageService, private modal: NzModalService) { console.log("申请类型" ,this.applyTypeArray ) // 初始化搜索框 this.searchForm = this.fb.group({ type: [''], userPhone: [''], childOrderNo: [''], applyNo: [''], status: [''], productType: [''], productName: [''], orderNo: [''], createTimeArray: [[]], createTimeSelect: ['1'], createTimeS: [''], createTimeE: [''], }); this.applyAuditForm = this.fb.group({ applyNo: [''], type: [''], auditStatus: ['', [Validators.required]], jdAuditStatus: [''], remarks: [''], }); this.createTimeInit(); this.createTimeInit(); this.queryData(); } /** * 获取数据 */ queryData() { if (this.searchForm.controls['createTimeArray'].value != null && this.searchForm.controls['createTimeArray'].value.length > 0) { this.searchForm.controls['createTimeS'].setValue(new Date(this.searchForm.controls['createTimeArray'].value[0]).getTime()); this.searchForm.controls['createTimeE'].setValue(new Date(this.searchForm.controls['createTimeArray'].value[1]).getTime()); } else { this.searchForm.controls['createTimeS'].setValue(null) this.searchForm.controls['createTimeE'].setValue(null) } this.searchForm.value.pageNum = this.tablePageNum; this.searchForm.value.pageSize = 10; this.searchForm.value.time = new Date().getTime(); this.orderAfterSalesService.queryApplyList(this.searchForm.value, (data: any) => { if (data['return_code'] == '000000') { this.tableData = data['return_data']; } }); } /** * 搜索表单提交 */ searchFormSubmit(): void { this.tablePageNum = 1; this.queryData(); } /** * 搜索表单重置 */ searchFormReset(): void { this.searchForm.reset(); } /** * 创建时间初始化 */ createTimeInit() { let createTimeSelect = this.searchForm.controls['createTimeSelect'].value; if (createTimeSelect != null) { let timeObj = DateUtils.getDate(new Date(), Number(createTimeSelect)); this.searchForm.controls['createTimeArray'].setValue([timeObj.timeS, timeObj.timeE]); } } /** * 展示详情 * @param applyNo */ showDetail(applyNo: string) { this.orderAfterSalesService.queryApply(applyNo,(data: any) => { if (data['return_code'] == '000000') { this.applyDetail = data['return_data']; console.log(this.applyDetail); this.applyDetailVisible = true; } else { this.message.error(data['return_msg']); } }); } /** * 关闭详情 */ closeDetail() { this.applyDetail = {}; this.applyDetailVisible = false; } /** * 打开审核模态框 * @param data */ showAudit(data: any) { console.log("data", data); console.log(typeof data.productType); console.log(1); if (data.productType == 1) { this.getOrderGoods(data.childOrderNo); } data.type = String(data.type); data.remarks = ''; this.applyAuditForm.patchValue(data); this.applyAuditForm.controls['applyNo'].disable(); this.applyAuditForm.controls['type'].disable(); this.applyAuditVisible = true; } /** * 提交审核 */ submitAuditForm() { this.isSpinning = true; if (this.applyAuditForm.valid) { this.applyAuditForm.controls['applyNo'].enable(); this.orderAfterSalesService.audit(this.applyAuditForm.value, (data: any) => { if (data['return_code'] == '000000') { this.message.create('success', '操作成功'); // 清空表单 this.closeAudit(); this.queryData(); } else { this.message.create('error', data['return_msg']); } this.isSpinning = false; }); } else { this.applyAuditForm.controls['applyNo'].disable(); Object.values(this.applyAuditForm.controls).forEach(control => { if (control.invalid) { control.markAsDirty(); control.updateValueAndValidity({ onlySelf: true }); } }); this.isSpinning = false; } } /** * 关闭审核 */ closeAudit() { this.applyAuditForm.reset(); this.applyAuditVisible = false; } /** * 完结提示框 * @param applyNo */ showFinishConfirm(applyNo: string): void { this.modal.confirm({ nzTitle: '提示', nzContent: '申请完结后金额原路退回', nzOnOk: () => this.submitFinish(applyNo) }); } submitFinish(applyNo: string): void { this.isSpinning = true; const param = { applyNo: applyNo } this.orderAfterSalesService.finish(param, (data: any) => { if (data['return_code'] == '000000') { this.message.create('success', '操作成功'); this.queryData(); } else { this.message.create('error', data['return_msg']); } this.isSpinning = false; }); } // 查询实物订单 getOrderGoods(childOrderNo: string) { this.goodsOrderService.getOrderGoods(childOrderNo, (data: any) => { console.log("goodsOrderData", data); if (data['return_code'] == '000000') { this.goodsOrderData = data['return_data']; } else { this.message.create('error', data['return_msg']); } this.isSpinning = false; }); } /** * 导出订单 */ export() { this.orderAfterSalesService.export(this.searchForm.value, (data: any) => { if (data['return_code'] == '000000') { if (data['return_code'] == '000000') { this.communicationService.sendMessage(data['return_data']); } else { this.message.error(data['return_msg']); } } }); } }