|
@@ -1,19 +1,96 @@
|
|
|
-import { _decorator, Node } from 'cc';
|
|
|
+import { _decorator, instantiate, Label, Node, Prefab, RichText, ScrollView, tween, UIOpacity, v3 } from 'cc';
|
|
|
import { BaseView } from '../../../framework/layer/BaseView';
|
|
|
+import { Framework } from '../../../framework/Framework';
|
|
|
+import { StringUtil } from '../../../framework/util/StringUtil';
|
|
|
+import { ViewID } from '../../../framework/config/LayerConf';
|
|
|
+import { GameEvent } from '../../data/GameEvent';
|
|
|
+import { MailData } from '../../data/MailData';
|
|
|
+import { LoginMgr } from '../../common/LoginManager';
|
|
|
+import List from '../../../framework/list/List';
|
|
|
+import { CommonItem } from '../common/CommonItem';
|
|
|
const { ccclass, property } = _decorator;
|
|
|
|
|
|
@ccclass('MailDetail')
|
|
|
export class MailDetail extends BaseView {
|
|
|
- onLoad() {
|
|
|
+ @property({ type: Label, tooltip: "关闭提示" })
|
|
|
+ closeTips: Label = null;
|
|
|
+
|
|
|
+ @property({ type: Label, tooltip: "标题" })
|
|
|
+ titleTx: Label = null;
|
|
|
+
|
|
|
+ @property({ type: Label, tooltip: "发件人标题" })
|
|
|
+ fromTitle: Label = null;
|
|
|
+
|
|
|
+ @property({ type: Label, tooltip: "发件人文字" })
|
|
|
+ fromTx: Label = null;
|
|
|
+
|
|
|
+ @property({ type: Label, tooltip: "主题标题" })
|
|
|
+ captionTitle: Label = null;
|
|
|
+
|
|
|
+ @property({ type: Label, tooltip: "主题文字" })
|
|
|
+ captionTx: Label = null;
|
|
|
+
|
|
|
+ @property({ type: Label, tooltip: "邮件时间" })
|
|
|
+ timeTx: Label = null;
|
|
|
+
|
|
|
+ @property({ type: RichText, tooltip: "邮件内容" })
|
|
|
+ msgTx: RichText = null;
|
|
|
+
|
|
|
+ @property({ type: Node, tooltip: "附件背景" })
|
|
|
+ awardsBg: Node = null;
|
|
|
+
|
|
|
+ @property({ type: List, tooltip: "附件容器" })
|
|
|
+ awardsSv: List = null;
|
|
|
+
|
|
|
+ @property({ type: Label, tooltip: "附件标题" })
|
|
|
+ awardsTitle: Label = null;
|
|
|
+
|
|
|
+ @property({ type: Node, tooltip: "附件领取标记" })
|
|
|
+ getTips: Node = null;
|
|
|
+
|
|
|
+ @property({ type: Node, tooltip: "领取按钮" })
|
|
|
+ getBtn: Node = null;
|
|
|
+
|
|
|
+ @property({ type: Label, tooltip: "领取按钮文字" })
|
|
|
+ getBtnTx: Label = null;
|
|
|
+
|
|
|
+ @property({ type: Node, tooltip: "删除按钮" })
|
|
|
+ delBtn: Node = null;
|
|
|
+
|
|
|
+ @property({ type: Label, tooltip: "删除按钮文字" })
|
|
|
+ delBtnTx: Label = null;
|
|
|
+
|
|
|
+ private data = null;
|
|
|
+ onLoad() {
|
|
|
super.onLoad();
|
|
|
+ this.closeTips.string = StringUtil.getLanguageData('点击空白关闭');
|
|
|
+ this.titleTx.string = StringUtil.getLanguageData('邮件详情');
|
|
|
+ this.fromTitle.string = StringUtil.getLanguageData('来自');
|
|
|
+ this.captionTitle.string = StringUtil.getLanguageData('主题');
|
|
|
+ this.awardsTitle.string = StringUtil.getLanguageData('附件');
|
|
|
+ this.getTips.getComponent(Label).string = StringUtil.getLanguageData('附件已领取');
|
|
|
+ this.getBtnTx.string = StringUtil.getLanguageData('领取附件');
|
|
|
+ this.delBtnTx.string = StringUtil.getLanguageData('删除邮件');
|
|
|
+ let twinkle = (node)=>{
|
|
|
+ tween(this.closeTips.getComponent(UIOpacity)).to(1.2, { opacity: 10 })
|
|
|
+ .call(() => {
|
|
|
+ tween(this.closeTips.getComponent(UIOpacity)).to(1, { opacity: 255 })
|
|
|
+ .call(() => {
|
|
|
+ twinkle(this.closeTips);
|
|
|
+ }).start()
|
|
|
+ }).start()
|
|
|
+ }
|
|
|
+ twinkle(this.closeTips);
|
|
|
}
|
|
|
|
|
|
onDestroy() {
|
|
|
super.onDestroy();
|
|
|
}
|
|
|
|
|
|
- onOpen() {
|
|
|
-
|
|
|
+ onOpen(data) {
|
|
|
+ console.log('============= detail open', data)
|
|
|
+ this.data = data;
|
|
|
+ this.updateUI();
|
|
|
}
|
|
|
|
|
|
onClose() {
|
|
@@ -29,8 +106,55 @@ export class MailDetail extends BaseView {
|
|
|
}
|
|
|
|
|
|
private onTouchButton(event: Event, customStr) {
|
|
|
+ let target: any = event.target;
|
|
|
+ if (target.name == 'mask') {
|
|
|
+ Framework.layer.close(this);
|
|
|
+
|
|
|
+ } else if (target.name == 'del_btn') {
|
|
|
+ LoginMgr.sendPost('user', 'batch_del_mail', (data) => {
|
|
|
+ console.log(data);
|
|
|
+ MailData.removeMail(data.del_mails);
|
|
|
+ Framework.event.fireEvent(GameEvent.MailUpdate);
|
|
|
+ }, { ids: [this.data.id] })
|
|
|
|
|
|
+ } else if (target.name == 'get_btn') {
|
|
|
+ LoginMgr.sendPost('user', 'read_mail', (data) => {
|
|
|
+ console.log(data);
|
|
|
+ MailData.setMailReadById(this.data.id)
|
|
|
+ Framework.event.fireEvent(GameEvent.MailUpdate);
|
|
|
+ Framework.layer.open(ViewID.MailDetail, null, this.data);
|
|
|
+ }, { id: this.data.id })
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private updateUI() {
|
|
|
+ this.captionTx.string = MailData.getMailText(this.data.title, true);
|
|
|
+ let context = MailData.getMailText(this.data.content, false)
|
|
|
+ this.msgTx.string = `<b>${StringUtil.getLanguageData(context)}</b>`;
|
|
|
+
|
|
|
+ if (this.data.award && this.data.award.size > 0) {
|
|
|
+ this.awardsBg.active = true;
|
|
|
+ this.awardsSv.numItems = this.data.award.size;
|
|
|
+ if (Number(this.data.read) == 1) {
|
|
|
+ this.getBtn.active = false;
|
|
|
+ this.delBtn.active = true;
|
|
|
+ this.getTips.active = false;
|
|
|
+ } else {
|
|
|
+ this.getBtn.active = true;
|
|
|
+ this.delBtn.active = false;
|
|
|
+ this.getTips.active = false;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.awardsBg.active = false;
|
|
|
+ this.getBtn.active = false;
|
|
|
+ this.delBtn.active = true;
|
|
|
+ this.getTips.active = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ onEventList(item, idx) {
|
|
|
+ item.getComponent(CommonItem).refreshItem(this.data.award[idx]);
|
|
|
}
|
|
|
}
|
|
|
|