feat: show count result

This commit is contained in:
lbaf23 2021-08-06 12:20:55 +08:00
parent 23ab8c8ed4
commit a6ae24d066
3 changed files with 72 additions and 7 deletions

View File

@ -18,7 +18,7 @@ type Question struct {
QuestionTitle string `json:"questionTitle"`
QuestionType string `json:"questionType"`
QuestionOptions string `json:"questionOptions" xorm:"text"`
QuestionCount string `json:"question" xorm:"text"`
QuestionCount string `json:"questionCount" xorm:"text"`
}
type SurveyDetail struct {
Survey `json:"survey" xorm:"extends"`

View File

@ -68,6 +68,7 @@ function PreviewSection(obj) {
if (t[i].questions !== undefined && t[i].questions != null) {
for (let j = 0; j < t[i].questions.length; j++) {
t[i].questions[j].questionOptions = t[i].questions[j].questionOptions.split(",")
t[i].questions[j].questionCount = t[i].questions[j].questionCount.split(",")
}
} else {
t[i].questions = []

View File

@ -1,16 +1,19 @@
import React from "react";
import {Button, Checkbox, Divider, Input, Radio, message} from "antd";
import qs from 'qs'
import React, {useEffect, useState} from "react";
import {Button, Checkbox, Divider, Input, Radio, message, Collapse} from "antd";
import Question from "../../CreateProject/Survey/component/Question"
import "../preview.less"
import "../../CreateProject/Section/component/section-edit.less"
import SubmitApi from "../../../../api/SubmitApi";
import ReactEcharts from "echarts-for-react";
const blank = Question.blank
function FillSurvey(obj) {
const [submitLoading, setSubmitLoading] = useState(false)
const submitSurvey = e => {
setSubmitLoading(true)
obj.item.submit.submitType = 'survey'
let data = Object.assign({}, obj.item.submit)
let c = [...obj.item.choices]
@ -21,6 +24,7 @@ function FillSurvey(obj) {
data['choices'] = JSON.stringify(c)
SubmitApi.createSubmit(obj.pid, obj.item.id, data)
.then(res=>{
setSubmitLoading(false)
if (res.data.code === 200) {
message.success(res.data.msg)
obj.getTasks()
@ -31,7 +35,9 @@ function FillSurvey(obj) {
.catch(e=>{console.log(e)})
}
const updateSurvey = e => {
setSubmitLoading(true)
obj.item.submit.submitType = 'survey'
let data = Object.assign({}, obj.item.submit)
let c = [...obj.item.choices]
for (let i=0; i<c.length; i++) {
@ -40,6 +46,7 @@ function FillSurvey(obj) {
data['choices'] = JSON.stringify(c)
SubmitApi.updateSubmit(obj.pid, obj.item.id, obj.item.submit.id, data)
.then(res=>{
setSubmitLoading(false)
if (res.data.code === 200) {
message.success(res.data.msg)
obj.getTasks()
@ -60,10 +67,43 @@ function FillSurvey(obj) {
}
const changeBlankFill = (v, subIndex, optIndex) => {
obj.item.choices[subIndex].choiceOptions[optIndex] = v.target.value
obj.setTaskItem(obj.item, obj.index)
}
const changeBriefAnswer = (v, subIndex) => {
obj.item.choices[subIndex].choiceOptions[0] = v.target.value
obj.setTaskItem(obj.item, obj.index)
}
const showCount = e => {
if (e.length > 0) {
console.log('draw')
}
}
const getOption = subIndex => {
return {
title: {
x: 'center',
},
tooltip: {
trigger: 'item',
},
xAxis: {
type: 'category',
data: obj.item.questions[subIndex].questionOptions
},
yAxis: {
minInterval: 1,
},
series: [
{
type: 'bar',
data: obj.item.questions[subIndex].questionCount
},
],
}
}
return (
<div className="survey">
<h2 style={{textAlign: 'center'}}>{obj.item.survey.surveyTitle}</h2>
@ -106,7 +146,7 @@ function FillSurvey(obj) {
<div style={{marginTop: '10px'}} key={optIndex.toString()}>
{optItem === blank ?
<span style={{float: 'left', margin: '5px'}}>
<Input value={obj.item.choices[subIndex].choiceOptions[optIndex]} onChange={v=>changeBlankFill(v, subIndex, optIndex)} style={{borderBottom: '2px solid black'}} bordered={false}/>
<Input value={obj.item.choices[subIndex].choiceOptions[optIndex]} onChange={v=>changeBlankFill(v, subIndex, optIndex)} style={{borderBottom: '1.5px solid black'}} bordered={false}/>
</span>
:
<span style={{float: 'left', margin: '5px'}}>{optItem}</span>}
@ -128,9 +168,33 @@ function FillSurvey(obj) {
</div>
<div style={{textAlign: 'right', marginTop: '10px'}}>
{obj.item.submitted ?
<Button disabled={!obj.editable} type="primary" onClick={updateSurvey}>更新</Button>
<>
<Button disabled={!obj.editable} type="primary" onClick={updateSurvey} loading={submitLoading}>
更新
</Button>
<div style={{textAlign: 'left', marginTop: '20px'}}>
<Collapse onChange={showCount}>
<Collapse.Panel key={1} header="查看统计结果">
{obj.item.questions.map((subItem, subIndex)=>(
<div key={subIndex.toString()}>
{subItem.questionType==='singleChoice' || subItem.questionType==='multipleChoice'
|| subItem.questionType==='scale5' || subItem.questionType==='scale7' ?
<div style={{textAlign: "left", marginTop: '10px'}}>
<p>{subItem.questionTitle}</p>
<ReactEcharts option={getOption(subIndex)}/>
<Divider />
</div>
:
null
}
</div>
))}
</Collapse.Panel>
</Collapse>
</div>
</>
:
<Button disabled={!obj.editable} type="primary" onClick={submitSurvey}>提交</Button>
<Button disabled={!obj.editable} type="primary" onClick={submitSurvey} loading={submitLoading}>提交</Button>
}
</div>
</div>