219 lines
7.0 KiB
TypeScript
219 lines
7.0 KiB
TypeScript
import GameModel from "./core/GameModel";
|
||
import MsgAlert from "./game/msg/MsgAlert";
|
||
import FGAlert from "./gear_2.3.4/fgui/FGAlert";
|
||
import FGUtil from "./gear_2.3.4/fgui/FGUtil";
|
||
import SKDataUtil from "./gear_2.3.4/util/SKDataUtil";
|
||
import SKUIUtil from "./gear_2.3.4/util/SKUIUtil";
|
||
|
||
|
||
|
||
const { ccclass, property } = cc._decorator;
|
||
export default class DrawMoney extends cc.Component {
|
||
/**
|
||
* 日常活動單例實例
|
||
*/
|
||
public static Instance: DrawMoney = null;
|
||
|
||
/**
|
||
* 日常活動面板
|
||
*/
|
||
MainPanel: fgui.GComponent = null;
|
||
/**
|
||
* 可用餘額
|
||
*/
|
||
canDrawNum: number = 0;
|
||
/**
|
||
* 提現列表
|
||
*/
|
||
dataList: any = [];
|
||
/**
|
||
* 展示列表
|
||
*/
|
||
showList: any = [];
|
||
/**
|
||
* 只顯示自己的記錄
|
||
*/
|
||
showSelf: boolean = false;
|
||
/**
|
||
* 是否可以申請提現
|
||
*/
|
||
canDrawFlag: boolean = true;
|
||
onLoad() {
|
||
if (DrawMoney.Instance === null) {
|
||
DrawMoney.Instance = this;
|
||
} else {
|
||
this.destroy();
|
||
return;
|
||
}
|
||
}
|
||
|
||
|
||
openDrawPanel() {
|
||
if (!SKUIUtil.isFGUIValid(this.MainPanel)) {
|
||
this.MainPanel = FGUtil.create("main_ui", "draw_panel");
|
||
FGUtil.root().addChild(this.MainPanel);
|
||
this.MainPanel.makeFullScreen();
|
||
}
|
||
this.canDrawFlag = true;
|
||
FGUtil.getComponent(this.MainPanel, "mask").onClick(this.closePanel, this)
|
||
FGUtil.getButton(this.MainPanel, "alert/close").onClick(this.closePanel, this)
|
||
|
||
FGUtil.getButton(this.MainPanel, "alert/n16").onClick(this.drawMoney, this);
|
||
FGUtil.getButton(this.MainPanel, "alert/n30").onClick(this.showSelfOnly, this);
|
||
FGUtil.getControl(this.MainPanel, "alert/n30/selected").selectedIndex = this.showSelf ? 1 : 0
|
||
|
||
var list = FGUtil.getList(this.MainPanel, "alert/n4");
|
||
list.itemRenderer = this.initListItem.bind(this);
|
||
list.setVirtual();
|
||
this.refreshList()
|
||
|
||
GameModel.send("c2s_information", {
|
||
roleid: GameModel.player.roleid
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 接收記錄
|
||
* @param data
|
||
* @returns
|
||
*/
|
||
reciveList(data) {
|
||
if (!SKUIUtil.isFGUIValid(this.MainPanel)) return;
|
||
this.dataList = SKDataUtil.jsonBy(data.withdraw);
|
||
this.canDrawNum = data.balance ? data.balance : 0;
|
||
FGUtil.getTextField(this.MainPanel, "alert/n19").text = `${this.canDrawNum.toFixed(1)}`;
|
||
this.refreshList();
|
||
}
|
||
|
||
/**
|
||
* 只看自己
|
||
*/
|
||
showSelfOnly() {
|
||
if (!SKUIUtil.isFGUIValid(this.MainPanel)) return;
|
||
if (this.showSelf) {
|
||
FGUtil.getControl(this.MainPanel, "alert/n30/selected").selectedIndex = 0
|
||
this.showSelf = false
|
||
} else {
|
||
FGUtil.getControl(this.MainPanel, "alert/n30/selected").selectedIndex = 1
|
||
this.showSelf = true
|
||
}
|
||
this.refreshList();
|
||
}
|
||
|
||
initListItem(idx, obj: fairygui.GObject) {
|
||
let item = obj.asCom;
|
||
var info = this.showList[idx];
|
||
FGUtil.getTextField(item, "id").text = `${info.serial}`;
|
||
FGUtil.getTextField(item, "name").text = `${GameModel.player.name}`;
|
||
FGUtil.getRichTextField(item, "num").text = `提現[color=#FF6666]${info.money}[/color]元`;
|
||
FGUtil.getTextField(item, "time").text = `${info.req_time}`;
|
||
// FGUtil.getTextField(item, "time").text = SKDataUtil.formatDate("YYYY-mm-dd HH:MM:SS", info.time)
|
||
FGUtil.getTextField(item, "state").text = info.state == 1 ? "[color=#4B0082]審核不通過[/color]" : info.state == 2 ? "[color=#00FF66]款項已支付√[/color]" : "[color=#000FF6]等待審核中..[/color]";
|
||
}
|
||
|
||
refreshList() {
|
||
if (!SKUIUtil.isFGUIValid(this.MainPanel)) return;
|
||
var list = FGUtil.getList(this.MainPanel, "alert/n4");
|
||
if (!this.showSelf) {
|
||
this.showList = this.dataList;
|
||
FGUtil.getTextField(this.MainPanel, "alert/drawListTip").text = "還沒有人提現哦"
|
||
} else {
|
||
this.showList = [];
|
||
for (let i in this.dataList) {
|
||
if (this.dataList[i].roleid == GameModel.player.roleid)
|
||
this.showList.push(this.dataList[i])
|
||
}
|
||
FGUtil.getTextField(this.MainPanel, "alert/drawListTip").text = "還沒有提現記錄哦"
|
||
}
|
||
list.numItems = this.showList.length;
|
||
if (this.showList.length == 0)
|
||
FGUtil.getControl(this.MainPanel, "alert/noList").selectedIndex = 1
|
||
else
|
||
FGUtil.getControl(this.MainPanel, "alert/noList").selectedIndex = 0
|
||
}
|
||
|
||
closePanel() {
|
||
FGUtil.dispose(this.MainPanel);
|
||
this.MainPanel = null;
|
||
}
|
||
|
||
drawMoney() {
|
||
if (!SKUIUtil.isFGUIValid(this.MainPanel)) return;
|
||
if (!this.canDrawFlag) {
|
||
MsgAlert.addMsg(`申請太快啦`);
|
||
return;
|
||
}
|
||
var acid = FGUtil.getTextInput(this.MainPanel, "alert/n9").text;
|
||
let idValid = this.checkSymbol(acid, 3, 30, "不能包含特殊字符");
|
||
if (idValid.length > 0) {
|
||
MsgAlert.addMsg(`賬號${idValid} `);
|
||
return;
|
||
}
|
||
|
||
var acname = FGUtil.getTextInput(this.MainPanel, "alert/n10").text;
|
||
let nameValid = this.checkSymbol(acname, 1, 10, "不能包含特殊字符");
|
||
if (nameValid.length > 0) {
|
||
MsgAlert.addMsg(`名字${nameValid} `);
|
||
return;
|
||
}
|
||
|
||
var drawNum = FGUtil.getTextInput(this.MainPanel, "alert/n11").text;
|
||
var num = 0;
|
||
if (SKDataUtil.isNumberString(drawNum)) {
|
||
num = parseInt(drawNum);
|
||
if (SKDataUtil.isNumber(num)) {
|
||
if (num >= 100) {
|
||
num = Math.floor(num);
|
||
} else {
|
||
MsgAlert.addMsg(`提現金額最低為100`);
|
||
return;
|
||
}
|
||
} else {
|
||
MsgAlert.addMsg(`請輸入正確的提現金額`);
|
||
return;
|
||
}
|
||
} else {
|
||
MsgAlert.addMsg(`請輸入正確的提現金額`);
|
||
return;
|
||
}
|
||
|
||
if (num > this.canDrawNum) {
|
||
MsgAlert.addMsg(`當前可提現餘額不足`);
|
||
return;
|
||
}
|
||
this.canDrawFlag = false;
|
||
FGAlert.show(`確定提現[color=#FF6666]${num}[/color]元到支付寶賬戶[color=#000080]${acid}[/color]麼?`, () => {
|
||
FGAlert.hide();
|
||
}, () => {
|
||
FGAlert.hide();
|
||
GameModel.send("c2s_withdraw", {
|
||
money: num,
|
||
alipay: acid,
|
||
name: acname
|
||
})
|
||
})
|
||
this.scheduleOnce(() => {
|
||
this.canDrawFlag = true
|
||
}, 1)
|
||
}
|
||
|
||
checkSymbol(value: string, min: number, max: number, tip: string): string {
|
||
if (value.length < min) {
|
||
return `長度不能少於${min}個`;
|
||
}
|
||
if (value.length > max) {
|
||
return `最多只能${max}個`;
|
||
}
|
||
let regexp = new RegExp("[\r\n\t]");
|
||
let check = regexp.test(value);
|
||
if (check) {
|
||
return `不能有回車或製表符!`;
|
||
}
|
||
regexp = new RegExp("[`~!#$^&*()=|{}':;',\\[\\]<>/?~!#¥……&*()——|{}【】‘;:”“'。,、?]");
|
||
check = regexp.test(value);
|
||
if (check) {
|
||
return tip;
|
||
}
|
||
return "";
|
||
}
|
||
} |