瀏覽代碼

处理设置阅卷老师和查看阅卷任务UI流程

liqk 4 年之前
父節點
當前提交
b0ef56fd9e
共有 23 個文件被更改,包括 598 次插入509 次删除
  1. 57 17
      TEAMModelOS/ClientApp/src/assets/iconfont/demo_index.html
  2. 10 8
      TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.css
  3. 二進制
      TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.eot
  4. 1 1
      TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.js
  5. 8 1
      TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.json
  6. 0 350
      TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.svg
  7. 二進制
      TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.ttf
  8. 二進制
      TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.woff
  9. 二進制
      TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.woff2
  10. 10 0
      TEAMModelOS/ClientApp/src/common/BaseLayout.vue
  11. 10 3
      TEAMModelOS/ClientApp/src/locale/lang/zh-CN/learnActivity.js
  12. 2 1
      TEAMModelOS/ClientApp/src/locale/lang/zh-CN/system.js
  13. 9 0
      TEAMModelOS/ClientApp/src/router/routes.js
  14. 1 1
      TEAMModelOS/ClientApp/src/view/Home.vue
  15. 3 0
      TEAMModelOS/ClientApp/src/view/learnactivity/MgtSchoolEva.less
  16. 86 18
      TEAMModelOS/ClientApp/src/view/learnactivity/MgtSchoolEva.vue
  17. 18 15
      TEAMModelOS/ClientApp/src/view/learnactivity/markpaper/MarkData.vue
  18. 99 85
      TEAMModelOS/ClientApp/src/view/learnactivity/markpaper/MarkSetting.vue
  19. 9 7
      TEAMModelOS/ClientApp/src/view/learnactivity/markpaper/MarkView.vue
  20. 1 1
      TEAMModelOS/ClientApp/src/view/schoolmgmt/SystemSetting/NewSystemSetting.less
  21. 1 1
      TEAMModelOS/ClientApp/src/view/student-account/ClassMgt.vue
  22. 120 0
      TEAMModelOS/ClientApp/src/view/task/index.less
  23. 153 0
      TEAMModelOS/ClientApp/src/view/task/index.vue

+ 57 - 17
TEAMModelOS/ClientApp/src/assets/iconfont/demo_index.html

@@ -2,7 +2,7 @@
 <html>
 <head>
   <meta charset="utf-8"/>
-  <title>IconFont Demo</title>
+  <title>iconfont Demo</title>
   <link rel="shortcut icon" href="//img.alicdn.com/imgextra/i2/O1CN01ZyAlrn1MwaMhqz36G_!!6000000001499-73-tps-64-64.ico" type="image/x-icon"/>
   <link rel="icon" type="image/svg+xml" href="//img.alicdn.com/imgextra/i4/O1CN01EYTRnJ297D6vehehJ_!!6000000008020-55-tps-64-64.svg"/>
   <link rel="stylesheet" href="https://g.alicdn.com/thx/cube/1.3.2/cube.min.css">
@@ -13,10 +13,33 @@
   <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/7bfddb60-08e8-11e9-9b04-53e73bb6408b.js"></script>
   <!-- 代码高亮 -->
   <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/a3f714d0-08e6-11e9-8a15-ebf944d7534c.js"></script>
+  <style>
+    .main .logo {
+      margin-top: 0;
+      height: auto;
+    }
+
+    .main .logo a {
+      display: flex;
+      align-items: center;
+    }
+
+    .main .logo .sub-title {
+      margin-left: 0.5em;
+      font-size: 22px;
+      color: #fff;
+      background: linear-gradient(-45deg, #3967FF, #B500FE);
+      -webkit-background-clip: text;
+      -webkit-text-fill-color: transparent;
+    }
+  </style>
 </head>
 <body>
   <div class="main">
-    <h1 class="logo"><a href="https://www.iconfont.cn/" title="iconfont 首页" target="_blank">&#xe86b;</a></h1>
+    <h1 class="logo"><a href="https://www.iconfont.cn/" title="iconfont 首页" target="_blank">
+      <img width="200" src="https://img.alicdn.com/imgextra/i3/O1CN01Mn65HV1FfSEzR6DKv_!!6000000000514-55-tps-228-59.svg">
+      
+    </a></h1>
     <div class="nav-tabs">
       <ul id="tabs" class="dib-box">
         <li class="dib active"><span>Unicode</span></li>
@@ -31,6 +54,12 @@
       <div class="content unicode" style="display: block;">
           <ul class="icon_lists dib-box">
           
+            <li class="dib">
+              <span class="icon iconfont">&#xe6ac;</span>
+                <div class="name">做任务</div>
+                <div class="code-name">&amp;#xe6ac;</div>
+              </li>
+          
             <li class="dib">
               <span class="icon iconfont">&#xe629;</span>
                 <div class="name">专业课程</div>
@@ -686,24 +715,20 @@
 
           <p>Unicode 是字体在网页端最原始的应用方式,特点是:</p>
           <ul>
-            <li>兼容性最好,支持 IE6+,及所有现代浏览器。</li>
             <li>支持按字体的方式去动态调整图标大小,颜色等等。</li>
-            <li>但是因为是字体,所以不支持多色。只能使用平台里单色的图标,就算项目里有多色图标也会自动去色。</li>
+            <li>默认情况下不支持多色,直接添加多色图标会自动去色。</li>
           </ul>
           <blockquote>
-            <p>注意:新版 iconfont 支持多色图标,这些多色图标在 Unicode 模式下将不能使用,如果有需求建议使用symbol 的引用方式</p>
+            <p>注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)</p>
           </blockquote>
           <p>Unicode 使用步骤如下:</p>
           <h3 id="-font-face">第一步:拷贝项目下面生成的 <code>@font-face</code></h3>
 <pre><code class="language-css"
 >@font-face {
   font-family: 'iconfont';
-  src: url('iconfont.eot');
-  src: url('iconfont.eot?#iefix') format('embedded-opentype'),
-      url('iconfont.woff2') format('woff2'),
-      url('iconfont.woff') format('woff'),
-      url('iconfont.ttf') format('truetype'),
-      url('iconfont.svg#iconfont') format('svg');
+  src: url('iconfont.woff2?t=1620299264680') format('woff2'),
+       url('iconfont.woff?t=1620299264680') format('woff'),
+       url('iconfont.ttf?t=1620299264680') format('truetype');
 }
 </code></pre>
           <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
