Ver Fonte

Merge branch 'develop3.0-tmd' of http://106.12.23.251:10080/TEAMMODEL/TEAMModelOS into develop3.0-tmd

liqk há 4 anos atrás
pai
commit
9ae2a95fdd

+ 10 - 6
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/PaperTest.vue

@@ -103,7 +103,7 @@
                         </div>
                         <!--问答题-->
                         <div class="compose-content" v-if="getQue(queNo).type == 'subjective' || getQue(queNo).type == 'complete'">
-                            <Compose ref="compose" :itemInfo="getQue(queNo)" :textData="checkers[queNo]" :index="queNo" @dataGet="getComposeAns"></Compose>
+                            <Compose ref="compose" :itemInfo="getQue(queNo)" :close="!closeTest" :textData="checkers[queNo]" :index="queNo" @dataGet="getComposeAns"></Compose>
                         </div>
                         <!--填空题-->
                         <!--<div v-if="getQue(queNo).type == 'complete'">
@@ -117,13 +117,13 @@
                         <!--判断题选项-->
                         <div v-if="getQue(queNo).type == 'judge'" align="center">
                             <label class="testBtn yesNoBtn">
-                                <input type="radio" value="A" v-model="checkers[queNo][0]" />
+                                <input type="radio" value="A" v-model="checkers[queNo][0]"  :disabled="!closeTest" />
                                 <div class="testbg">
                                     <Icon type="ios-radio-button-off" />
                                 </div>
                             </label>
                             <label class="testBtn yesNoBtn">
-                                <input type="radio" value="B" v-model="checkers[queNo][0]" />
+                                <input type="radio" value="B" v-model="checkers[queNo][0]"  :disabled="!closeTest" />
                                 <div class="testbg">
                                     <Icon type="md-close" />
                                 </div>
@@ -137,7 +137,9 @@
                                 <input type="checkbox"
                                        :value="getQue(queNo).option[index].code"
                                        v-model="checkers[queNo]"
-                                       @click="getAns(queNo,index)" />
+                                       @click="getAns(queNo,index)"
+                                        :disabled="!closeTest"
+                                       />    
                                 <div class="testbg">
                                     <Row :gutter="10">
                                         <i-col :xs="16" :sm="16" :md="16" :lg="16">
