|
|
@@ -38,7 +38,7 @@
|
|
|
<el-button plain class="download_btn" @click="downloadPaper"
|
|
|
>下载试卷</el-button
|
|
|
>
|
|
|
- <el-button type="primary">提交作答</el-button>
|
|
|
+ <el-button type="primary" @click="SubmitAnswer">提交作答</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="question_list">
|
|
|
@@ -89,11 +89,14 @@
|
|
|
<el-upload
|
|
|
class="img_uploader"
|
|
|
list-type="picture-card"
|
|
|
- :auto-upload="false"
|
|
|
:show-file-list="false"
|
|
|
- action="https://jsonplaceholder.typicode.com/posts/"
|
|
|
+ :headers="{'Authorization': getToken}"
|
|
|
+ :action="uploadUrl"
|
|
|
+ accept="image/*"
|
|
|
multiple
|
|
|
- :on-success="handleAvatarSuccess"
|
|
|
+ :limit="10"
|
|
|
+ :on-exceed="HandleExceed"
|
|
|
+ :on-success="(response, file, fileList)=>HandleUploadSuccess(response, file, fileList,item)"
|
|
|
>
|
|
|
<el-button slot="default" class="upload_btn" plain
|
|
|
>拍照/上传答案</el-button
|
|
|
@@ -101,13 +104,13 @@
|
|
|
</el-upload>
|
|
|
<div
|
|
|
class="upload_list_item"
|
|
|
- v-for="(item, index) in fileList"
|
|
|
+ v-for="(url, index) in item.answer"
|
|
|
:key="index"
|
|
|
- @click="handlePictureCardPreview(item)"
|
|
|
+ @click="HandlePictureCardPreview(url)"
|
|
|
>
|
|
|
- <img :src="item.url" />
|
|
|
+ <img :src="url" />
|
|
|
<i
|
|
|
- @click.stop="handleRemove(file)"
|
|
|
+ @click.stop="HandleRemove(item.answer,index)"
|
|
|
class="el-icon-error upload_list_item_delete"
|
|
|
></i>
|
|
|
</div>
|
|
|
@@ -122,7 +125,7 @@
|
|
|
<el-dialog :visible.sync="dialogVisible">
|
|
|
<div class="dialog_center padding_20">
|
|
|
<div class="dialog_img">
|
|
|
- <img style="width: 100%" :src="dialogImageUrl" />
|
|
|
+ <img style="max-width: 100%" :src="dialogImageUrl" />
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
@@ -161,6 +164,8 @@
|
|
|
</template>
|
|
|
<script>
|
|
|
import QuestionItem from "@/views/targetImprove/components/QuestionItem.vue"; //题目公共组件
|
|
|
+import { getToken } from "@/utils/auth";
|
|
|
+import base from '@/http/common/base.js';
|
|
|
import { mapState } from "vuex";
|
|
|
export default {
|
|
|
components: {
|
|
|
@@ -203,17 +208,8 @@ export default {
|
|
|
"Y",
|
|
|
"Z",
|
|
|
],
|
|
|
- checkbox: [],
|
|
|
- fileList: [
|
|
|
- {
|
|
|
- name: "food.jpeg",
|
|
|
- url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100",
|
|
|
- },
|
|
|
- {
|
|
|
- name: "food2.jpeg",
|
|
|
- url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100",
|
|
|
- },
|
|
|
- ],
|
|
|
+ getToken: getToken(),
|
|
|
+ uploadUrl: '',//上传图片地址
|
|
|
dialogImageUrl: "", //图片预览
|
|
|
dialogVisible: false, //图片预览
|
|
|
dialogPaperVisible: false, //下载试卷
|
|
|
@@ -222,9 +218,14 @@ export default {
|
|
|
},
|
|
|
watch: {},
|
|
|
mounted() {
|
|
|
+ this.GetUploadUrl();
|
|
|
this.GetStudentTargeWaitExercise();
|
|
|
},
|
|
|
methods: {
|
|
|
+ //获取上传图片地址
|
|
|
+ GetUploadUrl(){
|
|
|
+ this.uploadUrl = `${base.prefix}/api/v1/student_upload/oss/upload_filesSele`;
|
|
|
+ },
|
|
|
//待练习知识点
|
|
|
GetStudentTargeWaitExercise() {
|
|
|
this.$api.target
|
|
|
@@ -289,21 +290,58 @@ export default {
|
|
|
//判断题改变
|
|
|
HandleJudgeChange(item) {
|
|
|
item.answer = item.answer || "";
|
|
|
+ this.SubmitQuestionAnswering(item.exerciseQueId,item.answer);
|
|
|
},
|
|
|
//选择题改变
|
|
|
HandleCheckChange(item) {
|
|
|
item.answer = item.answer || [];
|
|
|
+ const answer = item?.answer?.join('') || '';
|
|
|
+ this.SubmitQuestionAnswering(item.exerciseQueId,answer);
|
|
|
+ },
|
|
|
+ // 超出最大数量触发
|
|
|
+ HandleExceed(files, fileList) {
|
|
|
+ this.$message.warning(`最多只能上传10张图片`)
|
|
|
+ },
|
|
|
+ //上传图片成功
|
|
|
+ HandleUploadSuccess(res, file, fileList,item){
|
|
|
+ if(res.code == 200){
|
|
|
+ const url = res?.data?.url || '';
|
|
|
+ item.answer.push(url);
|
|
|
+ const answer = item?.answer?.join(',') || '';
|
|
|
+ this.SubmitQuestionAnswering(item.exerciseQueId,answer);
|
|
|
+ }
|
|
|
},
|
|
|
//删除图片
|
|
|
- handleRemove(file) {
|
|
|
- console.log(file);
|
|
|
+ HandleRemove(answer,index) {
|
|
|
+ answer.splice(index, 1);
|
|
|
+ },
|
|
|
+ //提交答案
|
|
|
+ SubmitQuestionAnswering(exerciseQueId,stuAnswer) {
|
|
|
+ this.$api.target.studentTargeQuestionAnswering({
|
|
|
+ exerciseQueId: exerciseQueId, // 练习试题id
|
|
|
+ stuAnswer: stuAnswer, // 学生答案
|
|
|
+ }).then((res) => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ // this.$message.success('提交成功');
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //提交作答
|
|
|
+ SubmitAnswer(){
|
|
|
+ this.$api.target.studentTargeSubmitExercise({
|
|
|
+ exerciseId: this.exerciseId, // 练习id
|
|
|
+ }).then((res) => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ this.$message.success('提交成功');
|
|
|
+ this.GetStudentTargeWaitExercise();//获取待练习知识点
|
|
|
+ }
|
|
|
+ });
|
|
|
},
|
|
|
//图片预览
|
|
|
- handlePictureCardPreview(file) {
|
|
|
- this.dialogImageUrl = file.url;
|
|
|
+ HandlePictureCardPreview(url) {
|
|
|
+ this.dialogImageUrl = url;
|
|
|
this.dialogVisible = true;
|
|
|
},
|
|
|
- handleAvatarSuccess() {},
|
|
|
//下载试卷
|
|
|
downloadPaper() {
|
|
|
this.dialogPaperVisible = true;
|
|
|
@@ -656,6 +694,7 @@ export default {
|
|
|
|
|
|
.dialog_img {
|
|
|
height: 70vh;
|
|
|
+ text-align: center;
|
|
|
overflow: auto;
|
|
|
}
|
|
|
|