@@ -729,6 +754,15 @@
       <div class="content font-class">
         <ul class="icon_lists dib-box">
           
+          <li class="dib">
+            <span class="icon iconfont icon-task"></span>
+            <div class="name">
+              做任务
+            </div>
+            <div class="code-name">.icon-task
+            </div>
+          </li>
+          
           <li class="dib">
             <span class="icon iconfont icon-profession"></span>
             <div class="name">
@@ -739,11 +773,11 @@
           </li>
           
           <li class="dib">
-            <span class="icon iconfont icon-Attachment"></span>
+            <span class="icon iconfont icon-general"></span>
             <div class="name">
               通用
             </div>
-            <div class="code-name">.icon-Attachment
+            <div class="code-name">.icon-general
             </div>
           </li>
           
@@ -1709,10 +1743,8 @@
         <p>font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。</p>
         <p>与 Unicode 使用方式相比,具有如下特点:</p>
         <ul>
-          <li>兼容性良好,支持 IE8+,及所有现代浏览器。</li>
           <li>相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。</li>
           <li>因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。</li>
-          <li>不过因为本质上还是使用的字体,所以多色图标还是不支持的。</li>
         </ul>
         <p>使用步骤如下:</p>
         <h3 id="-fontclass-">第一步:引入项目下面生成的 fontclass 代码:</h3>
@@ -1730,6 +1762,14 @@
       <div class="content symbol">
           <ul class="icon_lists dib-box">
           
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-task"></use>
+                </svg>
+                <div class="name">做任务</div>
+                <div class="code-name">#icon-task</div>
+            </li>
+          
             <li class="dib">
                 <svg class="icon svg-icon" aria-hidden="true">
                   <use xlink:href="#icon-profession"></use>
@@ -1740,10 +1780,10 @@
           
             <li class="dib">
                 <svg class="icon svg-icon" aria-hidden="true">
-                  <use xlink:href="#icon-Attachment"></use>
+                  <use xlink:href="#icon-general"></use>
                 </svg>
                 <div class="name">通用</div>
-                <div class="code-name">#icon-Attachment</div>
+                <div class="code-name">#icon-general</div>
             </li>
           
             <li class="dib">

File diff suppressed because it is too large
+ 10 - 8
TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.css


二進制
TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.eot


File diff suppressed because it is too large
+ 1 - 1
TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.js


+ 8 - 1
TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.json

@@ -5,6 +5,13 @@
   "css_prefix_text": "icon-",
   "description": "",
   "glyphs": [
+    {
+      "icon_id": "5241258",
+      "name": "做任务",
+      "font_class": "task",
+      "unicode": "e6ac",
+      "unicode_decimal": 59052
+    },
     {
       "icon_id": "5924477",
       "name": "专业课程",
@@ -15,7 +22,7 @@
     {
       "icon_id": "7470974",
       "name": "通用",
-      "font_class": "Attachment",
+      "font_class": "general",
       "unicode": "e6bd",
       "unicode_decimal": 59069
     },

File diff suppressed because it is too large
+ 0 - 350
TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.svg


二進制
TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.ttf


二進制
TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.woff


二進制
TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.woff2


+ 10 - 0
TEAMModelOS/ClientApp/src/common/BaseLayout.vue

@@ -370,6 +370,16 @@ export default {
                     permission: '',
                     child: [],
                     menuName: 'myCourse'
+                },
+                {
+                    icon: 'iconfont icon-task',
+                    name: this.$t('system.menu.taskList'),
+                    router: '/home/taskList',
+                    tag: '',
+                    role: 'teacher',
+                    permission: '',
+                    child: [],
+                    menuName: 'taskList'
                 }
             ]
         },

+ 10 - 3
TEAMModelOS/ClientApp/src/locale/lang/zh-CN/learnActivity.js

@@ -35,8 +35,12 @@ export default{
         noJoin:'此账号暂未加入任何学校!',
         myEv:'我发布的评测',
         teaEv:'任课老师发布的评测',
-        markSetting:'阅卷配置',
-        markData:'阅卷数据'
+        markSetting:'阅卷设置',
+        markData:'阅卷数据',
+        ftStatus:'状态:',
+        ftType:'类型:',
+        ftMode:'模式:',
+        search:'搜索'
     },
 
     //CreateEv
@@ -255,7 +259,10 @@ export default{
         arbDeclare:'仲裁申报',
         markProg:'阅卷进度',
         name:'姓名',
+        markTea:'阅卷老师',
         progress:'进度',
-        action:'操作'
+        action:'操作',
+        addTeaTitle:'添加阅卷老师',
+        markNum:'阅卷量',
     }
 }

+ 2 - 1
TEAMModelOS/ClientApp/src/locale/lang/zh-CN/system.js

@@ -34,7 +34,8 @@ export default {
         selfLearn:'自主学习',
         homework:'作业活动',
         acRecord: '活动记录',
-        cusMgt:'课程管理'
+        cusMgt:'课程管理',
+        taskList:'任务列表'
     },
     compt: {
         cusWare: '课件',

+ 9 - 0
TEAMModelOS/ClientApp/src/router/routes.js

@@ -340,6 +340,15 @@ export const routes = [
 				isKeep: true
 			}
 		},
