源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

657 lines
21 KiB

  1. SocialityMailView = SocialityMailView or BaseClass(BaseItem)
  2. function SocialityMailView:__init()
  3. self.base_file = "sociality"
  4. self.layout_file = "SocialityMailView"
  5. self.model = MailModel:getInstance()
  6. self.loop_mgr = LoopScrowViewMgr.New()
  7. self.column_num = 1 --一行多少个图标
  8. self.show_count = 8
  9. --存放 Item 的列表
  10. self.mail_item_list = {} --存放 mailItem
  11. self.award_item_list = {} --存放 awardItem
  12. self.event_id_list = {} --存放事件ID
  13. self.need_refresh = false --是否需要重新调用
  14. self.have_mail = true --是否拥有邮件
  15. self:Load()
  16. end
  17. function SocialityMailView:Load_callback()
  18. self:LoadSuccess()
  19. self:InitEvent()
  20. if self.need_refresh then
  21. self:RefreshMailList()
  22. end
  23. -- MsgManager:getInstance():Remove(Config.ConfigMainIcon.TipType.mail) -- 2020/3/26 邮件红点只在接到邮件的时候才闪5s
  24. end
  25. function SocialityMailView:LoadSuccess()
  26. self.scroll,
  27. self.scroll_content,
  28. self.parent,
  29. self.mail_content_parent,
  30. self.mail_content_tra,
  31. self.mail_award_parent
  32. = GetChildTransforms(self.transform,
  33. {
  34. "ItemScrollView",
  35. "ItemScrollView/Viewport/Content",
  36. "ItemScrollView/Viewport/Content/parent",
  37. "Detail/DetailScrollView/Viewport/Content",
  38. "Detail/DetailScrollView/Viewport/Content/txtDetail",
  39. "Detail/Attachment/AwardScrollView/Viewport/Content",
  40. })
  41. self.mail_delBtn = self:GetChild("mailBottom/delBtn").gameObject
  42. self.mail_takeBtn = self:GetChild("mailBottom/takeBtn").gameObject
  43. self.mail_empty = self:GetChild("Empty").gameObject
  44. self.mail_detail = self:GetChild("Detail").gameObject
  45. self.mail_bottom = self:GetChild("mailBottom").gameObject
  46. self.oneKeyGet = self:GetChild("oneKeyGet").gameObject
  47. self.oneKeyDelete = self:GetChild("oneKeyDelete").gameObject
  48. self.businessTab = self:GetChild("topBarCon/businessTab").gameObject
  49. self.systemTab = self:GetChild("topBarCon/systemTab").gameObject
  50. self.systemRed = self:GetChild("topBarCon/systemTab/systemRed").gameObject
  51. self.businessRed = self:GetChild("topBarCon/businessTab/businessRed").gameObject
  52. self.received_obj = self:GetChild("Detail/Attachment/received").gameObject
  53. self.mail_takeBtn_image,
  54. self.businessTabImg,
  55. self.systemTabImg,
  56. self.mailBg2,
  57. self.mailListBg,
  58. self.mail_head
  59. = GetChildImages(self.transform,
  60. {
  61. "mailBottom/takeBtn",
  62. "topBarCon/businessTab",
  63. "topBarCon/systemTab",
  64. "Detail/image",
  65. "mailListBg",
  66. "Detail/Sender/mail_head",
  67. })
  68. self.DetailScrollView_tran = self:GetChild("Detail/DetailScrollView")
  69. self.mail_sender = self:GetChild("Detail/Sender/txtTitle"):GetComponent("TextMeshProUGUI")
  70. self.mail_title = self:GetChild("Detail/Title/txtTitle"):GetComponent("TextMeshProUGUI")
  71. self.mail_content = self:GetChild("Detail/DetailScrollView/Viewport/Content/txtDetail"):GetComponent("Text")
  72. self.systemTabTxt = self:GetChild("topBarCon/systemTab/Text"):GetComponent("TextMeshProUGUI")
  73. self.businessTabTxt = self:GetChild("topBarCon/businessTab/Text"):GetComponent("TextMeshProUGUI")
  74. self.mailTimeTxt = self:GetChild("Detail/Sender/mailTime"):GetComponent("TextMeshProUGUI")
  75. self.deadTime = self:GetChild("Detail/Sender/deadTime"):GetComponent("TextMeshProUGUI")
  76. self.takeBtn_txt = self:GetChild("mailBottom/takeBtn/Text"):GetComponent("TextMeshProUGUI")
  77. self.empty_girl = self:GetChild("Empty/empty/girl"):GetComponent("RawImage")
  78. self.empty_talk_bg = self:GetChild("Empty/empty/image"):GetComponent("RawImage")
  79. lua_resM:setOutsideImageSprite(self, self.mailListBg, GameResPath.GetSocialityImage("sociality_friend_list_bg"))
  80. lua_resM:setOutsideImageSprite(self, self.mailBg2, GameResPath.GetSocialityImage("sociality_chat_bg"))
  81. lua_resM:setOutsideRawImage(self, self.empty_girl, GameResPath.GetRoleBg("team_empty_bg_267_589"))
  82. lua_resM:setOutsideRawImage(self, self.empty_talk_bg, GameResPath.GetViewBigBg("com_empty_bg1"))
  83. self.mail_empty:SetActive(false)
  84. self.mail_detail:SetActive(false)
  85. -- SetAnchoredPosition(self.DetailScrollView_tran,15,-170)
  86. -- SetSizeDelta(self.DetailScrollView_tran, 667, 276)
  87. self.model.mail_tab_index = 1
  88. local system_red,business_red = self:RefreshMailTabRed()--打开界面时处理一下topbar的红点
  89. if system_red then
  90. self.model.mail_tab_index = 1
  91. elseif not system_red and business_red then
  92. self.model.mail_tab_index = 2
  93. else
  94. self.model.mail_tab_index = 1
  95. end
  96. end
  97. function SocialityMailView:InitEvent()
  98. --注册点击事件
  99. local function onBtnClickHandler(target)
  100. if target == self.mail_delBtn then
  101. if self.have_mail then
  102. self:DeleteMail()
  103. else
  104. Message.show("没有邮件")
  105. end
  106. elseif target == self.mail_takeBtn then
  107. if self.have_mail then
  108. self:TakeAttachment()
  109. else
  110. Message.show("没有邮件")
  111. end
  112. elseif target == self.oneKeyGet then
  113. self:GetAllMail()
  114. elseif target == self.oneKeyDelete then
  115. self:DeleteAllMail()
  116. elseif target == self.systemTab then
  117. if self.model.mail_tab_index == 1 then return end
  118. self.model.mail_tab_index = 1
  119. self.model.now_select_mail = nil
  120. self:RefreshMailList()
  121. elseif target == self.businessTab then
  122. if self.model.mail_tab_index == 2 then return end
  123. self.model.mail_tab_index = 2
  124. self.model.now_select_mail = nil
  125. self:RefreshMailList()
  126. end
  127. end
  128. AddClickEvent(self.mail_delBtn, onBtnClickHandler)
  129. AddClickEvent(self.mail_takeBtn, onBtnClickHandler)
  130. AddClickEvent(self.oneKeyGet, onBtnClickHandler)
  131. AddClickEvent(self.oneKeyDelete, onBtnClickHandler)
  132. AddClickEvent(self.systemTab, onBtnClickHandler)
  133. AddClickEvent(self.businessTab, onBtnClickHandler)
  134. --绑定更新邮件列表的方法
  135. local update_mail_list_fun = function()
  136. self:ShowPanel()
  137. end
  138. table.insert(self.event_id_list, self.model:Bind(MailEvent.UPDATE_MAIL_LIST, update_mail_list_fun))
  139. --绑定更新邮件内容的方法
  140. local update_mail_detail_fun = function(vo)
  141. self:ShowMailDetail(vo)
  142. end
  143. table.insert(self.event_id_list, self.model:Bind(MailEvent.UPDATE_MAIL_DETAIL, update_mail_detail_fun))
  144. function select_fun()
  145. self:SetBtnGray()
  146. end
  147. table.insert(self.event_id_list, self.model:Bind(MailEvent.SELECT_MAIL_ITEM, select_fun))
  148. --刷新topbar的红点
  149. function on_update_top_bar_red()
  150. self:RefreshMailTabRed()
  151. end
  152. table.insert(self.event_id_list, self.model:Bind(MailEvent.UPDATE_TOP_BAR_RED, on_update_top_bar_red))
  153. end
  154. --刷新topbar“系统”“交易”按钮的红点
  155. function SocialityMailView:RefreshMailTabRed()
  156. local system_red = self.model:CheckSystemMailRedDot()
  157. local business_red = self.model:CheckBusinessMailRedDot()
  158. self.systemRed:SetActive(system_red)
  159. self.businessRed:SetActive(business_red)
  160. --哪里有红点,界面就打开哪个界面,同时有红点时,系统邮件优先
  161. return system_red,business_red
  162. end
  163. function SocialityMailView:SetBtnGray()
  164. for i, v in pairs(self.model.select_mail_list) do
  165. if v.is_attach == 1 and v.state ~= 3 then
  166. self.mail_takeBtn_image.gray = false
  167. SetTMPSharedMaterial(self.takeBtn_txt, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn)
  168. self.mail_takeBtn:SetActive(false)
  169. return
  170. elseif v.is_attach ~= 1 then
  171. self.mail_takeBtn:SetActive(true)
  172. end
  173. end
  174. if self.model.now_select_mail then
  175. for i, v in ipairs(self.curr_list) do
  176. if v.mail_id == self.model.now_select_mail.mail_id then
  177. if v.is_attach == 1 and v.state ~= 3 then
  178. self.mail_takeBtn_image.gray = false
  179. SetTMPSharedMaterial(self.takeBtn_txt, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn)
  180. return
  181. end
  182. end
  183. end
  184. end
  185. self.mail_takeBtn_image.gray = true
  186. SetTMPSharedMaterial(self.takeBtn_txt, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
  187. end
  188. --打开界面
  189. function SocialityMailView:ShowPanel()
  190. if self.is_loaded then
  191. self.need_refresh = false
  192. self:RefreshMailList() --更新邮件列表
  193. else
  194. self.need_refresh = true
  195. end
  196. end
  197. --清除界面
  198. function SocialityMailView:__delete()
  199. self.model:Clear()
  200. self.model:Fire(MailEvent.GET_MAIL_INFORM) --获取邮件通知
  201. if self.loop_mgr then
  202. self.loop_mgr:DeleteMe()
  203. self.loop_mgr = nil
  204. end
  205. for i, v in pairs(self.mail_item_list) do
  206. v:DeleteMe()
  207. end
  208. self.mail_item_list = {}
  209. for i, v in pairs(self.award_item_list) do
  210. v:DeleteMe()
  211. -- v:ReleaseObj()
  212. v = nil
  213. end
  214. self.award_item_list = {}
  215. for i, v in pairs(self.event_id_list) do
  216. self.model:UnBind(v)
  217. end
  218. self.event_id_list = {}
  219. end
  220. function SocialityMailView:SetTabBtnImg()
  221. local businessTabAb = self.model.mail_tab_index == 1 and "uiComponent_asset" or "sociality_asset"
  222. local businessTabStr = self.model.mail_tab_index == 1 and "com_empty" or "sociality_tab_on"
  223. local systemTabAb = self.model.mail_tab_index == 1 and "sociality_asset" or "uiComponent_asset"
  224. local systemTabStr = self.model.mail_tab_index == 1 and "sociality_tab_on" or "com_empty"
  225. lua_resM:setImageSprite(self,self.businessTabImg, businessTabAb, businessTabStr)
  226. lua_resM:setImageSprite(self,self.systemTabImg, systemTabAb, systemTabStr)
  227. self.systemTabTxt.text = self.model.mail_tab_index == 1 and "<#ffffff>系统</color>" or "<#9eb3cf>系统</color>"
  228. self.businessTabTxt.text = self.model.mail_tab_index == 1 and "<#9eb3cf>交易</color>" or "<#ffffff>交易</color>"
  229. local systemTabMat = self.model.mail_tab_index == 1 and ShaderTools.TMPSharedMaterialType.HKYTW7OutlineBlueTab or ShaderTools.TMPSharedMaterialType.HKYTW7FFDefault
  230. local businessTabMat = self.model.mail_tab_index == 1 and ShaderTools.TMPSharedMaterialType.HKYTW7FFDefault or ShaderTools.TMPSharedMaterialType.HKYTW7OutlineBlueTab
  231. SetTMPSharedMaterial(self.systemTabTxt, systemTabMat)
  232. SetTMPSharedMaterial(self.businessTabTxt, businessTabMat)
  233. end
  234. --更新邮件列表
  235. function SocialityMailView:RefreshMailList()
  236. self:SetTabBtnImg()
  237. --隐藏所有Item
  238. for i, v in ipairs(self.mail_item_list) do
  239. v:Hide()
  240. v.gameObject:SetActive(false)
  241. end
  242. local mail_list
  243. local total_mail_list_num = 0
  244. local sys_mail_list = self.model:GetMailList()
  245. local business_mail_list = self.model:GetBusinessMailList()
  246. total_mail_list_num = #sys_mail_list + #business_mail_list
  247. if self.model.mail_tab_index == 1 then
  248. mail_list = sys_mail_list
  249. else
  250. mail_list = business_mail_list
  251. end
  252. if total_mail_list_num > 98 then
  253. Message.show("当前邮件列表已达上限,清理邮箱后才可继续收取邮件")
  254. end
  255. if #mail_list < 1 then
  256. self.have_mail = false
  257. self.mail_empty:SetActive(true)
  258. self.oneKeyDelete:SetActive(false)
  259. self.oneKeyGet:SetActive(false)
  260. self.mail_detail:SetActive(false)
  261. self.mail_bottom:SetActive(false)
  262. self.curr_list = {} --以下为一键删除多于7个以上的邮件时 重新刷新邮件的列表 不然loop_mgr还会刷新出可见的item
  263. for k, v in ipairs(mail_list) do
  264. self.curr_list[k] = v
  265. self.curr_list[k].index = k
  266. end
  267. self.loop_mgr:Init(self.scroll, self.scroll_content, self.column_num, 360, 106, function(item,index,realIndex)
  268. if item and realIndex > 0 and realIndex <= #self.curr_list then item:SetData(self.curr_list[realIndex]) end
  269. end)
  270. self.loop_mgr:InitChildren(self.mail_item_list, #self.curr_list)
  271. self.loop_mgr:RestToBeginning()
  272. self.loop_mgr:SetContentSizeData()
  273. return
  274. end
  275. self.have_mail = true
  276. self.mail_empty:SetActive(false)
  277. self.oneKeyDelete:SetActive(true)
  278. self.oneKeyGet:SetActive(true)
  279. self.mail_detail:SetActive(true)
  280. self.mail_bottom:SetActive(true)
  281. self.curr_list = {}
  282. for k, v in ipairs(mail_list) do
  283. self.curr_list[k] = v
  284. self.curr_list[k].index = k
  285. end
  286. local create_count = math.min(self.show_count, #mail_list)
  287. for k = 1, create_count do
  288. local item = self.mail_item_list[k]
  289. if item == nil then
  290. item = MailItem.New(self.parent, nil, self.layer_name)
  291. self.mail_item_list[k] = item
  292. end
  293. end
  294. self.loop_mgr:Init(self.scroll,self.scroll_content, self.column_num, 360, 106+3, function(item,index,realIndex)
  295. self:OnInitializeItem(item,index,realIndex)
  296. end)
  297. self.loop_mgr:InitChildren(self.mail_item_list, #self.curr_list)
  298. self.loop_mgr:RestToBeginning()
  299. self.loop_mgr:SetContentSizeData()
  300. --设置选中邮件
  301. local id
  302. if self.model.now_select_mail == nil then
  303. id = self.mail_item_list[1].data.mail_id --点选item列表中的第一个
  304. else
  305. id = self.model.now_select_mail.mail_id
  306. end
  307. for i, v in ipairs(self.mail_item_list) do
  308. v:OnClickHandler(id)
  309. end
  310. self:RefreshMailTabRed()--处理一次红点
  311. GlobalEventSystem:Fire(EventName.REFRESH_SOCIAL_RED_DOT)
  312. end
  313. function SocialityMailView:OnInitializeItem(item,index,realIndex)
  314. if item and realIndex > 0 and realIndex <= #self.curr_list then
  315. item:SetData(self.curr_list[realIndex])
  316. -- item:SetChoice()
  317. self:UpdateItemState(item)
  318. end
  319. end
  320. function SocialityMailView:UpdateItemState(item)
  321. for k,v in pairs(self.mail_item_list) do
  322. if v.data and self.model.now_select_mail and v.data.mail_id == self.model.now_select_mail.mail_id then
  323. v:SetSelect(true)
  324. else
  325. v:SetSelect(false)
  326. end
  327. end
  328. end
  329. --显示邮件内容
  330. function SocialityMailView:ShowMailDetail(vo)
  331. if vo == nil then return end
  332. if self.model.now_select_mail and self.model.now_select_mail.mail_id ~= vo.mail_id then return end
  333. --邮件类型图标
  334. local mail_type = self.model:GetMailType(vo.mail_id)
  335. if mail_type == 5 then
  336. lua_resM:setImageSprite(self,self.mail_head,"sociality_asset","sociality_mail_head_2")
  337. else
  338. lua_resM:setImageSprite(self,self.mail_head,"sociality_asset","sociality_mail_head_1")
  339. end
  340. local sender_str
  341. if vo.sender and vo.sender ~= "" then
  342. sender_str = vo.sender
  343. else
  344. sender_str = mail_type == 5 and "交易系统管理员" or "系统管理员"
  345. end
  346. self.mail_sender.text = sender_str
  347. self.mail_title.text = vo.title
  348. self.mailTimeTxt.text = TimeUtil:timeConversion(vo.time, "yyyy-mm-dd hh:mm:ss")
  349. local effect_et = self.model:GetMailEffectTime(vo.mail_id)
  350. local now_time = TimeUtil:getServerTime()
  351. if effect_et and effect_et - now_time > 0 then
  352. local dead_time, f = math.modf((effect_et - now_time) / 86400)
  353. if dead_time>=1 then
  354. if f > 0 then
  355. dead_time = dead_time + 1
  356. end
  357. self.deadTime.text = string.format("有效期剩余:<#60f448>%d天</color>",dead_time)
  358. else
  359. local hour_time, f2 = math.modf((effect_et - now_time) / 3600)
  360. if hour_time>=1 then
  361. if f2>0 then
  362. hour_time = hour_time + 1
  363. end
  364. self.deadTime.text = string.format("有效期剩余:<#60f448>%d小时</color>",hour_time)
  365. else
  366. local minute_time, f3 = math.modf((effect_et - now_time) / 60)
  367. if f3>0 then
  368. minute_time = minute_time +1
  369. end
  370. self.deadTime.text = string.format("有效期剩余:<#60f448>%d分</color>",minute_time)
  371. end
  372. end
  373. else
  374. self.deadTime.text = "已过期"
  375. end
  376. --超链接处理
  377. self.mail_content.text = ""
  378. if vo.content and vo.content ~= ""then
  379. local call_func = function ( param_list )
  380. ChatModel:getInstance().clicked_item = self
  381. ChatModel:getInstance().chick_hyperlink_mark = true
  382. ChatModel:getInstance():FireSpecialTab(param_list)
  383. end
  384. AddInlineLickEvent(self.mail_content, call_func)
  385. --把坑爹的半角空格变成全角空格,inlietext组件用半角空格时会像英文一样在空格后面的文字太长时转成换行
  386. vo.content = string.gsub(vo.content, " ", " ")
  387. --把换行换成换行加两个全角空格,使其变成首行自动缩进两字符
  388. -- vo.content = string.gsub(vo.content, "\n ", "\n  ")
  389. vo.content = string.gsub(vo.content, "\n", "\n  ")
  390. --如果根本就没用到<color@颜色值>这种格式就不要再去特殊解析了
  391. if not string.find(vo.content,"color@") then
  392. SetInlineText(self.mail_content, vo.content)
  393. else
  394. SetInlineText(self.mail_content, ChuanWenManager:FormatColorTag(vo.content))
  395. end
  396. local height = self.mail_content.preferredHeight
  397. self.mail_content_parent.sizeDelta = Vector2(self.mail_content_parent.sizeDelta.x, height + 10)
  398. self.mail_content_tra.sizeDelta = Vector2(self.mail_content_parent.sizeDelta.x, height + 10)
  399. end
  400. if vo.is_receive == 1 then --附件已领取
  401. self.mail_takeBtn_image.gray = true
  402. SetTMPSharedMaterial(self.takeBtn_txt, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
  403. -- self.received_obj:SetActive(true)
  404. else
  405. self.mail_takeBtn_image.gray = false
  406. SetTMPSharedMaterial(self.takeBtn_txt, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn)
  407. -- self.received_obj:SetActive(false)
  408. end
  409. for i, v in pairs(self.award_item_list) do
  410. v:SetVisible(false)
  411. end
  412. if vo.attachment and #vo.attachment > 0 then
  413. local new_attachment = {}
  414. local other_attachment = {}
  415. for k,v in pairs(vo.attachment) do
  416. local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(v.type_id)
  417. if basic and basic.color then
  418. v.color = tonumber(basic.color)
  419. table.insert(new_attachment, v)
  420. else
  421. table.insert(other_attachment, v)
  422. end
  423. end
  424. local sort_func = function(a,b)
  425. return a.color > b.color
  426. end
  427. table.sort(new_attachment, sort_func)
  428. for k,v in pairs(other_attachment) do
  429. table.insert(new_attachment, v)
  430. end
  431. vo.attachment = new_attachment
  432. for i, v in ipairs(vo.attachment) do
  433. local typeId, lock = GoodsModel:getInstance():GetMappingTypeId(v.object_type, v.type_id)
  434. local item = self.award_item_list[i]
  435. if item == nil then
  436. item = MailAwardItem.New(self.mail_award_parent)
  437. self.award_item_list[i] = item
  438. end
  439. item:SetData(vo.is_receive,typeId, v.num, nil, v, v.lock, nil, false)
  440. item:SetVisible(true)
  441. item:SetItemSize(80, 80)
  442. end
  443. self.mail_award_parent.sizeDelta = Vector2(100 * #vo.attachment, 100)
  444. else
  445. self.mail_takeBtn_image.gray = true
  446. SetTMPSharedMaterial(self.takeBtn_txt, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
  447. end
  448. if #self.model.select_mail_list > 0 then
  449. self:SetBtnGray()
  450. end
  451. end
  452. --设置附件是否只显示背景
  453. function SocialityMailView:OnlyShowBg(item, b)
  454. if b then
  455. item.bg_trams.gameObject:SetActive(true)
  456. item.icon.gameObject:SetActive(false)
  457. item.numTextT.gameObject:SetActive(false)
  458. item.lock:SetActive(false)
  459. lua_resM:setImageSprite(item,item.bg,"common_asset","com_icon_bg_0")
  460. else
  461. item.bg_trams.gameObject:SetActive(true)
  462. item.icon.gameObject:SetActive(true)
  463. item.numTextT.gameObject:SetActive(true)
  464. end
  465. end
  466. --接受附件
  467. function SocialityMailView:TakeAttachment()
  468. local list = {}
  469. if #self.model.select_mail_list > 0 then --有勾选邮件
  470. --对邮件进行排序(按接受时间排序,最新收到的邮件最高)
  471. local sort_fun = function(a, b)
  472. if a and b then
  473. return a.time > b.time
  474. end
  475. end
  476. table.sort(self.model.select_mail_list, sort_fun)
  477. for i, v in ipairs(self.model.select_mail_list) do
  478. if v.is_attach == 1 then
  479. table.insert(list, v.mail_id)
  480. end
  481. end
  482. end
  483. if self.model.now_select_mail and self.model.now_select_mail.is_attach == 1 then
  484. local have = false
  485. for i, v in ipairs(list) do
  486. if v == self.model.now_select_mail.mail_id then
  487. have = true
  488. break
  489. end
  490. end
  491. if not have then
  492. table.insert(list, self.model.now_select_mail.mail_id)
  493. end
  494. end
  495. local mail_type = self.model:GetMailType(list[1])
  496. if mail_type then
  497. self.model:Fire(MailEvent.GET_MAIL_ATTACHMENT, list,mail_type)
  498. end
  499. end
  500. --删除单个邮件
  501. function SocialityMailView:DeleteMail()
  502. local list = {}
  503. if #self.model.select_mail_list > 0 then --有勾选邮件
  504. for i, v in ipairs(self.model.select_mail_list) do
  505. table.insert(list, v.mail_id)
  506. end
  507. else --无勾选邮件
  508. if not self.model.now_select_mail or not self.model.now_select_mail.mail_id then
  509. return
  510. end
  511. table.insert(list, self.model.now_select_mail.mail_id)
  512. end
  513. local mail_type = self.model:GetMailType(list[1])
  514. if mail_type then
  515. self.model:Fire(MailEvent.DELETE_MAIL, list, mail_type)
  516. end
  517. end
  518. --一键删除
  519. function SocialityMailView:DeleteAllMail( ... )
  520. local list = {}
  521. if self.model.mail_tab_index == 2 then
  522. for i, v in ipairs(self.model.business_mail_list ) do
  523. if v.is_attach~=1 then
  524. if v.important == 1 then
  525. if v.state ~=2 then
  526. table.insert(list, v.mail_id)
  527. end
  528. else
  529. table.insert(list, v.mail_id)
  530. end
  531. end
  532. end
  533. else
  534. for i, v in ipairs(self.model.mail_list ) do
  535. if v.is_attach~=1 then
  536. if v.important == 1 then
  537. if v.state ~=2 then
  538. table.insert(list, v.mail_id)
  539. end
  540. else
  541. table.insert(list, v.mail_id)
  542. end
  543. end
  544. end
  545. end
  546. if #list>0 then
  547. local mail_type = self.model:GetMailType(list[1])
  548. if mail_type then
  549. self.model:Fire(MailEvent.DELETE_MAIL, list, mail_type)
  550. end
  551. end
  552. end
  553. --一键领取
  554. function SocialityMailView:GetAllMail( ... )
  555. local list = {}
  556. if self.model.mail_tab_index == 2 then
  557. for i, v in ipairs(self.model.business_mail_list ) do
  558. if v.is_attach ==1 then
  559. if v.important == 1 then--如果是重要邮件,一定要先读了才能一键领取
  560. if v.state == 1 then
  561. table.insert(list, v.mail_id)
  562. end
  563. else
  564. table.insert(list, v.mail_id)
  565. end
  566. end
  567. end
  568. else
  569. for i, v in ipairs(self.model.mail_list ) do
  570. if v.is_attach ==1 then
  571. if v.important == 1 then--如果是重要邮件,一定要先读了才能一键领取
  572. if v.state == 1 then
  573. table.insert(list, v.mail_id)
  574. end
  575. else
  576. table.insert(list, v.mail_id)
  577. end
  578. end
  579. end
  580. end
  581. if #list>0 then
  582. local mail_type = self.model:GetMailType(list[1])
  583. if mail_type then
  584. self.model:Fire(MailEvent.GET_MAIL_ATTACHMENT, list,mail_type)
  585. end
  586. else
  587. Message.show("没有可领取的附件哦~")
  588. end
  589. end