Files
fc/dev/project/library/imports/20/206f76a2-ddac-4880-9412-48f634ca7da9.js
T
2026-05-24 10:21:26 +08:00

283 lines
9.7 KiB
JavaScript

"use strict";
cc._RF.push(module, '206f7ai3axIgJQSSPY0yn2p', 'cmp.friend.wnd');
// Scripts/mod/friend/cmp/cmp.friend.wnd.js
"use strict";
// --------------------------------------------------------------------
// @author: shiraho@syg.com(必填, 创建模块的人员)
// @description:
// 好友主界面
// <br/>Create: new Date().toISOString()
// --------------------------------------------------------------------
var FriendController = require("friend_controller");
var RoleController = require("role_controller");
var FriendConst = require("friend_const");
var FriendEvent = require("friend_event");
var FxSVC = require("nx.fx.sv.expand");
var FxTogs = require("nx.fx.togs");
var BridgeWindow = require("bridge.window");
cc.Class({
"extends": BridgeWindow,
properties: {
scrollCon: {
"default": null,
type: FxSVC
},
togs: {
"default": null,
type: FxTogs
},
view: {
"default": null,
type: cc.Node
},
//好友数
friend_num: {
"default": null,
type: cc.RichText
},
empty_con: {
"default": null,
type: cc.Node
},
friend_views: {
"default": [],
type: [cc.Node]
},
cost_panel: {
"default": null,
type: cc.Node
},
cur_type: 0
},
// LIFE-CYCLE CALLBACKS:
onLoad: function onLoad() {
this.model = FriendController.getInstance().getModel();
this.ctrl = FriendController.getInstance();
this.role_vo = RoleController.getInstance().getRoleVo();
this.rend_list = [];
//好友申请列表返回
this.bindGEvent(FriendEvent.FRIEND_APPLY, this.updateApplyFri.bind(this));
//赠送礼物返回
this.bindGEvent(FriendEvent.STRENGTH_UPDATE, this.FriendGiftRev.bind(this));
//删除好友
this.bindGEvent(FriendEvent.FRIEND_DELETE, this.delFriend.bind(this));
//添加好友
this.bindGEvent(FriendEvent.UPDATE_APPLY, this.addApplyFri.bind(this));
//更新好友数量
this.bindGEvent(FriendEvent.UPDATE_COUNT, this.updateFriNum.bind(this));
//好友数量变动(删除+被删)
this.bindGEvent(FriendEvent.UPDATE_GROUP_COUNT, this.changeFriNum.bind(this));
//有人来送礼物
this.bindGEvent(FriendEvent.FRIEND_LIST, this.revGiftBack.bind(this));
//更新红点
this.bindGEvent(FriendEvent.Update_Red_Point, this.updateRedPoint.bind(this));
//改变按钮状态
this.bindGEvent(FriendEvent.IS_DEL_BTN_STATUS, this.delChangeBtnStatus.bind(this));
//好友搜索和推荐
this.bindGEvent(FriendEvent.UD_COMMEND_LIST, this.updateFindList.bind(this));
this.bindGEvent(FriendEvent.FRIEND_QUERY_RESULT, this.updateFindList.bind(this));
this.togs.posTog = this.onTogMenu.bind(this);
this.togs.togTo(0);
},
//当前根节点销毁前进行的预处理操作
onPreClosed: function onPreClosed() {
this.scrollCon.rebuild([]);
},
updateApplyFri: function updateApplyFri() {
if (this.cur_type != FriendConst.Type.ApplyList) return;
this.updateFriendList(false);
},
FriendGiftRev: function FriendGiftRev(data) {
if (this.cur_type != FriendConst.Type.Award && this.cur_type != FriendConst.Type.MyFriend) return;
var list = data.list || {};
var id_list = {};
for (var i in list) {
var v = list[i];
id_list[v.rid + "_" + v.srv_id] = v;
}
this.updateFriendList(false);
},
delFriend: function delFriend() {
if (this.cur_type != FriendConst.Type.MyFriend && this.cur_type != FriendConst.Type.BlackList) return;
this.updateFriendList(false, true);
this.changeFriendBtn(true);
},
addApplyFri: function addApplyFri() {
if (this.cur_type != FriendConst.Type.MyFriend) {
if (this.cur_type == FriendConst.Type.ApplyList) {
this.updateFriendList(false);
}
} else {
this.updateFriendList(false);
}
},
updateFriNum: function updateFriNum() {
this.updateFriendList(false);
},
changeFriNum: function changeFriNum() {
this.updateFriendList(false, true);
},
revGiftBack: function revGiftBack() {
this.updateFriendList(false);
},
updateRedPoint: function updateRedPoint() {},
delChangeBtnStatus: function delChangeBtnStatus(is_del) {
if (this.cur_type == FriendConst.Type.MyFriend) {
var v = is_del || false;
this.changeFriendBtn(v);
}
},
start: function start() {},
selectedTabCallBack: function selectedTabCallBack(type2) {
var type = type2 || FriendConst.Type.MyFriend;
if (this.cur_type == type) return;
this.changeFriendBtn(false);
// //切换到好友列表就把红点清掉
// this.setTabTips(false, FriendConst.Type.MyFriend);
this.cur_type = type;
if (this.pre_panel != null) {
nx.gui.setActive(this.pre_panel, "", false);
}
this.pre_panel = this.friend_views[this.cur_type - 1];
if (this.pre_panel != null) {
nx.gui.setActive(this.pre_panel, "", true);
}
// //更新列表数据
this.updateFriendList(true);
},
//变更好友子项的按钮作用,true变为删除好友,false还原为私聊
changeFriendBtn: function changeFriendBtn(bool) {
this.del_friend_status = bool;
for (var i = 0; i < this.rend_list.length; ++i) {
this.rend_list[i].del_status = bool;
}
this.scrollCon.svcKey = this.cur_type;
this.scrollCon.rebuild(this.rend_list);
// this.item_scrollview.resetAddPosition(this.rend_list, null, this.cur_type);
},
updateFindList: function updateFindList(data_list) {
var list = [];
for (var i in data_list) {
list.push(data_list[i]);
}
this.rend_list = list;
this.showEmptyIcon(false);
if (this.rend_list.length <= 0) {
this.scrollCon.rebuild([]);
this.showEmptyIcon(true);
}
this.scrollCon.rebuild(this.rend_list);
},
updateFriendList: function updateFriendList(change_index, is_del) {
change_index = change_index || false;
this.rend_list = [];
var list = [];
this.cost_panel.active = true;
if (this.cur_type == FriendConst.Type.MyFriend) {
list = this.ctrl.getModel().getArray() || [];
nx.mTip.openTip("bar.friend.rev", false);
} else if (this.cur_type == FriendConst.Type.ApplyList) {
if (change_index) {
this.ctrl.apply();
return;
} else {
var array = [];
var apply_list = this.ctrl.getModel().getApplyList() || {};
for (var i in apply_list) {
array.push(apply_list[i]);
}
list = array;
}
this.updateApplyNum();
nx.mTip.openTip("bar.friend.apply", false);
} else if (this.cur_type == FriendConst.Type.Award) {
var array = this.ctrl.getModel().getArray() || [];
var award_array = [];
for (var i = 0; i < array.length; i++) {
var vo = array[i];
if (vo && vo.is_draw == 1) {
award_array.push(vo);
}
}
list = award_array;
} else if (this.cur_type == FriendConst.Type.BlackList) {
list = this.ctrl.getModel().getBlackArray() || [];
} else if (this.cur_type == FriendConst.Type.Find) {
this.cost_panel.active = false;
}
if (list) {
for (var k in list) {
if (list[k]) {
this.rend_list.push(list[k]);
}
}
}
// console.log( "friendlist====>", this.cur_type, list );
this.showEmptyIcon(false);
if (this.rend_list.length <= 0) {
this.scrollCon.rebuild([]);
this.showEmptyIcon(true);
}
this.createSubPanel(this.cur_type, this.rend_list);
if (is_del && !change_index && Utils.next(this.rend_list) != null) {
this.scrollCon.rebuild(this.rend_list);
} else {
this.scrollCon.svcKey = this.cur_type;
this.scrollCon.rebuild(this.rend_list);
}
},
//更新申请数
updateApplyNum: function updateApplyNum() {
var num = this.ctrl.getModel().getApplyNum() || 0;
this.friend_num.string = cc.js.formatStr("<color=#3f3f3f>" + nx.text.getKey("friend_str9") + "</color>" + "<color=#3f3f3f>%s/</color><color=#3f3f3f>%s</color>", num, 99);
},
//显示空白
showEmptyIcon: function showEmptyIcon(bool) {
this.empty_con.active = bool;
},
createSubPanel: function createSubPanel(index, data) {
if (index == FriendConst.Type.MyFriend) {
var all_num = this.ctrl.getModel().getFriendOnlineAndTotal().total_num;
var str = cc.js.formatStr("<color=#3f3f3f>" + nx.text.getKey("friend_str6") + "</color>" + "<color=#3f3f3f>%s/</color><color=#3f3f3f>100</color>", all_num);
this.friend_num.string = str;
} else if (index == FriendConst.Type.ApplyList) {
this.updateApplyNum();
} else if (index == FriendConst.Type.Award) {
var num = 0;
if (data) {
for (var i in data) {
var vo = data[i];
if (vo && vo.is_draw == 1) num = num + 1;
}
}
var str = cc.js.formatStr("<color=#3f3f3f>" + nx.text.getKey("friend_str10") + "</color>" + "<color=#3f3f3f>%s</color>", num);
this.friend_num.string = str;
} else if (index == FriendConst.Type.BlackList) {
var all_num = this.ctrl.getModel().getBlackListOnlineAndTotal().total_num;
this.friend_num.string = cc.js.formatStr("%s<color=#3f3f3f>%d/</color><color=#3f3f3f>%d</color>", nx.text.getKey("friend_str11"), all_num, 50);
} else if (index == FriendConst.Type.Find) {
var all_num = this.ctrl.getModel().getBlackListOnlineAndTotal().total_num;
var str = cc.js.formatStr("<color=#3f3f3f>" + nx.text.getKey("friend_str6") + "</color>" + "<color=#3f3f3f>%s/</color><color=#3f3f3f>100</color>", all_num);
this.friend_num.string = str;
}
},
onOpenConfigs: function onOpenConfigs(param) {
this.selectedTabCallBack(param.type || FriendConst.Type.MyFriend);
},
onTogMenu: function onTogMenu(_type) {
this.selectedTabCallBack(_type + 1);
},
touchClose: function touchClose() {
this.close();
} // update (dt) {},
});
cc._RF.pop();