diff --git a/src/main/java/com/budwk/app/zhgh/activity/qsv/h5controller/H5QsvSurveyController.java b/src/main/java/com/budwk/app/zhgh/activity/qsv/h5controller/H5QsvSurveyController.java index d117650..9f6f4d5 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/qsv/h5controller/H5QsvSurveyController.java +++ b/src/main/java/com/budwk/app/zhgh/activity/qsv/h5controller/H5QsvSurveyController.java @@ -7,12 +7,14 @@ import cn.hutool.json.JSONObject; import com.budwk.app.base.result.Result; import com.budwk.app.web.commons.auth.utils.SecurityUtil; import com.budwk.app.zhgh.activity.qsv.models.QsvActivity; +import com.budwk.app.zhgh.activity.qsv.models.QsvOption; import com.budwk.app.zhgh.activity.qsv.models.QsvSubject; import com.budwk.app.zhgh.activity.qsv.models.QsvUserAnswerRecord; import com.budwk.app.zhgh.activity.qsv.param.QsvAnswerParam; import com.budwk.app.zhgh.activity.qsv.service.QsvUserAnswerRecordService; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; +import org.nutz.dao.util.cri.Static; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.lang.util.NutMap; @@ -24,6 +26,7 @@ import javax.validation.Valid; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; @IocBean @At("/platform/h5/qsv/survey") @@ -50,7 +53,7 @@ public class H5QsvSurveyController { QsvUserAnswerRecord answerRecord = dao.fetch(QsvUserAnswerRecord.class, Cnd.where(QsvUserAnswerRecord::getActivityId, "=", activityId).and(QsvUserAnswerRecord::getUserId, "=", SecurityUtil.getUserId()) .and(QsvUserAnswerRecord::getUserId, "=", SecurityUtil.getUserId())); if (answerRecord == null) { - List subjects = dao.query(QsvSubject.class, Cnd.where(QsvSubject::getActivityId, "=", activityId)); + List subjects = dao.query(QsvSubject.class, Cnd.where(QsvSubject::getActivityId, "=", activityId).asc(QsvSubject::getSortNum)); qsvUserAnswerRecordService.insertRecord(activityId, subjects.stream().map(QsvSubject::getId).toList()); } @@ -60,8 +63,12 @@ public class H5QsvSurveyController { answerRecordId = answerRecord2.getId(); - List subjects = dao.query(QsvSubject.class, Cnd.where(QsvSubject::getId, "in", answerRecord2.getSubjectIds())); - dao.fetchLinks(subjects, "options"); + Cnd subjectCnd = Cnd.where(QsvSubject::getId, "in", answerRecord2.getSubjectIds()); + String dynamic = answerRecord2.getSubjectIds().stream().map(id -> "'" + id + "'").collect(Collectors.joining(",")); + subjectCnd.and(new Static("1=1 ORDER BY FIELD (id," + dynamic + ")")); + List subjects = dao.query(QsvSubject.class, subjectCnd); + + dao.fetchLinks(subjects, "options",Cnd.NEW().asc(QsvOption::getSortNum)); for (QsvSubject subject : subjects) { if (subject.getUserSelectOptionIds() == null) { @@ -91,6 +98,7 @@ public class H5QsvSurveyController { if (ObjectUtil.isNotEmpty(entries)) { entries.set("optionIds", subject.getUserSelectOptionIds()); entries.set("text", subject.getUserFillContent()); + entries.set("optionInputTexts",subject.getUserInputOptionTexts()); } extJson.set(subject.getId(), entries); } diff --git a/src/main/java/com/budwk/app/zhgh/activity/qsv/models/QsvOption.java b/src/main/java/com/budwk/app/zhgh/activity/qsv/models/QsvOption.java index 09ab637..db0b36c 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/qsv/models/QsvOption.java +++ b/src/main/java/com/budwk/app/zhgh/activity/qsv/models/QsvOption.java @@ -39,6 +39,22 @@ public class QsvOption extends BaseModel { @ColDefine(type = ColType.VARCHAR, width = 255) private String imgUrl; + @Column + @Comment("链接地址") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String link; + + @Column + @Comment("描述") + @ColDefine(type = ColType.TEXT) + private String description; + + @Column + @Comment("是否允许填写内容") + @ColDefine(type = ColType.BOOLEAN) + @Default("0") + private Boolean enableInput; + @Column @Comment("排序") @ColDefine(type = ColType.INT) diff --git a/src/main/java/com/budwk/app/zhgh/activity/qsv/models/QsvSubject.java b/src/main/java/com/budwk/app/zhgh/activity/qsv/models/QsvSubject.java index 1bdc8ec..e3db5a0 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/qsv/models/QsvSubject.java +++ b/src/main/java/com/budwk/app/zhgh/activity/qsv/models/QsvSubject.java @@ -57,6 +57,17 @@ public class QsvSubject extends BaseModel { @ColDefine(type = ColType.INT, width = 1) private Integer sortNum; + @Column + @Comment("最小选择数") + @ColDefine(type = ColType.INT, width = 1) + private Integer minSelectNum; + + @Column + @Comment("最大选择数") + @ColDefine(type = ColType.INT, width = 1) + private Integer maxSelectNum; + + /** * 选项 */ diff --git a/src/main/java/com/budwk/app/zhgh/activity/qsv/param/QsvAnswerParam.java b/src/main/java/com/budwk/app/zhgh/activity/qsv/param/QsvAnswerParam.java index ea00d33..68fdff7 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/qsv/param/QsvAnswerParam.java +++ b/src/main/java/com/budwk/app/zhgh/activity/qsv/param/QsvAnswerParam.java @@ -3,6 +3,7 @@ package com.budwk.app.zhgh.activity.qsv.param; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import org.nutz.lang.util.NutMap; import java.util.List; @@ -26,7 +27,16 @@ public class QsvAnswerParam { public static class Subject{ private String id; private List userSelectOptionIds; + private List userInputOptionTexts; private String userFillContent; } + + @Data + public static class InputOption{ + private String optionId; + private String inputText; + } + + } diff --git a/src/main/java/com/budwk/app/zhgh/activity/qsv/service/impl/QsvSurveyServiceImpl.java b/src/main/java/com/budwk/app/zhgh/activity/qsv/service/impl/QsvSurveyServiceImpl.java index 6f27359..4e98a56 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/qsv/service/impl/QsvSurveyServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/activity/qsv/service/impl/QsvSurveyServiceImpl.java @@ -14,6 +14,7 @@ import com.budwk.app.zhgh.activity.qsv.models.QsvActivity; import com.budwk.app.zhgh.activity.qsv.models.QsvOption; import com.budwk.app.zhgh.activity.qsv.models.QsvSubject; import com.budwk.app.zhgh.activity.qsv.models.QsvUserAnswerRecord; +import com.budwk.app.zhgh.activity.qsv.param.QsvAnswerParam; import com.budwk.app.zhgh.activity.qsv.service.QsvSurveyService; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.Workbook; @@ -29,6 +30,7 @@ import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; @Slf4j @@ -249,9 +251,24 @@ public class QsvSurveyServiceImpl extends BaseServiceImpl i map.addv(k, jsonVal.getStr("text")); } else if (type.equals("radio") || type.equals("checkbox")) { JSONArray optionIds = jsonVal.getJSONArray("optionIds"); - String selectOptionTexts = options.stream().filter(option -> optionIds.contains(option.getId())) - .map(QsvOption::getText).collect(Collectors.joining(";")); - map.addv(k, selectOptionTexts); + JSONArray inputTexts = jsonVal.getJSONArray("optionInputTexts"); + List optionInputTexts = jsonVal.getBeanList("optionInputTexts", QsvAnswerParam.InputOption.class); + +// String selectOptionTexts = options.stream().filter(option -> optionIds.contains(option.getId())) +// .map(QsvOption::getText).collect(Collectors.joining(";")); + + String fullText = options.stream().filter(option -> optionIds.contains(option.getId())).map(option -> { + String text = option.getText(); + if (option.getEnableInput() && ObjectUtil.isNotEmpty(inputTexts)) { +// inputTexts.stream().filter(inputText -> inputText.getOptionId().equals(option.getId())) + Optional optionOptional = optionInputTexts.stream().filter(inputText -> inputText.getOptionId().equals(option.getId())).findFirst(); + if (optionOptional.isPresent()) { + text += "(" + optionOptional.get().getInputText() + ")"; + } + } + return text; + }).collect(Collectors.joining(";")); + map.addv(k, fullText); } }); return map; diff --git a/src/main/resources/views/platform/zhgh/activity/qsv/activity/setting.js b/src/main/resources/views/platform/zhgh/activity/qsv/activity/setting.js new file mode 100644 index 0000000..96fff33 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/activity/qsv/activity/setting.js @@ -0,0 +1,40 @@ +const setting = { + template: /*language=HTML*/ ` + + + + + + + + + + + + + + + `, + data() { + return { + title: "设置", + visible: false, + formData: {}, + ext: null + } + }, + methods: { + onOpen(option, ext) { + this.formData = { ...option } + this.ext = ext + this.visible = true + }, + onConfirm() { + this.visible = false + this.$emit("confirm", { option: this.formData, ext: this.ext }) + } + } +} diff --git a/src/main/resources/views/platform/zhgh/activity/qsv/activity/subjectForm.js b/src/main/resources/views/platform/zhgh/activity/qsv/activity/subjectForm.js index 36d289c..e34741d 100644 --- a/src/main/resources/views/platform/zhgh/activity/qsv/activity/subjectForm.js +++ b/src/main/resources/views/platform/zhgh/activity/qsv/activity/subjectForm.js @@ -1,4 +1,5 @@ + const subjectForm = { template: /*language=HTML*/ ` @@ -42,6 +43,27 @@ const subjectForm = { + +
+ 最小选择数: + + +
+ + +
+ 最大选择数: + + +
+ @@ -115,6 +137,14 @@ const subjectForm = { v-model="option.isCorrect" active-text="正确答案"> + + + + + `, components: { 'option-img': optionImg, + 'setting': setting }, data() { return { @@ -277,7 +309,7 @@ const subjectForm = { .catch(() => { }) }, - + //添加选项 addOption(subject) { subject.options.push({ @@ -288,7 +320,7 @@ const subjectForm = { isCorrect: false }) }, - + //删除选项 removeOption(subject, optionIndex) { subject.options.splice(optionIndex, 1) @@ -301,18 +333,31 @@ const subjectForm = { optionIndex }) }, - + //选项图片上传成功回调 onOptionImgConfirm({img, ext}) { this.$set(this.subjects[ext.subjectIndex].options[ext.optionIndex], "imgUrl", img) }, - + //删除选项图片 removeOptionImg(subjectIndex, optionIndex){ this.$set(this.subjects[subjectIndex].options[optionIndex], "imgUrl", null) console.log(this.subjects[subjectIndex]) }, - + + //打开选项设置 + openSetting(subjectIndex, optionIndex, option){ + this.$refs.settingRef.onOpen(option, { + subjectIndex, + optionIndex + }) + }, + + //选项设置确认 + onSettingConfirm({option, ext}){ + this.subjects[ext.subjectIndex].options[ext.optionIndex] = option + }, + //保存 saveQuestionnaire() { this.$axios diff --git a/src/main/resources/views/platform/zhgh/activity/qsv/survey/answer.js b/src/main/resources/views/platform/zhgh/activity/qsv/survey/answer.js index e85ec3d..a42f49c 100644 --- a/src/main/resources/views/platform/zhgh/activity/qsv/survey/answer.js +++ b/src/main/resources/views/platform/zhgh/activity/qsv/survey/answer.js @@ -1,7 +1,7 @@ const answer = { /*language=HTML*/ template: ` - + 导出xlsx diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/comprehensive/queryForm.js b/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/comprehensive/queryForm.js index e452a5b..100eb0a 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/comprehensive/queryForm.js +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/comprehensive/queryForm.js @@ -62,7 +62,8 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = { :key="item.code" :type="item.name" @click="tagClick('sexTypes',item.name)" - style="margin-right: 10px;cursor: pointer" + size="small" + style="cursor: pointer;margin: 0;" v-for="item in sexTypeOptions"> {{ item.name }} @@ -73,7 +74,8 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = { 人员类型: