瀏覽代碼

Merge branch 'develop6.0-tmd' of http://52.130.252.100:10000/TEAMMODEL/TEAMModelOS into develop6.0-tmd

Li 3 年之前
父節點
當前提交
0e16ac80d9

+ 96 - 94
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/LessonTestReport.vue

@@ -385,111 +385,113 @@
                             </Carousel>
                         </template>
                     </div>
-                    <div style="width: 50%; margin-left: 20px;">
-                        <div v-for="(exam, indexs) in paperData" :key="indexs" style="margin-bottom: 40px;"
-                             v-show="checkedAnsFilter(false, indexs) || (exam.type === 'compose' && ((checkedAns.includes('right') && exam.rightNum) || (checkedAns.includes('wrong') && !exam.rightNum)))"
-                        >
-                            <div>
-                                <div style="float: right;">
-                                    <span style="font-size: 20px; color:#00ad6c;">{{ exam.getScore }}</span>
-                                        / <span style="font-size: 12px;">{{ exam.score }}{{ $t("studentWeb.exam.score111") }}</span>
-                                </div>
-                                <div style="display: flex; font-size: 16px; margin-bottom: 10px;">
-                                    <span style="margin-right: 10px;">
-                                        <Icon type="md-close-circle" color="#FF5508" size="25"
-                                            v-show="exam.getScore != exam.score"
-                                        />
-                                        <Icon type="md-checkmark-circle" color="#00AD6C" size="25"
-                                            v-show="exam.getScore === exam.score"
-                                        />
-                                    </span>
-                                    <p style="max-width:75px;font-weight:600">{{ indexs + 1 }}.</p>
-                                    <span class="tag-style">{{ getTestType(exam.type) }}</span>
-                                    <!-- <div class="que-item" v-html="exam.question"></div> -->
-                                </div>
-                            </div>
-                            <div>
-                                <div class="item-explain">
-                                    <span class="explain-title">【{{ $t("studentWeb.exam.report.ansRes") }}】</span>
-                                    <div v-if="exam.stuAns.length" class="item-explain-details">
-                                        <span v-for="(stuAns, indexA) in exam.stuAns" :key="indexA" v-html="stuAns"></span>
-                                    </div>
-                                    <div v-if="!exam.stuAns.length" class="item-explain-details">
-                                        <span>{{ $t('studentWeb.exam.report.noAns') }}</span>
-                                    </div>
-                                </div>
-                                <!-- 批注 -->
-                                <!-- <div class="item-explain" v-if="exam.type != 'single' && exam.type != 'multiply' && exam.type != 'judge'">
-                                    <span class="explain-title">【{{ $t("studentWeb.exam.report.mark") }}】</span>
-                                    <div v-if="exam.mark.length" class="item-explain-details">
-                                        <img :src="exam.mark[0].imgUrl" alt="" v-if="exam.mark.length === 1">
-                                        <Tabs v-else type="card">
-                                            <TabPane :label="$t('studentWeb.exam.report.mark') + (mIndex + 1)" v-for="(mDate, mIndex) in exam.mark" :key="mIndex">
-                                                <img :src="mDate.imgUrl" alt="">
-                                            </TabPane>
-                                        </Tabs>
+                    <div style="width: 50%; margin-left: 20px; height: 500px;">
+                        <vuescroll>
+                            <div v-for="(exam, indexs) in paperData" :key="indexs" style="margin-bottom: 40px;"
+                                v-show="checkedAnsFilter(false, indexs) || (exam.type === 'compose' && ((checkedAns.includes('right') && exam.rightNum) || (checkedAns.includes('wrong') && !exam.rightNum)))"
+                            >
+                                <div>
+                                    <div style="float: right;">
+                                        <span style="font-size: 20px; color:#00ad6c;">{{ exam.getScore }}</span>
+                                            / <span style="font-size: 12px;">{{ exam.score }}{{ $t("studentWeb.exam.score111") }}</span>
                                     </div>
-                                    <div v-else class="item-explain-details">{{ $t("studentWeb.exam.report.noMark") }}</div>
-                                </div> -->
-                                <!-- 参考答案 -->
-                                <div class="item-explain">
-                                    <span class="explain-title">【{{ $t("studentWeb.exam.report.testAns") }}】</span>
-                                    <div v-if="exam.answer.length" class="item-explain-details">
-                                        <div v-for="(answerC, indexCA) in exam.answer" :key="indexCA" v-html="answerC"></div>
-                                    </div>
-                                    <div v-if="!exam.answer.length" class="item-explain-details">
-                                        <span>{{ $t('studentWeb.exam.report.noAns') }}</span>
+                                    <div style="display: flex; font-size: 16px; margin-bottom: 10px;">
+                                        <span style="margin-right: 10px;">
+                                            <Icon type="md-close-circle" color="#FF5508" size="25"
+                                                v-show="exam.getScore != exam.score"
+                                            />
+                                            <Icon type="md-checkmark-circle" color="#00AD6C" size="25"
+                                                v-show="exam.getScore === exam.score"
+                                            />
+                                        </span>
+                                        <p style="max-width:75px;font-weight:600">{{ indexs + 1 }}.</p>
+                                        <span class="tag-style">{{ getTestType(exam.type) }}</span>
+                                        <!-- <div class="que-item" v-html="exam.question"></div> -->
                                     </div>
                                 </div>
-                                <!-- 解析 -->
-                                <!-- <div class="item-explain">
-                                    <span class="explain-title">【{{ $t("studentWeb.exam.report.testAnalyse") }}】</span>
-                                    <div class="item-explain-details">
-                                        <div v-html="exam.explain ? exam.explain : $t('studentWeb.exam.report.noAnalyse')"></div>
-                                    </div>
-                                </div> -->
-                                <!-- 知识点 -->
-                                <!-- <div class="item-explain">
-                                    <span class="explain-title">【{{ $t("studentWeb.exam.report.knowledge") }}】</span>
-                                    <div v-if="exam.knowledge && exam.knowledge.length" class="item-explain-details">
-                                        <span v-for="(knowledgeC, indexKC) in exam.knowledge" :key="indexKC" class="knowledge-style">
-                                            {{ knowledgeC }}
-                                        </span>
+                                <div>
+                                    <div class="item-explain">
+                                        <span class="explain-title">【{{ $t("studentWeb.exam.report.ansRes") }}】</span>
+                                        <div v-if="exam.stuAns.length" class="item-explain-details">
+                                            <span v-for="(stuAns, indexA) in exam.stuAns" :key="indexA" v-html="stuAns"></span>
+                                        </div>
+                                        <div v-if="!exam.stuAns.length" class="item-explain-details">
+                                            <span>{{ $t('studentWeb.exam.report.noAns') }}</span>
+                                        </div>
                                     </div>
-                                    <div v-else class="item-explain-details">
-                                        {{ $t("studentWeb.exam.report.noKnowledge") }}
+                                    <!-- 批注 -->
+                                    <!-- <div class="item-explain" v-if="exam.type != 'single' && exam.type != 'multiply' && exam.type != 'judge'">
+                                        <span class="explain-title">【{{ $t("studentWeb.exam.report.mark") }}】</span>
+                                        <div v-if="exam.mark.length" class="item-explain-details">
+                                            <img :src="exam.mark[0].imgUrl" alt="" v-if="exam.mark.length === 1">
+                                            <Tabs v-else type="card">
+                                                <TabPane :label="$t('studentWeb.exam.report.mark') + (mIndex + 1)" v-for="(mDate, mIndex) in exam.mark" :key="mIndex">
+                                                    <img :src="mDate.imgUrl" alt="">
+                                                </TabPane>
+                                            </Tabs>
+                                        </div>
+                                        <div v-else class="item-explain-details">{{ $t("studentWeb.exam.report.noMark") }}</div>
+                                    </div> -->
+                                    <!-- 参考答案 -->
+                                    <div class="item-explain">
+                                        <span class="explain-title">【{{ $t("studentWeb.exam.report.testAns") }}】</span>
+                                        <div v-if="exam.answer.length" class="item-explain-details">
+                                            <div v-for="(answerC, indexCA) in exam.answer" :key="indexCA" v-html="answerC"></div>
+                                        </div>
+                                        <div v-if="!exam.answer.length" class="item-explain-details">
+                                            <span>{{ $t('studentWeb.exam.report.noAns') }}</span>
+                                        </div>
                                     </div>
-                                </div> -->
-                                <!-- 认知层次 -->
-                                <div class="item-explain">
-                                    <span class="explain-title">【{{ $t("studentWeb.exam.report.filed") }}】</span>
-                                    <div class="item-explain-details">
-                                        <div>{{ levelList[exam.field - 1] }}</div>
+                                    <!-- 解析 -->
+                                    <!-- <div class="item-explain">
+                                        <span class="explain-title">【{{ $t("studentWeb.exam.report.testAnalyse") }}】</span>
+                                        <div class="item-explain-details">
+                                            <div v-html="exam.explain ? exam.explain : $t('studentWeb.exam.report.noAnalyse')"></div>
+                                        </div>
+                                    </div> -->
+                                    <!-- 知识点 -->
+                                    <!-- <div class="item-explain">
+                                        <span class="explain-title">【{{ $t("studentWeb.exam.report.knowledge") }}】</span>
+                                        <div v-if="exam.knowledge && exam.knowledge.length" class="item-explain-details">
+                                            <span v-for="(knowledgeC, indexKC) in exam.knowledge" :key="indexKC" class="knowledge-style">
+                                                {{ knowledgeC }}
+                                            </span>
+                                        </div>
+                                        <div v-else class="item-explain-details">
+                                            {{ $t("studentWeb.exam.report.noKnowledge") }}
+                                        </div>
+                                    </div> -->
+                                    <!-- 认知层次 -->
+                                    <div class="item-explain">
+                                        <span class="explain-title">【{{ $t("studentWeb.exam.report.filed") }}】</span>
+                                        <div class="item-explain-details">
+                                            <div>{{ levelList[exam.field - 1] }}</div>
+                                        </div>
                                     </div>