+		{
+			path: 'taskList',
+			name: 'taskList',
+			component: resolve => require(['@/view/task/index.vue'], resolve),
+			meta: {
+				activeName: 'taskList',
+				isKeep: true
+			}
+		},
 		//自定义名单管理页面
 		{
 			path: 'MgtStuList',

+ 1 - 1
TEAMModelOS/ClientApp/src/view/Home.vue

@@ -186,7 +186,7 @@ body {
 
 #content {
     height: 100%;
-    /*background: #2B2B2E;*/
+    background: #242328;
     overflow: hidden;
 }
 

+ 3 - 0
TEAMModelOS/ClientApp/src/view/learnactivity/MgtSchoolEva.less

@@ -233,4 +233,7 @@
 }
 .mock-tea-scoring{
     margin-right: 40px;
+}
+.filter-item{
+    margin: 10px 5px;
 }

+ 86 - 18
TEAMModelOS/ClientApp/src/view/learnactivity/MgtSchoolEva.vue

@@ -15,9 +15,41 @@
                             <DropdownItem :name="item.id">{{ item.name }}</DropdownItem>
                         </DropdownMenu>
                     </Dropdown>
-                    <Icon type="md-add" class=" to-create-icon" @click="goToCreate" :title="$t('learnActivity.mgtScEv.create')" v-if="$access.can('admin.*|schoolAc-upd')" />
-                    <Icon type="md-trash" v-show="evaListShow.length" class="to-create-icon" :title="$t('learnActivity.mgtScEv.delete')" @click="deleteEvaluation" v-if="$access.can('admin.*|schoolAc-upd')" />
-                    <Icon type="md-create" v-show="evaListShow.length && evaListShow[curEvaIndex] && evaListShow[curEvaIndex].progress == 'pending'" class="to-create-icon" @click="editEvaluation" :title="$t('learnActivity.mgtScEv.edit')" v-if="$access.can('admin.*|schoolAc-upd')" />
+                    <div style="float:right" v-if="!isSearch">
+                        <Icon type="md-add" class=" to-create-icon" @click="goToCreate" :title="$t('learnActivity.mgtScEv.create')" v-if="$access.can('admin.*|schoolAc-upd')" />
+                        <Icon type="md-trash" v-show="evaListShow.length" class="to-create-icon" :title="$t('learnActivity.mgtScEv.delete')" @click="deleteEvaluation" v-if="$access.can('admin.*|schoolAc-upd')" />
+                        <Icon type="md-create" v-show="evaListShow.length && evaListShow[curEvaIndex] && evaListShow[curEvaIndex].progress == 'pending'" class="to-create-icon" @click="editEvaluation" :title="$t('learnActivity.mgtScEv.edit')" v-if="$access.can('admin.*|schoolAc-upd')" />
+                        <!-- 筛选 -->
+                        <Poptip style="float:right" trigger="hover" :offset="-10" theme="light">
+                            <Icon type="ios-funnel" class="to-create-icon" :color="filter.status || filter.type || filter.mode ? '#2d8cf0':'#fff'" />
+                            <div slot="content">
+                                <div class="filter-item">
+                                    <span>{{$t('learnActivity.mgtScEv.ftStatus')}}</span>
+                                    <Select v-model="filter.status" style="width:100px" size="small" clearable @on-change="filterEv">
+                                        <Option value="pending">{{$t('learnActivity.mgtScEv.pending')}}</Option>
+                                        <Option value="going">{{$t('learnActivity.mgtScEv.going')}}</Option>
+                                        <Option value="finish">{{$t('learnActivity.mgtScEv.finish')}}</Option>
+                                    </Select>
+                                </div>
+                                <div class="filter-item">
+                                    <span>{{$t('learnActivity.mgtScEv.ftType')}}</span>
+                                    <Select v-model="filter.type" style="width:100px" size="small" clearable @on-change="filterEv">
+                                        <Option v-for="(item,index) in $GLOBAL.EV_TYPE()" :value="item.value" :key="index">{{ item.label }}</Option>
+                                    </Select>
+                                </div>
+                                <div class="filter-item">
+                                    <span>{{$t('learnActivity.mgtScEv.ftMode')}}</span>
+                                    <Select v-model="filter.mode" style="width:100px" size="small" clearable @on-change="filterEv">
+                                        <Option v-for="(item,index) in $GLOBAL.EV_MODE()" :value="item.value" :key="index">{{ item.label }}</Option>
+                                    </Select>
+                                </div>
+                            </div>
+                        </Poptip>
+                        <Icon type="md-search" class="to-create-icon" @click="isSearch = !isSearch" :title="$t('learnActivity.mgtScEv.search')" />
+                    </div>
+                    <div v-else class="dark-iview-input" style="float:right;width:calc(100% - 150px);padding-right:10px;">
+                        <Input icon="ios-close" v-model="keyword" :placeholder="$t('schoolBaseInfo.codeSearchHolder')" autofocus style="width:100%" @on-click="closeKeySearch" @on-change="filterByName" />
+                    </div>
                 </div>
                 <div class="evaluation-list-main">
                     <vuescroll>
@@ -63,11 +95,17 @@
                     <span :class="curBarIndex == 1 ? 'evalustion-bar-item line-bottom-active line-bottom':'evalustion-bar-item line-bottom'" @click="selectBar(1)">
                         {{$t('learnActivity.mgtScEv.tab2')}}
                     </span>
