提交代码

pull/1/head
胡锐 2 years ago
parent 258d808ce4
commit f04b2272a8
  1. 2
      src/app/admin/device/device-list/device-list.component.html
  2. 132
      src/app/admin/discount-package/discount-package-list/discount-package-list.component.html
  3. 32
      src/app/admin/discount-package/discount-package-list/discount-package-list.component.scss
  4. 195
      src/app/admin/discount-package/discount-package-list/discount-package-list.component.ts
  5. 12
      src/app/services/commons.service.ts
  6. 18
      src/app/services/discount-package.service.ts

@ -154,7 +154,7 @@
<i nz-icon nz-tooltip nzTooltipTitle="“小票顶部标题” 最多7位字符" nzType="question-circle" nzTheme="outline"></i>
</nz-form-label>
<nz-form-control [nzSpan]="14">
<input nz-input formControlName="receiptTop" maxlength="7" [placeholder]="'默认嗨森逛'"/>
<input nz-input formControlName="receiptTop" maxlength="9" [placeholder]="'默认嗨森逛'"/>
</nz-form-control>
</nz-form-item>

@ -2,6 +2,7 @@
<app-breadcrumb></app-breadcrumb>
<!-- end 面包屑 -->
<nz-spin nzTip="{{spinObject.title}}" [nzSpinning]="spinObject.status">
<!--条件搜索-->
<div class="inner-content">
<form nz-form [formGroup]="searchForm" (ngSubmit)="getRequest(true , searchForm.value)">
@ -59,7 +60,6 @@
</form>
</div>
<div class="inner-content">
<span>共计 {{total}} 条数据</span>
<div class="operating-button">
@ -114,13 +114,14 @@
<li class="li-a" *ngIf="data.status == 2 || data.status == 3" nz-menu-item><a (click)="upDiscountPackage(data.id)" >上架</a></li>
<li class="li-a" *ngIf="data.status == 1" nz-menu-item><a (click)="downDiscountPackage(data.id)">下架</a></li>
<li class="li-a" *ngIf="data.status == 2 || data.status == 3" nz-menu-item><a (click)="deleteDiscountPackage(data.id)">删除</a></li>
<li class="li-a" nz-menu-item><a (click)="showDeliverUserModal(data.id, data.title)">赠送用户</a></li>
</ul>
</nz-dropdown-menu>
</td>
</tbody>
</nz-table>
</div>
</nz-spin>
<nz-modal [(nzVisible)]="isVisible" nzTitle="优惠券包规则内容" (nzOnCancel)="handleCancel()" (nzOnOk)="handleCancel()">
<nz-table #basicTable [nzData]="listOfData">
@ -147,3 +148,130 @@
</nz-form-control>
</nz-form-item>
</nz-modal>
<nz-modal [(nzVisible)]="deliverUserModal" nzTitle="赠送【{{deliverUserForm.controls.packageName.value}}】卷包-用户配置" (nzOnCancel)="closeDeliverUserModal()" [nzFooter]="null" nzWidth="1000px">
<form nz-form [formGroup]="deliverUserSearchForm" class="ant-advanced-search-form">
<!-- <div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="8">
<nz-form-item>
<nz-form-label>手机号</nz-form-label>
<nz-form-control>
<input nz-input formControlName="phone" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="8">
<nz-form-item>
<nz-form-label>注册状态</nz-form-label>
<nz-form-control>
<nz-select ngModel="lucy" formControlName="registerStatus">
<nz-option nzValue="true" nzLabel="已注册"></nz-option>
<nz-option nzValue="false" nzLabel="未注册"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="8">
<nz-form-item>
<nz-form-label>数据状态</nz-form-label>
<nz-form-control>
<nz-select ngModel="lucy" formControlName="errorStatus">
<nz-option nzValue="true" nzLabel="有误"></nz-option>
<nz-option nzValue="false" nzLabel="正常"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
</div>
<div nz-row>
<div nz-col [nzSpan]="24" class="search-area">
<button nz-button [nzType]="'primary'">搜索</button>
<button nz-button (click)="resetForm()">重置</button>
</div>
</div>-->
<div nz-row>
<div nz-col [nzSpan]="24" style="text-align: right">
<button nz-button [nzType]="'primary'" (click)="showDeliverUserAddModal()">添加用户</button>
<button nz-button [nzType]="'primary'" (click)="downloadTemp()">下载excel模板</button>
<button nz-button [nzType]="'primary'" (click)="showExcelUserModal()">excel导入</button>
</div>
</div>
</form>
<span nz-typography nzType="danger">注意:提交赠送时系统会自动过滤 ”有误“ 和 ”重复“ 的数据,有误的数据不会赠送卷包。</span>
<nz-table #deliverUserTable [nzData]="deliverUserArray" [nzFrontPagination]="true">
<thead>
<tr>
<th>序号</th>
<th>用户手机号</th>
<th>注册状态</th>
<th>数据状态</th>
<th>错误描述</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let data of deliverUserTable.data" style="{{data.errorStatus?'color: #aa1111':''}}">
<td>{{data.serialNum}}</td>
<td>{{data.phone}}</td>
<td>{{data.registerStatus?'已注册':'未注册'}}</td>
<td>{{data.errorStatus?'有误':'正常'}}</td>
<td>{{data.errorMsg?data.errorMsg:'无'}}</td>
<td>
<a nz-popconfirm nzPopconfirmTitle="确定删除此数据吗?" (nzOnConfirm)="delDeliverUser(data.serialNum)">删除</a>
</td>
</tr>
</tbody>
</nz-table>
<div nz-row>
<div nz-col [nzSpan]="24" style="text-align: center;margin-top: 10px;">
<button nz-button [nzType]="'primary'" style="width: 200px;" (click)="submitDeliverUser()">提交</button>
</div>
</div>
</nz-modal>
<nz-modal [(nzVisible)]="deliverUserAddModal" nzTitle="添加用户" (nzOnCancel)="closeDeliverUserAddModal()" [nzFooter]="null" nzWidth="450">
<form nz-form [formGroup]="deliverUserAddForm" class="ant-advanced-search-form">
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="24">
<nz-form-item>
<nz-form-label nzRequired>用户手机号</nz-form-label>
<nz-form-control>
<input nz-input formControlName="phone" placeholder="请输入需要赠送的用户手机号" />
</nz-form-control>
</nz-form-item>
</div>
</div>
<div nz-row>
<div nz-col [nzSpan]="24" style="text-align: center">
<button nz-button style="width: 150px;" (click)="submitDeliverUserAdd()" [nzType]="'primary'">确定</button>
</div>
</div>
</form>
</nz-modal>
<nz-modal [(nzVisible)]="excelUserModal" nzTitle="导入用户" (nzOnCancel)="closeExcelUserModal()" [nzFooter]="null" nzWidth="450">
<span *ngIf="deliverUserArray.length > 0" nz-typography nzType="danger">注意:导入用户会清空现有列表中的数据。 </span>
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="24">
<nz-form-item>
<nz-form-label nzRequired>excel文件</nz-form-label>
<nz-form-control>
<nz-upload
[nzAccept]="'.xls,.xlsx'"
[(nzFileList)]="excelUploadFile"
nzAction="{{BASE_URL}}/fileUpload/uploadfile"
[nzHeaders]="{ authorization: 'authorization-text' }"
(nzChange)="excelUserHandleChange($event)"
>
<button nz-button><i nz-icon nzType="upload"></i>{{excelUploadBtn?'上传文件':'重新上传'}}</button>
</nz-upload>
</nz-form-control>
</nz-form-item>
</div>
</div>
<div nz-row>
<div nz-col [nzSpan]="24" style="text-align: center">
<button nz-button style="width: 150px;" (click)="submitExcelUser()" [nzType]="'primary'">确定</button>
</div>
</div>
</nz-modal>

