KLQuestionnairePanel.lua 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. ---@class KLQuestionnairePanel:UIKmlLuaPanelBase
  2. ---@field view KLQuestionnairePanelView
  3. local KLQuestionnairePanel = class(UIKmlLuaPanelBase)
  4. local this =KLQuestionnairePanel
  5. ---创建时调用一次
  6. function this:Init()
  7. SL.HideMainPanel()
  8. self.isClose = false
  9. self.is_man = -1
  10. self.code_num = nil
  11. self.is_jieshu = -1
  12. self.is_like = -1
  13. self.phone_num = nil
  14. self.one_1 = false
  15. self.one_2 = false
  16. self.one_3 = false
  17. self.one_4 = false
  18. self.one_5 = false
  19. self.one_6 = false
  20. end
  21. ---创建或者刷新界面数据时调用
  22. function this:Refresh()
  23. -- SL:SendLuaNetMsg(LuaMessageIdToSever.GET_DAILY_ACTIVITY_INFO)
  24. end
  25. ---注册UI事件和服务器消息
  26. function this:RegistEvents()
  27. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_BIND_PHONE,self.RES_BIND_PHONE,self)
  28. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_GENERATE_VERIFICATION_CODE,self.RES_GENERATE_VERIFICATION_CODE,self)
  29. GUI:AddOnClickEvent(self.view.btn_close,self,self.CloseOnclick)
  30. GUI:AddOnClickEvent(self.view.btnStart,self,self.Bind)
  31. GUI:Input_SetOnValueChange(self.view.pnone_number_input, self, self.TextChange)
  32. GUI:Input_SetOnValueChange(self.view.year_input, self, self.CodeChange)
  33. GUI:SetToggleOnValueChange(self.view.nanBtn, self, self.ManOnClick)
  34. GUI:SetToggleOnValueChange(self.view.nvBtn, self, self.WomanOnClick)
  35. GUI:SetToggleOnValueChange(self.view.jiechu1Btn, self, self.JieChu1OnClick)
  36. GUI:SetToggleOnValueChange(self.view.jiechu2Btn, self, self.JieChu2OnClick)
  37. GUI:SetToggleOnValueChange(self.view.xihuan1Btn, self, self.Like1OnClick)
  38. GUI:SetToggleOnValueChange(self.view.xihuan2Btn, self, self.Like2OnClick)
  39. end
  40. function this:CloseOnclick()
  41. GUI:UIPanel_Close("dev/outui/DailyRaffle/Panel/KLQuestionnaire/KLQuestionnairePanel")
  42. end
  43. function this:Close()
  44. self.isClose = true
  45. end
  46. function this:TextChange(a, b,eventData)
  47. if self.isClose then
  48. return
  49. end
  50. local messageStr = eventData[1]
  51. if string.isNullOrEmpty(messageStr) then
  52. self.phone_num = messageStr
  53. else
  54. local is_have = self:contains_non_digit(messageStr)
  55. if is_have then
  56. messageStr = self:remove_non_digits(messageStr)
  57. GUI:Text_setString(self.view.pnone_number_input,messageStr)
  58. end
  59. self.phone_num = messageStr
  60. end
  61. --SL:LogError("手机号输入:"..self.phone_num)
  62. end
  63. function this:contains_non_digit(str)
  64. return string.match(str, "%D") ~= nil
  65. end
  66. -- 去除字符串中的非数字字符
  67. function this:remove_non_digits(str)
  68. return string.gsub(str, "%D", "")
  69. end
  70. function this:CodeChange(a, b,eventData)
  71. if self.isClose then
  72. return
  73. end
  74. local messageStr = eventData[1]
  75. local is_have = self:contains_non_digit(messageStr)
  76. if is_have then
  77. messageStr = self:remove_non_digits(messageStr)
  78. GUI:Text_setString(self.view.year_input,messageStr)
  79. end
  80. self.code_num = messageStr
  81. end
  82. function this:SendCode()
  83. if not self:CheckPhoneNumber() then
  84. return
  85. end
  86. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GENERATE_VERIFICATION_CODE,tonumber(self.phone_num))
  87. end
  88. function this:CheckPhoneNumber()
  89. if string.isNullOrEmpty(self.phone_num) then
  90. SL:TipMessage( SL:GetConfig("cfg_string",465).text, 1, NoticeType.NoticeMid )
  91. return false
  92. else
  93. if #self.phone_num ~= 11 then
  94. SL:TipMessage( SL:GetConfig("cfg_string",467).text, 1, NoticeType.NoticeMid )
  95. return false
  96. end
  97. local pattern = "^1[3-9]%d%d%d%d%d%d%d%d%d$"
  98. local is_phone = string.match(self.phone_num, pattern) ~= nil
  99. if not is_phone then
  100. SL:TipMessage( SL:GetConfig("cfg_string",467).text, 1, NoticeType.NoticeMid )
  101. return false
  102. end
  103. end
  104. return true
  105. end
  106. function this:CheckCode()
  107. if string.isNullOrEmpty(self.code_num) then
  108. SL:TipMessage( SL:GetConfig("cfg_string",466).text, 1, NoticeType.NoticeMid )
  109. return false
  110. else
  111. if #self.code_num ~= 4 then
  112. SL:TipMessage( SL:GetConfig("cfg_string",466).text, 1, NoticeType.NoticeMid )
  113. return false
  114. else
  115. local num = tonumber(self.code_num)
  116. local ServerTime = Time.GetServerTime()
  117. local seconds = math.floor(ServerTime / 1000)
  118. local year = os.date("*t", seconds).year
  119. if num < 1900 or num > year then
  120. SL:TipMessage( SL:GetConfig("cfg_string",466).text, 1, NoticeType.NoticeMid )
  121. return false
  122. end
  123. end
  124. end
  125. return true
  126. end
  127. function this:Bind()
  128. if self.is_man < 0 or (not self.one_1 and not self.one_2) then
  129. SL:TipMessage( SL:GetConfig("cfg_string",474).text, 1, NoticeType.NoticeMid )
  130. return
  131. end
  132. if not self:CheckCode() then
  133. return
  134. end
  135. if self.is_jieshu < 0 or (not self.one_3 and not self.one_4) then
  136. SL:TipMessage( SL:GetConfig("cfg_string",475).text, 1, NoticeType.NoticeMid )
  137. return
  138. end
  139. if self.is_like < 0 or (not self.one_5 and not self.one_6) then
  140. SL:TipMessage( SL:GetConfig("cfg_string",476).text, 1, NoticeType.NoticeMid )
  141. return
  142. end
  143. if not self:CheckPhoneNumber() then
  144. return
  145. end
  146. local tab = {is_man = self.is_man,year=self.code_num,is_jieshu=self.is_jieshu,is_like=self.is_like,phone=self.phone_num}
  147. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_BIND_PHONE,tab)
  148. end
  149. function this:RES_BIND_PHONE(id, message)
  150. if message then
  151. --SL:TipMessage({ "<color=#1add1f>绑定成功</color>", 1, NoticeType.NoticeMid })
  152. if self.args.parent then
  153. self.args.parent:Refresh()
  154. end
  155. self:CloseOnclick()
  156. end
  157. end
  158. function this:RES_GENERATE_VERIFICATION_CODE()
  159. if message then
  160. SL:TipMessage( "<color=#1add1f>发送成功</color>", 1, NoticeType.NoticeMid )
  161. end
  162. end
  163. function this:ManOnClick(kmlCtrl, eventData, args)
  164. if args[1] then
  165. self.is_man = 1
  166. GUI:Toggle_setIsOn(self.view.nvBtn,false)
  167. self.one_1 = true
  168. else
  169. self.one_1 = false
  170. end
  171. end
  172. function this:WomanOnClick(kmlCtrl, eventData, args)
  173. if args[1] then
  174. self.is_man = 0
  175. GUI:Toggle_setIsOn(self.view.nanBtn,false)
  176. self.one_2 = true
  177. else
  178. self.one_2 = false
  179. end
  180. end
  181. function this:JieChu1OnClick(kmlCtrl, eventData, args)
  182. if args[1] then
  183. self.is_jieshu = 1
  184. GUI:Toggle_setIsOn(self.view.jiechu2Btn,false)
  185. self.one_3 = true
  186. else
  187. self.one_3 = false
  188. end
  189. end
  190. function this:JieChu2OnClick(kmlCtrl, eventData, args)
  191. if args[1] then
  192. self.is_jieshu = 0
  193. GUI:Toggle_setIsOn(self.view.jiechu1Btn,false)
  194. self.one_4 = true
  195. else
  196. self.one_4 = false
  197. end
  198. end
  199. function this:Like1OnClick(kmlCtrl, eventData, args)
  200. if args[1] then
  201. self.is_like = 1
  202. GUI:Toggle_setIsOn(self.view.xihuan2Btn,false)
  203. self.one_5 = true
  204. else
  205. self.one_5 = false
  206. end
  207. end
  208. function this:Like2OnClick(kmlCtrl, eventData, args)
  209. if args[1] then
  210. self.is_like = 0
  211. GUI:Toggle_setIsOn(self.view.xihuan1Btn,false)
  212. self.one_6 = true
  213. else
  214. self.one_6 = false
  215. end
  216. end
  217. return this