|
@@ -6,9 +6,8 @@
|
|
<NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
|
|
<NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
|
|
</el-col>
|
|
</el-col>
|
|
<el-col :span="24" class="main">
|
|
<el-col :span="24" class="main">
|
|
- <el-col :span="24" class="leaveBtn"> </el-col>
|
|
|
|
- <el-col :span="24" class="leaveList">
|
|
|
|
- <datiList :datilist="datilist" :form="form" :answer="answer" @submit="onsave"></datiList>
|
|
|
|
|
|
+ <el-col :span="24" class="leaveList" v-if="task.id">
|
|
|
|
+ <task :task="task" :answer="answer" @submit="onsave"></task>
|
|
</el-col>
|
|
</el-col>
|
|
</el-col>
|
|
</el-col>
|
|
</el-col>
|
|
</el-col>
|
|
@@ -18,9 +17,10 @@
|
|
|
|
|
|
<script>
|
|
<script>
|
|
import NavBar from '@/layout/common/topInfo.vue';
|
|
import NavBar from '@/layout/common/topInfo.vue';
|
|
-import datiList from '@/layout/user/datiList.vue';
|
|
|
|
|
|
+import task from './homework/task.vue';
|
|
import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
|
|
import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
|
|
const { mapActions: mapTask } = createNamespacedHelpers('task');
|
|
const { mapActions: mapTask } = createNamespacedHelpers('task');
|
|
|
|
+const { mapActions: util } = createNamespacedHelpers('util');
|
|
const { mapActions: mapTaskUploadtask } = createNamespacedHelpers('uploadtask');
|
|
const { mapActions: mapTaskUploadtask } = createNamespacedHelpers('uploadtask');
|
|
|
|
|
|
export default {
|
|
export default {
|
|
@@ -28,20 +28,18 @@ export default {
|
|
props: {},
|
|
props: {},
|
|
components: {
|
|
components: {
|
|
NavBar, //头部导航
|
|
NavBar, //头部导航
|
|
- datiList,
|
|
|
|
|
|
+ task,
|
|
},
|
|
},
|
|
data: () => ({
|
|
data: () => ({
|
|
loading: true,
|
|
loading: true,
|
|
- datilist: {},
|
|
|
|
|
|
+ task: {},
|
|
show: false,
|
|
show: false,
|
|
navShow: true,
|
|
navShow: true,
|
|
title: '',
|
|
title: '',
|
|
isleftarrow: '',
|
|
isleftarrow: '',
|
|
answer: [],
|
|
answer: [],
|
|
- form: {},
|
|
|
|
taskid: '',
|
|
taskid: '',
|
|
- resdata: '',
|
|
|
|
- valid: '',
|
|
|
|
|
|
+ taskAnswer: null,
|
|
}),
|
|
}),
|
|
mounted() {
|
|
mounted() {
|
|
this.title = this.$route.meta.title;
|
|
this.title = this.$route.meta.title;
|
|
@@ -56,271 +54,101 @@ export default {
|
|
created() {
|
|
created() {
|
|
this.search();
|
|
this.search();
|
|
},
|
|
},
|
|
-
|
|
|
|
- computed: {
|
|
|
|
- ...mapState(['user']),
|
|
|
|
- name() {
|
|
|
|
- return this.$route.query.name;
|
|
|
|
- },
|
|
|
|
- id() {
|
|
|
|
- return this.$route.query.id;
|
|
|
|
- },
|
|
|
|
- lessonid() {
|
|
|
|
- return this.$route.query.lessonid;
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
methods: {
|
|
methods: {
|
|
|
|
+ ...util({ modelFetch: 'fetch' }),
|
|
...mapTask({ list: 'query', add: 'create', fet: 'fetch', updates: 'update' }),
|
|
...mapTask({ list: 'query', add: 'create', fet: 'fetch', updates: 'update' }),
|
|
...mapTaskUploadtask({ Uploadtasklist: 'query', Uploadtaskadd: 'create', Uploadtaskfet: 'fetch', Uploadtaskupdates: 'update' }),
|
|
...mapTaskUploadtask({ Uploadtasklist: 'query', Uploadtaskadd: 'create', Uploadtaskfet: 'fetch', Uploadtaskupdates: 'update' }),
|
|
|
|
|
|
//查询作业
|
|
//查询作业
|
|
async search() {
|
|
async search() {
|
|
- // console.log(this.name);s
|
|
|
|
- const res = await this.list();
|
|
|
|
- var tilist = res.data.filter(item => item.code === this.id);
|
|
|
|
- let result = tilist[0];
|
|
|
|
- // console.log(result.id);
|
|
|
|
- this.$set(this, `taskid`, result.id);
|
|
|
|
- // console.log(result.question);
|
|
|
|
-
|
|
|
|
|
|
+ const res = await this.list({ code: this.id });
|
|
|
|
+ if (res.total <= 0) {
|
|
|
|
+ this.$toast({ message: '没有找到该科目的在线作业', icon: 'fail' });
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ var midlist = res.data.filter(item => item.code === this.id && item.status == '1');
|
|
|
|
+ let result = _.head(midlist);
|
|
|
|
+ if (!result) return;
|
|
result.question = result.question.map(i => {
|
|
result.question = result.question.map(i => {
|
|
if (i.type == 1) {
|
|
if (i.type == 1) {
|
|
i.answers = [];
|
|
i.answers = [];
|
|
} else {
|
|
} else {
|
|
i.answers = '';
|
|
i.answers = '';
|
|
}
|
|
}
|
|
- // console.log(i.answers);
|
|
|
|
- // console.log(i);
|
|
|
|
|
|
|
|
return i;
|
|
return i;
|
|
});
|
|
});
|
|
let num = _.cloneDeep(result);
|
|
let num = _.cloneDeep(result);
|
|
- console.log(num);
|
|
|
|
- console.log(result.question);
|
|
|
|
-
|
|
|
|
- this.$set(this, `datilist`, result);
|
|
|
|
-
|
|
|
|
- // this.$set(this, `datilist`, num);
|
|
|
|
-
|
|
|
|
- let stuid = this.user.userid;
|
|
|
|
- let lessonid = this.lessonid;
|
|
|
|
-
|
|
|
|
- let ress = await this.Uploadtasklist({ lessonid });
|
|
|
|
-
|
|
|
|
- console.log(ress.data);
|
|
|
|
-
|
|
|
|
- this.$set(this, `resdata`, ress.data);
|
|
|
|
- //回显
|
|
|
|
- for (const val of ress.data) {
|
|
|
|
- let less = val.answers;
|
|
|
|
- console.log(val.id);
|
|
|
|
- this.$set(this, `valid`, val.id);
|
|
|
|
- console.log(less);
|
|
|
|
- result.question.map(i => {
|
|
|
|
- if (i.type == 1) {
|
|
|
|
- val.answers.map(m => {
|
|
|
|
- if (i._id == m.questionid) {
|
|
|
|
- // 将string类型还原
|
|
|
|
- i.answers = JSON.parse(m.answer);
|
|
|
|
- return m;
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- } else {
|
|
|
|
- less.map(n => {
|
|
|
|
- if (i._id == n.questionid) {
|
|
|
|
- i.answers = n.answer;
|
|
|
|
- return n;
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
- return i;
|
|
|
|
- console.log(result.question);
|
|
|
|
- });
|
|
|
|
|
|
+ this.$set(this, `task`, result);
|
|
|
|
+ //获取答过的作业
|
|
|
|
+ let taskAnswer = await this.modelFetch({ model: 'uploadtask', studentid: this.user.userid, taskid: this.task.id });
|
|
|
|
+ if (!taskAnswer.data) return;
|
|
|
|
+ this.$set(this, `taskAnswer`, taskAnswer.data);
|
|
|
|
+ let { answers } = this.taskAnswer;
|
|
|
|
+ let task = _.cloneDeep(this.task);
|
|
|
|
+ let { question } = task;
|
|
|
|
+ for (const quest of question) {
|
|
|
|
+ let ans = answers.find(f => f.questionid == quest._id);
|
|
|
|
+ if (!ans) continue;
|
|
|
|
+ let { answer } = ans;
|
|
|
|
+ if (quest.type == '1') {
|
|
|
|
+ // 多选题,需要转回array
|
|
|
|
+ quest.answers = JSON.parse(answer);
|
|
|
|
+ } else quest.answers = answer;
|
|
}
|
|
}
|
|
|
|
+ this.$set(this.task, `question`, question);
|
|
this.loading = false;
|
|
this.loading = false;
|
|
},
|
|
},
|
|
|
|
|
|
async onsave() {
|
|
async onsave() {
|
|
- let answerss = {
|
|
|
|
- termid: this.user.termid,
|
|
|
|
- batchid: this.user.batchid,
|
|
|
|
- classid: this.user.classid,
|
|
|
|
- lessonid: this.lessonid,
|
|
|
|
- id: this.valid,
|
|
|
|
- studentid: this.user.userid,
|
|
|
|
- taskid: this.taskid,
|
|
|
|
- };
|
|
|
|
- let answers = {};
|
|
|
|
- let data = this.datilist.question;
|
|
|
|
-
|
|
|
|
- var answer = data.map(i => {
|
|
|
|
- answers.questionid = i._id;
|
|
|
|
- answers.answer = JSON.stringify(i.answers);
|
|
|
|
- if (i.type == 1) {
|
|
|
|
- return {
|
|
|
|
- answer: JSON.stringify(i.answers),
|
|
|
|
- questionid: i._id,
|
|
|
|
- };
|
|
|
|
- } else {
|
|
|
|
- return {
|
|
|
|
- answer: i.answers,
|
|
|
|
- questionid: i._id,
|
|
|
|
- };
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
- //上传
|
|
|
|
- let dati = this.resdata;
|
|
|
|
- console.log(dati);
|
|
|
|
-
|
|
|
|
- if (dati.length) {
|
|
|
|
- let task = this.datilist;
|
|
|
|
- let newsc = [];
|
|
|
|
- task.question.map(n => {
|
|
|
|
- if (n.type == 1) {
|
|
|
|
- // a b array类型
|
|
|
|
- let a = n.answer.split(';');
|
|
|
|
- let b = n.answers;
|
|
|
|
-
|
|
|
|
- let c = new Set(a);
|
|
|
|
- let d = new Set(b);
|
|
|
|
-
|
|
|
|
- let differenceABSet = new Set([...d].filter(x => !c.has(x)));
|
|
|
|
- console.log(differenceABSet);
|
|
|
|
-
|
|
|
|
- var sc = this.datilist.question.map(a => {
|
|
|
|
- if (n._id == a._id) {
|
|
|
|
- if (differenceABSet.size === 0) {
|
|
|
|
- return {
|
|
|
|
- // 转换成string
|
|
|
|
- // answer: JSON.stringify(n.answers),
|
|
|
|
-
|
|
|
|
- answer: JSON.stringify(n.answers),
|
|
|
|
- questionid: n._id,
|
|
|
|
- questionscore: n.score,
|
|
|
|
- };
|
|
|
|
- } else {
|
|
|
|
- return {
|
|
|
|
- // 转换成string
|
|
|
|
- // answer: JSON.stringify(n.answers),
|
|
|
|
-
|
|
|
|
- answer: JSON.stringify(n.answers),
|
|
|
|
- questionid: n._id,
|
|
|
|
- questionscore: 0,
|
|
|
|
- };
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- } else {
|
|
|
|
- var sc = this.datilist.question.map(a => {
|
|
|
|
- if (n._id == a._id) {
|
|
|
|
- if (n.answers === n.answer) {
|
|
|
|
- return {
|
|
|
|
- answer: n.answers,
|
|
|
|
- questionid: n._id,
|
|
|
|
- questionscore: n.score,
|
|
|
|
- };
|
|
|
|
- } else {
|
|
|
|
- return {
|
|
|
|
- answer: n.answers,
|
|
|
|
- questionid: n._id,
|
|
|
|
- questionscore: 0,
|
|
|
|
- };
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- newsc = [...sc, ...newsc];
|
|
|
|
-
|
|
|
|
- var arr = newsc.filter(item => item);
|
|
|
|
- answerss.answers = arr;
|
|
|
|
- });
|
|
|
|
- console.log(answerss.answers);
|
|
|
|
- let sum = '';
|
|
|
|
- answerss.answers.forEach(item => {
|
|
|
|
- sum = Number(sum) + Number(item.questionscore);
|
|
|
|
- });
|
|
|
|
- console.log(sum);
|
|
|
|
- answerss.score = sum;
|
|
|
|
- let res = await this.Uploadtaskupdates(answerss);
|
|
|
|
- } else {
|
|
|
|
- //作业
|
|
|
|
- let task = this.datilist;
|
|
|
|
- let newsc = [];
|
|
|
|
- task.question.map(n => {
|
|
|
|
- console.log(n._id);
|
|
|
|
-
|
|
|
|
- if (n.type == 1) {
|
|
|
|
- // a b array类型
|
|
|
|
- let a = n.answer.split(';');
|
|
|
|
- let b = n.answers;
|
|
|
|
-
|
|
|
|
- let c = new Set(a);
|
|
|
|
- let d = new Set(b);
|
|
|
|
-
|
|
|
|
- let differenceABSet = new Set([...d].filter(x => !c.has(x)));
|
|
|
|
-
|
|
|
|
- var sc = this.datilist.question.map(a => {
|
|
|
|
- if (n._id == a._id) {
|
|
|
|
- if (differenceABSet.size === 0) {
|
|
|
|
- console.log(n.answers);
|
|
|
|
-
|
|
|
|
- return {
|
|
|
|
- // 转换成string
|
|
|
|
- // answer: JSON.stringify(n.answers),
|
|
|
|
-
|
|
|
|
- answer: JSON.stringify(n.answers),
|
|
|
|
- questionid: n._id,
|
|
|
|
- questionscore: n.score,
|
|
|
|
- };
|
|
|
|
- } else {
|
|
|
|
- return {
|
|
|
|
- // 转换成string
|
|
|
|
- // answer: JSON.stringify(n.answers),
|
|
|
|
-
|
|
|
|
- answer: JSON.stringify(n.answers),
|
|
|
|
- questionid: n._id,
|
|
|
|
- questionscore: 0,
|
|
|
|
- };
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- } else {
|
|
|
|
- console.log(this.datilist.question);
|
|
|
|
- var sc = this.datilist.question.map(a => {
|
|
|
|
- if (n._id == a._id) {
|
|
|
|
- if (n.answers === n.answer) {
|
|
|
|
- return {
|
|
|
|
- answer: n.answers,
|
|
|
|
- questionid: n._id,
|
|
|
|
- questionscore: n.score,
|
|
|
|
- };
|
|
|
|
- } else {
|
|
|
|
- return {
|
|
|
|
- answer: n.answers,
|
|
|
|
- questionid: n._id,
|
|
|
|
- questionscore: 0,
|
|
|
|
- };
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- newsc = [...sc, ...newsc];
|
|
|
|
-
|
|
|
|
- console.log(newsc);
|
|
|
|
- var arr = newsc.filter(item => item);
|
|
|
|
- answerss.answers = arr;
|
|
|
|
- console.log(answerss);
|
|
|
|
- });
|
|
|
|
- console.log(answerss);
|
|
|
|
-
|
|
|
|
- let res = await this.Uploadtaskadd(answerss);
|
|
|
|
|
|
+ let task = _.cloneDeep(this.task);
|
|
|
|
+ let obj = {};
|
|
|
|
+ console.log(this.taskAnswer);
|
|
|
|
+ if (!this.taskAnswer) {
|
|
|
|
+ obj = {
|
|
|
|
+ termid: this.user.termid,
|
|
|
|
+ batchid: this.user.batchid,
|
|
|
|
+ classid: this.user.classid,
|
|
|
|
+ lessonid: this.lessonid,
|
|
|
|
+ lessonname: this.task.name,
|
|
|
|
+ studentid: this.user.userid,
|
|
|
|
+ taskid: this.taks.id,
|
|
|
|
+ };
|
|
|
|
+ } else obj = _.cloneDeep(this.taskAnswer);
|
|
|
|
+
|
|
|
|
+ let studanswer = [];
|
|
|
|
+ let { question } = task;
|
|
|
|
+ for (const quest of question) {
|
|
|
|
+ const { topic, answers, _id: questionid } = quest;
|
|
|
|
+ let obj = { topic, questionid };
|
|
|
|
+ if (_.isString(answers)) obj.answer = answers;
|
|
|
|
+ else obj.answer = JSON.stringify(answers);
|
|
|
|
+ studanswer.push(obj);
|
|
|
|
+ }
|
|
|
|
+ obj.answers = studanswer;
|
|
|
|
+ console.log(obj);
|
|
|
|
+ if (!obj.id) {
|
|
|
|
+ let res = await this.Uploadtaskadd(obj);
|
|
if (this.$checkRes(res, '作业提交成功', res.errmsg || '作业提交失败')) window.history.go(-1);
|
|
if (this.$checkRes(res, '作业提交成功', res.errmsg || '作业提交失败')) window.history.go(-1);
|
|
|
|
+ } else {
|
|
|
|
+ let res = await this.Uploadtaskupdates(obj);
|
|
|
|
+ if (this.$checkRes(res, '作业修改成功', res.errmsg || '作业修改失败')) window.history.go(-1);
|
|
}
|
|
}
|
|
},
|
|
},
|
|
},
|
|
},
|
|
|
|
+
|
|
|
|
+ computed: {
|
|
|
|
+ ...mapState(['user']),
|
|
|
|
+ name() {
|
|
|
|
+ return this.$route.query.name;
|
|
|
|
+ },
|
|
|
|
+ id() {
|
|
|
|
+ return this.$route.query.id;
|
|
|
|
+ },
|
|
|
|
+ lessonid() {
|
|
|
|
+ return this.$route.query.lessonid;
|
|
|
|
+ },
|
|
|
|
+ },
|
|
};
|
|
};
|
|
</script>
|
|
</script>
|
|
|
|
|