@ -1,3 +1,35 @@
.table-td-operation a {
margin-right: 8px;
}
.ant-advanced-search-form {
padding: 24px;
background: #fbfbfb;
border: 1px solid #d9d9d9;
border-radius: 6px;
margin-bottom: 10px;
}
.search-result-list {
margin-top: 16px;
border: 1px dashed #e9e9e9;
border-radius: 6px;
background-color: #fafafa;
min-height: 200px;
text-align: center;
padding-top: 80px;
}
[nz-form-label] {
overflow: visible;
}
button {
margin-left: 8px;
}
.collapse {
margin-left: 8px;
font-size: 12px;
}
.search-area {
text-align: center;
}

@ -1,13 +1,14 @@
import { Component, OnInit } from '@angular/core';
import {environment} from '../../../../environments/environment';
import {FormBuilder, FormGroup} from '@angular/forms';
import {FormBuilder, FormGroup, Validators} from '@angular/forms';
import {CompanyService} from '../../../services/company.service';
import {ActivateService} from '../../../services/activate.service';
import {IconService} from '../../../services/icon.service';
import {NzMessageService} from 'ng-zorro-antd';
import {NzMessageService, NzModalService, NzUploadChangeParam} from 'ng-zorro-antd';
import {Router} from '@angular/router';
import {CommonsService} from '../../../services/commons.service';
import {DiscountPackageService} from '../../../services/discount-package.service';
import {ValidatorsService} from '../../../services/validators.service';
@Component({
selector: 'app-discount-package-list',
@ -15,7 +16,7 @@ import {DiscountPackageService} from '../../../services/discount-package.service
styleUrls: ['./discount-package-list.component.scss']
})
export class DiscountPackageListComponent implements OnInit {
BASE_URL = environment.baseUrl;
WEB_SERVE_URL = environment.imageUrl;
searchForm: FormGroup; // 搜索框
requestData = []; // 列表数据
@ -29,12 +30,32 @@ export class DiscountPackageListComponent implements OnInit {
isVisibleInventory = false;
id: number;
num: number;
deliverUserAddForm: FormGroup;
deliverUserAddModal = false;
deliverUserSearchForm: FormGroup;
deliverUserModal = false;
deliverUserArray = [];
deliverUserForm: FormGroup;
serialNumber: string;
excelUserModal = false;
excelUploadBtn = true;
excelUploadFile = [];
spinObject = {
title: '处理中',
status: false
};
constructor(
private form: FormBuilder,
private company: CompanyService,
private activate: ActivateService,
private iconService: IconService,
private message: NzMessageService,
private modal: NzModalService,
private router: Router,
private discountPackage: DiscountPackageService,
private commonsService: CommonsService,
@ -54,6 +75,23 @@ export class DiscountPackageListComponent implements OnInit {
status: [null],
phone: [null],
});
this.deliverUserSearchForm = this.form.group({
phone: [null],
registerStatus: [null],
errorStatus: [null],
});
this.deliverUserForm = this.form.group({
packageId: [null],
packageName: [''],
phoneArray: [null],
});
this.deliverUserAddForm = this.form.group({
phone: [null, [Validators.required, ValidatorsService.mobile]],
});
this.getRequest(true, this.searchForm.value);
this.commonsService.getDictionary('USING_ATTRIBUTION ', data => {
this.usingAttribution = data['return_data'];
@ -185,5 +223,156 @@ export class DiscountPackageListComponent implements OnInit {
});
}
// 打开 发送优惠券包给用户模态框
showDeliverUserModal(packageId: number, packageName: string) {
this.deliverUserForm.patchValue({ packageId: packageId, packageName: packageName})
this.deliverUserModal = true;
}
// 关闭 发送优惠券包给用户模态框
closeDeliverUserModal() {
this.deliverUserForm.reset();
this.deliverUserModal = false;
}
// 删除赠送用户
delDeliverUser(serialNum: number) {
this.deliverUserArray = this.deliverUserArray.filter(o => o.serialNum != serialNum);
}
// 展示导入模态框
showExcelUserModal() {
this.excelUserModal = true;
}
// 关闭导入模态框
closeExcelUserModal() {
this.excelUploadBtn = true;
this.excelUploadFile = [];
this.excelUserModal = false;
}
// 提交赠送数据
submitDeliverUser() {
if (this.deliverUserArray.length == 0) {
this.modal.warning({ nzTitle: '提示', nzContent: '没有需要赠送的用户'});
}
this.deliverUserForm.patchValue({ phoneArray: this.deliverUserArray.filter(o => o.errorStatus == false)});
this.spinObject.status = true;
this.spinObject.title = '处理中...';
this.discountPackage.giveAway(this.deliverUserForm.value, data => {
if (data['return_code'] === '000000') {
this.serialNumber = data['return_data'];
this.closeDeliverUserModal();
this.processRate(this.serialNumber);
} else {
this.message.create('error', data['return_msg']);
this.spinObject.status = false;
}
});
}
// 处理进度
processRate(serialNum: string) {
this.spinObject.status = true;
let time = setInterval(() => this.commonsService.getRedisValueByType(serialNum, data => {
if (data['return_data'] != null) {
this.spinObject.title = '已处理' + data['return_data'] + '条数据';
} else {
this.spinObject.status = false;
clearTimeout(time);
this.getRequest(true, this.searchForm.value);
}
}), 1000);
}
// 提交excel数据
submitExcelUser() {
this.discountPackage.getPhoneListByFileUrl({ fileUrl: this.excelUploadFile[0]['url']}, data => {
if (data['return_code'] === '000000') {
this.deliverUserArray = data['return_data']['data'];
this.closeExcelUserModal();
} else {
this.message.error(data['return_msg']);
}
});
}
// 上传excel回调
excelUserHandleChange(info: NzUploadChangeParam): void {
if (info.file.status !== 'uploading') {
this.excelUploadFile = [];
}
if (info.file.status === 'done') {
this.excelUploadBtn = false;
this.excelUploadFile.push(
{
uid: '1',
name: info.file.name,
status: 'done',
url: info.file['response']['return_data'][0],
thumbUrl: this.WEB_SERVE_URL + info.file['response']['return_data'][0],
}
)
} else if (info.file.status === 'error') {
this.message.error('文件上传失败');
}
}
// 打开 发送优惠券包给用户模态框
showDeliverUserAddModal() {
this.deliverUserAddModal = true;
}
// 关闭 发送优惠券包给用户模态框
closeDeliverUserAddModal() {
this.deliverUserAddForm.reset();
this.deliverUserAddModal = false;
}
submitDeliverUserAdd() {
for (const i in this.deliverUserAddForm.controls) {
this.deliverUserAddForm.controls[i].markAsDirty();
this.deliverUserAddForm.controls[i].updateValueAndValidity();
}
if (this.deliverUserAddForm.status == null || this.deliverUserAddForm.status !== 'VALID') {
this.modal.warning({
nzTitle: '提示',
nzContent: '请规范填写所有的必填项信息',
});
return;
}
let phoneObject = this.deliverUserArray.find(o => o.phone == this.deliverUserAddForm.controls.phone.value);
if (phoneObject != null) {
this.modal.warning({
nzTitle: '提示',
nzContent: '手机号在列表中已存在',
});
return;
}
this.discountPackage.getPhoneRegisterStatus(this.deliverUserAddForm.value, data => {
if (data['return_code'] === '000000') {
this.deliverUserArray.push({
serialNum: this.deliverUserArray.length + 1,
phone: this.deliverUserAddForm.controls.phone.value,
registerStatus: data['return_data'],
errorStatus: false,
errorMsg: null
});
this.deliverUserArray = this.deliverUserArray.slice();
this.closeDeliverUserAddModal();
}
});
}
// 下载模板
downloadTemp() {
window.location.href = this.WEB_SERVE_URL + 'template/导入模板.xlsx';
}
}

@ -177,6 +177,18 @@ export class CommonsService {
return phone.length === 11;
}
/**
*
*
* @param codeType
* @param callback
*/
public getRedisValueByType(key: string , callback): any {
this.http.get(environment.baseUrl + '/common/getRedisValueByType?key=' + key).subscribe( data => {
callback(data);
});
}
/**
*
*

@ -193,5 +193,23 @@ export class DiscountPackageService {
});
}
public getPhoneListByFileUrl(paramsObject: object, callBack) {
this.http.post(environment.baseUrl + 'highDiscountPackage/getPhoneListByFileUrl', paramsObject).subscribe(data => {
callBack(data);
});
}
public getPhoneRegisterStatus(paramsObject: object, callBack) {
this.http.post(environment.baseUrl + 'highDiscountPackage/getPhoneRegisterStatus', paramsObject).subscribe(data => {
callBack(data);
});
}
public giveAway(paramsObject: object, callBack) {
this.http.post(environment.baseUrl + 'highDiscountPackage/giveAway', paramsObject).subscribe(data => {
callBack(data);
});
}
}

Loading…
Cancel
Save