Просмотр исходного кода

添加复制问题功能、修改多行填空题显示成单行、修复#1

KeYuan 8 лет назад
Родитель
Сommit
c7560a814e

+ 1 - 1
README.md

@@ -96,7 +96,7 @@ DWSurvey以宽通用公共许可证LGPL3.0为开源协议,更好的支持商
 
 没事喜欢瞎折腾,业余时间也想做点有意思的事情,同时对产品也比较感兴趣,一翻调研之后就决定来做个问卷系统。
 于是便利用业余时间来做这款问卷表单平台,因为在2012的时候,国内的问卷系统都还比较初级,问卷设计流程复杂,页面也不美观。
-所以就开始边调研、边画原型、边写前后端代码,最初的想法是一定要好用美观,在这之后的一年里就不断的设计开发,前前后后修改过3个版本,现在开源的3.0版是在2013年9月份完成的
+所以就开始边调研、边画原型、边写前后端代码,最初的想法是一定要好用美观,在这之后的一年里就不断的设计开发,前前后后修改过3个版本。
 
 - - -
 

+ 14 - 1
src/main/java/com/key/dwsurvey/action/MySurveyDesignAction.java

@@ -55,7 +55,7 @@ import com.opensymphony.xwork2.ActionSupport;
 	@Result(name=MySurveyDesignAction.COLLECTSURVEY,location="my-collect.action?surveyId=${surveyId}",type=Struts2Utils.REDIRECT),
 	@Result(name=MySurveyDesignAction.RELOADDESIGN,location="/design/my-survey-design.action?surveyId=${surveyId}",type=Struts2Utils.REDIRECT)
 })
-@AllowedMethods({"previewDev","devSurvey","ajaxSave"})
+@AllowedMethods({"previewDev","devSurvey","ajaxSave","copySurvey"})
 public class MySurveyDesignAction extends ActionSupport{
 	//发布设置
 	protected final static String PREVIEWDEV="previewDev";
@@ -240,6 +240,19 @@ public class MySurveyDesignAction extends ActionSupport{
 		this.surveyId = surveyId;
 	}
 
+	public String copySurvey() throws Exception {
+		//引用问卷
+//		id="402880e541d051000141d0f708ff0004";
+		HttpServletRequest request=Struts2Utils.getRequest();
+		String fromBankId=request.getParameter("fromBankId");
+		String surveyName=request.getParameter("surveyName");
+		surveyName=URLDecoder.decode(surveyName,"utf-8");
+		String tag=request.getParameter("tag");
+		tag="2";
+		SurveyDirectory directory=surveyDirectoryManager.createBySurvey(fromBankId,surveyName,tag);
+		surveyId=directory.getId();
+		return RELOADDESIGN;
+	}
 	
 	private void buildSurveyHtml() throws Exception{
 		HttpServletRequest request=Struts2Utils.getRequest();

+ 3 - 0
src/main/java/com/key/dwsurvey/service/SurveyDirectoryManager.java

@@ -76,4 +76,7 @@ public interface SurveyDirectoryManager extends BaseService<SurveyDirectory, Str
 	public Page<SurveyDirectory> findModel(Page<SurveyDirectory> page,
 			SurveyDirectory entity);
 
+	public SurveyDirectory createBySurvey(String fromBankId, String surveyName,
+										  String tag);
+
 }

+ 27 - 0
src/main/java/com/key/dwsurvey/service/impl/SurveyDirectoryManagerImpl.java

@@ -539,4 +539,31 @@ public class SurveyDirectoryManagerImpl extends BaseServiceImpl<SurveyDirectory,
 	    return surveys;
 	}
 
+	@Override
+	public SurveyDirectory createBySurvey(String fromBankId, String surveyName,
+										  String tag) {//new
+		SurveyDirectory surveyDirectory = buildCopyObj(fromBankId, surveyName,
+				tag);
+
+		saveUserSurvey(surveyDirectory);
+		String belongId=surveyDirectory.getId();
+		List<Question> questions=questionManager.find(fromBankId, tag);
+		questionManager.saveBySurvey(belongId, 2 , questions);
+		return surveyDirectory;
+	}
+
+	private SurveyDirectory buildCopyObj(String fromBankId, String surveyName,String tag) {
+		SurveyDirectory surveyDirectory=new SurveyDirectory();
+		surveyDirectory.setSurveyName(surveyName);
+		surveyDirectory.setDirType(2);
+		surveyDirectory.setSurveyDetail(new SurveyDetail());
+		SurveyDirectory directory=getSurvey(fromBankId);
+		directory.setExcerptNum(directory.getExcerptNum()+1);
+		super.save(directory);
+		surveyDirectory.setSurveyQuNum(directory.getSurveyQuNum());
+		//surveyDirectory.setSurveyName(directory.getSurveyName());
+		surveyDirectory.getSurveyDetail().setSurveyNote(surveyDirectory.getSurveyDetail().getSurveyNote());
+		return surveyDirectory;
+	}
+
 }