-                                </div>
-                                <!-- 补救资源 -->
-                                <!-- <div class="item-explain">
-                                    <span class="explain-title">【{{ $t("studentWeb.exam.report.repairSource") }}】</span>
-                                    <div class="item-explain-details">
-                                        <span v-if="!exam.repair.length">{{$t("studentWeb.exam.report.noSource")}}</span>
-                                        <div v-if="exam.repair && exam.repair.length" class="repair-box">
-                                            <div v-for="(repairSource, normalIndex) in exam.repair" :key="normalIndex" class="repair-link-wrap-item-box">
-                                                <div class="file-icon">
-                                                    <img :src="$tools.getFileThum(repairSource.type, repairSource.name)"/>
-                                                </div>
-                                                <div class="file-info">
-                                                    <p class="file-name">{{ repairSource.name }}</p>
-                                                    <div>
-                                                        <span @click="onPreview(repairSource)" v-if="repairSource.type !== 'other'">{{ $t('ability.review.preview')}}</span>
-                                                        <span @click="onDownload(repairSource)" v-if="repairSource.type !== 'link'">{{ $t('ability.review.download')}}</span>
+                                    <!-- 补救资源 -->
+                                    <!-- <div class="item-explain">
+                                        <span class="explain-title">【{{ $t("studentWeb.exam.report.repairSource") }}】</span>
+                                        <div class="item-explain-details">
+                                            <span v-if="!exam.repair.length">{{$t("studentWeb.exam.report.noSource")}}</span>
+                                            <div v-if="exam.repair && exam.repair.length" class="repair-box">
+                                                <div v-for="(repairSource, normalIndex) in exam.repair" :key="normalIndex" class="repair-link-wrap-item-box">
+                                                    <div class="file-icon">
+                                                        <img :src="$tools.getFileThum(repairSource.type, repairSource.name)"/>
+                                                    </div>
+                                                    <div class="file-info">
+                                                        <p class="file-name">{{ repairSource.name }}</p>
+                                                        <div>
+                                                            <span @click="onPreview(repairSource)" v-if="repairSource.type !== 'other'">{{ $t('ability.review.preview')}}</span>
+                                                            <span @click="onDownload(repairSource)" v-if="repairSource.type !== 'link'">{{ $t('ability.review.download')}}</span>
+                                                        </div>
                                                     </div>
                                                 </div>
                                             </div>
                                         </div>
-                                    </div>
-                                </div> -->
+                                    </div> -->
+                                </div>
                             </div>
-                        </div>
+                        </vuescroll>
                     </div>
                 </div>
             </div>

+ 27 - 8
TEAMModelOS/ClientApp/src/components/student-web/HomeView/CourseListView.vue

@@ -270,7 +270,8 @@
                 <TabPane :label="$t('studentWeb.courseContent.classRecord')" name="tab5">
                         <div class="list-block-box">
                             <template v-if="recordList.length">
-                                <vuescroll>
+                                <!-- <vuescroll> -->
+                                <Scroll :on-reach-bottom="handleReachTop" :height="550">
                                     <div v-for="(item, index) in recordList" :key="index" @click="toClassRecord(item, index)"
                                         :class="['list-item', ]">
                                         <ul>
@@ -289,7 +290,8 @@
                                             </li>
                                         </ul>
                                     </div>
-                                </vuescroll>
+                                </Scroll>
+                                <!-- </vuescroll> -->
                             </template>
                             <div v-else style="margin-top: 15px; font-size: 15px; text-align: center;">{{ $t('studentWeb.courseContent.noClassRecord') }}</div>
                         </div>
@@ -317,7 +319,9 @@
                 <!-- 同学名单 -->
                 <TabPane :label="$t('studentWeb.courseContent.classmates')" name="tab3">
                     <div v-if="isChangeGroupView == false">
