Browse Source

Merge branch 'master' of http://106.12.23.251:10080/CDHABOOK/TEAMModelOS

zhou sheng 6 năm trước cách đây
mục cha
commit
c955730c60
100 tập tin đã thay đổi với 8479 bổ sung721 xóa
  1. 1 0
      .gitignore
  2. BIN
      TEAMModelOS.Admin/wwwroot/143146fa24554ae2c5ac0a3982abb952.woff2
  3. 2 1
      TEAMModelOS.SmartClass/ClientApp/app.js
  4. BIN
      TEAMModelOS.SmartClass/ClientApp/assets/image/0.png
  5. BIN
      TEAMModelOS.SmartClass/ClientApp/assets/image/1.png
  6. BIN
      TEAMModelOS.SmartClass/ClientApp/assets/image/default-act.png
  7. BIN
      TEAMModelOS.SmartClass/ClientApp/assets/image/login_bg.jpg
  8. 19 9
      TEAMModelOS.SmartClass/ClientApp/components/smart-class/headers.vue
  9. 7 3
      TEAMModelOS.SmartClass/ClientApp/locale/index.js
  10. 43 14
      TEAMModelOS.SmartClass/ClientApp/router/routes.js
  11. 2434 0
      TEAMModelOS.SmartClass/ClientApp/static/commentList.json
  12. 420 0
      TEAMModelOS.SmartClass/ClientApp/static/lessonDetails.json
  13. 3 180
      TEAMModelOS.SmartClass/ClientApp/static/lessonList.json
  14. 450 0
      TEAMModelOS.SmartClass/ClientApp/static/observationList.json
  15. 794 0
      TEAMModelOS.SmartClass/ClientApp/static/pastAcList.json
  16. 7 6
      TEAMModelOS.SmartClass/ClientApp/view/app.vue
  17. 293 0
      TEAMModelOS.SmartClass/ClientApp/view/smart-class/CommentVideo.vue
  18. 409 0
      TEAMModelOS.SmartClass/ClientApp/view/smart-class/LessonDetails.vue
  19. 170 0
      TEAMModelOS.SmartClass/ClientApp/view/smart-class/LessonList.vue
  20. 1 1
      TEAMModelOS.SmartClass/ClientApp/view/smart-class/Lessons.vue
  21. 125 46
      TEAMModelOS.SmartClass/ClientApp/view/smart-class/LiveBroadcast.vue
  22. 137 0
      TEAMModelOS.SmartClass/ClientApp/view/smart-class/LoginPage.vue
  23. 64 0
      TEAMModelOS.SmartClass/ClientApp/view/smart-class/MainPage.vue
  24. 62 84
      TEAMModelOS.SmartClass/ClientApp/view/smart-class/PastReview.vue
  25. 1 1
      TEAMModelOS.SmartClass/ClientApp/view/smart-class/ReviewActivity.vue
  26. 90 73
      TEAMModelOS.SmartClass/ClientApp/view/smart-class/RewardDetails.vue
  27. 210 0
      TEAMModelOS.SmartClass/ClientApp/view/smart-class/Video.vue
  28. 105 0
      TEAMModelOS.SmartClass/ClientApp/view/smart-class/calendar.vue
  29. 5 5
      TEAMModelOS.SmartClass/ClientApp/view/smart-class/index.vue
  30. 6 5
      TEAMModelOS.SmartClass/ClientApp/view/smart-class/notice.vue
  31. 1 1
      TEAMModelOS.SmartClass/Views/Shared/_Layout.cshtml
  32. 35 4
      TEAMModelOS.SmartClass/package.json
  33. 14 2
      TEAMModelOS.SmartClass/webpack.config.js
  34. 16 3
      TEAMModelOS.SmartClass/webpack.config.vendor.js
  35. 229 229
      TEAMModelOS.SmartTeach/ClientApp/api/api.js
  36. 2 12
      TEAMModelOS.SmartTeach/ClientApp/app.js
  37. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/activity_bg_ico01.png
  38. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/activity_centerimg.png
  39. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/arrow_top.png
  40. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/banner-t.jpg
  41. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/blackboard.png
  42. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/book.png
  43. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/books.png
  44. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/choose_icon.png
  45. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/document_01.jpg
  46. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/document_02.jpg
  47. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/document_03.jpg
  48. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/document_04.jpg
  49. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/guider2.png
  50. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/guider2_bg2.gif
  51. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/login_bg.jpg
  52. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/login_pwd.png
  53. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/login_switchover.gif
  54. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/login_user.png
  55. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/low_search_icon.png
  56. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/more.png
  57. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/more_ico.png
  58. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/ni_bg_ico01.png
  59. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/ni_search_ico.png
  60. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/partner_bg.png
  61. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/people.png
  62. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/ppt_small.jpg
  63. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/qjf_star.gif
  64. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/qjf_star_r.gif
  65. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/rank_ico.png
  66. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/right.png
  67. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/search.png
  68. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/source.png
  69. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/star_1.png
  70. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/star_2.png
  71. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/teach.png
  72. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/teach01.jpg
  73. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/teach02.jpg
  74. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/teach03.jpg
  75. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/teach04.jpg
  76. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/touxiang_01.jpeg
  77. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/touxiang_02.jpeg
  78. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/touxiang_03.jpg
  79. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/touxiang_04.jpg
  80. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/touxiang_05.jpg
  81. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/touxiang_06.jpg
  82. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/touxiang_07.jpg
  83. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/touxiang_08.jpg
  84. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/tuxiang_06.jpg
  85. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/user.gif
  86. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/videoListBtn2.png
  87. BIN
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/video_icon.jpg
  88. 20 24
      TEAMModelOS.SmartTeach/ClientApp/common/footer.vue
  89. 22 18
      TEAMModelOS.SmartTeach/ClientApp/common/headers.vue
  90. 103 0
      TEAMModelOS.SmartTeach/ClientApp/components/resource/TeachActivies.vue
  91. 104 0
      TEAMModelOS.SmartTeach/ClientApp/components/resource/TeachClass.vue
  92. 182 0
      TEAMModelOS.SmartTeach/ClientApp/components/resource/TeachDetails.vue
  93. 103 0
      TEAMModelOS.SmartTeach/ClientApp/components/resource/TeachResearch.vue
  94. 430 0
      TEAMModelOS.SmartTeach/ClientApp/components/resource/TeachSource.vue
  95. 276 0
      TEAMModelOS.SmartTeach/ClientApp/components/resource/TeachTopclass.vue
  96. 102 0
      TEAMModelOS.SmartTeach/ClientApp/components/resource/TeachTopic.vue
  97. 236 0
      TEAMModelOS.SmartTeach/ClientApp/components/resource/TeacherWork.vue
  98. 91 0
      TEAMModelOS.SmartTeach/ClientApp/components/resource/TeacherZones.vue
  99. 655 0
      TEAMModelOS.SmartTeach/ClientApp/components/resource/ZonesHome.vue
  100. 0 0
      TEAMModelOS.SmartTeach/ClientApp/components/resource/activitycommon.vue

+ 1 - 0
.gitignore

@@ -256,3 +256,4 @@ _Pvt_Extensions
 .fake/
 
 .vscode/
+/.idea

BIN
TEAMModelOS.Admin/wwwroot/143146fa24554ae2c5ac0a3982abb952.woff2


+ 2 - 1
TEAMModelOS.SmartClass/ClientApp/app.js

@@ -21,7 +21,8 @@ Vue.use(VideoPlayer);
 //新添加的
 import vuescroll from 'vue-scroll'
 import echarts from 'echarts'
-
+//import FullCalendar from 'vue-full-calendar'
+//Vue.use(FullCalendar);
 //全局API请求
 Vue.prototype.$api = apiTools;
 Vue.prototype.$post = post;

BIN
TEAMModelOS.SmartClass/ClientApp/assets/image/0.png


BIN
TEAMModelOS.SmartClass/ClientApp/assets/image/1.png


BIN
TEAMModelOS.SmartClass/ClientApp/assets/image/default-act.png


BIN
TEAMModelOS.SmartClass/ClientApp/assets/image/login_bg.jpg


+ 19 - 9
TEAMModelOS.SmartClass/ClientApp/components/smart-class/headers.vue

@@ -1,16 +1,18 @@
 <template>
   <div class="headerContainer">
     <div class="header center-row">
-      <img src="http://ttkt.sxedu.org:70/upload/setting/0/0.png?_=1557194799800" />
+      <img src="../../assets/image/1.png" />
       <ul>
-        <li :class="this.$route.path ==  '/index' || activeIndex == 0 ? 'li-active':''" @click="handleMenuClick(0,'index')">首页</li>
-        <li :class="this.$route.path ==  '/notice' || activeIndex == 1? 'li-active':''" @click="handleMenuClick(1,'notice')">通知公告</li>
-        <li :class="this.$route.path ==  '/reviewActivity' || activeIndex == 2? 'li-active':''" @click="handleMenuClick(2,'reviewActivity')">评审活动</li> 
-        <li :class="this.$route.path ==  '/PastReview' || activeIndex == 3? 'li-active':''" @click="handleMenuClick(3,'PastReview')">往届回顾</li>
-        <li :class="this.$route.path ==  '/LiveBroadcast' || activeIndex == 4? 'li-active':''" @click="handleMenuClick(4,'LiveBroadcast')">天天直播</li>
-        <li :class="this.$route.path ==  '/Lessons' || activeIndex == 5? 'li-active':''" @click="handleMenuClick(5,'Lessons')">优课汇聚</li>
+        <li :class="this.$route.path ==  '/main/index' || activeIndex == 0 ? 'li-active':''" @click="handleMenuClick(0,'index')">首页</li>
+        <li :class="this.$route.path ==  '/main/notice' || activeIndex == 1? 'li-active':''" @click="handleMenuClick(1,'notice')">通知公告</li>
+        <li :class="this.$route.path ==  '/main/reviewActivity' || activeIndex == 2? 'li-active':''" @click="handleMenuClick(2,'reviewActivity')">评审活动</li>
+        <li :class="this.$route.path ==  '/main/PastReview' || activeIndex == 3? 'li-active':''" @click="handleMenuClick(3,'PastReview')">往届回顾</li>
+        <li :class="this.$route.path ==  '/main/LiveBroadcast' || activeIndex == 4? 'li-active':''" @click="handleMenuClick(4,'LiveBroadcast')">天天直播</li>
+        <li :class="this.$route.path ==  '/main/Lessons' || activeIndex == 5? 'li-active':''" @click="handleMenuClick(5,'Lessons')">优课汇聚</li>
       </ul>
-      <span class="btn-login">登录</span>
+      <span class="btn-login" v-if="isLogin == 1" >欢迎&nbsp;{{userName}}!</span>
+      <Icon type="md-power" v-if="isLogin == 1" @click="loginOut" style="margin-left:30px;" size="20" color="white" />
+      <span class="btn-login" v-else @click="handleMenuClick(6,'/login')">登录</span>
     </div>
   </div>
 </template>
@@ -20,6 +22,8 @@
     name: "headers",
     data() {
       return {
+        userName: '',
+        isLogin:'',
         activeIndex: sessionStorage.getItem('_activeIndex') || 0
       }
     },
@@ -32,9 +36,15 @@
         this.activeIndex = index;
         sessionStorage.setItem('_activeIndex', index);
         this.$router.push(route);
+      },
+      loginOut() {
+        localStorage.clear();
+        this.isLogin = 0;
       }
     },
     mounted() {
+      this.userName = localStorage.getItem("userName");
+      this.isLogin = localStorage.getItem("isLogin");
       this.$eventBus.$on('activeIndex', (index) => {
         this.activeIndex = index;
       })
@@ -63,7 +73,7 @@
       list-style:none;
       color:#aaa;
       padding: 0 20px;
-      margin-right:160px;
+      /*margin-right:20px;*/
     }
 
       .header ul li {

+ 7 - 3
TEAMModelOS.SmartClass/ClientApp/locale/index.js

@@ -4,6 +4,10 @@ import customZhCn from './lang/zh-CN'
 import customZhTw from './lang/zh-TW'
 import customEnUs from './lang/en-US'
 
+import zhLocale from "iview/src/locale/lang/zh-CN";
+import enLocale from "iview/src/locale/lang/en-US";
+import twLocale from "iview/src/locale/lang/zh-TW";
+
 Vue.use(VueI18n)
 
 // 自动根据浏览器系统语言设置语言
@@ -18,9 +22,9 @@ Vue.config.lang = lang
 
 Vue.locale = () => { }
 const messages = {
-  'zh-CN': customZhCn,
-  'zh-TW': customZhTw,
-  'en-US': customEnUs
+  'zh-CN': Object.assign(customZhCn, zhLocale),
+  'zh-TW': Object.assign(customZhTw, twLocale),
+  'en-US': Object.assign(customEnUs, enLocale),
 }
 const i18n = new VueI18n({
   locale: lang,

+ 43 - 14
TEAMModelOS.SmartClass/ClientApp/router/routes.js

@@ -2,62 +2,91 @@
 export const routes = [
   {
     path: '/',
-    redirect: '/index'
+    redirect: '/login'
   },
   {
-    name:'index',
-    path: '',
-    component: resolve => require(['@/view/App'], resolve), //路由懒加载
+    path: '/main',
+    redirect: '/main/index'
+  },
+  {
+    name: 'login',
+    path: '/login',
+    component: resolve => require(['@/view/smart-class/LoginPage'], resolve), //路由懒加载
+  },
+  {
+    name: 'main',
+    path: '/main',
+    component: resolve => require(['@/view/smart-class/MainPage'], resolve), //路由懒加载
     children: [
       {
         name: 'index',
-        path: '/index',
+        path: 'index',
         component: resolve => require(['@/view/smart-class/index'], resolve), //路由懒加载
       },
       {
         name: 'notice',
-        path: '/notice',
+        path: 'notice',
         component: resolve => require(['@/view/smart-class/notice'], resolve), //路由懒加载
       },
       {
         name: 'reviewActivity',
-        path: '/reviewActivity',
+        path: 'reviewActivity',
         component: resolve => require(['@/view/smart-class/ReviewActivity'], resolve), //路由懒加载
       },
       {
         name: 'PastReview',
-        path: '/PastReview',
+        path: 'PastReview',
         component: resolve => require(['@/view/smart-class/PastReview'], resolve), //路由懒加载
       },
       {
         name: 'LiveBroadcast',
-        path: '/LiveBroadcast',
+        path: 'LiveBroadcast',
         component: resolve => require(['@/view/smart-class/LiveBroadcast'], resolve), //路由懒加载
       },
       {
         name: 'Lessons',
-        path: '/Lessons',
+        path: 'Lessons',
         component: resolve => require(['@/view/smart-class/Lessons'], resolve), //路由懒加载
       },
       {
         name: 'activityDetails',
-        path: '/activityDetails',
+        path: 'activityDetails',
         component: resolve => require(['@/view/smart-class/ActivityDetails'], resolve), //路由懒加载
       },
       {
         name: 'noticeDetails',
-        path: '/noticeDetails',
+        path: 'noticeDetails',
         component: resolve => require(['@/view/smart-class/NoticeDetails'], resolve), //路由懒加载
       },
       {
         name: 'rewardDetails',
-        path: '/rewardDetails',
+        path: 'rewardDetails',
         component: resolve => require(['@/view/smart-class/RewardDetails'], resolve), //路由懒加载
       },
       {
         name: 'lessons',
-        path: '/lessons',
+        path: 'lessons',
         component: resolve => require(['@/view/smart-class/Lessons'], resolve), //路由懒加载
+      },
+      {
+        name: 'lessonList',
+        path: 'lessonList',
+        component: resolve => require(['@/view/smart-class/LessonList'], resolve), //路由懒加载
+      },
+      {
+        name: 'lessonDetails',
+        path: 'lessonDetails',
+        component: resolve => require(['@/view/smart-class/LessonDetails'], resolve), //路由懒加载
+      },
+      {
+        name: 'video',
+        path: 'video',
+        component: resolve => require(['@/view/smart-class/Video'], resolve), //路由懒加载
+      },
+      {
+        name: 'commentVideo',
+        path: 'commentVideo',
+        component: resolve => require(['@/view/smart-class/CommentVideo'], resolve), //路由懒加载
       }
     ]
   }

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 2434 - 0
TEAMModelOS.SmartClass/ClientApp/static/commentList.json


+ 420 - 0
TEAMModelOS.SmartClass/ClientApp/static/lessonDetails.json

@@ -0,0 +1,420 @@
+{
+  "data": {
+    "activityStatus": 2,
+    "activityStatusTip": "已结束",
+    "autoChangeViewActivityStatus": true,
+    "commentCount": 52,
+    "cover": "1胡建良.png",
+    "coverHash": "127.png",
+    "coverUri": "/upload/viewactivity/cover/127/127.png?_=1557819330146",
+    "description": "<br>",
+    "dianZanCount": 0,
+    "employeeName": "吴雁",
+    "employeeNo": "41489",
+    "endTime": {
+      "date": 18,
+      "day": 5,
+      "hours": 16,
+      "minutes": 5,
+      "month": 4,
+      "nanos": 0,
+      "seconds": 0,
+      "time": 1526630700000,
+      "timezoneOffset": -480,
+      "year": 118
+    },
+    "id": 127,
+    "joinWay": 0,
+    "liveHls": "http://jpkt.sxedu.org:6080/hls/13CA5E3AD6DB4DF5865839BB47C134F8.m3u8",
+    "liveRtmp": "rtmp://jpkt.sxedu.org:1935/hls/13CA5E3AD6DB4DF5865839BB47C134F8",
+    "name": "创新实验室(学科教室)课例20180518直播",
+    "notice": "<br>",
+    "ownUnit": "柯桥区教师发展中心",
+    "parentCategoryId": 24,
+    "parentCategoryName": "创客",
+    "parentGradeId": 13,
+    "parentGradeName": "高一",
+    "parentGradeSectionId": 3,
+    "parentGradeSectionName": "高中",
+    "parentProjectId": 103,
+    "parentProjectName": "简易冠啸机器人搭建",
+    "parentTeachePlateId": 19,
+    "parentTeachePlateName": "冠啸创新实验室",
+    "reviewContent": "本次直播总点击量: 68 评论数: 44 今日直播只推PC端,采用移动录播设备直播,直播视频推送画面清晰,播放过程流畅无锯齿拖影,声音干净。上课学校设备保障充分,教师教学过程实施完整。直播过程网络通畅,没有出现画面中断停顿现象。",
+    "school": null,
+    "schoolName": "绍兴市柯桥区钱清中学",
+    "schoolNo": "11AFC704D0A5FE66E050A8C027277C89",
+    "score": 87.67,
+    "speaker": "胡建良",
+    "startTime": {
+      "date": 18,
+      "day": 5,
+      "hours": 15,
+      "minutes": 20,
+      "month": 4,
+      "nanos": 0,
+      "seconds": 0,
+      "time": 1526628000000,
+      "timezoneOffset": -480,
+      "year": 118
+    },
+    "timeRangeTip": "2018.05.18 15:20 - 05.18 16:05",
+    "timeRangeTipHHmm": "15:20 - 16:05",
+    "videoHls": null,
+    "videoRtmp": null,
+    "viewActivityAwardSetList": [],
+    "viewCount": 97,
+    "viewType": 0,
+    "viwActivityType": 1,
+    "viwActivityTypeTip": "创新实验室",
+    "workHonor": null,
+    "yearNo": 2018
+  },
+  "comments": [
+    {
+      "commentCount": 30,
+      "school": "绍兴市柯桥区钱清中学",
+      "schoolName": "绍兴市柯桥区钱清中学",
+      "schoolNo": "11AFC704D0A5FE66E050A8C027277C89",
+      "viewCount": 0
+    },
+    {
+      "commentCount": 5,
+      "school": "绍兴市柯桥区平水镇中学",
+      "schoolName": "绍兴市柯桥区平水镇中学",
+      "schoolNo": "3133005946",
+      "viewCount": 0
+    },
+    {
+      "commentCount": 5,
+      "school": "绍兴市柯桥区齐贤镇中心小学陶里校区",
+      "schoolName": "绍兴市柯桥区齐贤中心小学陶里校区",
+      "schoolNo": "2133006421",
+      "viewCount": 0
+    },
+    {
+      "commentCount": 3,
+      "school": "绍兴市柯桥区齐贤镇中学",
+      "schoolName": "绍兴市柯桥区齐贤中学",
+      "schoolNo": "3133005938",
+      "viewCount": 0
+    },
+    {
+      "commentCount": 1,
+      "school": "绍兴市柯桥区华舍中学",
+      "schoolName": "绍兴市柯桥区华舍中学",
+      "schoolNo": "3133005958",
+      "viewCount": 0
+    },
+    {
+      "commentCount": 1,
+      "school": "绍兴市柯桥区中国轻纺城第二小学",
+      "schoolName": "绍兴市柯桥区中国轻纺城第二小学",
+      "schoolNo": "2133006477",
+      "viewCount": 0
+    },
+    {
+      "commentCount": 1,
+      "school": "绍兴市柯桥区杨汛桥镇中学",
+      "schoolName": "绍兴市柯桥区杨汛桥镇中学",
+      "schoolNo": "3133005949",
+      "viewCount": 0
+    },
+    {
+      "commentCount": 1,
+      "school": "绍兴市柯桥区夏履镇中心小学",
+      "schoolName": "绍兴市柯桥区夏履镇中心小学",
+      "schoolNo": "2133006432",
+      "viewCount": 0
+    },
+    {
+      "commentCount": 1,
+      "school": "绍兴市柯桥区越崎中学",
+      "schoolName": "绍兴市柯桥区越崎中学",
+      "schoolNo": "3433005812",
+      "viewCount": 0
+    },
+    {
+      "commentCount": 1,
+      "school": "绍兴市柯桥区齐贤镇中心小学",
+      "schoolName": "绍兴市柯桥区齐贤中心小学",
+      "schoolNo": "2133006415",
+      "viewCount": 0
+    }
+  ],
+  "attachments": [
+    {
+      "attachmentType": 1,
+      "attachmentTypeId": 1,
+      "attachmentTypeName": "观课视频",
+      "attachmentTypeTip": "观课视频",
+      "fileName": "钱清中学胡建良创新实验室课例.mp4",
+      "fileNameHash": "511.mp4",
+      "fileNameRtmpUri": "rtmp://6.182.0.4:1935/upload//viewactivity/attachment/511/511.mp4",
+      "fileNameUri": "/upload/viewactivity/attachment/511/511.mp4?_=1557819505405",
+      "fileSize": 220083912,
+      "fileSizeTip": "209.89MB",
+      "fileType": 2,
+      "fileTypeTip": "视频",
+      "htmName": null,
+      "htmRemark": "无法转换:2018-06-05 12:35:08",
+      "id": 511,
+      "pdfName": null,
+      "pdfRemark": "无法转换:2018-06-05 12:35:08",
+      "swfName": null,
+      "swfRemark": "无法转换:2018-06-05 12:35:08",
+      "viewActivityId": 127,
+      "viewActivityName": "创新实验室(学科教室)课例20180518直播"
+    },
+    {
+      "attachmentType": 3,
+      "attachmentTypeId": 3,
+      "attachmentTypeName": "教学设计",
+      "attachmentTypeTip": "教学设计",
+      "fileName": "教学设计表.docx",
+      "fileNameHash": "740.docx",
+      "fileNameRtmpUri": null,
+      "fileNameUri": "/upload/viewactivity/attachment/740/740.docx?_=1557819505405",
+      "fileSize": 18127,
+      "fileSizeTip": "17.70KB",
+      "fileType": 1,
+      "fileTypeTip": "文档",
+      "htmName": "740.htm",
+      "htmRemark": "成功:2018-07-06 14:09:43",
+      "id": 740,
+      "pdfName": "740.pdf",
+      "pdfRemark": "成功:2018-07-06 14:09:42",
+      "swfName": "740.swf",
+      "swfRemark": "成功:2018-07-06 14:09:43",
+      "viewActivityId": 127,
+      "viewActivityName": "创新实验室(学科教室)课例20180518直播"
+    },
+    {
+      "attachmentType": 4,
+      "attachmentTypeId": 4,
+      "attachmentTypeName": "教学反思",
+      "attachmentTypeTip": "教学反思",
+      "fileName": "教学反思表.docx",
+      "fileNameHash": "741.docx",
+      "fileNameRtmpUri": null,
+      "fileNameUri": "/upload/viewactivity/attachment/741/741.docx?_=1557819505406",
+      "fileSize": 17767,
+      "fileSizeTip": "17.35KB",
+      "fileType": 1,
+      "fileTypeTip": "文档",
+      "htmName": "741.htm",
+      "htmRemark": "成功:2018-07-06 14:09:44",
+      "id": 741,
+      "pdfName": "741.pdf",
+      "pdfRemark": "成功:2018-07-06 14:09:44",
+      "swfName": "741.swf",
+      "swfRemark": "成功:2018-07-06 14:09:45",
+      "viewActivityId": 127,
+      "viewActivityName": "创新实验室(学科教室)课例20180518直播"
+    }
+  ],
+  "views": [
+    {
+      "liveCount": 28,
+      "school": "绍兴市柯桥区钱清中学",
+      "schoolName": "绍兴市柯桥区钱清中学",
+      "schoolNo": "11AFC704D0A5FE66E050A8C027277C89",
+      "videoCount": 5,
+      "viewCount": 33
+    },
+    {
+      "liveCount": 25,
+      "school": "绍兴市柯桥区平水镇中学",
+      "schoolName": "绍兴市柯桥区平水镇中学",
+      "schoolNo": "3133005946",
+      "videoCount": 0,
+      "viewCount": 25
+    },
+    {
+      "liveCount": 1,
+      "school": "柯桥区教师发展中心",
+      "schoolName": "柯桥区教师发展中心",
+      "schoolNo": "11AFC704CA3EFE66E050A8C027277C89",
+      "videoCount": 6,
+      "viewCount": 7
+    },
+    {
+      "liveCount": 5,
+      "school": "绍兴市柯桥区齐贤镇中学",
+      "schoolName": "绍兴市柯桥区齐贤中学",
+      "schoolNo": "3133005938",
+      "videoCount": 0,
+      "viewCount": 5
+    },
+    {
+      "liveCount": 3,
+      "school": "绍兴市柯桥区齐贤镇中心小学陶里校区",
+      "schoolName": "绍兴市柯桥区齐贤中心小学陶里校区",
+      "schoolNo": "2133006421",
+      "videoCount": 2,
+      "viewCount": 5
+    },
+    {
+      "liveCount": 0,
+      "school": "绍兴市柯桥区钱清镇中学",
+      "schoolName": "绍兴市柯桥区钱清镇中学",
+      "schoolNo": "3133005936",
+      "videoCount": 4,
+      "viewCount": 4
+    },
+    {
+      "liveCount": 0,
+      "school": "绍兴市柯桥区齐贤镇中心小学",
+      "schoolName": "绍兴市柯桥区齐贤中心小学",
+      "schoolNo": "2133006415",
+      "videoCount": 3,
+      "viewCount": 3
+    },
+    {
+      "liveCount": 0,
+      "school": "绍兴市柯桥区越崎中学",
+      "schoolName": "绍兴市柯桥区越崎中学",
+      "schoolNo": "3433005812",
+      "videoCount": 2,
+      "viewCount": 2
+    },
+    {
+      "liveCount": 0,
+      "school": "绍兴市柯桥区华甫中学",
+      "schoolName": "绍兴市柯桥区华甫中学",
+      "schoolNo": "3133005928",
+      "videoCount": 1,
+      "viewCount": 1
+    },
+    {
+      "liveCount": 1,
+      "school": "绍兴市柯桥区秋瑾小学金三角校区",
+      "schoolName": "绍兴市柯桥区秋瑾小学金三角校区",
+      "schoolNo": "2133006434",
+      "videoCount": 0,
+      "viewCount": 1
+    }
+  ],
+  "commentList": [
+    {
+      "employeeName": "刘彬",
+      "employeeNo": "a1e4165d47704fd0b19416a91375b8fd",
+      "employeeSchool": "柯桥微课中学",
+      "employeeSchoolName": "柯桥微课中学",
+      "employeeSchoolNo": "126d15f2d1474cf4b4774ca083d45cf9",
+      "id": 224,
+      "parentCategoryId": 9,
+      "parentCategoryName": "语文",
+      "reviewContent": "喻老师执教的本节课师生互动很成功,整节课,学生始终处于一种探求氛围之中,阅读课文、分析人物形象、探讨、提问、回答问题、纠正错误等处理得很棒。科技的运用到达了实质性利用的层次,不再是为用多媒体而用多媒体,而是作为课堂教学的一个必要补充,尤其是科技聚焦核心知识,生成反馈有效促进了对文本的解读。",
+      "reviewTime": {
+        "date": 15,
+        "day": 2,
+        "hours": 13,
+        "minutes": 18,
+        "month": 0,
+        "nanos": 0,
+        "seconds": 47,
+        "time": 1547529527000,
+        "timezoneOffset": -480,
+        "year": 119
+      },
+      "school": null,
+      "schoolName": "柯桥区教师发展中心",
+      "schoolNo": "11AFC704CA3EFE66E050A8C027277C89",
+      "score": null,
+      "viewActivityActivityStatus": 2,
+      "viewActivityActivityStatusTip": "已结束",
+      "viewActivityCover": "喻远鑫.png",
+      "viewActivityCoverHash": "351.png",
+      "viewActivityCoverUri": "/upload/viewactivity/cover/351/351.png?_=1557820590437",
+      "viewActivityEndTime": {
+        "date": 13,
+        "day": 4,
+        "hours": 9,
+        "minutes": 48,
+        "month": 11,
+        "nanos": 0,
+        "seconds": 0,
+        "time": 1544665680000,
+        "timezoneOffset": -480,
+        "year": 118
+      },
+      "viewActivityId": 351,
+      "viewActivityName": "2018年柯桥区天天智慧课堂十佳优质课展示",
+      "viewActivitySpeaker": "喻远鑫",
+      "viewActivityStartTime": {
+        "date": 13,
+        "day": 4,
+        "hours": 9,
+        "minutes": 0,
+        "month": 11,
+        "nanos": 0,
+        "seconds": 0,
+        "time": 1544662800000,
+        "timezoneOffset": -480,
+        "year": 118
+      },
+      "viewActivityTimeRangeTip": "2018.12.13 09:00 - 12.13 09:48"
+    },
+    {
+      "employeeName": "张立新",
+      "employeeNo": "551c927cf05d4b9cb9244b5b741d2774",
+      "employeeSchool": "kqedu2018",
+      "employeeSchoolName": "kqedu2018",
+      "employeeSchoolNo": "9cfc6f6b2eb643aba8b86d6c04efe843",
+      "id": 225,
+      "parentCategoryId": 9,
+      "parentCategoryName": "语文",
+      "reviewContent": "本节课中,教师通过一系列 问题引导学生深度解读课文文本,分析人物特征和心理,基本达到了教学目标。建议:1.提高问题的有效性;2.发挥学生PAD支持自主学习的作用。",
+      "reviewTime": {
+        "date": 20,
+        "day": 0,
+        "hours": 19,
+        "minutes": 45,
+        "month": 0,
+        "nanos": 0,
+        "seconds": 48,
+        "time": 1547984748000,
+        "timezoneOffset": -480,
+        "year": 119
+      },
+      "school": null,
+      "schoolName": "柯桥区教师发展中心",
+      "schoolNo": "11AFC704CA3EFE66E050A8C027277C89",
+      "score": null,
+      "viewActivityActivityStatus": 2,
+      "viewActivityActivityStatusTip": "已结束",
+      "viewActivityCover": "喻远鑫.png",
+      "viewActivityCoverHash": "351.png",
+      "viewActivityCoverUri": "/upload/viewactivity/cover/351/351.png?_=1557820590437",
+      "viewActivityEndTime": {
+        "date": 13,
+        "day": 4,
+        "hours": 9,
+        "minutes": 48,
+        "month": 11,
+        "nanos": 0,
+        "seconds": 0,
+        "time": 1544665680000,
+        "timezoneOffset": -480,
+        "year": 118
+      },
+      "viewActivityId": 351,
+      "viewActivityName": "2018年柯桥区天天智慧课堂十佳优质课展示",
+      "viewActivitySpeaker": "喻远鑫",
+      "viewActivityStartTime": {
+        "date": 13,
+        "day": 4,
+        "hours": 9,
+        "minutes": 0,
+        "month": 11,
+        "nanos": 0,
+        "seconds": 0,
+        "time": 1544662800000,
+        "timezoneOffset": -480,
+        "year": 118
+      },
+      "viewActivityTimeRangeTip": "2018.12.13 09:00 - 12.13 09:48"
+    }
+  ]
+}

+ 3 - 180
TEAMModelOS.SmartClass/ClientApp/static/lessonList.json

@@ -1319,126 +1319,8 @@
     "viwActivityTypeTip": "新媒体新技术",
     "workHonor": null
   },
-  {
-    "activityStatus": 0,
-    "activityStatusTip": "未开始",
-    "autoChangeViewActivityStatus": true,
-    "commentCount": 0,
-    "cover": null,
-    "coverHash": null,
-    "coverUri": null,
-    "employeeName": "张锋",
-    "employeeNo": "354011",
-    "endTime": {
-      "date": 10,
-      "day": 5,
-      "hours": 10,
-      "minutes": 15,
-      "month": 4,
-      "nanos": 0,
-      "seconds": 0,
-      "time": 1557454500000,
-      "timezoneOffset": -480,
-      "year": 119
-    },
-    "id": 526,
-    "name": "2019051001直播",
-    "ownUnit": "柯桥区教师发展中心",
-    "parentCategoryId": 1,
-    "parentCategoryName": "语文",
-    "parentGradeId": 5,
-    "parentGradeName": "二年级",
-    "parentGradeSectionId": 1,
-    "parentGradeSectionName": "小学",
-    "parentProjectId": 490,
-    "parentProjectName": "《小马过河》",
-    "parentTeachePlateId": 2,
-    "parentTeachePlateName": "天喻互动课堂",
-    "school": null,
-    "schoolName": "绍兴市柯桥区杨汛桥紫薇小学",
-    "schoolNo": "2133006455",
-    "score": null,
-    "speaker": "胡常妹",
-    "startTime": {
-      "date": 10,
-      "day": 5,
-      "hours": 9,
-      "minutes": 35,
-      "month": 4,
-      "nanos": 0,
-      "seconds": 0,
-      "time": 1557452100000,
-      "timezoneOffset": -480,
-      "year": 119
-    },
-    "timeRangeTip": "2019.05.10 09:35 - 05.10 10:15",
-    "timeRangeTipHHmm": "09:35 - 10:15",
-    "viewActivityAwardSetList": [],
-    "viewCount": 0,
-    "viwActivityType": 0,
-    "viwActivityTypeTip": "新媒体新技术",
-    "workHonor": null
-  },
-  {
-    "activityStatus": 0,
-    "activityStatusTip": "未开始",
-    "autoChangeViewActivityStatus": true,
-    "commentCount": 0,
-    "cover": null,
-    "coverHash": null,
-    "coverUri": null,
-    "employeeName": "叶水良",
-    "employeeNo": "32795",
-    "endTime": {
-      "date": 9,
-      "day": 4,
-      "hours": 10,
-      "minutes": 15,
-      "month": 4,
-      "nanos": 0,
-      "seconds": 0,
-      "time": 1557368100000,
-      "timezoneOffset": -480,
-      "year": 119
-    },
-    "id": 470,
-    "name": "2019050902直播",
-    "ownUnit": "柯桥区教师发展中心",
-    "parentCategoryId": 45,
-    "parentCategoryName": "道德与法治",
-    "parentGradeId": 4,
-    "parentGradeName": "一年级",
-    "parentGradeSectionId": 1,
-    "parentGradeSectionName": "小学",
-    "parentProjectId": 145,
-    "parentProjectName": "《让我自己来整理》",
-    "parentTeachePlateId": 2,
-    "parentTeachePlateName": "天喻互动课堂",
-    "school": null,
-    "schoolName": "绍兴市柯桥区齐贤中心小学",
-    "schoolNo": "2133006415",
-    "score": null,
-    "speaker": "王利萍",
-    "startTime": {
-      "date": 9,
-      "day": 4,
-      "hours": 9,
-      "minutes": 35,
-      "month": 4,
-      "nanos": 0,
-      "seconds": 0,
-      "time": 1557365700000,
-      "timezoneOffset": -480,
-      "year": 119
-    },
-    "timeRangeTip": "2019.05.09 09:35 - 05.09 10:15",
-    "timeRangeTipHHmm": "09:35 - 10:15",
-    "viewActivityAwardSetList": [],
-    "viewCount": 0,
-    "viwActivityType": 0,
-    "viwActivityTypeTip": "新媒体新技术",
-    "workHonor": null
-  },
+  
+  
   {
     "activityStatus": 0,
     "activityStatusTip": "未开始",
@@ -1559,66 +1441,7 @@
     "viwActivityTypeTip": "新媒体新技术",
     "workHonor": null
   },
-  {
-    "activityStatus": 2,
-    "activityStatusTip": "已结束",
-    "autoChangeViewActivityStatus": true,
-    "commentCount": 28,
-    "cover": null,
-    "coverHash": null,
-    "coverUri": null,
-    "employeeName": "徐丽萍",
-    "employeeNo": "31440",
-    "endTime": {
-      "date": 8,
-      "day": 3,
-      "hours": 10,
-      "minutes": 20,
-      "month": 4,
-      "nanos": 0,
-      "seconds": 0,
-      "time": 1557282000000,
-      "timezoneOffset": -480,
-      "year": 119
-    },
-    "id": 473,
-    "name": "2019050801直播",
-    "ownUnit": "柯桥区教师发展中心",
-    "parentCategoryId": 1,
-    "parentCategoryName": "语文",
-    "parentGradeId": 7,
-    "parentGradeName": "四年级",
-    "parentGradeSectionId": 1,
-    "parentGradeSectionName": "小学",
-    "parentProjectId": 452,
-    "parentProjectName": "阅读拓展课《窗边的小豆豆》",
-    "parentTeachePlateId": 2,
-    "parentTeachePlateName": "天喻互动课堂",
-    "school": null,
-    "schoolName": "绍兴市柯桥区漓渚镇中心小学",
-    "schoolNo": "2133006375",
-    "score": null,
-    "speaker": "钱飞飞",
-    "startTime": {
-      "date": 8,
-      "day": 3,
-      "hours": 9,
-      "minutes": 40,
-      "month": 4,
-      "nanos": 0,
-      "seconds": 0,
-      "time": 1557279600000,
-      "timezoneOffset": -480,
-      "year": 119
-    },
-    "timeRangeTip": "2019.05.08 09:40 - 05.08 10:20",
-    "timeRangeTipHHmm": "09:40 - 10:20",
-    "viewActivityAwardSetList": [],
-    "viewCount": 55,
-    "viwActivityType": 0,
-    "viwActivityTypeTip": "新媒体新技术",
-    "workHonor": "青年教师标乒"
-  },
+  
   {
     "activityStatus": 2,
     "activityStatusTip": "已结束",

+ 450 - 0
TEAMModelOS.SmartClass/ClientApp/static/observationList.json

@@ -0,0 +1,450 @@
+{
+  "data": null,
+  "errorCode": null,
+  "html": null,
+  "key": null,
+  "list": [
+    {
+      "activityStatus": 2,
+      "activityStatusTip": "已结束",
+      "categoryId": 18,
+      "categoryName": "化学",
+      "cover": "徐益敏.png",
+      "coverHash": "350.png",
+      "coverUri": "/upload/viewactivity/cover/350/350.png?_=1557818510234",
+      "endTime": {
+        "date": 14,
+        "day": 5,
+        "hours": 10,
+        "minutes": 47,
+        "month": 11,
+        "nanos": 0,
+        "seconds": 0,
+        "time": 1544755620000,
+        "timezoneOffset": -480,
+        "year": 118
+      },
+      "gradeId": 12,
+      "gradeName": "九年级",
+      "id": 176,
+      "mainActivityId": 27,
+      "mainActivityName": "2018年柯桥区天天智慧课堂十佳优质课展示",
+      "school": null,
+      "schoolName": "柯桥区教师发展中心",
+      "schoolNo": "11AFC704CA3EFE66E050A8C027277C89",
+      "speaker": "徐益敏",
+      "startTime": {
+        "date": 14,
+        "day": 5,
+        "hours": 10,
+        "minutes": 0,
+        "month": 11,
+        "nanos": 0,
+        "seconds": 0,
+        "time": 1544752800000,
+        "timezoneOffset": -480,
+        "year": 118
+      },
+      "timeTip": "2018.12.14 10:00 - 12.14 10:47",
+      "viewActivityId": 350,
+      "viewActivityName": "2018年柯桥区天天智慧课堂十佳优质课展示"
+    },
+    {
+      "activityStatus": 2,
+      "activityStatusTip": "已结束",
+      "categoryId": 9,
+      "categoryName": "语文",
+      "cover": "喻远鑫.png",
+      "coverHash": "351.png",
+      "coverUri": "/upload/viewactivity/cover/351/351.png?_=1557818510234",
+      "endTime": {
+        "date": 13,
+        "day": 4,
+        "hours": 9,
+        "minutes": 48,
+        "month": 11,
+        "nanos": 0,
+        "seconds": 0,
+        "time": 1544665680000,
+        "timezoneOffset": -480,
+        "year": 118
+      },
+      "gradeId": 12,
+      "gradeName": "九年级",
+      "id": 175,
+      "mainActivityId": 27,
+      "mainActivityName": "2018年柯桥区天天智慧课堂十佳优质课展示",
+      "school": null,
+      "schoolName": "柯桥区教师发展中心",
+      "schoolNo": "11AFC704CA3EFE66E050A8C027277C89",
+      "speaker": "喻远鑫",
+      "startTime": {
+        "date": 13,
+        "day": 4,
+        "hours": 9,
+        "minutes": 0,
+        "month": 11,
+        "nanos": 0,
+        "seconds": 0,
+        "time": 1544662800000,
+        "timezoneOffset": -480,
+        "year": 118
+      },
+      "timeTip": "2018.12.13 09:00 - 12.13 09:48",
+      "viewActivityId": 351,
+      "viewActivityName": "2018年柯桥区天天智慧课堂十佳优质课展示"
+    },
+    {
+      "activityStatus": 2,
+      "activityStatusTip": "已结束",
+      "categoryId": 1,
+      "categoryName": "语文",
+      "cover": "王淼燕.png",
+      "coverHash": "352.png",
+      "coverUri": "/upload/viewactivity/cover/352/352.png?_=1557818510234",
+      "endTime": {
+        "date": 14,
+        "day": 3,
+        "hours": 10,
+        "minutes": 0,
+        "month": 10,
+        "nanos": 0,
+        "seconds": 0,
+        "time": 1542160800000,
+        "timezoneOffset": -480,
+        "year": 118
+      },
+      "gradeId": 8,
+      "gradeName": "五年级",
+      "id": 174,
+      "mainActivityId": 27,
+      "mainActivityName": "2018年柯桥区天天智慧课堂十佳优质课展示",
+      "school": null,
+      "schoolName": "柯桥区教师发展中心",
+      "schoolNo": "11AFC704CA3EFE66E050A8C027277C89",
+      "speaker": "王淼燕",
+      "startTime": {
+        "date": 14,
+        "day": 3,
+        "hours": 9,
+        "minutes": 15,
+        "month": 10,
+        "nanos": 0,
+        "seconds": 0,
+        "time": 1542158100000,
+        "timezoneOffset": -480,
+        "year": 118
+      },
+      "timeTip": "2018.11.14 09:15 - 11.14 10:00",
+      "viewActivityId": 352,
+      "viewActivityName": "2018年柯桥区天天智慧课堂十佳优质课展示"
+    },
+    {
+      "activityStatus": 2,
+      "activityStatusTip": "已结束",
+      "categoryId": 2,
+      "categoryName": "数学",
+      "cover": "李甜.png",
+      "coverHash": "354.png",
+      "coverUri": "/upload/viewactivity/cover/354/354.png?_=1557818510234",
+      "endTime": {
+        "date": 14,
+        "day": 5,
+        "hours": 11,
+        "minutes": 0,
+        "month": 8,
+        "nanos": 0,
+        "seconds": 0,
+        "time": 1536894000000,
+        "timezoneOffset": -480,
+        "year": 118
+      },
+      "gradeId": 6,
+      "gradeName": "三年级",
+      "id": 173,
+      "mainActivityId": 27,
+      "mainActivityName": "2018年柯桥区天天智慧课堂十佳优质课展示",
+      "school": null,
+      "schoolName": "柯桥区教师发展中心",
+      "schoolNo": "11AFC704CA3EFE66E050A8C027277C89",
+      "speaker": "李甜",
+      "startTime": {
+        "date": 14,
+        "day": 5,
+        "hours": 10,
+        "minutes": 0,
+        "month": 8,
+        "nanos": 0,
+        "seconds": 0,
+        "time": 1536890400000,
+        "timezoneOffset": -480,
+        "year": 118
+      },
+      "timeTip": "2018.09.14 10:00 - 09.14 11:00",
+      "viewActivityId": 354,
+      "viewActivityName": "2018年柯桥区天天智慧课堂十佳优质课展示"
+    },
+    {
+      "activityStatus": 2,
+      "activityStatusTip": "已结束",
+      "categoryId": 1,
+      "categoryName": "语文",
+      "cover": "赵霞.png",
+      "coverHash": "355.png",
+      "coverUri": "/upload/viewactivity/cover/355/355.png?_=1557818510234",
+      "endTime": {
+        "date": 8,
+        "day": 5,
+        "hours": 10,
+        "minutes": 0,
+        "month": 5,
+        "nanos": 0,
+        "seconds": 0,
+        "time": 1528423200000,
+        "timezoneOffset": -480,
+        "year": 118
+      },
+      "gradeId": 5,
+      "gradeName": "二年级",
+      "id": 172,
+      "mainActivityId": 27,
+      "mainActivityName": "2018年柯桥区天天智慧课堂十佳优质课展示",
+      "school": null,
+      "schoolName": "柯桥区教师发展中心",
+      "schoolNo": "11AFC704CA3EFE66E050A8C027277C89",
+      "speaker": "赵霞",
+      "startTime": {
+        "date": 8,
+        "day": 5,
+        "hours": 9,
+        "minutes": 0,
+        "month": 5,
+        "nanos": 0,
+        "seconds": 0,
+        "time": 1528419600000,
+        "timezoneOffset": -480,
+        "year": 118
+      },
+      "timeTip": "2018.06.08 09:00 - 06.08 10:00",
+      "viewActivityId": 355,
+      "viewActivityName": "2018年柯桥区天天智慧课堂十佳优质课展示"
+    },
+    {
+      "activityStatus": 2,
+      "activityStatusTip": "已结束",
+      "categoryId": 2,
+      "categoryName": "数学",
+      "cover": "钱亚丽.png",
+      "coverHash": "356.png",
+      "coverUri": "/upload/viewactivity/cover/356/356.png?_=1557818510234",
+      "endTime": {
+        "date": 8,
+        "day": 2,
+        "hours": 10,
+        "minutes": 49,
+        "month": 4,
+        "nanos": 0,
+        "seconds": 0,
+        "time": 1525747740000,
+        "timezoneOffset": -480,
+        "year": 118
+      },
+      "gradeId": 4,
+      "gradeName": "一年级",
+      "id": 171,
+      "mainActivityId": 27,
+      "mainActivityName": "2018年柯桥区天天智慧课堂十佳优质课展示",
+      "school": null,
+      "schoolName": "柯桥区教师发展中心",
+      "schoolNo": "11AFC704CA3EFE66E050A8C027277C89",
+      "speaker": "钱亚丽",
+      "startTime": {
+        "date": 8,
+        "day": 2,
+        "hours": 10,
+        "minutes": 0,
+        "month": 4,
+        "nanos": 0,
+        "seconds": 0,
+        "time": 1525744800000,
+        "timezoneOffset": -480,
+        "year": 118
+      },
+      "timeTip": "2018.05.08 10:00 - 05.08 10:49",
+      "viewActivityId": 356,
+      "viewActivityName": "2018年柯桥区天天智慧课堂十佳优质课展示"
+    },
+    {
+      "activityStatus": 2,
+      "activityStatusTip": "已结束",
+      "categoryId": 7,
+      "categoryName": "数学",
+      "cover": "余旭红.png",
+      "coverHash": "349.png",
+      "coverUri": "/upload/viewactivity/cover/349/349.png?_=1557818510234",
+      "endTime": {
+        "date": 3,
+        "day": 4,
+        "hours": 10,
+        "minutes": 46,
+        "month": 4,
+        "nanos": 0,
+        "seconds": 0,
+        "time": 1525315560000,
+        "timezoneOffset": -480,
+        "year": 118
+      },
+      "gradeId": 12,
+      "gradeName": "九年级",
+      "id": 166,
+      "mainActivityId": 27,
+      "mainActivityName": "2018年柯桥区天天智慧课堂十佳优质课展示",
+      "school": null,
+      "schoolName": "柯桥区教师发展中心",
+      "schoolNo": "11AFC704CA3EFE66E050A8C027277C89",
+      "speaker": "余旭红",
+      "startTime": {
+        "date": 3,
+        "day": 4,
+        "hours": 10,
+        "minutes": 0,
+        "month": 4,
+        "nanos": 0,
+        "seconds": 0,
+        "time": 1525312800000,
+        "timezoneOffset": -480,
+        "year": 118
+      },
+      "timeTip": "2018.05.03 10:00 - 05.03 10:46",
+      "viewActivityId": 349,
+      "viewActivityName": "2018年柯桥区天天智慧课堂十佳优质课展示"
+    },
+    {
+      "activityStatus": 2,
+      "activityStatusTip": "已结束",
+      "categoryId": 2,
+      "categoryName": "数学",
+      "cover": "潘旖.png",
+      "coverHash": "357.png",
+      "coverUri": "/upload/viewactivity/cover/357/357.png?_=1557818510234",
+      "endTime": {
+        "date": 9,
+        "day": 1,
+        "hours": 9,
+        "minutes": 50,
+        "month": 3,
+        "nanos": 0,
+        "seconds": 0,
+        "time": 1523238600000,
+        "timezoneOffset": -480,
+        "year": 118
+      },
+      "gradeId": 8,
+      "gradeName": "五年级",
+      "id": 170,
+      "mainActivityId": 27,
+      "mainActivityName": "2018年柯桥区天天智慧课堂十佳优质课展示",
+      "school": null,
+      "schoolName": "柯桥区教师发展中心",
+      "schoolNo": "11AFC704CA3EFE66E050A8C027277C89",
+      "speaker": "潘旖",
+      "startTime": {
+        "date": 9,
+        "day": 1,
+        "hours": 9,
+        "minutes": 0,
+        "month": 3,
+        "nanos": 0,
+        "seconds": 0,
+        "time": 1523235600000,
+        "timezoneOffset": -480,
+        "year": 118
+      },
+      "timeTip": "2018.04.09 09:00 - 04.09 09:50",
+      "viewActivityId": 357,
+      "viewActivityName": "2018年柯桥区天天智慧课堂十佳优质课展示"
+    },
+    {
+      "activityStatus": 2,
+      "activityStatusTip": "已结束",
+      "categoryId": 10,
+      "categoryName": "科学",
+      "cover": "王珂慧.png",
+      "coverHash": "358.png",
+      "coverUri": "/upload/viewactivity/cover/358/358.png?_=1557818510234",
+      "endTime": {
+        "date": 23,
+        "day": 5,
+        "hours": 10,
+        "minutes": 40,
+        "month": 2,
+        "nanos": 0,
+        "seconds": 0,
+        "time": 1521772800000,
+        "timezoneOffset": -480,
+        "year": 118
+      },
+      "gradeId": 11,
+      "gradeName": "八年级",
+      "id": 169,
+      "mainActivityId": 27,
+      "mainActivityName": "2018年柯桥区天天智慧课堂十佳优质课展示",
+      "school": null,
+      "schoolName": "柯桥区教师发展中心",
+      "schoolNo": "11AFC704CA3EFE66E050A8C027277C89",
+      "speaker": "王珂慧",
+      "startTime": {
+        "date": 23,
+        "day": 5,
+        "hours": 10,
+        "minutes": 0,
+        "month": 2,
+        "nanos": 0,
+        "seconds": 0,
+        "time": 1521770400000,
+        "timezoneOffset": -480,
+        "year": 118
+      },
+      "timeTip": "2018.03.23 10:00 - 03.23 10:40",
+      "viewActivityId": 358,
+      "viewActivityName": "2018年柯桥区天天智慧课堂十佳优质课展示"
+    }
+  ],
+  "message": null,
+  "query": {
+    "fields": [],
+    "orders": [
+      {
+        "asc": false,
+        "property": "-1"
+      },
+      {
+        "asc": true,
+        "property": "parentViewActivity.activityStatus"
+      },
+      {
+        "asc": false,
+        "property": "parentViewActivity.startTime"
+      }
+    ],
+    "pageCount": 2,
+    "pageIndex": 1,
+    "pageSize": 9,
+    "recordCount": 10,
+    "recordEnd": 9,
+    "recordStart": 1
+  },
+  "success": true,
+  "systemTime": {
+    "date": 14,
+    "day": 2,
+    "hours": 15,
+    "minutes": 21,
+    "month": 4,
+    "seconds": 50,
+    "time": 1557818510202,
+    "timezoneOffset": -480,
+    "year": 119
+  },
+  "uri": null
+}

+ 794 - 0
TEAMModelOS.SmartClass/ClientApp/static/pastAcList.json

@@ -0,0 +1,794 @@
+{
+  "data": {
+    "data": null,
+    "errorCode": null,
+    "html": null,
+    "key": null,
+    "list": [
+      {
+        "activityCover": null,
+        "activityCoverHash": null,
+        "activityCoverUri": null,
+        "activityId": null,
+        "activityName": null,
+        "applyCount": 28,
+        "autoChangeStatus": false,
+        "banner": "1920-560.png",
+        "bannerHash": "37.png",
+        "bannerUri": "/upload/activity/banner/37/37.png?_=1557912462417",
+        "cover": "天天智慧课堂3月.jpg",
+        "coverHash": "37.jpg",
+        "coverUri": "/upload/activity/cover/37/37.jpg?_=1557912462417",
+        "employeeName": "楼宽",
+        "employeeNo": "31050",
+        "enjoinType": 3,
+        "hasDelNoGetAwardRes": false,
+        "hideAttachmentAfterEnd": false,
+        "hideAwardAfterEnd": false,
+        "id": 37,
+        "name": "2019年柯桥区天天智慧课堂 3月份 优课评比",
+        "nameMaxLength": null,
+        "numberOfProduction": 1,
+        "organizer": "柯桥区教师发展中心",
+        "publicity": false,
+        "reviewEndTime": {
+          "date": 6,
+          "day": 6,
+          "hours": 0,
+          "minutes": 0,
+          "month": 3,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1554480000000,
+          "timezoneOffset": -480,
+          "year": 119
+        },
+        "reviewTimeTip": "2019.03.31-04.06",
+        "showApplyScore": false,
+        "state": 1,
+        "stateTip": "有效 ",
+        "status": 4,
+        "statusTip": "活动结束",
+        "subActivityApplyCount": null,
+        "subActivityApplyPushCount": 0,
+        "subPushEndTime": null,
+        "subPushEndTimeLimitTip": "",
+        "subPushEndTimeTip": "",
+        "submitEndTime": {
+          "date": 31,
+          "day": 0,
+          "hours": 0,
+          "minutes": 0,
+          "month": 2,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1553961600000,
+          "timezoneOffset": -480,
+          "year": 119
+        },
+        "submitEndTimeTip": "2019.03.31",
+        "submitStartTime": {
+          "date": 1,
+          "day": 5,
+          "hours": 0,
+          "minutes": 0,
+          "month": 2,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1551369600000,
+          "timezoneOffset": -480,
+          "year": 119
+        },
+        "submitTimeTip": "2019.03.01-03.31",
+        "timeTip": "2019.03.01-04.06",
+        "videoMaxLength": null,
+        "videoMaxSize": null,
+        "view": true,
+        "weikeMaxLength": null,
+        "weikeMaxSize": null
+      },
+      {
+        "activityCover": null,
+        "activityCoverHash": null,
+        "activityCoverUri": null,
+        "activityId": null,
+        "activityName": null,
+        "applyCount": 20,
+        "autoChangeStatus": false,
+        "banner": "优课评比banner.jpg",
+        "bannerHash": "16.jpg",
+        "bannerUri": "/upload/activity/banner/16/16.jpg?_=1557912462417",
+        "cover": "201812.jpg",
+        "coverHash": "16.jpg",
+        "coverUri": "/upload/activity/cover/16/16.jpg?_=1557912462417",
+        "employeeName": "楼宽",
+        "employeeNo": "31050",
+        "enjoinType": 3,
+        "hasDelNoGetAwardRes": false,
+        "hideAttachmentAfterEnd": false,
+        "hideAwardAfterEnd": false,
+        "id": 16,
+        "name": "2018年柯桥区天天智慧课堂 12月份 优课评比",
+        "nameMaxLength": null,
+        "numberOfProduction": 1,
+        "organizer": "柯桥区教师发展中心",
+        "publicity": false,
+        "reviewEndTime": {
+          "date": 16,
+          "day": 0,
+          "hours": 0,
+          "minutes": 0,
+          "month": 11,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1544889600000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "reviewTimeTip": "2018.12.14-12.16",
+        "showApplyScore": false,
+        "state": 1,
+        "stateTip": "有效 ",
+        "status": 4,
+        "statusTip": "活动结束",
+        "subActivityApplyCount": null,
+        "subActivityApplyPushCount": 0,
+        "subPushEndTime": null,
+        "subPushEndTimeLimitTip": "",
+        "subPushEndTimeTip": "",
+        "submitEndTime": {
+          "date": 14,
+          "day": 5,
+          "hours": 0,
+          "minutes": 0,
+          "month": 11,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1544716800000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "submitEndTimeTip": "2018.12.14",
+        "submitStartTime": {
+          "date": 1,
+          "day": 6,
+          "hours": 0,
+          "minutes": 0,
+          "month": 11,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1543593600000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "submitTimeTip": "2018.12.01-12.14",
+        "timeTip": "2018.12.01-12.16",
+        "videoMaxLength": null,
+        "videoMaxSize": null,
+        "view": true,
+        "weikeMaxLength": null,
+        "weikeMaxSize": null
+      },
+      {
+        "activityCover": null,
+        "activityCoverHash": null,
+        "activityCoverUri": null,
+        "activityId": null,
+        "activityName": null,
+        "applyCount": 24,
+        "autoChangeStatus": false,
+        "banner": "十大优质课.jpg",
+        "bannerHash": "23.jpg",
+        "bannerUri": "/upload/activity/banner/23/23.jpg?_=1557912462417",
+        "cover": "十佳优质课评比340_190.jpg",
+        "coverHash": "23.jpg",
+        "coverUri": "/upload/activity/cover/23/23.jpg?_=1557912462417",
+        "employeeName": "楼宽",
+        "employeeNo": "31050",
+        "enjoinType": 3,
+        "hasDelNoGetAwardRes": false,
+        "hideAttachmentAfterEnd": false,
+        "hideAwardAfterEnd": false,
+        "id": 23,
+        "name": "2018年柯桥区天天智慧课堂十佳优质课评比活动课例评比",
+        "nameMaxLength": null,
+        "numberOfProduction": 1,
+        "organizer": "柯桥区教师发展中心",
+        "publicity": false,
+        "reviewEndTime": {
+          "date": 2,
+          "day": 3,
+          "hours": 0,
+          "minutes": 0,
+          "month": 0,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1546358400000,
+          "timezoneOffset": -480,
+          "year": 119
+        },
+        "reviewTimeTip": "2018.12.20-2019.01.02",
+        "showApplyScore": false,
+        "state": 1,
+        "stateTip": "有效 ",
+        "status": 4,
+        "statusTip": "活动结束",
+        "subActivityApplyCount": null,
+        "subActivityApplyPushCount": 0,
+        "subPushEndTime": null,
+        "subPushEndTimeLimitTip": "",
+        "subPushEndTimeTip": "",
+        "submitEndTime": {
+          "date": 20,
+          "day": 4,
+          "hours": 0,
+          "minutes": 0,
+          "month": 11,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1545235200000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "submitEndTimeTip": "2018.12.20",
+        "submitStartTime": {
+          "date": 1,
+          "day": 6,
+          "hours": 0,
+          "minutes": 0,
+          "month": 11,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1543593600000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "submitTimeTip": "2018.12.01-12.20",
+        "timeTip": "2018.12.01-2019.01.02",
+        "videoMaxLength": null,
+        "videoMaxSize": null,
+        "view": true,
+        "weikeMaxLength": null,
+        "weikeMaxSize": null
+      },
+      {
+        "activityCover": null,
+        "activityCoverHash": null,
+        "activityCoverUri": null,
+        "activityId": null,
+        "activityName": null,
+        "applyCount": 25,
+        "autoChangeStatus": false,
+        "banner": "优课评比banner.jpg",
+        "bannerHash": "15.jpg",
+        "bannerUri": "/upload/activity/banner/15/15.jpg?_=1557912462417",
+        "cover": "201811.jpg",
+        "coverHash": "15.jpg",
+        "coverUri": "/upload/activity/cover/15/15.jpg?_=1557912462417",
+        "employeeName": "楼宽",
+        "employeeNo": "31050",
+        "enjoinType": 3,
+        "hasDelNoGetAwardRes": false,
+        "hideAttachmentAfterEnd": false,
+        "hideAwardAfterEnd": true,
+        "id": 15,
+        "name": "2018年柯桥区天天智慧课堂 11月份 优课评比",
+        "nameMaxLength": null,
+        "numberOfProduction": 1,
+        "organizer": "柯桥区教师发展中心",
+        "publicity": false,
+        "reviewEndTime": {
+          "date": 3,
+          "day": 1,
+          "hours": 0,
+          "minutes": 0,
+          "month": 11,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1543766400000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "reviewTimeTip": "2018.11.30-12.03",
+        "showApplyScore": false,
+        "state": 1,
+        "stateTip": "有效 ",
+        "status": 4,
+        "statusTip": "活动结束",
+        "subActivityApplyCount": null,
+        "subActivityApplyPushCount": 0,
+        "subPushEndTime": null,
+        "subPushEndTimeLimitTip": "",
+        "subPushEndTimeTip": "",
+        "submitEndTime": {
+          "date": 30,
+          "day": 5,
+          "hours": 0,
+          "minutes": 0,
+          "month": 10,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1543507200000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "submitEndTimeTip": "2018.11.30",
+        "submitStartTime": {
+          "date": 1,
+          "day": 4,
+          "hours": 0,
+          "minutes": 0,
+          "month": 10,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1541001600000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "submitTimeTip": "2018.11.01-11.30",
+        "timeTip": "2018.11.01-12.03",
+        "videoMaxLength": null,
+        "videoMaxSize": null,
+        "view": true,
+        "weikeMaxLength": null,
+        "weikeMaxSize": null
+      },
+      {
+        "activityCover": null,
+        "activityCoverHash": null,
+        "activityCoverUri": null,
+        "activityId": null,
+        "activityName": null,
+        "applyCount": 223,
+        "autoChangeStatus": false,
+        "banner": "智慧课堂观摩活动.jpg",
+        "bannerHash": "24.jpg",
+        "bannerUri": "/upload/activity/banner/24/24.jpg?_=1557912462417",
+        "cover": "智慧课堂课例征集340_190.jpg",
+        "coverHash": "24.jpg",
+        "coverUri": "/upload/activity/cover/24/24.jpg?_=1557912462417",
+        "employeeName": "楼宽",
+        "employeeNo": "31050",
+        "enjoinType": 3,
+        "hasDelNoGetAwardRes": false,
+        "hideAttachmentAfterEnd": false,
+        "hideAwardAfterEnd": false,
+        "id": 24,
+        "name": "2018年柯桥区“第四届智慧课堂教学实践观摩活动”课例征集",
+        "nameMaxLength": null,
+        "numberOfProduction": 1,
+        "organizer": "柯桥区教师发展中心",
+        "publicity": false,
+        "reviewEndTime": {
+          "date": 20,
+          "day": 4,
+          "hours": 0,
+          "minutes": 0,
+          "month": 11,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1545235200000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "reviewTimeTip": "2018.12.05-12.20",
+        "showApplyScore": false,
+        "state": 1,
+        "stateTip": "有效 ",
+        "status": 4,
+        "statusTip": "活动结束",
+        "subActivityApplyCount": 250,
+        "subActivityApplyPushCount": 0,
+        "subPushEndTime": null,
+        "subPushEndTimeLimitTip": "",
+        "subPushEndTimeTip": "",
+        "submitEndTime": {
+          "date": 5,
+          "day": 3,
+          "hours": 0,
+          "minutes": 0,
+          "month": 11,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1543939200000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "submitEndTimeTip": "2018.12.05",
+        "submitStartTime": {
+          "date": 1,
+          "day": 4,
+          "hours": 0,
+          "minutes": 0,
+          "month": 10,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1541001600000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "submitTimeTip": "2018.11.01-12.05",
+        "timeTip": "2018.11.01-12.20",
+        "videoMaxLength": null,
+        "videoMaxSize": null,
+        "view": false,
+        "weikeMaxLength": null,
+        "weikeMaxSize": null
+      },
+      {
+        "activityCover": null,
+        "activityCoverHash": null,
+        "activityCoverUri": null,
+        "activityId": null,
+        "activityName": null,
+        "applyCount": 22,
+        "autoChangeStatus": true,
+        "banner": "优课评比banner.jpg",
+        "bannerHash": "14.jpg",
+        "bannerUri": "/upload/activity/banner/14/14.jpg?_=1557912462417",
+        "cover": "201810.jpg",
+        "coverHash": "14.jpg",
+        "coverUri": "/upload/activity/cover/14/14.jpg?_=1557912462417",
+        "employeeName": "楼宽",
+        "employeeNo": "31050",
+        "enjoinType": 3,
+        "hasDelNoGetAwardRes": false,
+        "hideAttachmentAfterEnd": false,
+        "hideAwardAfterEnd": false,
+        "id": 14,
+        "name": "2018年柯桥区天天智慧课堂 10月份 优课评比",
+        "nameMaxLength": null,
+        "numberOfProduction": 1,
+        "organizer": "柯桥区教师发展中心",
+        "publicity": false,
+        "reviewEndTime": {
+          "date": 24,
+          "day": 6,
+          "hours": 0,
+          "minutes": 0,
+          "month": 10,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1542988800000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "reviewTimeTip": "2018.10.31-11.24",
+        "showApplyScore": true,
+        "state": 1,
+        "stateTip": "有效 ",
+        "status": 4,
+        "statusTip": "活动结束",
+        "subActivityApplyCount": null,
+        "subActivityApplyPushCount": 0,
+        "subPushEndTime": null,
+        "subPushEndTimeLimitTip": "",
+        "subPushEndTimeTip": "",
+        "submitEndTime": {
+          "date": 31,
+          "day": 3,
+          "hours": 0,
+          "minutes": 0,
+          "month": 9,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1540915200000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "submitEndTimeTip": "2018.10.31",
+        "submitStartTime": {
+          "date": 8,
+          "day": 1,
+          "hours": 0,
+          "minutes": 0,
+          "month": 9,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1538928000000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "submitTimeTip": "2018.10.08-10.31",
+        "timeTip": "2018.10.08-11.24",
+        "videoMaxLength": null,
+        "videoMaxSize": null,
+        "view": true,
+        "weikeMaxLength": null,
+        "weikeMaxSize": null
+      },
+      {
+        "activityCover": null,
+        "activityCoverHash": null,
+        "activityCoverUri": null,
+        "activityId": null,
+        "activityName": null,
+        "applyCount": 43,
+        "autoChangeStatus": false,
+        "banner": "创新实验室评比banner.png",
+        "bannerHash": "22.png",
+        "bannerUri": "/upload/activity/banner/22/22.png?_=1557912462418",
+        "cover": "创新实验室课例评比下.jpg",
+        "coverHash": "22.jpg",
+        "coverUri": "/upload/activity/cover/22/22.jpg?_=1557912462418",
+        "employeeName": "吴雁",
+        "employeeNo": "41489",
+        "enjoinType": 3,
+        "hasDelNoGetAwardRes": true,
+        "hideAttachmentAfterEnd": false,
+        "hideAwardAfterEnd": false,
+        "id": 22,
+        "name": "2018年下柯桥区创新实验室(学科教室)视频课例评比活动",
+        "nameMaxLength": null,
+        "numberOfProduction": 1,
+        "organizer": "柯桥区教师发展中心",
+        "publicity": false,
+        "reviewEndTime": {
+          "date": 18,
+          "day": 2,
+          "hours": 0,
+          "minutes": 0,
+          "month": 11,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1545062400000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "reviewTimeTip": "2018.11.30-12.18",
+        "showApplyScore": false,
+        "state": 1,
+        "stateTip": "有效 ",
+        "status": 4,
+        "statusTip": "活动结束",
+        "subActivityApplyCount": null,
+        "subActivityApplyPushCount": 0,
+        "subPushEndTime": null,
+        "subPushEndTimeLimitTip": "",
+        "subPushEndTimeTip": "",
+        "submitEndTime": {
+          "date": 30,
+          "day": 5,
+          "hours": 0,
+          "minutes": 0,
+          "month": 10,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1543507200000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "submitEndTimeTip": "2018.11.30",
+        "submitStartTime": {
+          "date": 8,
+          "day": 1,
+          "hours": 0,
+          "minutes": 0,
+          "month": 9,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1538928000000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "submitTimeTip": "2018.10.08-11.30",
+        "timeTip": "2018.10.08-12.18",
+        "videoMaxLength": null,
+        "videoMaxSize": null,
+        "view": true,
+        "weikeMaxLength": null,
+        "weikeMaxSize": null
+      },
+      {
+        "activityCover": null,
+        "activityCoverHash": null,
+        "activityCoverUri": null,
+        "activityId": null,
+        "activityName": null,
+        "applyCount": 20,
+        "autoChangeStatus": false,
+        "banner": "优课评比banner.jpg",
+        "bannerHash": "12.jpg",
+        "bannerUri": "/upload/activity/banner/12/12.jpg?_=1557912462418",
+        "cover": "201809.jpg",
+        "coverHash": "12.jpg",
+        "coverUri": "/upload/activity/cover/12/12.jpg?_=1557912462418",
+        "employeeName": "楼宽",
+        "employeeNo": "31050",
+        "enjoinType": 3,
+        "hasDelNoGetAwardRes": false,
+        "hideAttachmentAfterEnd": false,
+        "hideAwardAfterEnd": false,
+        "id": 12,
+        "name": "2018年柯桥区天天智慧课堂 9月份 优课评比",
+        "nameMaxLength": null,
+        "numberOfProduction": 1,
+        "organizer": "柯桥区教师发展中心",
+        "publicity": false,
+        "reviewEndTime": {
+          "date": 16,
+          "day": 2,
+          "hours": 0,
+          "minutes": 0,
+          "month": 9,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1539619200000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "reviewTimeTip": "2018.09.30-10.16",
+        "showApplyScore": true,
+        "state": 1,
+        "stateTip": "有效 ",
+        "status": 4,
+        "statusTip": "活动结束",
+        "subActivityApplyCount": null,
+        "subActivityApplyPushCount": 0,
+        "subPushEndTime": null,
+        "subPushEndTimeLimitTip": "",
+        "subPushEndTimeTip": "",
+        "submitEndTime": {
+          "date": 30,
+          "day": 0,
+          "hours": 0,
+          "minutes": 0,
+          "month": 8,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1538236800000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "submitEndTimeTip": "2018.09.30",
+        "submitStartTime": {
+          "date": 11,
+          "day": 2,
+          "hours": 0,
+          "minutes": 0,
+          "month": 8,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1536595200000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "submitTimeTip": "2018.09.11-09.30",
+        "timeTip": "2018.09.11-10.16",
+        "videoMaxLength": null,
+        "videoMaxSize": null,
+        "view": true,
+        "weikeMaxLength": null,
+        "weikeMaxSize": null
+      },
+      {
+        "activityCover": null,
+        "activityCoverHash": null,
+        "activityCoverUri": null,
+        "activityId": null,
+        "activityName": null,
+        "applyCount": 48,
+        "autoChangeStatus": true,
+        "banner": "智慧者联盟.jpg",
+        "bannerHash": "13.jpg",
+        "bannerUri": "/upload/activity/banner/13/13.jpg?_=1557912462418",
+        "cover": "智慧课堂研究课题展示340_190.jpg",
+        "coverHash": "13.jpg",
+        "coverUri": "/upload/activity/cover/13/13.jpg?_=1557912462418",
+        "employeeName": "楼宽",
+        "employeeNo": "31050",
+        "enjoinType": 3,
+        "hasDelNoGetAwardRes": false,
+        "hideAttachmentAfterEnd": true,
+        "hideAwardAfterEnd": true,
+        "id": 13,
+        "name": "2018年“柯桥区智慧课堂研究者联盟”校级研究课题展示交流",
+        "nameMaxLength": null,
+        "numberOfProduction": 1,
+        "organizer": "柯桥区教师发展中心",
+        "publicity": false,
+        "reviewEndTime": {
+          "date": 31,
+          "day": 1,
+          "hours": 0,
+          "minutes": 0,
+          "month": 11,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1546185600000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "reviewTimeTip": "2018.12.31-12.31",
+        "showApplyScore": true,
+        "state": 1,
+        "stateTip": "有效 ",
+        "status": 4,
+        "statusTip": "活动结束",
+        "subActivityApplyCount": null,
+        "subActivityApplyPushCount": 0,
+        "subPushEndTime": null,
+        "subPushEndTimeLimitTip": "",
+        "subPushEndTimeTip": "",
+        "submitEndTime": {
+          "date": 31,
+          "day": 1,
+          "hours": 0,
+          "minutes": 0,
+          "month": 11,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1546185600000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "submitEndTimeTip": "2018.12.31",
+        "submitStartTime": {
+          "date": 1,
+          "day": 6,
+          "hours": 0,
+          "minutes": 0,
+          "month": 8,
+          "nanos": 0,
+          "seconds": 0,
+          "time": 1535731200000,
+          "timezoneOffset": -480,
+          "year": 118
+        },
+        "submitTimeTip": "2018.09.01-12.31",
+        "timeTip": "2018.09.01-12.31",
+        "videoMaxLength": null,
+        "videoMaxSize": null,
+        "view": true,
+        "weikeMaxLength": null,
+        "weikeMaxSize": null
+      }
+    ],
+    "message": null,
+    "query": {
+      "fields": [],
+      "orders": [
+        {
+          "asc": false,
+          "property": "submitStartTime"
+        }
+      ],
+      "pageCount": 2,
+      "pageIndex": 1,
+      "pageSize": 9,
+      "recordCount": 18,
+      "recordEnd": 9,
+      "recordStart": 1
+    },
+    "success": true,
+    "systemTime": {
+      "date": 15,
+      "day": 3,
+      "hours": 17,
+      "minutes": 27,
+      "month": 4,
+      "seconds": 42,
+      "time": 1557912462404,
+      "timezoneOffset": -480,
+      "year": 119
+    },
+    "uri": null
+  },
+  "errorCode": null,
+  "html": null,
+  "key": null,
+  "message": null,
+  "success": true,
+  "systemTime": {
+    "date": 15,
+    "day": 3,
+    "hours": 17,
+    "minutes": 27,
+    "month": 4,
+    "seconds": 42,
+    "time": 1557912462416,
+    "timezoneOffset": -480,
+    "year": 119
+  },
+  "uri": null
+}

+ 7 - 6
TEAMModelOS.SmartClass/ClientApp/view/app.vue

@@ -1,13 +1,13 @@
 <template>
   <div id="app">
     <div class="main-content">
-        <headers></headers>
+        <!--<headers></headers>-->
         <div class="content">
           <router-view />
         </div>
-        <div class="footer">
+        <!--<div class="footer">
           绍兴市柯桥区教师发展中心    广州市奥威亚电子科技有限公司技术支持&nbsp;浙ICP备05083914
-        </div>
+        </div>-->
     </div>
   </div>
 </template>
@@ -30,7 +30,7 @@
     }
   }
 </script>
-<style scoped>
+<style>
   html, body, #app {
     height: 100% !important;
     user-select: none;
@@ -40,14 +40,15 @@
     position: relative;
     width: 100%;
     min-width: 1200px;
-    min-height: 768px;
+    min-height: 100% !important;
     display: flex;
     flex-direction: column;
     align-items: center;
-    background:rgb(248,248,248);
+    background:rgb(128, 128, 128);
   }
   .content {
     width:100%;
+    height:100%;
   }
   .logo {
     width: 200px;

+ 293 - 0
TEAMModelOS.SmartClass/ClientApp/view/smart-class/CommentVideo.vue

@@ -0,0 +1,293 @@
+<template>
+  <div class="video-page">
+    <!--<div class="video-title">
+      <h3 class="video-title-h3">12月03日直播</h3>
+    </div>-->
+    <div class="video-info">
+
+      <div class="comment-video-src">
+        <div>
+          <p style=" font-size: 14px; margin-bottom: 20px;"><span class="title-header">标题 : <span class="title-content">创新实验室(学科教室)课例20190508直播</span></span> <span class="title-header">主讲人 : 林燕<span class="title-content"></span></span> <span class="liveStatus">播放成功</span></p>
+        </div>
+        <video controls="controls" width="780" style="display:block;"
+               src="https://teammodelstorage.blob.core.chinacloudapi.cn/teammodelcontest/20190516/acalssOne%E7%BD%91%E9%A1%B5%E7%99%BB%E5%BD%95%E5%AD%A6%E4%B9%A0%E6%96%B9%E6%B3%95.mp4">
+          您的浏览器不支持 video 标签。
+        </video>
+        <p class="average-score">作品当前平均分 : <span>未评</span></p>
+      </div>
+
+      <div class="comment-video-detail-info">
+        <Tabs value="name1">
+          <TabPane label="观课评论" name="name1">
+            <div class="review-pane">
+              <div class="review-list" v-for="(item,index) in commmentList" :key="index">
+                <span class="reviewlist-title">
+                  {{item.employeeName}} :&nbsp;
+                </span> <span class="reviewlist-content"><span>{{item.content}}</span> <span class="reviewlist-time">({{item.createTimeTip}})</span> <!----></span>
+              </div>
+            </div>
+            <div style="position: relative; padding-top: 20px;"><div class="lastest-comment" style="display: none;">查看最新评论</div> <textarea placeholder="发表您的评论" maxlength="250" class="publish-review"></textarea> <span class="submit-review">提交</span></div>
+          </TabPane>
+          <TabPane label="专家点评" name="name2">专家点评</TabPane>
+        </Tabs>
+      </div>
+    </div>
+    <div class="video-other" style="display:none;">
+      <h3 class="video-title-h3">推荐作品</h3>
+    </div>
+    <div class="videos-wrap" style="display:none;">
+      <div class="video-item" v-for="(item , index) in videos" @click="showVideo(index)">
+        <img src="../../assets/image/default-act.png" width="95%" />
+        <p>{{item.title}}</p>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+  import rewardList from '@/static/rewardList.json'
+  import CList from '@/static/commentList.json'
+  export default {
+    data() {
+      return {
+        routerData: {},
+        rewardDatas: [],
+        commmentList:[],
+        videos: [
+          {
+            title:'12月14日直播'
+          },
+          {
+            title:'12月14日直播'
+          },
+          {
+            title:'12月14日直播'
+          },
+          {
+            title:'12月14日直播'
+          },
+          {
+            title:'12月14日直播'
+          },
+          {
+            title:'12月14日直播'
+          },
+          {
+            title:'12月14日直播'
+          },
+          {
+            title:'12月14日直播'
+          }
+        ]
+      }
+    },
+    methods: {
+      showVideo(index) {
+        //alert(index);
+        this.$router.push(
+          {
+            name: 'video',
+            query: {
+              rewardIndex: index
+            }
+          }
+        );
+      }
+    },
+    mounted() {
+      let index = this.$route.query.rewardIndex;
+      //alert(index);
+      this.commmentList = CList.list;
+      this.rewardDatas = rewardList.data.list;
+      if (index == undefined) {
+        this.routerData = this.rewardDatas[0];
+      } else {
+        this.routerData = this.rewardDatas[index];
+      }
+      
+    },
+    
+    watch: {
+      $route() {
+        let index = this.$route.query.rewardIndex;
+        //alert(index);
+        if (index == undefined) {
+          this.routerData = this.rewardDatas[0];
+        } else {
+          this.routerData = this.rewardDatas[index];
+        }
+      }
+    }
+  }
+</script>
+<style scoped>
+  .video-page {
+    width: 1200px;
+    margin: 100px auto;
+    font-family:none;
+  }
+
+  .video-title {
+    margin-bottom: 20px;
+    height: 20px;
+  }
+
+    .video-title-h3 {
+      height: 20px;
+      font-size: 20px;
+      line-height: 20px;
+      border-left: 6px solid #37b1fa;
+      padding-left: 12px;
+    }
+
+  .video-info {
+    width: 100%;
+    display: table;
+  }
+  .comment-video-detail-info {
+    width:400px;
+    background:#ffffff;
+    display:table-cell;
+    vertical-align:top;
+    padding:20px 10px 20px 30px;
+    position:relative;
+    border-left: 15px solid rgb(241,242,243);
+  }
+    .comment-video-detail-info .ivu-form-item {
+      margin-bottom:8px;
+    }
+    .comment-video-detail-info .ivu-form .ivu-form-item-label {
+      font-size:14px;
+      color:#999999;
+    }
+    .comment-video-detail-info .ivu-form-item-content {
+      font-size: 14px;
+      color: #ffffff;
+    }
+  .comment-video-src {
+    display:table-cell;
+    width:780px;
+    box-sizing:border-box;
+    padding:20px 20px;
+    background:#FFFFFF;
+  }
+  .download-video {
+    text-align:center;
+    position:absolute;
+    width:100%;
+    bottom:20px;
+    left:0;
+  }
+  .video-other {
+    margin-top:20px;
+  }
+  .videos-wrap {
+    margin:0px -10px 0px -10px;
+  }
+  .video-item {
+    width: 25%;
+    display: inline-block;
+    padding: 0px 10px;
+    margin-top:20px;
+    cursor:pointer;
+  }
+
+    .video-item p {
+      font-size: 16px;
+      color: #000;
+      margin-top: 10px;
+      text-decoration: none;
+      text-indent: 8px;
+    }
+  .title-header {
+    color: #666;
+    margin-right: 30px;
+    display: inline-block;
+  }
+  .liveStatus {
+    color: #33aafe;
+    float: right;
+  }
+
+  .review-pane {
+    height: 300px;
+    background-color: #fff;
+    overflow-y: auto;
+    position: relative;
+  }
+  .review-list {
+    overflow: hidden;
+    font-size: 14px;
+    margin: 8px 10px;
+    padding-bottom: 8px;
+    border-bottom: 1px solid #f6f6f6;
+  }
+
+  .reviewlist-title {
+    float: left;
+    width: 22%;
+    color: #999;
+    text-align: right;
+    padding-right: 5px;
+  }
+
+  .reviewlist-content {
+    float: left;
+    color: #444;
+    width: 76%;
+    font-size: 14px;
+    word-break: break-all;
+  }
+
+  .lastest-comment {
+    position: absolute;
+    top: -5px;
+    right: 20px;
+    padding: 5px;
+    color: #666;
+    z-index: 999;
+    cursor: pointer;
+  }
+
+  .publish-review {
+    padding: 10px;
+    background-color: #f1f2f3;
+    border: 1px solid #d7d8da;
+    font-size: 14px;
+    color: #333;
+    width: 100%;
+    height: 100px;
+    resize: none;
+    outline: none;
+    box-sizing: border-box;
+  }
+
+  .submit-review {
+    margin-top: 8px;
+    color: #fff;
+    background-color: #409eff;
+    border-color: #409eff;
+    margin-right: 10px;
+    display: inline-block;
+    float: right;
+    cursor: pointer;
+    width: 45px;
+    text-align: center;
+    height: 22px;
+    line-height: 22px;
+    border-radius: 2px;
+  }
+
+  .reviewlist-time {
+    font-size: 12px;
+    color: #ccc;
+  }
+  .average-score {
+    margin-top: 20px;
+    color: #666;
+    font-size: 14px;
+  }
+
+  .average-score span {
+    color: #fd8f45;
+  }
+</style>

+ 409 - 0
TEAMModelOS.SmartClass/ClientApp/view/smart-class/LessonDetails.vue

@@ -0,0 +1,409 @@
+<template>
+  <div id="app">
+    <div class="banner">
+      <img src="http://ttkt.sxedu.org:70/upload/activity/banner/40/40.jpg?_=1557306525954" />
+    </div>
+    <div class="details-container">
+      <div class="activity-brief center-row">
+        <div class="activity-brief-left">
+          <img :src="'http://ttkt.sxedu.org:70'+activityInfo.coverUri" />
+        </div>
+        <div class="activity-brief-right">
+          <div class="activity-brief-title">
+            <span>{{activityInfo.name}}</span>
+            <span class="status" style="background: #999;">{{activityInfo.activityStatusTip}}</span>
+            <Button type="primary" size="large" @click="gotoVideo">进入点播</Button>
+          </div>
+          <div class="activity-brief-info center-row">
+            <div class="brief-info-left">
+              <div class="items"><p class="item">主讲单位:<span style="font-weight:bold;color:#000">{{activityInfo.ownUnit}}</span></p></div>
+              <div class="items"><p class="item">主讲人:<span style="font-weight:bold;color:#000">{{activityInfo.speaker}}</span></p></div>
+              <div class="items"><p class="item">学校:<span style="font-weight:bold;color:#000">{{activityInfo.schoolName}}</span></p></div>
+              <div class="items"><p class="item">年级:<span style="font-weight:bold;color:#000">{{activityInfo.parentGradeName}}</span></p></div>
+              <div class="items"><p class="item">学科:<span style="font-weight:bold;color:#000">{{activityInfo.parentCategoryName}}</span></p></div>
+              <div class="items"><p class="item">课题:<span style="font-weight:bold;color:#000">{{activityInfo.parentProjectName}}</span></p></div>
+            </div>
+            <div class="brief-info-left">
+              <div class="items"><p class="item">活动时间:<span style="font-weight:bold;color:#000">{{activityInfo.timeRangeTip}}</span></p></div>
+              <div class="items"><p class="item">授课平台:<span style="font-weight:bold;color:#000">{{activityInfo.parentTeachePlateName}}</span></p></div>
+              <div class="items"><p class="item">业务荣誉:<span style="font-weight:bold;color:#000">{{activityInfo.workHonor}}</span></p></div>
+            </div>
+
+          </div>
+        </div>
+      </div>
+      <div class="activity-details center-row">
+        <div class="details-left center-col">
+          <div class="title-tip">
+            <p class="title">观课用户<span>VIEW CLASS USER</span></p>
+            <div class="content">
+              <p style="margin:15px">专家:刘斌</p>
+              <p style="margin:15px">成员:公开参与</p>
+            </div>
+          </div>
+          <div class="review-attachment">
+            <p class="title">资源下载<span>ATTACHMENT</span></p>
+            <div class="content">
+              <div class="attach attachicon-2" v-for="(item,index) in attachmentsList" :key="index">
+                <a :href="item.fileNameUri" :download="item.fileName" :title="item.fileName">{{item.fileName}}</a>
+                <span style="float: right; font-size: 13px;">&nbsp;{{item.fileSizeTip}}</span>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div class="details-right center-col">
+          <div class="description title-tip" style="margin-top:0">
+            <p class="title">
+              观课统计
+              <span>VIEW CLASS STATISTICS</span>
+            </p>
+            <div class="content">
+              <div id="views" style="width:100%; height:500px;"></div>
+              <div id="comments" style="width:100%; height:500px;"></div>
+            </div>
+          </div>
+          <div class="guide title-tip">
+            <p class="title">
+              观点评论
+              <span>REVIEW</span>
+            </p>
+            <div class="content">
+              <p class="comment-item" v-for="item in commentList" ><span style="color:#666">{{item.employeeName}}</span> : {{item.reviewContent}}</p>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+  import lessonInfo from '@/static/lessonDetails.json'
+  export default {
+    components: {
+    },
+    data() {
+      return {
+        reviewAcList: [],
+        attachmentsList: [],
+        commentList:[],
+        activityInfo: {}
+      }
+    },
+
+    created() {
+      this.attachmentsList = lessonInfo.attachments;
+      this.activityInfo = lessonInfo.data;
+      this.commentList = lessonInfo.commentList;
+
+    },
+    methods: {
+      gotoVideo() {
+        this.$router.push(
+          {
+            path:'commentVideo'
+          }
+        );
+      }
+    },
+    mounted() {
+      let myChart = this.$echarts.init(document.getElementById('views'));
+      let schoolList = lessonInfo.views.map(a => a.schoolName);
+      let viewsList = lessonInfo.views.map(a => a.viewCount);
+
+      let option = {
+        color: ['#ff8745'],
+        tooltip: {
+          trigger: 'axis',
+          axisPointer : {            // 坐标轴指示器,坐标轴触发有效
+              type : 'shadow'        // 默认为直线,可选为:'line' | 'shadow'
+          }
+        },
+        xAxis: {
+          data: schoolList,
+          axisLabel: {
+            interval: 0,
+            rotate: 40,
+            formatter: function (value) {
+              return (value.length > 6 ? (value.slice(0,6)+"...") : value )
+            },  
+          },
+          splitLine: {    // gird 区域中的分割线
+            show: false,   // 是否显示
+            lineStyle: {
+              color: '#666',
+              width: 0,
+              type: 'dashed'
+            }
+          },
+        },
+        grid: {
+          left: '3%',
+          right: '4%',
+          bottom: '3%',
+          height: '400px',
+
+          containLabel: true
+       },
+        yAxis: {
+          name: "点击量",
+          splitLine: {    // gird 区域中的分割线
+            show: false,   // 是否显示
+            lineStyle: {
+              color: '#666',
+              width: 1,
+              type: 'dashed'
+            }
+          },
+        },
+        series: [{
+          name: '点击量',
+          type: 'bar',
+          barWidth: 20,//柱图宽度
+          data: viewsList
+        }]
+      };
+
+      myChart.setOption(option);
+
+      let comments = this.$echarts.init(document.getElementById('comments'));
+      let commentList = lessonInfo.comments.map(a => a.commentCount);
+
+      let commentsOption = {
+        color: ['#ff8745'],
+        tooltip: {
+          trigger: 'axis',
+          axisPointer : {            // 坐标轴指示器,坐标轴触发有效
+              type : 'shadow'        // 默认为直线,可选为:'line' | 'shadow'
+          }
+        },
+        xAxis: {
+          data: schoolList,
+          axisLabel: {
+            interval: 0,
+            rotate: 40,
+            formatter: function (value) {
+              return (value.length > 6 ? (value.slice(0,6)+"...") : value )
+            },  
+          },
+        },
+        grid: {
+          left: '3%',
+          right: '4%',
+          bottom: '3%',
+          height:'400px',
+          containLabel: true
+       },
+        yAxis: {
+          name: "评论数",
+          splitLine: {    // gird 区域中的分割线
+            show: false,   // 是否显示
+            lineStyle: {
+              color: '#666',
+              width: 1,
+              type: 'dashed'
+            }
+          },
+        },
+        series: [{
+          name: '评论数',
+          type: 'bar',
+          barWidth: 20,//柱图宽度
+          data: commentList
+        }]
+      };
+
+      comments.setOption(commentsOption);
+    }
+  }
+</script>
+<style scoped>
+  html, body, #app {
+    height: 100% !important;
+    user-select: none;
+  }
+
+  .main-content {
+    background: rgb(248,248,248) !important;
+  }
+
+  .center-row {
+    display: flex;
+    flex-direction: row;
+  }
+
+  .center-col {
+    display: flex;
+    flex-direction: column;
+  }
+
+  .banner {
+    width: 100%;
+    margin-top: 80px;
+  }
+
+    .banner img {
+      width: 100%;
+      min-width: 1280px;
+    }
+
+  .details-container {
+    position: relative;
+    width: 1200px;
+    margin: 80px auto;
+    margin-top: -50px;
+    z-index: 999;
+    display: flex;
+    flex-direction: column;
+  }
+
+    .details-container .activity-brief {
+      width: 100%;
+      background: #fff;
+      border-top-left-radius: 8px;
+      border-top-right-radius: 8px;
+    }
+
+      .details-container .activity-brief .activity-brief-left {
+        width: 30%;
+        height: 100%;
+        padding: 40px 20px 0 20px;
+      }
+
+      .details-container .activity-brief .activity-brief-right {
+        width: 70%;
+        height: 100%;
+        padding: 20px;
+      }
+
+    .details-container .activity-brief-title {
+      font-size: 26px;
+      font-weight: bolder;
+      color: #333;
+      padding: 5px 20px;
+      margin-left: 10px;
+      border-bottom: 1px solid #f6f6f6;
+    }
+
+      .details-container .activity-brief-title .status {
+        display: inline-block;
+        margin-left: 10px;
+        font-size: 14px;
+        color: #fff;
+        padding: 1px 6px;
+        vertical-align: top;
+        margin-top: 6px;
+        background-color: #53c766;
+        border-radius: 3px;
+      }
+
+      .details-container .activity-brief-title .ivu-btn {
+        width: 120px;
+        height: 38px;
+        margin-left: 20px;
+        margin-bottom: 10px;
+      }
+
+    .details-container .brief-info-left {
+      width: 50%;
+    }
+
+      .details-container .brief-info-left .items {
+        margin: 5px;
+      }
+
+        .details-container .brief-info-left .items .item {
+          font-size: 14px;
+          color: #666;
+        }
+
+        .details-container .brief-info-left .items .item2 {
+          font-size: 20px;
+          color: #ffa853;
+        }
+
+        .details-container .brief-info-left .items .tips {
+          font-size: 14px;
+          color: #bbb;
+        }
+
+    .details-container .activity-details {
+      width: 100%;
+      margin-top: 20px;
+    }
+
+      .details-container .activity-details .details-left {
+        width: 30%;
+        height: 100%;
+      }
+
+      .details-container .activity-details .details-right {
+        width: 70%;
+        height: 100%;
+        margin-left: 20px;
+      }
+
+        .details-container .activity-details .details-right .title-tip {
+          margin-top: 20px;
+        }
+
+    .details-container .title-tip {
+      padding: 20px;
+      background: #fff;
+    }
+
+    .details-container .review-attachment {
+      padding: 20px;
+      margin-top: 20px;
+      background: #fff;
+    }
+
+    .details-container .title {
+      color: #33aafe;
+      font-size: 16px;
+      padding-bottom: 15px;
+      border-bottom: 1px solid #f6f6f6;
+    }
+
+      .details-container .title span {
+        color: #ccc;
+        font-size: 14px;
+        margin-left: 8px;
+      }
+
+    .details-container .title-tip .content {
+      color: #999;
+      font-size: 14px;
+      margin-top: 15px;
+    }
+
+    .details-container .details-left .review-attachment .attach {
+      height: 40px;
+      line-height: 40px;
+      padding-left: 40px;
+      margin-bottom: 14px;
+      margin-top: 10px;
+    }
+
+      .details-container .details-left .review-attachment .attach a {
+        display: inline-block;
+        text-decoration: none;
+        font-size: 13px;
+        color: #555;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+        width: 160px;
+        text-decoration: underline;
+      }
+
+    .details-container .details-left .review-attachment .attachicon-2 {
+      background: url("http://hystkj-oss.oss-cn-shenzhen.aliyuncs.com/icon.png") no-repeat;
+    }
+
+    .details-container .comment-item {
+        line-height: 40px;
+        color: #333;
+        font-weight:bold;
+        border-bottom: 1px solid #f6f6f6;
+    }
+</style>

+ 170 - 0
TEAMModelOS.SmartClass/ClientApp/view/smart-class/LessonList.vue

@@ -0,0 +1,170 @@
+<template>
+  <div class="container">
+
+    <div class="search">
+      <DatePicker type="daterange" placement="bottom-end" placeholder="选择起止时间" style="width: 200px"></DatePicker>
+      <Button>搜索</Button>
+    </div>
+    <div class="activities">
+      <div class="activity" v-for="(item,index) in lessons" @click="handleLessonClick()">
+        <div>
+          <div class="img-box"><span class="state" style="background: rgb(130, 147, 166); visibility: visible;">{{item.activityStatusTip}}</span> <img :src="'http://ttkt.sxedu.org:70'+item.coverUri" alt=""></div>
+          <div class="infos">
+            <p></p>
+              <p>名称:{{item.mainActivityName}}</p>
+              <p>学校:{{item.schoolName}}</p>
+              <p>主讲:{{item.speaker}}</p>
+              <p>学科:{{item.categoryName}}</p>
+              <p>时间:{{item.timeTip}}</p>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+    import lessons from '@/static/observationList.json'
+  export default {
+    components: {
+    },
+    data() {
+      return {
+        lessons: []
+      }
+    },
+
+    created() {
+      this.lessons = lessons.list;
+    },
+    methods: {
+      getList(type) {
+        let list = noticeList.list;
+        var newArray = list.filter(function(item){
+            return item.noticeTypeId == type;
+        });
+        this.noticeList = newArray;
+      },
+
+      handleMenuClick(index,typeId,name) {
+        this.activeIndex = index;
+        this.typeName = name;
+        this.getList(typeId);
+      },
+
+      handleLessonClick() {
+        this.$router.push('lessonDetails')
+      },
+
+      goDetails() {
+        this.$router.push('activityDetails')
+      }
+
+
+    },
+    mounted() {
+    }
+  }
+</script>
+<style scoped>
+  html, body, #app {
+    height: 100% !important;
+    user-select: none;
+  }
+
+  .main-content {
+    background: rgb(248,248,248) !important;
+  }
+
+  .container {
+    width: 1200px;
+    margin: 100px auto;
+    display: flex;
+    flex-direction: column;
+  }
+
+.container .activities {
+    min-height: 300px;
+    overflow: hidden
+}
+
+.container .activity {
+    margin-top: 30px;
+    margin-right: 25px;
+    margin-bottom: 30px;
+    width: 383px;
+    float: left;
+    cursor: pointer;
+    border: 1px solid #ddd;
+    box-sizing: border-box
+}
+
+.container .activities .activity:hover {
+    box-shadow: 0 26px 40px -24px rgba(0,36,100,.3);
+    transform: translateY(-6px);
+    transition: all .3s ease 0s
+}
+
+.container .activities .activity:nth-child(3n) {
+    margin-right: 0
+}
+
+.img-box {
+    height: 210px
+}
+
+.img-box .state {
+    padding: 5px 8px;
+    line-height: 20px;
+    position: relative;
+    left: 0;
+    top: 3px;
+    z-index: 1;
+    background-color: #13ce66;
+    color: #fff
+}
+
+.img-box img {
+    width: 382px;
+    height: 210px;
+    position: relative;
+    left: 0;
+    top: -21px;
+    padding-top: 1px
+}
+
+.infos {
+    background-color: #fff;
+    padding:10px;
+    font-size:14px;
+}
+
+  .infos p {
+    margin:5px 0;
+  }
+
+.infos .actName {
+    color: #444;
+    font-size: 16px;
+    padding: 20px 10px 10px 20px;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    width: 280px
+}
+
+.infos .actOrganizer {
+    color: #999;
+    font-size: 14px;
+    padding-left: 20px;
+    padding-bottom: 20px
+}
+
+.infos .actTime {
+    color: #aaa;
+    font-size: 14px;
+    padding-left: 20px;
+    padding-bottom: 10px
+}
+
+
+</style>

+ 1 - 1
TEAMModelOS.SmartClass/ClientApp/view/smart-class/Lessons.vue

@@ -58,7 +58,7 @@
       },
 
       goDetails() {
-        this.$router.push('/activityDetails')
+        this.$router.push('lessonList')
       }
 
 

+ 125 - 46
TEAMModelOS.SmartClass/ClientApp/view/smart-class/LiveBroadcast.vue

@@ -6,7 +6,7 @@
           <Button type="primary">新媒体新技术</Button>
           <Button type="success">创新实验室</Button>
         </div>
-        <div class="condition-wrap-right">
+        <div class="condition-wrap-right" style="display:none;">
           <Select v-model="yearDefault" size="large" style="width:100px">
             <Option v-for="item in years" :value="item" :key="item">{{ item }}</Option>
           </Select>
@@ -16,19 +16,31 @@
           <Button size="large">返回今天</Button>
         </div>
       </div>
-      <full-calendar :events="fcEvents" lang="zh" @dayClick ="getDay" :config="config" ></full-calendar>
+
+
+      <Tooltip :content="eventContent" placement="right" transfer max-width="300px">
+        <full-calendar :config="config"
+                       :events="fcEvents"
+                       ref="calendar"
+                       @dayClick="getDay">
+        </full-calendar>
+      </Tooltip>
+      <br><br>
     </div>
   </div>
 </template>
 <script>
-  import FullCalendar from 'vue-fullcalendar'
+  import { FullCalendar }  from 'vue-full-calendar'
+  import 'fullcalendar/dist/fullcalendar.css'
   export default {
     components: {
       FullCalendar
     },
     data() {
+      const self = this;
       return {
-        yearDefault:'2019年',
+        eventContent: "",
+        yearDefault: '2019年',
         years: [
           "2012年",
           "2013年",
@@ -58,10 +70,10 @@
           '11月',
           '12月',
         ],
-        fcEvents: [
-        ],
+        _this:null,
+        fcEvents: [],
         config: {
-          firstDay: '0',//以周日为每周的第一天
+          firstDay: '7',//以周日为每周的第一天
           // weekends: true,//是否在日历中显示周末
           locale: 'zh-cn',//语言
           defaultView: 'month',//默认按月显示
@@ -69,27 +81,37 @@
           fixedWeekCount: false,//是否固定显示六周
           // weekMode:"liquid",//周数不定,每周的高度可变,整个日历高度不变
           allDaySlot: false,
+          eventLimit: 1,
           // allDay:true,
           header: {//表头信息
             left: 'prev, next, today',
             center: 'title',
             right: 'hide, custom'
           },
-        },
-        lessonList:[]
+          dayClick: function getDay(day, jsEvent) {
+              console.log(day);
+              console.log(jsEvent);
+          },
+          eventClick:(day, jsEvent)=> {
+            this.$router.push( { path: 'lessonDetails' } );
+          },
+          eventMouseover: function (event, jsEvent, view) {
+            self.eventContent = event.title;
+          },
+         },
+        lessonList: []
       }
     },
-    methods: {
-      getDay(day, jsEvent) {
-        console.log(day);
-        console.log(jsEvent);
-      }
-
 
+    methods: {
+      getDay(event, jsEvent, view) {
+      },
     },
     mounted() {
+      this._this = this;
       this.lessonList = require("@/static/lessonList.json");
       for (let i = 0; i < this.lessonList.length; i++) {
+      
         var sdate = new Date(this.lessonList[i].startTime.time);
         let sY = sdate.getFullYear() + '-';
         let sM = (sdate.getMonth() + 1 < 10 ? '0' + (sdate.getMonth() + 1) : sdate.getMonth() + 1) + '-';
@@ -98,38 +120,54 @@
         let eY = edate.getFullYear() + '-';
         let eM = (edate.getMonth() + 1 < 10 ? '0' + (edate.getMonth() + 1) : edate.getMonth() + 1) + '-';
         let eD = edate.getDate() + ' ';
-        this.fcEvents.push({
-          title:'名称:'+this.lessonList[i].viwActivityTypeTip,
-          start: sY + sM + sD,
-          end: eY + eM + eD
-        });
-        this.fcEvents.push({
-          title:'学校:'+this.lessonList[i].schoolName,
-          start: sY + sM + sD,
-          end: eY + eM + eD
-        });
-        this.fcEvents.push({
-          title:'主讲人:'+this.lessonList[i].employeeName,
-          start: sY + sM + sD,
-          end: eY + eM + eD
-        });
-        this.fcEvents.push({
-          title:'学科:'+this.lessonList[i].parentCategoryName,
-          start: sY + sM + sD,
-          end: eY + eM + eD
-        });
-        this.fcEvents.push({
-          title:'课题:'+this.lessonList[i].parentProjectName,
-          start: sY + sM + sD,
-          end: eY + eM + eD
-        });
-        this.fcEvents.push({
-          title:'时间:'+this.lessonList[i].timeRangeTipHHmm,
-          start: sY + sM + sD,
-          end: eY + eM + eD
-        });
+
+        let dateArr = this.fcEvents.map(item => item.start);
+
+        //如果已存在
+        if (dateArr.indexOf(sY + sM + sD) == -1) {
+          this.fcEvents.push({
+            title: '名称:' + this.lessonList[i].name
+              + ' \n 学校:' + this.lessonList[i].schoolName
+              + ' \n 主讲人:' + this.lessonList[i].employeeName
+              + ' \n 学科:' + this.lessonList[i].parentCategoryName
+              + ' \n 课题:' + this.lessonList[i].parentProjectName
+              + ' \n 时间:' + this.lessonList[i].timeRangeTipHHmm
+              + ' \n ',
+            start: sY + sM + sD,
+            end: eY + eM + eD
+          });
+        } else {
+          let index = dateArr.indexOf(sY + sM + sD);
+          let newEvent = {
+            title:  this.lessonList[i].name + ' \n\n 等多个活动',
+            start: sY + sM + sD,
+            end: eY + eM + eD,
+            renderHeader: (h, params) => {
+              return h('div', [
+                h('span', params.column.title),
+                h('Tooltip', {
+                  props: {
+                    content: '您希望展示的提示语',
+                    transfer: true,
+                    maxWidth: '220',
+                    theme: 'light'
+                  }
+                }, [
+                  h('Icon', {
+                    props: {
+                      type: 'md-help-circle',
+                      color: "#c8c8c8",
+                      size: "20"
+                    },
+                    class: {iconClass: true}
+                  })
+                ]),
+              ])
+            }
+          }
+          this.fcEvents.splice(index, 1,newEvent);
+        }
       }
-      console.log(this.lessonList);
     }
   }
 </script>
@@ -184,10 +222,51 @@
     }
     .review-main /deep/ .full-calendar-body .dates .dates-events .events-week .events-day .event-box .event-item {
       background:none;
+      height:15px;
     }
     /*.review-main /deep/ .full-calendar-body .dates .dates-events .events-week .events-day .event-box .more-link {
       display:none;
     }*/
+    .review-main /deep/ .fc-event, .fc-event:hover {
+      color:black;
+    }
+    .review-main /deep/ .fc-day-grid-event .fc-time{
+      display:none;
+    }
+    .review-main /deep/ .fc-event, .fc-event-dot {
+      background:none;
+    }
+    .review-main /deep/ .fc-event {
+      border:none;
+    }
+    .review-main /deep/ .fc-content {
+      padding-left:5px;
+    }
+    .review-main /deep/ .fc-title {
+      width: 140px;
+      display: block;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      white-space: nowrap;
+    }
+    .review-main /deep/ .fc-day-header {
+      background: -webkit-linear-gradient(#E1E7EC, #B9C6D1); /* Safari 5.1 - 6.0 */
+      background: -o-linear-gradient(#E1E7EC, #B9C6D1); /* Opera 11.1 - 12.0 */
+      background: -moz-linear-gradient(#E1E7EC, #B9C6D1); /* Firefox 3.6 - 15 */
+      background: linear-gradient(#E1E7EC, #B9C6D1); /* 标准的语法 */
+      height: 40px;
+      line-height: 40px;
+    }
+    .review-main /deep/ .fc-other-month {
+      background: linear-gradient( -45deg, #ecf0f4 25%, #ffffff 0, #ffffff 50%, #ecf0f4 0, #ecf0f4 75%, #ffffff 0 ); /* 标准的语法(必须放在最后) */
+      background-size: 20px 20px;
+    }
+    .review-main /deep/ .fc-left {
+      float:right;
+    }
+    .review-main /deep/ .fc-widget-content:hover {
+      /*background:#eee;*/
+    }
    .condition-wrap {
     display:flex;
     flex-direction:row;

+ 137 - 0
TEAMModelOS.SmartClass/ClientApp/view/smart-class/LoginPage.vue

@@ -0,0 +1,137 @@
+<template>
+  <div class="login">
+    <div class="drag">
+      <div style="background:rgba(255,255,255,0.1); border-radius:5px;">
+        <Card icon="log-in" title="欢迎登录" :bordered="false" class="login-card">
+          <div class="form-con">
+            <Form ref="loginForm" :model="form" :rules="rules" @keydown.enter.native="handleSubmit">
+              <FormItem prop="userName">
+                <Input v-model="form.userName" placeholder="请输入用户名">
+                <span slot="prepend">
+                  <Icon :size="16" type="ios-person"></Icon>
+                </span>
+                </Input>
+              </FormItem>
+              <FormItem prop="password">
+                <Input type="password" v-model="form.password" placeholder="请输入密码">
+                <span slot="prepend">
+                  <Icon :size="14" type="md-lock"></Icon>
+                </span>
+                </Input>
+              </FormItem>
+              <FormItem>
+                <Button @click="handleSubmit" type="primary" long>登录</Button>
+              </FormItem>
+            </Form>
+            <!--<p class="login-tip">输入任意用户名和密码即可</p>-->
+          </div>
+        </Card>
+      </div>
+    </div>
+
+
+  </div>
+</template>
+<script>
+  export default {
+    name: 'LoginForm',
+    props: {
+      userNameRules: {
+        type: Array,
+        default: () => {
+          return [
+            { required: true, message: '账号不能为空', trigger: 'blur' }
+          ]
+        }
+      },
+      passwordRules: {
+        type: Array,
+        default: () => {
+          return [
+            { required: true, message: '密码不能为空', trigger: 'blur' }
+          ]
+        }
+      }
+    },
+    data() {
+      return {
+        form: {
+          userName: '',
+          password: ''
+        }
+      }
+    },
+    computed: {
+      rules() {
+        return {
+          userName: this.userNameRules,
+          password: this.passwordRules
+        }
+      }
+    },
+    methods: {
+      handleSubmit() {
+        this.$refs.loginForm.validate((valid) => {
+          if (valid) {
+            localStorage.setItem("userName", this.form.userName);
+            localStorage.setItem("isLogin", 1);
+            if (this.password == 'habook') {
+              this.$router.push({ path: '/main' });
+            } else {
+              this.$router.push({ path: '/main' });
+            }
+          }
+        })
+      }
+    }
+  }
+</script>
+<style scoped>
+  .login {
+    background-image: url('../../assets/image/login_bg.jpg');
+    width: 100%;
+    height: 100%;
+    background-size: cover;
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+    justify-content: center;
+  }
+
+    .login:after {
+      content: "";
+      width: 100%;
+      height: 100%;
+      position: absolute;
+      left: 0;
+      top: 0;
+      background: inherit;
+      filter: blur(4px);
+      z-index: 1;
+    }
+
+  .drag {
+    position: absolute;
+    text-align: center;
+    z-index: 11;
+    border-radius: 5px;
+    box-shadow: 0 0 10px 6px rgba(0,0,0,.5);
+    width: 90%;
+    max-width: 350px;
+  }
+
+  .login-tip {
+    color: white;
+  }
+
+  .drag >>> .ivu-card-head p span {
+    color: white;
+    font-size: 18px;
+  }
+
+  .login-card {
+    background: none;
+    color: white;
+    width: 100%;
+  }
+</style>

+ 64 - 0
TEAMModelOS.SmartClass/ClientApp/view/smart-class/MainPage.vue

@@ -0,0 +1,64 @@
+<template>
+  <div id="app">
+    <div class="main-content">
+      <headers></headers>
+      <div class="content">
+        <router-view />
+      </div>
+      <div class="footer">
+        绍兴市柯桥区教师发展中心    广州市奥威亚电子科技有限公司技术支持&nbsp;浙ICP备05083914
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+  import headers from '@/components/smart-class/headers'
+  export default {
+    components: {
+      headers
+    },
+    data() {
+      return {
+      }
+    },
+    methods: {
+    },
+    mounted() {
+    }
+  }
+</script>
+<style scoped>
+  html, body, #app {
+    height: 100% !important;
+    user-select: none;
+  }
+
+  .main-content {
+    position: relative;
+    width: 100%;
+    min-width: 1200px;
+    min-height: 100%;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    background: rgb(241,242,243);
+  }
+
+  .content {
+    width: 100%;
+  }
+
+  .logo {
+    width: 200px;
+    height: 200px;
+    margin-bottom: 50px;
+  }
+
+  .footer {
+    height: 60px;
+    text-align: center;
+    font-size: 12px;
+    color: #aaa;
+    line-height: 60px
+  }
+</style>

+ 62 - 84
TEAMModelOS.SmartClass/ClientApp/view/smart-class/PastReview.vue

@@ -5,37 +5,42 @@
         <p class="title">
           往届回顾
           <span class="sub">
-            <span>18</span>
+            <span>{{activities.length}}</span>
             个活动已结束
           </span>
         </p>
         <div class="selections">
           <span class="name">年份:</span>
           <ul>
-            <li class="active"><span class="item">不限</span></li>
-            <li class=""><span class="item">2015</span></li>
-            <li class=""><span class="item">2016</span></li>
-            <li class=""><span class="item">2017</span></li>
-            <li class=""><span class="item">2018</span></li>
-            <li class=""><span class="item">2019</span></li>
+            <li :class="activeIndex == 0 ? 'active':''" @click="handleMenuClick(0,0)"><span class="item">不限</span></li>
+            <li :class="activeIndex == 1 ? 'active':''" @click="handleMenuClick(1,2015)"><span class="item">2015</span></li>
+            <li :class="activeIndex == 2 ? 'active':''" @click="handleMenuClick(2,2016)"><span class="item">2016</span></li>
+            <li :class="activeIndex == 3 ? 'active':''" @click="handleMenuClick(3,2017)"><span class="item">2017</span></li>
+            <li :class="activeIndex == 4 ? 'active':''" @click="handleMenuClick(4,2018)"><span class="item">2018</span></li>
+            <li :class="activeIndex == 5 ? 'active':''" @click="handleMenuClick(5,2019)"><span class="item">2019</span></li>
+
           </ul>
         </div>
         <div class="selections">
           <span class="name">排序:</span>
           <ul>
-            <li class="active"><span class="item">最新</span></li>
-            <li class=""><span class="item">最热</span></li>
+            <li :class="activeOrder == 0 ? 'active':''" @click="handleOrderClick(0)"><span class="item">最新</span></li>
+            <li :class="activeOrder == 1 ? 'active':''" @click="handleOrderClick(1)"><span class="item">最热</span></li>
           </ul>
         </div>
         <div style="clear:both;"></div>
+        <Input search v-model="searchVal" placeholder="输入活动名称或者关键词" style="width:300px;margin-top:10px" @on-search="handleSearch" @on-change="handleSearch" />
         <div class="activities">
           <div class="activity" v-for="(item,index) in activities" @click="activityClick">
             <div>
-              <div class="img-box"><span class="state" style="background: rgb(19, 206, 102); visibility: visible; display:none;">{{item.status}}</span> <img :src="item.img" alt=""></div> <div class="infos">
+              <div class="img-box">
+                <span class="state" style="background: rgb(19, 206, 102); visibility: visible; display:none;">{{item.status}}</span>
+                <img :src="'http://ttkt.sxedu.org:70'+item.coverUri" alt="">
+              </div> <div class="infos">
                 <p class="actName">{{item.name}}</p>
                 <p class="actOrganizer">
                   <span class="organizer">
-                    {{item.time}}
+                    {{item.submitTimeTip}}
                   </span>
                   <span style="display:none;">主办</span>
                 </p>
@@ -43,97 +48,62 @@
             </div>
           </div>
         </div>
+
+        <Page show-total
+              :current="1"
+              :total="activities.length"
+              :page-size="pageSize"
+              class="page-box"
+              style="margin:20px 0" />
       </div>
     </div>
   </div>
 </template>
 <script>
+  import acList from '@/static/pastAcList.json'
   export default {
     components: {
     },
     data() {
       return {
-        activities: [
-          {
-            status: "筹备阶段",
-            img: "http://ttkt.sxedu.org:70/upload/activity/cover/40/40.jpg?_=1557199674221",
-            name: "2019年柯桥区天天智慧课堂 5月份 优课评比",
-            organizer: "柯桥区教师发展中心",
-            time:"2019.03.01-04.06"
-          },{
-            status: "筹备阶段",
-            img: "http://ttkt.sxedu.org:70/upload/activity/cover/40/40.jpg?_=1557199674221",
-            name: "2019年柯桥区天天智慧课堂 5月份 优课评比",
-            organizer: "柯桥区教师发展中心",
-            time:"2019.03.01-04.06"
-          },{
-            status: "筹备阶段",
-            img: "http://ttkt.sxedu.org:70/upload/activity/cover/40/40.jpg?_=1557199674221",
-            name: "2019年柯桥区天天智慧课堂 5月份 优课评比",
-            organizer: "柯桥区教师发展中心",
-            time:"2019.03.01-04.06"
-          },{
-            status: "筹备阶段",
-            img: "http://ttkt.sxedu.org:70/upload/activity/cover/40/40.jpg?_=1557199674221",
-            name: "2019年柯桥区天天智慧课堂 5月份 优课评比",
-            organizer: "柯桥区教师发展中心",
-            time:"2019.03.01-04.06"
-          },{
-            status: "筹备阶段",
-            img: "http://ttkt.sxedu.org:70/upload/activity/cover/40/40.jpg?_=1557199674221",
-            name: "2019年柯桥区天天智慧课堂 5月份 优课评比",
-            organizer: "柯桥区教师发展中心",
-            time:"2019.03.01-04.06"
-          },{
-            status: "筹备阶段",
-            img: "http://ttkt.sxedu.org:70/upload/activity/cover/40/40.jpg?_=1557199674221",
-            name: "2019年柯桥区天天智慧课堂 5月份 优课评比",
-            organizer: "柯桥区教师发展中心",
-            time:"2019.03.01-04.06"
-          },
-          {
-            status: "筹备阶段",
-            img: "http://ttkt.sxedu.org:70/upload/activity/cover/40/40.jpg?_=1557199674221",
-            name: "2019年柯桥区天天智慧课堂 5月份 优课评比",
-            organizer: "柯桥区教师发展中心",
-            time:"2019.03.01-04.06"
-          },{
-            status: "筹备阶段",
-            img: "http://ttkt.sxedu.org:70/upload/activity/cover/40/40.jpg?_=1557199674221",
-            name: "2019年柯桥区天天智慧课堂 5月份 优课评比",
-            organizer: "柯桥区教师发展中心",
-            time:"2019.03.01-04.06"
-          },{
-            status: "筹备阶段",
-            img: "http://ttkt.sxedu.org:70/upload/activity/cover/40/40.jpg?_=1557199674221",
-            name: "2019年柯桥区天天智慧课堂 5月份 优课评比",
-            organizer: "柯桥区教师发展中心",
-            time:"2019.03.01-04.06"
-          }
-        ]
+        activeIndex: 0,
+        activeOrder: 0,
+        pageSize: 9,
+        searchVal:"",
+        activities: acList.data.list
       }
     },
     methods: {
       activityClick() {
-        this.$router.push('/rewardDetails');
+        this.$router.push('rewardDetails');
+      },
+      handleMenuClick(index,val) {
+        this.activeIndex = index;
+        this.activities = index == 0 ? acList.data.list : acList.data.list.filter(item => item.submitTimeTip.substring(0,4) == val);
+      },
+      handleOrderClick(index) {
+        this.activeOrder = index;
+        let list = acList.data.list;
+        this.activities = list.sort(this.compare('applyCount'));
+      },
+      compare(property){
+        return function(a,b){
+            var value1 = a[property];
+            var value2 = b[property];
+            return value1 - value2;
+        }
+      },
+      handleSearch() {
+        console.log(acList.data.list.filter(item => item.name.indexOf(this.searchVal) != -1));
+        this.activities = acList.data.list.filter(item => item.name.indexOf(this.searchVal) != -1);
       }
 
-
     },
     mounted() {
     }
   }
 </script>
 <style scoped>
-  html, body, #app {
-    height: 100% !important;
-    user-select: none;
-  }
-
-  .main-content {
-    background: rgb(248,248,248) !important;
-  }
-
   .container {
     width: 1200px;
     margin: 100px auto;
@@ -171,7 +141,10 @@
     float: left;
     clear: left;
   }
-
+  .selections ul {
+    height:30px;
+    margin-top:10px;
+  }
   .selections ul li {
     float: left;
     font-size: 14px;
@@ -180,9 +153,10 @@
     padding: 0 0 0 40px;
   }
 
-    .selections ul li.active {
-      color: #33aeff;
-    }
+  .selections ul li.active {
+    color: #33aeff;
+    font-weight:bold;
+  }
   .activities {
     min-height: 300px;
     overflow: hidden;
@@ -268,4 +242,8 @@
     text-decoration: none;
     float: right
 }
+
+  .page-box {
+    float:right;
+  }
 </style>

+ 1 - 1
TEAMModelOS.SmartClass/ClientApp/view/smart-class/ReviewActivity.vue

@@ -56,7 +56,7 @@
       },
 
       goDetails() {
-        this.$router.push('/activityDetails')
+        this.$router.push('activityDetails')
       }
 
 

+ 90 - 73
TEAMModelOS.SmartClass/ClientApp/view/smart-class/RewardDetails.vue

@@ -50,7 +50,11 @@
                 <TabPane label="月季军" name="月季军"></TabPane>
                 <TabPane label="优课" name="优课"></TabPane>
               </Tabs>
-              <Table :columns="columns1" :data="rewardDatas"></Table>
+              <Table :columns="columns1" :data="rewardDatas">
+                <template slot-scope="{ row, index }" slot="applyName" >
+                  <Icon color="#A8CDF3" size="20" type="logo-youtube" style="cursor:pointer;"/><strong  style="margin-right: 5px;cursor:pointer;" @click="showVideo(index)">{{row.applyName}}</strong>
+                </template>
+              </Table>
             </div>
               <div class="description title-tip">
                 <p class="title">
@@ -80,9 +84,9 @@
   </div>
 </template>
 <script>
-    import attachmentsList from '@/static/attachmentsList.json'
-    import activityInfo from '@/static/activityDetails.json'
-    import rewardList from '@/static/rewardList.json'
+  import attachmentsList from '@/static/attachmentsList.json'
+  import activityInfo from '@/static/activityDetails.json'
+  import rewardList from '@/static/rewardList.json'
   export default {
     components: {
     },
@@ -90,78 +94,79 @@
       return {
         reviewAcList: [],
         attachmentsList: [],
-        rewardSettings:[
-            {
-                "activityId":16,
-                "activityName":"2018年柯桥区天天智慧课堂 12月份 优课评比",
-                "applyCount":20,
-                "id":46,
-                "name":"月冠军",
-                "ratio":1,
-                "ratioTip":"5.00%/1人",
-                "sortNumber":1,
-                "type":2
-            },
-            {
-                "activityId":16,
-                "activityName":"2018年柯桥区天天智慧课堂 12月份 优课评比",
-                "applyCount":20,
-                "id":47,
-                "name":"月亚军",
-                "ratio":1,
-                "ratioTip":"5.00%/1人",
-                "sortNumber":2,
-                "type":2
-            },
-            {
-                "activityId":16,
-                "activityName":"2018年柯桥区天天智慧课堂 12月份 优课评比",
-                "applyCount":20,
-                "id":48,
-                "name":"月季军",
-                "ratio":1,
-                "ratioTip":"5.00%/1人",
-                "sortNumber":3,
-                "type":2
-            },
-            {
-                "activityId":16,
-                "activityName":"2018年柯桥区天天智慧课堂 12月份 优课评比",
-                "applyCount":20,
-                "id":49,
-                "name":"优课",
-                "ratio":7,
-                "ratioTip":"35.00%/7人",
-                "sortNumber":4,
-                "type":2
-            }
+        rewardSettings: [
+          {
+            "activityId": 16,
+            "activityName": "2018年柯桥区天天智慧课堂 12月份 优课评比",
+            "applyCount": 20,
+            "id": 46,
+            "name": "月冠军",
+            "ratio": 1,
+            "ratioTip": "5.00%/1人",
+            "sortNumber": 1,
+            "type": 2
+          },
+          {
+            "activityId": 16,
+            "activityName": "2018年柯桥区天天智慧课堂 12月份 优课评比",
+            "applyCount": 20,
+            "id": 47,
+            "name": "月亚军",
+            "ratio": 1,
+            "ratioTip": "5.00%/1人",
+            "sortNumber": 2,
+            "type": 2
+          },
+          {
+            "activityId": 16,
+            "activityName": "2018年柯桥区天天智慧课堂 12月份 优课评比",
+            "applyCount": 20,
+            "id": 48,
+            "name": "月季军",
+            "ratio": 1,
+            "ratioTip": "5.00%/1人",
+            "sortNumber": 3,
+            "type": 2
+          },
+          {
+            "activityId": 16,
+            "activityName": "2018年柯桥区天天智慧课堂 12月份 优课评比",
+            "applyCount": 20,
+            "id": 49,
+            "name": "优课",
+            "ratio": 7,
+            "ratioTip": "35.00%/7人",
+            "sortNumber": 4,
+            "type": 2
+          }
         ],
         activityInfo: {},
         columns1: [
-            {
-                title: '作品名称',
-                key: 'applyName'
-            },
-            {
-                title: '作者',
-                key: 'employeeName'
-            },
-            {
-                title: '学校',
-                key: 'employeeSchoolName'
-            },
-            {
-                title: '年级',
-                key: 'gradeName'
-           },
-            {
-                title: '学科',
-                key: 'categoryName'
-           },
-           {
-                title: '奖项',
-                key: 'activityAwardName'
-            }
+          {
+            title: '作品名称',
+            slot: 'applyName',
+            width: 140
+          },
+          {
+            title: '作者',
+            key: 'employeeName'
+          },
+          {
+            title: '学校',
+            key: 'employeeSchoolName'
+          },
+          {
+            title: '年级',
+            key: 'gradeName'
+          },
+          {
+            title: '学科',
+            key: 'categoryName'
+          },
+          {
+            title: '奖项',
+            key: 'activityAwardName'
+          }
         ],
         rewardDatas: []
       }
@@ -175,6 +180,17 @@
     methods: {
       tabClick(name) {
         this.rewardDatas = name == "获奖作品" ? rewardList.data.list : rewardList.data.list.filter(item => item.activityAwardName == name);
+      },
+      showVideo(index) {
+        //alert(url);
+        this.$router.push(
+          {
+            path: 'video',
+            query: {
+              rewardIndex: index
+            }
+          }
+        );
       }
     },
     mounted() {
@@ -189,6 +205,7 @@
 
   .main-content {
     background: rgb(248,248,248) !important;
+    height:100%;
   }
 
   .center-row {

+ 210 - 0
TEAMModelOS.SmartClass/ClientApp/view/smart-class/Video.vue

@@ -0,0 +1,210 @@
+<template>
+  <div class="video-page">
+    <div class="video-title">
+      <h3 class="video-title-h3">12月03日直播</h3>
+    </div>
+    <div class="video-info">
+
+      <div class="video-src">
+        <video controls="controls" width="800" style="display:block;"
+               src="https://teammodelstorage.blob.core.chinacloudapi.cn/teammodelcontest/20190516/acalssOne%E7%BD%91%E9%A1%B5%E7%99%BB%E5%BD%95%E5%AD%A6%E4%B9%A0%E6%96%B9%E6%B3%95.mp4">
+          您的浏览器不支持 video 标签。
+        </video>
+
+      </div>
+
+      <div class="video-detail-info">
+        <Form :label-width="100">
+          <FormItem label="获奖情况:">
+            <span>{{routerData.activityAwardName}}</span>
+          </FormItem>
+          <FormItem label="主讲:">
+            <span>{{routerData.employeeName}}</span>
+          </FormItem>
+          <FormItem label="单位:">
+            <span>{{routerData.employeeSchoolName}}</span>
+          </FormItem>
+          <FormItem label="年级:">
+            <span>{{routerData.gradeName}}</span>
+          </FormItem>
+          <FormItem label="学科:">
+            <span>{{routerData.categoryName}}</span>
+          </FormItem>
+          <FormItem label="教学设计:">
+            <!--<span>{{routerData.activityAwardName}}</span>-->
+          </FormItem>
+          <FormItem label="教学反思:">
+            <!--<span>{{routerData.activityAwardName}}</span>-->
+          </FormItem>
+        </Form>
+        <div class="download-video">
+
+          <a download="video" style="color:#999999;font-size:14px;" href="https://teammodelstorage.blob.core.chinacloudapi.cn/teammodelcontest/20190516/acalssOne%E7%BD%91%E9%A1%B5%E7%99%BB%E5%BD%95%E5%AD%A6%E4%B9%A0%E6%96%B9%E6%B3%95.mp4">
+            <Icon type="md-cloud-download" size="22" color="white" />
+            下载视频
+          </a>
+        </div>
+      </div>
+    </div>
+    <div class="video-other">
+      <h3 class="video-title-h3">推荐作品</h3>
+    </div>
+    <div class="videos-wrap">
+      <div class="video-item" v-for="(item , index) in videos" @click="showVideo(index)">
+        <img src="../../assets/image/default-act.png" width="95%" />
+        <p>{{item.title}}</p>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+  import rewardList from '@/static/rewardList.json'
+  export default {
+    data() {
+      return {
+        routerData: {},
+        rewardDatas: [],
+        videos: [
+          {
+            title:'12月14日直播'
+          },
+          {
+            title:'12月14日直播'
+          },
+          {
+            title:'12月14日直播'
+          },
+          {
+            title:'12月14日直播'
+          },
+          {
+            title:'12月14日直播'
+          },
+          {
+            title:'12月14日直播'
+          },
+          {
+            title:'12月14日直播'
+          },
+          {
+            title:'12月14日直播'
+          }
+        ]
+      }
+    },
+    methods: {
+      showVideo(index) {
+        //alert(index);
+        this.$router.push(
+          {
+            name: 'video',
+            query: {
+              rewardIndex: index
+            }
+          }
+        );
+      }
+    },
+    mounted() {
+      let index = this.$route.query.rewardIndex;
+      //alert(index);
+
+      this.rewardDatas = rewardList.data.list;
+      if (index == undefined) {
+        this.routerData = this.rewardDatas[0];
+      } else {
+        this.routerData = this.rewardDatas[index];
+      }
+      
+    },
+    
+    watch: {
+      $route() {
+        let index = this.$route.query.rewardIndex;
+        //alert(index);
+        if (index == undefined) {
+          this.routerData = this.rewardDatas[0];
+        } else {
+          this.routerData = this.rewardDatas[index];
+        }
+      }
+    }
+  }
+</script>
+<style scoped>
+
+  .video-page {
+    width: 1200px;
+    margin: 100px auto;
+  }
+
+  .video-title {
+    margin-bottom: 20px;
+    height: 20px;
+  }
+
+    .video-title-h3 {
+      height: 20px;
+      font-size: 20px;
+      line-height: 20px;
+      border-left: 6px solid #37b1fa;
+      padding-left: 12px;
+    }
+
+  .video-info {
+    width: 100%;
+    display: table;
+  }
+  .video-detail-info {
+    width:400px;
+    background:#222222;
+    display:table-cell;
+    vertical-align:top;
+    padding:20px 10px 20px 30px;
+    position:relative;
+  }
+    .video-detail-info .ivu-form-item {
+      margin-bottom:8px;
+    }
+    .video-detail-info .ivu-form .ivu-form-item-label {
+      font-size:14px;
+      color:#999999;
+    }
+    .video-detail-info .ivu-form-item-content {
+      font-size: 14px;
+      color: #ffffff;
+    }
+  .video-src {
+    display:table-cell;
+    width:800px;
+    background:#000000;
+  }
+  .download-video {
+    text-align:center;
+    position:absolute;
+    width:100%;
+    bottom:20px;
+    left:0;
+  }
+  .video-other {
+    margin-top:20px;
+  }
+  .videos-wrap {
+    margin:0px -10px 0px -10px;
+  }
+  .video-item {
+    width: 25%;
+    display: inline-block;
+    padding: 0px 10px;
+    margin-top:20px;
+    cursor:pointer;
+  }
+
+    .video-item p {
+      font-size: 16px;
+      color: #000;
+      margin-top: 10px;
+      text-decoration: none;
+      text-indent: 8px;
+    }
+</style>

+ 105 - 0
TEAMModelOS.SmartClass/ClientApp/view/smart-class/calendar.vue

@@ -0,0 +1,105 @@
+<template>
+  <div class="hello">
+    <el-date-picker size='small' v-model="selectDate" type="month"
+      placeholder="选择月" value-format="yyyy-MM">
+    </el-date-picker>
+    <el-button size='small' @click='changeDate'>确定</el-button>
+    <full-calendar  
+      :config="config" 
+      :events="events"
+      ref="calendar" 
+      @event-selected='eventClick' 
+      @day-click="dayClick">
+    </full-calendar> 
+    <add-schedule v-if="isAdd" :isAdd='isAdd' :editItem='editItem' @add='addItem' @close='isAdd = false'></add-schedule>
+  </div>
+</template>
+<script>
+import { FullCalendar } from 'vue-full-calendar'
+import 'fullcalendar/dist/fullcalendar.css'
+import addSchedule from '@/components/calendar/add.vue'
+
+export default {
+   data () {
+    return {
+      isAdd:false,
+      selectDate:'',//日期选择器选中的月份
+      config: {
+        firstDay:'0',//以周日为每周的第一天
+        // weekends: true,//是否在日历中显示周末
+        locale: 'zh-cn',//语言
+        defaultView: 'month',//默认按月显示
+        height: 'auto',//高度
+        fixedWeekCount:false,//是否固定显示六周
+        // weekMode:"liquid",//周数不定,每周的高度可变,整个日历高度不变
+        allDaySlot:false,
+        // allDay:true,
+        header: {//表头信息
+          left: 'prev, next, today',
+          center: 'title',
+          right: 'hide, custom'
+        },
+      },
+      events: [{
+        id:1,
+        title:'出差',
+        start:'2019-04-03',
+        end:'2019-04-05'
+      }, {
+        id:2,
+        title:'春游',
+        start:'2019-04-12',
+      }],
+      newItem:{},
+      editItem:{}
+    }
+  },
+  components : { FullCalendar, addSchedule },
+  methods:{
+    changeDate(){
+      // this.$refs.calendar.fireMethod('gotoDate', this.selectDate)
+      this.$refs.calendar.fireMethod('prev');
+    },
+    eventClick(event){ //events的点击事件
+      this.editItem = event
+      this.isAdd = true
+    },
+    dayClick(date, jsEvent, view){ //日期的点击事件
+      this.editItem = {}
+      this.isAdd = true
+    },
+    addItem(detail){
+      this.newItem = JSON.parse(detail)
+      if(this.editItem.id){//如果是编辑,就删掉该条
+        this.events.forEach( (el,ind)=>{
+          if(el.id == this.editItem.id){
+            this.events.splice(ind,1)
+          }
+        })
+      }
+      this.events.push({
+        id : this.editItem.id?this.editItem.id:this.setUuid(),
+        title : this.newItem.title,
+        start : this.newItem.period[0],
+        end : this.newItem.period[1],
+      })
+    },
+    setUuid(){
+        var s = [];
+        var hexDigits = "0123456789abcdef";
+        for(var i = 0; i < 36; i++){ s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1); }
+        s[14] = "4";  
+        s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); 
+        s[8] = s[13] = s[18] = s[23];
+        var uuid = s.join("");
+        return uuid;
+    },
+   
+  },
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped>
+
+</style>

+ 5 - 5
TEAMModelOS.SmartClass/ClientApp/view/smart-class/index.vue

@@ -47,7 +47,7 @@
                 </div>
               </div>
             </div>
-</div>
+          </div>
       </div>
     </div>
 
@@ -100,19 +100,19 @@
     },
     methods: {
       handleNoticeClick() {
-        this.$router.push('/noticeDetails');
+        this.$router.push('noticeDetails');
         this.$eventBus.$emit("activeIndex", 1);
       },
       handleActivityClick() {
-        this.$router.push('/activityDetails');
+        this.$router.push('activityDetails');
         this.$eventBus.$emit("activeIndex", 2);
       },
       goNotice() {
-        this.$router.push('/notice');
+        this.$router.push('notice');
         this.$eventBus.$emit("activeIndex", 1);
       },
       goActivity() {
-        this.$router.push('/reviewActivity');
+        this.$router.push('reviewActivity');
         this.$eventBus.$emit("activeIndex", 2);
       }
 

+ 6 - 5
TEAMModelOS.SmartClass/ClientApp/view/smart-class/notice.vue

@@ -19,9 +19,10 @@
     <div class="right-box center-col">
       <p class="title">{{typeName}}</p>
       <Table :columns="newColumns" :data="noticeList" @on-row-click="rowClick" no-data-text="暂无数据"></Table>
-      <Page :total="50" show-elevator show-total/>
+      <Page :total="noticeList.length" show-elevator show-total />
     </div>
   </div>
+
 </template>
 <script>
 
@@ -43,12 +44,12 @@
             key: 'startTime'
           }
         ],
-        noticeList: []
+        noticeList: noticeList.list
       }
     },
 
     created() {
-      this.getList(1);
+      this.getList(0);
     },
     methods: {
       getList(type) {
@@ -56,7 +57,7 @@
         var newArray = list.filter(function(item){
             return item.noticeTypeId == type;
         });
-        this.noticeList = newArray;
+        this.noticeList = type==0 ? list : newArray;
       },
 
       handleMenuClick(index,typeId,name) {
@@ -67,7 +68,7 @@
 
       rowClick(data) {
         this.$router.push({
-          path:'/noticeDetails',
+          path:'noticeDetails',
           query:{
             id:data.id
           }

+ 1 - 1
TEAMModelOS.SmartClass/Views/Shared/_Layout.cshtml

@@ -5,7 +5,7 @@
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <title>@ViewData["Title"]智慧课堂管理平台</title>
-    <link rel="stylesheet" href="~/dist/style.css" asp-append-version="true" />
+    @*<link rel="stylesheet" href="~/dist/style.css" asp-append-version="true" />*@
     <link rel="icon" type="image/x-icon" class="js-site-favicon" href="https://account.habookaclass.biz/dist/6854ccd21afb6b1f994e1556c2360dd8.ico">
     @*<link rel="stylesheet" href="~/dist/vendor.css" asp-append-version="true" />
         <environment names="Staging,Production">

+ 35 - 4
TEAMModelOS.SmartClass/package.json

@@ -26,15 +26,17 @@
     "jwt-decode": "^2.2.0",
     "less": "^3.9.0",
     "vue": "^2.6.9",
+    "vue-calendar-component": "^2.7.4",
+    "vue-full-calendar": "^2.7.0",
     "vue-fullcalendar": "^1.0.9",
     "vue-infinite-loading": "^2.4.3",
     "vue-router": "^3.0.2",
     "vue-scroll": "^2.1.9",
-    "vue-server-renderer": "^2.6.9",
-    "vue-template-compiler": "^2.6.9",
     "vue-video-player": "^5.0.2",
     "vuex": "^3.1.0",
-    "vuex-router-sync": "^5.0.0"
+    "vuex-router-sync": "^5.0.0",
+    "vue-jlunar-datepicker": "^2.3.0",
+    "vue-lunar-full-calendar": "^1.2.2"
   },
   "devDependencies": {
     "@babel/core": "^7.2.2",
@@ -57,9 +59,19 @@
     "@fortawesome/free-solid-svg-icons": "^5.7.0",
     "@fortawesome/vue-fontawesome": "^0.1.5",
     "aspnet-webpack": "^3.0.0",
+    "autoprefixer": "^7.1.2",
+    "babel-core": "^6.22.1",
     "babel-eslint": "^10.0.1",
+    "babel-helper-vue-jsx-merge-props": "^2.0.3",
     "babel-loader": "^8.0.5",
     "babel-plugin-import": "^1.11.0",
+    "babel-plugin-syntax-jsx": "^6.18.0",
+    "babel-plugin-transform-runtime": "^6.22.0",
+    "babel-plugin-transform-vue-jsx": "^3.5.0",
+    "babel-preset-env": "^1.3.2",
+    "babel-preset-stage-2": "^6.22.0",
+    "chalk": "^2.0.1",
+    "copy-webpack-plugin": "^4.0.1",
     "cross-env": "^5.2.0",
     "css-loader": "^2.1.1",
     "eslint": "^5.15.2",
@@ -70,20 +82,39 @@
     "eslint-plugin-promise": "^4.0.1",
     "eslint-plugin-standard": "^4.0.0",
     "event-source-polyfill": "^1.0.5",
+    "extract-text-webpack-plugin": "^3.0.0",
     "file-loader": "^3.0.1",
     "font-awesome": "^4.7.0",
+    "friendly-errors-webpack-plugin": "^1.6.1",
+    "html-webpack-plugin": "^2.30.1",
     "less-loader": "^4.1.0",
     "mini-css-extract-plugin": "^0.5.0",
+    "node-notifier": "^5.1.2",
     "node-sass": "^4.12.0",
     "optimize-css-assets-webpack-plugin": "^5.0.1",
+    "ora": "^1.2.0",
+    "portfinder": "^1.0.13",
+    "postcss-import": "^11.0.0",
+    "postcss-loader": "^2.0.8",
+    "postcss-url": "^7.2.1",
+    "rimraf": "^2.6.0",
     "sass-loader": "^7.1.0",
+    "semver": "^5.3.0",
+    "shelljs": "^0.7.6",
     "style-loader": "^0.23.1",
+    "uglifyjs-webpack-plugin": "^1.1.1",
     "url-loader": "^1.1.2",
     "vue-i18n": "^8.9.0",
     "vue-loader": "^15.7.0",
+    "vue-server-renderer": "^2.6.9",
+    "vue-style-loader": "^3.1.2",
+    "vue-template-compiler": "^2.6.9",
+    "vue-template-loader": "^1.0.0",
     "webpack": "^4.29.0",
+    "webpack-bundle-analyzer": "^2.9.0",
     "webpack-cli": "^3.3.0",
     "webpack-dev-server": "^3.1.14",
-    "webpack-hot-middleware": "^2.21.2"
+    "webpack-hot-middleware": "^2.21.2",
+    "webpack-merge": "^4.1.0"
   }
 }

+ 14 - 2
TEAMModelOS.SmartClass/webpack.config.js

@@ -41,8 +41,20 @@ module.exports = () => {
     },
     module: {
       rules: [
-        { test: /\.vue$/, include: /ClientApp/, use: 'vue-loader' },
-        { test: /\.js$/, include: /ClientApp/, use: 'babel-loader' },
+        {
+          test: /\.vue$/, use: 'vue-loader', include: [
+            //path.resolve(__dirname, '/ClientApp/'),
+            //path.resolve(__dirname, '/node_modules/'),
+            path.resolve(__dirname, '/')
+          ]
+        },
+        {
+          test: /\.js$/, use: 'babel-loader', include: [
+            //path.resolve(__dirname, '/ClientApp/'),
+            //path.resolve(__dirname, '/node_modules/'),
+            path.resolve(__dirname, '/')
+          ]
+        },
         { test: /\.css$/, use: isDevBuild ? ['style-loader', 'css-loader'] : [MiniCssExtractPlugin.loader, 'css-loader'] },
         { test: /\.(png|jpg|jpeg|gif|svg)$/, use: 'url-loader?limit=25000' },
         { test: /\.(eot|ttf|woff|woff2)$/, loader: 'file-loader' },

+ 16 - 3
TEAMModelOS.SmartClass/webpack.config.vendor.js

@@ -2,7 +2,7 @@ const path = require('path')
 const webpack = require('webpack')
 const MiniCssExtractPlugin = require('mini-css-extract-plugin')
 const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
-
+const VueLoaderPlugin = require('vue-loader/lib/plugin')
 module.exports = () => {
   // console.log('Building vendor files for \x1b[33m%s\x1b[0m', process.env.NODE_ENV)
 
@@ -20,8 +20,20 @@ module.exports = () => {
     },
     module: {
       rules: [
-        { test: /\.vue$/, include: /ClientApp/, use: 'vue-loader' },
-        { test: /\.js$/, include: /ClientApp/, use: 'babel-loader' },
+        {
+          test: /\.vue$/, use: 'vue-loader', include: [
+            //path.resolve(__dirname, '/ClientApp/'),
+            //path.resolve(__dirname, '/node_modules/'),
+            path.resolve(__dirname, '/')
+          ]
+        },
+        {
+          test: /\.js$/, use: 'babel-loader', include: [
+            //path.resolve(__dirname, '/ClientApp/'),
+            //path.resolve(__dirname, '/node_modules/'),
+            path.resolve(__dirname, '/')
+          ]
+        },
         { test: /\.css$/, use: isDevBuild ? ['style-loader', 'css-loader'] : [MiniCssExtractPlugin.loader, 'css-loader'] },
         { test: /\.(png|jpg|jpeg|gif|svg)$/, use: 'url-loader?limit=25000' },
         { test: /\.(eot|ttf|woff|woff2)$/, loader: 'file-loader' },
@@ -38,6 +50,7 @@ module.exports = () => {
       library: '[name]_[hash]'
     },
     plugins: [
+      new VueLoaderPlugin(),
       extractCSS,
       new OptimizeCSSPlugin({
         cssProcessorOptions: {

+ 229 - 229
TEAMModelOS.SmartTeach/ClientApp/api/api.js

@@ -1,229 +1,229 @@
-import { fetch, post } from '@/filters/http'
-export default {
-  //获取登录跳转链接
-  getLoginLink: function (data) {
-     return post('api/login/login', data);
-  },
-  //验证登录
-  checkLogin: function (data) {
-     return post('api/login/CheckLogin', data);
-  },
-  //获取登录人员角色列表
-  getLoginRoles: function (data) {
-    return post('api/role/GetLoginRoles', data);
-  },
-  //查找地区对应学校列表
-  getSchoolList: function (data) {
-    return post('api/School/getSchool', data);
-  },
-  //根据当前登录用户获取已授权的AI智慧学校
-  getAuthSchool: function (data) {
-    return post('api/School/AuthorizedAISchool', data);
-  },
-  //获取全部科目
-  FindSubjectsByDict: function (data) {
-    return post('api/subject/FindSubjectsByDict', data);
-  },
-  //获取当前学校全部科目
-  FindSchoolSubjectsByDict: function (data) {
-    return post('api/subject/FindSchoolSubjectsByDict', data);
-  },
-  //获取当前学校全部册别
-  FindSchoolVolumesByDict: function (data) {
-    return post('api/volume/FindSchoolVolumesByDict', data);
-  },
-  //获取当前学校全部学段
-  FindSchoolPeriodsByDict: function (data) {
-    return post('api/period/FindSchoolPeriodsByDict', data);
-  },
-  //获取当前学校全部年级
-  FindSchoolGradesByDict: function (data) {
-    return post('api/grade/FindSchoolGradesByDict', data);
-  },
-  //获取当前学校全部学期
-  FindSchoolTermsByDict: function (data) {
-    return post('api/term/FindSchoolTermsByDict', data);
-  },
-  //保存或更新学校科目
-  SaveOrUpdateSchoolSubject: function (data) {
-    return post('api/subject/SaveOrUpdateSchoolSubject', data);
-  },
-  //保存或更新学校册别
-  SaveOrUpdateSchoolVolume: function (data) {
-    return post('api/volume/SaveOrUpdateSchoolVolume', data);
-  },
-  //根据册别及其他条件获取课纲树形结构
-  FindSyllabusByVolumeCode: function (data) {
-    return post('api/syllabus/FindSyllabusByVolumeCode', data);
-  },
-  //保存单个课纲节点
-  SaveOrUpdateSingleNode: function (data) {
-    return post('api/Syllabus/SaveOrUpdate', data);
-  },
-
-
-
-
-
-  //获取登录人员身份信息
-  getLoginClaim: function (data) {
-    return post('api/role/GetLoginClaim', data);
-  },
-
-
-
-
-
-
-
-
-
-
-
-  //学情分析API
-  //查询班年级数据
-  FindGrade: function () {
-    return fetch('/api/class/getGrade?identity=Grade');
-  },
-  //查询学年期数据
-  FindTerm: function () {
-    return fetch('/api/class/getTerm?identity=term');
-  },
-  //查询考试情况
-  FindExam: function () {
-    return fetch('/api/class/getExam?identity=Exam');
-  },
-  //查询基础数据
-  FindBasics: function () {
-    return fetch('/api/class/getBase?identity=Base');
-  },
-  //查询各校成绩排名(堆叠柱状图)
-  FindBargraph: function () {
-    return fetch('/api/class/getExam?identity=EcharsZ');
-  },
-  //查询各项科目表现(雷达图)
-  FindRadargraph: function () {
-    return fetch('/api/class/getExam?identity=EcharsL');
-  },
-  //查询科目表现对比(饼图)
-  FindSubjectsManifestation: function () {
-    return fetch('/api/class/getExam?identity=EcharsY');
-  },
-  //查询历次总分统计表(折线图)
-  FindLinechart: function () {
-    return fetch('/api/class/getExam?identity=EcharsZx');
-  },
-  //查询考试类型
-  FindExamtype: function () {
-    return fetch('/api/class/getExam?identity=ExamType');
-  },
-
-
-  //动态数据
-  //关注年级变化数据
-  FindSelectGrade:function() {
-    return fetch('/api/class/getChange?identity=Changegrade');
-  },
- //关注学年期变化数据
-  FindSelectTerm: function () {
-    return fetch('/api/class/getChangeterm?identity=Changeterm');
-  },
-  //点击某次考试详情 变化数据
-   FindSelectExam: function () {
-     return fetch('/api/class/getChangeExam?identity=Changeexam');
-  },
-  //筛选考试类型 变化数据
-  FindSelectExamType: function () {
-    return fetch('/api/class/getChangeExamType?identity=Changeexamtype');
-  },
-  //显示文科数据  变化数据
-  FindSelectArts: function () {
-    return fetch('/api/class/getChangeArts?identity=Changarts');
-  },
-  //显示理科数据  变化数据
-  FindSelectScience: function () {
-    return fetch('/api/class/getChangeScience?identity=Changscience');
-  },
-  //点击柱状图 赋值到雷达图
-  //成都七中
-  Findcdqz: function () {
-    return fetch('/api/class/getExam?identity=cdqz');
-  },
-  //成都四中
-  Findcdsz: function () {
-    return fetch('/api/class/getExam?identity=cdsz');
-  },
-  //成都九中
-  Findcdjz: function () {
-    return fetch('/api/class/getExam?identity=cdjz')
-  },
-  //成都树德
-  Findcdsd: function () {
-    return fetch('/api/class/getExam?identity=cdsd')
-  },
-  //师大一中
-  Findsdyz: function () {
-    return fetch('/api/class/getExam?identity=sdyz')
-  },
-  //西川中学
-  Findxczx: function () {
-    return fetch('/api/class/getExam?identity=xczx');
-  },
-  //石室中学
-  Findsszx: function () {
-    return fetch('/api/class/getExam?identity=sszx');
-  },
-
-  //任教老师页面
-  //查询关注学年期
-  FindTeachTerm: function () {
-    return fetch('/api/class/getTerm?identity=Teachterm');
-  },
-  //查询数据对比
-  FindTeachContrast: function () {
-    return fetch('/api/class/getTerm?identity=Teachcontrast');
-  },
-  //查询考试信息
-  FindTeachExam: function () {
-    return fetch('/api/class/getExam?identity=TeachExam');
-  },
-  //查询基础数据
-  FindTeachBasics: function () {
-    return fetch('/api/class/getTerm?identity=TeachBase');
-  },
-  //查询各班平均分数排名(柱状图)
-  FindTeachbargraph: function () {
-    return fetch('/api/class/getExam?identity=TeachEcharsZ');
-  },
-  //查询及格率比较
-  FindTeachAnnulus: function () {
-    return fetch('/api/class/getExam?identity=TeachAnnulus');
-  },
-  //查询历次总分统计图
-  FindTeachHistory: function () {
-    return fetch('/api/class/getExam?identity=TeachEcharsZx');
-  },
-  //查询PR值
-  FindTeachPR: function () {
-    return fetch('/api/class/getExam?identity=TeachPie');
-  },
-
-
-  //动态数据
-  //选择关注学年期
-  FindDynamicTerm: function () {
-    return fetch('/api/class/getExam?identity=TeachChangeterm');
-  },
-  //选择数据比较
-  FindDatacompare: function () {
-    return fetch('/api/class/getExam?identity=TeachChangeDatacompare');
-  },
-  //选择考试数据
-  FindClickExam: function () {
-    return fetch('/api/class/getExam?identity=TeachChangeExam');
-  },
-  //点击班级 联动 RP值
-  FindClickPR: function () {
-    return fetch('/api/class/getExam?identity=TeachClickPR');
-  },
-}
+//import { fetch, post } from '@/filters/http'
+//export default {
+//  //获取登录跳转链接
+//  getLoginLink: function (data) {
+//     return post('api/login/login', data);
+//  },
+//  //验证登录
+//  checkLogin: function (data) {
+//     return post('api/login/CheckLogin', data);
+//  },
+//  //获取登录人员角色列表
+//  getLoginRoles: function (data) {
+//    return post('api/role/GetLoginRoles', data);
+//  },
+//  //查找地区对应学校列表
+//  getSchoolList: function (data) {
+//    return post('api/School/getSchool', data);
+//  },
+//  //根据当前登录用户获取已授权的AI智慧学校
+//  getAuthSchool: function (data) {
+//    return post('api/School/AuthorizedAISchool', data);
+//  },
+//  //获取全部科目
+//  FindSubjectsByDict: function (data) {
+//    return post('api/subject/FindSubjectsByDict', data);
+//  },
+//  //获取当前学校全部科目
+//  FindSchoolSubjectsByDict: function (data) {
+//    return post('api/subject/FindSchoolSubjectsByDict', data);
+//  },
+//  //获取当前学校全部册别
+//  FindSchoolVolumesByDict: function (data) {
+//    return post('api/volume/FindSchoolVolumesByDict', data);
+//  },
+//  //获取当前学校全部学段
+//  FindSchoolPeriodsByDict: function (data) {
+//    return post('api/period/FindSchoolPeriodsByDict', data);
+//  },
+//  //获取当前学校全部年级
+//  FindSchoolGradesByDict: function (data) {
+//    return post('api/grade/FindSchoolGradesByDict', data);
+//  },
+//  //获取当前学校全部学期
+//  FindSchoolTermsByDict: function (data) {
+//    return post('api/term/FindSchoolTermsByDict', data);
+//  },
+//  //保存或更新学校科目
+//  SaveOrUpdateSchoolSubject: function (data) {
+//    return post('api/subject/SaveOrUpdateSchoolSubject', data);
+//  },
+//  //保存或更新学校册别
+//  SaveOrUpdateSchoolVolume: function (data) {
+//    return post('api/volume/SaveOrUpdateSchoolVolume', data);
+//  },
+//  //根据册别及其他条件获取课纲树形结构
+//  FindSyllabusByVolumeCode: function (data) {
+//    return post('api/syllabus/FindSyllabusByVolumeCode', data);
+//  },
+//  //保存单个课纲节点
+//  SaveOrUpdateSingleNode: function (data) {
+//    return post('api/Syllabus/SaveOrUpdate', data);
+//  },
+
+
+
+
+
+//  //获取登录人员身份信息
+//  getLoginClaim: function (data) {
+//    return post('api/role/GetLoginClaim', data);
+//  },
+
+
+
+
+
+
+
+
+
+
+
+//  //学情分析API
+//  //查询班年级数据
+//  FindGrade: function () {
+//    return fetch('/api/class/getGrade?identity=Grade');
+//  },
+//  //查询学年期数据
+//  FindTerm: function () {
+//    return fetch('/api/class/getTerm?identity=term');
+//  },
+//  //查询考试情况
+//  FindExam: function () {
+//    return fetch('/api/class/getExam?identity=Exam');
+//  },
+//  //查询基础数据
+//  FindBasics: function () {
+//    return fetch('/api/class/getBase?identity=Base');
+//  },
+//  //查询各校成绩排名(堆叠柱状图)
+//  FindBargraph: function () {
+//    return fetch('/api/class/getExam?identity=EcharsZ');
+//  },
+//  //查询各项科目表现(雷达图)
+//  FindRadargraph: function () {
+//    return fetch('/api/class/getExam?identity=EcharsL');
+//  },
+//  //查询科目表现对比(饼图)
+//  FindSubjectsManifestation: function () {
+//    return fetch('/api/class/getExam?identity=EcharsY');
+//  },
+//  //查询历次总分统计表(折线图)
+//  FindLinechart: function () {
+//    return fetch('/api/class/getExam?identity=EcharsZx');
+//  },
+//  //查询考试类型
+//  FindExamtype: function () {
+//    return fetch('/api/class/getExam?identity=ExamType');
+//  },
+
+
+//  //动态数据
+//  //关注年级变化数据
+//  FindSelectGrade:function() {
+//    return fetch('/api/class/getChange?identity=Changegrade');
+//  },
+// //关注学年期变化数据
+//  FindSelectTerm: function () {
+//    return fetch('/api/class/getChangeterm?identity=Changeterm');
+//  },
+//  //点击某次考试详情 变化数据
+//   FindSelectExam: function () {
+//     return fetch('/api/class/getChangeExam?identity=Changeexam');
+//  },
+//  //筛选考试类型 变化数据
+//  FindSelectExamType: function () {
+//    return fetch('/api/class/getChangeExamType?identity=Changeexamtype');
+//  },
+//  //显示文科数据  变化数据
+//  FindSelectArts: function () {
+//    return fetch('/api/class/getChangeArts?identity=Changarts');
+//  },
+//  //显示理科数据  变化数据
+//  FindSelectScience: function () {
+//    return fetch('/api/class/getChangeScience?identity=Changscience');
+//  },
+//  //点击柱状图 赋值到雷达图
+//  //成都七中
+//  Findcdqz: function () {
+//    return fetch('/api/class/getExam?identity=cdqz');
+//  },
+//  //成都四中
+//  Findcdsz: function () {
+//    return fetch('/api/class/getExam?identity=cdsz');
+//  },
+//  //成都九中
+//  Findcdjz: function () {
+//    return fetch('/api/class/getExam?identity=cdjz')
+//  },
+//  //成都树德
+//  Findcdsd: function () {
+//    return fetch('/api/class/getExam?identity=cdsd')
+//  },
+//  //师大一中
+//  Findsdyz: function () {
+//    return fetch('/api/class/getExam?identity=sdyz')
+//  },
+//  //西川中学
+//  Findxczx: function () {
+//    return fetch('/api/class/getExam?identity=xczx');
+//  },
+//  //石室中学
+//  Findsszx: function () {
+//    return fetch('/api/class/getExam?identity=sszx');
+//  },
+
+//  //任教老师页面
+//  //查询关注学年期
+//  FindTeachTerm: function () {
+//    return fetch('/api/class/getTerm?identity=Teachterm');
+//  },
+//  //查询数据对比
+//  FindTeachContrast: function () {
+//    return fetch('/api/class/getTerm?identity=Teachcontrast');
+//  },
+//  //查询考试信息
+//  FindTeachExam: function () {
+//    return fetch('/api/class/getExam?identity=TeachExam');
+//  },
+//  //查询基础数据
+//  FindTeachBasics: function () {
+//    return fetch('/api/class/getTerm?identity=TeachBase');
+//  },
+//  //查询各班平均分数排名(柱状图)
+//  FindTeachbargraph: function () {
+//    return fetch('/api/class/getExam?identity=TeachEcharsZ');
+//  },
+//  //查询及格率比较
+//  FindTeachAnnulus: function () {
+//    return fetch('/api/class/getExam?identity=TeachAnnulus');
+//  },
+//  //查询历次总分统计图
+//  FindTeachHistory: function () {
+//    return fetch('/api/class/getExam?identity=TeachEcharsZx');
+//  },
+//  //查询PR值
+//  FindTeachPR: function () {
+//    return fetch('/api/class/getExam?identity=TeachPie');
+//  },
+
+
+//  //动态数据
+//  //选择关注学年期
+//  FindDynamicTerm: function () {
+//    return fetch('/api/class/getExam?identity=TeachChangeterm');
+//  },
+//  //选择数据比较
+//  FindDatacompare: function () {
+//    return fetch('/api/class/getExam?identity=TeachChangeDatacompare');
+//  },
+//  //选择考试数据
+//  FindClickExam: function () {
+//    return fetch('/api/class/getExam?identity=TeachChangeExam');
+//  },
+//  //点击班级 联动 RP值
+//  FindClickPR: function () {
+//    return fetch('/api/class/getExam?identity=TeachClickPR');
+//  },
+//}

+ 2 - 12
TEAMModelOS.SmartTeach/ClientApp/app.js

@@ -11,7 +11,7 @@ import commons from "@/utils/public.js";
 import apiTools from '@/api/api.js';
 import { fetch, post } from '@/filters/http.js';
 import VideoPlayer from 'vue-video-player';
-import jwtDecode from 'jwt-decode';
+//import jwtDecode from 'jwt-decode';
 import animate from 'animate.css'
 require('video.js/dist/video-js.css');
 require('vue-video-player/src/custom-theme.css');
@@ -27,7 +27,7 @@ Vue.prototype.$post = post;
 Vue.prototype.$get = fetch;
 
 
-Vue.prototype.$jwtDecode = jwtDecode;
+//Vue.prototype.$jwtDecode = jwtDecode;
 
 Vue.use(vuescroll)
 Vue.use(animate)
@@ -39,16 +39,6 @@ Vue.prototype.common = commons;
 // Registration of global components
 Vue.component('icon', FontAwesomeIcon);
 
-//使用钩子函数对路由进行权限跳转
-//router.beforeEach((to, from, next) => {
-//const role = localStorage.getItem('token');
-//  if (!role && to.path !== '/') {
-//    next('/');
-//  } else {
-//    next();
-//  }
-//})
-//Vue.prototype.$http = axios
 
 Vue.use(iView, {
   i18n: (key, value) => i18n.t(key, value)

BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/activity_bg_ico01.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/activity_centerimg.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/arrow_top.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/banner-t.jpg


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/blackboard.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/book.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/books.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/choose_icon.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/document_01.jpg


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/document_02.jpg


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/document_03.jpg


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/document_04.jpg


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/guider2.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/guider2_bg2.gif


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/login_bg.jpg


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/login_pwd.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/login_switchover.gif


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/login_user.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/low_search_icon.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/more.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/more_ico.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/ni_bg_ico01.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/ni_search_ico.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/partner_bg.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/people.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/ppt_small.jpg


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/qjf_star.gif


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/qjf_star_r.gif


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/rank_ico.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/right.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/search.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/source.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/star_1.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/star_2.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/teach.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/teach01.jpg


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/teach02.jpg


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/teach03.jpg


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/teach04.jpg


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/touxiang_01.jpeg


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/touxiang_02.jpeg


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/touxiang_03.jpg


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/touxiang_04.jpg


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/touxiang_05.jpg


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/touxiang_06.jpg


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/touxiang_07.jpg


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/touxiang_08.jpg


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/tuxiang_06.jpg


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/user.gif


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/videoListBtn2.png


BIN
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/video_icon.jpg


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 20 - 24
TEAMModelOS.SmartTeach/ClientApp/common/footer.vue


+ 22 - 18
TEAMModelOS.SmartTeach/ClientApp/common/headers.vue

@@ -1,16 +1,17 @@
 <template>
-  <div class="header_box">
-    <div class="header_left">
-      <img src="https://css.huijiaoyun.com/tianyu_edu/area/888888/images/logo/logo.png?v=0818"  class="logo_img"/>
-      <div class="header_list">
-        <ul>
-          <a href=""><li v-for="items in navlist" class="nav_name">{{items.name}}</li></a>
-        </ul>
+  <div style="width:100%;border-bottom: #f1f1f1 solid 1px;">
+    <div class="header_box">
+      <div class="header_left">
+        <img src="https://css.huijiaoyun.com/tianyu_edu/area/888888/images/logo/logo.png?v=0818" class="logo_img" />
+        <div class="header_list">
+          <ul>
+            <li v-for="items in navlist" class="nav_name"><a :href="items.url" style="color:#555;">{{items.name}}</a></li>
+          </ul>
+        </div>
+      </div>
+      <div class="header_right">
+        <div class="helper"><button>教学助手</button></div>
       </div>
-    </div>
-    <div class="header_right">
-      <div class="login_btn"><button>登录</button></div>
-      <div class="helper"><button>教学助手</button></div>
     </div>
   </div>
 </template>
@@ -20,20 +21,21 @@
       return {
         navlist: [
           { "id": 1, "name": '首页', "url": '' },
-          { "id": 2, "name": '资源', "url": '' },
+          { "id": 2, "name": '资源', "url": '/resource' },
           { "id": 3, "name": '名师', "url": '' },
-          { "id": 4, "name": '活动', "url": '' },
+          { "id": 4, "name": '活动', "url": '/activity' },
         ],
       }
     } 
   }
 </script>
-<style>
+<style scoped>
   .header_box {
     width: 1200px;
     height: 85px;
-    background-color:#fff;
-    margin:0 auto;
+    background-color: #fff;
+    margin: 0 auto;
+    
   }
   .header_left {
     width: 800px;
@@ -41,9 +43,11 @@
     height: 75px;
   }
   .header_right {
-    width: 400px;;
+    width: 200px;
     float: left;
     height: 75px;
+    padding-left:7%;
+    padding-top:5px;
   }
   .logo_img {
     float: left;
@@ -86,7 +90,7 @@
       font-size:18px;
     }
   .helper {
-    width: 30%;
+    width: 100%;
     display: block;
     float: left;
     padding-top:22px;

+ 103 - 0
TEAMModelOS.SmartTeach/ClientApp/components/resource/TeachActivies.vue

@@ -0,0 +1,103 @@
+<template>
+  <div class="home">
+    <div class="title">
+      <Icon type="ios-home-outline" size="22" />
+      <p><router-link to="/TeacherZone/ZonesHome">工作室首页</router-link></p><span>>活动列表</span>
+    </div>
+    <div class="list-info">
+      <h1 class="list-title">活动列表</h1>
+      <Tabs class="list" value="name1">
+        <TabPane label="全部" name="name1">暂无活动</TabPane>
+        <TabPane label="未开始" name="name2">暂无活动</TabPane>
+        <TabPane label="进行中" name="name3">暂无活动</TabPane>
+        <TabPane label="已结束" name="name4">暂无活动</TabPane>
+      </Tabs>
+    </div>
+    <div class="content-info">
+      <h1 class="list-title">最新活动</h1>
+      <p>暂无活动</p>
+    </div>
+  </div>
+</template>
+<script>
+  export default {
+    data() {
+      return {
+
+      }
+    },
+    methods: {
+      viewDetails() {
+        this.$router.push({ path: '/TeacherZone/TeachDetails' })
+
+      },
+      chooseTab() {
+        this.info = this.data;
+      }
+    }
+  }
+</script>
+<style scoped>
+  .home {
+    width: 66%;
+    height: 500px;
+    position: absolute;
+    top: 70%;
+    left: 53%;
+    transform: translate(-50%,-50%);
+    float: left;
+    display: inline-flex;
+  }
+
+  .title {
+    font-size: 16px;
+    text-align: left;
+    font-weight: 600;
+    width: 300px;
+  }
+
+    .title p {
+      display: inline;
+    }
+
+  .list-info {
+    margin-top: 35px;
+    width: 50%;
+    background: #fff;
+    /* float: left; */
+    margin-left: -24%;
+    height: 200px;
+    border: 1px solid #ededed;
+  }
+
+  .list-title {
+    float: left;
+    height: 57px;
+    line-height: 57px;
+    font-size: 20px;
+    margin-left: 10px;
+    color: #288add;
+    border-bottom: 1px solid #288add;
+  }
+
+  .list {
+    margin-top: 10%;
+    margin-left: 1%;
+    font-size: 15px;
+  }
+
+  .content-info {
+    width: 25%;
+    height: 200px;
+    border: 1px solid #ededed;
+    margin-top: 3%;
+    margin-left: 4%;
+    background-color: #ffffff;
+  }
+
+    .content-info p {
+      margin-top: 25%;
+      font-size: 15px;
+      margin-left: 10px;
+    }
+</style>

+ 104 - 0
TEAMModelOS.SmartTeach/ClientApp/components/resource/TeachClass.vue

@@ -0,0 +1,104 @@
+
+<template>
+  <div class="home">
+    <div class="title">
+      <Icon type="ios-home-outline" size="22" />
+      <p><router-link to="/TeacherZone/ZonesHome">工作室首页</router-link></p><span>>评课列表</span>
+    </div>
+    <div class="list-info">
+      <h1 class="list-title">网上评课</h1>
+      <Tabs class="list" value="name1">
+        <TabPane label="全部" name="name1">暂无数据</TabPane>
+        <TabPane label="进行中2" name="name2">暂无数据</TabPane>
+        <TabPane label="未开始" name="name3">暂无数据</TabPane>
+        <TabPane label="已结束" name="name4">暂无数据</TabPane>
+      </Tabs>
+    </div>
+    <div class="content-info">
+      <h1 class="list-title">最新评课</h1>
+      <p>暂无数据</p>
+    </div>
+  </div>
+</template>
+<script>
+  export default {
+    data() {
+      return {
+
+      }
+    },
+    methods: {
+      viewDetails() {
+        this.$router.push({ path: '/TeacherZone/TeachDetails' })
+
+      },
+      chooseTab() {
+        this.info = this.data;
+      }
+    }
+  }
+</script>
+<style scoped>
+  .home {
+    width: 66%;
+    height: 500px;
+    position: absolute;
+    top: 70%;
+    left: 53%;
+    transform: translate(-50%,-50%);
+    float: left;
+    display: inline-flex;
+  }
+
+  .title {
+    font-size: 16px;
+    text-align: left;
+    font-weight: 600;
+    width: 300px;
+  }
+
+    .title p {
+      display: inline;
+    }
+
+  .list-info {
+    margin-top: 35px;
+    width: 50%;
+    background: #fff;
+    /* float: left; */
+    margin-left: -24%;
+    height: 200px;
+    border: 1px solid #ededed;
+  }
+
+  .list-title {
+    float: left;
+    height: 57px;
+    line-height: 57px;
+    font-size: 20px;
+    margin-left: 10px;
+    color: #288add;
+    border-bottom: 1px solid #288add;
+  }
+
+  .list {
+    margin-top: 10%;
+    margin-left: 1%;
+    font-size: 15px;
+  }
+
+  .content-info {
+    width: 25%;
+    height: 200px;
+    border: 1px solid #ededed;
+    margin-top: 3%;
+    margin-left: 4%;
+    background-color: #ffffff;
+  }
+
+    .content-info p {
+      margin-top: 25%;
+      font-size: 15px;
+      margin-left: 10px;
+    }
+</style>

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 182 - 0
TEAMModelOS.SmartTeach/ClientApp/components/resource/TeachDetails.vue


+ 103 - 0
TEAMModelOS.SmartTeach/ClientApp/components/resource/TeachResearch.vue

@@ -0,0 +1,103 @@
+<template>
+  <div class="home">
+    <div class="title">
+      <Icon type="ios-home-outline" size="22" />
+      <p><router-link to="/TeacherZone/ZonesHome">工作室首页</router-link></p><span>>课题研究列表</span>
+    </div>
+    <div class="list-info">
+      <h1 class="list-title">课题列表</h1>
+      <Tabs class="list" value="name1">
+        <TabPane label="不限" name="name1">暂时没有课题研究</TabPane>
+        <TabPane label="国家级" name="name2">暂时没有课题研究</TabPane>
+        <TabPane label="省级" name="name3">暂时没有课题研究</TabPane>
+        <TabPane label="市级" name="name4">暂时没有课题研究</TabPane>
+        <TabPane label="校级" name="name5">暂时没有课题研究</TabPane>
+      </Tabs>
+    </div>
+    <div class="content-info">
+      <h1 class="list-title">最新课题</h1>
+      <p>暂无课题</p>
+    </div>
+  </div>
+</template>
+<script>
+  export default {
+    data() {
+      return {
+
+      }
+    },
+    methods: {
+      viewDetails() {
+        this.$router.push({ path: '/TeacherZone/TeachDetails' })
+
+      },
+      chooseTab() {
+        this.info = this.data;
+      }
+    }
+  }
+</script>
+<style scoped>
+  .home {
+    width: 66%;
+    height: 500px;
+    position: absolute;
+    top: 70%;
+    left: 53%;
+    transform: translate(-50%,-50%);
+    float: left;
+    display: inline-flex;
+  }
+
+  .title {
+    font-size: 16px;
+    text-align: left;
+    font-weight: 600;
+    width:300px;
+  }
+
+    .title p {
+      display: inline;
+    }
+
+  .list-info {
+    margin-top: 35px;
+    width: 50%;
+    background: #fff;
+    /* float: left; */
+    margin-left: -24%;
+    height: 200px;
+    border: 1px solid #ededed;
+  }
+
+  .list-title {
+    float: left;
+    height: 57px;
+    line-height: 57px;
+    font-size: 20px;
+    margin-left:10px;
+    color: #288add;
+    border-bottom: 1px solid #288add;
+  }
+  .list{
+    margin-top:10%;
+    margin-left:1%;
+    font-size:15px;
+  }
+  .content-info {
+    width: 25%;
+    height: 200px;
+    border: 1px solid #ededed;
+    margin-top: 3%;
+    margin-left: 4%;
+    background-color: #ffffff;
+  }
+  .content-info p{
+    margin-top:25%;
+    font-size:15px;
+    margin-left:10px;
+  }
+
+
+</style>

+ 430 - 0
TEAMModelOS.SmartTeach/ClientApp/components/resource/TeachSource.vue

@@ -0,0 +1,430 @@
+<template>
+  <div class="home">
+    <div class="title">
+      <Icon type="ios-home-outline" size="22" />
+      <p><router-link to="/TeacherZone/ZonesHome">工作室首页</router-link></p><span>>资源列表</span>
+    </div>
+    <div class="list-info">
+      <h1 class="list-title">资源列表</h1>
+      <div class="list">
+        <Tree :data="data2" @on-select-change="chooseTab"></Tree>
+      </div>
+    </div>
+    <div class="content-info">
+      <h1 class="list-title">全部资源</h1>
+      <ul class="source-title" >
+        <li v-for="item in info">
+          <a class="titles">
+            <span class="doc">
+              {{item.title}}
+            </span>
+          </a>
+          <span class="style">ppt</span>
+          <span class="peo">
+            <a title="陈海波"   style="border:none">
+              {{item.name}}
+            </a>
+          </span>
+          <span class="date">{{item.data}}</span>
+          <p class="download"><Icon type="ios-cloud-download-outline "size="22"/></p>
+        </li>
+      </ul>
+    </div>
+  </div>
+</template>
+<script>
+  export default {
+    data() {
+      return {
+        data: [
+          {
+            title: '16-17版 第1部分 专题6 机械能守恒定律 功能关系',
+            name: '刘国元',
+            data: '2018-05-16',
+          },
+          {
+            title: '16-17版 第1部分 专题6 机械能守恒定律 功能关系',
+            name: '刘国元',
+            data: '2018-05-16',
+          },
+          {
+            title: '16-17版 第1部分 专题6 机械能守恒定律 功能关系',
+            name: '刘国元',
+            data: '2018-05-16',
+          },
+          {
+            title: '16-17版 第1部分 专题6 机械能守恒定律 功能关系',
+            name: '刘国元',
+            data: '2018-05-16',
+          },
+          {
+            title: '16-17版 第1部分 专题6 机械能守恒定律 功能关系',
+            name: '刘国元',
+            data: '2018-05-16',
+          },
+          {
+            title: '16-17版 第1部分 专题6 机械能守恒定律 功能关系',
+            name: '刘国元',
+            data: '2018-05-16',
+          },
+          {
+            title: '16-17版 第1部分 专题6 机械能守恒定律 功能关系',
+            name: '刘国元',
+            data: '2018-05-16',
+          },
+          {
+            title: '16-17版 第1部分 专题6 机械能守恒定律 功能关系',
+            name: '刘国元',
+            data: '2018-05-16',
+          },
+        ],
+        data2: [
+          {
+            title: '根目录',
+            expand: true,
+            children: [
+              {
+                title: '必修一',
+                expand: true,
+                render: (h, { root, node, data }) => {
+                  return h('span', {
+                    style: {
+                      display: 'inline-block',
+                      width: '40%'
+                    }
+                  }, [
+                      h('span', [
+                        h('Icon', {
+                          props: {
+                            type: 'md-folder-open',
+                            size:'15',
+                            color:'blue'
+                          },
+                          style: {
+                            marginRight: '8px',
+                            width: '20px',
+                          }
+                        }),
+                        h('span', data.title)
+                      ]),
+                    ]);
+                },
+                children: [
+                  {
+                    title: '教学学案'
+                  },
+                  {
+                    title: '教学资源'
+                  }
+                ]
+              },
+              {
+                title: '必修二',
+                expand: true,
+                render: (h, { root, node, data }) => {
+                  return h('span', {
+                    style: {
+                      display: 'inline-block',
+                      width: '40%'
+                    }
+                  }, [
+                      h('span', [
+                        h('Icon', {
+                          props: {
+                            type: 'md-folder-open',
+                            size: '15',
+                            color: 'blue'
+                          },
+                          style: {
+                            marginRight: '8px',
+                            width: '20px',
+                          }
+                        }),
+                        h('span', data.title)
+                      ]),
+                    ]);
+                },
+                children: [
+                  {
+                    title: '教学学案'
+                  },
+                  {
+                    title: '教学资源'
+                  }
+                ]
+              },
+              {
+                title: '必修三',
+                expand: true,
+                render: (h, { root, node, data }) => {
+                  return h('span', {
+                    style: {
+                      display: 'inline-block',
+                      width: '40%'
+                    }
+                  }, [
+                      h('span', [
+                        h('Icon', {
+                          props: {
+                            type: 'md-folder-open',
+                            size: '15',
+                            color: 'blue'
+                          },
+                          style: {
+                            marginRight: '8px',
+                            width: '20px',
+                          }
+                        }),
+                        h('span', data.title)
+                      ]),
+                    ]);
+                },
+                children: [
+                  {
+                    title: '教学学案'
+                  },
+                  {
+                    title: '教学资源'
+                  }
+                ]
+              },
+              {
+                title: '必修四',
+                expand: true,
+                render: (h, { root, node, data }) => {
+                  return h('span', {
+                    style: {
+                      display: 'inline-block',
+                      width: '40%'
+                    }
+                  }, [
+                      h('span', [
+                        h('Icon', {
+                          props: {
+                            type: 'md-folder-open',
+                            size: '15',
+                            color: 'blue'
+                          },
+                          style: {
+                            marginRight: '8px',
+                            width: '20px',
+                          }
+                        }),
+                        h('span', data.title)
+                      ]),
+                    ]);
+                },
+                children: [
+                  {
+                    title: '教学学案'
+                  },
+                  {
+                    title: '教学资源'
+                  }
+                ]
+              },
+              {
+                title: '必修五',
+                expand: true,
+                render: (h, { root, node, data }) => {
+                  return h('span', {
+                    style: {
+                      display: 'inline-block',
+                      width: '40%'
+                    }
+                  }, [
+                      h('span', [
+                        h('Icon', {
+                          props: {
+                            type: 'md-folder-open',
+                            size: '15',
+                            color: 'blue'
+                          },
+                          style: {
+                            marginRight: '8px',
+                            width: '20px',
+                          }
+                        }),
+                        h('span', data.title)
+                      ]),
+                    ]);
+                },
+                children: [
+                  {
+                    title: '教学学案'
+                  },
+                  {
+                    title: '教学资源'
+                  }
+                ]
+              },
+            ]
+          }
+        ],
+        info: [
+          {
+            title: '高中物理高效课堂应重视培养学生的创新意识',
+            name: '张一啊',
+            data: '2018-02-26',
+            num: '25',
+          },
+          {
+            title: '高中物理高效课堂应重视培养学生的创新意识',
+            name: '张一啊',
+            data: '2018-02-26',
+            num: '25',
+          },
+          {
+            title: '高中物理高效课堂应重视培养学生的创新意识',
+            name: '张一啊',
+            data: '2018-02-26',
+            num: '25',
+          },
+          {
+            title: '高中物理高效课堂应重视培养学生的创新意识',
+            name: '张一啊',
+            data: '2018-02-26',
+            num: '25',
+          },
+          {
+            title: '高中物理高效课堂应重视培养学生的创新意识',
+            name: '张一啊',
+            data: '2018-02-26',
+            num: '25',
+          },
+          {
+            title: '高中物理高效课堂应重视培养学生的创新意识',
+            name: '张一啊',
+            data: '2018-02-26',
+            num: '25',
+          },
+          {
+            title: '高中物理高效课堂应重视培养学生的创新意识',
+            name: '张一啊',
+            data: '2018-02-26',
+            num: '25',
+          },
+          {
+            title: '高中物理高效课堂应重视培养学生的创新意识',
+            name: '张一啊',
+            data: '2018-02-26',
+            num: '25',
+          },
+
+        ]
+      }
+    },
+    methods: {
+      viewDetails() {
+        this.$router.push({ path: '/TeacherZone/TeachDetails' })
+
+      },
+      chooseTab() {
+        this.info = this.data;
+      }
+    }
+  }
+</script>
+<style scoped>
+  .home {
+    width: 65%;
+    height: 500px;
+    position: absolute;
+    top: 69%;
+    left: 53%;
+    transform: translate(-50%,-50%);
+    float:left;
+    display:inline-flex;
+  }
+
+  .title {
+    font-size: 16px;
+    text-align: left;
+    font-weight: 600;
+  }
+
+    .title p {
+      display: inline;
+    }
+  .list-info {
+    margin-top: 35px;
+    width: 260px;
+    background: #fff;
+    /* float: left; */
+    margin-left: -16%;
+    height: 600px;
+    border: 1px solid #ededed;
+  }
+  .list-title {
+    float: left;
+    height: 57px;
+    line-height: 57px;
+    font-size: 20px;
+    color: #288add;
+    border-bottom: 1px solid #288add;
+  }
+  .list{
+    width:80%;
+    height:400px;
+    float:left;
+    margin-left:20px;
+    overflow:scroll;
+  }
+  .list >>> .ivu-tree ul li {
+    text-align: left;
+    margin-left: -10px;
+    font-size: 14px;
+    font-weight: 600;
+  }
+  .content-info {
+    width: 75%;
+    height: 800px;
+    border: 1px solid #ededed;
+    margin-top: 3%;
+    margin-left: 4%;
+    background-color:#ffffff;
+    /* float: right; */
+    /* display: inline; */
+    overflow:scroll;
+  }
+  .source-title{
+    margin-top:10%;
+  }
+  .source-title  li{
+    display: block;
+    line-height: 56px;
+    height: 56px;
+    margin-left:20px;
+    border-bottom: 1px dashed #dfdfdf;
+  }
+  .source-title  li:hover {
+    background-color: #f7f7f7;
+    text-decoration: none;
+  }
+  .doc {
+    font-size: 14px;
+    background: url(../../assets/image/resource/ppt_small.jpg) no-repeat left center;
+    padding: 3px 0 3px 23px;
+  }
+    
+    .source-title .style {
+      margin-left: 30px;
+      font-size: 15px;
+    }
+    .source-title .peo {
+      border: none;
+      margin-left: 30px;
+      font-size: 15px;
+    }
+    .source-title .date {
+      margin-left: 50px;
+      font-size: 16px;
+    }
+    .source-title .download {
+      font-size: 16px;
+      display: inline;
+      /* width: 50px; */
+      margin-left: 100px;
+    }
+
+</style>

+ 276 - 0
TEAMModelOS.SmartTeach/ClientApp/components/resource/TeachTopclass.vue

@@ -0,0 +1,276 @@
+
+<template>
+  <div class="home">
+    <div class="title">
+      <Icon type="ios-home-outline" size="22" />
+      <p><router-link to="/TeacherZone/ZonesHome">工作室首页</router-link></p><span>>名师课堂</span>
+    </div>
+    <div class="list-info">
+      <h1 class="list-title">最新课例</h1>
+      <div class="video">
+        <div class="video_box">
+          <div class="video_list">
+            <div class="video_left">
+              <img src="../../assets/image/resource/teach01.jpg" />
+              <a target="_blank" href="/videodetails" class="playbtn1"></a>
+              <h4 class="name">
+                <a target="_blank" href="" style="color:#fff">选修3-1第二章恒定电流,电源和电流</a>
+              </h4>
+            </div>
+            <ul class="video_right">
+              <li class="video_more_list" v-for="item in video_list">
+                <img :src="item.imgurl" />
+                <a target="_blank" :href="item.url" class="playbtn1"></a>
+                <h4 class="name_more">
+                  <a target="_blank" :href="item.url" style="color:#fff">{{item.slogan}}</a>
+                </h4>
+              </li>
+            </ul>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div class="list-infos">
+      <h1 class="list-title">微课课例</h1>
+      <div class="video">
+        <div class="video_box">
+          <div class="video_list">
+            <ul class="video_rights">
+              <li class="video_more_list" v-for="item in video_lists">
+                <img :src="item.imgurl" />
+                <a target="_blank" :href="item.url" class="playbtn1"></a>
+                <h4 class="name_more">
+                  <a target="_blank" :href="item.url" style="color:#fff">{{item.slogan}}</a>
+                </h4>
+              </li>
+            </ul>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+  export default {
+    data() {
+      return {
+        video_list: [
+          { "id": 1, "imgurl": require("../../assets/image/resource/teach03.jpg"), "slogan": '选修3-1第二章恒定电流,电流的微观解析', "url": '/videodetails?id=1' },
+          { "id": 2, "imgurl": require("../../assets/image/resource/teach01.jpg"), "slogan": '选修3-1第二章恒定电流,电流的微观解析', "url": '/videodetails?id=2' },
+          { "id": 3, "imgurl": require("../../assets/image/resource/teach02.jpg"), "slogan": '选修3-1第二章恒定电流,电流的微观解析', "url": '/videodetails?id=3' },
+          { "id": 4, "imgurl": require("../../assets/image/resource/teach04.jpg"), "slogan": '选修3-1第二章恒定电流,电流的微观解析', "url": '/videodetails?id=4' },
+        ],
+        video_lists: [
+          { "id": 1, "imgurl": require("../../assets/image/resource/teach03.jpg"), "slogan": '选修3-1第二章恒定电流,电流的微观解析', "url": '/videodetails?id=1' },
+          { "id": 2, "imgurl": require("../../assets/image/resource/teach01.jpg"), "slogan": '选修3-1第二章恒定电流,电流的微观解析', "url": '/videodetails?id=2' },
+          { "id": 3, "imgurl": require("../../assets/image/resource/teach02.jpg"), "slogan": '选修3-1第二章恒定电流,电流的微观解析', "url": '/videodetails?id=3' },
+          { "id": 4, "imgurl": require("../../assets/image/resource/teach04.jpg"), "slogan": '选修3-1第二章恒定电流,电流的微观解析', "url": '/videodetails?id=4' },
+
+        ],
+      }
+    },
+    methods: {
+      viewDetails() {
+        this.$router.push({ path: '/TeacherZone/TeachDetails' })
+
+      },
+      chooseTab() {
+        this.info = this.data;
+      }
+    }
+  }
+</script>
+<style scoped>
+  .home {
+    width: 66%;
+    height: 500px;
+    position: absolute;
+    top: 70%;
+    left: 53%;
+    transform: translate(-50%,-50%);
+    float: left;
+    /*display: inline-flex;*/
+  }
+
+  .title {
+    font-size: 16px;
+    text-align: left;
+    font-weight: 600;
+    width: 300px;
+  }
+
+    .title p {
+      display: inline;
+    }
+
+  .list-info {
+    margin-top: 35px;
+    width: 90%;
+    background: #fff;
+    /* float: left; */
+    /*margin-left: -24%;*/
+    height: 450px;
+    border: 1px solid #ededed;
+  }
+  .list-infos {
+    margin-top: 35px;
+    width: 90%;
+    background: #fff;
+    height: 500px;
+    border: 1px solid #ededed;
+  }
+
+  .list-title {
+    float: left;
+    height: 57px;
+    line-height: 57px;
+    font-size: 20px;
+    margin-left: 10px;
+    color: #288add;
+    border-bottom: 1px solid #288add;
+  }
+  .video {
+    margin-top: 7%;
+    /* float: left; */
+    /* display: inline; */
+    background-color: #f3f3f3;
+  }
+
+  .video_box {
+    background-color: #fff;
+    margin: 0 auto;
+    margin-top: 20px;
+  }
+ .video_name {
+    float: left;
+    line-height: 39px;
+    border-bottom: #288add solid 1px;
+    padding: 12px 5px 0px 5px;
+    font-size: 24px;
+    font-weight: normal;
+    color: #288add;
+  }
+
+  /*i {
+    float: left;
+    margin: 22px 0px 0px 8px;
+    height: 20px;
+    line-height: 20px;
+    border-radius: 10px;
+    background: #8ea9b9;
+    font-size: 14px;
+    padding: 0px 10px;
+    color: #fff;
+  }*/
+
+  .video_select {
+    width: 30%;
+    float: left;
+    list-style: none;
+    border-bottom: #ececec solid 1px;
+  }
+
+  .select_name {
+    float: left;
+    width: 15%;
+    line-height: 39px;
+    padding: 12px 5px 0px 5px;
+    font-size: 14px;
+    color: #6f8abb;
+  }
+
+  .select_name_more {
+    float: left;
+    width: 15%;
+    padding: 0px 5px 0px 5px;
+  }
+
+  .video_list {
+    width: 100%;
+    /* float: left; */
+    padding: 1.5%;
+    display: flex;
+  }
+
+  .video_left {
+    width: 50%;
+    float: left;
+    position: relative;
+  }
+
+    .video_left img {
+      width: 100%;
+    }
+
+    .video_left:hover .playbtn1 {
+      display: block;
+    }
+
+  .video_more_list:hover .playbtn1 {
+    display: block;
+  }
+
+  .playbtn1 {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    background: url(../../assets/image/resource/play.png) no-repeat;
+    width: 64px;
+    height: 64px;
+    margin-top: -32px;
+    margin-left: -32px;
+    display: none;
+  }
+
+  .name {
+    position: absolute;
+    bottom: 5px;
+    left: 0px;
+    width: 100%;
+    font-weight: normal;
+    line-height: 45px;
+    font-size: 16px;
+    background-color: rgba(52, 52, 52, .5);
+    color: #fff;
+  }
+
+  .name_more {
+    position: absolute;
+    bottom: 0px;
+    left: 0px;
+    width: 100%;
+    font-weight: normal;
+    line-height: 35px;
+    font-size: 14px;
+    background-color: rgba(52, 52, 52, .5);
+    color: #fff;
+  }
+
+  .video_right {
+    width: 48%;
+    float: left;
+    list-style: none;
+    margin-left: 2%;
+  }
+  .video_rights {
+    width: 48%;
+    float: left;
+    list-style: none;
+    margin-left: 2%;
+    display: contents;
+  }
+
+  .video_more_list {
+    width: 48%;
+    float: left;
+    position: relative;
+    height: 170px;
+    margin-top: 12px;
+    margin: 0.5% 1%;
+  }
+
+    .video_more_list img {
+      width: 100%;
+      height: 170px;
+    }
+</style>

+ 102 - 0
TEAMModelOS.SmartTeach/ClientApp/components/resource/TeachTopic.vue

@@ -0,0 +1,102 @@
+<template>
+  <div class="home">
+    <div class="title">
+      <Icon type="ios-home-outline" size="22" />
+      <p><router-link to="/TeacherZone/ZonesHome">工作室首页</router-link></p><span>>话题列表</span>
+    </div>
+    <div class="list-info">
+      <h1 class="list-title">话题列表</h1>
+      <Tabs class="list" value="name1">
+        <TabPane label="不限" name="name1">暂无话题</TabPane>
+        <TabPane label="进行中" name="name2">暂无话题</TabPane>
+        <TabPane label="已结束" name="name3">暂无话题</TabPane>
+      </Tabs>
+    </div>
+    <div class="content-info">
+      <h1 class="list-title">最新话题</h1>
+      <p>暂无话题</p>
+    </div>
+  </div>
+</template>
+<script>
+  export default {
+    data() {
+      return {
+
+      }
+    },
+    methods: {
+      viewDetails() {
+        this.$router.push({ path: '/TeacherZone/TeachDetails' })
+
+      },
+      chooseTab() {
+        this.info = this.data;
+      }
+    }
+  }
+</script>
+<style scoped>
+  .home {
+    width: 66%;
+    height: 500px;
+    position: absolute;
+    top: 70%;
+    left: 53%;
+    transform: translate(-50%,-50%);
+    float: left;
+    display: inline-flex;
+  }
+
+  .title {
+    font-size: 16px;
+    text-align: left;
+    font-weight: 600;
+    width: 300px;
+  }
+
+    .title p {
+      display: inline;
+    }
+
+  .list-info {
+    margin-top: 35px;
+    width: 50%;
+    background: #fff;
+    /* float: left; */
+    margin-left: -24%;
+    height: 200px;
+    border: 1px solid #ededed;
+  }
+
+  .list-title {
+    float: left;
+    height: 57px;
+    line-height: 57px;
+    font-size: 20px;
+    margin-left: 10px;
+    color: #288add;
+    border-bottom: 1px solid #288add;
+  }
+
+  .list {
+    margin-top: 10%;
+    margin-left: 1%;
+    font-size: 15px;
+  }
+
+  .content-info {
+    width: 25%;
+    height: 200px;
+    border: 1px solid #ededed;
+    margin-top: 3%;
+    margin-left: 4%;
+    background-color: #ffffff;
+  }
+
+    .content-info p {
+      margin-top: 25%;
+      font-size: 15px;
+      margin-left: 10px;
+    }
+</style>

+ 236 - 0
TEAMModelOS.SmartTeach/ClientApp/components/resource/TeacherWork.vue

@@ -0,0 +1,236 @@
+<template>
+  <div class="home">
+    <div class="title">
+      <Icon type="ios-home-outline" size="22" />
+      <p><router-link to="/TeacherZone/ZonesHome">工作室首页</router-link></p><span>>学科文章</span>
+    </div>
+    <div class="content-info">
+      <Tabs type="card" size="default" :animated="false">
+        <TabPane label="默认栏目" icon="logo-apple">
+          <div class="info">
+            <ul class="first">
+              <li  v-for="item in info">
+                <p @click="viewDetails">
+                  <span class="title" title="高中物理高效课堂应重视培养学生的创新意识">
+                    {{item.title}}
+                  </span>
+                  <span class="user">{{item.name}}</span>
+                  <span class="date">{{item.data}}</span>
+                  <span>浏览{{item.num}}</span>
+                </p>
+              </li>
+            </ul>
+
+          </div>
+        </TabPane>
+        <TabPane label="保健安康" icon="ios-text-outline">
+          <div class="info">
+            <ul class="first" >
+              <li v-for="item in info">
+                <p @click="viewDetails">
+                  <span class="title" title="高中物理高效课堂应重视培养学生的创新意识">
+                    {{item.title}}
+                  </span>
+                  <span class="user">{{item.name}}</span>
+                  <span class="date">{{item.data}}</span>
+                  <span>浏览{{item.num}}</span>
+                </p>
+              </li>
+            </ul>
+
+          </div>
+        </TabPane>
+        <TabPane label="工作室相册" icon="ios-text-outline">
+          <div class="info">
+            <ul class="first" >
+              <li v-for="item in info">
+                <p @click="viewDetails">
+                  <span class="title" title="高中物理高效课堂应重视培养学生的创新意识">
+                    {{item.title}}
+                  </span>
+                  <span class="user">{{item.name}}</span>
+                  <span class="date">{{item.data}}</span>
+                  <span>浏览{{item.num}}</span>
+                </p>
+              </li>
+            </ul>
+
+          </div>
+        </TabPane>
+        <TabPane label="工作室建设" icon="ios-text-outline">
+          <div class="info">
+            <ul class="first">
+              <li  v-for="item in info">
+                <p @click="viewDetails">
+                  <span class="title" title="高中物理高效课堂应重视培养学生的创新意识">
+                    {{item.title}}
+                  </span>
+                  <span class="user">{{item.name}}</span>
+                  <span class="date">{{item.data}}</span>
+                  <span>浏览{{item.num}}</span>
+                </p>
+              </li>
+            </ul>
+
+          </div>
+        </TabPane>
+        <TabPane label="班主任工作" icon="ios-text-outline">
+          <div class="info">
+            <ul class="first" >
+              <li v-for="item in info">
+                <p @click="viewDetails">
+                  <span class="title" title="高中物理高效课堂应重视培养学生的创新意识">
+                    {{item.title}}
+                  </span>
+                  <span class="user">{{item.name}}</span>
+                  <span class="date">{{item.data}}</span>
+                  <span>浏览{{item.num}}</span>
+                </p>
+              </li>
+            </ul>
+
+          </div>
+        </TabPane>
+      </Tabs>
+    </div>
+  </div>
+</template>
+<script>
+  export default {
+    data() {
+      return {
+        info: [
+          {
+            title: '高中物理高效课堂应重视培养学生的创新意识',
+            name: '张一啊',
+            data: '2018-02-26',
+            num: '25',
+          },
+          {
+            title: '高中物理高效课堂应重视培养学生的创新意识',
+            name: '张一啊',
+            data: '2018-02-26',
+            num: '25',
+          },
+          {
+            title: '高中物理高效课堂应重视培养学生的创新意识',
+            name: '张一啊',
+            data: '2018-02-26',
+            num: '25',
+          },
+          {
+            title: '高中物理高效课堂应重视培养学生的创新意识',
+            name: '张一啊',
+            data: '2018-02-26',
+            num: '25',
+          },
+          {
+            title: '高中物理高效课堂应重视培养学生的创新意识',
+            name: '张一啊',
+            data: '2018-02-26',
+            num: '25',
+          },
+          {
+            title: '高中物理高效课堂应重视培养学生的创新意识',
+            name: '张一啊',
+            data: '2018-02-26',
+            num: '25',
+          },
+          {
+            title: '高中物理高效课堂应重视培养学生的创新意识',
+            name: '张一啊',
+            data: '2018-02-26',
+            num: '25',
+          },
+          {
+            title: '高中物理高效课堂应重视培养学生的创新意识',
+            name: '张一啊',
+            data: '2018-02-26',
+            num: '25',
+          },
+
+        ]
+      }
+    },
+    methods: {
+      viewDetails() {
+        this.$router.push({ path: '/TeacherZone/TeachDetails' })
+
+      }
+    }
+  }
+</script>
+<style scoped>
+  .home {
+    width: 59%;
+    height: 500px;
+    position: absolute;
+    top: 69%;
+    left: 50%;
+    transform: translate(-50%,-50%);
+    text-align: center;
+  }
+
+  .title {
+    font-size: 16px;
+    text-align: left;
+    font-weight: 600;
+  }
+
+    .title p {
+      display: inline;
+    }
+
+  .content-info {
+    margin-top: 10px;
+  }
+
+  .info {
+    width: 100%;
+    height: 400px;
+    border: 1px solid #666;
+    background-color: #ffffff;
+    overflow: scroll;
+  }
+
+    .info .first {
+      padding-right: 20px;
+    }
+
+  .mgt20 {
+    margin-top: 20px;
+  }
+
+  .info ul {
+    list-style: none;
+  }
+
+  .info li p {
+    display: block;
+    height: 50px;
+    border-bottom: 1px dashed #dfdfdf;
+    padding-left: 10px;
+  }
+
+  .first p:hover {
+    background: #f7f7f7;
+    text-decoration: none;
+    cursor: pointer;
+  }
+
+  .first span {
+    display: inline-block;
+    color: #555;
+    /* text-align: left; */
+    line-height: 60px;
+    width: 440px;
+  }
+
+  .first .user {
+    width: 75px;
+  }
+
+  .first .date {
+    width: 105px;
+  }
+</style>

+ 91 - 0
TEAMModelOS.SmartTeach/ClientApp/components/resource/TeacherZones.vue

@@ -0,0 +1,91 @@
+<template>
+  <div class="zone">
+    <div class="banner">
+      <div class="w1200">
+        <p>李朝华高中物理名师网络工作室</p>
+      </div>
+    </div>
+    <div class="item-nav">
+      <div class="w1200">
+        <ul class="nav-li">
+          <li><router-link to="/TeacherZone/ZonesHome">首页</router-link></li>
+          <li><router-link to="/TeacherZone/TeacherWork">教学文章</router-link></li>
+          <li><router-link to="/TeacherZone/TeachSource">教学资源</router-link></li>
+          <li><router-link to="/TeacherZone/TeachResearch">课题研究</router-link></li>
+          <li><router-link to="/TeacherZone/TeachTopclass">名师课堂</router-link></li>
+          <li><router-link to="/TeacherZone/TeachClass">网上评课</router-link></li>
+          <li><router-link to="/TeacherZone/TeachActivies">教研活动</router-link></li>
+          <li><router-link to="/TeacherZone/TeachTopic">话题研讨</router-link></li>
+        </ul>
+      </div>
+    </div>
+    <div class="content">
+      <router-view></router-view>
+    </div>
+  </div>
+</template>
+<script>
+  export default {
+    data() {
+      return {
+
+      }
+    }
+  }
+</script>
+<style scoped>
+
+  .zone {
+    width: 100%;
+  }
+
+  .banner {
+    height: 340px;
+    background: url('../../assets/image/resource/banner-t.jpg') center center no-repeat;
+  }
+
+  .w1200 {
+    width: 1200px;
+    margin: 0 auto;
+  }
+
+  .banner p {
+    position: absolute;
+    left: 30px;
+    top: 15px;
+    color: #fff;
+    font-size: 50px;
+  }
+
+  .item-nav {
+    background: #0099ff;
+    height: 60px;
+    line-height: 60px;
+  }
+
+  .nav-li {
+    float: left;
+    list-style: none;
+  }
+
+    .nav-li li {
+      float: left;
+      position: relative;
+    }
+
+  .item-nav a {
+    font-size: 16px;
+    line-height: 60px;
+    height: 60px;
+    width: 120px;
+    display: block;
+    text-align: center;
+    color: #fff;
+  }
+  .content{
+    width:100%;
+    height:1200px;
+    /*max-height:1200px;*/
+    background-color:#f9f9f9;
+  }
+</style>

+ 655 - 0
TEAMModelOS.SmartTeach/ClientApp/components/resource/ZonesHome.vue

@@ -0,0 +1,655 @@
+<template>
+  <div class="zone">
+      <div class="left-side">
+        <div class="brife">
+          <div class="my-brief ">
+            <div class="brief_header">
+              <em class="fl">工作室简介</em><a class="more fr"></a>
+            </div>
+            <div class="brief_con ">
+              <div class="peo_info ">
+                <span class="ava">
+                  <img src="../../assets/image/resource/touxiang_01.jpeg" alt="">
+                </span>
+                <div class="info">
+                  <h1 title="李朝华">李朝华</h1>
+                  <p class="sub c555">高中物理</p>
+                </div>
+              </div>
+              <div class="source_info">
+                <ul>
+                  <li><span>322</span><p>成员</p></li>
+                  <li><span>17949</span><p>资源</p></li>
+                  <li><span>253</span><p>文章</p></li>
+                </ul>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div class="statistics" style="z-index: 98;">
+          <div class="ms_statistics">
+            <div class=" statistics_header"><p class="fl">统计</p></div>
+            <div class="statistics_con con_box">
+              <ul class="statistics_list">
+                <li class="icon_1 ">
+                  <i class="num">成员数</i><em class="c888">322</em>
+                </li>
+                <li class="icon_2 ">
+                  <i class="num">文章数</i><em class="c888">253</em>
+                </li>
+                <li class="icon_3 ">
+                  <i class="num">资源数</i><em class="c888">17949</em>
+                </li>
+                <li class="icon_4 ">
+                  <i class="num">课题研究数</i><em class="c888">0</em>
+                </li>
+                <li class="icon_5 ">
+                  <i class="num">名师课堂数</i><em class="c888">233</em>
+                </li>
+                <li class="icon_6 ">
+                  <i class="num">教研活动数</i><em class="c888">0</em>
+                </li>
+              </ul>
+            </div>
+          </div>
+        </div>
+    </div>
+      <div class="content">
+        <div class="top-part">
+          <div class="info-msg">
+            <p>工作室资讯</p><a></a><hr>
+            <ul>
+              <li><a>陈伟名师网络工作室活动暨职业教满结束</a><span>10-25</span></li>
+              <li><a>陈伟名师活动暨职业教育教材反馈会圆满结束</a><span>10-25</span></li>
+              <li><a>陈伟名师网络工作室活动暨职业教育教材反馈会圆满结束</a><span>10-25</span></li>
+              <li><a>陈伟名师网络工作室活教材反馈会圆满结束</a><span>10-25</span></li>
+              <li><a>陈伟名师网络工教育教材反馈会圆满结束</a><span>10-25</span></li>
+              <li><a>陈伟名师网络工作室教育教材反馈会圆满结束</a><span>10-25</span></li>
+              <li><a>陈伟名师网络工作室活动暨职业教会圆满结束</a><span>10-25</span></li>
+              <li><a>陈伟名师网络教育教材反馈会圆满结束</a><span>10-25</span></li>
+            </ul>
+          </div>
+          <div class="notice">
+            <p>公告</p><a></a><hr />
+            <ul>
+              <li><a>陈伟名师网束</a><span>10-25</span></li>
+              <li><a>陈伟名育教材反馈会圆满结束</a><span>10-25</span></li>
+              <li><a>陈伟名师馈会圆满结束</a><span>10-25</span></li>
+              <li><a>陈伟名师反馈会圆满结束</a><span>10-25</span></li>
+              <li><a>陈伟名师网馈会圆满结束</a><span>10-25</span></li>
+            </ul>
+          </div>
+        </div>
+        <div class="content-show">
+          <p><u>成果展示</u></p><a></a>
+        </div>
+        <div class="content-teach ">
+          <div class="ms_article bor_bg_pd">
+            <div class="header article_header"><em class="fl"><i>教师文章</i></em><a class="more fr"></a></div>
+            <div class="article_con clearfix">
+              <div class="theme_det clearfix">
+                <a href="javascript:;" title="高考物理考前指导:掌握技巧;科学应考"><img src="http://static.sinweiwx.com/tianyu_edu/common/images/teacherSky_4.0/teacher_img.jpg"></a>
+                <div class="theme_info ">
+                  <h3><a title="高考物理考前指导:掌握技巧;科学应考">高考物理考前指导:掌握技...</a></h3>
+                  <p class="tip f14 c888 mgt5">高考物理考前指导:掌握技巧;科学应考...</p>
+                  <p class="peo f14 c888 mgt10">
+                    <i>李朝华</i>12-01
+                  </p>
+                </div>
+              </div>
+              <ul class="item_list">
+                <li class="c888">
+                  <strong class="fr">
+                    9
+                  </strong>
+                  <a class="tit " title="高考前最后一根救命稻草! 文综/理综想提分? 此文绝不能错过!">
+                    励志鸡汤
+                  </a>
+                  <a class="tit_sour" title="高考前最后一根救命稻草! 文综/理综想提分? 此文绝不能错过!">
+                    高考前最后一根救命...
+                  </a><i>李朝华</i>
+                  11-02
+                </li>
+                <li class="c888">
+                  <strong class="fr">
+                    6
+                  </strong>
+                  <a class="tit " title="高中物理高效课堂应重视培养学生的创新意识">
+                    默认栏目
+                  </a>
+                  <a class="tit_sour" title="高中物理高效课堂应重视培养学生的创新意识">
+                    高中物理高效课堂应...
+                  </a><i>郑万国</i>
+                  07-24
+                </li>
+                <li class="c888">
+                  <strong class="fr">
+                    3
+                  </strong>
+                  <a class="tit " title="高中物理高效课堂应重视培养学生的创新意识">
+                    教研教改
+                  </a>
+                  <a class="tit_sour" title="高中物理高效课堂应重视培养学生的创新意识">
+                    高中物理高效课堂应...
+                  </a><i>郑万国</i>
+                  07-24
+                </li>
+                <li class="c888">
+                  <strong class="fr">
+                    5
+                  </strong>
+                  <a class="tit " title="浅谈高中物理教学中的情趣教学">
+                    教研教改
+                  </a>
+
+                  <a class="tit_sour" title="浅谈高中物理教学中的情趣教学">
+                    浅谈高中物理教学中...
+                  </a><i>郑万国</i>
+                  07-24
+                </li>
+                <li class="c888">
+                  <strong class="fr">
+                    4
+                  </strong>
+                  <a class="tit " title="优化高中物理课堂教学的原则与方法">
+                    默认栏目
+                  </a>
+                  <a class="tit_sour" title="优化高中物理课堂教学的原则与方法">
+                    优化高中物理课堂教...
+                  </a><i>陈永荣</i>
+                  07-04
+                </li>
+
+
+              </ul>
+
+            </div>
+          </div>
+          <div class="ms_res bor_bg_pd">
+            <div class="header res_header"><em class="fl"><i>教学资源</i></em><a class="more fr"></a></div>
+            <div class="res_con">
+              <div class="source_det clearfix">
+                <img src="http://static.sinweiwx.com/tianyu_edu/common/images/teacherSky_4.0/source_img.jpg">
+                <div class="source_info ">
+                  <h3><a href="/index.php?r=studio/resources/info&amp;sid=642&amp;resId=476990_MShunan">16-17版 第2部分 专题1 力...</a></h3>
+                </div>
+              </div>
+              <ul class=" source_list">
+                <li class="icon_1 ppt"><strong class="fr"></strong><a class="tit_sour">16-17版 第1部分 专题16 ...</a><i></i>12-20</li>
+                <li class="icon_1 ppt"><strong class="fr"></strong><a class="tit_sour">16-17版 第1部分 专题16 ...</a><i></i>12-20</li>
+                <li class="icon_1 ppt"><strong class="fr"></strong><a class="tit_sour">16-17版 第1部分 专题16 ...</a><i></i>12-20</li>
+                <li class="icon_1 ppt"><strong class="fr"></strong><a class="tit_sour">16-17版 第1部分 专题16 ...</a><i></i>12-20</li>
+                <li class="icon_1 ppt"><strong class="fr"></strong><a class="tit_sour">16-17版 第1部分 专题16 ...</a><i></i>12-20</li>
+              </ul>
+            </div>
+          </div>
+        </div>
+      </div>
+  </div>
+
+</template>
+<script>
+  export default {
+    data() {
+      return {
+
+      }
+    }
+  }
+</script>
+<style scoped>
+
+  .zone {
+    width: 100%;
+  }
+  .content-box{
+  }
+  .left-side {
+    width: 280px;
+    float: left;
+    margin-left: 22%;
+  }
+
+  .brife {
+    border: 2px solid #e0e0e0;
+    margin-top: 20px;
+  }
+
+  .my-brief {
+    padding: 15px 17px;
+    background: #fff;
+  }
+
+  .brief_header {
+    height: 40px;
+    line-height: 40px;
+    border-bottom: 1px solid #ebebeb;
+    padding-bottom: 1px;
+    font-size: 15px;
+    overflow: hidden;
+  }
+
+    .brief_header em {
+      font-size: 20px;
+      color: #222;
+      border-bottom: 2px solid #86c8ff;
+      padding: 0 5px;
+      font-weight: 900;
+    }
+
+    .brief_header a {
+      width: 20px;
+      height: 20px;
+      display: inline-block;
+      background: url(../../assets/image/resource/more.png) center center no-repeat;
+      margin-top: 10px;
+    }
+
+  .peo_info {
+    display: block;
+  }
+
+    .peo_info .ava {
+      margin-top: 27px;
+      position: relative;
+      margin-right: 15px;
+      margin-left: 20px;
+    }
+
+      .peo_info .ava img {
+        height: 90px;
+        width: 90px;
+        border-radius: 50%;
+        margin-top: 10%;
+      }
+
+  .info {
+    margin-top: -30%;
+    margin-left: 56%;
+  }
+
+    .info h1 {
+      color: #222;
+      font-size: 24px;
+    }
+
+    .info p {
+      color: #555;
+      font-size: 15px;
+      margin-top: 8px;
+      
+    }
+
+  .source_info {
+    margin-top: 30px;
+  }
+
+    .source_info li {
+      text-align: center;
+      width: 75px;
+      list-style: none;
+      display: inline-block;
+    }
+
+    .source_info span {
+      color: #4b4b4b;
+      font-size: 24px;
+      display: block;
+    }
+
+    .source_info p {
+      color: #9b9b9b;
+      font-size: 14px;
+      display: block;
+      margin-top: 5px;
+    }
+
+  .statistics {
+    border: 1px solid #e0e0e0;
+    padding: 15px 17px;
+    background: #fff;
+    margin-top: 20px;
+  }
+
+  .statistics_header {
+    height: 40px;
+    line-height: 40px;
+    border-bottom: 1px solid #ebebeb;
+    padding-bottom: 1px;
+    overflow: hidden;
+  }
+
+    .statistics_header p {
+      font-size: 20px;
+      color: #222;
+      border-bottom: 2px solid #86c8ff;
+      padding: 0 5px;
+    }
+
+  .statistics_list {
+    padding-bottom: 27px;
+    height: 560px;
+    list-style: none;
+    font-family: Roboto;
+  }
+
+    .statistics_list li {
+      height: 60px;
+      line-height: 60px;
+      padding-left: 55px;
+      border-bottom: 1px dashed #ebebeb;
+      font-size: 16px;
+      font-style: normal
+    }
+
+      .statistics_list li num {
+        width: 100px;
+        display: inline-block;
+      }
+
+      .statistics_list li em {
+        width: 60px;
+        display: inline-block;
+        text-align: right;
+        color: #888888;
+      }
+  .content {
+    width: 40%;
+    height: 800px;
+    margin-left: 2%;
+    margin-top: 1%;
+    float: left;
+  }
+  .top-part {
+    width: 100%;
+    height: 300px;
+    float: left;
+    display: flex;
+    background-color: #ffffff;
+    border: 1px solid #e0e0e0;
+  }
+  .info-msg{
+    width:60%;
+
+  }
+    .info-msg p {
+      font-size: 20px;
+      margin-top: 5px;
+      font-weight: 800;
+      margin-left:5px;
+    }
+    .info-msg ul{
+      list-style:none;
+      margin-top:10px;
+      margin-left:5px;
+    }
+    .info-msg li{
+      font-size:14px;
+      margin-top:5px;
+    }
+      .info-msg li a {
+        color: #4b4b4b;
+        font-family: 'Adobe Caslon Pro';
+      }
+    .info-msg li a:hover {
+      color:cornflowerblue;
+      text-decoration:underline;
+    }
+    .info-msg span{
+      float:right;
+    }
+  .notice{
+    width:35%;
+    display:inline;
+    margin-left:25px;
+  }
+    .notice p {
+      font-size: 20px;
+      margin-top: 5px;
+      font-weight:800;
+    }
+        .content-show a {
+      width: 20px;
+      height: 20px;
+      margin-left:81%;
+      display: inline-block;
+      background: url(../../assets/image/resource/more.png) center center no-repeat;
+      margin-top: 10px;
+    }
+    .notice ul {
+      list-style: none;
+      margin-top: 10px;
+      margin-left: 5px;
+    }
+
+    .notice li {
+      font-size: 14px;
+      margin-top: 15px;
+    }
+
+      .notice li a {
+        color: #4b4b4b;
+        font-family:'Adobe Caslon Pro';
+      }
+
+        .notice li a:hover {
+          color: cornflowerblue;
+          text-decoration: underline;
+        }
+
+    .notice span {
+      float: right;
+    }
+  .content-show {
+    width: 100%;
+    height: 200px;
+    margin-top:10px;
+    float: left;
+    display: flex;
+    background-color: #ffffff;
+    border: 1px solid #e0e0e0;
+  }
+    .content-show p {
+      font-size: 20px;
+      margin-top: 15px;
+      font-weight: 800;
+      margin-left: 15px;
+    }
+    .content-show p:hover {
+      color:cornflowerblue;
+    }
+    .content-show a {
+      width: 20px;
+      height: 20px;
+      margin-left:81%;
+      display: inline-block;
+      background: url(../../assets/image/resource/more.png) center center no-repeat;
+      margin-top: 10px;
+    }
+  .ms_article {
+    width: 405px;
+    height: 369px;
+    float: left;
+    border: 1px solid #e0e0e0;
+    padding: 15px 17px;
+    background: #fff;
+    margin-top: 20px;
+  }
+    .ms_article.header {
+      height: 40px;
+      line-height: 40px;
+      border-bottom: 1px solid #ebebeb;
+      padding-bottom: 1px;
+      overflow: hidden;
+    }
+      .ms_article .header em {
+        font-size: 20px;
+        color: #222;
+        border-bottom: 2px solid #86c8ff;
+        padding: 0 5px;
+        float: left;
+      }
+      .ms_article .header a.more {
+        width: 20px;
+        height: 20px;
+        display: inline-block;
+        background: url(../../assets/image/resource/more.png) center center no-repeat;
+      }
+  .theme_det {
+    padding-top: 12px;
+  }
+    .theme_det a {
+      text-decoration: none;
+      color: #288add;
+    }
+    .theme_det img {
+      float: left;
+      width: 150px;
+      height: 100px;
+      margin-left: -88px;
+      margin-top: 31px;
+      border: 1px solid #fff;
+    }
+  .theme_info {
+    margin-left: 14px;
+    margin-top: 35px;
+  }
+  .theme_info h3 a {
+    font-size: 16px;
+    color: #555;
+    font-weight: normal;
+  }  .theme_info h3 a:hover {
+
+    color: red;
+
+  }
+    .theme_info h3 {
+      color: #3d95d5;
+    }
+   
+  .c888 {
+    color: #888888;
+  }
+  .fr {
+    float: right;
+  }
+  .mgt5 {
+    margin-top: 5px;
+  }
+  .f14 {
+    font-size: 14px;
+  }
+  .theme_info .peo i {
+    color: #656565;
+    width: 78px;
+    display: inline-block;
+  }
+  .item_list {
+    padding-top: 23px;
+    list-style: none;
+  }
+    .item_list li {
+      height: 37px;
+      line-height: 37px;
+      font-size: 14px;
+    }
+      .item_list li strong {
+        font-size: 14px;
+        color: #888;
+        font-weight: normal;
+      }
+      .item_list li a.tit {
+        background: #53b5f6;
+        color: #fff;
+        padding: 0 3px;
+        margin-right: 7px;
+        width: 84px;
+        display: inline-block;
+        height: 20px;
+        line-height: 20px;
+      }
+      .item_list li a.tit_sour {
+        font-size: 14px;
+        color: #555;
+        width: 150px;
+        display: inline-block;
+        line-height: 16px;
+        vertical-align: middle;
+      }
+      .item_list li i {
+        width: 60px;
+        display: inline-block;
+        color: #656565;
+      }
+  .content-teach {
+    display: inline-flex;
+  }
+  .ms_res {
+    width: 350px;
+    height: 369px;
+    margin-left: 8px;
+    border: 1px solid #e0e0e0;
+    background: #fff;
+    margin-top: 20px;
+  }
+    .ms_res .header {
+      height: 40px;
+      line-height: 40px;
+      border-bottom: 1px solid #ebebeb;
+      padding-bottom: 1px;
+      overflow: hidden;
+    }
+      .ms_res .header em {
+        font-size: 20px;
+        color: #222;
+        border-bottom: 2px solid #86c8ff;
+        padding: 0 5px;
+      }
+    .ms_res a.more {
+      width: 20px;
+      height: 20px;
+      display: inline-block;
+      background: url(../../assets/image/resource/more.png) center center no-repeat;
+      margin-top: 10px;  
+    }
+  .source_det img {
+    float: left;
+    width: 150px;
+    height: 100px;
+    border: 1px solid #fff;
+    margin-left: 10px;
+    margin-top: 5px;
+  }
+  .source_det h3 a {
+    font-size: 16px;
+    color: #555;
+    font-weight: normal;
+  }
+
+  .source_list {
+    margin-top: 70px;
+    margin-left: 5px;
+  }
+
+    .source_list li {
+      height: 37px;
+      line-height: 37px;
+      font-size: 14px;
+      list-style: none;
+    }
+
+    .source_list li strong {
+      font-size: 14px;
+      color: #888;
+      font-weight: normal;
+    }
+
+  .source_list li a.tit_sour {
+    font-size: 14px;
+    color: #555;
+    width: 300px;
+    display: inline-block;
+    line-height: 16px;
+    vertical-align: middle;
+  }
+</style>

+ 0 - 0
TEAMModelOS.SmartTeach/ClientApp/components/resource/activitycommon.vue


Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác