// --------------------------------------------------------------------
// @author: xxx@syg.com(必填, 创建模块的人员)
// @description:
// 这里是描述这个窗体的作用的
//
Create: 2019-08-12 15:43:29
// --------------------------------------------------------------------
var PathTool = require("pathtool");
var WelfareEvent = require("welfare_event")
var WelfareConst = require("welfare_const")
var SureveyquestWindow = cc.Class({
extends: BaseView,
ctor: function () {
this.prefabPath = PathTool.getPrefabPath("welfare", "surveyquest_window");
this.viewTag = SCENE_TAG.dialogue; //该窗体所属ui层级,全屏ui需要在ui层,非全屏ui在dialogue层,这个要注意
this.win_type = WinType.Big; //是否是全屏窗体 WinType.Full, WinType.Big, WinType.Mini, WinType.Tips
this.ctrl = arguments[0]
},
// 初始化一些配置数据,可以用于声明一些变量之类的
initConfig:function(){
this.topic_length = 10 //题目数
this.index_count = -1 //做题数量
this.answer_ret_temp = null;
this.topic_layout = {} //点击区域
this.answer_list = [] //答案
},
// 预制体加载完成之后的回调,可以在这里捕获相关节点或者组件
openCallBack:function(){
this.background = this.root_wnd.getChildByName("background")
this.main_container = this.root_wnd.getChildByName("main_container")
this.btn_start = this.main_container.getChildByName("btn_start")
this.btn_start.label = this.btn_start.getChildByName("Text_9").getComponent(cc.Label)
this.btn_close = this.main_container.getChildByName("btn_close")
this.answer_content = this.main_container.getChildByName("answer_content")
this.answer_content.active = false;
this.titleTopic = this.main_container.getChildByName("titleTopic").getComponent(cc.Label)
this.topic_layout_nd = this.answer_content.getChildByName("topic_layout")
this.scroll = this.answer_content.getChildByName("answer_scroll")
this.content = this.answer_content.getChildByName("answer_scroll").getChildByName("content")
this.main_container.getChildByName("Text_10").getComponent(cc.Label).string = Utils.TI18N("小助手的冒险调查")
// --调查开始的框
this.text_prompt = this.main_container.getChildByName("text_prompt")
this.start_title = this.text_prompt.getChildByName("Text_8").getComponent(cc.Label)
this.start_title.string = "";
this.start_memo = this.text_prompt.getChildByName("Text_8_0").getComponent(cc.Label)
this.start_memo.string = "";
// --填空框
this.suggest_panel = this.main_container.getChildByName("suggest_panel")
this.text_field_eb = this.suggest_panel.getChildByName("text_Field").getComponent(cc.EditBox)
this.suggest_panel.active = false;
// --奖励框
this.reward_panel = this.main_container.getChildByName("reward_panel")
this.reward_panel.active = false;
},
// 注册事件监听的接口,不需要手动调用,如果是使用gcore.GlobalEvent监听,可以直接调用addGlobalEvent
registerEvent:function(){
this.btn_start.on('click',function(){
Utils.playButtonSound(1)
let open_data = this.ctrl.getModel().getQuestOpenData()
if(open_data && open_data.flag != 0){
this.ctrl.sender24604()
return
}
if(this.index_count > this.topic_length) return;
if(this.questNaire_list){
let last_data = this.questNaire_list[this.index_count]
//有题目
let tab = {}
tab.id = last_data.id;
tab.topic_type = last_data.topic_type;
if(last_data.specific_type != WelfareConst.QuestConst.fill_blank){
let status_return = false;
for(let i in this.topic_layout){
if(this.topic_layout[i].active && this.topic_layout[i].getChildByName("checkmark").active){
status_return = true;
break
}
}
if(!status_return && last_data.must == 1){
message(Utils.TI18N("必须选择一个答案"))
return
}
// [{id:"题目ID",topic_type:"类型",ret:"ret"},{id:"题目ID",topic_type:"类型",ret:"ret"},{id:"题目ID",topic_type:"类型",ret:"ret"}]
let str = ""
for(let i in this.topic_layout){
if(this.topic_layout[i].active && this.topic_layout[i].getChildByName("checkmark").active){
str += i
}
}
tab.ret = str;
}else{
//意见
if(last_data.must == 1 && this.text_field_eb.string == ""){
message(Utils.TI18N("当前题必填"))
return
}
tab.ret = this.text_field_eb.string
}
this.answer_list.push(tab)
}
this.index_count = this.index_count + 1
if(this.index_count == 0){
this.ctrl.sender24602()
}
if(this.questNaire_list){
if(this.index_count == this.questNaire_list.length){
this.ctrl.sender24603(this.answer_list)
}else{
this.startTopicAnswer(this.questNaire_list)
}
}
},this)
this.btn_close.on('click',function(){
Utils.playButtonSound(2)
this.ctrl.openSureveyQuestView(false)
},this)
this.addGlobalEvent(WelfareEvent.Get_SureveyQuest_Basic,function(data){
if(!data || Utils.next(data) == null) return;
let open = this.ctrl.getModel().getQuestOpenData()
if(open && open.status == 0){
return
}
this.answer_reward_list = data.rewards
let open_data = this.ctrl.getModel().getQuestOpenData()
if(open_data){
if(open_data.flag == 0){
this.start_title.string = Utils.TI18N("亲爱的冒险者大人:")
this.start_memo.string = Utils.TI18N("辛苦您参加小助手的冒险调查,小助手为大人\n\n准备了小小谢礼,放在了问卷的最后哦~")
}else{
this.getRewardList(open_data.flag)
}
}
}.bind(this))
this.addGlobalEvent(WelfareEvent.Get_SureveyQuest_Topic_Content,function(data){
if(!data || Utils.next(data) == null) return;
let open = this.ctrl.getModel().getQuestOpenData()
if(open && open.status == 0){
return
}
this.topic_length = data.questionnaire_list.length
data.questionnaire_list.sort(function(a,b){
return a.sort - b.sort
})
this.questNaire_list = data.questionnaire_list
this.startTopicAnswer(this.questNaire_list)
}.bind(this))
this.addGlobalEvent(WelfareEvent.SureveyQuest_Submit,function(){
this.answer_content.active = false;
this.suggest_panel.active = false
this.titleTopic.node.active = false;
this.getRewardList()
},this)
this.addGlobalEvent(WelfareEvent.Get_SureveyQuest_Get_Reward,function(data){
if(!data || Utils.next(data) == null) return;
let open = this.ctrl.getModel().getQuestOpenData()
if(open && open.status == 0){
return
}
this.btn_start.label.string = Utils.TI18N("已完成")
this.btn_start.label.node.getComponent(cc.LabelOutline).enabled = false;
this.btn_start.getComponent(cc.Button).interactable = false
this.btn_start.getComponent(cc.Button).enableAutoGrayEffect = true
},this)
},
// 预制体加载完成之后,添加到对应主节点之后的回调,也就是一个窗体的正式入口,可以设置一些数据了
openRootWnd:function(params){
let open_data = this.ctrl.getModel().getQuestOpenData()
if(open_data.flag == 1){
this.ctrl.setWelfareStatus(WelfareConst.WelfareIcon.quest, true)
}else{
this.ctrl.setWelfareStatus(WelfareConst.WelfareIcon.quest, false)
}
this.ctrl.sender24601()
},
//题目
startTopicAnswer(data){
this.scroll.getComponent(cc.ScrollView).scrollToTop(0)
this.text_prompt.active = false;
if(!data || Utils.next(data) == null) return;
if(!data[this.index_count]){
return
}
let answer = data[this.index_count].specific_type
if(answer == WelfareConst.QuestConst.single){
this.selectNum = WelfareConst.QuestConst.single
}else if(answer == WelfareConst.QuestConst.multiple){
this.selectNum = WelfareConst.QuestConst.multiple
}
this.titleTopic.string = data[this.index_count].title
if(answer == WelfareConst.QuestConst.fill_blank){
this.answer_content.active = false;
this.suggest_panel.active = true;
this.text_field_eb.string = ""
return
}else{
this.answer_content.active = true;
this.suggest_panel.active = false;
}
let str = data[this.index_count].option.replace(/\\r/g,"")
let strArr = []
for(let i=0;i itemHeight){
height = (y + node.label.node.height) + spacingY
}else{
height = (y + itemHeight) + spacingY
}
node.setPosition(-243,-y)
this.loadRes(path,function(res){
node.background_sp.spriteFrame = res;
}.bind(this))
}
this.content.height = height - spacingY
if(this.index_count != this.topic_length){
this.btn_start.label.string = Utils.TI18N("下一页")
}
},
setButtonState(index){
if(this.selectNum == WelfareConst.QuestConst.single){
for(let i in this.topic_layout){
if(this.topic_layout[i].active){
this.topic_layout[i].getChildByName("checkmark").active = false;
}
}
this.topic_layout[index].getChildByName("checkmark").active = true;
}else if(this.selectNum == WelfareConst.QuestConst.multiple){
this.topic_layout[index].getChildByName("checkmark").active = !this.topic_layout[index].getChildByName("checkmark").active;
let count = 0;
for(let i in this.topic_layout){
if(this.topic_layout[i].active && this.topic_layout[i].getChildByName("checkmark").active){
count++
}
}
if(count > this.selectNum){
if(count == this.selectNum + 1){
this.topic_layout[index].getChildByName("checkmark").active = false
}
message(Utils.TI18N("最多选择三个选项"))
}
}
},
getRewardList(flag){
flag = flag || 1
this.reward_panel.active = true
this.end_memo = this.reward_panel.getChildByName("Text_1").getComponent(cc.Label)
this.end_memo.string = Utils.TI18N("亲爱的冒险者大人~\n\n请收下小助手的一点心意");
if(flag == 2){
this.btn_start.label.string = Utils.TI18N("已完成")
this.btn_start.label.node.getComponent(cc.LabelOutline).enabled = false;
this.btn_start.getComponent(cc.Button).interactable = false
this.btn_start.getComponent(cc.Button).enableAutoGrayEffect = true
}else{
this.btn_start.label.string = Utils.TI18N("领取奖励")
}
if(this.answer_reward_list){
let content = this.reward_panel.getChildByName("good_cons").getChildByName("content")
let space_x = 10
this.award_item = []
for(let i=0;i