-                        <Table :columns="stuCol" :data="stuList"></Table>
+                        <!-- <vuescroll> -->
+                            <Table :columns="stuCol" :data="stuList" :height="650"></Table>
+                        <!-- </vuescroll> -->
                     </div>
                     <!--小組模式-->
                     <div v-if="isChangeGroupView == true">
@@ -651,7 +655,8 @@ export default {
             showStuList: false,
             list: "stuList",
             needParam: undefined,
-            showFixList: []
+            showFixList: [],
+            continuationToken: null,
         };
     },
 
@@ -1002,6 +1007,7 @@ export default {
                 this.findStuInfor(this.courseNow)
                 this.needParam.classes = [this.courseNow.stuList]
             }
+            this.recordList = []
             this.getRecordList()
             // 螢幕寬度<767px時,直接關掉sidebar
             if (window.innerWidth <= 991) {
@@ -1023,8 +1029,20 @@ export default {
             var S = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()) + " "
             return Y + M + D + H + Min;
         },
+        handleReachTop () {
+            return new Promise(resolve => {
+                setTimeout(() => {
+                    if(this.continuationToken) {
+                        this.getRecordList()
+                    } else {
+                        this.$Message.warning("没有更多数据")
+                    }
+                    resolve()
+                }, 2000);
+            });
+        },
         getRecordList() {
-            this.recordList = []
+            // this.recordList = []
             let param = {
                 tmdid: this.courseNow.teaId,
                 scope: this.courseNow.scope, //school:传school,private:传tmdid
@@ -1036,9 +1054,9 @@ export default {
                 doubleGreen: false,
                 quality: false,
                 DESC: "startTime",
-                pageCount: 6, //返回六条数据(分页)
+                pageCount: 10, //返回六条数据(分页)
                 today: false,
-                continuationToken: null, //返回的有值的话,下次查询就要用这个值
+                continuationToken: this.continuationToken, //返回的有值的话,下次查询就要用这个值
             }
             param.scope === "school" ? param.school = this.userInfo.azp : param.tmdid = this.courseNow.creatorId
             this.$api.studentWeb.getClassRecord(param).then(res => {
@@ -1051,7 +1069,8 @@ export default {
                         let hour = parseInt(min / 60)
                         item.time = `${hour < 10 ? ('0' + hour) : hour}:${mins < 10 ? ('0' + mins) : mins}:${sec < 10 ? ('0' + sec) : sec}`
                     })
-                    this.recordList = res.lessonRecords
+                    this.recordList.push.apply(this.recordList, res.lessonRecords)
+                    this.continuationToken = res.continuationToken
                 }
             })
         },

+ 2 - 1
TEAMModelOS/ClientApp/src/view/ability/Review.vue

@@ -452,7 +452,8 @@ export default {
       this.curTaskIndexArr = abilityDetail.stds.map(i => 0)
       abilityDetail.uploads = this.reviewData.uploads
       if (this.mode !== 'self') {
-        this.stdFileArr = abilityDetail.stds.map(i => abilityDetail.uploads.find(j => j.stdid === i.id).urls)
+        this.stdFileArr = abilityDetail.stds.map(i => abilityDetail.uploads.find(j => j.stdid === i.id) ? abilityDetail.uploads.find(j => j.stdid === i.id).urls : [])
+        // this.stdFileArr = abilityDetail.uploads.filter(i => abilityDetail.stds.map(j => j.id).includes(i.stdid)).map(k => k.urls)
         abilityDetail.targetId = this.reviewData.targetId
         abilityDetail.targetName = this.reviewData.targetName
       }

+ 1 - 1
TEAMModelOS/ClientApp/src/view/learnactivity/ExamMgt.vue

@@ -402,7 +402,7 @@ export default {
                 info.progColor = '#2d8cf0'
             } else if (progress == 'finish') {
                 info.progText = this.$t('learnActivity.mgtScEv.finish')
-                info.progColor = '#515a6e'
+                info.progColor = '#75787d'
             }
             if (isScore === 0) {
                 info.scoreText = this.$t('learnActivity.mgtScEv.scoreStatus')

+ 1 - 1
TEAMModelOS/ClientApp/src/view/research-center/ResearchCenterMock.vue

@@ -468,7 +468,7 @@
 			overlayContent() {
 				let curItem = this.introVideos[this.curSwiperIndex]
 				// return curItem.teacher + '-' + curItem.name + '【' + curItem.subject + '】'+ '【' + curItem.grade + '】'
-				return `${curItem.tmdname}-${curItem.grade}-${curItem.subject} 【${curItem.name}】`
+				return `${curItem.teacher}-${curItem.grade}-${curItem.subject} 【${curItem.name}】`
 			},
 			emptyPoster(){
 				return require('@/assets/image/no_data.png')