psycho 6 年之前
父節點
當前提交
122a5511ff
共有 28 個文件被更改,包括 3009 次插入508 次删除
  1. 2 1
      TEAMModelOS.SmartClass/ClientApp/app.js
  2. 1802 0
      TEAMModelOS.SmartClass/ClientApp/static/lessonList - 复制.json
  3. 3 180
      TEAMModelOS.SmartClass/ClientApp/static/lessonList.json
  4. 78 29
      TEAMModelOS.SmartClass/ClientApp/view/smart-class/LiveBroadcast.vue
  5. 1 1
      TEAMModelOS.SmartClass/ClientApp/view/smart-class/LoginPage.vue
  6. 105 0
      TEAMModelOS.SmartClass/ClientApp/view/smart-class/calendar.vue
  7. 37 6
      TEAMModelOS.SmartClass/package.json
  8. 14 2
      TEAMModelOS.SmartClass/webpack.config.js
  9. 16 3
      TEAMModelOS.SmartClass/webpack.config.vendor.js
  10. 二進制
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/blackboard.png
  11. 二進制
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/book.png
  12. 二進制
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/books.png
  13. 二進制
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/login_bg.jpg
  14. 二進制
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/login_pwd.png
  15. 二進制
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/login_switchover.gif
  16. 二進制
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/login_user.png
  17. 二進制
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/more.png
  18. 二進制
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/people.png
  19. 二進制
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/source.png
  20. 二進制
      TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/teach.png
  21. 4 3
      TEAMModelOS.SmartTeach/ClientApp/common/headers.vue
  22. 29 248
      TEAMModelOS.SmartTeach/ClientApp/components/resource/TeacherZones.vue
  23. 654 0
      TEAMModelOS.SmartTeach/ClientApp/components/resource/ZonesHome.vue
  24. 1 1
      TEAMModelOS.SmartTeach/ClientApp/components/resource/teacherMap.vue
  25. 2 0
      TEAMModelOS.SmartTeach/ClientApp/router/routes.js
  26. 261 0
      TEAMModelOS.SmartTeach/ClientApp/view/resource/login.vue
  27. 0 34
      TEAMModelOS.SmartTeach/ClientApp/view/zone/index.vue
  28. 二進制
      TEAMModelOS.TeachZone/ClientApp/assets/image/refresh_hover.png

+ 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;

文件差異過大導致無法顯示
+ 1802 - 0
TEAMModelOS.SmartClass/ClientApp/static/lessonList - 复制.json


+ 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": "已结束",

+ 78 - 29
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>
@@ -18,21 +18,22 @@
       </div>
       <full-calendar :config="config"
                      :events="fcEvents"
-                     ref="calendar">
+                     ref="calendar"
+                     @dayClick="getDay">
       </full-calendar>
     </div>
   </div>
 </template>
 <script>
-  import FullCalendar  from 'vue-fullcalendar'
-  //import 'fullcalendar/dist/fullcalendar.css'
+  import { FullCalendar }  from 'vue-full-calendar'
+  import 'fullcalendar/dist/fullcalendar.css'
   export default {
     components: {
       FullCalendar
     },
     data() {
       return {
-        yearDefault:'2019年',
+        yearDefault: '2019年',
         years: [
           "2012年",
           "2013年",
@@ -62,34 +63,56 @@
           '11月',
           '12月',
         ],
+        _this:null,
         fcEvents: [
         ],
-       config: {
-        firstDay:'1',//以周日为每周的第一天
-        // 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'
-        },
-      },
-        lessonList:[]
+        config: {
+          firstDay: '7',//以周日为每周的第一天
+          // weekends: true,//是否在日历中显示周末
+          locale: 'zh-cn',//语言
+          defaultView: 'month',//默认按月显示
+          height: 'auto',//高度
+          fixedWeekCount: false,//是否固定显示六周
+          // weekMode:"liquid",//周数不定,每周的高度可变,整个日历高度不变
+          allDaySlot: false,
+          eventLimit: 7,
+          // allDay:true,
+          header: {//表头信息
+            left: 'prev, next, today',
+            center: 'title',
+            right: 'hide, custom'
+          },
+          dayClick: function getDay(day, jsEvent) {
+              alert(day);
+              console.log(day);
+              console.log(jsEvent);
+          },
+          eventClick:(day, jsEvent)=> {
+            this.$router.push(
+              {
+                path: 'lessonDetails'
+              }
+            );
+          },
+          //eventMouseover: function getDay(day, jsEvent) {
+          //  console.log(jsEvent);
+          //  console.log(day);
+          //},
+
+         },
+
+        lessonList: []
       }
     },
     methods: {
       getDay(day, jsEvent) {
+        alert(day);
         console.log(day);
         console.log(jsEvent);
       }
     },
     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);
@@ -101,32 +124,32 @@
         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,
+          title: '名称:' + this.lessonList[i].viwActivityTypeTip,
           start: sY + sM + sD,
           end: eY + eM + eD
         });
         this.fcEvents.push({
-          title:'学校:'+this.lessonList[i].schoolName,
+          title: '学校:' + this.lessonList[i].schoolName,
           start: sY + sM + sD,
           end: eY + eM + eD
         });
         this.fcEvents.push({
-          title:'主讲人:'+this.lessonList[i].employeeName,
+          title: '主讲人:' + this.lessonList[i].employeeName,
           start: sY + sM + sD,
           end: eY + eM + eD
         });
         this.fcEvents.push({
-          title:'学科:'+this.lessonList[i].parentCategoryName,
+          title: '学科:' + this.lessonList[i].parentCategoryName,
           start: sY + sM + sD,
           end: eY + eM + eD
         });
         this.fcEvents.push({
-          title:'课题:'+this.lessonList[i].parentProjectName,
+          title: '课题:' + this.lessonList[i].parentProjectName,
           start: sY + sM + sD,
           end: eY + eM + eD
         });
         this.fcEvents.push({
-          title:'时间:'+this.lessonList[i].timeRangeTipHHmm,
+          title: '时间:' + this.lessonList[i].timeRangeTipHHmm,
           start: sY + sM + sD,
           end: eY + eM + eD
         });
@@ -191,7 +214,33 @@
     /*.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-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;
+    }
    .condition-wrap {
     display:flex;
     flex-direction:row;

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

@@ -23,7 +23,7 @@
                 <Button @click="handleSubmit" type="primary" long>登录</Button>
               </FormItem>
             </Form>
-            <p class="login-tip">输入任意用户名和密码即可</p>
+            <!--<p class="login-tip">输入任意用户名和密码即可</p>-->
           </div>
         </Card>
       </div>

+ 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>

+ 37 - 6
TEAMModelOS.SmartClass/package.json

@@ -23,21 +23,22 @@
     "core-js": "^2.5.3",
     "echarts": "^4.2.1",
     "iview": "^3.3.3",
+    "jquery": "^3.3.1",
     "jwt-decode": "^2.2.0",
     "less": "^3.9.0",
+    "moment": "^2.23.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-loader": "^15.7.0",
     "vue-router": "^3.0.2",
     "vue-scroll": "^2.1.9",
-    "vue-server-renderer": "^2.6.9",
-    "vue-template-compiler": "^2.6.9",
-    "vue-template-loader": "^1.0.0",
     "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",
@@ -60,9 +61,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",
@@ -73,19 +84,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: {

二進制
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/blackboard.png


二進制
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/book.png


二進制
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/books.png


二進制
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/login_bg.jpg


二進制
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/login_pwd.png


二進制
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/login_switchover.gif


二進制
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/login_user.png


二進制
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/more.png


二進制
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/people.png


二進制
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/source.png


二進制
TEAMModelOS.SmartTeach/ClientApp/assets/image/resource/teach.png


+ 4 - 3
TEAMModelOS.SmartTeach/ClientApp/common/headers.vue

@@ -10,7 +10,6 @@
         </div>
       </div>
       <div class="header_right">
-        <div class="login_btn"><button>登录</button></div>
         <div class="helper"><button>教学助手</button></div>
       </div>
     </div>
@@ -44,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;
@@ -89,7 +90,7 @@
       font-size:18px;
     }
   .helper {
-    width: 30%;
+    width: 100%;
     display: block;
     float: left;
     padding-top:22px;

+ 29 - 248
TEAMModelOS.SmartTeach/ClientApp/components/resource/TeacherZones.vue

@@ -8,86 +8,31 @@
     <div class="item-nav">
       <div class="w1200">
         <ul class="nav-li">
-          <li><a href="/index.php?r=studio/index/index&amp;sid=642" class="stair">首页</a></li>
+          <li><router-link to="/TeacherZone/ZonesHome">首页</router-link></li>
           <li>
-            <a href="index.php?r=studio/resources&amp;sid=642" title="教学资源">教学资源</a>
+            <a  title="教学资源">教学资源</a>
           </li>
           <li>
-            <a href="index.php?r=studio/research/lists&amp;sid=642" title="课题研究">课题研究</a>
+            <a title="课题研究">课题研究</a>
           </li>
           <li>
-            <a href="index.php?r=studio/class/index&amp;sid=642" title="名师课堂">名师课堂</a>
+            <a title="名师课堂">名师课堂</a>
           </li>
           <li>
-            <a href="index.php?r=studio/classevaluation/index&amp;sid=642" title="网上评课">网上评课</a>
+            <a title="网上评课">网上评课</a>
           </li>
           <li>
-            <a href="/index.php?r=studio/activies/list&amp;sid=642&amp;cid=15674" title="教研活动">教研活动</a>
+            <a title="教研活动">教研活动</a>
           </li>
           <li>
-            <a href="index.php?r=studio/topic/index&amp;sid=642" title="话题研讨">话题研讨</a>
+            <a title="话题研讨">话题研讨</a>
           </li>
         </ul>
-
       </div>
     </div>
-    <div  class="content-box w1200">
-      <div class="left-side">
-        <div class="brife">
-          <div class="my-brief ">
-            <div class="brief_header">
-              <em class="fl">工作室简介</em><a href="/index.php?r=studio/intro/index&amp;sid=642" 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 f16">
-                  <i class="num">成员数</i><em class="c888">322</em>
-                </li>
-                <li class="icon_2 f16">
-                  <i class="num">文章数</i><em class="c888">253</em>
-                </li>
-                <li class="icon_3 f16">
-                  <i class="num">资源数</i><em class="c888">17949</em>
-                </li>
-                <li class="icon_4 f16">
-                  <i class="num">课题研究数</i><em class="c888">0</em>
-                </li>
-                <li class="icon_5 f16">
-                  <i class="num">名师课堂数</i><em class="c888">233</em>
-                </li>
-                <li class="icon_6 f16">
-                  <i class="num">教研活动数</i><em class="c888">0</em>
-                </li>
-
-              </ul>
-            </div>
-          </div>
-        </div>
-      </div>
-      </div>
+    <div class="content">
+      <router-view></router-view>
+    </div>
   </div>
 </template>
 <script>
@@ -100,17 +45,21 @@
   }
 </script>
 <style scoped>
-  .zone{
-    width:100%;
+
+  .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;
@@ -118,203 +67,35 @@
     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;
-  }
 
-  .left-side {
-    width: 280px;
-
-  }
-  .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;
-    overflow: hidden;
-  }
-    .brief_header em {
-      font-size: 20px;
-      color: #222;
-      border-bottom: 2px solid #86c8ff;
-      padding: 0 5px;
-    }
-    .brief_header.more {
-      width: 20px;
-      height: 20px;
-      display: inline-block;
-      margin-top: 10px;
-    }
-  .peo_info {
-    display: block;
-  
-  }
-    .peo_info .ava {
-      margin-top: 27px;
+    .nav-li li {
+      float: left;
       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%;
-    /* display: block; */
-    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;
-    background: url('../../assets/image/resource/right.png') right center no-repeat;
-    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;
-      font-style: normal
-    }
-  .statistics_list {
-    padding-bottom: 27px;
-    height: 560px;
-    list-style:none;
-  }
-  .icon_1 {
-    background-position: left 18px;
-    height: 60px;
-    line-height: 60px;
-    /*background: url(../../images/teacherSky_4.0/tj_icon.png) left 18px no-repeat;*/
-    padding-left: 55px;
-    border-bottom: 1px dashed #ebebeb;
-    font-size: 16px;
- 
-  }
-  .statistics_list li num {
-    width: 100px;
-    display: inline-block;
-    font-style: normal;
-  }
-  .statistics_list li em {
-    width: 60px;
-    display: inline-block;
-    text-align: right;
-    color: #888888;
-    font-style: normal;
-  }
-  .icon_2 {
-    background-position: left 18px;
-    height: 60px;
-    line-height: 60px;
-    /*background: url(../../images/teacherSky_4.0/tj_icon.png) left 18px no-repeat;*/
-    padding-left: 55px;
-    border-bottom: 1px dashed #ebebeb;
-    font-size: 16px;
-  }
-  .icon_3 {
-    background-position: left 18px;
-    height: 60px;
-    line-height: 60px;
-    /*background: url(../../images/teacherSky_4.0/tj_icon.png) left 18px no-repeat;*/
-    padding-left: 55px;
-    border-bottom: 1px dashed #ebebeb;
+  .item-nav a {
     font-size: 16px;
-  }
-  .icon_4 {
-    background-position: left 18px;
-    height: 60px;
     line-height: 60px;
-    /*background: url(../../images/teacherSky_4.0/tj_icon.png) left 18px no-repeat;*/
-    padding-left: 55px;
-    border-bottom: 1px dashed #ebebeb;
-    font-size: 16px;
-  }
-  .icon_5 {
-    background-position: left 18px;
     height: 60px;
-    line-height: 60px;
-    /*background: url(../../images/teacherSky_4.0/tj_icon.png) left 18px no-repeat;*/
-    padding-left: 55px;
-    border-bottom: 1px dashed #ebebeb;
-    font-size: 16px;
+    width: 120px;
+    display: block;
+    text-align: center;
+    color: #fff;
   }
-  .icon_6{
-    background-position: left 18px;
-    height: 60px;
-    line-height: 60px;
-    /*background: url(../../images/teacherSky_4.0/tj_icon.png) left 18px no-repeat;*/
-    padding-left: 55px;
-    border-bottom: 1px dashed #ebebeb;
-    font-size: 16px;
+  .content{
+    width:100%;
+    min-height:1000px;
+    background-color:#f9f9f9;
   }
 </style>

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

@@ -0,0 +1,654 @@
+<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;
+  }
+
+    .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>

+ 1 - 1
TEAMModelOS.SmartTeach/ClientApp/components/resource/teacherMap.vue

@@ -285,7 +285,7 @@
                 borderColor: '#81ADDC'
               },
               emphasis: {
-                areaColor: 'lightgreen'
+                areaColor: '#008DFF'
               }
             }
           },

