/** * * 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 = 55; // var quDesignHeight = 125; // 头部被隐藏设置为0 var headerHeight = 0; var quDesignHeight = 0; 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": "135px" }); } 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 = "