diff --git a/public/react/src/modules/courses/poll/PollNew.js b/public/react/src/modules/courses/poll/PollNew.js index 7b936a0b6..392acf57c 100644 --- a/public/react/src/modules/courses/poll/PollNew.js +++ b/public/react/src/modules/courses/poll/PollNew.js @@ -1,2844 +1,2844 @@ -import React, {Component} from "react"; -import {Form, Input, Tooltip, Checkbox, Radio, Select, message, Modal, Button} from 'antd' -import {WordsBtn, ActionBtn} from 'educoder' -import '../css/members.css' -import "../common/formCommon.css" - -import './pollStyle.css' -import '../css/Courses.css' -import axios from 'axios' -import moment from "../new/CoursesNew"; -import Modals from "../../modals/Modals"; - - -const TextArea = Input.TextArea -const RadioGroup = Radio.Group -const CheckboxGroup = Checkbox.Group -const Option = Select.Option; -const maps = {1: "未发布", 2: "提交中", 3: "已截止"} -const confirm = Modal.confirm; - -class PollNew extends Component { - // 问卷新建和编辑 - // - // * addonAfter 字数限制 - // * q_counts 题目总数 - // * mysingles 单选题数量 - // * mydoubles 多选题数量 - // * mymainsint 主观题数量 - // * adddom 添加编辑的数据 页面点击新增题目 - // * editentry 编辑条目 新增的题目点击到条目中 - //* questionnair 问卷是否存在 默认不存在 - // * - - constructor(props) { - super(props); - this.state = { - visible: false, - poll_questions: [], - user_permission: "", - addonAfter: 60, - addonAftertwo: 100, - mysingles: 0, - mydoubles: 0, - mymainsint: 0, - adddom: [], - editentry: [], - questionnair: false, - polls_name: undefined, - polls_nametest: "", - polls_description: "", - polls_descriptiontest: "", - storagedesc:"", - storagedesctwo:"", - coursesId: "", - pollid: undefined, - polls_status: undefined, - q_countst: 0, - Newedit: true, - Insertposition: undefined, - Modalstype: false, - mysave: false, - readOnlys: "readOnly", - problemtopic: null, - problemtopicbool: false, - newoption: false, - cancellation: false, - } - // console.log("试卷新建和编辑"); - // console.log(JSON.stringify(props)); - - } - - changeTopicName = (e) => { - let num = 60 - parseInt(e.target.value.length); - this.setState({ - addonAfter: num < 0 ? 0 : num - }) - this.setState({ - polls_nametest: e.target.value - }) - } - - - changeTopicNametwo = (e) => { - // console.log("获取的值" + e.target.value); - let num = 100 - parseInt(e.target.value.length); - this.setState({ - addonAftertwo: num < 0 ? 0 : num - }) - this.setState({ - polls_descriptiontest: e.target.value - }) - } - - // 初始化数据 - componentDidMount = () => { - console.log("componentDidMount 50") - if (this.props.match.params.news !== undefined) { - if (this.props.match.params.news === "new") { - this.state.Newedit === true; - this.setState({ - Newedit: true, - mysave: true, - readOnlys: "", - cancellation: true, - }) - } else { - this.Initializatio_data(); - this.state.Newedit === false; - this.setState({ - Newedit: false, - mysave: false, - readOnlys: "readOnly", - }) - } - } - - - // this.getPollInfo(); - - } - //获取权限 - // getPollInfo(){ - // // console.log(this.props.match); - // let pollId=this.props.match.params.pollId; - // let url=`/polls/${pollId}/common_header.json` - // axios.get(url).then((result)=>{ - // if(result.status==200){ - // this.setState({ - // pollDetail:result.data, - // user_permission:result.data.user_permission - // }) - // } - // }).catch((error)=>{ - // console.log(error); - // }) - // } - //初始化请求网络 - Initializatio_data = () => { - console.log("Initializatio_data 582") - //课堂id - let coursesId = this.props.match.params.coursesId; - //时间id - let pollid = this.props.match.params.pollid; - console.log(pollid); - // let coursesId = 557; - if (pollid === undefined) { - // console.log("没有问卷新建问卷~~~") - // let coursesId=this.props.match.params.coursesId; - // // to={`/courses/${coursesId}/polls/new`} - // - // const urll = `/courses/${coursesId}/polls/new.json` - // axios.get(urll).then((result) => { - // if (result.status === 200) { - // console.log(urll) - // console.log("问卷新建成功") - // console.log(JSON.stringify(result)) - // // var path=`/courses/${coursesId}/polls/new`; - // // - // // this.props.history.push({ pathname: path, state: { } }); - // } - // }).catch((error) => { - // console.log(error) - // }) - - // const urlls = `/courses/${coursesId}/polls.json` - // axios.post(urlls,{ - // polls_name: "这是标题", - // polls_description:"这是标题须知" - // }).then((result)=>{ - // console.log("创建问卷++++++") - // console.log(result) - // try { - // if(result.data.status===0){ - // console.log("创建问卷") - // console.log(JSON.stringify(result.data)) - // } - // }catch (e) { - // - // } - // - // }) - //没有问卷 - this.setState({ - projects: [], - polls_name: "", - polls_description: "", - poll_questions: [], - question_types: [], - pollid: undefined, - mysingles: 0, - mydoubles: 0, - mymainsint: 0, - polls_nametest: "", - polls_descriptiontest: "", - coursesId: 0, - questionnair: false - }) - } else { - const url = `/polls/${pollid}/edit.json`; - axios.get(url).then((result) => { - if (result !== undefined) - - // console.log("有问卷~~~") - // if (result.status === 200) { - // console.log(JSON.stringify(result.data)) - this.props.form.setFieldsValue({ - polls_nametest: result.data.poll.polls_name, - polls_descriptiontest: result.data.poll.polls_description, - }); - this.setState({ - projects: result.data, - pollid: pollid, - polls_status: result.data.poll.polls_status, - polls_name: result.data.poll.polls_name, - polls_description: result.data.poll.polls_description, - poll_questions: result.data.poll_questions, - question_types: result.data.question_types, - mysingles: result.data.question_types.q_singles, - mydoubles: result.data.question_types.q_doubles, - mymainsint: result.data.question_types.q_mains, - polls_nametest: result.data.poll.polls_name, - polls_descriptiontest: result.data.poll.polls_description, - questionnair: true, - }) - console.log(this.state.polls_nametest) - console.log(this.state.polls_descriptiontest) - // } - }).catch((error) => { - console.log(error) - }) - } - - } - - //重新获取数据 - thisinitializationdatanew = () => { - var pollidsy = null; - if (this.state.pollid !== undefined) { - pollidsy = this.state.pollid; - if (pollidsy === null || pollidsy === undefined) { - pollidsy = this.props.match.params.pollid; - } - } - - if (pollidsy === null || pollidsy === undefined) { - return - } - - const url = `/polls/${pollidsy}/edit.json`; - axios.get(url).then((result) => { - if (result !== undefined) - - // console.log("有问卷~~~") - // if (result.status === 200) { - // console.log(JSON.stringify(result.data)) - this.setState({ - projects: result.data, - pollid: pollidsy, - polls_status: result.data.poll.polls_status, - polls_name: result.data.poll.polls_name, - polls_description: result.data.poll.polls_description, - poll_questions: result.data.poll_questions, - question_types: result.data.question_types, - mysingles: result.data.question_types.q_singles, - mydoubles: result.data.question_types.q_doubles, - mymainsint: result.data.question_types.q_mains, - polls_nametest: result.data.poll.polls_name, - polls_descriptiontest: result.data.poll.polls_description, - questionnair: true, - }) - - // } - }).catch((error) => { - console.log(error) - }) - } - //新建问卷 - newword = () => { - if (this.state.polls_nametest === undefined || this.state.polls_nametest === "") { - this.props.showNotification(`请输入标题`); - return - } - let coursesId = this.props.match.params.coursesId; - const urlls = `/courses/${coursesId}/polls.json` - axios.post(urlls, { - polls_name: this.state.polls_nametest, - polls_description: this.state.polls_descriptiontest - }).then((result) => { - if (result.data.status === 0) { - this.state.Newedit === false; - // this.props.showNotification(`试卷创建成功`); - this.setState({ - pollid: result.data.data.id, - Newedit: false, - }) - this.props.history.push(`/courses/${this.props.match.params.coursesId}/polls/${result.data.data.id}/detail?tab=2`) - } - }) - } - //添加单选题目 - addmysingles = () => { - - if (this.state.newoption === true) { - this.setState({ - newoption: false - }) - } - - var Insertposition = this.state.poll_questions.length; - // console.log(JSON.stringify(this.state.poll_questions)); - for (var i = 0; i < this.state.poll_questions.length; i++) { - if (this.state.poll_questions[i].question.question_type === 1) { - Insertposition = i; - } - - } - this.addMytopic(1, this.state.pollid, Insertposition, false, 0); - // } - } - - //添加多选题目 - addmydoubles = () => { - console.log("addmymainsint 70") - if (this.state.newoption === true) { - this.setState({ - newoption: false - }) - } - - var Insertposition = this.state.poll_questions.length; - // console.log(JSON.stringify(this.state.poll_questions)); - for (var i = 0; i < this.state.poll_questions.length; i++) { - if (this.state.poll_questions[i].question.question_type === 2) { - Insertposition = i; - } - - - } - this.addMytopic(2, this.state.pollid, Insertposition, false, 0); - - // } - } - - //添加主观题目 - addmymainsint = () => { - - var Insertposition = this.state.poll_questions.length; - // console.log(JSON.stringify(this.state.poll_questions)); - for (var i = 0; i < this.state.poll_questions.length; i++) { - if (this.state.poll_questions[i].question.question_type === 3) { - Insertposition = i; - } - - - } - - this.addMytopic(3, this.state.pollid, Insertposition, false, 0); - // } - } - - //编辑方法 - adddomedit = (object) => { - console.log("adddomedit 76"); - if (this.state.q_countst > 0) { - this.props.showNotification(`不能同时编辑两题`); - - return; - } - var anserbool = false; - this.setState({ - q_countst: 1, - }) - window.scrollTo(0, this.refs.targetElement.offsetTop) - let {adddom} = this.state; - // var arr =new Object(objects); - // console.log(arr) - // adddom.push(arr); - var question = {}; - var Insertposition = this.state.poll_questions.length; - if (object.question.question_type === 1) { - var answers = []; - var questiontwo = {}; - ///////////////////////////daying - for (var y = 0; y < object.question.answers.length; y++) { - var answerstwo; - if (object.question.answers[y].answer_text === "其他") { - answerstwo = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - anserbool = true; - } else { - answerstwo = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - } - answers.push(answerstwo); - - - } - // 插入单选题 - questiontwo = { - // "id": this.state.poll_questions[arr.length - 1].question.id + 1 + arrr.length, - "id": object.question.id, - "is_necessary": object.question.is_necessary, - "question_number": 1, - "question_title": object.question.question_title, - "question_type": 1, - "new": "", - "answers": answers - }; - question = {"question": questiontwo}; - adddom.push(question); - for (var i = 0; i < this.state.poll_questions.length; i++) { - if (this.state.poll_questions[i].question.question_type === 1) { - Insertposition = i; - } - } - } else if (object.question.question_type === 2) { - //插入多选题 - var answers = []; - var questiontwo = {}; - - for (var y = 0; y < object.question.answers.length; y++) { - if (object.question.answers[y].answer_text === "其他") { - answerstwo = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - anserbool = true; - } else { - answerstwo = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - } - answers.push(answerstwo); - } - questiontwo = { - "id": object.question.id, - "is_necessary": object.question.is_necessary, - "question_number": 2, - "question_title": object.question.question_title, - "question_type": 2, - "max_choices": object.question.max_choices, - "min_choices": object.question.min_choices, - "new": "", - "answers": answers - }; - question = {"question": questiontwo}; - adddom.push(question); - for (var i = 0; i < this.state.poll_questions.length; i++) { - if (this.state.poll_questions[i].question.question_type === 2) { - Insertposition = i; - } - } - } else if (object.question.question_type === 3) { - //插入主观题 - var answers = []; - var questiontwo = {}; - - if (object.question.answers.length > 0) { - for (var y = 0; y < object.question.answers.length; y++) { - var answerstwo; - if (object.question.answers[y].answer_text === "其他") { - answerstwo = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - } else { - answerstwo = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - } - answers.push(answerstwo); - } - } - questiontwo = { - "id": object.question.id, - "is_necessary": object.question.is_necessary, - "question_number": 3, - "question_title": object.question.question_title, - "question_type": 3, - "new": "", - "answers": answers - }; - question = {"question": questiontwo}; - adddom.push(question); - for (var i = 0; i < this.state.poll_questions.length; i++) { - if (this.state.poll_questions[i].question.question_type === 3) { - Insertposition = i; - } - } - } - this.setState({ - adddom: adddom, - newoption: anserbool, - Insertposition: Insertposition - }) - - } - - //新增添加题目 有new - addMytopic = (index, pollid, Insertposition, Whether, id) => { - //Whether 是否插入 - // console.log("id") - // console.log(id) - // console.log("Whether") - // console.log(Whether) - console.log("addMytopic 90") - if (this.state.q_countst > 0) { - this.props.showNotification(`不能同时编辑两题`); - - return; - } - this.state.Insertposition = Insertposition; - var Whethername = null; - if (Whether === true) { - Whethername = id; - } - this.setState({ - Insertposition: Insertposition, - q_countst: 1, - }) - window.scrollTo(0, this.refs.targetElement.offsetTop) - var arrr = this.state.adddom; - let newarrr = [...arrr]; - - var arr = this.state.poll_questions; - let newarr = [...arr]; - - if (newarr.length > 0) { - if (index === 1) { - // 插入单选题 - // console.log(this.state.poll_questions[newarr.length - 1].question.id); - var question = {} - var questiontwo = { - // "id": this.state.poll_questions[arr.length - 1].question.id + 1 + arrr.length, - "id": this.state.poll_questions[newarr.length - 1].question.id + 1, - "is_necessary": 1, - "question_number": 1, - "question_title": "", - "question_type": 1, - "new": "new", - "answers": [ - {"answer_id": 1, "answer_position": 1, "answer_text": ""}, - {"answer_id": 2, "answer_position": 2, "answer_text": ""}, - {"answer_id": 3, "answer_position": 3, "answer_text": ""}, - {"answer_id": 4, "answer_position": 4, "answer_text": ""}, - // {"answer_id": 5, "answer_position": 5, "answer_text": "其他"}, - ] - }; - question = {"question": questiontwo}; - newarrr.push(question); - - this.setState({ - adddom: newarrr, - problemtopic: Whethername, - problemtopicbool: Whether, - }) - - } else if (index === 2) { - //插入多选题 - var question = {} - var questiontwo = { - "id": this.state.poll_questions[newarr.length - 1].question.id + 1, - "is_necessary": 1, - "question_number": 2, - "question_title": "", - "question_type": 2, - "max_choices": 0, - "min_choices": 0, - "new": "new", - "answers": [ - {"answer_id": 1, "answer_position": 1, "answer_text": ""}, - {"answer_id": 2, "answer_position": 2, "answer_text": ""}, - {"answer_id": 3, "answer_position": 3, "answer_text": ""}, - {"answer_id": 4, "answer_position": 4, "answer_text": ""}, - // {"answer_id": 5, "answer_position": 5, "answer_text": "其他"}, - ] - }; - question = {"question": questiontwo}; - newarrr.push(question); - - this.setState({ - adddom: newarrr, - problemtopic: Whethername, - problemtopicbool: Whether, - }) - - } else if (index === 3) { - //插入主观题 - // console.log(this.state.poll_questions[newarr.length - 1].question.id); - var question = {} - var questiontwo = { - "id": this.state.poll_questions[newarr.length - 1].question.id + 1, - "is_necessary": 1, - "question_number": 3, - "question_title": "", - "question_type": 3, - "new": "new", - "answers": [] - }; - question = {"question": questiontwo}; - newarrr.push(question); - this.setState({ - adddom: newarrr, - problemtopic: Whethername, - problemtopicbool: Whether, - }) - - } - } else { - /////上面视图全部删除后 要加载的 - if (index === 1) { - // 插入单选题 - var id; - try { - id = this.state.poll_questions[newarr.length - 1].question.id + 1 - } catch (e) { - id = 1; - } - var questiontwo = { - // "id": this.state.poll_questions[arr.length - 1].question.id + 1 + arrr.length, - "id": id, - "is_necessary": 1, - "question_number": 1, - "question_title": "", - "question_type": 1, - "new": "new", - "answers": [ - {"answer_id": 1, "answer_position": 1, "answer_text": ""}, - {"answer_id": 2, "answer_position": 2, "answer_text": ""}, - {"answer_id": 3, "answer_position": 3, "answer_text": ""}, - {"answer_id": 4, "answer_position": 4, "answer_text": ""}, - // {"answer_id": 5, "answer_position": 5, "answer_text": "其他"}, - ] - }; - question = {"question": questiontwo}; - newarrr.push(question); - - this.setState({ - adddom: newarrr, - problemtopic: Whethername, - problemtopicbool: Whether, - }) - - } else if (index === 2) { - //插入多选题 - var id; - try { - id = this.state.poll_questions[newarr.length - 1].question.id + 1 - } catch (e) { - id = 1; - } - var questiontwo = { - "id": id, - "is_necessary": 1, - "question_number": 2, - "question_title": "", - "question_type": 2, - "max_choices": 0, - "min_choices": 0, - "new": "new", - "answers": [ - {"answer_id": 1, "answer_position": 1, "answer_text": ""}, - {"answer_id": 2, "answer_position": 2, "answer_text": ""}, - {"answer_id": 3, "answer_position": 3, "answer_text": ""}, - {"answer_id": 4, "answer_position": 4, "answer_text": ""}, - // {"answer_id": 5, "answer_position": 5, "answer_text": "其他"}, - ] - }; - question = {"question": questiontwo}; - newarrr.push(question); - - this.setState({ - adddom: newarrr, - problemtopic: Whethername, - problemtopicbool: Whether, - }) - - } else if (index === 3) { - //插入主观题 - var id; - try { - id = this.state.poll_questions[newarr.length - 1].question.id + 1 - } catch (e) { - id = 1; - } - var questiontwo = { - "id": id, - "is_necessary": 1, - "question_number": 3, - "question_title": "", - "question_type": 3, - "new": "new", - "answers": [] - }; - question = {"question": questiontwo}; - newarrr.push(question); - this.setState({ - adddom: newarrr, - problemtopic: Whethername, - problemtopicbool: Whether, - }) - } - } - } - - //删除指定条目 - deleteadddom = (indexo) => { - console.log("deleteadddom 259") - var arr = this.state.adddom; - let newarr = [...arr]; - - newarr.splice(indexo, 1); - this.setState({ - adddom: newarr, - q_countst: 0, - problemtopic: null, - problemtopicbool: false, - }) - } - //保存并继续 - //保存并继续,即提交本题的新建并继续创建一个相同的题(该新题处于编辑模式,题目和选项不要清空) - deleteadddomtwo = (indexo, object) => { - var thiss = this; - this.setState({ - q_countst: 1, - }) - var poll_questionslength = this.state.poll_questions.length; - // console.log("deleteadddomtwo|||||||||||||||||||||||||||||||||||||||||\\"); - // console.log(indexo); - // console.log(object); - // console.log(object.question.question_type); - let arr = this.state.adddom; - let arrpoll = this.state.poll_questions; - let newarr = [...arr]; - let newarrpoll = [...arrpoll]; - - //选项内容不能为空 - let max = 0; - let maxtie = newarr[indexo].question.answers.length; - for (var k = 0; k < newarr[indexo].question.answers.length; k++) { - try { - if (newarr[indexo].question.answers[k].answer_text != undefined) { - if (newarr[indexo].question.answers[k].answer_text === "") { - max = max + 1; - } - } - } catch (e) { - console.log("PollNew281") - console.log(e) - } - } - if (newarr[indexo].question.question_title === "") { - this.props.showNotification(`题目不能为空`); - - return - } - if (max > 0) { - if (object.question.question_type === 1) { - this.props.showNotification(`选项内容不能为空`); - - return - } else if (object.question.question_type === 2) { - this.props.showNotification(`选项内容不能为空`); - - return - } - - } - if (maxtie < 2) { - if (object.question.question_type === 1) { - this.props.showNotification(`选项不能少于2个!`); - - return - } else if (object.question.question_type === 2) { - this.props.showNotification(`选项不能少于2个!`); - - return - } - - - } - - if (object.question.question_type === 2) { - if (object.question.max_choices > 0) { - if (object.question.min_choices < 2) { - this.props.showNotification(`可选最小不能少于2个`); - - return; - - } - } - - } - if (object.question.new === "new") { - // 根据数组里面的new 来确定是否是新增还是 修改 - //添加道数组上 - //不能共用数组 所以自己写个新数组 然后push 上面卷子中 - var question = {}; - if (object.question.question_type === 1) { - - var questiontwo = {}; - var other = []; - var option = []; - var answerstwos = []; - var answerstwoss = []; - ///////////////////////////daying - // 这个是装选项和其他的 - for (var y = 0; y < object.question.answers.length; y++) { - if (object.question.answers[y].answer_text === "其他") { - var dataone = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - other.push(object.question.answers[y].answer_text); - answerstwos.push(dataone); - } else { - var datatwo = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - option.push(object.question.answers[y].answer_text) - answerstwoss.push(datatwo); - } - - - } - - var arrc = option.concat(other); - var answers = answerstwoss.concat(answerstwos); - // 插入单选题 - // var id - // try { - // id = newarrpoll[newarrpoll.length - 1].question.id + 1; - // } catch (e) { - // id = 1; - // } - questiontwo = { - // "id": this.state.poll_questions[arr.length - 1].question.id + 1 + arrr.length, - "id": null, - "is_necessary": object.question.is_necessary, - "question_number": 1, - "question_title": object.question.question_title, - "question_type": 1, - "new": "", - "answers": answers - }; - question = {"question": questiontwo}; - var insindex = null; - // if (poll_questionslength !== thiss.state.Insertposition) { - // insindex = newarrpoll[thiss.state.Insertposition].question.id; - // } - if (this.state.problemtopicbool === true) { - insindex = this.state.problemtopic; - } - this.createquestionsandanswers(object, 1, arrc, null, 0, 0, insindex); - // newarrpoll.push(question); - newarrpoll.splice(thiss.state.Insertposition, 0, question); - - } else if (object.question.question_type === 2) { - //插入多选题 - if (object.question.max_choices < object.question.min_choices) { - this.props.showNotification(`可选的最大限制不能小于最小限制`); - - return; - } - - var questiontwo = {}; - var other = []; - var option = []; - var answerstwos = []; - var answerstwoss = []; - for (var y = 0; y < object.question.answers.length; y++) { - if (object.question.answers[y].answer_text === "其他") { - var dataone = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - other.push(object.question.answers[y].answer_text); - answerstwos.push(dataone); - } else { - var datatwo = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - option.push(object.question.answers[y].answer_text) - answerstwoss.push(datatwo); - } - } - var arrc = option.concat(other); - var answers = answerstwoss.concat(answerstwos); - // var id - // try { - // id = newarrpoll[newarrpoll.length - 1].question.id + 1; - // } catch (e) { - // id = 1; - // } - questiontwo = { - "id": null, - "is_necessary": object.question.is_necessary, - "question_number": 2, - "question_title": object.question.question_title, - "question_type": 2, - "max_choices": object.question.max_choices, - "min_choices": object.question.min_choices, - "new": "", - "answers": answers - }; - question = {"question": questiontwo}; - var insindex = null; - if (this.state.problemtopicbool === true) { - insindex = this.state.problemtopic; - } - this.createquestionsandanswers(object, 2, arrc, null, object.question.max_choices, object.question.min_choices, insindex); - //插入多选题 - // if (object.question.max_choices > arrc.length) { - // // console.log("选择题的最大可选项不能大于选项数") - // this.props.showNotification(`选择题的最大可选项不能大于选项数`); - // - // return; - // } - // if (object.question.min_choices === 0) { - // // console.log("选择题的最大可选项不能小于2项目") - // this.props.showNotification(`选择题的最大可选项不能小于2项目`); - // - // return; - // - // } - // newarrpoll.push(question); - newarrpoll.splice(thiss.state.Insertposition, 0, question); - } else if (object.question.question_type === 3) { - //插入主观题 - var answers = []; - var questiontwo = {}; - var answerstwos = []; - var answerstwoss = []; - if (object.question.answers.length > 0) { - for (var y = 0; y < object.question.answers.length; y++) { - var answerstwo; - if (object.question.answers[y].answer_text === "其他") { - var dataone = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - answerstwos.push(dataone); - } else { - var datatwo = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - answerstwoss.push(datatwo); - } - } - } - - answers = answerstwoss.concat(answerstwos); - // var id - // try { - // id = newarrpoll[newarrpoll.length - 1].question.id + 1; - // } catch (e) { - // id = 1; - // } - questiontwo = { - "id": null, - "is_necessary": object.question.is_necessary, - "question_number": 3, - "question_title": object.question.question_title, - "question_type": 3, - "new": "", - "answers": answers - }; - question = {"question": questiontwo}; - // var insindex = null; - // if (poll_questionslength !== thiss.state.Insertposition) { - // insindex = newarrpoll[thiss.state.Insertposition].question.id; - // } - //主观题不需要可选选项 - var insindex = null; - if (this.state.problemtopicbool === true) { - insindex = this.state.problemtopic; - } - this.createquestionsandanswers(object, 3, null, null, 0, 0, insindex); - // newarrpoll.push(question); - newarrpoll.splice(thiss.state.Insertposition, 0, question); - } - //////////////////////////////////////////////////////////////////////////////////////////////////// 上面是新增 - } else { - ///////////////////////////////////////////////////////////////////////////////////////////////////修改点了编辑 - console.log("点了编辑") - var uuk = -1 - //这个地方判断 点了编辑上面题目又把他删除了 保存的时候就只能是插入新增了 - for (var uk = 0; uk < newarrpoll.length; uk++) { - if (object.question.id === newarrpoll[uk].question.id) { - uuk = uk; - } - } - - - var question = {}; - if (object.question.question_type === 1) { - var questiontwo = {}; - var other = []; - var option = []; - var answerstwos = []; - var answerstwoss = []; - ///////////////////////////daying - //这个装选项和其他的 - for (var y = 0; y < object.question.answers.length; y++) { - if (object.question.answers[y].answer_text === "其他") { - var dataone = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - other.push(object.question.answers[y].answer_text); - answerstwos.push(dataone); - } else { - var datatwo = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - option.push(object.question.answers[y].answer_text) - answerstwoss.push(datatwo); - } - - - } - var arrc = option.concat(other); - var answers = answerstwoss.concat(answerstwos); - // 插入单选题 - questiontwo = { - // "id": this.state.poll_questions[arr.length - 1].question.id + 1 + arrr.length, - "id": object.question.id, - "is_necessary": object.question.is_necessary, - "question_number": 1, - "question_title": object.question.question_title, - "question_type": 1, - "new": "", - "answers": answers - }; - question = {"question": questiontwo}; - if (uuk !== -1) { - // console.log("修改") - this.edittotheserver(object, 1, arrc, null, 0, 0); - newarrpoll.splice(uuk, 1, question); - } else { - // console.log("他原来的删除掉了") - this.createquestionsandanswers(object, 1, arrc, null, 0, 0, object.question.id); - newarrpoll.push(question); - } - newarr[indexo].question.new = "new" - // console.log(newarrpoll) - } else if (object.question.question_type === 2) { - //插入多选题 - - if (object.question.max_choices < object.question.min_choices) { - this.props.showNotification('可选的最大限制不能小于最小限制!'); - - return; - } - var questiontwo = {}; - var other = []; - var option = []; - var answerstwos = []; - var answerstwoss = []; - for (var y = 0; y < object.question.answers.length; y++) { - if (object.question.answers[y].answer_text === "其他") { - var dataone = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - other.push(object.question.answers[y].answer_text); - answerstwos.push(dataone); - } else { - var datatwo = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - option.push(object.question.answers[y].answer_text) - answerstwoss.push(datatwo); - } - } - var arrc = option.concat(other); - var answers = answerstwoss.concat(answerstwos); - questiontwo = { - "id": object.question.id, - "is_necessary": object.question.is_necessary, - "question_number": 2, - "question_title": object.question.question_title, - "question_type": 2, - "max_choices": object.question.max_choices, - "min_choices": object.question.min_choices, - "new": "", - "answers": answers - }; - question = {"question": questiontwo}; - //插入多选题 - // if (object.question.max_choices > arrc.length) { - // // console.log("选择题的最大可选项不能大于答案数") - // this.props.showNotification('选择题的最大可选项不能大于选项数!'); - // - // return; - // } - // if (object.question.min_choices === 0) { - // // console.log("选择题的最大可选项不能小于2项目") - // this.props.showNotification('选择题的最大可选项不能小于2项目!'); - // - // return; - // - // } - if (uuk !== -1) { - console.log("修改") - this.edittotheserver(object, 2, arrc, null, object.question.max_choices, object.question.min_choices); - newarrpoll.splice(uuk, 1, question); - } else { - console.log("删除") - this.createquestionsandanswers(object, 2, arrc, null, object.question.max_choices, object.question.min_choices, object.question.id); - newarrpoll.push(question); - } - console.log(newarrpoll) - newarr[indexo].question.new = "new" - } else if (object.question.question_type === 3) { - //插入主观题 - var answers = []; - var questiontwo = {}; - - if (object.question.answers.length > 0) { - for (var y = 0; y < object.question.answers.length; y++) { - var answerstwo; - if (object.question.answers[y].answer_text === "其他") { - answerstwo = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - } else { - answerstwo = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - } - answers.push(answerstwo); - } - } - questiontwo = { - "id": object.question.id, - "is_necessary": object.question.is_necessary, - "question_number": 3, - "question_title": object.question.question_title, - "question_type": 3, - "new": "", - "answers": answers - }; - question = {"question": questiontwo}; - - if (uuk !== -1) { - console.log("修改") - this.edittotheserver(object, 3, null, null, 0, 0); - newarrpoll.splice(uuk, 1, question); - } else { - console.log("删除") - this.createquestionsandanswers(object, 3, null, null, 0, 0, object.question.id); - newarrpoll.push(question); - } - console.log(newarrpoll) - newarr[indexo].question.new = "new" - } - - } - - - //添加到上面列表中 - //改变题目总数 - if (object.question.question_type === 1) { - //单选题 - this.state.mysingles = this.state.mysingles + 1; - } else if (object.question.question_type === 2) { - //多选题 - this.state.mydoubles = this.state.mydoubles + 1; - } else if (object.question.question_type === 3) { - //主观题 - this.state.mymainsint = this.state.mymainsint + 1; - - } - this.setState({ - // poll_questions: newarrpoll, - adddom: newarr, - problemtopic: null, - problemtopicbool: false, - // mysingles: this.state.mysingles, - // mydoubles: this.state.mydoubles, - // mymainsint: this.state.mymainsint - }) - - } - - - //保存 后期可以考虑和保存并继续 合并 - //保存,即完成新建并退出本题编辑 - // indexo 第几个数组 - //object 单个数组数据 - deleteadddomthree = (indexo, object) => { - // console.log("deleteadddom 349") - var thiss = this; - let arr = this.state.adddom; - let arrpoll = this.state.poll_questions; - let newarr = [...arr]; - let newarrpoll = [...arrpoll]; - var poll_questionslength = this.state.poll_questions.length; //获取单前问题最大长度 - //选项内容不能为空 - let max = 0; - let maxtie = newarr[indexo].question.answers.length; - //判断选项值是否不为空 - for (var k = 0; k < newarr[indexo].question.answers.length; k++) { - try { - if (newarr[indexo].question.answers[k].answer_text != undefined) { - if (newarr[indexo].question.answers[k].answer_text === "") { - max = max + 1; - } - } - } catch (e) { - // console.log("PollNew281") - // console.log(e) - } - } - if (newarr[indexo].question.question_title === "") { - this.props.showNotification('题目不能为空!'); - return - } - if (max > 0) { - if (object.question.question_type === 1) { - this.props.showNotification('选项内容不能为空!'); - return - } else if (object.question.question_type === 2) { - this.props.showNotification('选项内容不能为空!'); - return - } - - } - if (maxtie < 2) { - if (object.question.question_type === 1) { - this.props.showNotification('选项不能少于2个!'); - return - } else if (object.question.question_type === 2) { - this.props.showNotification('选项不能少于2个!'); - return - } - - - } - - if (object.question.question_type === 2) { - if (object.question.max_choices > 0) { - if (object.question.min_choices < 2) { - this.props.showNotification(`可选最小不能少于2个`); - return; - } - } - } - if (object.question.new === "new") { - ///////////////////////////////////////////////////////////////////新增模式 - // 根据数组里面的new 来确定是否是新增还是 修改 - //添加道数组上 - //不能共用数组 所以自己写个新数组 然后push 上面卷子中 - var question = {}; - if (object.question.question_type === 1) { - var questiontwo = {}; - var other = []; - var option = []; - var answerstwos = []; - var answerstwoss = []; - ///////////////////////////daying - // 这个是装选项和其他的 - for (var y = 0; y < object.question.answers.length; y++) { - if (object.question.answers[y].answer_text === "其他") { - var dataone = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - other.push(object.question.answers[y].answer_text); - answerstwos.push(dataone); - } else { - var datatwo = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - option.push(object.question.answers[y].answer_text) - answerstwoss.push(datatwo); - } - } - var arrc = option.concat(other); - var answers = answerstwoss.concat(answerstwos); - // 插入单选题' - // var id; - // try { - // id = newarrpoll[newarrpoll.length - 1].question.id + 1 - // } catch (e) { - // id = 1; - // } - questiontwo = { - // "id": this.state.poll_questions[arr.length - 1].question.id + 1 + arrr.length, - "id": null, - "is_necessary": object.question.is_necessary, - "question_number": 1, - "question_title": object.question.question_title, - "question_type": 1, - "new": "", - "answers": answers - }; - question = {"question": questiontwo}; - //获取指定id 号 用来插入,如果不是就是在最后添加 - - //执行新增操作 - var insindex = null; - if (this.state.problemtopicbool === true) { - insindex = this.state.problemtopic; - } - this.createquestionsandanswers(object, 1, arrc, null, 0, 0, insindex); - newarrpoll.splice(thiss.state.Insertposition, 0, question); - } else if (object.question.question_type === 2) { - //插入多选题 - if (object.question.max_choices < object.question.min_choices) { - this.props.showNotification(`可选的最大限制不能小于最小限制`); - - return; - } - - var questiontwo = {}; - var other = []; - var option = []; - var answerstwos = []; - var answerstwoss = []; - for (var y = 0; y < object.question.answers.length; y++) { - if (object.question.answers[y].answer_text === "其他") { - var dataone = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - other.push(object.question.answers[y].answer_text); - answerstwos.push(dataone); - } else { - var datatwo = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - option.push(object.question.answers[y].answer_text) - answerstwoss.push(datatwo); - } - } - var arrc = option.concat(other); - var answers = answerstwoss.concat(answerstwos); - - questiontwo = { - "id": null, - "is_necessary": object.question.is_necessary, - "question_number": 2, - "question_title": object.question.question_title, - "question_type": 2, - "max_choices": object.question.max_choices, - "min_choices": object.question.min_choices, - "new": "", - "answers": answers - }; - question = {"question": questiontwo}; - - var insindex = null; - if (this.state.problemtopicbool === true) { - insindex = this.state.problemtopic; - } - this.createquestionsandanswers(object, 2, arrc, null, object.question.max_choices, object.question.min_choices, insindex); - //插入多选题 - // if (object.question.max_choices > arrc.length) { - - newarrpoll.splice(thiss.state.Insertposition, 0, question); - } else if (object.question.question_type === 3) { - //插入主观题 - var answers = []; - var questiontwo = {}; - var answerstwos = []; - var answerstwoss = []; - if (object.question.answers.length > 0) { - for (var y = 0; y < object.question.answers.length; y++) { - if (object.question.answers[y].answer_text === "其他") { - var dataone = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - answerstwos.push(dataone); - } else { - var datatwo = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - answerstwoss.push(datatwo); - } - } - } - answers = answerstwoss.concat(answerstwos); - - questiontwo = { - "id": null, - "is_necessary": object.question.is_necessary, - "question_number": 3, - "question_title": object.question.question_title, - "question_type": 3, - "new": "", - "answers": answers - }; - question = {"question": questiontwo}; - //主观题不需要可选选项 - - var insindex = null; - if (this.state.problemtopicbool === true) { - insindex = this.state.problemtopic; - } - this.createquestionsandanswers(object, 3, null, null, 0, 0, insindex); - // newarrpoll.push(question); - newarrpoll.splice(thiss.state.Insertposition, 0, question); - } - ///////////////////////////////////////////////////////////////////新增模式 - } else { - //////////////////////////////////////////////////////////////////////////////修改模式 - //修改 - var uuk = -1 - for (var uk = 0; uk < newarrpoll.length; uk++) { - if (object.question.id === newarrpoll[uk].question.id) { - uuk = uk; - console.log("删除了数据=-09876543234567890-111111111111") - } - } - - - var question = {}; - if (object.question.question_type === 1) { - var questiontwo = {}; - var other = []; - var option = []; - var answerstwos = []; - var answerstwoss = []; - ///////////////////////////daying - //这个装选项和其他的 - for (var y = 0; y < object.question.answers.length; y++) { - if (object.question.answers[y].answer_text === "其他") { - var dataone = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - other.push(object.question.answers[y].answer_text); - answerstwos.push(dataone); - } else { - var datatwo = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - option.push(object.question.answers[y].answer_text) - answerstwoss.push(datatwo); - } - } - var arrc = option.concat(other); - var answers = answerstwoss.concat(answerstwos); - // 插入单选题 - questiontwo = { - // "id": this.state.poll_questions[arr.length - 1].question.id + 1 + arrr.length, - "id": object.question.id, - "is_necessary": object.question.is_necessary, - "question_number": 1, - "question_title": object.question.question_title, - "question_type": 1, - "new": "", - "answers": answers - }; - question = {"question": questiontwo}; - if (uuk !== -1) { - console.log("修改") - this.edittotheserver(object, 1, arrc, null, 0, 0); - newarrpoll.splice(uuk, 1, question); - } else { - console.log("删除") - this.createquestionsandanswers(object, 1, arrc, null, 0, 0, object.question.id); - newarrpoll.push(question); - } - console.log(newarrpoll) - } else if (object.question.question_type === 2) { - //插入多选题 - if (object.question.max_choices < object.question.min_choices) { - this.props.showNotification(`可选的最大限制不能小于最小限制`); - - return; - } - var questiontwo = {}; - var other = []; - var option = []; - var answerstwos = []; - var answerstwoss = []; - for (var y = 0; y < object.question.answers.length; y++) { - if (object.question.answers[y].answer_text === "其他") { - var dataone = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - other.push(object.question.answers[y].answer_text); - answerstwos.push(dataone); - } else { - var datatwo = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - option.push(object.question.answers[y].answer_text) - answerstwoss.push(datatwo); - } - } - var arrc = option.concat(other); - var answers = answerstwoss.concat(answerstwos); - questiontwo = { - "id": object.question.id, - "is_necessary": object.question.is_necessary, - "question_number": 2, - "question_title": object.question.question_title, - "question_type": 2, - "max_choices": object.question.max_choices, - "min_choices": object.question.min_choices, - "new": "", - "answers": answers - }; - question = {"question": questiontwo}; - //插入多选题 - if (uuk !== -1) { - console.log("修改") - this.edittotheserver(object, 2, arrc, null, object.question.max_choices, object.question.min_choices); - newarrpoll.splice(uuk, 1, question); - } else { - console.log("删除") - this.createquestionsandanswers(object, 2, arrc, null, object.question.max_choices, object.question.min_choices, object.question.id); - newarrpoll.push(question); - } - console.log(newarrpoll) - - } else if (object.question.question_type === 3) { - //插入主观题 - var answers = []; - var questiontwo = {}; - - if (object.question.answers.length > 0) { - for (var y = 0; y < object.question.answers.length; y++) { - var answerstwo; - if (object.question.answers[y].answer_text === "其他") { - answerstwo = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - } else { - answerstwo = { - "answer_id": object.question.answers[y].answer_id, - "answer_position": object.question.answers[y].answer_position, - "answer_text": object.question.answers[y].answer_text - } - } - answers.push(answerstwo); - } - } - questiontwo = { - "id": object.question.id, - "is_necessary": object.question.is_necessary, - "question_number": 3, - "question_title": object.question.question_title, - "question_type": 3, - "new": "", - "answers": answers - }; - question = {"question": questiontwo}; - if (uuk !== -1) { - console.log("修改") - this.edittotheserver(object, 3, null, null, 0, 0); - newarrpoll.splice(uuk, 1, question); - } else { - console.log("删除") - this.createquestionsandanswers(object, 3, null, null, 0, 0, object.question.id); - newarrpoll.push(question); - } - console.log(newarrpoll) - - } - - } - - - //添加到上面列表中 - //改变题目总数 - if (object.question.question_type === 1) { - //单选题 - this.state.mysingles = this.state.mysingles + 1; - } else if (object.question.question_type === 2) { - //多选题 - this.state.mydoubles = this.state.mydoubles + 1; - } else if (object.question.question_type === 3) { - //主观题 - this.state.mymainsint = this.state.mymainsint + 1; - - } - - //这里更新数据 - if (this.state.q_countst == 1) { - this.setState({ - q_countst: 0, - }) - } - this.deleteadddom(indexo); - // console.log(indexo) - } - - - ////新增到服务器中 - createquestionsandanswers = (object, number, option, other, max_choices, min_choices, insert_id) => { - var thiss = this; - var poll_id = this.state.pollid; - var urlly = `/polls/${poll_id}/poll_questions.json` - var max_choicess = null; - var min_choicess = null; - if (max_choices === 0 && min_choices === 0) { - max_choicess = null; - min_choicess = null; - } else { - max_choicess = max_choices; - min_choicess = min_choices; - } - axios.post(urlly, { - question_title: object.question.question_title, - question_type: number, - is_necessary: object.question.is_necessary, - max_choices: max_choicess, - min_choices: min_choicess, - question_answers: option, - question_other_answer: null, - insert_id: insert_id - }).then((result) => { - // try { - if (result !== undefined) { - if (result.data.status === 0) { - this.props.showNotification(`已完成`); - thiss.thisinitializationdatanew(); - // console.log("确认创建问题") - // console.log(result) - // try { - // if (result.data.status === 0) { - // console.log("确认创建问题") - // console.log(JSON.stringify(result.data)) - // } - // } catch (e) { - // - // } - } - } - // } catch (e) { - // - // } - - }) - - - } - ///编辑修改到服务器当中 - edittotheserver = (object, number, option, other, max_choices, min_choices) => { - console.log("调用了edittotheserver") - var url = `/poll_questions/${object.question.id}.json` - var thiss = this; - axios.put(url, { - // debug: true, - question_title: object.question.question_title, - question_type: number, - is_necessary: object.question.is_necessary, - max_choices: max_choices, - min_choices: min_choices, - question_answers: option, - question_other_answer: null, - }).then((result) => { - try { - if (result.data.status === 0) { - this.props.showNotification(`编辑题目成功`); - thiss.thisinitializationdatanew(); - } - } catch (e) { - // console.log("调用了edittotheserver") - console.log(e) - } - }) - } - - //删除到服务器当中 - eletetoserver = (pollid, newarr, type, index) => { - console.log("调用了eletetoserver") - var id = pollid; - var url = `/poll_questions/${id}.json` - let {mysingles, mydoubles, mymainsint} = this.state - var thiss = this; - - axios - .delete(url, {}) - .then(function (response) { - console.log(response) - if (response === undefined) { - return; - } - if (response.data.message === "删除成功") { - thiss.props.showNotification(`删除成功`); - - newarr.splice(index, 1); - if (type === 1) { - mysingles = mysingles - 1; - } else if (type === 2) { - mydoubles = mydoubles - 1; - - } else if (type === 3) { - mymainsint = mymainsint - 1; - - } - // thiss.setState({ - // poll_questions: newarr, - // mysingles: mysingles, - // mydoubles: mydoubles, - // mymainsint: mymainsint - // }); - thiss.thisinitializationdatanew(); - } - }) - } - - //上移到服务器中 - Upanddownmovementof = (bool, poll_question_id) => { - // console.log("调用了Upanddownmovementofr") - // console.log(poll_question_id) - var thiss = this; - if (bool === true) { - var url = `/poll_questions/${poll_question_id}/up_down.json`; - axios.post(url, { - opr: "up", - }).then((result) => { - try { - if (result.data.status === 0) { - this.props.showNotification(`已完成`); - thiss.thisinitializationdatanew(); - } - // console.log(JSON.stringify(result)) - } catch (e) { - console.log("上移题目成功 错误") - console.log(e) - } - - }) - } else { - var url = `/poll_questions/${poll_question_id}/up_down.json`; - axios.post(url, { - opr: "down", - }).then((result) => { - try { - if (result.data.status === 0) { - // message.success("下移题目成功", 1) - this.props.showNotification(`已完成`); - thiss.thisinitializationdatanew(); - } - // console.log(JSON.stringify(result)) - } catch (e) { - console.log("下移题目成功 错误") - console.log(e) - } - }) - } - - } - - //删除编辑新增条目 - //id 条目的唯一id - //i 为要删除的子条目 - deleteentrys = (id, i, stirngname) => { - console.log(id) - console.log(stirngname); - var arrtwoy = this.state.adddom; - let newarrtwoy = [...arrtwoy]; - for (var k = 0; k < newarrtwoy.length; k++) { - if (newarrtwoy[k] != undefined) { - if (newarrtwoy[k].question.id === id) { - for (var c = 0; c < newarrtwoy[k].question.answers.length; c++) { - if (c === i) { - // console.log("删除了") - // console.log(c) - newarrtwoy[k].question.answers.splice(c, 1); - } - } - } - } - } - if (stirngname === true) { - console.log(stirngname); - this.setState({ - newoption: false, - adddom: newarrtwoy, - - }) - } else { - console.log(stirngname); - this.setState({ - adddom: newarrtwoy, - }); - } - - - } - - - // 新增选项 - ewoption = (id, object) => { - console.log("ewoption 440") - console.log("是否是新建题目还是编辑") - // console.log(object.question.new) - - - let arrtwo = this.state.adddom; - let newarrtwo = [...arrtwo]; - - - for (var k = 0; k < newarrtwo.length; k++) { - // console.log(arrtwo[k].question.id); - if (newarrtwo[k] != undefined) { - if (newarrtwo[k].question.id === id) { - var data = { - "answer_id": newarrtwo[k].question.answers.length + 1, - "answer_position": newarrtwo[k].question.answers.length + 1, - "answer_text": "" - }; - //向头部添加元素 - // newarrtwo[k].question.answers.unshift(data); - //如果有其他这一项就删除掉 - if (newarrtwo[k].question.answers.length > 0) { - for (var o = 0; o < newarrtwo[k].question.answers.length; o++) { - if (newarrtwo[k].question.answers[o].answer_text != undefined) { - if (newarrtwo[k].question.answers[o].answer_text === "其他") { - newarrtwo[k].question.answers.splice(o, 0, data); - this.setState({ - adddom: newarrtwo - }) - return - } else { - if (o === newarrtwo[k].question.answers.length - 1) { - newarrtwo[k].question.answers.push(data); - this.setState({ - adddom: newarrtwo - }) - return - } - } - } - } - } else { - newarrtwo[k].question.answers.push(data); - this.setState({ - adddom: newarrtwo - }) - } - - } - } - } - - } - - - swapArray = (arr, index1, index2) => { - arr[index1] = arr.splice(index2, 1, arr[index1])[0]; - return arr; - } - - //新增其他选项 - addanotheroption = (id) => { - console.log("addanotheroption 457") - let arrtwo = this.state.adddom; - let newarrtwo = [...arrtwo]; - console.log(newarrtwo) - for (var k = 0; k < newarrtwo.length; k++) { - if (newarrtwo[k] != undefined) { - if (newarrtwo[k].question.id === id) { - var data = { - "answer_id": newarrtwo[k].question.answers.length + 1, - "answer_position": newarrtwo[k].question.answers.length + 1, - "answer_text": "其他" - }; - newarrtwo[k].question.answers.push(data); - } - } - } - this.setState({ - adddom: newarrtwo, - newoption: true, - }) - } - - - //点击向上排序按钮事件 - handleClickBySortUp = (index, object) => { - console.log("handleClickBySortUp 521") - let arr = this.state.poll_questions; - let newarr = [...arr]; - console.log(newarr) - if (index != 0) { - this.Upanddownmovementof(true, object.question.id); - let temp = newarr[index - 1]; - newarr[index - 1] = newarr[index]; - newarr[index] = temp; - this.setState({ - poll_questions: newarr, - }); - } - } - - //点击向下排序按钮事件 - handleClickBySortDown = (index, object) => { - console.log("handleClickBySortDown 536") - let arr = this.state.poll_questions; - let newarr = [...arr]; - // - if (index != newarr.length - 1) { - this.Upanddownmovementof(false, object.question.id); - let temp = newarr[index + 1]; - newarr[index + 1] = newarr[index]; - newarr[index] = temp; - this.setState({ - poll_questions: newarr, - }); - } else { - console.log("2222index==arr.length"); - console.log(this.state.poll_questions); - } - } - - //点击删除按钮事件 - handleClickByDelete = (type, index, object) => { - console.log("handleClickByDelete 556") - console.log("object.question.id") - console.log(object.question.id) - let arr = this.state.poll_questions; - let newarr = [...arr]; - this.eletetoserver(object.question.id, newarr, type, index) - - } - - // 数字输入监听 - //e为获取组件对象 - //i外层数组 - //k为内层数组 - handleInputChanges = (e, i, k) => { - console.log("handleInputChanges 612") - - let value = e.target.value;//取到input的数据 - console.log("handleInputChanges value is :" + value); - console.log(k); - let arr = this.state.adddom; - let newarr = [...arr]; - - newarr[i].question.answers[k].answer_text = value - this.setState({ - adddom: newarr - }) - - } - - //标题输入监听 - handleInputTopic = (e, i) => { - console.log("handleInputTopic 633") - - let value = e.target.value;//取到input的数据 - console.log("handleInputTopic value is :" + value); - console.log(i); - let arr = this.state.adddom; - let newarr = [...arr]; - newarr[i].question.question_title = value - this.setState({ - adddom: newarr - }) - } - - //最小值 - handleGradationGroupChangee = (value, index, max, length) => { - - debugger - var minbool = false; - var maxbool = false; - let arr = this.state.adddom; - if (parseInt(value) === 0 || parseInt(value) === "0" || parseInt(value) === null || parseInt(value) === undefined || parseInt(value) < 1) { - minbool = true; - } - if (max === 0 || max === "0" || max === null || max === undefined) { - maxbool = true; - } - - if (minbool === true && maxbool === true) { - for (var i = 0; i < arr.length; i++) { - if (index === i) { - arr[i].question.min_choices = parseInt(value); - } - } - this.setState({ - adddom: arr - }) - } else { - for (var i = 0; i < arr.length; i++) { - if (index === i) { - arr[i].question.min_choices = parseInt(value); - arr[i].question.max_choices = length; - } - } - this.setState({ - adddom: arr - }) - } - - } - - //最大值 - handleGradationGroupChangeee = (value, index) => { - - let arr = this.state.adddom; - for (var i = 0; i < arr.length; i++) { - if (index === i) { - arr[i].question.max_choices = parseInt(value); - } - } - this.setState({ - adddom: arr - }) - // console.log(this.state.adddom); - } - - //提交题目//没有就创建新的题库,新建问题和保存题目不一样不能同时保存 这里只是新建 和编辑 标题和须知 - submitQuestionnaire = () => { - console.log("调用了submitQuestionnaire") - if (this.state.Newedit === true) { - - this.newword(); - - } else { - if (this.state.polls_nametest === undefined || this.state.polls_nametest === "") { - this.props.showNotification("请输入标题"); - return - } - - if (this.state.polls_descriptiontest.length > 100) { - - } - var pollid; - if (this.state.pollid === undefined) { - pollid = this.props.match.params.pollid; - } else { - pollid = this.state.pollid; - } - - - var url = `/polls/${pollid}.json`; - axios.put(url, { - polls_name: this.state.polls_nametest, - polls_description: this.state.polls_descriptiontest - }).then((result) => { - try { - // console.log(JSON.stringify(result)) - if (result.data.status === 0) { - // console.log("更新题目成功") - // this.props.showNotification("保存成功"); - this.props.history.push(`/courses/${this.props.match.params.coursesId}/polls/${pollid}/detail?tab=2`) - } - } catch (e) { - - } - }) - } - } - - cancelmodel = () => { - - this.setState({ - Modalstype: false, - Modalstopval: "", - ModalsBottomval: "", - }) - - } - savedelete = (question_type, index, item) => { - console.log("savedelete"); - this.handleClickByDelete(question_type, index, item); - this.setState({ - Modalstype: false, - Modalstopval: "", - ModalsBottomval: "", - }) - } - // 问题的类型,1单选题,2为多选题,3为主观题 - showDeleteConfirm = (question_type, index, item) => { - this.setState({ - Modalstype: true, - Modalstopval: "是否确认删除?", - ModalsBottomval: "", - ModalCancel: this.cancelmodel, - ModalSave: () => this.savedelete(question_type, index, item), - }) - - } - //必答选项 - onCheckAllChange = (e, index) => { - console.log("onCheckAllChange"); - console.log(e.target.checked); - // console.log(e.target.value); - let arr = this.state.adddom; - for (var i = 0; i < arr.length; i++) { - if (index === i) { - if (e.target.checked === true) { - arr[i].question.is_necessary = 1; - - } else { - arr[i].question.is_necessary = 0; - } - } - } - this.setState({ - adddom: arr - }) - } - - //重新编辑标题和须知 - adddomeditit = () => { - if (this.state.mysave === true) { - this.setState({ - mysave: false, - readOnlys: "readOnly", - storagedesc:this.state.polls_nametest, - storagedesctwo:this.state.polls_descriptiontest, - }) - } else if (this.state.mysave === false) { - this.setState({ - mysave: true, - readOnlys: "", - storagedesc:this.state.polls_nametest, - storagedesctwo:this.state.polls_descriptiontest, - }) - } - } - //取消保存 - onSaveExercisetwo = () => { - if (this.state.mysave === true) { - this.setState({ - mysave: false, - Newedit: false, - readOnlys: "readOnly", - polls_nametest:this.state.storagedesc, - polls_descriptiontest:this.state.storagedesctwo, - }) - } else { - this.setState({ - mysave: false, - Newedit: false, - readOnlys: "readOnly", - polls_nametest:this.state.storagedesc, - polls_descriptiontest:this.state.storagedesctwo, - }) - } - } - // 创建问卷 - onSaveExercise = () => { - if (this.state.Newedit === true) { - - if (this.state.polls_nametest === undefined || this.state.polls_nametest === "") { - this.props.showNotification(`请输入标题`); - return - } - let coursesId = this.props.match.params.coursesId; - const urlls = `/courses/${coursesId}/polls.json` - axios.post(urlls, { - polls_name: this.state.polls_nametest, - polls_description: this.state.polls_descriptiontest - }).then((result) => { - if (result === undefined) { - return; - } - this.state.Newedit === false; - this.props.showNotification(`问卷创建成功!`); - this.setState({ - pollid: result.data.data.id, - Newedit: false, - mysave: false, - readOnlys: "readOnly", - cancellation: false, - }) - - - }) - } else { - if (this.state.polls_nametest === undefined || this.state.polls_nametest === "") { - this.props.showNotification("请输入标题"); - return - } - - var pollid; - if (this.state.pollid === undefined) { - pollid = this.props.match.params.pollid; - } else { - pollid = this.state.pollid; - } - - - var url = `/polls/${pollid}.json`; - axios.put(url, { - polls_name: this.state.polls_nametest, - polls_description: this.state.polls_descriptiontest - }).then((result) => { - if (result !== undefined) { - this.props.showNotification(`问卷更新成功!`); - this.setState({ - mysave: false, - readOnlys: "readOnly", - }) - } - - }) - } - - } - - //试图 - render() { - let { - addonAfter, - user_permission, - polls_status, - Modalstype, - mysave, - readOnlys, - newoption, - cancellation, - } = this.state - //获取老师权限 - // console.log("[`${maps[polls_status && polls_status]}`]]"); - // console.log(polls_status); - // console.log([[`${maps[polls_status && polls_status]}`]] + ""); - - const IsAdmin = this.props.isAdmin(); - const {getFieldDecorator} = this.props.form; - const formItemLayout = { - labelCol: { - xs: {span: 24}, - // sm: { span: 8 }, - sm: {span: 24}, - }, - wrapperCol: { - xs: {span: 24}, - // sm: { span: 16 }, - sm: {span: 24}, - }, - }; - - const radioStyle = { - display: 'block', - height: '30px', - lineHeight: '30px', - }; - - // console.log(this.state.projects===undefined?"":this.state.projects.poll_questions) - var displaymysave = (mysave === true) ? "" : "display:none;"; - return ( -
- {/*提示*/} - {Modalstype && Modalstype === true ? : ""} -
-

- {this.props.coursedata.name} - > - 问卷 - > - {this.props.match.params.news === undefined ? "新建" : this.props.match.params.news === "new" ? "新建" : "编辑"} -

-
-

{this.props.match.params.news === undefined ? "新建问卷" : this.props.match.params.news === "new" ? "新建问卷" : "编辑问卷"}

- 返回 -
- - {/*
*/} -
-
- - -
-
*问卷标题 -
- { - this.props.match.params.news === undefined ? "" : this.props.match.params.news === "new" ? - ( - this.state.mysave === false ? - - : "") - : - - } - -
- - - -
-
- - -
问卷须知
- - - { - this.state.Newedit === true || this.state.mysave === true ? -
- - {cancellation === false ? - - : ""} - -
- : "" - } - -
- -
-

- - - { - this.state.mysingles + this.state.mydoubles + this.state.mymainsint === 0 ? "" : -

- - {this.state.mysingles === 0 ? "" : 单选题{this.state.mysingles === undefined ? "" : this.state.mysingles} 题} - - {this.state.mydoubles === 0 ? "" : - 多选题{this.state.mydoubles === undefined ? "" : this.state.mydoubles}题} - {this.state.mymainsint === 0 ? "" : - - 主观题{this.state.mymainsint === undefined ? "" : this.state.mymainsint}题 - - } - - - 合计 {this.state.mysingles === undefined ? "" : this.state.mydoubles === undefined ? "" : this.state.mymainsint === undefined ? "" : this.state.mysingles + this.state.mydoubles + this.state.mymainsint} -
- - } - -

-
- - {/*自动生成修改好的获取到的*/} - {/**************************************************************************/} - {this.state.poll_questions === undefined ? "" : this.state.poll_questions.map((item, index) => { - // console.log('打印this.state.poll_questions') - // console.log(item.question) - let resultDom; - resultDom =
-

- 第{index + 1}题: - {item.question.question_type === 1 ? "(单选题)" : item.question.question_type === 2 ? "(多选题)" : "(主观题)"} - {item.question.is_necessary === 1 ? "必答" : item.question.question_type === 2 ? "选答" : "选答"} - {(item.question.min_choices === undefined && item.question.max_choices === undefined ? "" : item.question.min_choices === null && item.question.max_choices === null ? "" : item.question.min_choices === 0 && item.question.max_choices === 0 ? "" : "可选" + item.question.min_choices + "-" + item.question.max_choices + "项")} - { - polls_status === undefined || polls_status === 1 ? - - this.showDeleteConfirm(item.question.question_type, index, item)}> - {index === 0 ? "" : - this.handleClickBySortUp(index, item)}>} - {index === this.state.poll_questions.length - 1 ? "" : - this.handleClickBySortDown(index, item)}>} - this.addMytopic(item.question.question_type, this.state.pollid, index + 1, true, item.question.id)}> - this.adddomedit(item)}> - : this.adddomedit(item)}> - } - -

