嗨森逛PC管理端
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.
 
 
 
 
high-web/src/app/admin/activate/activate-edit/activate-edit.component.ts

346 lines
9.3 KiB

import { Component, OnInit } from '@angular/core';
import {FormBuilder, FormGroup, Validators} from '@angular/forms';
import {CouponService} from '../../../services/coupon.service';
import {ActivateService} from '../../../services/activate.service';
import {NzMessageService, NzUploadFile} from 'ng-zorro-antd';
import {environment} from '../../../../environments/environment';
import {AgentService} from '../../../services/agent.service';
import {ActivatedRoute} from '@angular/router';
function getBase64(file: File): Promise<string | ArrayBuffer | null> {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => resolve(reader.result);
reader.onerror = error => reject(error);
});
}
@Component({
selector: 'app-activate-edit',
templateUrl: './activate-edit.component.html',
styleUrls: ['./activate-edit.component.scss']
})
export class ActivateEditComponent implements OnInit {
validateForm!: FormGroup;
validateFormAward!: FormGroup;
data: any;
editFlag = false;
id: number;
agentId: number;
listOfOption: string[] = [];
listOfData = [];
agentData = [];
current = 0;
listOfControl = [{
isEdit: true,
agentId: null,
agentName: null,
prizeNum: null,
prizeId: null,
prizeName: null,
loading : false
}];
FILE_URL = environment.imageUrl;
POST_URL = environment.baseUrl;
isVisible = false;
logoFile = [];
previewImage: string | undefined = '';
previewVisible = false;
discountList = []; // 列表数据
constructor(
private fb: FormBuilder,
private coupon: CouponService,
private activate: ActivateService,
private message: NzMessageService, // 信息提示
private activatedRoute: ActivatedRoute,
private agent: AgentService,
) { }
ngOnInit(): void {
this.activatedRoute.queryParams.subscribe(queryParams => {
if (queryParams.id != null) {
this.editFlag = true;
this.id = queryParams.id;
this.getDetails(queryParams.id);
}
});
this.validateForm = this.fb.group({
title: [null, [Validators.required]],
productIdArray: [null, [Validators.required]],
type: [null, [Validators.required]],
content: [null, [Validators.required]],
time: [null, [Validators.required]],
});
this.validateFormAward = this.fb.group({
name: [null, [Validators.required]],
num: [null, [Validators.required]],
});
const whereObject = {
pageNum: 1 ,
pageSize: 800 ,
status: 2
};
const whereObjectA = {
pageNum: 1 ,
pageSize: 800 ,
type: 1
};
this.getCouponList(whereObject);
this.getListAgent(whereObjectA);
}
public getCouponList(whereObject) {
whereObject.status = 2;
this.coupon.getCouponList(whereObject, data => {
if (data['return_code'] === '000000') {
this.listOfOption = data['return_data'].list;
} else {
this.message.error(data['return_msg']);
}
});
}
// 绑定优惠券
public getDiscount(id: number , i ): void {
this.listOfControl[i].agentName = this.agentData.find(item => {
return item.id == id;
}).agentName;
this.agentId = id;
const whereObject = {};
whereObject['pageNum'] = 1;
whereObject['pageSize'] = 10000;
whereObject['agentId'] = id;
this.agent.getDiscountAgentList(whereObject, data => {
if (data['return_code'] === '000000') {
this.discountList = data['return_data'].list;
} else {
this.message.error(data['return_msg']);
}
});
}
getDiscountName(id: number , i ) {
this.listOfControl[i].prizeName = this.discountList.find(item => {
return item['highDiscount'].id == id;
})['highDiscount'].discountName;
console.log(this.listOfControl);
}
public getListAgent(whereObject) {
this.agent.getListAgent(whereObject, data => {
if (data['return_code'] === '000000') {
this.agentData = data['return_data'].list;
} else {
this.message.error(data['return_msg']);
}
});
}
// 图片查看
handlePreview = async (file: NzUploadFile) => {
if (!file.url && !file.preview) {
// tslint:disable-next-line:no-non-null-assertion
file.preview = await getBase64(file.originFileObj!);
}
this.previewImage = file.url || file.preview;
this.previewVisible = true;
}
// 返回
getBack() {
history.back();
}
// 重置
public resetForm(): void {
this.validateForm.reset();
}
// 基本信息提交
public editActivityInfo(): void {
// tslint:disable-next-line:forin
for (const i in this.validateForm.controls) {
this.validateForm.controls[i].markAsDirty();
this.validateForm.controls[i].updateValueAndValidity();
if (this.validateForm.controls[i].errors != null) {
this.message.error('必填项不能为空');
return;
}
}
this.validateForm.value.ruleArray = [{
partakeMode: 1,
productType: 1 ,
productIdArray: this.validateForm.value.productIdArray
}];
this.validateForm.value.startTime = this.validateForm.value.time[0].getTime();
this.validateForm.value.endTime = this.validateForm.value.time[1].getTime();
if (this.editFlag) {
this.validateForm.value.id = this.id;
}
this.activate.editActivityInfo(this.validateForm.value, data => {
if (data['return_code'] === '000000') {
this.editFlag = true;
this.id = data['return_data'].id;
this.current += 1;
this.message.success('编辑成功');
} else {
this.message.create('error', '编辑失败');
}
});
}
// 查询详情
public getDetails(id) {
this.activate.getDetailById(id, data => {
if (data['return_code'] === '000000') {
data['return_data'].time = [new Date(data['return_data']['startTime']), new Date(data['return_data']['endTime'])];
data['return_data'].type = String(data['return_data'].type);
data['return_data'].productIdArray = data['return_data'].ruleArray[0].productIdArray;
this.validateForm.patchValue(data['return_data']);
} else {
this.message.create('error', data['return_msg']);
}
});
this.getListByActivityId(id);
}
getListByActivityId(id: number ) {
this.activate.getListByActivityId(id , data => {
if (data['return_code'] === '000000') {
this.listOfData = data['return_data'];
} else {
this.message.create('error', data['return_msg']);
}
});
}
// 上一步
pre(): void {
this.current -= 1;
}
// 下一步
getNest(): void {
if (this.current === 0) {
this.editActivityInfo();
} else {
history.back();
}
}
// 完成
done(): void {
}
// 新增
addField(i): void {
if (
this.listOfControl[i].prizeId == null ||
this.listOfControl[i].prizeNum == null ||
this.listOfControl[i].agentId == null
) {
this.message.error('请填写必填项!');
return;
}
this.listOfControl[i].isEdit = false;
const control = {
isEdit: true,
agentId: null,
agentName: null,
prizeNum: null,
prizeId: null,
prizeName: null,
loading : false
};
this.listOfControl.push(control);
}
// 删除资质
removeField(i, e: MouseEvent): void {
e.preventDefault();
if (this.listOfControl.length > 1) {
this.listOfControl.splice(i, 1);
this.listOfControl[i - 1].isEdit = true;
}
}
// 添加配置
getAdd(): void {
this.isVisible = true;
}
handleOk(): void {
// tslint:disable-next-line:forin
for (const i in this.validateFormAward.controls) {
this.validateFormAward.controls[i].markAsDirty();
this.validateFormAward.controls[i].updateValueAndValidity();
if (this.validateFormAward.controls[i].errors != null) {
this.message.error('必填项不能为空');
return;
}
}
if (
this.listOfControl[this.listOfControl.length - 1].prizeId == null ||
this.listOfControl[this.listOfControl.length - 1].prizeNum == null ||
this.listOfControl[this.listOfControl.length - 1].agentId == null
) {
this.message.error('请填写必填项!');
return;
}
this.validateFormAward.value.activityPrizes = this.listOfControl;
this.validateFormAward.value.activityInfoId = this.id;
if (this.logoFile.length !== 0) {
if (this.logoFile[0]['response'] != null) {
this.validateFormAward.value.img = this.logoFile[0]['response']['return_data'][0];
} else {
this.validateFormAward.value.img = this.logoFile[0].name;
}
}
this.message.loading('生成奖品中!');
this.activate.editActivityAward(this.validateFormAward.value , data => {
if (data['return_code'] === '000000') {
this.isVisible = false;
this.getListByActivityId(this.id);
this.message.success('编辑成功');
} else {
this.message.create('error', '编辑失败');
}
});
}
handleCancel(): void {
this.isVisible = false;
}
deleteActivateAward(id: number) {
this.activate.deleteActivateAward(id , data => {
if (data['return_code'] === '000000') {
this.getListByActivityId(this.id);
this.message.success('成功');
} else {
this.message.create('error', '编辑失败');
}
});
}
}