import {Component} from '@angular/core'; import {DatePipe, NgForOf, NgIf, NgStyle} from "@angular/common"; import {NzButtonComponent} from "ng-zorro-antd/button"; import {NzColDirective, NzRowDirective} from "ng-zorro-antd/grid"; import {NzFormControlComponent, NzFormDirective, NzFormItemComponent, NzFormLabelComponent} from "ng-zorro-antd/form"; import {NzInputDirective} from "ng-zorro-antd/input"; import {NzOptionComponent, NzSelectComponent} from "ng-zorro-antd/select"; import {FormGroup, FormsModule, NonNullableFormBuilder, ReactiveFormsModule, Validators} from "@angular/forms"; import {NzUploadComponent} from "ng-zorro-antd/upload"; import {NzMessageService} from "ng-zorro-antd/message"; import {GoodsService} from "../../../services/goods/goods.service"; import {fallbackImg} from '../../../data/goods/goods.namespace'; import {SpecsData} from "../../../model/goods.interface"; import {NzDividerComponent} from "ng-zorro-antd/divider"; import {NzIconDirective} from "ng-zorro-antd/icon"; import {NzImageDirective, NzImageModule} from "ng-zorro-antd/image"; import {NzModalModule} from "ng-zorro-antd/modal"; import {NzPopconfirmDirective} from "ng-zorro-antd/popconfirm"; import {NzTableComponent, NzTableModule, NzTdAddOnComponent,} from "ng-zorro-antd/table"; import {NzTreeSelectComponent} from "ng-zorro-antd/tree-select"; import {DictionaryPipe} from "../../../pipes/common/dictionary.pipe"; import {GoodsStatusPipe} from "../../../pipes/goods/goods-status.pipe"; import {NzDropDownADirective, NzDropDownDirective, NzDropdownMenuComponent} from "ng-zorro-antd/dropdown"; import {NzMenuDirective, NzMenuItemComponent} from "ng-zorro-antd/menu"; import { NzInputNumberComponent, NzInputNumberGroupComponent, NzInputNumberGroupWhitSuffixOrPrefixDirective, NzInputNumberModule } from "ng-zorro-antd/input-number"; import {NzSpaceComponent, NzSpaceItemDirective} from "ng-zorro-antd/space"; import {NzDatePickerComponent} from "ng-zorro-antd/date-picker"; import {NzTypographyComponent} from "ng-zorro-antd/typography"; import {CommunicationService} from "../../../services/common/communication.service"; const getBase64 = (file: File): Promise => new Promise((resolve, reject) => { const reader = new FileReader(); reader.readAsDataURL(file); reader.onload = () => resolve(reader.result); reader.onerror = error => reject(error); }); @Component({ selector: 'app-goods-list', standalone: true, imports: [ FormsModule, NzButtonComponent, NzColDirective, NzFormControlComponent, NzFormDirective, NzFormItemComponent, NzFormLabelComponent, NzInputDirective, NzRowDirective, ReactiveFormsModule, NgForOf, NzOptionComponent, NzSelectComponent, NzModalModule, NgIf, NzUploadComponent, NzIconDirective, NzImageModule, NgStyle, NzTableComponent, NzTdAddOnComponent, NzTableModule, DictionaryPipe, DatePipe, NzImageDirective, NzTreeSelectComponent, NzDividerComponent, NzPopconfirmDirective, GoodsStatusPipe, NzDropDownADirective, NzDropDownDirective, NzInputNumberModule, NzDropdownMenuComponent, NzMenuDirective, NzMenuItemComponent, NzInputNumberComponent, NzInputNumberGroupWhitSuffixOrPrefixDirective, NzSpaceItemDirective, NzInputNumberGroupComponent, NzDatePickerComponent, NzTypographyComponent, NzSpaceComponent ], templateUrl: './jd-goods-list.component.html', styleUrl: './jd-goods-list.component.less' }) export class JdGoodsListComponent { // 表单页数 tablePageNum = 1; // 表单数据 tableData: any = { total: 0, loading: false, list: [], }; // 搜索表单 searchForm: FormGroup; // 京东价格修改 jdPriceForm: FormGroup; editPrice = false; // 展示图片 previewImage: string | undefined = ''; // 上传是否展示 previewVisible = false; balance:any; loadingSpecs = false; // 商品类型数据 nodes = []; nodesBrand = []; protected readonly fallbackImg = fallbackImg; constructor(private fb: NonNullableFormBuilder, private msg: NzMessageService, private communicationService: CommunicationService, private goodsService: GoodsService) { // 初始化搜索框 this.searchForm = this.fb.group({ title: [''], goodsType: [''], goodsBrand: [''], id: [''], salePriceS: [''], salePriceE: [''], }); // 初始化 this.jdPriceForm = this.fb.group({ automaticPrice: ['', [Validators.required]], salePrice: ['', [Validators.required]], thirdId: [''], }); this.getRequest(); this.checkAccountBalance(); this.getGoodsTypeNode(); this.getGoodsBrandNode(); } // 查询列表 public getRequest(reset: boolean = false) { this.checkAccountBalance(); this.tableData.loading = true; if (reset) { this.tablePageNum = 1; } this.searchForm.value.pageNum = this.tablePageNum; this.searchForm.value.pageSize = 10; this.searchForm.value.time = new Date().getTime(); this.goodsService.getJdGoodsList(this.searchForm.value, (data: any) => { if (data['return_code'] == '000000') { this.tableData = data['return_data']; } else { this.msg.error(data['return_msg']); } this.tableData.loading = false; }); } checkAccountBalance(): void { this.goodsService.checkAccountBalance((data: any) => { if (data['return_code'] == '000000') { this.balance = data['return_data']; } else { this.msg.error(data['return_msg']); } }); } // 获取商品分类 getGoodsTypeNode() { this.goodsService.getList({time: new Date().getTime()}, (data: any) => { if (data['return_code'] === '000000') { let tree = data['return_data'].filter((d: { opId: null; }) => d.opId == null); this.getNode(tree); } }); } // 配置数据 getNode(array: any): any { array.forEach((item: any) => { if (item.children) { this.getNode(item.children); } else { item["isLeaf"] = true; } item["key"] = item.id; }); this.nodes = array; } // 获取商品品牌 getGoodsBrandNode() { this.goodsService.getListBrandAll((data: any) => { if (data['return_code'] == '000000') { this.nodesBrand = data['return_data'].filter((d: { opId: null; }) => d.opId == null); } }); } // 订单导出 public getExport() { this.searchForm.value.time = new Date().getTime(); this.goodsService.exportJdGoods(this.searchForm.value , (data: any) => { if (data['return_code'] == '000000') { this.communicationService.sendMessage(data['return_data']); } else { this.msg.error(data['return_msg']); } this.tableData.loading = false; }); } showEditSpecs(item: any) { this.editPrice = true; this.jdPriceForm.patchValue(item); } handleEditPrice(): void { console.log("数据" , this.jdPriceForm.value); if (this.jdPriceForm.valid) { this.goodsService.jdPriceUpdate(this.jdPriceForm.value, (data: any) => { if (data['return_code'] === '000000') { this.msg.success("成功!"); this.editPrice = false; this.getRequest(false); } else { this.msg.error(data['return_msg']); } }); } else { Object.values(this.jdPriceForm.controls).forEach(control => { if (control.invalid) { control.markAsDirty(); control.updateValueAndValidity({onlySelf: true}); } }); } } }