+ 2 - 2
src/main/webapp/WEB-INF/page/content/diaowen-design/answer-survey-mobile.jsp

@@ -163,7 +163,7 @@ $(document).ready(function(){
 							</div>
 							<div class="surveyQuItem">
 								<div class="surveyQuItemContent">
-								<fieldset data-role="controlgroup" data-type="${en.hv eq 1 ? 'horizontal':'' }">
+								<fieldset data-role="controlgroup" >
 									<legend>
 										<span class="quTitleNum">${i.count }、</span>
 										<span class="quTitleText">${en.quTitle}</span>
@@ -205,7 +205,7 @@ $(document).ready(function(){
 							</div>
 							<div class="surveyQuItem">
 								<div class="surveyQuItemContent">
-								<fieldset data-role="controlgroup"  data-type="${en.hv eq 1 ? 'horizontal':'' }">
+								<fieldset data-role="controlgroup" >
 										<legend>
 											<span class="quTitleNum">${i.count }、</span>
 											<span class="quTitleText">${en.quTitle}</span>

+ 44 - 35
src/main/webapp/WEB-INF/page/content/diaowen-design/answer-survey.jsp

@@ -1246,46 +1246,55 @@ label.error{
 					</c:when>
 					
 					<c:when test="${en.quType eq 'FILLBLANK' }">
-					<li class="li_surveyQuItemBody surveyQu_${pageNo }"  style="${pageNo gt 1 ?'display: none':''}">
-						<div class="surveyQuItemBody">
-							<div class="initLine"></div>
-							<div class="quInputCase" style="display: none;">
-								<input type="hidden" class="quType" value="FILLBLANK">
-								<input type="hidden" class="quId" value="${en.id }">
-								<input type="hidden" class="orderById" value="${en.orderById }"/>
-								<input type="hidden" class="isRequired" value="${en.isRequired }">
-								<input type="hidden" class="answerTag" value="0" >
-								<div class="quLogicInputCase">
-									<c:forEach items="${en.questionLogics }" var="quLogicEn" varStatus="logicSts">
-									<div class="quLogicItem quLogicItem_${logicSts.count }">
-										<input type="hidden" class="cgQuItemId" value="${quLogicEn.cgQuItemId }"/>
-										<input type="hidden" class="skQuId" value="${quLogicEn.skQuId }"/>
-										<input type="hidden" class="logicId" value="${quLogicEn.id }"/>
-										<input type="hidden" class="logicType" value="${quLogicEn.logicType }"/>
+						<li class="li_surveyQuItemBody surveyQu_${pageNo }"  style="${pageNo gt 1 ?'display: none':''}">
+							<div class="surveyQuItemBody">
+								<div class="initLine"></div>
+								<div class="quInputCase" style="display: none;">
+									<input type="hidden" class="quType" value="FILLBLANK">
+									<input type="hidden" class="quId" value="${en.id }">
+									<input type="hidden" class="orderById" value="${en.orderById }"/>
+									<input type="hidden" class="isRequired" value="${en.isRequired }">
+									<input type="hidden" class="checkType" value="${en.checkType }">
+									<input type="hidden" class="answerTag" value="0" >
+									<div class="quLogicInputCase">
+										<c:forEach items="${en.questionLogics }" var="quLogicEn" varStatus="logicSts">
+											<div class="quLogicItem quLogicItem_${logicSts.count }">
+												<input type="hidden" class="cgQuItemId" value="${quLogicEn.cgQuItemId }"/>
+												<input type="hidden" class="skQuId" value="${quLogicEn.skQuId }"/>
+												<input type="hidden" class="logicId" value="${quLogicEn.id }"/>
+												<input type="hidden" class="logicType" value="${quLogicEn.logicType }"/>
+											</div>
+										</c:forEach>
 									</div>
-									</c:forEach>
 								</div>
-							</div>
-							<div class="surveyQuItem">
-								<div class="surveyQuItemContent">
-									<div class="quCoTitle">
-										<div class="quCoNum">${i.count }、</div>
-										<div class="editAble quCoTitleEdit" >${en.quTitle}</div>
-									</div>
-									<div class="quCoItem"><ul>
-										<li class="quCoItemUlLi">
-											<div class="quFillblankItem">
-												<input type="text" name="qu_${en.quType }_${en.id }" style="width:200px;padding:5px;" class="inputSytle_1 fillblankInput">
-												<div class="dwComEditMenuBtn" ></div>
-											</div>
-										</li>
-									</ul>
+								<div class="surveyQuItem">
+									<div class="surveyQuItemContent">
+										<div class="quCoTitle">
+											<div class="quCoNum">${i.count }、</div>
+											<div class="editAble quCoTitleEdit" >${en.quTitle}</div>
+										</div>
+										<div class="quCoItem"><ul>
+											<li class="quCoItemUlLi">
+												<div class="quFillblankItem">
+														<%-- <input type="text" name="qu_${en.quType }_${en.id }" style="width:200px;padding:5px;" class="inputSytle_1 fillblankInput"> --%>
+													<c:choose>
+														<c:when test="${en.answerInputRow > 1 }">
+															<textarea name="qu_${en.quType }_${en.id }" rows="${en.answerInputRow }" style="width:${empty(en.answerInputWidth)?'300':en.answerInputWidth}px;"class="inputSytle_2 fillblankInput" ></textarea>
+														</c:when>
+														<c:otherwise>
+															<input type="text" name="qu_${en.quType }_${en.id }" style="width:${empty(en.answerInputWidth)?'300':en.answerInputWidth}px;" class="inputSytle_1 fillblankInput" >
+														</c:otherwise>
+													</c:choose>
+													<div class="dwComEditMenuBtn" ></div>
+												</div>
+											</li>
+										</ul>
+										</div>
 									</div>
+
 								</div>
-								
 							</div>
-					</div>
-					</li>
+						</li>
 					</c:when>
 					
 					<c:when test="${en.quType eq 'SCORE' }">

+ 55 - 6
src/main/webapp/WEB-INF/page/content/diaowen-design/list.jsp

@@ -115,7 +115,7 @@ button {
 										<td align="center">
 											<input type="hidden" name='surveyId' value="${en.id }">
 										</td>
-										<td align="left"><a href="${ctx }/wenjuan/${en.sid }.html" class="titleTag">${en.surveyName }</a></td>
+										<td align="left"><a target="_blank" href="${ctx }/wenjuan/${en.sid }.html" class="titleTag">${en.surveyName }</a></td>
 										<td align="left" width="100" >${en.userName }</td>
 										<td align="left">
 											<fmt:formatDate value="${en.createDate }" pattern="yyyy年MM月dd日 HH:mm"/>
@@ -129,6 +129,7 @@ button {
 											  <a class="btn btn-default" href="${ctx }/design/my-survey-design.action?surveyId=${en.id}" title="设计"data-toggle="tooltip" data-placement="top" ><i class="fa fa-pencil-square-o"></i></a>
 											  <a class="btn btn-default" href="${ctx }/design/my-collect.action?surveyId=${en.id}" title="收集答卷" data-toggle="tooltip" data-placement="top" ><i class="fa fa-comments-o"></i></a>
 											  <a class="btn btn-default" href="${ctx }/da/survey-report!defaultReport.action?surveyId=${en.id}" title="分析报告" data-toggle="tooltip" data-placement="top" ><i class="fa fa-line-chart"></i></a>
+											  <a class="btn btn-default copySurvey" href="#${en.id}" title="复制一份" data-toggle="tooltip" data-placement="top" ><i class="fa fa-files-o"></i></a>
 											  <a class="btn btn-default deleteSurvey" href="${ctx}/design/my-survey!delete.action?id=${en.id}" title="删除问卷" data-toggle="tooltip" data-placement="top" ><i class="fa fa-trash-o fa-fw"></i></a>
 											</div>&nbsp;
 											<div class="btn-group" style="display: none;">
@@ -214,6 +215,59 @@ $(".deleteSurvey").click(function(){
 	return false;
 });
 
+$(".copySurvey").click(function(){
+
+	var surveyId=$(this).parents("tr").find("input[name='surveyId']").val();
+	var titleValue=$(this).parents("tr").find(".titleTag").text();
+	var model_groupId1=$(this).parents("tr").find("input[name='groupId1']").val();
+	var model_groupId2=$(this).parents("tr").find("input[name='groupId2']").val();
+
+	$("body").append("<div id=\"myDialogRoot\"><div class='dialogMessage' style='padding-top:40px;margin-left:20px;padding-bottom:0px;'>"+
+			"<div>复制标题:<input id='surTitleTemp' type='text' style='padding:3px;width:320px;color:rgb(14, 136, 158);' value=''></div></div></div>");
+
+	var myDialog=$( "#myDialogRoot" ).dialog({
+		width:500,
+		height:220,
+		autoOpen: true,
+		modal:true,
+		position:["center","center"],
+		title:"复制问卷、表单",
+		resizable:false,
+		draggable:false,
+		closeOnEscape:false,
+		show: {effect:"blind",direction:"up",duration: 500},
+		hide: {effect:"blind",direction:"left",duration: 200},
+		buttons: {
+			"OK":{
+				text: "确认复制",
+				addClass:'dialogMessageButton dialogBtn1',
+				click: function() {
+					//执行发布
+					var surveyName=$("#surTitleTemp").val();
+					surveyName=optionValue=escape(encodeURIComponent(surveyName));
+
+					var params="surveyName="+surveyName;
+					params+="&fromBankId="+surveyId;
+					window.location.href="${ctx}/design/my-survey-design!copySurvey.action?"+params;
+				}
+			},
+			"CENCEL":{
+				text: "取消",
+				addClass:"dialogBtn1 dialogBtn1Cencel",
+				click: function() {
+					$( this ).dialog( "close" );
+				}
+			}
+		},
+		open:function(event,ui){
+			$(".ui-dialog-titlebar-close").hide();
+			$("#surTitleTemp").val(titleValue+"-副本");
+		},
+		close:function(event,ui){
+			$("#myDialogRoot").remove();
+		}
+	});
+});
 
 $("#surveyAdd-a").click(function(){
 	
@@ -246,12 +300,7 @@ $("#surveyAdd-a").click(function(){
 	                var surveyName=$("#surTitleTemp").val();
 	                surveyName=optionValue=escape(encodeURIComponent(surveyName));
 	                
-	                var groupId1=$("#myDialogRoot select[name='model_groupId1']").val();
-	                var groupId2=$("#myDialogRoot select[name='model_groupId2']").val();
 	                var params="surveyName="+surveyName;
-	                params+="&groupId1="+groupId1;
-	                params+="&groupId2="+groupId2;
-	                
 	            	window.location.href="${ctx}/design/my-survey-create!save.action?"+params;
 	            }
 			},

+ 18 - 11
src/main/webapp/WEB-INF/page/content/diaowen-design/survey_preview_dev.jsp

@@ -1201,7 +1201,7 @@ $(document).ready(function(){
 							</div>
 					</div>
 					</c:when>
-					
+
 					<c:when test="${en.quType eq 'FILLBLANK' }">
 						<div class="surveyQuItemBody">
 							<div class="initLine"></div>
@@ -1218,13 +1218,13 @@ $(document).ready(function(){
 								<div class="quLogicInputCase">
 									<input type="hidden" name="quLogicItemNum" value="${fn:length(en.questionLogics) }">
 									<c:forEach items="${en.questionLogics }" var="quLogicEn" varStatus="logicSts">
-									<div class="quLogicItem quLogicItem_${logicSts.count }">
-										<input type="hidden" name="quLogicId" value="${quLogicEn.id }"/>
-										<input type="hidden" name="cgQuItemId" value="${quLogicEn.cgQuItemId }"/>
-										<input type="hidden" name="skQuId" value="${quLogicEn.skQuId }"/>
-										<input type="hidden" name="visibility" value="1">
-										<input type="hidden" name="logicSaveTag" value="1">
-									</div>
+										<div class="quLogicItem quLogicItem_${logicSts.count }">
+											<input type="hidden" name="quLogicId" value="${quLogicEn.id }"/>
+											<input type="hidden" name="cgQuItemId" value="${quLogicEn.cgQuItemId }"/>
+											<input type="hidden" name="skQuId" value="${quLogicEn.skQuId }"/>
+											<input type="hidden" name="visibility" value="1">
+											<input type="hidden" name="logicSaveTag" value="1">
+										</div>
 									</c:forEach>
 								</div>
 							</div>
@@ -1238,16 +1238,23 @@ $(document).ready(function(){
 									<div class="quCoItem"><ul>
 										<li class="quCoItemUlLi">
 											<div class="quFillblankItem">
-												<input type="text" style="width:200px;padding:5px;">
+												<c:choose>
+													<c:when test="${en.answerInputRow > 1 }">
+														<textarea name="qu_${en.quType }_${en.id }" rows="${en.answerInputRow }" style="width:${empty(en.answerInputWidth)?'300':en.answerInputWidth}px;"class="inputSytle_2 fillblankInput" ></textarea>
+													</c:when>
+													<c:otherwise>
+														<input type="text" name="qu_${en.quType }_${en.id }" style="width:${empty(en.answerInputWidth)?'300':en.answerInputWidth}px;" class="inputSytle_1 fillblankInput" >
+													</c:otherwise>
+												</c:choose>
 												<div class="dwComEditMenuBtn" ></div>
 											</div>
 										</li>
 									</ul>
 									</div>
 								</div>
-								
+
 							</div>
-					</div>
+						</div>
 					</c:when>
 					
 					<c:when test="${en.quType eq 'SCORE' }">