110 lines
4.5 KiB
TypeScript
110 lines
4.5 KiB
TypeScript
import moment = require("moment");
|
|
import { ACTIVITY_TIME_TYPE, POP_NOTICE_TIME_SHOW_TYPE, POP_NOTICE_TIME_TYPE } from "../../consts";
|
|
import { ActivityModelType } from "../../db/Activity";
|
|
import { ActivityBase } from "./activityField";
|
|
|
|
interface PopNoticeInDb {
|
|
bg: string; // 背景图片
|
|
canClose: boolean; // 是否可以选择今天不再弹出
|
|
sort: number; // 活动的排序,越大的越前
|
|
skip: string; // 前往
|
|
sysType: number; // dic_zyz_systemOpenTime的id,功能开启
|
|
timePosition: string; // 控制公告持续时间的显示位置'&'表示不显示持续时间
|
|
btnPosition: string; // 按钮位置
|
|
timeType: POP_NOTICE_TIME_TYPE; // 1-手写公告 2-指定时间 3-按某个活动时间 4-按某个商品时间 5-无时间
|
|
timeStr: string; // 公告时间
|
|
beginTime: number; // 后台选择的时间,13位时间戳
|
|
endTime: number; // 后台选择的时间,13位时间戳
|
|
activityId: number; // 活动id
|
|
shopItemId: number; // 商品id
|
|
}
|
|
|
|
interface PopNoticeTimeParam {
|
|
timeType: POP_NOTICE_TIME_TYPE;
|
|
timeStr: string;
|
|
beginTime: number; // 后台选择的时间,13位时间戳
|
|
endTime: number; // 后台选择的时间,13位时间戳
|
|
activityId: number;
|
|
shopItemId: number;
|
|
}
|
|
|
|
/**
|
|
* 打脸公告
|
|
*/
|
|
export class PopNoticeData extends ActivityBase {
|
|
bg: string; // 背景图片
|
|
canClose: boolean; // 是否可以选择今天不再弹出
|
|
sort: number; // 活动的排序,越大的越前
|
|
skip: string; // 前往
|
|
sysType: number; // dic_zyz_systemOpenTime的id,功能开启
|
|
showTimeType: POP_NOTICE_TIME_SHOW_TYPE = POP_NOTICE_TIME_SHOW_TYPE.NO; // 显示类型
|
|
timePosition: string; // 控制公告持续时间的显示位置'&'表示不显示持续时间
|
|
btnPosition: string; // 按钮位置
|
|
time: string = ''; // 公告持续时间
|
|
countdownTime: number = 0; // 公告持续时间,10位时间戳
|
|
param: PopNoticeTimeParam;
|
|
|
|
constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
|
|
super(activityData, createTime, serverTime)
|
|
this.initData(activityData.data)
|
|
}
|
|
|
|
public initData(data: string) {
|
|
let dataObj: PopNoticeInDb = JSON.parse(data);
|
|
this.bg = dataObj.bg;
|
|
this.canClose = dataObj.canClose;
|
|
this.sort = dataObj.sort;
|
|
this.sysType = dataObj.sysType;
|
|
this.skip = dataObj.skip;
|
|
this.timePosition = dataObj.timePosition;
|
|
this.btnPosition = dataObj.btnPosition;
|
|
this.param = {
|
|
timeType: dataObj.timeType,
|
|
timeStr: dataObj.timeStr,
|
|
beginTime: dataObj.beginTime,
|
|
endTime: dataObj.endTime,
|
|
activityId: dataObj.activityId,
|
|
shopItemId: dataObj.shopItemId,
|
|
}
|
|
this.setTime();
|
|
}
|
|
|
|
private setTime(beginTime?: number, endTime?: number) {
|
|
let param = this.param;
|
|
switch (param.timeType) {
|
|
case POP_NOTICE_TIME_TYPE.USE_STR:
|
|
this.showTimeType = POP_NOTICE_TIME_SHOW_TYPE.READ_STR;
|
|
this.time = param.timeStr;
|
|
break;
|
|
case POP_NOTICE_TIME_TYPE.USE_TIME:
|
|
this.showTimeType = POP_NOTICE_TIME_SHOW_TYPE.READ_COUNTDOWN;
|
|
this.time = `活动时间:${moment(param.beginTime).format('MM.DD')} - ${moment(param.endTime).format('MM.DD')}`
|
|
this.countdownTime = Math.floor(param.endTime/1000);
|
|
break;
|
|
case POP_NOTICE_TIME_TYPE.USE_ACTIVITY:
|
|
case POP_NOTICE_TIME_TYPE.USE_SHOPITEM:
|
|
this.showTimeType = POP_NOTICE_TIME_SHOW_TYPE.READ_COUNTDOWN;
|
|
if(beginTime && endTime) {
|
|
this.time = `活动时间:${moment(beginTime * 1000).format('MM.DD')} - ${moment(endTime * 1000).format('MM.DD')}`
|
|
this.countdownTime = endTime;
|
|
}
|
|
break;
|
|
case POP_NOTICE_TIME_TYPE.NO:
|
|
this.showTimeType = POP_NOTICE_TIME_SHOW_TYPE.NO;
|
|
break;
|
|
}
|
|
}
|
|
|
|
public setActivityTime(beginTime: number, endTime: number) {
|
|
if(this.param.timeType != POP_NOTICE_TIME_TYPE.USE_ACTIVITY && this.param.timeType != POP_NOTICE_TIME_TYPE.USE_SHOPITEM) return;
|
|
this.setTime(beginTime, endTime);
|
|
}
|
|
|
|
public needActivityTime() {
|
|
return this.param.timeType == POP_NOTICE_TIME_TYPE.USE_ACTIVITY;
|
|
}
|
|
|
|
public needShopTime() {
|
|
return this.param.timeType == POP_NOTICE_TIME_TYPE.USE_SHOPITEM;
|
|
}
|
|
} |