/** * * DWSurvey 3.0 中关于问卷设计Javascript * * @desc: design survey * @author: keyuan(@keyuan, keyuan258@gmail.com) * @github: https://github.com/wkeyuan/DWSurvey * * Copyright 2012, 2017 调问问卷(DWSurvey,http://dwsurvey.net) * */ var browseWidth=$(window).width(); var browseHeight=$(window).height(); var ctx=""; var questionBelongId=""; var svTag=2; var quCBNum=0;//比较值1 var quCBNum2=0;//比较值2 var curEditObj=null; var curEditObjOldHtml=""; var dwDialogObj=null; var ueEditObj=null;//UE编辑器 var isDrag=false; var appQuObj=null; var myeditor=null; var ueDialog=null; var isSaveProgress=false; $(document).ready(function(){ ctx=$("#ctx").val(); var surveyId = $.getUrlParam("surveyId"); $("#id").val(surveyId); questionBelongId=$("#id").val(); browseWidth=$(window).width(); resizeWrapSize(); $(window).resize(function(){ browseWidth=$(window).width(); resizeWrapSize(); if(curEditObj!=null){ var editOffset=$(curEditObj).offset(); $("#dwCommonEditRoot").show(); $("#dwCommonEditRoot").offset({top:editOffset.top,left:editOffset.left}); } if(dwDialogObj!=null){ setShowDialogOffset(dwDialogObj); } }); ueDialog=$( "#dialog" ).dialog({ width:680, /*height:450,*/ autoOpen: false, modal:true, position:["center","top"], title:"高级编辑器", show: {effect:"blind",direction:"up",duration: 500}, hide: {effect:"blind",direction:"left",duration: 200, open:function(event,ui){ } } }); myeditor = UE.getEditor("dialogUeditor",{ //toolbars:[[]], initialContent: "",//初始化内容 elementPathEnabled:false, wordCount:false, autosave:false, initialFrameWidth : 680, initialFrameHeight : 300 }); $(window).scroll( function() { var scrollTop=$(window).scrollTop(); var quDesignDialog=$("#tools_wrap"); var headerHeight=0; var quDesignHeight=125; if(scrollTop>=headerHeight){ quDesignDialog.css({ top: "0px"}); }else{ quDesignDialog.css({ top: (headerHeight-scrollTop)+"px"}); } var dwBodyLeft=$("#dw_body_left"); var dwBodyRight=$("#dw_body_right"); if(scrollTop>=headerHeight){ dwBodyLeft.css({top:"136px"}); dwBodyRight.css({top:"136px"}); }else{ dwBodyLeft.css({ top: (headerHeight+quDesignHeight+10-scrollTop)+"px"}); dwBodyRight.css({ top: (headerHeight+quDesignHeight+10-scrollTop)+"px"}); } // if(scrollTop>=headerHeight && scrollTop<=100){ // $("#dw_body").css({"margin-top":(135+((100-headerHeight)-(100-scrollTop)))+"px"}); // }else{ // $("#dw_body").css({"margin-top":"100px"}); // } if(curEditObj!=null){ var editOffset=$(curEditObj).offset(); $("#dwCommonEditRoot").show(); $("#dwCommonEditRoot").offset({top:editOffset.top,left:editOffset.left}); } if(dwDialogObj!=null){ setShowDialogOffset(dwDialogObj); } } ); //定时保存逻辑 function intervalSaveSurvey(){ var saveTag=$("#dwSurveyQuContentAppUl input[name='saveTag'][value='0']"); var nmSaveTag=$("#dw_body_content input[name='svyNmSaveTag'][value='0']"); var noteSaveTag=$("#dw_body_content input[name='svyNoteSaveTag'][value='0']"); if(!isSaveProgress && ( saveTag[0] || nmSaveTag[0] || noteSaveTag[0]) && !isDrag && curEditObj==null && dwDialogObj==null){ notify("自动保存中...",5000); saveSurvey(function(){ isSaveProgress=false; notify("自动保存成功",1000); }); } } var intervalSave=setInterval(intervalSaveSurvey, 5000); var isSort=false; //拖入题目到问卷中 $( ".dragQuUl li" ).draggable({ connectToSortable: "#dwSurveyQuContentAppUl", zIndex:27000, cursor: "move",cursorAt:{left: 40, top: 25}, scroll: true , scrollSensitivity: 30, scrollSpeed: 30, appendTo: "#dw_body_content", helper: function(event){ return $(this).find(".dwQuTypeModel").html(); }, start: function(event, ui) { isDrag=true; $("#tools_wrap").css({"zIndex":30}); /* var scrollTop=$(window).scrollTop(); if(scrollTop>=70){ $("#tools_wrap").hide("slide",{direction:"up"},300,function(){ $("#tools_wrap").css({"zIndex":30}); }).show("slide",{direction:"up"},500); }else{ $("#tools_wrap").css({"zIndex":30}); } */ resetQuItemHover(null); //$("#tools_wrap").hide(); //console.debug($(this).attr("class")+":"+$(this).css("zIndex")); dwCommonDialogHide(); curEditCallback(); }, drag: function(event, ui) { //console.debug( $( "#designQutypes li" ).draggable('option', 'zIndex')); //console.debug($(ui.helper).css("zIndex")+$(ui.helper).css("position")); isDrag=true; }, stop: function(event, ui) { //$("#tools_wrap").fadeTo("slow", 0.6).fadeTo("slow", 1); //$("#tools_wrap").css({"zIndex":200}); if(!isSort){ $("#tools_wrap").animate({zIndex: 200}, 200 ,function(){ //$("#tools_wrap").css({"zIndex":200}); resetQuItem(); bindQuHoverItem(); }); } /*var scrollTop=$(window).scrollTop(); if(scrollTop>=70){ $("#tools_wrap").hide("slide",{direction:"up"},100,function(){ $("#tools_wrap").css({"zIndex":200}); }).show("slide",{direction:"up"},800); }else{ $("#tools_wrap").css({"zIndex":200}); }*/ if(false){ isDrag=false; if(appQuObj!=null){ //$("#defaultAppQuObj").before($(this).find(".quTypeModel").html()); $(appQuObj).before($(this).find(".dwQuTypeModel").html()); $(appQuObj).prev().hide(); $(appQuObj).prev().removeClass("quDragBody"); $(appQuObj).prev().show("slow"); resetQuItem(); bindQuHoverItem(); } } } }); $( "#dwSurveyQuContentAppUl" ).sortable({ revert: true, delay:800, placeholder:"showLine", tolerance:"pointer", opacity :0.7, //helper : "clone", handle : ".dwQuMove", scrollSensitivity: 30, scrollSpeed: 30, start: function(event,ui){ $("#tools_wrap").css({"zIndex":30}); $(".showLine").height(ui.item.height()); dwCommonDialogHide(); curEditCallback(); isSort=true; }, sort: function(event,ui){ isSort=true; $(".ui-sortable-placeholder").css({"background":"red"}); }, receive:function(event,ui){}, out:function(event,ui){isSort=false;}, update: function( event, ui ) { if(!isDrag){$("#dwSurveyQuContentAppUl input[name='saveTag']").val(0);} }, stop: function(event,ui){ if(isDrag){ isDrag=false; isSort=false; ui.item.html(ui.item.find(".dwQuTypeModel").html()); ui.item.removeClass("ui-draggable"); ui.item.find(".quDragBody").removeClass("quDragBody"); //新加入题-选定题目标题 ui.item.find(".surveyQuItemBody").addClass("hover"); ui.item.addClass("li_surveyQuItemBody"); var quType=ui.item.find(".surveyQuItemBody input[name='quType']").val(); if(quType!="PAGETAG"){ editAble(ui.item.find(".surveyQuItemBody .quCoTitleEdit")); } //var curItemBodyOffset=ui.item.offset(); //alert(curItemBodyOffset.top); //$(document).scrollTop(curItemBodyOffset.top-370); //$(document).animate({scrollTop:curItemBodyOffset.top-370}, 800); //$("body").animate({scrollTop:curItemBodyOffset.top-370}, 800); } var curItemBodyOffset=ui.item.offset(); $("html,body").animate({scrollTop:curItemBodyOffset.top-370}, 500,function(){ $("#tools_wrap").css({"zIndex":200}); resetQuItem(); bindQuHoverItem(); }); } }); /* $("#dwSurveyTitle").keydown(function(event){ if(event.keyCode==13){ return false; } }); */ /*$(".tools_tabs_left ul li").hover(function(){ var curId=$(this).attr("id"); var tabId=curId.replace("_li",""); $(".tools_tab_div").hide(); $("#"+tabId).show(); $(".tools_tabs_left ul li").removeClass("current"); $(this).addClass("current"); },function(){});*/ var isDialogClick=false; $(document).click(function(){ curEditCallback(); if(!isDialogClick){ dwCommonDialogHide(); resetQuItemHover(null); } isDialogClick=false; }); $("#dwCommonEditRoot").unbind(); $("#dwCommonEditRoot").click(function(){ return false; }); $("#dwCommonDialog").click(function(){ isDialogClick=true; }); $( "#modelUIDialog" ).click(function(){ isDialogClick=true; }); $( "#modelUIDialog" ).dialog({ title: "选项设置", height: 260, width: 550, modal: true, autoOpen: false }); $(".tools_tabs_left ul li").click(function(){ var curId=$(this).attr("id"); var tabId=curId.replace("_li",""); $(".tools_tab_div").hide(); $("#"+tabId).show(); $(".tools_tabs_left ul li").removeClass("current"); $(this).addClass("current"); }); bindQuHoverItem(); $("#surveyAttrSetToolbar").click(function(){ showUIDialog($(this)); /*$(".tabbarDialog").offset({top:$(this).offset().top+60}); $(".tabbarDialog").show(); $(this).addClass("hover");*/ return false; }); $("#logicToolbar").click(function(){ showUIDialog($(this)); return false; }); $("input[name='setAutoContacts']").change(function(){ var check=$(this).prop("checked"); if(check){ $(".contactsFieldLi").show(); }else{ $(".contactsFieldLi").hide(); } }); $(".option_range").change(function(){ var selVal=$(this).val(); $(this).next().hide(); if(selVal==3){ $(this).next().show(); validateGen(); }else if(selVal=="DATE"){ $(this).parents("ul").find(".option_range_date_li").show(); }else{ $(this).parents("ul").find(".option_range_date_li").hide(); } }); $(".dwQuDialogAddLogic").click(function(){ addQuDialogLogicTr(true,function(){},function(){alert("此题已经设置了任意选项!");}); return false; }); $("#dwDialogSaveLogic").click(function(){ var quItemBody=$(dwDialogObj).parents(".surveyQuItemBody"); var quLogicInputCase=quItemBody.find(".quLogicInputCase"); var quType=quItemBody.find("input[name='quType']").val(); var dwQuLogicTrs=$("#dwQuLogicTable tr"); var quLogicItemHtml=$("#quLogicItemModel").html(); $.each(dwQuLogicTrs,function(){ var cgQuItemId=$(this).find(".logicQuOptionSel").val(); var skQuId=$(this).find(".logicQuSel").val(); var logicType=$(this).find(".logicType").val(); var quLogicItemClass=$(this).attr("class"); if(skQuId!="" && cgQuItemId!=""){ var quLogicItem=quLogicInputCase.find("."+quLogicItemClass); if(quLogicItem[0]){ var oldSkQuId=quLogicItem.find("input[name='skQuId']").val(); var oldCgQuItemId=quLogicItem.find("input[name='cgQuItemId']").val(); var oldLogicType=quLogicItem.find("input[name='logicType']").val(); if(oldSkQuId!=skQuId || cgQuItemId!=oldCgQuItemId || oldLogicType!=logicType){ quLogicItem.find("input[name='logicSaveTag']").val("0"); quItemBody.find("input[name='saveTag']").val("0"); quLogicItem.find("input[name='skQuId']").val(skQuId); quLogicItem.find("input[name='cgQuItemId']").val(cgQuItemId); quLogicItem.find("input[name='logicType']").val(logicType); } }else{ quLogicInputCase.append(quLogicItemHtml); quLogicItem=quLogicInputCase.find(".quLogicItem").last(); quLogicItem.addClass(quLogicItemClass); quLogicItem.find("input[name='quLogicId']").val(""); quLogicItem.find("input[name='skQuId']").val(skQuId); quLogicItem.find("input[name='cgQuItemId']").val(cgQuItemId); quLogicItem.find("input[name='visibility']").val("1"); quLogicItem.find("input[name='logicType']").val(logicType); quItemBody.find("input[name='saveTag']").val("0"); } } }); refreshQuLogicInfo(quItemBody); dwCommonDialogHide(); return false; }); $("#dwDialogSaveMoreItem").click(function(){ var quItemBody=$(dwDialogObj).parents(".surveyQuItemBody"); var quType=quItemBody.find("input[name='quType']").val(); var areaVal=$("#dwQuMoreTextarea").val(); var areaValSplits=areaVal.split("\n"); $.each(areaValSplits,function(i,item){ item=$.trim(item); if(item!=""){ if(quType=="RADIO"){ addRadioItem(quItemBody,item); }else if(quType=="CHECKBOX"){ addCheckboxItem(quItemBody,item); }else if(quType=="ORDERQU"){ addOrderquItem(quItemBody, item); }else if(quType=="MULTIFILLBLANK"){ addMultiFillblankItem(quItemBody, item); }else if(quType=="SCORE"){ addScoreItem(quItemBody,item); } } }); $("#dwQuMoreTextarea").val(""); bindQuHoverItem(); dwCommonDialogHide(); }); $("#dwDialogUeOk").click(function(){ var myeditorContent=myeditor.getContent(); curEditObj=ueEditObj; setCurEditContent(myeditorContent); curEditCallback(); ueDialog.dialog("close"); ueEditObj=null; curEditObj=null; return false; }); $("#dwDialogQuSetSave").click(function(){ if(dwDialogObj!=null){ var quItemBody=$(dwDialogObj).parents(".surveyQuItemBody"); //var quType=quItemBody.find("input[name='quType']").val(); var setIsRequired=$("#dwCommonDialog input[name='setIsRequired']:checked"); var setRandOrder=$("#dwCommonDialog input[name='setRandOrder']:checked"); var setHv=$("#dwCommonDialog select[name='setHv']").val(); var setCellCount=$("#dwCommonDialog input[name='setCellCount']").val(); var setAutoContacts=$("#dwCommonDialog input[name='setAutoContacts']:checked"); var setContactsField=$("#dwCommonDialog select[name='setContactsField']").val(); var oldHv=quItemBody.find("input[name='hv']").val(); var oldCellCount=quItemBody.find("input[name='cellCount']").val(); //alert(set_isRequired+":"+set_randOrder+":"+set_hv); quItemBody.find("input[name='isRequired']").val(setIsRequired[0]?1:0); quItemBody.find("input[name='hv']").val(setHv); quItemBody.find("input[name='randOrder']").val(setRandOrder[0]?1:0); quItemBody.find("input[name='cellCount']").val(setCellCount); quItemBody.find("input[name='saveTag']").val(0); var quType=quItemBody.find("input[name='quType']").val(); if(quType=="RADIO" || quType=="CHECKBOX" || quType=="FILLBLANK"){ quItemBody.find("input[name='contactsAttr']").val(setAutoContacts[0]?1:0); quItemBody.find("input[name='contactsField']").val(setContactsField); if(quType=="CHECKBOX"){ var minNum = $("#dwCommonDialog .minNumLi input[name='minNum']").val(); var maxNum = $("#dwCommonDialog .maxNumLi input[name='maxNum']").val(); quItemBody.find("input[name='paramInt01']").val(minNum); quItemBody.find("input[name='paramInt02']").val(maxNum); } }else if(quType==="MULTIFILLBLANK"){ var paramInt01=$("#dwCommonDialog .minMaxLi .minNum"); if(paramInt01[0]){ quItemBody.find("input[name='paramInt01']").val(paramInt01.val()); } quItemBody.find("input[name='paramInt02']").val(10); }else if(quType=="SCORE"){ quItemBody.find("input[name='paramInt01']").val(1); var paramInt02=$("#dwCommonDialog .scoreMinMax .maxScore"); if(paramInt02[0]){ quItemBody.find("input[name='paramInt02']").val(paramInt02.val()); } //根据分数设置评分选项 var paramInt01Val=1; var paramInt02Val=paramInt02.val(); var scoreNumTableTr=quItemBody.find(".scoreNumTable tr"); $.each(scoreNumTableTr,function(){ $(this).empty(); for(var i=paramInt01Val;i<=paramInt02Val;i++){ $(this).append(""+i+""); } }); }else if(quType==="UPLOADFILE"){ var fileTypeExtsField=$("#dwCommonDialog .fileTypeExts"); var maxSizeField=$("#dwCommonDialog .maxSize"); var uploadNumField=$("#dwCommonDialog .uploadNum"); quItemBody.find("input[name='paramInt01']").val(fileTypeExtsField.val()); quItemBody.find("input[name='paramInt02']").val(maxSizeField.val()); quItemBody.find("input[name='randOrder']").val(uploadNumField.val()); } var selVal=$(".option_range").val(); if(selVal==1){ //横排 transverse if(oldHv==3){ quTableOptoin2Li(quItemBody); } quItemBody.find(".quCoItem ul").addClass("transverse"); }else if(selVal==2){ if(oldHv==3){ quTableOptoin2Li(quItemBody); }else{ //竖排 quItemBody.find(".quCoItem ul").removeClass("transverse"); quItemBody.find(".quCoItem ul li").width(""); } }else if(selVal==3){ if(!$("#dwCommonDialogForm").valid()){ notify("参数不对,请检查!",800); return false; } if(oldHv==3){ if(oldCellCount!=setCellCount){ quTableOption2Table(quItemBody); } }else{ quLiOption2Table(quItemBody); } } } dwCommonDialogHide(); return false; }); $("#dwDialogSurveyAttrSave").click(function(){ $("input[name='svyAttrSaveTag']").val(0); notify("保存中...",5000); saveSurvey(function(){ isSaveProgress=false; notify("保存成功",1000); }); //关闭窗口 $("#modelUIDialog").dialog("close"); dwCommonDialogHide(); /*var url=""; var data=""; $.ajax({ url:url, data:data, type:"post", success:function(msg){ alert(msg); } });*/ return false; }); $("#dwDialogQuOptionSetSave").click(function(){ var quItemBody=$(dwDialogObj).parents(".surveyQuItemBody"); var quOptionParent=$(dwDialogObj).parent(); var quOption_isNote=$("#modelUIDialog input[name='quOption_isNote']"); var isNote=quOptionParent.find("input[name='isNote']"); var checkType=quOptionParent.find("input[name='checkType']"); var isRequiredFill=quOptionParent.find("input[name='isRequiredFill']"); if(quOption_isNote.prop("checked")&&(isNote.val()=="0" || isNote.val()=="")){ quItemBody.find("input[name='saveTag']").val(0); quOptionParent.find("input[name='quItemSaveTag']").val(0); } if(quOption_isNote.prop("checked")){ isNote.val(1); if(!quOptionParent.find(".optionInpText")[0]){ $(dwDialogObj).after(""); } quOptionParent.find(".optionInpText").show(); }else{ isNote.val(0); quOptionParent.find(".optionInpText").hide(); } checkType.val("NO"); isRequiredFill.val(0); //显示填空框 // $(dwDialogObj).after(""); // quOptionParent.find(".optionInpText").show(); $("#modelUIDialog").dialog("close"); //resetQuItemHover(null); dwCommonDialogHide(); return false; }); $("#dwDialogQuFillOptionSave").click(function(){ var quItemBody=$(dwDialogObj).parents(".surveyQuItemBody"); var quFill_checkType=$("#modelUIDialog select[name='quFill_checkType']"); var qu_inputWidth=$("#modelUIDialog input[name='qu_inputWidth']"); var qu_inputRow=$("#modelUIDialog input[name='qu_inputRow']"); var option_range_date=$("#modelUIDialog select.option_range_date"); var checkType=quItemBody.find("input[name='checkType']"); var answerInputWidth=quItemBody.find("input[name='answerInputWidth']"); var answerInputRow=quItemBody.find("input[name='answerInputRow']"); var paramInt01=quItemBody.find("input[name='paramInt01']"); if(answerInputWidth.val()!=qu_inputWidth.val() || answerInputRow.val()!=qu_inputRow.val() || (checkType[0] && checkType.val()!=quFill_checkType.val())){ quItemBody.find("input[name='saveTag']").val(0); } var checkTypeVal = quFill_checkType.val(); if(checkTypeVal == ""){ checkTypeVal="NO"; } if(checkType[0]){ checkType.val(checkTypeVal); if(checkTypeVal=="DATE"){ if(paramInt01[0]){ paramInt01.val(option_range_date.val()); }else{ quItemBody.find(".quInputCase").append(""); } quItemBody.find("input[name='saveTag']").val(0); } } answerInputWidth.val(qu_inputWidth.val()); answerInputRow.val(qu_inputRow.val()); if(qu_inputRow.val()>1){ quItemBody.find(".quFillblankAnswerTextarea").show(); quItemBody.find(".quFillblankAnswerInput").hide(); quItemBody.find(".quFillblankAnswerTextarea").attr("rows",qu_inputRow.val()); quItemBody.find(".quFillblankAnswerTextarea").width(qu_inputWidth.val()); }else{ quItemBody.find(".quFillblankAnswerTextarea").hide(); quItemBody.find(".quFillblankAnswerInput").show(); quItemBody.find(".quFillblankAnswerInput").width(qu_inputWidth.val()); } quItemBody.find(".quCoItemUlLi").removeClass("hover"); $("#modelUIDialog").dialog("close"); resetQuItemHover(null); dwCommonDialogHide(); return false; }); function quTableOptoin2Li(quItemBody){ var quCoItemTds=quItemBody.find(".quCoItem .tableQuColItem tr td"); var ulLiHtml="