@@ -391,17 +393,19 @@
             },
             closetest: function () {
                 this.WarmMessageisOpen = false
+                console.log('保存信息')
                 if (this.checkers.length) {
                     this.isLoading = true;
+                    let codes = this.$store.getters.getItemTitle.code.split('-')
                     let req = {
                         id: this.$store.getters.getItemTitle.id,
                         answer: this.checkers,
                         studentId: this.$store.state.userInfo.sub,
                         classId: this.$store.state.user.studentProfile.classinfo.id,
-                        subjectId: this.$store.getters.getPaperInfo.subjectId,
+                        subjectId: this.$store.getters.getExamInfo.subject.id,
                         multipleRule: this.$store.getters.getExamInfo.multipleRule,
                         paperId: this.$store.getters.getPaperInfo.id,
-                        school: this.$store.getters.getItemTitle.school
+                        code: codes[1]
                     }
                     this.$api.studentWeb.SaveStuExamPaper(req).then(res => {
                         if (res) {

+ 6 - 3
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/PaperView.vue

@@ -97,11 +97,12 @@
                 this.chooseData = {}
                 if (this.$store.getters.getItemTitle.name !== undefined) {
                     let paper = this.$store.getters.getItemTitle
+                    let codes = this.$store.getters.getItemTitle.code.split('-')
                     let req = {
                         id: paper.id,
-                        code: paper.code,
+                        //code: paper.code,
                         studentId: this.$store.state.userInfo.sub,
-                        school: paper.school
+                        code: codes[1]
                     }
                     this.$api.studentWeb.FindStudentPaper(req).then(res => {
                         let resData = res
@@ -133,7 +134,8 @@
                 this.$store.commit("ToggleLessonTestPop");
             },
             opentestWithSubject(item) {
-                if (item.code !== '') {
+                console.log(item)
+                if (item !== undefined) {
                     this.getPaper(item)
                 }
             },
@@ -143,6 +145,7 @@
                 this.selectData = {}
                 this.chooseData = {}
                 if (data.blob !== undefined && data.blob !== "") {
+                    console.log('试卷数据',data)
                     let key = data.code.split('-')
                     let code = {
                         scope: data.scope,

+ 7 - 0
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/composePaper.vue

@@ -25,6 +25,10 @@
                 default: () => {
                     return {}
                 }
+            },     
+            close: {
+                type: Boolean,
+                default: false
             }
         },
         data() {
@@ -72,6 +76,9 @@
                 // editor.customConfig.uploadImgServer = '/upload'  // 上传图片到服务器
                 this.$editorTools.addCanvas(this, this.editor)
                 this.editor.create();
+                if (this.close) {
+                    this.editor.disable()
+                }
                 this.editor.txt.clear()
                 if (this.examInfo.length > 0) {
                     this.editor.txt.html(this.examInfo[0])

+ 7 - 67
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventList.vue

@@ -19,12 +19,11 @@
                 <div>
                     <Dropdown>
                         <a href="javascript:void(0)" class="list-title">
-                            <span v-if="getCurrentLang() == 'tw'">{{ selectedEventStatusNow }}</span>
-                            <span v-if="getCurrentLang() == 'en'">{{ transStatustoEn(selectedEventStatusNow) }}</span>
+                            <span >{{ selectedEventStatusNow }}</span>
                             <Icon type="ios-arrow-down"></Icon>
                         </a>
                         <DropdownMenu slot="list">
-                            <div @click="sentEventStatus('所有活動狀態')">
+                            <div @click="sentEventStatus('所有活动状态')">
                                 <DropdownItem>{{ $t("studentWeb.allStatus") }}</DropdownItem>
                             </div>
                             <div @click="sentEventStatus('未完成')">
@@ -33,13 +32,13 @@
                             <div @click="sentEventStatus('已完成')">
                                 <DropdownItem>{{ $t("studentWeb.Fineshed") }}</DropdownItem>
                             </div>
-                            <div @click="sentEventStatus('已逾')">
+                            <div @click="sentEventStatus('已逾')">
                                 <DropdownItem>{{ $t("studentWeb.Timeout") }}</DropdownItem>
                             </div>
-                            <div @click="sentEventStatus('評量補考')">
+                            <div @click="sentEventStatus('评测补考')">
                                 <DropdownItem divided>{{ $t("studentWeb.makeupExam") }}</DropdownItem>
                             </div>
-                            <div @click="sentEventStatus('作業補交')">
+                            <div @click="sentEventStatus('作业补交')">
                                 <DropdownItem>{{ $t("studentWeb.makeupHW") }}</DropdownItem>
                             </div>
                         </DropdownMenu>
@@ -77,65 +76,6 @@
                     <br />
                     {{ $t("studentWeb.empty") }}
                 </div>
-                <!---剛剛完成的-->
-                <!--v-show="
-                dropDownShowCondition(selectedEventStatusNow, item) &&
-                finishedcondition(item) &&
-                item.isDone == false &&
-                eventPageType.includes(item.eventType) == true &&
-                showSelected(item)
-                "-->
-                <!--<li class="list-item"
-                    :class="{ 'list-item-selected': selectedCondition(item) }"
-                    v-for="(item, index) in eventList"
-                    :key="'a' + index"
-                    @click="sentSelectedEventTitle(item)">
-                    <ul>
-                        <li class="list-item-icon">
-                            <svg-icon v-if="item.eventType == '作業'" icon-class="doc" />
-                            <svg-icon v-if="item.eventType == '課前預習'"
-                                      icon-class="selflearninginTime" />-->
-                <!--<svg-icon v-if="item.eventType == 'exam'"
-                          icon-class="test"
-                          class="reset-testIcon" />-->
-                <!--<svg-icon v-if=" item.eventType == 'exam'"
-                                  icon-class="multiTest"
-                                  class="reset-testIcon" />
-                        <svg-icon v-if="item.eventType == '投票'" icon-class="vote" />
-                        <svg-icon v-if="item.eventType == '問卷'"
-                                  icon-class="quesnaire" />
-                    </li>
-                    <li class="list-item-info"
-                        :class="{
-                  'list-item-infonofeedback':
-                    isNoFeedback(item) && finishedcondition(item) == false,
-                }">
-                        <p class="list-item-title"
-                           :class="{ 'list-item-titleEn': getCurrentLang() == 'en' }">-->
-                <!--<span
-                  class="list-item-typeMark"
-                  v-if="getCurrentLang() == 'tw'"
-                  >{{ item.eventType }}</span
-                >-->
-                <!--<span class="list-item-typeMark">评量</span>
-                    <span class="list-item-typeMark"
-                          v-if="getCurrentLang() == 'en'">{{ transTypetoEn(item.eventType) }}</span>
-
-                    <span>{{ item.name }}</span>
-                </p>-->
-                <!--<p class="list-item-time">{{ finishedItemtime(item) }} 完成</p>-->
-                <!--</li>-->
-                <!--<li class="list-item-isDone">
-                    <svg-icon icon-class="isDone" class="isDone-Icon" />
-                </li>-->
-                <!--</ul>
-                </li>-->
-                <!--剛剛完成的-->
-                <!--v-show="
-                dropDownShowCondition(selectedEventStatusNow, item) &&
-                showSelected(item) &&
-                eventPageType.includes(item.eventType) == true &&
-                !finishedcondition(item) "-->
                 <li :id="`event${item.eventID}`"
                     class="list-item"
                     @click="sentSelectedEventTitle(item)"
@@ -159,7 +99,7 @@
                             :class="{'list-item-infonofeedback': isNoFeedback(item) && finishedcondition(item) == false}"
                             v-if="item.eventType == 'exam'">
                             <p class="list-item-title">
-                                <span class="list-item-typeMark">评量</span>
+                                <span class="list-item-typeMark">{{item.scope == 'school' ? '校级评测' : '评测'}}</span>
                                 <span class="list-item-typeMark"
                                       v-if="getCurrentLang() == 'en'">{{ transTypetoEn(item.eventType) }}</span>
                                 <span>{{ item.name }}</span>
@@ -242,7 +182,7 @@
                 search: "",
                 alreadyScrolltimes: 0,
                 defaultFirstItem: "",
-                selectedEventStatusNow: "所有活動狀態",
+                selectedEventStatusNow: "所有活动状态",
                 hideIconbtn: false,
                 isListNoItem: false, //清單為空
                 eventList: []

+ 6 - 2
TEAMModelOS/ClientApp/src/utils/editorTools.js

@@ -361,6 +361,7 @@ export default {
 	},
 
 	
+	/* 移除上传的音视频富文本src中的HOST */
 	doRemoveMideaHost(exerciseItem) {
 		console.log(exerciseItem)
 		let isSubjective = exerciseItem.type === 'complete' || exerciseItem.type === 'subjective' || exerciseItem.type === 'compose'
@@ -399,7 +400,7 @@ export default {
 		})
 	},
 
-
+	/* 转换富文本内容中的base64数据 进行压缩处理 */
 	transBase64Src(exerciseItem) {
 		var srcReg = /<img [^>]*src=['"]([^'"]+)[^>]*>/g;
 		var heightReg = /<img [^>]*height=['"]([^'"]+)[^>]*>/g;
@@ -483,6 +484,9 @@ export default {
 						if(!item){
 							r('')
 							return
+						}else if(Array.isArray(item) && !item.length){
+							r([])
+							return
 						}
 						item.replace(srcReg, async (match, capture) => {
 							imgList.push(match);
@@ -539,7 +543,7 @@ export default {
 
 	/**
 	 * 压缩图片
-	 *@param img 被压缩的img对象
+	 * @param img 被压缩的img对象
 	 * @param type 压缩后转换的文件类型
 	 * @param mx 触发压缩的图片最大宽度限制
 	 * @param mh 触发压缩的图片最大高度限制

+ 3 - 2
TEAMModelOS/ClientApp/src/utils/evTools.js

@@ -292,9 +292,9 @@ export default {
 								itemJson.exercise.option = itemJson.item[0].option
 								itemJson.exercise.id = itemJson.id 
 								itemJson.exercise.pid = itemJson.pid 
-								itemJson.exercise.blob = path + '/' + item.url
+								itemJson.exercise.blob = path + '/' + item.url // 添加blob是方便在保存试卷是 refresh 与导入的试题区分开
 								itemJson.exercise.score = item.scoring ? item.scoring.score : 0,
-								itemJson.exercise = await this.doAddHost(itemJson.exercise,paper.name)
+								itemJson.exercise = await this.doAddHost(itemJson.exercise,paper.name) // 检测试题中的富文本 为有src为相对路径的音视频文件添加blob的HOST地址
 								resolve(itemJson.exercise)
 							}catch(e){
 								reject(e)
@@ -377,6 +377,7 @@ export default {
 		return new Promise(async (r, j) => {
 			// 根据试卷的Blob地址 去读取JSON文件
 			let sasString = paper.scope === 'school' ? await $tools.getSchoolSas(paper.code) : await $tools.getPrivateSas(paper.code)
+			console.log(sasString)
 			try {
 				console.log(paper.blob + sasString.sas)
 				let jsonInfo = await $tools.getFile(paper.blob + sasString.sas)

+ 1 - 1
TEAMModelOS/ClientApp/src/view/evaluation/index/CreateExercises.less

@@ -138,7 +138,7 @@ exersices-attr-diff {
 
 .ev-container .w-e-toolbar{
     font-size:14px;
-    z-index:1000 !important;
+    z-index:auto !important;
 	background-color: #f1f1f1;
 }
 .ev-container .w-e-toolbar .w-e-menu {

+ 10 - 13
TEAMModelOS/ClientApp/src/view/learnactivity/AutoCreateNew.vue

@@ -156,19 +156,6 @@
 				]
 			}
 		},
-		created() {
-			this.getSchoolBaseInfo().then(res => {
-				if (!res) return
-				if (res.period.length) {
-					this.periodList = res.period
-					this.periodCode = res.period[0].id
-					this.subjectList = res.period[0].subjects
-					this.subjectCode = this.subjectList.length ? this.subjectList[0].id : ''
-				}
-				
-				
-			})
-		},
 		methods: {
 
 			/** 获取当前学校基础数据 */
@@ -263,6 +250,16 @@
 				this.filterOrigin = ['school']
 				this.schoolRate = 100
 			}
+			
+			this.getSchoolBaseInfo().then(res => {
+				if (!res) return
+				if (res.period.length) {
+					this.periodList = res.period
+					this.periodCode = this.period || res.period[0].id
+					this.subjectList = res.period.filter(i => i.id === this.periodCode)[0].subjects
+					this.subjectCode = this.subject ? this.subject : (this.subjectList.length ? this.subjectList[0].id : '')
+				}
+			})
 		},
 		computed: {
 			includeSchool() {

+ 2 - 0
TEAMModelOS/ClientApp/src/view/learnactivity/ManualCreate.vue

@@ -79,6 +79,8 @@
                             <Checkbox label="judge">判断</Checkbox>
                             <Checkbox label="complete">填空</Checkbox>
                             <Checkbox label="subjective">问答</Checkbox>
+                            <Checkbox label="connector">连线</Checkbox>
+                            <Checkbox label="correct">改错</Checkbox>
                             <Checkbox label="compose">综合</Checkbox>
                         </CheckboxGroup>
                     </div>

+ 1 - 1
TEAMModelOS/Controllers/Common/ExamController.cs

@@ -339,7 +339,7 @@ namespace TEAMModelOS.Controllers
                         result.studentAnswers.Add(new List<string>());
                     }
                     string FileName = result.examId + "/" + result.subjectId+"/" +studentId ;
-                    string blob = await _azureStorage.UploadFileByContainer("hbcn", ans.ToJsonString(), "exam", FileName +"/"+ "ans.json");
+                    string blob = await _azureStorage.UploadFileByContainer(school.ToString(), ans.ToJsonString(), "exam", FileName +"/"+ "ans.json");
                     result.studentAnswers[index].Add(blob);
 
                     for (int i = 0; i < ans.Count; i++)