-- 禁止同桌界面 local GroupBanSameTableView = {} local M = GroupBanSameTableView function GroupBanSameTableView.new(blur_view, group_id, member_id, data) setmetatable(M, {__index = BaseWindow}) local self = setmetatable({}, {__index = M}) self.class = "GroupBanSameTableView" self._close_destroy = true self._blur_view = blur_view self.group_id = group_id self.ori_ban = data.ban_list self.ban_list = membe_deep_clone(data.ban_list) self.member_id = member_id self:init("ui://NewGroup/Win_BanSameTable") return self end function M:init(url) BaseWindow.init(self,url) -- 搜索结果 self._search_member_data = {} self._search_ban_data = {} local group = DataManager.groups:get(self.group_id) self.all_members = group.members self.member_data = {} self:getMemberData(#self.all_members) self.ctr_search_m = self._view:GetController("search_m") self.ctr_search_b = self._view:GetController("search_b") self.lst_member = self._view:GetChild("lst_member") self.lst_member:SetVirtual() self.lst_member.itemRenderer = function(index, obj) self:OnRenderMemberItem(index, obj) end self.lst_member.scrollPane.onPullUpRelease:Set(function() self:getMemberData(#self.all_members) end) self.lst_ban = self._view:GetChild("lst_ban") self.lst_ban:SetVirtual() self.lst_ban.itemRenderer = function(index, obj) self:OnRenderBanItem(index, obj) end self:refreshList() self._view:GetChild("btn_back").onClick:Set(function() self._search_member_data = {} self.ctr_search_m.selectedIndex = 0 self:refreshList() end) self._view:GetChild("btn_back_ban").onClick:Set(function() self._search_ban_data = {} self.ctr_search_b.selectedIndex = 0 self:refreshList() end) local fgCtr = ControllerManager.GetController(NewGroupController) self._view:GetChild("btn_search_member").onClick:Set(function() ViewUtil.ShowModalWait(nil) local qid = tonumber(self._view:GetChild("tex_find_memb").text) if not qid then ViewUtil.CloseModalWait() ViewUtil.ErrorTip(nil, "输入ID进行搜索") return end fgCtr:FG_FindMember(self.group_id, qid, function(res) ViewUtil.CloseModalWait() if self._is_destroy then return end if res.ReturnCode ~= 0 then ViewUtil.ErrorTip(res.ReturnCode, "找不到成员") self._search_member_data = {} self:refreshList() else self.ctr_search_m.selectedIndex = 1 self._search_member_data[1] = res.Data.members[1] self:refreshList() end end) end) self._view:GetChild("btn_search_ban").onClick:Set(function() local qid = tonumber(self._view:GetChild("tex_find_ban").text) if not qid then ViewUtil.ErrorTip(nil, "输入ID进行搜索") return end for i = 1, #self.ban_list do local data = self.ban_list[i] if data.uid == qid then self.ctr_search_b.selectedIndex = 1 self._search_ban_data[1] = data self:refreshList() return end end ViewUtil.ErrorTip(nil, "找不到成员") self._search_ban_data = {} self:refreshList() end) self._view:GetChild("btn_ok").onClick:Set(function() local set_list = {} local del_list = {} for i = 1, #self.ban_list do table.insert(set_list, self.ban_list[i].uid) end for i = 1, #self.ori_ban do local tem = self.ori_ban[i] if not list_check(set_list, tem.uid) then table.insert(del_list, tem.uid) end end ViewUtil.ShowModalWait() fgCtr:FG_SetBanTable(self.group_id, self.member_id, set_list, del_list, function(res) ViewUtil.CloseModalWait() if res.ReturnCode == 0 then self:Destroy() ViewUtil.ShowBannerOnScreenCenter("禁止同桌设置成功") else ViewUtil.ErrorTip(res.ReturnCode, "禁止同桌设置失败") end end) end) end local function checkList(list, data) for i = 1, #list do if list[i].uid == data.uid then return true end end return false end function M:refreshList() local all_members = self.all_members if #self._search_member_data > 0 then all_members = self._search_member_data end self.member_data = {} for i = 1, #all_members do local data = all_members[i] if not checkList(self.ban_list, data) and data.uid ~= DataManager.SelfUser.account_id and data.uid ~= self.member_id then local mdata = {} mdata.nick = data.nick mdata.uid = data.uid mdata.portrait = data.portrait if not checkList(self.member_data, mdata) then table.insert(self.member_data, mdata) end end end self.lst_member.numItems = #self.member_data if self.ctr_search_b.selectedIndex == 1 then self.lst_ban.numItems = #self._search_ban_data else self.lst_ban.numItems = #self.ban_list end end function M:getMemberData(index) local group = DataManager.groups:get(self.group_id) -- if index == 0 then -- group:clearMember() -- end ViewUtil.ShowModalWait(nil) local fgCtr = ControllerManager.GetController(NewGroupController) fgCtr:FG_GroupMembers(self.group_id, index, 10, false, 1, function(res) ViewUtil.CloseModalWait() if res.ReturnCode ~= 0 then ViewUtil.ErrorTip(res.ReturnCode, "获取成员列表失败") else list_concat(self.all_members, res.Data.members) self:refreshList() end end) end function M:OnRenderMemberItem(index, obj) local data if #self._search_member_data > 0 then data = self._search_member_data[index + 1] else data = self.member_data[index + 1] end self:FillItem(data, obj, 0) end function M:OnRenderBanItem(index, obj) local data if self.ctr_search_b.selectedIndex == 1 then data = self._search_ban_data[index + 1] else data = self.ban_list[index + 1] end self:FillItem(data, obj, 1) end function M:FillItem(data, item, act) item:GetController("act").selectedIndex = act item:GetChild("tex_name").text = ViewUtil.stringEllipsis(data.nick) item:GetChild("tex_id").text = "ID:" .. data.uid btn_head = item:GetChild("btn_head") ImageLoad.Load(data.portrait, btn_head._iconObject) item:GetChild("btn_del").onClick:Set(function() if self.ctr_search_b.selectedIndex == 1 then list_remove(self.ban_list, data) list_remove(self._search_ban_data, data) else list_remove(self.ban_list, data) end self:refreshList() end) item:GetChild("btn_set").onClick:Set(function() if #self.ban_list >= 20 then ViewUtil.ErrorTip(nil, "最多添加20个禁止同桌对象") return end table.insert(self.ban_list, data) self:refreshList() end) end return M