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.
346 lines
9.3 KiB
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', '编辑失败');
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|