You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
puhui-go-web/src/app/pages/goods/jd-goods-list/jd-goods-list.component.ts

254 lines
7.5 KiB

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<string | ArrayBuffer | null> =>
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});
}
});
}
}
}