瀏覽代碼

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

CrazyIter_Bin 4 年之前
父節點
當前提交
392f1f2786

+ 8 - 3
TEAMModelOS/ClientApp/src/common/UploadModal.vue

@@ -271,6 +271,7 @@ export default {
         },
         // 确认上传文件
         confirmUpload(file, fileType, index) {
+            console.log(fileType)
             let extension = this.uploadedList[index].extension
             let _this = this
             this.containerClient.upload(file, fileType, {
@@ -338,7 +339,7 @@ export default {
                     }
                 }
             ).finally(() => {
-                if (extension !== 'PPTX' && extension !== 'HTEX') {
+                if (fileType != 'video' && fileType != 'image' && extension !== 'PPTX' && extension !== 'HTEX') {
                     this.counterReduce()
                 }
             })
@@ -364,7 +365,9 @@ export default {
                 err => {
                     console.log(this.$t('updModal.compressImgErr'))
                 }
-            )
+            ).finally(()=>{
+                this.counterReduce()
+            })
         },
         //处理视频封面
         async uploadPoater(file) {
@@ -379,7 +382,9 @@ export default {
                 err => {
                     console.log(this.$t('updModal.posterErr'))
                 }
-            )
+            ).finally(()=>{
+                this.counterReduce()
+            })
         }
     },
     created() {

+ 3 - 1
TEAMModelOS/ClientApp/src/locale/lang/zh-CN/cusMgt.js

@@ -111,7 +111,9 @@ export default {
     resetPwContent3:'确认批量重置',
     resetPwContent4:'个学生的密码',
     resetPwOk:'重置成功',
-    noMgtClass:'暂无您管理的班级',
+    noMgtClass1:'暂未加入学校',
+    noMgtClass2:'学校暂未设置您为班主任',
+    toJoin:'前往申请加入学校',
     groupNameHolder:'请设置组名',
     edtiGroupName:'修改组名',
     addGroup:'新增组别',

+ 3 - 1
TEAMModelOS/ClientApp/src/locale/lang/zh-TW/cusMgt.js

@@ -111,7 +111,9 @@ export default {
     resetPwContent3:'確認批量重置',
     resetPwContent4:'個學生的密碼',
     resetPwOk:'重置成功',
-    noMgtClass: '暫無您管理的班級',
+    noMgtClass1: '暫未加入學校',
+    noMgtClass2: '學校暫未設置您為班主任',
+    toJoin:'前往申請加入學校',
     groupNameHolder: '請設定組名',
     edtiGroupName: '修改組名',
     addGroup: '新增組別',

+ 5 - 2
TEAMModelOS/ClientApp/src/view/classmgt/ManageClass.vue

@@ -45,7 +45,10 @@
                         <span>{{row.groupName ? row.groupName : $t('cusMgt.noGroup')}}</span>
                     </template>
                 </Table>
-                <EmptyData v-else :textContent="$t('cusMgt.noMgtClass')" :top="150"></EmptyData>
+                <EmptyData v-else :textContent="$store.state.userInfo.hasSchool ? $t('cusMgt.noMgtClass2') : $t('cusMgt.noMgtClass1')" :top="150"></EmptyData>
+                <p style="text-align:center" v-show="!$store.state.userInfo.hasSchool">
+                    <router-link to="/home/settings">{{$t('cusMgt.toJoin')}}</router-link>
+                </p>
             </vuescroll>
         </div>
         <!-- 分组模式 -->
@@ -412,7 +415,7 @@ export default {
                 let num = surplus == 0 ? maxCount : i < surplus ? maxCount : maxCount - 1 //每组实际人数
                 for (let j = 0; j < num; j++) {
                     let startIndex = i + (j * this.groupNum)
-                    this.$set(this.classList[this.curClassIndex].students[startIndex], 'groupId', (i + 1)+'')
+                    this.$set(this.classList[this.curClassIndex].students[startIndex], 'groupId', (i + 1) + '')
                     this.$set(this.classList[this.curClassIndex].students[startIndex], 'groupName', (i + 1) + this.$t('cusMgt.groupUnit'))
                 }
             }

+ 275 - 0
TEAMModelOS/ClientApp/src/view/learnactivity/markpaper/Compare.vue

@@ -0,0 +1,275 @@
+<template>
+    <div id="data-compare-box"></div>
+</template>
+<script>
+import elementResizeDetectorMaker from "element-resize-detector"
+export default {
+    data() {
+        return {
+            techScoreGau: undefined,
+            xData: [ '最低分', '最高分', '平均分','标准差'],
+            // lineData: [100, 100, 100, 100, 100, 100, 100],
+            myData: [3, 20, 62, 34, 55, 65, 33],
+            allData: [11, 38, 23, 39, 66, 66, 79],
+            timeLineData: [1],
+            legend: ['我的数据', '集体的数据'],
+            background: "#2b2a2f", //背景 
+            textColor: "#fff",
+            lineColor: "rgba(255,255,255,0.2)",
+            colors: [{
+                borderColor: "rgba(227,161,96,1)",
+                start: "rgba(227,161,96,0.8)",
+                end: "rgba(227,161,96,0.3)"
+            },
+            {
+                borderColor: "rgba(0,222,255,1)",
+                start: "rgba(0,222,255,0.3)",
+                end: "rgba(0,222,255,0.8)"
+            }],
+            scale: 2,
+            option: {
+                baseOption: {},
+                options: []
+            }
+        }
+    },
+    mounted() {
+        this.techScoreGau = this.$echarts.init(document.getElementById('data-compare-box'))
+        this.techScoreGau.setOption(this.option)
+        this.erd = elementResizeDetectorMaker()
+        this.erd.listenTo(document.getElementById("data-compare-box"), () => {
+            this.$nextTick(() => {
+                //监听到事件后执行的业务逻辑
+                this.techScoreGau.resize()
+            })
+        })
+    },
+    created() {
+        this.option.baseOption = {
+            backgroundColor: this.background,
+            timeline: {
+                show: false,
+                top: 0,
+                data: []
+            },
+            legend: {
+                top: '5px',
+                left: '5px',
+                itemWidth: 10,
+                itemHeight: 10,
+                icon: 'horizontal',
+                textStyle: {
+                    color: '#ddd',
+                    fontSize: 11,
+                },
+                data: this.legend
+            },
+            grid: [
+                {
+                    show: false,
+                    left: '5%',
+                    top: '40px',
+                    bottom: '0',
+                    containLabel: true,
+                    width: '37%'
+                }, {
+                    show: false,
+                    left: '54%',
+                    top: '40px',
+                    bottom: '0',
+                    width: '0%'
+                },
+                {
+                    show: false,
+                    right: '2%',
+                    top: '40px',
+                    bottom: '0',
+                    containLabel: true,
+                    width: '37%'
+                }
+            ],
+            xAxis: [{
+                type: 'value',
+                inverse: true,
+                axisLine: {
+                    show: false
+                },
+                axisTick: {
+                    show: false
+                },
+                position: 'bottom',
+                axisLabel: {
+                    show: false,
+                    color: this.textColor
+                },
+                splitLine: {
+                    show: false,
+                    lineStyle: {
+                        color: this.lineColor
+                    }
+                },
+            }, {
+                gridIndex: 1,
+                show: false
+            }, {
+                gridIndex: 2,
+                axisLine: {
+                    show: false
+                },
+                axisTick: {
+                    show: false
+                },
+                position: 'bottom',
+                axisLabel: {
+                    show: false,
+                    color: this.textColor
+                },
+                splitLine: {
+                    show: false,
+                    lineStyle: {
+                        color: this.lineColor
+                    }
+                },
+            }],
+            yAxis: [{
+                type: 'category',
+                inverse: true,
+                position: 'right',
+                axisLine: {
+                    show: true,
+                    lineStyle: {
+                        color: this.lineColor
+                    }
+                },
+                axisTick: {
+                    show: false
+                },
+                axisLabel: {
+                    show: false
+                },
+                data: this.xData
+            }, {
+                gridIndex: 1,
+                type: 'category',
+                inverse: true,
+                position: 'left',
+                axisLine: {
+                    show: false
+                },
+                axisTick: {
+                    show: false
+                },
+                axisLabel: {
+                    show: true,
+                    textStyle: {
+                        color: '#ffffff',
+                        fontSize: 11
+                    },
+                    align: "center"
+
+                },
+                data: this.xData.map(function (value) {
+                    return {
+                        value: value,
+                        textStyle: {
+                            align: 'center'
+                        }
+                    }
+                })
+            }, {
+                gridIndex: 2,
+                type: 'category',
+                inverse: true,
+                position: 'left',
+                axisLine: {
+                    show: true,
+                    lineStyle: {
+                        color: this.lineColor
+                    }
+                },
+                axisTick: {
+                    show: false
+                },
+                axisLabel: {
+                    show: false
+
+                },
+                data: this.xData
+            }],
+            series: []
+        }
+        this.option.baseOption.timeline.data.push(this.timeLineData[0])
+        this.option.options.push({
+            series: [{
+                name: "我的数据",
+                type: "bar",
+                barWidth: 20,
+                // stack: "1",
+                itemStyle: {
+                    normal: {
+                        color: new this.$echarts.graphic.LinearGradient(0, 0, 1, 0, [{
+                            offset: 0,
+                            color: this.colors[0].start
+                        },
+                        {
+                            offset: 1,
+                            color: this.colors[0].end
+                        }
+                        ]),
+                    }
+                },
+                label: {
+                    normal: {
+                        position: 'left',
+                        show: true,
+                        color:'#ddd',
+                        fontSize:10
+                    }
+                },
+                data: this.myData,
+                animationEasing: "elasticOut"
+            },
+            {
+                name: "集体的数据",
+                type: "bar",
+                stack: "2",
+                barWidth: 20,
+                xAxisIndex: 2,
+                yAxisIndex: 2,
+                itemStyle: {
+                    normal: {
+                        color: new this.$echarts.graphic.LinearGradient(0, 0, 1, 0, [{
+                            offset: 0,
+                            color: this.colors[1].start
+                        },
+                        {
+                            offset: 1,
+                            color: this.colors[1].end
+                        }
+                        ]),
+                    },
+                },
+                label: {
+                    normal: {
+                        position: 'right',
+                        show: true,
+                        color:'#ddd',
+                        fontSize:10
+                    }
+                },
+                data: this.allData,
+                animationEasing: "elasticOut"
+            }
+            ]
+        })
+    }
+}
+</script>
+<style lang="less" scoped>
+#data-compare-box {
+    width: 400px;
+    height: 200px;
+}
+</style>
+<style>
+</style>

+ 2 - 2
TEAMModelOS/ClientApp/src/view/learnactivity/markpaper/MarkData.vue

@@ -2,7 +2,7 @@
     <div class="mark-data-wrap">
         <vuescroll>
             <!-- 活动阶段 -->
-            <div class="setting-block">
+            <!-- <div class="setting-block">
                 <p class="block-title">{{$t('learnActivity.mark.stage')}}</p>
                 <div class="setting-content step-content">
                     <Steps :current="2" class="mark-step">
@@ -12,7 +12,7 @@
                         <Step :title="$t('learnActivity.mark.data')" content=""></Step>
                     </Steps>
                 </div>
-            </div>
+            </div> -->
             <!-- 数据概览 -->
             <div class="setting-block">
                 <p class="block-title">{{$t('learnActivity.mark.dataView')}}</p>

+ 100 - 0
TEAMModelOS/ClientApp/src/view/learnactivity/markpaper/ProgPie.vue

@@ -0,0 +1,100 @@
+<template>
+    <div id="mark-prog-pie"></div>
+</template>
+<script>
+import elementResizeDetectorMaker from "element-resize-detector"
+export default {
+    data() {
+        return {
+            techScoreGau: undefined,
+            option: {
+                // title: {
+                //     text: '阅卷进度',
+                //     left: 'center',
+                //     textStyle: {
+                //         color: '#ddd',
+                //         fontSize: 12
+                //     }
+                // },
+                tooltip: {
+                    trigger: 'item',
+                    // formatter: '{a} <br/>{b} : {c} ({d}%)'
+                    formatter: '{b} : {c} ({d}%)'
+                },
+                legend: {
+                    top: 10,
+                    itemWidth: 10,
+                    itemHeight: 10,
+                    left: 'center',
+                    data: ['已阅', '进行中', '未阅'],
+                    textStyle: {
+                        color: '#ddd',
+                        fontSize: 11,
+                    },
+                },
+                series: [
+                    {
+                        type: 'pie',
+                        radius: '75%',
+                        center: ['50%', '60%'],
+                        selectedMode: 'single',
+                        data: [
+                            {
+                                value: 510,
+                                name: '已阅',
+                                itemStyle: {
+                                    color: "#9ff080"
+                                },
+                            },
+                            {
+                                value: 434,
+                                name: '进行中',
+                                itemStyle: {
+                                    color: "#5c7bd9"
+                                },
+                            },
+                            {
+                                value: 335,
+                                name: '未阅',
+                                itemStyle: {
+                                    color: "#ffdc60"
+                                },
+                            }
+                        ],
+
+                        label: {
+                            show: false
+                        },
+                        emphasis: {
+                            itemStyle: {
+                                shadowBlur: 10,
+                                shadowOffsetX: 0,
+                                shadowColor: 'rgba(0, 0, 0, 0.5)'
+                            }
+                        }
+                    }
+                ]
+            }
+        }
+    },
+    mounted() {
+        this.techScoreGau = this.$echarts.init(document.getElementById('mark-prog-pie'))
+        this.techScoreGau.setOption(this.option)
+        this.erd = elementResizeDetectorMaker()
+        this.erd.listenTo(document.getElementById("mark-prog-pie"), () => {
+            this.$nextTick(() => {
+                //监听到事件后执行的业务逻辑
+                this.techScoreGau.resize()
+            })
+        })
+    }
+}
+</script>
+<style lang="less" scoped>
+#mark-prog-pie {
+    width: 400px;
+    height: 200px;
+}
+</style>
+<style>
+</style>

+ 36 - 21
TEAMModelOS/ClientApp/src/view/newcourse/MyCourse.vue

@@ -414,6 +414,11 @@ export default {
                 }
             ],
             listColumn: [
+                {
+                    type: 'selection',
+                    align: 'center ',
+                    width: '150'
+                },
                 {
                     title: ' ',
                     slot: 'picture',
@@ -737,31 +742,43 @@ export default {
                     content: `${this.$t('cusMgt.delStuContent')}${names.join(', ')}?`,
                     onOk: () => {
                         this.listLoading = true
-                        this.delSelection.forEach(item => {
-                            let index = this.courseListShow[this.curCusIndex].classes[this.curClassIndex].students.findIndex(stu => {
-                                return stu.id == item.id
-                            })
-                            this.courseListShow[this.curCusIndex].classes[this.curClassIndex].students.splice(index, 1)
+                        let delIds = this.delSelection.map(item => {
+                            return item.id
+                        })
+                        //删除学生更新stulist
+                        // 当前名单对应的课程安排用于更新UI
+                        let schedule = this.courseListShow[this.curCusIndex].schedule.find(item => {
+                            return item.stulist == this.teaClassList[this.curClassIndex].stulist && item.classId == '' //只有自定名单能添加学生,所以classId == ‘’
                         })
-                        this.$api.schoolSetting.classUpsert({
-                            classroom: this.courseListShow[this.curCusIndex].classes[this.curClassIndex],
-                            option: 'update',
-                            school_code: this.$store.state.userInfo.TEAMModelId
-                        }).then(
-                            (res) => {
-                                if (!res.error) {
-                                    this.selections = []
-                                    this.$Message.success(this.$t('cusMgt.delOk'))
-                                } else {
-                                    this.$Message.error(this.$t('cusMgt.delErr'))
+                        //当前名单完整信息 用于更新名单API
+                        let stulist = this.stuList.find(item => {
+                            return item.id == this.teaClassList[this.curClassIndex].stulist
+                        })
+                        for (let i = 0; i < stulist.students.length; i++) {
+                            if (delIds.indexOf(stulist.students[i].id) > -1) {
+                                stulist.students.splice(i, 1)
+                                i--
+                            }
+                        }
+                        let params = {
+                            stuList:stulist,
+                            scope: "private"
+                        }
+                        this.$api.courseMgmt.upsertStulist(params).then(
+                            res => {
+                                this.$Message.success(this.$t('cusMgt.delOk'))
+                                for (let i = 0; i < schedule.students.length; i++) {
+                                    if (delIds.indexOf(schedule.students[i].id) > -1) {
+                                        schedule.students.splice(i, 1)
+                                        i--
+                                    }
                                 }
                             },
-                            (err) => {
+                            err => {
                                 this.$Message.error(this.$t('cusMgt.delErr'))
                             }
                         ).finally(() => {
                             this.listLoading = false
-                            this.baseEditStatus = !this.baseEditStatus
                         })
                     }
                 })
@@ -773,8 +790,6 @@ export default {
         //确认添加学生
         confirmAddStu() {
             if (this.selections.length > 0) {
-                console.log(this.courseListShow[this.curCusIndex])
-                console.log(this.teaClassList[this.curClassIndex])
                 //这里会报错,应该是之前的结构,后面调整结构后没有进行处理 已经没有classes字段
                 // if (!this.courseListShow[this.curCusIndex].classes[this.curClassIndex].students) {
                 //     this.$set(this.courseListShow[this.curCusIndex].classes[this.curClassIndex], 'students', [])
@@ -988,7 +1003,7 @@ export default {
                             stulist: stuList.id,
                             teacherId: this.$store.state.userInfo.TEAMModelId,
                             teacherName: this.$store.state.userInfo.name,
-                            students:stuList.students,
+                            students: stuList.students,
                             time: []
                         })
                         this.updCusInfo()

+ 3 - 11
TEAMModelOS/ClientApp/src/view/newcourse/NewCusMgt.vue

@@ -18,11 +18,6 @@
                     <Icon custom="iconfont icon-schedule" size="16" />
                     <span>{{$t('cusMgt.schdTable')}}</span>
                 </span>
-                <!-- 时段设置移到基础设置了 -->
-                <!-- <span v-if="$access.can('admin.*|course-upd')" @click="showTime = true" class="action-btn">
-                    <Icon custom="iconfont icon-time" size="16" />
-                    <span>{{$t('cusMgt.timeSetting')}}</span>
-                </span> -->
                 <span @click="goMgtStuList" :class="courseListShow.length == 0 ? 'action-btn-disabled action-btn':'action-btn'">
                     <Icon type="ios-people" size="16" />
                     <span>{{$t('cusMgt.stuListMgt')}}</span>
@@ -132,8 +127,9 @@
                                     <div slot="right" class="set-stu-list dark-iview-table dark-el-cascader" v-if="schdList[curClassIndex]">
                                         <div class="stu-list-header dark-iview-select">
                                             <span class="attr-label">{{$t('cusMgt.classLabel')}}</span>
-                                            <el-cascader size="mini" :placeholder="$t('cusMgt.noSet')" :show-all-levels="false" clearable v-model="schdList[curClassIndex].classId" :options="csOptions" :props="props" @change="setClassName($event,'upsert')" style="width:180px;">
-                                            </el-cascader>
+                                            <!-- <el-cascader size="mini" :placeholder="$t('cusMgt.noSet')" :show-all-levels="false" clearable v-model="schdList[curClassIndex].classId" :options="csOptions" :props="props" @change="setClassName($event,'upsert')" style="width:180px;">
+                                            </el-cascader> -->
+                                            <span v-if="schdList[curClassIndex]">{{schdList[curClassIndex].classInfo ? schdList[curClassIndex].classInfo.name:'--'}}</span>
                                             <span class="attr-label" style="margin-left:50px">{{$t('cusMgt.defaultList')}}</span>
                                             <Tooltip :content="$t('cusMgt.defaultTips')" max-width="200">
                                                 <Icon type="ios-information-circle-outline" style="margin-left:2px;margin-right:5px" />
@@ -278,10 +274,6 @@
             </div>
             <StudentList @getSelectInfo="(selction)=>{listSelections = selction}"></StudentList>
         </Modal>
-        <!-- 时段设置 已经移到基础设置-->
-        <!-- <Drawer :title="$t('cusMgt.timeSetTitle')" class-name="dark-iview-drawer" :closable="false" v-model="showTime" :width="450">
-            <TimeSetting :periodId="filterPeriod"></TimeSetting>
-        </Drawer> -->
     </div>
 </template>
 <script>

+ 40 - 1
TEAMModelOS/ClientApp/src/view/student-analysis/total-analysis/EvaluationList/TotalIndex.vue

@@ -97,7 +97,8 @@
 							<div class="el-filter-item">
 								<span class="el-filter-title">{{ $t("totalAnalysis.condition3") }}:</span>
 								<RadioGroup v-model="filterTerm" type="button" @on-change="filterTermChange">
-									<Radio v-for="(item, index) in filterData.termList" :label="item.name" :key="index">{{ item.name }}</Radio>
+									<Radio :label="$t('totalAnalysis.all')">{{ $t('totalAnalysis.all') }}</Radio>
+									<Radio v-for="(item, index) in filterTermList" :label="item.name" :key="index">{{ item.name }}</Radio>
 								</RadioGroup>
 							</div>
 						</div>
@@ -455,6 +456,9 @@
 				sessionStorage.setItem('filterConditions',JSON.stringify(this.filterConditions))
 				// 将条件转换成数组便于渲染
 				this.filterList = this.objToArr(this.filterConditions);
+				this.originList.forEach(item => {
+					item.term = this.compareTerm(this.getTermRange(this.filterPeriod),this.$tools.formatTime(item.createTime,'MM-dd').split('-'))
+				})
 				// 根据条件过滤所有的测验数据
 				this.examList = this.originList.filter((item) => {
 					return (
@@ -465,10 +469,39 @@
 						JSON.stringify(item.subjects).indexOf(this.filterConditions.subject || "") >
 						-1 &&
 						item.type.indexOf(this.filterConditions.type || "") >
+						-1 &&
+						item.term.indexOf(this.filterConditions.term || "") >
 						-1
 					);
 				});
 			},
+			
+			/* 获取当前学段学期时间范围 */
+			getTermRange(period){
+				let schoolBase = this.$store.state.user.schoolProfile.school_base
+				let curSemesters = schoolBase.period.filter(i => i.name === this.filterPeriod)[0].semesters
+				let range  = [] 
+				for (var i = 0; i < curSemesters.length - 1; i++) {
+					range.push([[+curSemesters[i].month,+curSemesters[i].day],[+curSemesters[i + 1].month,+curSemesters[i + 1].day]])
+				}
+				return range
+			},
+			
+			/* 对比评测时间和学期分界点时间 */
+			compareTerm(range,val){
+				let schoolBase = this.$store.state.user.schoolProfile.school_base
+				let curSemesters = schoolBase.period.filter(i => i.name === this.filterPeriod)[0].semesters
+				for (var i = 0; i < range.length; i++) {
+					if(this.tranNum(val) >= this.tranNum(range[i][0]) && this.tranNum(val) < this.tranNum(range[i][1])){
+						return curSemesters[i].name
+					}
+				}
+				return curSemesters[curSemesters.length - 1].name
+			},
+			
+			tranNum(val){
+				return Number((Number(val[0])) + '' +  (+val[1] > 10 ? +val[1] : '0' + (+val[1]))) 
+			},
 
 			objToArr(obj) {
 				var arr = [];
@@ -561,6 +594,12 @@
 					return item.name == this.filterConditions.period
 				})
 				return res ? res.subjects : []
+			},
+			filterTermList() {
+				let res = this.schoolData.period.find(item => {
+					return item.name == this.filterConditions.period
+				})
+				return res ? res.semesters : []
 			}
 		},
 		watch: {

+ 19 - 5
TEAMModelOS/ClientApp/src/view/task/index.less

@@ -165,27 +165,26 @@
     margin: 10px 20px;
 }
 .stu-wrap{
-    // border-left: 1px solid @borderColor;
-    margin-top: 20px;
 }
 .stu-list-wrap{
-    margin-top: 10px;
     min-height: 120px;
 }
 .filter-tab-item{
     display: inline-block;
     width: 80px;
     text-align: center;
-    background: #515151;
+    background: #1a191c;
     color: #a5a5a5;
     margin-right: 1px;
     border-top-right-radius: 15px;
     padding: 2px 0px;
     font-size: 12px;
     cursor: pointer;
+    border:1px solid rgba(98, 97, 101, 0.4);
+    border-bottom: none;
 }
 .filter-tab-item-active{
-    background: #1cc0f3;
+    background: #2b2a2f;
     color: white;
 }
 .stu-name{
@@ -271,4 +270,19 @@
     color: #a5a5a5;
     font-size: 16px;
     cursor: default;
+}
+.filter-tab-wrap{
+    margin-top: 15px;
+}
+.stu-name-wrap{
+    margin-top: -1px;
+
+}
+.stu-name-content{
+    margin-top: 0px;
+    border-top-left-radius: 0px !important;
+}
+.data-content{
+    display: flex;
+    justify-content: space-around;
 }

+ 181 - 122
TEAMModelOS/ClientApp/src/view/task/index.vue

@@ -31,17 +31,17 @@
                 <!-- 阅卷信息 -->
                 <div slot="right" class="ev-mark-info">
                     <div class="ev-mark-header">
-                        <span :class="curBarIndex == 0 ? 'task-bar-item line-bottom-active line-bottom':'task-bar-item line-bottom'" @click="selectBar(0)">
-                            {{$t('task.markMode1')}}
-                        </span>
                         <span :class="curBarIndex == 1 ? 'task-bar-item line-bottom-active line-bottom':'task-bar-item line-bottom'" @click="selectBar(1)">
                             {{$t('task.markMode2')}}
                         </span>
+                        <span :class="curBarIndex == 0 ? 'task-bar-item line-bottom-active line-bottom':'task-bar-item line-bottom'" @click="selectBar(0)">
+                            {{$t('task.markMode1')}}
+                        </span>
                     </div>
                     <!-- 按题批阅 -->
-                    <vuescroll class="mark-info-content" v-show="curBarIndex == 0">
+                    <vuescroll class="mark-info-content">
                         <!-- 数据概览 -->
-                        <div class="setting-block">
+                        <div class="setting-block"  v-show="curBarIndex == 0">
                             <p class="block-title">{{$t('learnActivity.mark.dataView')}}</p>
                             <div class="setting-content count-content">
                                 <div class="count-wrap">
@@ -76,8 +76,8 @@
                                 </div>
                             </div>
                         </div>
-                        <!-- 批阅进度 -->
-                        <div class="setting-block">
+                        <!-- 按题 批阅进度 -->
+                        <div class="setting-block" v-show="curBarIndex == 0">
                             <p class="block-title">
                                 {{$t('task.markProg')}}
                                 <Icon type="ios-arrow-down" :class="['show-full-icon', fullQuProg ? 'full-qu-prog' : '']" @click="fullQuProg = !fullQuProg" />
@@ -155,120 +155,21 @@
                                 </vuescroll>
                             </div>
                         </div>
-                    </vuescroll>
-                    <!-- 按人批阅 -->
-                    <vuescroll class="mark-info-content" v-show="curBarIndex == 1">
-                        <!-- 数据概览 -->
-                        <div class="setting-block">
-                            <p class="block-title">{{$t('learnActivity.mark.dataView')}}</p>
-                            <div class="setting-content count-content">
-                                <div class="count-wrap">
-                                    <p class="count-num">{{markList[curEvIndex] ? markList[curEvIndex].count : 0}}</p>
-                                    <p class="count-label">
-                                        <Icon type="ios-paper" class="count-icon" size="16" />
-                                        {{$t('task.mLabel1')}}
-                                    </p>
-                                </div>
-                                <div class="count-wrap">
-                                    <p class="count-num">1</p>
-                                    <p class="count-label">
-                                        <Icon type="ios-star" class="count-icon" size="16" />
-                                        {{$t('task.mLabel2')}}
-                                    </p>
-                                </div>
-                                <div class="count-wrap">
-                                    <p class="count-num">2</p>
-                                    <p class="count-label">
-                                        <Icon type="ios-star-outline" class="count-icon" size="16" />
-                                        {{$t('task.mLabel3')}}
-                                    </p>
-                                </div>
-                                <div class="count-wrap to-mark-view">
-                                    <p class="count-num">
-                                        9
-                                    </p>
-                                    <p class="count-label">
-                                        <Icon custom="iconfont icon-scanning" class="count-icon" size="16" />
-                                        {{$t('task.mLabel4')}}
-                                    </p>
-                                </div>
-                            </div>
-                        </div>
-                        <!-- 数据统计 平均分、最高分、最低分、标准差 -->
-                        <div class="setting-block">
-                            <p class="block-title">数据对比</p>
-                            <div class="setting-content count-content">
-                                <div class="count-wrap">
-                                    <p class="count-num">
-                                        {{markList[curEvIndex] ? markList[curEvIndex].count : 0}}
-                                        <span class="full-total-value">
-                                            (10)
-                                        </span>
-                                    </p>
-                                    <p class="count-label">
-                                        <Icon custom="iconfont icon-highest" class="count-icon" size="16" />
-                                        最高分
-                                    </p>
-                                </div>
-                                <div class="count-wrap">
-                                    <p class="count-num">
-                                        1
-                                        <span class="full-total-value">
-                                            (10)
-                                        </span>
-                                    </p>
-                                    <p class="count-label">
-                                        <Icon custom="iconfont icon-lowest" class="count-icon" size="16" />
-                                        最低分
-                                    </p>
-                                </div>
-                                <div class="count-wrap">
-                                    <p class="count-num">
-                                        2
-                                        <span class="full-total-value">
-                                            (10)
-                                        </span>
-                                    </p>
-                                    <p class="count-label">
-                                        <Icon custom="iconfont icon-avg" class="count-icon" size="16" />
-                                        平均分
-                                    </p>
-                                </div>
-                                <div class="count-wrap to-mark-view">
-                                    <p class="count-num">
-                                        9
-                                        <span class="full-total-value">
-                                            (10)
-                                        </span>
-                                    </p>
-                                    <p class="count-label">
-                                        <Icon custom="iconfont icon-formula" class="count-icon" size="16" />
-                                        标准差
-                                    </p>
-                                </div>
-                            </div>
+                        <!--按人 学生信息 -->
+                        <div class="filter-tab-wrap"  v-show="curBarIndex == 1">
+                            <span :class="['filter-tab-item', tabIndex == 0 ? 'filter-tab-item-active':'']" @click="tabIndex = 0">
+                                {{$t('task.mLabel3')}}
+                            </span>
+                            <span :class="['filter-tab-item', tabIndex == 1 ? 'filter-tab-item-active':'']" @click="tabIndex = 1">
+                                {{$t('task.mLabel4')}}
+                            </span>
+                            <span :class="['filter-tab-item', tabIndex == 2 ? 'filter-tab-item-active':'']" @click="tabIndex = 2">
+                                {{$t('task.mLabel2')}}
+                            </span>
                         </div>
-                        <!-- 批阅进度 -->
-                        <div class="setting-block">
-                            <p class="block-title">{{$t('task.markProg')}}</p>
-                            <div class="setting-content">
-                                <div>
-                                    <Progress :percent="60" stroke-color="#1cc0f3" :stroke-width="4">
-                                        <span style="color:white">60%</span>
-                                    </Progress>
-                                </div>
+                        <div class="setting-block stu-name-wrap"  v-show="curBarIndex == 1">
+                            <div class="setting-content stu-name-content">
                                 <div class="stu-wrap">
-                                    <div class="filter-tab-wrap">
-                                        <span :class="['filter-tab-item', tabIndex == 0 ? 'filter-tab-item-active':'']" @click="tabIndex = 0">
-                                            {{$t('task.mLabel3')}}
-                                        </span>
-                                        <span :class="['filter-tab-item', tabIndex == 1 ? 'filter-tab-item-active':'']" @click="tabIndex = 1">
-                                            {{$t('task.mLabel4')}}
-                                        </span>
-                                        <span :class="['filter-tab-item', tabIndex == 2 ? 'filter-tab-item-active':'']" @click="tabIndex = 2">
-                                            {{$t('task.mLabel2')}}
-                                        </span>
-                                    </div>
                                     <div class="stu-list-wrap no-stu-wrap" v-show="tabIndex == 0">
                                         <p class="no-mark-text">
                                             还剩
@@ -282,22 +183,166 @@
                                     </div>
                                 </div>
                             </div>
-
                         </div>
+                        <!-- 数据统计 平均分、最高分、最低分、标准差 -->
+                        <div class="setting-block"  v-show="curBarIndex == 1">
+                            <p class="block-title">数据统计</p>
+                            <div class="setting-content  data-content dark-iview-table">
+                                <DataCompare></DataCompare>
+                                <ProgPie></ProgPie>
+                            </div>
+                        </div>
+                        <!-- 异常 -->
+                        <div class="setting-block">
+                            <p class="block-title">异常卷</p>
+                            <div class="setting-content dark-iview-table my-stripe-table">
+                                <Table :row-class-name="rowClassName" :columns="columns1" :data="data1"></Table>
+                            </div>
+                        </div>
+                        <!-- 仲裁 -->
+                        <div class="setting-block">
+                            <p class="block-title">仲裁卷</p>
+                            <div class="setting-content dark-iview-table my-stripe-table">
+                                <Table :row-class-name="rowClassName" :columns="columns2" :data="data2"></Table>
+                            </div>
+                        </div>
+                    </vuescroll>
+                    <!-- 按人批阅 -->
+                    <vuescroll class="mark-info-content">
                     </vuescroll>
                 </div>
-
             </Split>
         </div>
     </div>
 </template>
 <script>
+import DataCompare from '@/view/learnactivity/markpaper/Compare.vue'
+import ProgPie from '@/view/learnactivity/markpaper/ProgPie.vue'
 export default {
+    components: {
+        DataCompare, ProgPie
+    },
     data() {
         return {
+            columns1: [
+                {
+                    title: '学号',
+                    key: 'id',
+                    align: 'center',
+                    width: 120
+                },
+                {
+                    title: '题号',
+                    key: 'quNo',
+                    align: 'center',
+                    // width:70
+                },
+                {
+                    title: '异常说明',
+                    key: 'desc',
+                    align: 'center',
+                    // width:180
+                },
+                {
+                    title: '状态',
+                    key: 'status',
+                    align: 'center',
+                    width: 120
+                }
+            ],
+            data1: [
+                {
+                    id: '001',
+                    quNo: 5,
+                    desc: '模糊,看不清楚',
+                    status: '未处理'
+                }, {
+                    id: '001',
+                    quNo: 5,
+                    desc: '模糊,看不清楚',
+                    status: '未处理'
+                }, {
+                    id: '001',
+                    quNo: 5,
+                    desc: '模糊,看不清楚',
+                    status: '未处理'
+                }, {
+                    id: '001',
+                    quNo: 5,
+                    desc: '模糊,看不清楚',
+                    status: '未处理'
+                }, {
+                    id: '001',
+                    quNo: 5,
+                    desc: '模糊,看不清楚',
+                    status: '未处理'
+                }
+            ],
+            columns2: [
+                {
+                    title: '学号',
+                    key: 'id',
+                    align: 'center',
+                    width: 120
+                },
+                {
+                    title: '题号',
+                    key: 'quNo',
+                    align: 'center',
+                    // width:70
+                },
+                {
+                    title: '我的评分',
+                    key: 'myScore',
+                    align: 'center',
+                    // width:180
+                },
+                {
+                    title: '其他老师评分',
+                    key: 'otScore',
+                    align: 'center',
+                    // width:180
+                },
+                {
+                    title: '状态',
+                    key: 'status',
+                    align: 'center',
+                    width: 120
+                }
+            ],
+            data2: [
+                {
+                    id: '001',
+                    quNo: 5,
+                    myScore: 5,
+                    otScore: 10,
+                    status: '未处理'
+                },
+                {
+                    id: '001',
+                    quNo: 5,
+                    myScore: 5,
+                    otScore: 10,
+                    status: '未处理'
+                },
+                {
+                    id: '001',
+                    quNo: 5,
+                    myScore: 5,
+                    otScore: 10,
+                    status: '未处理'
+                },
+                {
+                    id: '001',
+                    quNo: 5,
+                    myScore: 5,
+                    otScore: 10,
+                    status: '未处理'
+                }
+            ],
             tabIndex: 0,
             split1: 0.2,
-            curBarIndex: 0,
+            curBarIndex: 1,
             markList: [],
             curEvIndex: 0,
             quCount: [],
@@ -305,6 +350,13 @@ export default {
         }
     },
     methods: {
+        rowClassName(row, index) {
+            if (index % 2 == 0) {
+                return 'stripe-row'
+            } else {
+                return ''
+            }
+        },
         /**
          * mode 0:按题 1:按人
          */
@@ -388,4 +440,11 @@ export default {
 @import "./index.less";
 </style>
 <style lang="less">
+.stripe-row {
+    background: #0000001a;
+}
+.my-stripe-table .ivu-table td,
+.my-stripe-table .ivu-table tr th {
+    border-color: transparent !important;
+}
 </style>