-                    <span v-show="evaListShow[curEvaIndex] && evaListShow[curEvaIndex].source == '2'" :class="curBarIndex == 2 ? 'evalustion-bar-item line-bottom-active line-bottom':'evalustion-bar-item line-bottom'" @click="selectBar(2)">
+                    <!-- <span v-show="evaListShow[curEvaIndex] && evaListShow[curEvaIndex].source == '2'" :class="curBarIndex == 2 ? 'evalustion-bar-item line-bottom-active line-bottom':'evalustion-bar-item line-bottom'" @click="selectBar(2)">
                         {{$t('learnActivity.mgtScEv.markSetting')}}
                     </span>
                     <span v-show="evaListShow[curEvaIndex] && evaListShow[curEvaIndex].source == '2'" :class="curBarIndex == 3 ? 'evalustion-bar-item line-bottom-active line-bottom':'evalustion-bar-item line-bottom'" @click="selectBar(3)">
                         {{$t('learnActivity.mgtScEv.markData')}}
+                    </span> -->
+                    <span :class="curBarIndex == 2 ? 'evalustion-bar-item line-bottom-active line-bottom':'evalustion-bar-item line-bottom'" @click="selectBar(2)">
+                        {{$t('learnActivity.mgtScEv.markSetting')}}
+                    </span>
+                    <span :class="curBarIndex == 3 ? 'evalustion-bar-item line-bottom-active line-bottom':'evalustion-bar-item line-bottom'" @click="selectBar(3)">
+                        {{$t('learnActivity.mgtScEv.markData')}}
                     </span>
                     <!--取消一键作答和一键评分功能-->
                     <!--<div style="float:right;" v-if="$access.ability('admin','mock-eva').validateAll" v-show="evaListShow[curEvaIndex] && evaListShow[curEvaIndex].progress == 'going'">
@@ -134,6 +172,8 @@ export default {
     inject: ['reload'],
     data() {
         return {
+            keyword: '',
+            isSearch: false,
             answerLoading: false,
             scoreLoading: false,
             split1: 0.2,
@@ -150,10 +190,51 @@ export default {
             filterPeriod: undefined,
             schoolBase: {
                 period: []
+            },
+            filter: {
+                status: '',
+                mode: '',
+                type: ''
             }
         }
     },
     methods: {
+        filterByName() {
+            let curPdEv = this.evaluationList.filter(item => item.period.id === this.filterPeriod)
+            this.evaListShow = curPdEv.filter(item => {
+                return item.name.indexOf(this.keyword) > -1
+            })
+
+        },
+        closeKeySearch() {
+            this.isSearch = false
+            this.keyword = ''
+            this.filterByName()
+        },
+        //根据学段筛选评测
+        filterByPeriod() {
+            this.curEvaIndex = 0
+            sessionStorage.setItem('evPeriod', this.filterPeriod)
+            if (this.filterPeriod) {
+                this.evaListShow = this.evaluationList.filter(item => item.period.id === this.filterPeriod)
+            } else {
+                this.evaListShow = [...this.evaluationList]
+            }
+            if (this.evaListShow.length) {
+                this.selectEvaluation(0)
+            }
+        },
+
+        //筛选评测
+        filterEv() {
+            let curPdEv = this.evaluationList.filter(item => item.period.id === this.filterPeriod)
+            this.evaListShow = curPdEv.filter(item => {
+                let status = !this.filter.status || (this.filter.status == item.progress)
+                let type = !this.filter.type || (this.filter.type == item.type)
+                let mode = !this.filter.mode || (this.filter.type == item.source)
+                return status && type && mode
+            })
+        },
         // 模拟教师评分数据
         mockScoring() {
             this.scoreLoading = true
@@ -377,25 +458,12 @@ export default {
                         }
 
                     } else {
-                        this$Message.error('API ERROR!')
+                        this.$Message.error('API ERROR!')
                     }
                 }
             )
         },