+ 2 - 0
TEAMModelOS.SmartTeach/ClientApp/router/routes.js

@@ -12,6 +12,7 @@ import ActivityShow from '@/view/resource/activity_show.vue'
 import ActivityRank from '@/view/resource/activity_rank.vue'
 import ActivityCertificate from '@/view/resource/activity_certificate.vue'
 import ActivityDetails from '@/view/resource/activity_details.vue'
+import Login from '@/view/resource/login.vue'
 import HomePage from '@/view/resource/HomePage'
 import Teacher from '@/view/resource/Teacher'
 import TeacherZone from '@/view/resource/TeacherZone'
@@ -29,6 +30,7 @@ export const routes = [
   { name: 'ActivityRank', path: '/activityrank', component: ActivityRank },
   { name: 'ActivityCertificate', path: '/activitycertificate', component: ActivityCertificate },
   { name: 'ActivityDetails', path: '/activitydetails', component: ActivityDetails },
+  { name: 'Login', path: '/login', component: Login },
   { name: 'HomePage', path: '/HomePage', component: HomePage },
   { name: 'Teacher', path: '/Teacher', component: Teacher },
   { name: 'TeacherZone', path: '/TeacherZone', component: TeacherZone },

+ 261 - 0
TEAMModelOS.SmartTeach/ClientApp/view/resource/login.vue

@@ -0,0 +1,261 @@
+<template>
+  <div class="activity_container">
+    <Header></Header>
+    <Activitycommon></Activitycommon>
+    <div class="login">
+      <div class="login_box">
+        <div class="py_m_login" id="m_login">
+          <form id="artLogin" method="post" message_id="_user_login_tips" autocomplete="off">
+            <div class="item-newLogo-rect">
+              <a href="###" class="logoCaseTab" id="logoCaseTab"></a>
+              <div class="passWord-case dis_none" name="LoginRect" style="display: block;">
+                <h4>空间登录</h4>
+                <div id="_user_login_tips" class="err-tips" style="display: none;"><em class="close fr"></em><i class="ico"></i><k></k></div>
+                <ul class="inputlist clearfix">
+                  <li class="u_inputtext">
+                    <input type="text" id="info_username-1" name="account" tabindex="1" placeholder="用户名/邮箱/手机号">
+                  </li>
+                  <li class="u_inputpassword">
+                    <input type="password" id="info_password-1" name="pwd" tabindex="2" placeholder="请输入您的密码">
+                  </li>
+                </ul>
+                <div class="login_other_rect clearfix">
+                  <div class="rememberMe fl">
+                    <p class="fl"><span style="margin-right: 17px;"></span></p>自动登录
+                  </div>
+                  <input type="hidden" id="remember" name="remember" value="0">
+                  <p class="fr">
+                    <a href="" target="_top" style="color:#3c637c;">忘记密码?</a>
+                    <a href="" target="_top" style="color:#3c637c;">立即注册!</a>
+                  </p>
+                </div>
+                <input id="User_portal_login" type="button" value="立即登录" class="m_btn">
+              </div>
+              <!--扫码部分 start-->
+              <!--扫码部分 end-->
+            </div>
+          </form>
+        </div>
+      </div>
+    </div>
+    <Footer></Footer>
+  </div>
+</template>
+<script>
+import Header from '@/common/headers.vue'
+  import Footer from '@/common/footer.vue'
+  export default {
+    components: {
+      Header,
+      Footer,
+    },
+    data() {
+      return {
+
+      }
+    }
+  }
+</script>   
+<style scoped>
+  .login {
+    width:100%;
+    height:700px;
+    background:url(../../assets/image/resource/login_bg.jpg) no-repeat;
+    background-size:cover;
+  }
+  .login_box {
+    width:1200px;
+    height:700px;
+    margin:0 auto;
+    position:relative;
+  }
+  .py_m_login {
+    width: 412px;
+    height: 376px;
+    overflow: hidden;
+    zoom: 1;
+    background: rgba(230,245,255,.8);
+  }
+  .py_m_login .item-newLogo-rect {
+    position: relative;
+    top: 0px;
+    right: 0px;
+    padding: 30px 38px 30px 40px;
+  }
+   .py_m_login {
+    display: block;
+    position: absolute;
+    right: 0;
+    top: 50%;
+    -moz-transform: translateY(-50%);
+    -webkit-transform: translateY(-50%);
+    -ms-transform: translateY(-50%);
+    -o-transform: translateY(-50%);
+    transform: translateY(-50%);
+  }
+    .py_m_login .item-newLogo-rect {
+      position: relative;
+      top: 0px;
+      right: 0px;
+      padding: 30px 38px 30px 40px;
+    }
+    .py_m_login .logoCaseTab {
+      position: absolute;
+      top: 10px;
+      right: 10px;
+      display: block;
+      width: 52px;
+      height: 52px;
+      /*background: url(../../assets/image/resource/login_switchover.gif) no-repeat 0px 0px;*/
+      -webkit-transition: all .5s;
+      -moz-transition: all .5s;
+      transition: all .5s;
+    }
+    .py_m_login .logoTips {
+      background: #ddf3ff;
+      line-height: 27px;
+      border: #34b5f8 solid 1px;
+      color: #34b5f8;
+      padding: 0px 6px 0px 9px;
+      position: absolute;
+      top: 10px;
+      right: 67px;
+    }
+      .py_m_login .logoTips .ico1 {
+        width: 14px;
+        height: 18px;
+        vertical-align: middle;
+        margin-right: 7px;
+        display: inline-block;
+        margin-top: -2px;
+      }
+      .py_m_login .logoTips .ico2 {
+        width: 6px;
+        height: 12px;
+        position: absolute;
+        top: 9px;
+        right: -6px;
+      }
+    .py_m_login .logoTips {
+      background: #ddf3ff;
+      line-height: 27px;
+      border: #34b5f8 solid 1px;
+      color: #34b5f8;
+      padding: 0px 6px 0px 9px;
+      position: absolute;
+      top: 10px;
+      right: 67px;
+    }
+    .py_m_login h4 {
+      font-size: 25px;
+      line-height: 25px;
+      padding-bottom: 8px;
+      font-weight: normal;
+      color: #4997c8;
+    }
+     .err-tips {
+      position: absolute;
+      top: 30px;
+      left: 38px;
+      height: 30px;
+      border: #ffc3b9 solid 1px;
+      line-height: 30px;
+      color: #555;
+      background: #fef2f2;
+      width: 332px;
+    }
+  ol, ul, li {
+    list-style: none;
+  }
+  .py_m_login .passWord-case .inputlist li.u_inputtext {
+    background: url(../../assets/image/resource/login_user.png) no-repeat left top #fff;
+  }
+  .py_m_login .passWord-case .inputlist li {
+    width: 332px;
+    height: 44px;
+    border-radius: 5px;
+    border: #b4d1ec solid 1px;
+    background: #fff;
+    margin-top: 20px;
+  }
+    .py_m_login .passWord-case .inputlist li input {
+      float: left;
+      width: 250px;
+      line-height: 42px;
+      height: 42px;
+      margin: 0 0px 0px 68px;
+      border: 0px;
+      font-size: 14px;
+      background: none;
+    }
+    .py_m_login .passWord-case .inputlist li.u_inputpassword {
+      background: url(../../assets/image/resource/login_pwd.png) no-repeat left top #fff;
+    }
+  .py_m_login .passWord-case .login_other_rect {
+    height: 24px;
+    line-height: 24px;
+    margin-top: 15px;
+  }
+  .py_m_login .passWord-case .rememberMe {
+    color: #3c637c;
+    cursor: pointer;
+    float: left;
+  }
+    .py_m_login .passWord-case .rememberMe p {
+      width: 40px;
+      height: 24px;
+      border-radius: 12px;
+      margin-right: 7px;
+      cursor: pointer;
+      background: #b2d1df;
+      float: left;
+    }
+    .py_m_login .passWord-case .rememberMe span {
+      float: right;
+      width: 20px;
+      height: 20px;
+      border-radius: 11px;
+      background: #fff;
+      margin: 2px 17px 0px 0px;
+      margin-right: 17px;
+    }
+  input, select, textarea {
+    color: #222;
+    font-size: 12px;
+    line-height: 140%;
+    resize: none;
+    outline: none;
+    font-family: "microsoft yahei";
+  }
+  .fr {
+    float: right;
+  }
+  a, a:visited {
+    text-decoration: none;
+  }
+  .py_m_login .passWord-case .m_btn {
+    display: block;
+    width: 100%;
+    height: 50px;
+    text-align: center;
+    line-height: 50px;
+    background: #15ae4d;
+    font-size: 22px;
+    color: #fff;
+    border-radius: 5px;
+    border: 0px;
+    cursor: pointer;
+    margin-top: 15px;
+  }
+  .py_m_login .passWord-case .no_account {
+    padding-top: 26px;
+    text-align: center;
+    color: #3c637c;
+  }
+    .py_m_login .passWord-case .no_account a.a1 {
+      margin: 0 24px 0 5px;
+    }
+    .py_m_login .passWord-case .no_account a {
+      color: #ff8400;
+    }
+</style>

+ 0 - 34
TEAMModelOS.SmartTeach/ClientApp/view/zone/index.vue

@@ -1,34 +0,0 @@
-<style>
-</style>
-<template>
-  <div id="app">
-    <div class="header">
-555
-    </div>
-    <div class="left">
-
-    </div>
-    <div class="main">
-
-    </div>
-    <div class="footer">
-
-    </div>
-
-  </div>
-</template>
-<script>
-
-  export default {
-
-    data() {
-      return {
-
-      }
-    },
-      mounted() {
-
-      }
-    }
-</script>
-

二進制
TEAMModelOS.TeachZone/ClientApp/assets/image/refresh_hover.png