-

{item.question.question_title}

- {/*
{item.question.question_title}
*/} - {item.question.question_type === 1 ? - ( - {item.question.answers === undefined ? "" : item.question.answers.map((items, i) => { - return ( -
- - {/*
{items.answer_text}
*/} - {/*
{items.answer_text}
*/} - {items.answer_text} - -
- ) - })} -
) - : item.question.question_type === 2 ? - ( - {item.question.answers === undefined ? "" : item.question.answers.map((items, i) => { - return ( -
- - {items.answer_text} - - {/*{items.answer_text}*/} -
- ) - })} -
) - : item.question.question_type === 3 ? (
) : (
)} -
- - return ( -
- {resultDom} -
- ) - })} - {/**************************************************************************/} - {/*编辑用的新增用的*/} - {/**************************************************************************/} - - {this.state.adddom === undefined ? "" : this.state.adddom.map((itemo, indexo) => { - // console.log('打印this.state.adddom') - // console.log(itemo.question) - let arrid = itemo.question.id; - let resultDomtwo; - resultDomtwo = -
- {itemo.question.question_type === 1 ? "单选题" : itemo.question.question_type === 2 ? "多选题" : "主观题"} - this.onCheckAllChange(e, indexo)} - className="lineh-40" - style={{"marginLeft": "20px"}}>必答 - - - - - {itemo.question.answers === undefined ? "" : itemo.question.answers.map((itemt, indext) => { - return ( -
- {itemt.answer_text === undefined ? ( -
) : itemt.answer_text === "其他" ? ( -

- 其它 - - - {polls_status === undefined || polls_status === 1 ? - this.deleteentrys(arrid, indext, true)}> - : ""} -

) : (

- 选项 - - - {polls_status === undefined || polls_status === 1 ? - this.deleteentrys(arrid, indext, false)}> - : ""} -

)} -
- ) - })} - -
- {itemo.question.question_type === 1 ? ( -
-
- {polls_status === undefined || polls_status === 1 ? - this.ewoption(itemo.question.id, itemo)}>新增选项 - - : ""} - {polls_status === undefined || polls_status === 1 ? - - (newoption === false ? - this.addanotheroption(itemo.question.id)}>新增其他选项 - : "") - : ""} - - this.deleteadddom(indexo)}>取消 - this.deleteadddomthree(indexo, itemo)}>保存 - this.deleteadddomtwo(indexo, itemo)}>保存并继续 - -
-
- - - ) - - - : itemo.question.question_type === 2 ? ( - //////////////////////////////////////////// 可选 -
-
-
- 可选 -
- {/*可选最小*/} - - - ~ - {/*可选最大*/} - - - (学生答题时,系统对其选择的选项个数进行限制,--表示不限制) -
- -
-
-
- ) - - : (
) - - } -
-
- {itemo.question.question_type === 2 ? - ( - polls_status === undefined || polls_status === 1 ? -
- -
this.ewoption(itemo.question.id, itemo)}>新增选项 - - { - newoption === false ? this.addanotheroption(itemo.question.id)}>新增其他选项 : "" - } - -
- - - - this.deleteadddom(indexo)}>取消 - this.deleteadddomthree(indexo, itemo)}>保存 - this.deleteadddomtwo(indexo, itemo)}>保存并继续 - -
- - - : "" - ) - - : itemo.question.question_type === 3 ? -
- - this.deleteadddom(indexo)}>取消 - this.deleteadddomthree(indexo, itemo)}>保存 - this.deleteadddomtwo(indexo, itemo)}>保存并继续 - -
- : - ""} - - -
-
- - - return ( -
- {resultDomtwo} -
- ) - })} - {/**************************************************************************/} - - {polls_status === undefined || polls_status === 1 ? -
- { - this.props.match.params.news === "new" ? - this.state.Newedit === false ? -
-
- -
- this.addmysingles()}>单选题 - this.addmydoubles()}>多选题 - this.addmymainsint()}>主观题 -
-
- - : "" - : -
-
-
- this.addmysingles()}>单选题 - this.addmydoubles()}>多选题 - this.addmymainsint()}>主观题 -
-
- } -
- :
} -
- { - this.props.match.params.news === "new" ? - (this.state.Newedit === false ? -
-
  • - this.submitQuestionnaire()}>提交 - this.props.history.goBack()}>取消 -
  • - - -
    - - : "") - : -
    -
  • - this.submitQuestionnaire()}>提交 - this.props.history.goBack()}>取消 -
  • -
    - } - - {/**/} -
    -
    -
    - ) - } - -} - -const WrappedPollNew = Form.create({name: 'taskPollNew'})(PollNew); -// RouteHOC() +import React, {Component} from "react"; +import {Form, Input, Tooltip, Checkbox, Radio, Select, message, Modal, Button} from 'antd' +import {WordsBtn, ActionBtn} from 'educoder' +import '../css/members.css' +import "../common/formCommon.css" + +import './pollStyle.css' +import '../css/Courses.css' +import axios from 'axios' +import moment from "../new/CoursesNew"; +import Modals from "../../modals/Modals"; + + +const TextArea = Input.TextArea +const RadioGroup = Radio.Group +const CheckboxGroup = Checkbox.Group +const Option = Select.Option; +const maps = {1: "未发布", 2: "提交中", 3: "已截止"} +const confirm = Modal.confirm; + +class PollNew extends Component { + // 问卷新建和编辑 + // + // * addonAfter 字数限制 + // * q_counts 题目总数 + // * mysingles 单选题数量 + // * mydoubles 多选题数量 + // * mymainsint 主观题数量 + // * adddom 添加编辑的数据 页面点击新增题目 + // * editentry 编辑条目 新增的题目点击到条目中 + //* questionnair 问卷是否存在 默认不存在 + // * + + constructor(props) { + super(props); + this.state = { + visible: false, + poll_questions: [], + user_permission: "", + addonAfter: 60, + addonAftertwo: 100, + mysingles: 0, + mydoubles: 0, + mymainsint: 0, + adddom: [], + editentry: [], + questionnair: false, + polls_name: undefined, + polls_nametest: "", + polls_description: "", + polls_descriptiontest: "", + storagedesc:"", + storagedesctwo:"", + coursesId: "", + pollid: undefined, + polls_status: undefined, + q_countst: 0, + Newedit: true, + Insertposition: undefined, + Modalstype: false, + mysave: false, + readOnlys: "readOnly", + problemtopic: null, + problemtopicbool: false, + newoption: false, + cancellation: false, + } + // console.log("试卷新建和编辑"); + // console.log(JSON.stringify(props)); + + } + + changeTopicName = (e) => { + let num = 60 - parseInt(e.target.value.length); + this.setState({ + addonAfter: num < 0 ? 0 : num + }) + this.setState({ + polls_nametest: e.target.value + }) + } + + + changeTopicNametwo = (e) => { + // console.log("获取的值" + e.target.value); + let num = 100 - parseInt(e.target.value.length); + this.setState({ + addonAftertwo: num < 0 ? 0 : num + }) + this.setState({ + polls_descriptiontest: e.target.value + }) + } + + // 初始化数据 + componentDidMount = () => { + console.log("componentDidMount 50") + if (this.props.match.params.news !== undefined) { + if (this.props.match.params.news === "new") { + this.state.Newedit === true; + this.setState({ + Newedit: true, + mysave: true, + readOnlys: "", + cancellation: true, + }) + } else { + this.Initializatio_data(); + this.state.Newedit === false; + this.setState({ + Newedit: false, + mysave: false, + readOnlys: "readOnly", + }) + } + } + + + // this.getPollInfo(); + + } + //获取权限 + // getPollInfo(){ + // // console.log(this.props.match); + // let pollId=this.props.match.params.pollId; + // let url=`/polls/${pollId}/common_header.json` + // axios.get(url).then((result)=>{ + // if(result.status==200){ + // this.setState({ + // pollDetail:result.data, + // user_permission:result.data.user_permission + // }) + // } + // }).catch((error)=>{ + // console.log(error); + // }) + // } + //初始化请求网络 + Initializatio_data = () => { + console.log("Initializatio_data 582") + //课堂id + let coursesId = this.props.match.params.coursesId; + //时间id + let pollid = this.props.match.params.pollid; + console.log(pollid); + // let coursesId = 557; + if (pollid === undefined) { + // console.log("没有问卷新建问卷~~~") + // let coursesId=this.props.match.params.coursesId; + // // to={`/courses/${coursesId}/polls/new`} + // + // const urll = `/courses/${coursesId}/polls/new.json` + // axios.get(urll).then((result) => { + // if (result.status === 200) { + // console.log(urll) + // console.log("问卷新建成功") + // console.log(JSON.stringify(result)) + // // var path=`/courses/${coursesId}/polls/new`; + // // + // // this.props.history.push({ pathname: path, state: { } }); + // } + // }).catch((error) => { + // console.log(error) + // }) + + // const urlls = `/courses/${coursesId}/polls.json` + // axios.post(urlls,{ + // polls_name: "这是标题", + // polls_description:"这是标题须知" + // }).then((result)=>{ + // console.log("创建问卷++++++") + // console.log(result) + // try { + // if(result.data.status===0){ + // console.log("创建问卷") + // console.log(JSON.stringify(result.data)) + // } + // }catch (e) { + // + // } + // + // }) + //没有问卷 + this.setState({ + projects: [], + polls_name: "", + polls_description: "", + poll_questions: [], + question_types: [], + pollid: undefined, + mysingles: 0, + mydoubles: 0, + mymainsint: 0, + polls_nametest: "", + polls_descriptiontest: "", + coursesId: 0, + questionnair: false + }) + } else { + const url = `/polls/${pollid}/edit.json`; + axios.get(url).then((result) => { + if (result !== undefined) + + // console.log("有问卷~~~") + // if (result.status === 200) { + // console.log(JSON.stringify(result.data)) + this.props.form.setFieldsValue({ + polls_nametest: result.data.poll.polls_name, + polls_descriptiontest: result.data.poll.polls_description, + }); + this.setState({ + projects: result.data, + pollid: pollid, + polls_status: result.data.poll.polls_status, + polls_name: result.data.poll.polls_name, + polls_description: result.data.poll.polls_description, + poll_questions: result.data.poll_questions, + question_types: result.data.question_types, + mysingles: result.data.question_types.q_singles, + mydoubles: result.data.question_types.q_doubles, + mymainsint: result.data.question_types.q_mains, + polls_nametest: result.data.poll.polls_name, + polls_descriptiontest: result.data.poll.polls_description, + questionnair: true, + }) + console.log(this.state.polls_nametest) + console.log(this.state.polls_descriptiontest) + // } + }).catch((error) => { + console.log(error) + }) + } + + } + + //重新获取数据 + thisinitializationdatanew = () => { + var pollidsy = null; + if (this.state.pollid !== undefined) { + pollidsy = this.state.pollid; + if (pollidsy === null || pollidsy === undefined) { + pollidsy = this.props.match.params.pollid; + } + } + + if (pollidsy === null || pollidsy === undefined) { + return + } + + const url = `/polls/${pollidsy}/edit.json`; + axios.get(url).then((result) => { + if (result !== undefined) + + // console.log("有问卷~~~") + // if (result.status === 200) { + // console.log(JSON.stringify(result.data)) + this.setState({ + projects: result.data, + pollid: pollidsy, + polls_status: result.data.poll.polls_status, + polls_name: result.data.poll.polls_name, + polls_description: result.data.poll.polls_description, + poll_questions: result.data.poll_questions, + question_types: result.data.question_types, + mysingles: result.data.question_types.q_singles, + mydoubles: result.data.question_types.q_doubles, + mymainsint: result.data.question_types.q_mains, + polls_nametest: result.data.poll.polls_name, + polls_descriptiontest: result.data.poll.polls_description, + questionnair: true, + }) + + // } + }).catch((error) => { + console.log(error) + }) + } + //新建问卷 + newword = () => { + if (this.state.polls_nametest === undefined || this.state.polls_nametest === "") { + this.props.showNotification(`请输入标题`); + return + } + let coursesId = this.props.match.params.coursesId; + const urlls = `/courses/${coursesId}/polls.json` + axios.post(urlls, { + polls_name: this.state.polls_nametest, + polls_description: this.state.polls_descriptiontest + }).then((result) => { + if (result.data.status === 0) { + this.state.Newedit === false; + // this.props.showNotification(`试卷创建成功`); + this.setState({ + pollid: result.data.data.id, + Newedit: false, + }) + this.props.history.push(`/courses/${this.props.match.params.coursesId}/polls/${result.data.data.id}/detail?tab=2`) + } + }) + } + //添加单选题目 + addmysingles = () => { + + if (this.state.newoption === true) { + this.setState({ + newoption: false + }) + } + + var Insertposition = this.state.poll_questions.length; + // console.log(JSON.stringify(this.state.poll_questions)); + for (var i = 0; i < this.state.poll_questions.length; i++) { + if (this.state.poll_questions[i].question.question_type === 1) { + Insertposition = i; + } + + } + this.addMytopic(1, this.state.pollid, Insertposition, false, 0); + // } + } + + //添加多选题目 + addmydoubles = () => { + console.log("addmymainsint 70") + if (this.state.newoption === true) { + this.setState({ + newoption: false + }) + } + + var Insertposition = this.state.poll_questions.length; + // console.log(JSON.stringify(this.state.poll_questions)); + for (var i = 0; i < this.state.poll_questions.length; i++) { + if (this.state.poll_questions[i].question.question_type === 2) { + Insertposition = i; + } + + + } + this.addMytopic(2, this.state.pollid, Insertposition, false, 0); + + // } + } + + //添加主观题目 + addmymainsint = () => { + + var Insertposition = this.state.poll_questions.length; + // console.log(JSON.stringify(this.state.poll_questions)); + for (var i = 0; i < this.state.poll_questions.length; i++) { + if (this.state.poll_questions[i].question.question_type === 3) { + Insertposition = i; + } + + + } + + this.addMytopic(3, this.state.pollid, Insertposition, false, 0); + // } + } + + //编辑方法 + adddomedit = (object) => { + console.log("adddomedit 76"); + if (this.state.q_countst > 0) { + this.props.showNotification(`不能同时编辑两题`); + + return; + } + var anserbool = false; + this.setState({ + q_countst: 1, + }) + window.scrollTo(0, this.refs.targetElement.offsetTop) + let {adddom} = this.state; + // var arr =new Object(objects); + // console.log(arr) + // adddom.push(arr); + var question = {}; + var Insertposition = this.state.poll_questions.length; + if (object.question.question_type === 1) { + var answers = []; + var questiontwo = {}; + ///////////////////////////daying + for (var y = 0; y < object.question.answers.length; y++) { + var answerstwo; + if (object.question.answers[y].answer_text === "其他") { + answerstwo = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + anserbool = true; + } else { + answerstwo = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + } + answers.push(answerstwo); + + + } + // 插入单选题 + questiontwo = { + // "id": this.state.poll_questions[arr.length - 1].question.id + 1 + arrr.length, + "id": object.question.id, + "is_necessary": object.question.is_necessary, + "question_number": 1, + "question_title": object.question.question_title, + "question_type": 1, + "new": "", + "answers": answers + }; + question = {"question": questiontwo}; + adddom.push(question); + for (var i = 0; i < this.state.poll_questions.length; i++) { + if (this.state.poll_questions[i].question.question_type === 1) { + Insertposition = i; + } + } + } else if (object.question.question_type === 2) { + //插入多选题 + var answers = []; + var questiontwo = {}; + + for (var y = 0; y < object.question.answers.length; y++) { + if (object.question.answers[y].answer_text === "其他") { + answerstwo = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + anserbool = true; + } else { + answerstwo = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + } + answers.push(answerstwo); + } + questiontwo = { + "id": object.question.id, + "is_necessary": object.question.is_necessary, + "question_number": 2, + "question_title": object.question.question_title, + "question_type": 2, + "max_choices": object.question.max_choices, + "min_choices": object.question.min_choices, + "new": "", + "answers": answers + }; + question = {"question": questiontwo}; + adddom.push(question); + for (var i = 0; i < this.state.poll_questions.length; i++) { + if (this.state.poll_questions[i].question.question_type === 2) { + Insertposition = i; + } + } + } else if (object.question.question_type === 3) { + //插入主观题 + var answers = []; + var questiontwo = {}; + + if (object.question.answers.length > 0) { + for (var y = 0; y < object.question.answers.length; y++) { + var answerstwo; + if (object.question.answers[y].answer_text === "其他") { + answerstwo = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + } else { + answerstwo = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + } + answers.push(answerstwo); + } + } + questiontwo = { + "id": object.question.id, + "is_necessary": object.question.is_necessary, + "question_number": 3, + "question_title": object.question.question_title, + "question_type": 3, + "new": "", + "answers": answers + }; + question = {"question": questiontwo}; + adddom.push(question); + for (var i = 0; i < this.state.poll_questions.length; i++) { + if (this.state.poll_questions[i].question.question_type === 3) { + Insertposition = i; + } + } + } + this.setState({ + adddom: adddom, + newoption: anserbool, + Insertposition: Insertposition + }) + + } + + //新增添加题目 有new + addMytopic = (index, pollid, Insertposition, Whether, id) => { + //Whether 是否插入 + // console.log("id") + // console.log(id) + // console.log("Whether") + // console.log(Whether) + console.log("addMytopic 90") + if (this.state.q_countst > 0) { + this.props.showNotification(`不能同时编辑两题`); + + return; + } + this.state.Insertposition = Insertposition; + var Whethername = null; + if (Whether === true) { + Whethername = id; + } + this.setState({ + Insertposition: Insertposition, + q_countst: 1, + }) + window.scrollTo(0, this.refs.targetElement.offsetTop) + var arrr = this.state.adddom; + let newarrr = [...arrr]; + + var arr = this.state.poll_questions; + let newarr = [...arr]; + + if (newarr.length > 0) { + if (index === 1) { + // 插入单选题 + // console.log(this.state.poll_questions[newarr.length - 1].question.id); + var question = {} + var questiontwo = { + // "id": this.state.poll_questions[arr.length - 1].question.id + 1 + arrr.length, + "id": this.state.poll_questions[newarr.length - 1].question.id + 1, + "is_necessary": 1, + "question_number": 1, + "question_title": "", + "question_type": 1, + "new": "new", + "answers": [ + {"answer_id": 1, "answer_position": 1, "answer_text": ""}, + {"answer_id": 2, "answer_position": 2, "answer_text": ""}, + {"answer_id": 3, "answer_position": 3, "answer_text": ""}, + {"answer_id": 4, "answer_position": 4, "answer_text": ""}, + // {"answer_id": 5, "answer_position": 5, "answer_text": "其他"}, + ] + }; + question = {"question": questiontwo}; + newarrr.push(question); + + this.setState({ + adddom: newarrr, + problemtopic: Whethername, + problemtopicbool: Whether, + }) + + } else if (index === 2) { + //插入多选题 + var question = {} + var questiontwo = { + "id": this.state.poll_questions[newarr.length - 1].question.id + 1, + "is_necessary": 1, + "question_number": 2, + "question_title": "", + "question_type": 2, + "max_choices": 0, + "min_choices": 0, + "new": "new", + "answers": [ + {"answer_id": 1, "answer_position": 1, "answer_text": ""}, + {"answer_id": 2, "answer_position": 2, "answer_text": ""}, + {"answer_id": 3, "answer_position": 3, "answer_text": ""}, + {"answer_id": 4, "answer_position": 4, "answer_text": ""}, + // {"answer_id": 5, "answer_position": 5, "answer_text": "其他"}, + ] + }; + question = {"question": questiontwo}; + newarrr.push(question); + + this.setState({ + adddom: newarrr, + problemtopic: Whethername, + problemtopicbool: Whether, + }) + + } else if (index === 3) { + //插入主观题 + // console.log(this.state.poll_questions[newarr.length - 1].question.id); + var question = {} + var questiontwo = { + "id": this.state.poll_questions[newarr.length - 1].question.id + 1, + "is_necessary": 1, + "question_number": 3, + "question_title": "", + "question_type": 3, + "new": "new", + "answers": [] + }; + question = {"question": questiontwo}; + newarrr.push(question); + this.setState({ + adddom: newarrr, + problemtopic: Whethername, + problemtopicbool: Whether, + }) + + } + } else { + /////上面视图全部删除后 要加载的 + if (index === 1) { + // 插入单选题 + var id; + try { + id = this.state.poll_questions[newarr.length - 1].question.id + 1 + } catch (e) { + id = 1; + } + var questiontwo = { + // "id": this.state.poll_questions[arr.length - 1].question.id + 1 + arrr.length, + "id": id, + "is_necessary": 1, + "question_number": 1, + "question_title": "", + "question_type": 1, + "new": "new", + "answers": [ + {"answer_id": 1, "answer_position": 1, "answer_text": ""}, + {"answer_id": 2, "answer_position": 2, "answer_text": ""}, + {"answer_id": 3, "answer_position": 3, "answer_text": ""}, + {"answer_id": 4, "answer_position": 4, "answer_text": ""}, + // {"answer_id": 5, "answer_position": 5, "answer_text": "其他"}, + ] + }; + question = {"question": questiontwo}; + newarrr.push(question); + + this.setState({ + adddom: newarrr, + problemtopic: Whethername, + problemtopicbool: Whether, + }) + + } else if (index === 2) { + //插入多选题 + var id; + try { + id = this.state.poll_questions[newarr.length - 1].question.id + 1 + } catch (e) { + id = 1; + } + var questiontwo = { + "id": id, + "is_necessary": 1, + "question_number": 2, + "question_title": "", + "question_type": 2, + "max_choices": 0, + "min_choices": 0, + "new": "new", + "answers": [ + {"answer_id": 1, "answer_position": 1, "answer_text": ""}, + {"answer_id": 2, "answer_position": 2, "answer_text": ""}, + {"answer_id": 3, "answer_position": 3, "answer_text": ""}, + {"answer_id": 4, "answer_position": 4, "answer_text": ""}, + // {"answer_id": 5, "answer_position": 5, "answer_text": "其他"}, + ] + }; + question = {"question": questiontwo}; + newarrr.push(question); + + this.setState({ + adddom: newarrr, + problemtopic: Whethername, + problemtopicbool: Whether, + }) + + } else if (index === 3) { + //插入主观题 + var id; + try { + id = this.state.poll_questions[newarr.length - 1].question.id + 1 + } catch (e) { + id = 1; + } + var questiontwo = { + "id": id, + "is_necessary": 1, + "question_number": 3, + "question_title": "", + "question_type": 3, + "new": "new", + "answers": [] + }; + question = {"question": questiontwo}; + newarrr.push(question); + this.setState({ + adddom: newarrr, + problemtopic: Whethername, + problemtopicbool: Whether, + }) + } + } + } + + //删除指定条目 + deleteadddom = (indexo) => { + console.log("deleteadddom 259") + var arr = this.state.adddom; + let newarr = [...arr]; + + newarr.splice(indexo, 1); + this.setState({ + adddom: newarr, + q_countst: 0, + problemtopic: null, + problemtopicbool: false, + }) + } + //保存并继续 + //保存并继续,即提交本题的新建并继续创建一个相同的题(该新题处于编辑模式,题目和选项不要清空) + deleteadddomtwo = (indexo, object) => { + var thiss = this; + this.setState({ + q_countst: 1, + }) + var poll_questionslength = this.state.poll_questions.length; + // console.log("deleteadddomtwo|||||||||||||||||||||||||||||||||||||||||\\"); + // console.log(indexo); + // console.log(object); + // console.log(object.question.question_type); + let arr = this.state.adddom; + let arrpoll = this.state.poll_questions; + let newarr = [...arr]; + let newarrpoll = [...arrpoll]; + + //选项内容不能为空 + let max = 0; + let maxtie = newarr[indexo].question.answers.length; + for (var k = 0; k < newarr[indexo].question.answers.length; k++) { + try { + if (newarr[indexo].question.answers[k].answer_text != undefined) { + if (newarr[indexo].question.answers[k].answer_text === "") { + max = max + 1; + } + } + } catch (e) { + console.log("PollNew281") + console.log(e) + } + } + if (newarr[indexo].question.question_title === "") { + this.props.showNotification(`题目不能为空`); + + return + } + if (max > 0) { + if (object.question.question_type === 1) { + this.props.showNotification(`选项内容不能为空`); + + return + } else if (object.question.question_type === 2) { + this.props.showNotification(`选项内容不能为空`); + + return + } + + } + if (maxtie < 2) { + if (object.question.question_type === 1) { + this.props.showNotification(`选项不能少于2个!`); + + return + } else if (object.question.question_type === 2) { + this.props.showNotification(`选项不能少于2个!`); + + return + } + + + } + + if (object.question.question_type === 2) { + if (object.question.max_choices > 0) { + if (object.question.min_choices < 2) { + this.props.showNotification(`可选最小不能少于2个`); + + return; + + } + } + + } + if (object.question.new === "new") { + // 根据数组里面的new 来确定是否是新增还是 修改 + //添加道数组上 + //不能共用数组 所以自己写个新数组 然后push 上面卷子中 + var question = {}; + if (object.question.question_type === 1) { + + var questiontwo = {}; + var other = []; + var option = []; + var answerstwos = []; + var answerstwoss = []; + ///////////////////////////daying + // 这个是装选项和其他的 + for (var y = 0; y < object.question.answers.length; y++) { + if (object.question.answers[y].answer_text === "其他") { + var dataone = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + other.push(object.question.answers[y].answer_text); + answerstwos.push(dataone); + } else { + var datatwo = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + option.push(object.question.answers[y].answer_text) + answerstwoss.push(datatwo); + } + + + } + + var arrc = option.concat(other); + var answers = answerstwoss.concat(answerstwos); + // 插入单选题 + // var id + // try { + // id = newarrpoll[newarrpoll.length - 1].question.id + 1; + // } catch (e) { + // id = 1; + // } + questiontwo = { + // "id": this.state.poll_questions[arr.length - 1].question.id + 1 + arrr.length, + "id": null, + "is_necessary": object.question.is_necessary, + "question_number": 1, + "question_title": object.question.question_title, + "question_type": 1, + "new": "", + "answers": answers + }; + question = {"question": questiontwo}; + var insindex = null; + // if (poll_questionslength !== thiss.state.Insertposition) { + // insindex = newarrpoll[thiss.state.Insertposition].question.id; + // } + if (this.state.problemtopicbool === true) { + insindex = this.state.problemtopic; + } + this.createquestionsandanswers(object, 1, arrc, null, 0, 0, insindex); + // newarrpoll.push(question); + newarrpoll.splice(thiss.state.Insertposition, 0, question); + + } else if (object.question.question_type === 2) { + //插入多选题 + if (object.question.max_choices < object.question.min_choices) { + this.props.showNotification(`可选的最大限制不能小于最小限制`); + + return; + } + + var questiontwo = {}; + var other = []; + var option = []; + var answerstwos = []; + var answerstwoss = []; + for (var y = 0; y < object.question.answers.length; y++) { + if (object.question.answers[y].answer_text === "其他") { + var dataone = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + other.push(object.question.answers[y].answer_text); + answerstwos.push(dataone); + } else { + var datatwo = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + option.push(object.question.answers[y].answer_text) + answerstwoss.push(datatwo); + } + } + var arrc = option.concat(other); + var answers = answerstwoss.concat(answerstwos); + // var id + // try { + // id = newarrpoll[newarrpoll.length - 1].question.id + 1; + // } catch (e) { + // id = 1; + // } + questiontwo = { + "id": null, + "is_necessary": object.question.is_necessary, + "question_number": 2, + "question_title": object.question.question_title, + "question_type": 2, + "max_choices": object.question.max_choices, + "min_choices": object.question.min_choices, + "new": "", + "answers": answers + }; + question = {"question": questiontwo}; + var insindex = null; + if (this.state.problemtopicbool === true) { + insindex = this.state.problemtopic; + } + this.createquestionsandanswers(object, 2, arrc, null, object.question.max_choices, object.question.min_choices, insindex); + //插入多选题 + // if (object.question.max_choices > arrc.length) { + // // console.log("选择题的最大可选项不能大于选项数") + // this.props.showNotification(`选择题的最大可选项不能大于选项数`); + // + // return; + // } + // if (object.question.min_choices === 0) { + // // console.log("选择题的最大可选项不能小于2项目") + // this.props.showNotification(`选择题的最大可选项不能小于2项目`); + // + // return; + // + // } + // newarrpoll.push(question); + newarrpoll.splice(thiss.state.Insertposition, 0, question); + } else if (object.question.question_type === 3) { + //插入主观题 + var answers = []; + var questiontwo = {}; + var answerstwos = []; + var answerstwoss = []; + if (object.question.answers.length > 0) { + for (var y = 0; y < object.question.answers.length; y++) { + var answerstwo; + if (object.question.answers[y].answer_text === "其他") { + var dataone = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + answerstwos.push(dataone); + } else { + var datatwo = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + answerstwoss.push(datatwo); + } + } + } + + answers = answerstwoss.concat(answerstwos); + // var id + // try { + // id = newarrpoll[newarrpoll.length - 1].question.id + 1; + // } catch (e) { + // id = 1; + // } + questiontwo = { + "id": null, + "is_necessary": object.question.is_necessary, + "question_number": 3, + "question_title": object.question.question_title, + "question_type": 3, + "new": "", + "answers": answers + }; + question = {"question": questiontwo}; + // var insindex = null; + // if (poll_questionslength !== thiss.state.Insertposition) { + // insindex = newarrpoll[thiss.state.Insertposition].question.id; + // } + //主观题不需要可选选项 + var insindex = null; + if (this.state.problemtopicbool === true) { + insindex = this.state.problemtopic; + } + this.createquestionsandanswers(object, 3, null, null, 0, 0, insindex); + // newarrpoll.push(question); + newarrpoll.splice(thiss.state.Insertposition, 0, question); + } + //////////////////////////////////////////////////////////////////////////////////////////////////// 上面是新增 + } else { + ///////////////////////////////////////////////////////////////////////////////////////////////////修改点了编辑 + console.log("点了编辑") + var uuk = -1 + //这个地方判断 点了编辑上面题目又把他删除了 保存的时候就只能是插入新增了 + for (var uk = 0; uk < newarrpoll.length; uk++) { + if (object.question.id === newarrpoll[uk].question.id) { + uuk = uk; + } + } + + + var question = {}; + if (object.question.question_type === 1) { + var questiontwo = {}; + var other = []; + var option = []; + var answerstwos = []; + var answerstwoss = []; + ///////////////////////////daying + //这个装选项和其他的 + for (var y = 0; y < object.question.answers.length; y++) { + if (object.question.answers[y].answer_text === "其他") { + var dataone = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + other.push(object.question.answers[y].answer_text); + answerstwos.push(dataone); + } else { + var datatwo = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + option.push(object.question.answers[y].answer_text) + answerstwoss.push(datatwo); + } + + + } + var arrc = option.concat(other); + var answers = answerstwoss.concat(answerstwos); + // 插入单选题 + questiontwo = { + // "id": this.state.poll_questions[arr.length - 1].question.id + 1 + arrr.length, + "id": object.question.id, + "is_necessary": object.question.is_necessary, + "question_number": 1, + "question_title": object.question.question_title, + "question_type": 1, + "new": "", + "answers": answers + }; + question = {"question": questiontwo}; + if (uuk !== -1) { + // console.log("修改") + this.edittotheserver(object, 1, arrc, null, 0, 0); + newarrpoll.splice(uuk, 1, question); + } else { + // console.log("他原来的删除掉了") + this.createquestionsandanswers(object, 1, arrc, null, 0, 0, object.question.id); + newarrpoll.push(question); + } + newarr[indexo].question.new = "new" + // console.log(newarrpoll) + } else if (object.question.question_type === 2) { + //插入多选题 + + if (object.question.max_choices < object.question.min_choices) { + this.props.showNotification('可选的最大限制不能小于最小限制!'); + + return; + } + var questiontwo = {}; + var other = []; + var option = []; + var answerstwos = []; + var answerstwoss = []; + for (var y = 0; y < object.question.answers.length; y++) { + if (object.question.answers[y].answer_text === "其他") { + var dataone = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + other.push(object.question.answers[y].answer_text); + answerstwos.push(dataone); + } else { + var datatwo = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + option.push(object.question.answers[y].answer_text) + answerstwoss.push(datatwo); + } + } + var arrc = option.concat(other); + var answers = answerstwoss.concat(answerstwos); + questiontwo = { + "id": object.question.id, + "is_necessary": object.question.is_necessary, + "question_number": 2, + "question_title": object.question.question_title, + "question_type": 2, + "max_choices": object.question.max_choices, + "min_choices": object.question.min_choices, + "new": "", + "answers": answers + }; + question = {"question": questiontwo}; + //插入多选题 + // if (object.question.max_choices > arrc.length) { + // // console.log("选择题的最大可选项不能大于答案数") + // this.props.showNotification('选择题的最大可选项不能大于选项数!'); + // + // return; + // } + // if (object.question.min_choices === 0) { + // // console.log("选择题的最大可选项不能小于2项目") + // this.props.showNotification('选择题的最大可选项不能小于2项目!'); + // + // return; + // + // } + if (uuk !== -1) { + console.log("修改") + this.edittotheserver(object, 2, arrc, null, object.question.max_choices, object.question.min_choices); + newarrpoll.splice(uuk, 1, question); + } else { + console.log("删除") + this.createquestionsandanswers(object, 2, arrc, null, object.question.max_choices, object.question.min_choices, object.question.id); + newarrpoll.push(question); + } + console.log(newarrpoll) + newarr[indexo].question.new = "new" + } else if (object.question.question_type === 3) { + //插入主观题 + var answers = []; + var questiontwo = {}; + + if (object.question.answers.length > 0) { + for (var y = 0; y < object.question.answers.length; y++) { + var answerstwo; + if (object.question.answers[y].answer_text === "其他") { + answerstwo = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + } else { + answerstwo = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + } + answers.push(answerstwo); + } + } + questiontwo = { + "id": object.question.id, + "is_necessary": object.question.is_necessary, + "question_number": 3, + "question_title": object.question.question_title, + "question_type": 3, + "new": "", + "answers": answers + }; + question = {"question": questiontwo}; + + if (uuk !== -1) { + console.log("修改") + this.edittotheserver(object, 3, null, null, 0, 0); + newarrpoll.splice(uuk, 1, question); + } else { + console.log("删除") + this.createquestionsandanswers(object, 3, null, null, 0, 0, object.question.id); + newarrpoll.push(question); + } + console.log(newarrpoll) + newarr[indexo].question.new = "new" + } + + } + + + //添加到上面列表中 + //改变题目总数 + if (object.question.question_type === 1) { + //单选题 + this.state.mysingles = this.state.mysingles + 1; + } else if (object.question.question_type === 2) { + //多选题 + this.state.mydoubles = this.state.mydoubles + 1; + } else if (object.question.question_type === 3) { + //主观题 + this.state.mymainsint = this.state.mymainsint + 1; + + } + this.setState({ + // poll_questions: newarrpoll, + adddom: newarr, + problemtopic: null, + problemtopicbool: false, + // mysingles: this.state.mysingles, + // mydoubles: this.state.mydoubles, + // mymainsint: this.state.mymainsint + }) + + } + + + //保存 后期可以考虑和保存并继续 合并 + //保存,即完成新建并退出本题编辑 + // indexo 第几个数组 + //object 单个数组数据 + deleteadddomthree = (indexo, object) => { + // console.log("deleteadddom 349") + var thiss = this; + let arr = this.state.adddom; + let arrpoll = this.state.poll_questions; + let newarr = [...arr]; + let newarrpoll = [...arrpoll]; + var poll_questionslength = this.state.poll_questions.length; //获取单前问题最大长度 + //选项内容不能为空 + let max = 0; + let maxtie = newarr[indexo].question.answers.length; + //判断选项值是否不为空 + for (var k = 0; k < newarr[indexo].question.answers.length; k++) { + try { + if (newarr[indexo].question.answers[k].answer_text != undefined) { + if (newarr[indexo].question.answers[k].answer_text === "") { + max = max + 1; + } + } + } catch (e) { + // console.log("PollNew281") + // console.log(e) + } + } + if (newarr[indexo].question.question_title === "") { + this.props.showNotification('题目不能为空!'); + return + } + if (max > 0) { + if (object.question.question_type === 1) { + this.props.showNotification('选项内容不能为空!'); + return + } else if (object.question.question_type === 2) { + this.props.showNotification('选项内容不能为空!'); + return + } + + } + if (maxtie < 2) { + if (object.question.question_type === 1) { + this.props.showNotification('选项不能少于2个!'); + return + } else if (object.question.question_type === 2) { + this.props.showNotification('选项不能少于2个!'); + return + } + + + } + + if (object.question.question_type === 2) { + if (object.question.max_choices > 0) { + if (object.question.min_choices < 2) { + this.props.showNotification(`可选最小不能少于2个`); + return; + } + } + } + if (object.question.new === "new") { + ///////////////////////////////////////////////////////////////////新增模式 + // 根据数组里面的new 来确定是否是新增还是 修改 + //添加道数组上 + //不能共用数组 所以自己写个新数组 然后push 上面卷子中 + var question = {}; + if (object.question.question_type === 1) { + var questiontwo = {}; + var other = []; + var option = []; + var answerstwos = []; + var answerstwoss = []; + ///////////////////////////daying + // 这个是装选项和其他的 + for (var y = 0; y < object.question.answers.length; y++) { + if (object.question.answers[y].answer_text === "其他") { + var dataone = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + other.push(object.question.answers[y].answer_text); + answerstwos.push(dataone); + } else { + var datatwo = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + option.push(object.question.answers[y].answer_text) + answerstwoss.push(datatwo); + } + } + var arrc = option.concat(other); + var answers = answerstwoss.concat(answerstwos); + // 插入单选题' + // var id; + // try { + // id = newarrpoll[newarrpoll.length - 1].question.id + 1 + // } catch (e) { + // id = 1; + // } + questiontwo = { + // "id": this.state.poll_questions[arr.length - 1].question.id + 1 + arrr.length, + "id": null, + "is_necessary": object.question.is_necessary, + "question_number": 1, + "question_title": object.question.question_title, + "question_type": 1, + "new": "", + "answers": answers + }; + question = {"question": questiontwo}; + //获取指定id 号 用来插入,如果不是就是在最后添加 + + //执行新增操作 + var insindex = null; + if (this.state.problemtopicbool === true) { + insindex = this.state.problemtopic; + } + this.createquestionsandanswers(object, 1, arrc, null, 0, 0, insindex); + newarrpoll.splice(thiss.state.Insertposition, 0, question); + } else if (object.question.question_type === 2) { + //插入多选题 + if (object.question.max_choices < object.question.min_choices) { + this.props.showNotification(`可选的最大限制不能小于最小限制`); + + return; + } + + var questiontwo = {}; + var other = []; + var option = []; + var answerstwos = []; + var answerstwoss = []; + for (var y = 0; y < object.question.answers.length; y++) { + if (object.question.answers[y].answer_text === "其他") { + var dataone = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + other.push(object.question.answers[y].answer_text); + answerstwos.push(dataone); + } else { + var datatwo = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + option.push(object.question.answers[y].answer_text) + answerstwoss.push(datatwo); + } + } + var arrc = option.concat(other); + var answers = answerstwoss.concat(answerstwos); + + questiontwo = { + "id": null, + "is_necessary": object.question.is_necessary, + "question_number": 2, + "question_title": object.question.question_title, + "question_type": 2, + "max_choices": object.question.max_choices, + "min_choices": object.question.min_choices, + "new": "", + "answers": answers + }; + question = {"question": questiontwo}; + + var insindex = null; + if (this.state.problemtopicbool === true) { + insindex = this.state.problemtopic; + } + this.createquestionsandanswers(object, 2, arrc, null, object.question.max_choices, object.question.min_choices, insindex); + //插入多选题 + // if (object.question.max_choices > arrc.length) { + + newarrpoll.splice(thiss.state.Insertposition, 0, question); + } else if (object.question.question_type === 3) { + //插入主观题 + var answers = []; + var questiontwo = {}; + var answerstwos = []; + var answerstwoss = []; + if (object.question.answers.length > 0) { + for (var y = 0; y < object.question.answers.length; y++) { + if (object.question.answers[y].answer_text === "其他") { + var dataone = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + answerstwos.push(dataone); + } else { + var datatwo = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + answerstwoss.push(datatwo); + } + } + } + answers = answerstwoss.concat(answerstwos); + + questiontwo = { + "id": null, + "is_necessary": object.question.is_necessary, + "question_number": 3, + "question_title": object.question.question_title, + "question_type": 3, + "new": "", + "answers": answers + }; + question = {"question": questiontwo}; + //主观题不需要可选选项 + + var insindex = null; + if (this.state.problemtopicbool === true) { + insindex = this.state.problemtopic; + } + this.createquestionsandanswers(object, 3, null, null, 0, 0, insindex); + // newarrpoll.push(question); + newarrpoll.splice(thiss.state.Insertposition, 0, question); + } + ///////////////////////////////////////////////////////////////////新增模式 + } else { + //////////////////////////////////////////////////////////////////////////////修改模式 + //修改 + var uuk = -1 + for (var uk = 0; uk < newarrpoll.length; uk++) { + if (object.question.id === newarrpoll[uk].question.id) { + uuk = uk; + console.log("删除了数据=-09876543234567890-111111111111") + } + } + + + var question = {}; + if (object.question.question_type === 1) { + var questiontwo = {}; + var other = []; + var option = []; + var answerstwos = []; + var answerstwoss = []; + ///////////////////////////daying + //这个装选项和其他的 + for (var y = 0; y < object.question.answers.length; y++) { + if (object.question.answers[y].answer_text === "其他") { + var dataone = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + other.push(object.question.answers[y].answer_text); + answerstwos.push(dataone); + } else { + var datatwo = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + option.push(object.question.answers[y].answer_text) + answerstwoss.push(datatwo); + } + } + var arrc = option.concat(other); + var answers = answerstwoss.concat(answerstwos); + // 插入单选题 + questiontwo = { + // "id": this.state.poll_questions[arr.length - 1].question.id + 1 + arrr.length, + "id": object.question.id, + "is_necessary": object.question.is_necessary, + "question_number": 1, + "question_title": object.question.question_title, + "question_type": 1, + "new": "", + "answers": answers + }; + question = {"question": questiontwo}; + if (uuk !== -1) { + console.log("修改") + this.edittotheserver(object, 1, arrc, null, 0, 0); + newarrpoll.splice(uuk, 1, question); + } else { + console.log("删除") + this.createquestionsandanswers(object, 1, arrc, null, 0, 0, object.question.id); + newarrpoll.push(question); + } + console.log(newarrpoll) + } else if (object.question.question_type === 2) { + //插入多选题 + if (object.question.max_choices < object.question.min_choices) { + this.props.showNotification(`可选的最大限制不能小于最小限制`); + + return; + } + var questiontwo = {}; + var other = []; + var option = []; + var answerstwos = []; + var answerstwoss = []; + for (var y = 0; y < object.question.answers.length; y++) { + if (object.question.answers[y].answer_text === "其他") { + var dataone = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + other.push(object.question.answers[y].answer_text); + answerstwos.push(dataone); + } else { + var datatwo = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + option.push(object.question.answers[y].answer_text) + answerstwoss.push(datatwo); + } + } + var arrc = option.concat(other); + var answers = answerstwoss.concat(answerstwos); + questiontwo = { + "id": object.question.id, + "is_necessary": object.question.is_necessary, + "question_number": 2, + "question_title": object.question.question_title, + "question_type": 2, + "max_choices": object.question.max_choices, + "min_choices": object.question.min_choices, + "new": "", + "answers": answers + }; + question = {"question": questiontwo}; + //插入多选题 + if (uuk !== -1) { + console.log("修改") + this.edittotheserver(object, 2, arrc, null, object.question.max_choices, object.question.min_choices); + newarrpoll.splice(uuk, 1, question); + } else { + console.log("删除") + this.createquestionsandanswers(object, 2, arrc, null, object.question.max_choices, object.question.min_choices, object.question.id); + newarrpoll.push(question); + } + console.log(newarrpoll) + + } else if (object.question.question_type === 3) { + //插入主观题 + var answers = []; + var questiontwo = {}; + + if (object.question.answers.length > 0) { + for (var y = 0; y < object.question.answers.length; y++) { + var answerstwo; + if (object.question.answers[y].answer_text === "其他") { + answerstwo = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + } else { + answerstwo = { + "answer_id": object.question.answers[y].answer_id, + "answer_position": object.question.answers[y].answer_position, + "answer_text": object.question.answers[y].answer_text + } + } + answers.push(answerstwo); + } + } + questiontwo = { + "id": object.question.id, + "is_necessary": object.question.is_necessary, + "question_number": 3, + "question_title": object.question.question_title, + "question_type": 3, + "new": "", + "answers": answers + }; + question = {"question": questiontwo}; + if (uuk !== -1) { + console.log("修改") + this.edittotheserver(object, 3, null, null, 0, 0); + newarrpoll.splice(uuk, 1, question); + } else { + console.log("删除") + this.createquestionsandanswers(object, 3, null, null, 0, 0, object.question.id); + newarrpoll.push(question); + } + console.log(newarrpoll) + + } + + } + + + //添加到上面列表中 + //改变题目总数 + if (object.question.question_type === 1) { + //单选题 + this.state.mysingles = this.state.mysingles + 1; + } else if (object.question.question_type === 2) { + //多选题 + this.state.mydoubles = this.state.mydoubles + 1; + } else if (object.question.question_type === 3) { + //主观题 + this.state.mymainsint = this.state.mymainsint + 1; + + } + + //这里更新数据 + if (this.state.q_countst == 1) { + this.setState({ + q_countst: 0, + }) + } + this.deleteadddom(indexo); + // console.log(indexo) + } + + + ////新增到服务器中 + createquestionsandanswers = (object, number, option, other, max_choices, min_choices, insert_id) => { + var thiss = this; + var poll_id = this.state.pollid; + var urlly = `/polls/${poll_id}/poll_questions.json` + var max_choicess = null; + var min_choicess = null; + if (max_choices === 0 && min_choices === 0) { + max_choicess = null; + min_choicess = null; + } else { + max_choicess = max_choices; + min_choicess = min_choices; + } + axios.post(urlly, { + question_title: object.question.question_title, + question_type: number, + is_necessary: object.question.is_necessary, + max_choices: max_choicess, + min_choices: min_choicess, + question_answers: option, + question_other_answer: null, + insert_id: insert_id + }).then((result) => { + // try { + if (result !== undefined) { + if (result.data.status === 0) { + this.props.showNotification(`已完成`); + thiss.thisinitializationdatanew(); + // console.log("确认创建问题") + // console.log(result) + // try { + // if (result.data.status === 0) { + // console.log("确认创建问题") + // console.log(JSON.stringify(result.data)) + // } + // } catch (e) { + // + // } + } + } + // } catch (e) { + // + // } + + }) + + + } + ///编辑修改到服务器当中 + edittotheserver = (object, number, option, other, max_choices, min_choices) => { + console.log("调用了edittotheserver") + var url = `/poll_questions/${object.question.id}.json` + var thiss = this; + axios.put(url, { + // debug: true, + question_title: object.question.question_title, + question_type: number, + is_necessary: object.question.is_necessary, + max_choices: max_choices, + min_choices: min_choices, + question_answers: option, + question_other_answer: null, + }).then((result) => { + try { + if (result.data.status === 0) { + this.props.showNotification(`编辑题目成功`); + thiss.thisinitializationdatanew(); + } + } catch (e) { + // console.log("调用了edittotheserver") + console.log(e) + } + }) + } + + //删除到服务器当中 + eletetoserver = (pollid, newarr, type, index) => { + console.log("调用了eletetoserver") + var id = pollid; + var url = `/poll_questions/${id}.json` + let {mysingles, mydoubles, mymainsint} = this.state + var thiss = this; + + axios + .delete(url, {}) + .then(function (response) { + console.log(response) + if (response === undefined) { + return; + } + if (response.data.message === "删除成功") { + thiss.props.showNotification(`删除成功`); + + newarr.splice(index, 1); + if (type === 1) { + mysingles = mysingles - 1; + } else if (type === 2) { + mydoubles = mydoubles - 1; + + } else if (type === 3) { + mymainsint = mymainsint - 1; + + } + // thiss.setState({ + // poll_questions: newarr, + // mysingles: mysingles, + // mydoubles: mydoubles, + // mymainsint: mymainsint + // }); + thiss.thisinitializationdatanew(); + } + }) + } + + //上下移到服务器中 + Upanddownmovementof = (bool, poll_question_id) => { + // console.log("调用了Upanddownmovementofr") + // console.log(poll_question_id) + var thiss = this; + if (bool === true) { + var url = `/poll_questions/${poll_question_id}/up_down.json`; + axios.post(url, { + opr: "up", + }).then((result) => { + try { + if (result.data.status === 0) { + this.props.showNotification(`上移成功`); + thiss.thisinitializationdatanew(); + } + // console.log(JSON.stringify(result)) + } catch (e) { + console.log("上移题目成功 错误") + console.log(e) + } + + }) + } else { + var url = `/poll_questions/${poll_question_id}/up_down.json`; + axios.post(url, { + opr: "down", + }).then((result) => { + try { + if (result.data.status === 0) { + // message.success("下移题目成功", 1) + this.props.showNotification(`下移成功`); + thiss.thisinitializationdatanew(); + } + // console.log(JSON.stringify(result)) + } catch (e) { + console.log("下移题目成功 错误") + console.log(e) + } + }) + } + + } + + //删除编辑新增条目 + //id 条目的唯一id + //i 为要删除的子条目 + deleteentrys = (id, i, stirngname) => { + console.log(id) + console.log(stirngname); + var arrtwoy = this.state.adddom; + let newarrtwoy = [...arrtwoy]; + for (var k = 0; k < newarrtwoy.length; k++) { + if (newarrtwoy[k] != undefined) { + if (newarrtwoy[k].question.id === id) { + for (var c = 0; c < newarrtwoy[k].question.answers.length; c++) { + if (c === i) { + // console.log("删除了") + // console.log(c) + newarrtwoy[k].question.answers.splice(c, 1); + } + } + } + } + } + if (stirngname === true) { + console.log(stirngname); + this.setState({ + newoption: false, + adddom: newarrtwoy, + + }) + } else { + console.log(stirngname); + this.setState({ + adddom: newarrtwoy, + }); + } + + + } + + + // 新增选项 + ewoption = (id, object) => { + console.log("ewoption 440") + console.log("是否是新建题目还是编辑") + // console.log(object.question.new) + + + let arrtwo = this.state.adddom; + let newarrtwo = [...arrtwo]; + + + for (var k = 0; k < newarrtwo.length; k++) { + // console.log(arrtwo[k].question.id); + if (newarrtwo[k] != undefined) { + if (newarrtwo[k].question.id === id) { + var data = { + "answer_id": newarrtwo[k].question.answers.length + 1, + "answer_position": newarrtwo[k].question.answers.length + 1, + "answer_text": "" + }; + //向头部添加元素 + // newarrtwo[k].question.answers.unshift(data); + //如果有其他这一项就删除掉 + if (newarrtwo[k].question.answers.length > 0) { + for (var o = 0; o < newarrtwo[k].question.answers.length; o++) { + if (newarrtwo[k].question.answers[o].answer_text != undefined) { + if (newarrtwo[k].question.answers[o].answer_text === "其他") { + newarrtwo[k].question.answers.splice(o, 0, data); + this.setState({ + adddom: newarrtwo + }) + return + } else { + if (o === newarrtwo[k].question.answers.length - 1) { + newarrtwo[k].question.answers.push(data); + this.setState({ + adddom: newarrtwo + }) + return + } + } + } + } + } else { + newarrtwo[k].question.answers.push(data); + this.setState({ + adddom: newarrtwo + }) + } + + } + } + } + + } + + + swapArray = (arr, index1, index2) => { + arr[index1] = arr.splice(index2, 1, arr[index1])[0]; + return arr; + } + + //新增其他选项 + addanotheroption = (id) => { + console.log("addanotheroption 457") + let arrtwo = this.state.adddom; + let newarrtwo = [...arrtwo]; + console.log(newarrtwo) + for (var k = 0; k < newarrtwo.length; k++) { + if (newarrtwo[k] != undefined) { + if (newarrtwo[k].question.id === id) { + var data = { + "answer_id": newarrtwo[k].question.answers.length + 1, + "answer_position": newarrtwo[k].question.answers.length + 1, + "answer_text": "其他" + }; + newarrtwo[k].question.answers.push(data); + } + } + } + this.setState({ + adddom: newarrtwo, + newoption: true, + }) + } + + + //点击向上排序按钮事件 + handleClickBySortUp = (index, object) => { + console.log("handleClickBySortUp 521") + let arr = this.state.poll_questions; + let newarr = [...arr]; + console.log(newarr) + if (index != 0) { + this.Upanddownmovementof(true, object.question.id); + let temp = newarr[index - 1]; + newarr[index - 1] = newarr[index]; + newarr[index] = temp; + this.setState({ + poll_questions: newarr, + }); + } + } + + //点击向下排序按钮事件 + handleClickBySortDown = (index, object) => { + console.log("handleClickBySortDown 536") + let arr = this.state.poll_questions; + let newarr = [...arr]; + // + if (index != newarr.length - 1) { + this.Upanddownmovementof(false, object.question.id); + let temp = newarr[index + 1]; + newarr[index + 1] = newarr[index]; + newarr[index] = temp; + this.setState({ + poll_questions: newarr, + }); + } else { + console.log("2222index==arr.length"); + console.log(this.state.poll_questions); + } + } + + //点击删除按钮事件 + handleClickByDelete = (type, index, object) => { + console.log("handleClickByDelete 556") + console.log("object.question.id") + console.log(object.question.id) + let arr = this.state.poll_questions; + let newarr = [...arr]; + this.eletetoserver(object.question.id, newarr, type, index) + + } + + // 数字输入监听 + //e为获取组件对象 + //i外层数组 + //k为内层数组 + handleInputChanges = (e, i, k) => { + console.log("handleInputChanges 612") + + let value = e.target.value;//取到input的数据 + console.log("handleInputChanges value is :" + value); + console.log(k); + let arr = this.state.adddom; + let newarr = [...arr]; + + newarr[i].question.answers[k].answer_text = value + this.setState({ + adddom: newarr + }) + + } + + //标题输入监听 + handleInputTopic = (e, i) => { + console.log("handleInputTopic 633") + + let value = e.target.value;//取到input的数据 + console.log("handleInputTopic value is :" + value); + console.log(i); + let arr = this.state.adddom; + let newarr = [...arr]; + newarr[i].question.question_title = value + this.setState({ + adddom: newarr + }) + } + + //最小值 + handleGradationGroupChangee = (value, index, max, length) => { + + debugger + var minbool = false; + var maxbool = false; + let arr = this.state.adddom; + if (parseInt(value) === 0 || parseInt(value) === "0" || parseInt(value) === null || parseInt(value) === undefined || parseInt(value) < 1) { + minbool = true; + } + if (max === 0 || max === "0" || max === null || max === undefined) { + maxbool = true; + } + + if (minbool === true && maxbool === true) { + for (var i = 0; i < arr.length; i++) { + if (index === i) { + arr[i].question.min_choices = parseInt(value); + } + } + this.setState({ + adddom: arr + }) + } else { + for (var i = 0; i < arr.length; i++) { + if (index === i) { + arr[i].question.min_choices = parseInt(value); + arr[i].question.max_choices = length; + } + } + this.setState({ + adddom: arr + }) + } + + } + + //最大值 + handleGradationGroupChangeee = (value, index) => { + + let arr = this.state.adddom; + for (var i = 0; i < arr.length; i++) { + if (index === i) { + arr[i].question.max_choices = parseInt(value); + } + } + this.setState({ + adddom: arr + }) + // console.log(this.state.adddom); + } + + //提交题目//没有就创建新的题库,新建问题和保存题目不一样不能同时保存 这里只是新建 和编辑 标题和须知 + submitQuestionnaire = () => { + console.log("调用了submitQuestionnaire") + if (this.state.Newedit === true) { + + this.newword(); + + } else { + if (this.state.polls_nametest === undefined || this.state.polls_nametest === "") { + this.props.showNotification("请输入标题"); + return + } + + if (this.state.polls_descriptiontest.length > 100) { + + } + var pollid; + if (this.state.pollid === undefined) { + pollid = this.props.match.params.pollid; + } else { + pollid = this.state.pollid; + } + + + var url = `/polls/${pollid}.json`; + axios.put(url, { + polls_name: this.state.polls_nametest, + polls_description: this.state.polls_descriptiontest + }).then((result) => { + try { + // console.log(JSON.stringify(result)) + if (result.data.status === 0) { + // console.log("更新题目成功") + // this.props.showNotification("保存成功"); + this.props.history.push(`/courses/${this.props.match.params.coursesId}/polls/${pollid}/detail?tab=2`) + } + } catch (e) { + + } + }) + } + } + + cancelmodel = () => { + + this.setState({ + Modalstype: false, + Modalstopval: "", + ModalsBottomval: "", + }) + + } + savedelete = (question_type, index, item) => { + console.log("savedelete"); + this.handleClickByDelete(question_type, index, item); + this.setState({ + Modalstype: false, + Modalstopval: "", + ModalsBottomval: "", + }) + } + // 问题的类型,1单选题,2为多选题,3为主观题 + showDeleteConfirm = (question_type, index, item) => { + this.setState({ + Modalstype: true, + Modalstopval: "是否确认删除?", + ModalsBottomval: "", + ModalCancel: this.cancelmodel, + ModalSave: () => this.savedelete(question_type, index, item), + }) + + } + //必答选项 + onCheckAllChange = (e, index) => { + console.log("onCheckAllChange"); + console.log(e.target.checked); + // console.log(e.target.value); + let arr = this.state.adddom; + for (var i = 0; i < arr.length; i++) { + if (index === i) { + if (e.target.checked === true) { + arr[i].question.is_necessary = 1; + + } else { + arr[i].question.is_necessary = 0; + } + } + } + this.setState({ + adddom: arr + }) + } + + //重新编辑标题和须知 + adddomeditit = () => { + if (this.state.mysave === true) { + this.setState({ + mysave: false, + readOnlys: "readOnly", + storagedesc:this.state.polls_nametest, + storagedesctwo:this.state.polls_descriptiontest, + }) + } else if (this.state.mysave === false) { + this.setState({ + mysave: true, + readOnlys: "", + storagedesc:this.state.polls_nametest, + storagedesctwo:this.state.polls_descriptiontest, + }) + } + } + //取消保存 + onSaveExercisetwo = () => { + if (this.state.mysave === true) { + this.setState({ + mysave: false, + Newedit: false, + readOnlys: "readOnly", + polls_nametest:this.state.storagedesc, + polls_descriptiontest:this.state.storagedesctwo, + }) + } else { + this.setState({ + mysave: false, + Newedit: false, + readOnlys: "readOnly", + polls_nametest:this.state.storagedesc, + polls_descriptiontest:this.state.storagedesctwo, + }) + } + } + // 创建问卷 + onSaveExercise = () => { + if (this.state.Newedit === true) { + + if (this.state.polls_nametest === undefined || this.state.polls_nametest === "") { + this.props.showNotification(`请输入标题`); + return + } + let coursesId = this.props.match.params.coursesId; + const urlls = `/courses/${coursesId}/polls.json` + axios.post(urlls, { + polls_name: this.state.polls_nametest, + polls_description: this.state.polls_descriptiontest + }).then((result) => { + if (result === undefined) { + return; + } + this.state.Newedit === false; + this.props.showNotification(`问卷创建成功!`); + this.setState({ + pollid: result.data.data.id, + Newedit: false, + mysave: false, + readOnlys: "readOnly", + cancellation: false, + }) + + + }) + } else { + if (this.state.polls_nametest === undefined || this.state.polls_nametest === "") { + this.props.showNotification("请输入标题"); + return + } + + var pollid; + if (this.state.pollid === undefined) { + pollid = this.props.match.params.pollid; + } else { + pollid = this.state.pollid; + } + + + var url = `/polls/${pollid}.json`; + axios.put(url, { + polls_name: this.state.polls_nametest, + polls_description: this.state.polls_descriptiontest + }).then((result) => { + if (result !== undefined) { + this.props.showNotification(`问卷更新成功!`); + this.setState({ + mysave: false, + readOnlys: "readOnly", + }) + } + + }) + } + + } + + //试图 + render() { + let { + addonAfter, + user_permission, + polls_status, + Modalstype, + mysave, + readOnlys, + newoption, + cancellation, + } = this.state + //获取老师权限 + // console.log("[`${maps[polls_status && polls_status]}`]]"); + // console.log(polls_status); + // console.log([[`${maps[polls_status && polls_status]}`]] + ""); + + const IsAdmin = this.props.isAdmin(); + const {getFieldDecorator} = this.props.form; + const formItemLayout = { + labelCol: { + xs: {span: 24}, + // sm: { span: 8 }, + sm: {span: 24}, + }, + wrapperCol: { + xs: {span: 24}, + // sm: { span: 16 }, + sm: {span: 24}, + }, + }; + + const radioStyle = { + display: 'block', + height: '30px', + lineHeight: '30px', + }; + + // console.log(this.state.projects===undefined?"":this.state.projects.poll_questions) + var displaymysave = (mysave === true) ? "" : "display:none;"; + return ( +
    + {/*提示*/} + {Modalstype && Modalstype === true ? : ""} +
    +

    + {this.props.coursedata.name} + > + 问卷 + > + {this.props.match.params.news === undefined ? "新建" : this.props.match.params.news === "new" ? "新建" : "编辑"} +

    +
    +

    {this.props.match.params.news === undefined ? "新建问卷" : this.props.match.params.news === "new" ? "新建问卷" : "编辑问卷"}

    + 返回 +
    + + {/*
    */} +
    +
    + + + + + + +
    +
    + + +
    问卷须知
    + + + { + this.state.Newedit === true || this.state.mysave === true ? +
    + + {cancellation === false ? + + : ""} + +
    + : "" + } + +
    + +
    +

    + + + { + this.state.mysingles + this.state.mydoubles + this.state.mymainsint === 0 ? "" : +

    + + {this.state.mysingles === 0 ? "" : 单选题{this.state.mysingles === undefined ? "" : this.state.mysingles} 题} + + {this.state.mydoubles === 0 ? "" : + 多选题{this.state.mydoubles === undefined ? "" : this.state.mydoubles}题} + {this.state.mymainsint === 0 ? "" : + + 主观题{this.state.mymainsint === undefined ? "" : this.state.mymainsint}题 + + } + + + 合计 {this.state.mysingles === undefined ? "" : this.state.mydoubles === undefined ? "" : this.state.mymainsint === undefined ? "" : this.state.mysingles + this.state.mydoubles + this.state.mymainsint} +
    + + } + +

    +
    + + {/*自动生成修改好的获取到的*/} + {/**************************************************************************/} + {this.state.poll_questions === undefined ? "" : this.state.poll_questions.map((item, index) => { + // console.log('打印this.state.poll_questions') + // console.log(item.question) + let resultDom; + resultDom =
    +

    + 第{index + 1}题: + {item.question.question_type === 1 ? "(单选题)" : item.question.question_type === 2 ? "(多选题)" : "(主观题)"} + {item.question.is_necessary === 1 ? "必答" : item.question.question_type === 2 ? "选答" : "选答"} + {(item.question.min_choices === undefined && item.question.max_choices === undefined ? "" : item.question.min_choices === null && item.question.max_choices === null ? "" : item.question.min_choices === 0 && item.question.max_choices === 0 ? "" : "可选" + item.question.min_choices + "-" + item.question.max_choices + "项")} + { + polls_status === undefined || polls_status === 1 ? + + this.showDeleteConfirm(item.question.question_type, index, item)}> + {index === 0 ? "" : + this.handleClickBySortUp(index, item)}>} + {index === this.state.poll_questions.length - 1 ? "" : + this.handleClickBySortDown(index, item)}>} + this.addMytopic(item.question.question_type, this.state.pollid, index + 1, true, item.question.id)}> + this.adddomedit(item)}> + : this.adddomedit(item)}> + } + +

    +

    {item.question.question_title}

    + {/*
    {item.question.question_title}
    */} + {item.question.question_type === 1 ? + ( + {item.question.answers === undefined ? "" : item.question.answers.map((items, i) => { + return ( +
    + + {/*
    {items.answer_text}
    */} + {/*
    {items.answer_text}
    */} + {items.answer_text} + +
    + ) + })} +
    ) + : item.question.question_type === 2 ? + ( + {item.question.answers === undefined ? "" : item.question.answers.map((items, i) => { + return ( +
    + + {items.answer_text} + + {/*{items.answer_text}*/} +
    + ) + })} +
    ) + : item.question.question_type === 3 ? (
    ) : (
    )} +
    + + return ( +
    + {resultDom} +
    + ) + })} + {/**************************************************************************/} + {/*编辑用的新增用的*/} + {/**************************************************************************/} + + {this.state.adddom === undefined ? "" : this.state.adddom.map((itemo, indexo) => { + // console.log('打印this.state.adddom') + // console.log(itemo.question) + let arrid = itemo.question.id; + let resultDomtwo; + resultDomtwo = +
    + {itemo.question.question_type === 1 ? "单选题" : itemo.question.question_type === 2 ? "多选题" : "主观题"} + this.onCheckAllChange(e, indexo)} + className="lineh-40" + style={{"marginLeft": "20px"}}>必答 + + + + + {itemo.question.answers === undefined ? "" : itemo.question.answers.map((itemt, indext) => { + return ( +
    + {itemt.answer_text === undefined ? ( +
    ) : itemt.answer_text === "其他" ? ( +

    + 其它 + + + {polls_status === undefined || polls_status === 1 ? + this.deleteentrys(arrid, indext, true)}> + : ""} +

    ) : (

    + 选项 + + + {polls_status === undefined || polls_status === 1 ? + this.deleteentrys(arrid, indext, false)}> + : ""} +

    )} +
    + ) + })} + +
    + {itemo.question.question_type === 1 ? ( +
    +
    + {polls_status === undefined || polls_status === 1 ? + this.ewoption(itemo.question.id, itemo)}>新增选项 + + : ""} + {polls_status === undefined || polls_status === 1 ? + + (newoption === false ? + this.addanotheroption(itemo.question.id)}>新增其他选项 + : "") + : ""} + + this.deleteadddom(indexo)}>取消 + this.deleteadddomthree(indexo, itemo)}>保存 + this.deleteadddomtwo(indexo, itemo)}>保存并继续 + +
    +
    + + + ) + + + : itemo.question.question_type === 2 ? ( + //////////////////////////////////////////// 可选 +
    +
    +
    + 可选 +
    + {/*可选最小*/} + + + ~ + {/*可选最大*/} + + + (学生答题时,系统对其选择的选项个数进行限制,--表示不限制) +
    + +
    +
    +
    + ) + + : (
    ) + + } +
    +
    + {itemo.question.question_type === 2 ? + ( + polls_status === undefined || polls_status === 1 ? +
    + +
    this.ewoption(itemo.question.id, itemo)}>新增选项 + + { + newoption === false ? this.addanotheroption(itemo.question.id)}>新增其他选项 : "" + } + +
    + + + + this.deleteadddom(indexo)}>取消 + this.deleteadddomthree(indexo, itemo)}>保存 + this.deleteadddomtwo(indexo, itemo)}>保存并继续 + +
    + + + : "" + ) + + : itemo.question.question_type === 3 ? +
    + + this.deleteadddom(indexo)}>取消 + this.deleteadddomthree(indexo, itemo)}>保存 + this.deleteadddomtwo(indexo, itemo)}>保存并继续 + +
    + : + ""} + + +
    +
    + + + return ( +
    + {resultDomtwo} +
    + ) + })} + {/**************************************************************************/} + + {polls_status === undefined || polls_status === 1 ? +
    + { + this.props.match.params.news === "new" ? + this.state.Newedit === false ? +
    +
    + +
    + this.addmysingles()}>单选题 + this.addmydoubles()}>多选题 + this.addmymainsint()}>主观题 +
    +
    + + : "" + : +
    +
    +
    + this.addmysingles()}>单选题 + this.addmydoubles()}>多选题 + this.addmymainsint()}>主观题 +
    +
    + } +
    + :
    } +
    + { + this.props.match.params.news === "new" ? + (this.state.Newedit === false ? +
    +
  • + this.submitQuestionnaire()}>提交 + this.props.history.goBack()}>取消 +
  • + + +
    + + : "") + : +
    +
  • + this.props.history.goBack()}>取消 + this.submitQuestionnaire()}>提交 +
  • +
    + } + + {/*
    */} +
    +
    +
    + ) + } + +} + +const WrappedPollNew = Form.create({name: 'taskPollNew'})(PollNew); +// RouteHOC() export default (WrappedPollNew); \ No newline at end of file diff --git a/public/react/src/modules/courses/shixunHomework/TraineetraininginformationModal.js b/public/react/src/modules/courses/shixunHomework/TraineetraininginformationModal.js index 735e3f396..7d34eb9a1 100644 --- a/public/react/src/modules/courses/shixunHomework/TraineetraininginformationModal.js +++ b/public/react/src/modules/courses/shixunHomework/TraineetraininginformationModal.js @@ -52,7 +52,26 @@ class TraineetraininginformationModal extends Component { // this.seacthdata(); } + componentWillReceiveProps(nextProps) { + // console.log("46"); + // console.log(nextProps); + // console.log(this.props); + if (nextProps.boolgalist != this.props.boolgalist) { + // console.log("50"); + // console.log(nextProps.user); + if (nextProps.boolgalist !== undefined) { + // console.log("53"); + // console.log(nextProps.user); + this.setState({ + boolgalist: nextProps.boolgalist, + }) + } + + } + + + } LimitNumber=(txt)=> { var str = txt; if(str.length>25){ @@ -62,7 +81,7 @@ class TraineetraininginformationModal extends Component { } render() { var columns; - if(this.props.boolgalis&&this.props.boolgalist === true) { + if(this.state.boolgalist&&this.state.boolgalist === true) { columns = [ { title: '关卡',