changhong/lua_probject/base_project/Game/View/NewGroup/MngView/GroupMngPartnerRewardsView.lua

483 lines
17 KiB
Lua
Raw Normal View History

2025-05-24 14:29:14 +08:00
-- 牌友圈合伙人界面
local GroupNumberInputView = import(".GroupNumberInputView")
local TimeSettingPanel = import(".TimeSettingPanel")
local GroupMngPartnerRewardsView = {}
local M = GroupMngPartnerRewardsView
function GroupMngPartnerRewardsView.new(gid, blur_view)
local self = M
self.class = "GroupMngPartnerRewardsView"
self.group_id = gid
self.blur_view = blur_view
self:InitView()
return self
end
function M:initData()
self.rewards_data = {}
self.rewards_log = {}
self.search_rewards_data = {}
self.search_rewards_log = {}
self.partner_data = {}
self.partner_data2 = {}
self.search_partner_data = {}
self.lst_partner.numItems = 0
self.lst_partner2.numItems = 0
self.lst_rewards.numItems = 0
self.lst_log.numItems = 0
local group = DataManager.groups:get(self.group_id)
-- if group.lev == 3 then
-- local mdata = {}
-- mdata.portrait = DataManager.SelfUser.head_url
-- mdata.uid = DataManager.SelfUser.account_id
-- mdata.nick = DataManager.SelfUser.nick_name
-- self.partner_data2[1] = mdata
-- self.lst_partner2.numItems = 1
-- self.lst_partner2.selectedIndex = 0
-- end
local index = self._view:GetController("index").selectedIndex
if index < 2 then
self:GetPartnerData(0)
else
self:GetRewardsStatistic()
-- self._view:GetController("index").selectedIndex = 0
end
end
function M:InitView()
self._view = UIPackage.CreateObjectFromURL("ui://NewGroup/View_PartnerRewards")
-- 根据权限显示功能
local ctr_index = self._view:GetController("index")
local group = DataManager.groups:get(self.group_id)
if group.lev == 1 then
self._view:GetController("mng").selectedIndex = 1
else
if group.type == 2 then
self._view:GetController("alliance").selectedIndex = 1
else
ctr_index.selectedIndex = 1
self._view:GetController("mng").selectedIndex = 0
end
end
self.ctr_search = self._view:GetController("search")
-- 切换页面时1,2页需要先清理数据再加载当前页
ctr_index.onChanged:Set(function()
if ctr_index.selectedIndex == 0 then
if self.ctr_search.selectedIndex == 0 then
if #self.partner_data ~= 0 then
self.rewards_data = {}
self.lst_rewards.numItems = 0
self:GetRewardsData()
else
self:GetPartnerData(0)
end
else
self.search_rewards_data = {}
self.lst_rewards.numItems = 0
self:GetRewardsData()
end
elseif ctr_index.selectedIndex == 1 then
if self.ctr_search.selectedIndex == 0 then
self.rewards_log = {}
else
self.search_rewards_log = {}
end
self.lst_log.numItems = 0
self:GetRewardsLog()
else
self:GetRewardsStatistic()
end
end)
-- 初始化数据
self.partner_data = {}
self.partner_data2 = {}
local group = DataManager.groups:get(self.group_id)
-- if group.lev == 3 then
-- local mdata = {}
-- mdata.portrait = DataManager.SelfUser.head_url
-- mdata.uid = DataManager.SelfUser.account_id
-- mdata.nick = DataManager.SelfUser.nick_name
-- self.partner_data2[1] = mdata
-- end
self.rewards_data = {}
self.rewards_log = {}
-- 各个列表的初始化
self.lst_partner = self._view:GetChild("lst_partner")
self.lst_partner:SetVirtual()
self.lst_partner.itemRenderer = function(index, obj)
self:OnRenderPartnerItem(index, obj)
end
self.lst_partner.scrollPane.onPullUpRelease:Set(function()
self:GetPartnerData(self.lst_partner.numItems)
end)
self.lst_partner.onClickItem:Set(function()
self.rewards_data = {}
self.lst_rewards.numItems = 0
self:GetRewardsData()
end)
self.lst_partner2 = self._view:GetChild("lst_partner2")
self.lst_partner2:SetVirtual()
self.lst_partner2.itemRenderer = function(index, obj)
self:OnRenderPartnerItem2(index, obj)
end
self.lst_partner2.scrollPane.onPullUpRelease:Set(function()
self:GetPartnerData(self.lst_partner.numItems)
end)
self.lst_partner2.onClickItem:Set(function()
self.rewards_log = {}
self.lst_log.numItems = 0
self:GetRewardsLog()
end)
self.lst_rewards = self._view:GetChild("lst_rewards")
self.lst_rewards:SetVirtual()
self.lst_rewards.itemRenderer = function(index, obj)
self:OnRenderRewardsItem(index, obj)
end
self.lst_log = self._view:GetChild("lst_rewards_record")
self.lst_log:SetVirtual()
self.lst_log.itemRenderer = function(index, obj)
self:OnRenderLogItem(index, obj)
end
self.lst_log.scrollPane.onPullUpRelease:Set(function()
self:GetRewardsLog(self.lst_log.numItems)
end)
-- 初始化玩法下拉框
local items = {}
local values = {}
table.insert(items, "全部")
table.insert(values, "0")
-- if #group.playList > 0 then
for i = 1, #group.playList do
local play = group.playList[i]
table.insert(items, play.name)
table.insert(values, tostring(play.id))
end
-- end
local cb_play = self._view:GetChild("cb_play")
cb_play.items = items
cb_play.values = values
cb_play.selectedIndex = 0
-- 搜索按钮事件
self._view:GetChild("btn_search").onClick:Set(function()
self.rewards_log = {}
self.lst_log.numItems = 0
self:GetRewardsLog()
end)
self._view:GetChild("btn_search2").onClick:Set(function()
self:GetRewardsStatistic()
end)
self._view:GetChild("btn_search3").onClick:Set(function()
local quary_id = tonumber(self._view:GetChild("tex_id").text)
if not quary_id then
ViewUtil.ErrorTip(nil, "请输入正确的ID")
return
end
self.search_rewards_data = {}
self.search_rewards_log = {}
self:GetPartnerData(0, quary_id)
end)
self._view:GetChild("btn_back").onClick:Set(function()
self.lst_rewards.numItems = #self.rewards_data
self.lst_log.numItems = #self.rewards_log
self.search_partner_data = {}
end)
self._view:GetChild("btn_all").onClick:Set(function()
self.time_panel1:SetTenDay()
self.rewards_log = {}
self.lst_log.numItems = 0
self:GetRewardsLog()
end)
-- 时间组件初始化
self.time_panel1 = TimeSettingPanel.new(self._view, self._view:GetChild("btn_date1"), self._view:GetChild("btn_date2"), -308, 0)
self.time_panel2 = TimeSettingPanel.new(self._view, self._view:GetChild("btn_date3"), self._view:GetChild("btn_date4"), -308, 0)
end
-- 获取合伙人数据
function M:GetPartnerData(index, qid)
local fgCtr = ControllerManager.GetController(NewGroupController)
fgCtr:FG_PartnerList(self.group_id, index, 6, qid, function(res)
if self._is_destroy then
return
end
if res.ReturnCode ~= 0 then
ViewUtil.ErrorTip(res.ReturnCode, "获取合伙人信息失败")
else
local members = res.Data.members
if not qid then
-- if #members == 0 then return end
for i = 1, #members do
self.partner_data[#self.partner_data + 1] = members[i]
self.partner_data2[#self.partner_data2 + 1] = members[i]
end
self.lst_partner.numItems = #self.partner_data
self.lst_partner2.numItems = #self.partner_data2
if index == 0 then
local tem = self._view:GetController("index").selectedIndex
self.lst_partner.selectedIndex = 0
self.lst_partner2.selectedIndex = 0
if tem == 0 and #self.partner_data > 0 then
self:GetRewardsData()
elseif tem == 1 and #self.partner_data2 > 0 then
self:GetRewardsLog()
end
end
else
if #members == 0 then
ViewUtil.ErrorTip(nil, "找不到该合伙人")
return
end
self.search_partner_data = members
local data = members[1]
local obj = self._view:GetChild("item_search")
obj:GetChild("tex_name").text = data.nick
local btn_head = obj:GetChild("btn_head")
local portrait = data.portrait
if portrait == "" then
btn_head.icon = "ui://Common/Head0"
else
ImageLoad.Load(portrait, btn_head._iconObject, self.class)
end
obj.selected = true
self:GetRewardsData()
self:GetRewardsLog()
self.ctr_search.selectedIndex = 1
end
end
end)
end
-- 获取奖励设置数据
function M:GetRewardsData()
local data
if #self.search_partner_data == 0 then
if #self.partner_data == 0 then return end
ViewUtil.ShowModalWait()
data = self.partner_data[self.lst_partner.selectedIndex + 1]
else
data = self.search_partner_data[1]
end
local fgCtr = ControllerManager.GetController(NewGroupController)
fgCtr:FG_GetRewards(self.group_id, data.uid, data.partnerLev, function(res)
ViewUtil.CloseModalWait()
if self._is_destroy then
return
end
if res.ReturnCode ~= 0 then
ViewUtil.ErrorTip(res.ReturnCode, "获取合伙人奖励失败")
else
local rewards = res.Data.rewards
-- if #rewards == 0 then return end
local rdata
if self.ctr_search.selectedIndex == 0 then
rdata = self.rewards_data
else
rdata = self.search_rewards_data
end
for i = 1, #rewards do
rdata[#rdata + 1] = rewards[i]
end
self.lst_rewards.numItems = #rdata
end
end)
end
-- 获取奖励日志
function M:GetRewardsLog()
local data
if #self.search_partner_data == 0 then
if #self.partner_data2 == 0 then return end
ViewUtil.ShowModalWait()
data = self.partner_data2[self.lst_partner2.selectedIndex + 1]
else
data = self.search_partner_data[1]
end
local begin_time, end_time = self.time_panel1:GetDate()
local fgCtr = ControllerManager.GetController(NewGroupController)
fgCtr:FG_GetRewardsLog(self.group_id, #self.rewards_log, 6, begin_time, end_time, data.uid, function(res)
ViewUtil.CloseModalWait()
if self._is_destroy then
return
end
if res.ReturnCode ~= 0 then
ViewUtil.ErrorTip(res.ReturnCode, "获取奖励日志失败")
else
local logs = res.Data.reward_logs
-- if #logs == 0 then return end
local rdata
if self.ctr_search.selectedIndex == 0 then
rdata = self.rewards_log
else
rdata = self.search_rewards_log
end
if #rdata == 0 then
self._view:GetChild("tex_num1").text = res.Data.total_num / 100
self._view:GetChild("tex_num2").text = d2ad(res.Data.total_hp)
end
for i = 1, #logs do
rdata[#rdata + 1] = logs[i]
end
self.lst_log.numItems = #rdata
end
end)
end
-- 获取奖励统计
function M:GetRewardsStatistic()
ViewUtil.ShowModalWait()
local data = self.partner_data2[self.lst_partner2.selectedIndex + 1]
local begin_time, end_time = self.time_panel2:GetDate()
local pid = tonumber(self._view:GetChild("cb_play").value)
local fgCtr = ControllerManager.GetController(NewGroupController)
fgCtr:FG_GetRewardStatistic(self.group_id, pid, begin_time, end_time, function(res)
ViewUtil.CloseModalWait()
if self._is_destroy then
return
end
if res.ReturnCode ~= 0 then
ViewUtil.ErrorTip(res.ReturnCode, "获取奖励日志失败")
else
self._view:GetChild("tex_total_round").text = res.Data.round
self._view:GetChild("tex_total_rewards_round").text = res.Data.v_round
self._view:GetChild("tex_total_rewards_fag").text = d2ad(res.Data.hp_cost)
self._view:GetChild("tex_total_rewards").text = d2ad(res.Data.gains)
end
end)
end
-- 填充合伙人对象
function M:OnRenderPartnerItem(index, obj)
local data = self.partner_data[index + 1]
obj:GetChild("tex_name").text = data.nick
local btn_head = obj:GetChild("btn_head")
local portrait = data.portrait
if portrait == "" then
btn_head.icon = "ui://Common/Head0"
else
ImageLoad.Load(portrait, btn_head._iconObject, self.class)
end
end
-- 填充第2页合伙人对象
function M:OnRenderPartnerItem2(index, obj)
local data = self.partner_data2[index + 1]
obj:GetChild("tex_name").text = data.nick
local btn_head = obj:GetChild("btn_head")
local portrait = data.portrait
if portrait == "" then
btn_head.icon = "ui://Common/Head0"
else
ImageLoad.Load(portrait, btn_head._iconObject, self.class)
end
end
-- 显示奖励
local function __showRewardsValue(rtype, cur_value, max_value, mng, value_type)
local str = ""
local tem = value_type == 1 and "%" or ""
if not mng then
str = string.format("%s%s/%s%s", cur_value, tem, max_value, tem)
else
str = string.format("%s%s", cur_value, tem)
end
return str
end
-- 填充奖励设置对象
function M:OnRenderRewardsItem(index, obj)
local data
if self.ctr_search.selectedIndex == 0 then
data = self.rewards_data[index + 1]
else
data = self.search_rewards_data[index + 1]
end
local pdata
if self.ctr_search.selectedIndex == 0 then
pdata = self.partner_data[self.lst_partner.selectedIndex + 1]
else
pdata = self.search_partner_data[1]
end
local group = DataManager.groups:get(self.group_id)
obj:GetChild("tex_rewards").text = __showRewardsValue(data.rewardType, data.cur_value, data.max_value, group.lev < 3, data.rewardValueType or 1)
local play_name = group:getPlayName(data.pid)
obj:GetChild("tex_name").text = play_name
if data.rewardType == 3 or pdata.uid == DataManager.SelfUser.account_id then
obj:GetController("promote").selectedIndex = 1
else
obj:GetController("promote").selectedIndex = 0
end
local input_type = data.rewardType == 1 and 0 or 3
obj:GetChild("btn_set").onClick:Set(function()
local gfiv = GroupNumberInputView.new(self._root_view,function(num)
local tem = num
if data.rewardType == 2 then
tem = ad2d(tem)
end
if tem > data.max_value then
ViewUtil.ErrorTip(nil, "输入值超过上限")
return
end
local fgCtr = ControllerManager.GetController(NewGroupController)
ViewUtil.ShowModalWait()
fgCtr:FG_SetRewards(self.group_id, data.pid, pdata.partnerLev, pdata.uid, false, tem, function(res)
ViewUtil.CloseModalWait()
if res.ReturnCode ~= 0 then
ViewUtil.ErrorTip(res.ReturnCode, "设置合伙人奖励失败")
else
data.cur_value = tem
obj:GetChild("tex_rewards").text = __showRewardsValue(data.rewardType, tem, data.max_value, group.lev < 3, data.rewardValueType or 1)
end
end)
end, input_type)
gfiv:Show()
end)
obj:GetChild("btn_set_all").onClick:Set(function()
local msg_win = MsgWindow.new(nil, "你是否为名下所有合伙人设定此奖励数值?", MsgWindow.MsgMode.OkAndCancel)
msg_win.onOk:Add(function( ... )
local pdata
if self.ctr_search.selectedIndex == 0 then
pdata = self.partner_data[self.lst_partner.selectedIndex + 1]
else
pdata = self.search_partner_data[1]
end
local fgCtr = ControllerManager.GetController(NewGroupController)
ViewUtil.ShowModalWait()
fgCtr:FG_SetRewards(self.group_id, data.pid, pdata.partnerLev, pdata.uid, true, data.cur_value, function(res)
ViewUtil.CloseModalWait()
if res.ReturnCode ~= 0 then
ViewUtil.ErrorTip(res.ReturnCode, "设置合伙人奖励失败")
else
ViewUtil.ShowBannerOnScreenCenter("设置合伙人奖励成功")
end
end)
end)
msg_win:Show()
end)
end
-- 填充奖励日志
function M:OnRenderLogItem(index, obj)
local data
if self.ctr_search.selectedIndex == 0 then
data = self.rewards_log[index + 1]
else
data = self.search_rewards_log[index + 1]
end
obj:GetChild("tex_rewards").text = d2ad(data.hp)
local play_name = DataManager.groups:get(self.group_id):getPlayName(data.pid)
obj:GetChild("tex_game").text = play_name
obj:GetChild("tex_num").text = data.round / 100
obj:GetChild("tex_roomid").text = data.roomid
obj:GetChild("tex_date").text = os.date("%m月%d日\r%H:%M",data.time)
end
return M