-        //根据学段筛选评测
-        filterByPeriod() {
-            this.curEvaIndex = 0
-            sessionStorage.setItem('evPeriod', this.filterPeriod)
-            if (this.filterPeriod) {
-                this.evaListShow = this.evaluationList.filter(item => item.period.id === this.filterPeriod)
-            } else {
-                this.evaListShow = [...this.evaluationList]
-            }
-            if (this.evaListShow.length) {
-                this.selectEvaluation(0)
-            }
 
-        },
         selectEvaluation(index) {
             this.curSubIndex = 0
             this.curEvaIndex = index

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

@@ -70,7 +70,7 @@
                         <template slot-scope="{ row }" slot="progress">
                             <div style="display: flex;justify-content: center;">
                                 <i-circle :percent="20" :size="40" :stroke-width="8" :trail-width="7" stroke-color="#ff5500">
-                                    <span>20%</span>
+                                    <span style="font-size:12px">20%</span>
                                 </i-circle>
                             </div>
                         </template>
@@ -207,7 +207,7 @@ export default {
                     align: 'center'
                 },
                 {
-                    title: this.$t('learnActivity.mark.name'),
+                    title: this.$t('learnActivity.mark.markTea'),
                     key: 'name',
                     align: 'center'
                 },
@@ -303,7 +303,9 @@ export default {
 }
 
 .setting-content {
-    background: #404042;
+    background: #2b2a2f;
+    box-shadow: 1px 1px 13px #141414;
+    border: 1px solid rgba(98, 97, 101, 0.4);
     padding: 15px 10px;
     border-radius: 5px;
     margin-right: 12px;
@@ -315,8 +317,8 @@ export default {
     padding-right: 15px;
 }
 .block-title {
-    color: white;
-    border-left: 2px solid #1cc0f3;
+    color: rgb(190, 190, 190);
+    // border-left: 2px solid #1cc0f3;
     line-height: 12px;
     padding-left: 4px;
     user-select: none;
@@ -356,14 +358,6 @@ export default {
 .count-content {
     display: flex;
 }
-.chart-wrap {
-    flex: 1;
-    color: #fff;
-    display: flex;
-    flex-direction: column;
-    align-items: center;
-    justify-content: center;
-}
 .mark-step {
     padding: 0px 40px 0px 20px;
 }
@@ -372,14 +366,14 @@ export default {
 .step-content {
     .ivu-steps .ivu-steps-title,
     .ivu-steps .ivu-steps-head {
-        background: #404042;
+        background: #2b2a2f;
     }
     .ivu-steps-item.ivu-steps-status-finish .ivu-steps-title,
     .ivu-steps-item.ivu-steps-status-process .ivu-steps-title {
         color: white;
     }
     .ivu-steps-item.ivu-steps-status-finish .ivu-steps-head-inner {
-        background-color: #404042;
+        background-color: #2b2a2f;
         border-color: #1cc0f3;
     }
     .ivu-steps-item.ivu-steps-status-finish .ivu-steps-tail > i:after {
@@ -395,4 +389,13 @@ export default {
         color: white;
     }
 }
+.mark-data-wrap .ivu-table:before{
+    height: 0px;
+}
+.sub-info-table .ivu-table td{
+    border-color: #323232;
+}
+.sub-info-table .ivu-table-header thead tr th{
+    border-color: #323232;
+}
 </style>

+ 99 - 85
TEAMModelOS/ClientApp/src/view/learnactivity/markpaper/MarkSetting.vue

@@ -1,34 +1,17 @@
 <template>
     <div class="mark-setting-wrap dark-iview-form">
         <vuescroll>
-            <div class="setting-block">
-                <p class="block-title">
+            <!-- 基础设置 -->
+            <div class="setting-block" style="display:none">
+                <!-- <p class="block-title">
                     {{$t('learnActivity.mark.baseSetting')}}
-                </p>
+                </p> -->
                 <div class="setting-content">
                     <Form :model="setting" label-colon :label-width="80">
                         <Row>
                             <Col :md="24" :lg="24" :xl="12" :xxl="12">
-                            <FormItem :label="$t('learnActivity.mark.markMode')" class="setting-item-wrap">
-                                <RadioGroup v-model="setting.mode">
-                                    <Radio :label="$t('learnActivity.mark.full')"></Radio>
-                                    <Radio :label="$t('learnActivity.mark.question')"></Radio>
-                                </RadioGroup>
-                            </FormItem>
-                            </Col>
-                            <Col :md="24" :lg="24" :xl="12" :xxl="12">
-                            <FormItem :label="$t('learnActivity.mark.markNum')" class="setting-item-wrap">
-                                <InputNumber :max="2" :min="1" v-model="setting.num"></InputNumber>
-                            </FormItem>
-                            </Col>
-                        </Row>
-                        <Row>
-                            <Col :md="24" :lg="24" :xl="12" :xxl="12">
-                            <FormItem :label="$t('learnActivity.mark.allocation')" class="setting-item-wrap">
-                                <RadioGroup v-model="setting.mode">
-                                    <Radio :label="$t('learnActivity.mark.random')"></Radio>
-                                    <Radio :label="$t('learnActivity.mark.class')"></Radio>
-                                </RadioGroup>
+                            <FormItem label="阅卷次数" class="setting-item-wrap">
+                                <InputNumber :max="2" :min="1" v-model="setting.point"></InputNumber>
                             </FormItem>
                             </Col>
                             <Col :md="24" :lg="24" :xl="12" :xxl="12">
@@ -42,13 +25,14 @@
             </div>
 
             <div class="setting-block">
-                <p class="block-title">
+                <!-- <p class="block-title">
                     {{$t('learnActivity.mark.markRole')}}
-                </p>
+                </p> -->
                 <div class="setting-content">
                     <Row>
                         <Col :md="24" :lg="24" :xl="12" :xxl="12">
-                        <div class="role-item-wrap">
+                        <!-- 异常处理老师 -->
+                        <div class="role-item-wrap" style="display:none">
                             <span class="role-label">{{$t('learnActivity.mark.errRole')}}</span>
                             <Select v-model="setting.err" style="width:400px" multiple>
                                 <Option value="beijing">New York</Option>
@@ -58,7 +42,8 @@
                         </div>
                         </Col>
                         <Col :md="24" :lg="24" :xl="12" :xxl="12">
-                        <div class="role-item-wrap">
+                        <!-- 仲裁老师 -->
+                        <div class="role-item-wrap" style="display:none">
                             <span class="role-label">{{$t('learnActivity.mark.arb')}}</span>
                             <Select v-model="setting.err1" style="width:400px" multiple>
                                 <Option value="beijing">New York</Option>
@@ -68,6 +53,7 @@
                         </div>
                         </Col>
                     </Row>
+                    <!-- 阅卷老师设置 -->
                     <div class="role-item-wrap dark-iview-table">
                         <span class="role-label" style="vertical-align: top;">{{$t('learnActivity.mark.markRole')}}</span>
                         <div class="scan-tea-table">
@@ -78,8 +64,11 @@
                                 <template slot-scope="{ row }" slot="action">
                                     <Button type="error" size="small">{{$t('learnActivity.mark.remove')}}</Button>
                                 </template>
+                                <template slot-scope="{ row }" slot="num">
+                                    <span>{{`${row.num}/24`}}</span>
+                                </template>
                             </Table>
-                            <span class="add-tea-btn">
+                            <span class="add-tea-btn" @click="addTeaStatus = true">
                                 <Icon type="md-add" />
                                 {{$t('learnActivity.mark.addTea')}}
                             </span>
@@ -87,10 +76,11 @@
                     </div>
                 </div>
             </div>
-            <div class="setting-block">
-                <p class="block-title">
+            <!-- 题号分配 -->
+            <div class="setting-block" style="display:none">
+                <!-- <p class="block-title">
                     {{$t('learnActivity.mark.quDistrub')}}
-                </p>
+                </p> -->
                 <div class="setting-content dark-iview-table">
                     <Table :columns="quCol" :data="quData" border :no-data-text="$t('learnActivity.mark.noTea')">
                         <template slot-scope="{ row }" slot="quNo">
@@ -106,6 +96,16 @@
                 </div>
             </div>
         </vuescroll>
+        <Modal v-model="addTeaStatus" :title="$t('learnActivity.mark.addTeaTitle')" class-name="dark-iview-modal dark-iview-table" @on-ok="okAddTea" :width="1000">
+            <Table ref="sltTea" :columns="teacherCol" :data="teacherList" style="margin-top:10px" @on-selection-change="(selection)=>{sltTeachers = selection}" height="600">
+                <template slot-scope="{ row }" slot="picture">
+                    <PersonalPhoto :name="row.name" :picture="row.picture" />
+                </template>
+                <template slot-scope="{ row }" slot="job">
+                    <span>{{row.job || '--'}}</span>
+                </template>
+            </Table>
+        </Modal>
     </div>
 </template>
 <script>
@@ -125,6 +125,37 @@ export default {
                 point: 2,//分差(仲裁条件)
                 quRule: [],//题目分配规则
             },
+            addTeaStatus: false,
+            teacherList: [],
+            sltTeachers: [],
+            teacherCol: [
+                {
+                    type: 'selection',
+                    width: 60,
+                    align: 'center'
+                },
+                {
+                    title: ' ',
+                    slot: 'picture',
+                    align: 'center ',
+                    width: '120'
+                },
+                {
+                    title: this.$t('cusMgt.teaName'),
+                    key: 'name',
+                    align: 'center '
+                },
+                {
+                    title: 'id',
+                    key: 'id',
+                    align: 'center '
+                },
+                {
+                    title: this.$t('cusMgt.job'),
+                    slot: 'job',
+                    align: 'center '
+                }
+            ],
             teaCol: [
                 {
                     title: ' ',
@@ -132,18 +163,18 @@ export default {
                     align: 'center'
                 },
                 {
-                    title: '姓名',
-                    key: 'name',
+                    title: 'id',
+                    key: 'id',
                     align: 'center'
                 },
                 {
-                    title: '手机',
-                    key: 'phone',
+                    title: this.$t('learnActivity.mark.name'),
+                    key: 'name',
                     align: 'center'
                 },
                 {
-                    title: '阅卷量',
-                    key: 'num',
+                    title: this.$t('learnActivity.mark.markNum'),
+                    slot: 'num',
                     align: 'center'
                 },
                 {
@@ -152,23 +183,7 @@ export default {
                     align: 'center'
                 },
             ],
-            teaData: [
-                {
-                    name: '测试老师',
-                    phone: '13096300695',
-                    num: '100/563'
-                },
-                {
-                    name: '测试老师',
-                    phone: '13096300695',
-                    num: '100/563'
-                },
-                {
-                    name: '测试老师',
-                    phone: '13096300695',
-                    num: '100/563'
-                }
-            ],
+            teaData: [],
             quCol: [
                 {
                     title: this.$t('learnActivity.mark.quIndex'),
@@ -199,33 +214,6 @@ export default {
                         'jefftest',
                         '李芷萱',
                     ]
-                },
-                {
-                    quNo: [4, 5, 6],
-                    teachers: [
-                        'JK',
-                        '尹航',
-                        '向奕然',
-                        '高嘉妍',
-                        '刘雨菡',
-                        'jefftest',
-                        '李芷萱',
-                        '刘雨菡',
-                        'jefftest',
-                        '李芷萱',
-                    ]
-                },
-                {
-                    quNo: [7, 8],
-                    teachers: [
-                        'JK',
-                        '尹航',
-                        '向奕然',
-                        '高嘉妍',
-                        '刘雨菡',
-                        'jefftest',
-                        '李芷萱',
-                    ]
                 }
             ]
         }
@@ -234,10 +222,34 @@ export default {
         MarkProgress, CptCount, ScanProgress, PersonalPhoto
     },
     methods: {
-
+        //确认添加老师
+        okAddTea() {
+            let ids = this.teaData.map(item => {
+                return item.id
+            })
+            this.sltTeachers.forEach(item => {
+                if (ids.indexOf(item.id) == -1) {
+                    this.teaData.push(item)
+                }
+            })
+            this.teaData.map(item => {
+                item.num = 24 / this.teaData.length
+            })
+            this.cancel()
+        },
+        cancel() {
+            this.sltTeachers = []
+            this.$refs.sltTea.selectAll(false)
+        },
+        
     },
     created() {
-
+        this.$store.dispatch('teachers/getTeacherList').then(res => {
+            this.teacherList = this.$store.state.teachers.teacherList.filter(item => {
+                return item.status == 'join'
+            })
+            console.log(this.teacherList)
+        })
     }
 }
 </script>
@@ -252,7 +264,9 @@ export default {
 }
 
 .setting-content {
-    background: #404042;
+    background: #2b2a2f;
+    box-shadow: 1px 1px 13px #141414;
+    // border: 1px solid rgba(98, 97, 101, 0.4);
     padding: 10px;
     border-radius: 5px;
     margin-right: 12px;
@@ -317,7 +331,7 @@ export default {
     .role-label {
         color: #a5a5a5;
         display: inline-block;
-        width: 120px;
+        // width: 120px;
         text-align: right;
         padding-right: 10px;
     }

+ 9 - 7
TEAMModelOS/ClientApp/src/view/learnactivity/markpaper/MarkView.vue

@@ -1,9 +1,11 @@
 <template>
+    <!-- 未做多语言 -->
     <div class="mark-area">
         <!-- 头部基础信息 -->
         <div class="mark-header" v-show="markMode == 'paper'">
             <span class="quit-marking-text">
-                <Icon custom="iconfont icon-quit2" class="quit-marking-icon" title="退出阅卷" @click="test"/>
+                <!-- <Icon custom="iconfont icon-quit2" class="quit-marking-icon" title="退出阅卷" @click="test"/> -->
+                <Icon type="ios-arrow-back" class="quit-marking-icon" title="退出阅卷" @click="test" />
                 <!-- 退出阅卷 -->
             </span>
             <span class="info-label">考试名称:</span>
@@ -17,7 +19,7 @@
             <div class="btn-wrap">
                 <!-- <Button type="text" custom-icon="iconfont icon-exception" class="action-btn" @click="test">异常申报</Button> -->
                 <span class="action-btn">
-                    <Icon custom="iconfont icon-exception" class="action-btn-icon"/>
+                    <Icon custom="iconfont icon-exception" class="action-btn-icon" />
                     异常申报
                 </span>
             </div>
@@ -55,7 +57,7 @@
                 </Poptip>
                 <Icon custom="iconfont icon-fresh" class="tool-icon" title="清除批注" @click="clear" />
                 <Icon custom="iconfont icon-review" class="tool-icon" title="重阅" />
-                <Icon :custom="isFull ? 'iconfont icon-cancel-full' : 'iconfont icon-full-screen'" class="tool-icon" :title="isFull ? '取消全屏' : '全屏'" @click="togglefull"/>
+                <Icon :custom="isFull ? 'iconfont icon-cancel-full' : 'iconfont icon-full-screen'" class="tool-icon" :title="isFull ? '取消全屏' : '全屏'" @click="togglefull" />
                 <!-- <Icon custom="iconfont icon-exception" class="tool-icon exception-icon" title="异常申报" color="#ed4014" /> -->
                 <!-- <Icon v-for="(item,index) in iconList" :key="index" :custom="item.icon" :class="['tool-icon', activeIcon == index ? 'tool-icon-active':'']" :title="item.title" @click="(item.click)(index)" :color="item.color" /> -->
             </div>
@@ -221,11 +223,11 @@ export default {
             curImg: undefined,
             counter: 0,
             markMode: 'paper', //阅卷模式
-            isFull:false, //是否为全屏模式
+            isFull: false, //是否为全屏模式
         }
     },
     methods: {
-        togglefull(){
+        togglefull() {
             this.$router.push({
                 name: this.isFull ? 'MarkView' : 'FullMarkView'
             })
@@ -849,7 +851,7 @@ export default {
         //模拟按题阅卷和整体阅卷
         let routeData = this.$route
         // this.mode = routeData.params.type
-        if(routeData.name == 'FullMarkView') this.isFull = true
+        if (routeData.name == 'FullMarkView') this.isFull = true
         this.mode = 1
 
         //监听删除按键,删除图形
@@ -1022,7 +1024,7 @@ export default {
     margin-left: 10px;
     cursor: pointer;
 }
-.action-btn-icon{
+.action-btn-icon {
     display: inline-block;
     margin-right: 5px;
 }

+ 1 - 1
TEAMModelOS/ClientApp/src/view/schoolmgmt/SystemSetting/NewSystemSetting.less

@@ -14,7 +14,7 @@
         padding: 0px 20px;
         .school-tools {
             font-size: var(--font-size-normal);
-            margin-right: 30px;
+            // margin-right: 30px;
             margin-top: 8px;
             float: right;
         }

+ 1 - 1
TEAMModelOS/ClientApp/src/view/student-account/ClassMgt.vue

@@ -30,7 +30,7 @@
                     <Icon v-if="$access.can('admin.*|classroom-upd')" class="action-btn-icon" type="md-trash" @click.stop="showConfirmDelete()" />
                     <Icon v-if="$access.can('admin.*|classroom-upd')" class="action-btn-icon" type="md-add" @click="addClassroom()" />
                 </div>
-                <div v-else class="dark-iview-input" style="float:right;width:calc(100% - 180px);padding-right:10px;">
+                <div v-else class="dark-iview-input" style="float:right;width:calc(100% - 200px);padding-right:10px;">
                     <Input icon="ios-close" v-model="keyword" :placeholder="$t('schoolBaseInfo.codeSearchHolder')" autofocus style="width:100%" @on-click="closeKeySearch" @on-change="filterClassname" />
                 </div>
             </div>

+ 120 - 0
TEAMModelOS/ClientApp/src/view/task/index.less

@@ -0,0 +1,120 @@
+
+@main-bgColor: rgb(40,40,40); //主背景颜色
+@borderColor: #424242;
+@primary-textColor: #fff; //文本主颜色
+@second-textColor: #a5a5a5; //文本副级颜色
+@primary-fontSize: 14px;
+@second-fontSize: 16px;
+
+.task-container{
+    width: 100%;
+    height: 100%;
+    padding-left: 10px;
+    color: #a5a5a5;
+}
+.task-header{
+    width: 100%;
+    height: 45px;
+    line-height: 45px;
+    border-bottom: 1px solid @borderColor;
+    color: @second-textColor;
+}
+.task-content{
+    width: 100%;
+    height: ~"calc(100% - 45px)";
+}
+.ev-mark-info{
+    padding-left: 10px !important;
+}
+.task-bar-item {
+    margin-right: 10px;
+    display: inline-block;
+    cursor: pointer;
+    line-height: 38px;
+}
+.ev-item{
+    border-bottom: 1px solid @borderColor;
+    padding: 15px 10px 15px 0px;
+    cursor: pointer;
+    user-select: none;
+    .ev-name{
+        font-size: 16px;
+        color: white;
+    }
+}
+.mark-status-tag {
+    padding: 1px 2px;
+    border: 1px solid #1CC0F3;
+    margin-left: 2px;
+    border-radius: 2px;
+    font-size:12px;
+    color: #1cc0f3;
+    transform: scale(0.8);
+    display: inline-block;
+}
+.ev-info{
+    color: #a5a5a5;
+    margin-top: 5px;
+}
+.setting-block {
+    margin-top: 30px;
+}
+.setting-block:first-child {
+    margin-top: 20px;
+}
+.setting-block:first-child .setting-content {
+    // background: none;
+    padding: 25px 10px 25px 25px;
+}
+
+.setting-content {
+    background: #2b2a2f;
+    box-shadow: 1px 1px 13px #141414;
+    border: 1px solid rgba(98, 97, 101, 0.4);
+    padding: 15px 10px;
+    border-radius: 5px;
+    margin-right: 12px;
+    margin-top: 8px;
+    box-shadow: 0 26px 40px -24px rgb(30, 31, 33);
+}
+.count-content {
+    display: flex;
+}
+.count-wrap {
+    flex: 1;
+    text-align: center;
+    color: white;
+    width: 200px;
+    position: relative;
+    .count-icon {
+        color: #a5a5a5;
+    }
+    .count-num {
+        font-size: 40px;
+    }
+    .count-label {
+        color: #a5a5a5;
+    }
+}
+.count-wrap::after {
+    content: "";
+    width: 2px;
+    height: 30px;
+    background: #a5a5a5;
+    position: absolute;
+    right: 0px;
+    top: 50%;
+    margin-top: -15px;
+}
+.count-wrap:last-child::after {
+    display: none;
+}
+.to-mark-view{
+    cursor: pointer;
+    &:hover{
+        color: #2d8cf0;
+        .to-mark-view-text{
+            color: #2d8cf0;
+        }
+    }
+}

+ 153 - 0
TEAMModelOS/ClientApp/src/view/task/index.vue

@@ -0,0 +1,153 @@
+<template>
+    <!-- 未做多语言 -->
+    <div class="task-container">
+        <div class="task-header">
+            <span :class="curBarIndex == 0 ? 'task-bar-item line-bottom-active line-bottom':'task-bar-item line-bottom'" @click="selectBar(0)">
+                阅卷任务
+            </span>
+        </div>
+        <div class="task-content dark-iview-split">
+            <Split v-model="split1">
+                <vuescroll slot="left" class="ev-list">
+                    <div :class="['ev-item','block-bg',index == curEvIndex ? 'block-bg-active':'']" v-for="(item,index) in evList" :key="index" @click="selectEvaluation(index)">
+                        <p class="ev-name">
+                            <span>{{item.name}}</span>
+                            <span class="mark-status-tag">进行中</span>
+                        </p>
+                        <p class="ev-info">
+                            <Icon type="md-time" style="margin-right:5px;" size="16" />
+                            <span>{{$t('learnActivity.mgtScEv.endTime')}}{{dateFormat(item.endTime)}}</span>
+                        </p>
+                        <p class="ev-info">
+                            <Icon type="ios-cube" style="margin-right:5px;" size="14" />
+                            <span>{{$t('learnActivity.mgtScEv.evType')}}{{getTypeLabel(item.type)}}</span>
+                        </p>
+                    </div>
+                </vuescroll>
+                <vuescroll slot="right" class="ev-mark-info">
+                    <!-- 数据概览 -->
+                    <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">12</p>
+                                <p class="count-label">
+                                    <Icon custom="iconfont icon-scanning" class="count-icon" size="16" />
+                                    总量
+                                </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" />
+                                    已阅
+                                </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" />
+                                    未阅
+                                </p>
+                            </div>
+                            <div class="count-wrap to-mark-view" @click="toMarkView">
+                                <p class="count-num">
+                                    <Icon type="ios-arrow-forward" />
+                                    <Icon type="ios-arrow-forward" style="margin-left:-25px" />
+                                </p>
+                                <p class="count-label to-mark-view-text">
+                                    继续阅卷
+                                </p>
+                            </div>
+                        </div>
+                    </div>
+                    <!-- 数据对比 -->
+                    <div class="setting-block">
+                        <p class="block-title">数据对比</p>
+                        <div class="setting-content count-content">
+
+                        </div>
+                    </div>
+                </vuescroll>
+            </Split>
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    data() {
+        return {
+            split1: 0.2,
+            curBarIndex: 0,
+            evList: [],
+            curEvIndex: 0
+        }
+    },
+    methods: {
+        toMarkView() {
+            this.$router.push({
+                name: 'MarkView',
+                params: {
+                    type: 1,
+                    from: this.$route.name
+                }
+            })
+        },
+        /**获取type对应的label */
+        getTypeLabel(code) {
+            for (let item of this.$GLOBAL.EV_TYPE()) {
+                if (item.value == code) {
+                    return item.label
+                }
+            }
+        },
+        dateFormat(timestamp) {
+            var date = new Date(timestamp)
+            var Y = date.getFullYear() + '-'
+            var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
+            var D = date.getDate() + ' '
+            return Y + M + D;
+        },
+        selectBar(index) {
+            this.curBarIndex = index
+        },
+        //查询阅卷任务列表 现在暂无相关API,暂时查询所有评测
+        findEvaluation() {
+            let requestData = {
+                code: this.$store.state.userInfo.schoolCode,
+                classIds: undefined
+            }
+            this.$api.learnActivity.FindExamInfo(requestData).then(
+                res => {
+                    if (!res.error) {
+                        res.examInfo = res.examInfo.sort((a, b) => {
+                            return a.createTime - b.createTime > 0 ? -1 : 1
+                        })
+                        this.evList = res.examInfo
+                        this.evList = res.examInfo
+                        this.selectEvaluation(0)
+                    } else {
+                        this.$Message.error('API ERROR!')
+                    }
+                }
+            )
+        },
+        selectEvaluation(index) {
+            this.curEvIndex = index
+            // if (this.evList[this.curEvaIndex] && this.evList[this.curEvaIndex].papers.length == 0) {
+            //     this.findExamPaper()
+            // } else {
+            //     this.examDetaiInfo = this.evaListShow[this.curEvaIndex]
+            // }
+        },
+    },
+    created() {
+        this.findEvaluation()
+    }
+}
+</script>
+<style scoped lang="less">
+@import "./index.less";
+</style>
+<style lang="less">
+</style>