dusenyao il y a 3 ans
Parent
commit
92b08c8d6a

+ 14 - 2
src/api/app.js

@@ -1,5 +1,6 @@
 import { request, getRequestParams } from '@/utils/request';
 import { getToken } from '@/utils/auth';
+import { Loading } from 'element-ui';
 
 /**
  * 得到语言列表
@@ -42,7 +43,7 @@ export function fileUpload(SecurityLevel, file) {
   };
   const formData = new FormData();
   formData.append(file.filename, file.file, file.file.name);
-
+  Loading.service({ text: '上传文件中' });
   return request({
     method: 'post',
     url: '/GCLSFileServer/WebFileUpload',
@@ -51,7 +52,18 @@ export function fileUpload(SecurityLevel, file) {
     headers: {
       'Content-Type': 'multipart/form-data'
     },
-    data: formData
+    data: formData,
+    transformRequest: [
+      function (data) {
+        return data;
+      }
+    ],
+    onUploadProgress: progressEvent => {
+      let complete = (((progressEvent.loaded / progressEvent.total) * 100) | 0) + '%';
+    }
+  }).then(res => {
+    Loading.service().close();
+    return res;
   });
 }
 

+ 15 - 0
src/api/table.js

@@ -74,3 +74,18 @@ export function PageQueryCourseList(data) {
     data
   });
 }
+
+/**
+ * 分页查询我的消息(通知)列表
+ * @param {Object} data
+ */
+export function PageQueryMyMessageList(data) {
+  let params = getRequestParams('page_query-PageQueryMyMessageList');
+
+  return request({
+    method: 'post',
+    url: process.env.VUE_APP_LearnWebSI,
+    params,
+    data
+  });
+}

+ 29 - 0
src/api/user.js

@@ -37,3 +37,32 @@ export function GetUserListByIDList(data) {
     data
   });
 }
+
+/**
+ * 阅读我的消息
+ * @param {Object} data { id 消息ID }
+ */
+export function ReadMyMessage(data) {
+  let params = getRequestParams('message-message_manager-ReadMyMessage');
+
+  return request({
+    method: 'post',
+    url: process.env.VUE_APP_LearnWebSI,
+    params,
+    data
+  });
+}
+
+/**
+ * 是否存在我未阅读的消息
+ */
+export function IsExistMyMessage_NotRead(data) {
+  let params = getRequestParams('message-message_manager-IsExistMyMessage_NotRead');
+
+  return request({
+    method: 'post',
+    url: process.env.VUE_APP_LearnWebSI,
+    params,
+    data
+  });
+}

+ 1 - 1
src/components/select/treeMenus.vue

@@ -63,7 +63,7 @@ export default {
     };
   },
   watch: {
-    list: function () {
+    list() {
       this.scope();
     }
   },

+ 10 - 5
src/layouts/components/LayoutHeader.vue

@@ -73,7 +73,7 @@
           <span class="real_name">{{ userMessage.user_real_name }}</span>
         </span>
         <el-dropdown-menu slot="dropdown" class="user-menu">
-          <el-dropdown-item @click.native="gopresonal">
+          <el-dropdown-item @click.native="goPersonal">
             <img src="../../assets/login/project7.png" /><span>个人中心</span>
           </el-dropdown-item>
           <el-dropdown-item @click.native="QuitLogin">
@@ -82,9 +82,9 @@
         </el-dropdown-menu>
       </el-dropdown>
       <!-- 消息 铃铛图片 -->
-      <div class="message">
-        <img src="../../assets/login/Vector.png" alt="" />
-        <span class="redDot"></span>
+      <div class="message" @click="goPersonal">
+        <img src="../../assets/login/Vector.png" />
+        <span v-show="isNotRead" class="redDot"></span>
       </div>
     </div>
   </div>
@@ -95,6 +95,7 @@ import { mapGetters } from 'vuex';
 import { getToken, removeToken } from '@/utils/auth';
 import { GetLanguageList } from '@/api/app';
 import { setI18nLang } from '@/utils/i18n';
+import { IsExistMyMessage_NotRead } from '@/api/user';
 
 export default {
   name: 'LayoutHeader',
@@ -195,6 +196,7 @@ export default {
       userMessage: null,
       userShow: false,
       language_list: [],
+      isNotRead: false,
       lang: ''
     };
   },
@@ -218,6 +220,9 @@ export default {
       });
     }
     this.getLangList();
+    IsExistMyMessage_NotRead().then(({ is_exist }) => {
+      this.isNotRead = JSON.parse(is_exist);
+    });
   },
   methods: {
     // 切换导航
@@ -263,7 +268,7 @@ export default {
       }
       window.location.href = url;
     },
-    gopresonal() {
+    goPersonal() {
       window.location.href = `/GCLS-Personal/#/EnterSys`;
     },
     // 切换登录的注册

+ 2 - 2
src/views/live/teacher/group.vue

@@ -294,10 +294,10 @@ export default {
     chatBans() {
       common.roomUpdate({
         allow_chat: !this.roomData.allow_chat,
-        roomUpdateSuccess: function (data) {
+        roomUpdateSuccess(data) {
           console.log(data, '房间模板配置更新请求成功!');
         },
-        roomUpdateFailed: function (data) {
+        roomUpdateFailed(data) {
           console.log(data, '房间模板配置更新请求失败! 请稍后再试!');
         }
       });

+ 2 - 2
src/views/live/teacher/index.vue

@@ -663,10 +663,10 @@ export default {
     chatBans() {
       common.roomUpdate({
         allow_chat: !this.roomData.allow_chat,
-        roomUpdateSuccess: function (data) {
+        roomUpdateSuccess(data) {
           console.log(data, '房间模板配置更新请求成功!');
         },
-        roomUpdateFailed: function (data) {
+        roomUpdateFailed(data) {
           console.log(data, '房间模板配置更新请求失败! 请稍后再试!');
         }
       });

+ 4 - 4
src/views/live/teacher/live.js

@@ -294,10 +294,10 @@ export function initListener(vue) {
   rtc.on('inviteUp', uid => {
     console.log('监听自己被邀请事件', uid);
     rtc.inviteAccept({
-      success: function (str) {
+      success(str) {
         console.log('接受邀请成功', str);
       },
-      fail: function (data) {
+      fail(data) {
         console.log('接受邀请失败', data);
       }
     });
@@ -396,10 +396,10 @@ export function unPubShareStream() {
 export function liveRecord(status) {
   rtc.liveRecord({
     status: status,
-    success: function (data) {
+    success(data) {
       console.log('成功', data);
     },
-    fail: function (str) {
+    fail(str) {
       console.log(str);
     }
   });

+ 1 - 1
src/views/login/index.vue

@@ -97,7 +97,7 @@ export default {
   },
   watch: {
     $router: {
-      handler: function (router) {
+      handler(router) {
         this.redirect = router.query && router.query.redirect;
       }
     }

+ 80 - 8
src/views/main/TaskList.vue

@@ -8,9 +8,22 @@
             <svg-icon icon-class="task-notification" />
             <span class="title">任务通知</span>
           </div>
-          <div></div>
+          <div>
+            <i class="el-icon-arrow-right" @click="goPersonal" />
+          </div>
+        </div>
+        <div class="tasks-top-notification-container">
+          <ul>
+            <li
+              v-for="item in message_list"
+              :key="item.id"
+              @click="readMyMessage(item.id, item.source_entity_id)"
+            >
+              <span class="send_time">{{ item.send_time }}</span>
+              <span class="content">{{ item.content }}</span>
+            </li>
+          </ul>
         </div>
-        <div class="tasks-top-notification-container"></div>
       </div>
     </div>
     <div class="tasks-container">
@@ -23,7 +36,7 @@
           <i class="el-icon-arrow-right" @click="dateSkip(1)" />
         </div>
         <div>
-          <el-select v-model="selected"></el-select>
+          <!-- <el-select v-model="selected"></el-select> -->
         </div>
       </div>
       <div class="tasks-container-main">
@@ -60,9 +73,10 @@
 </template>
 
 <script>
-import { GetMyDayTaskList } from '@/api/table';
+import { GetMyDayTaskList, PageQueryMyMessageList } from '@/api/table';
 import { CreateEnterLiveRoomSession } from '@/api/live';
 import { parseTime, formatDate } from '@/utils';
+import { ReadMyMessage } from '@/api/user';
 
 export default {
   name: 'TaskList',
@@ -70,19 +84,30 @@ export default {
     return {
       date: new Date(),
       selected: '',
-      task_group_list: []
+      task_group_list: [],
+      message_list: []
     };
   },
   computed: {
-    dateTime: function () {
+    dateTime() {
       return parseTime(this.date, '{m}-{d}');
     }
   },
   watch: {
-    date: function () {
+    date() {
       this.getTaskList();
     }
   },
+  created() {
+    PageQueryMyMessageList({
+      read_status: -1,
+      message_type: -1,
+      page_capacity: 5,
+      cur_page: 1
+    }).then(({ message_list }) => {
+      this.message_list = message_list;
+    });
+  },
   mounted() {
     this.getTaskList();
   },
@@ -99,6 +124,7 @@ export default {
           return '';
       }
     },
+
     teachingType(type) {
       switch (type) {
         case 10:
@@ -107,6 +133,7 @@ export default {
           return '查看';
       }
     },
+
     taskLink(type, task_id) {
       let userType = this.$store.state.user.user_type;
       if (type === 10) {
@@ -137,6 +164,17 @@ export default {
       let day = 24 * 60 * 60 * 1000 * num;
       this.date = new Date(this.date.getTime() + day);
     },
+
+    readMyMessage(id, source_entity_id) {
+      ReadMyMessage({ id }).then(() => {
+        this.taskLink_outside(source_entity_id);
+      });
+    },
+
+    goPersonal() {
+      window.location.href = `/GCLS-Personal/#/EnterSys`;
+    },
+
     getTaskList() {
       GetMyDayTaskList({ date_stamp: formatDate(this.date) }).then(response => {
         this.task_group_list = response.task_group_list;
@@ -171,20 +209,54 @@ export default {
       }
     }
 
+    // 任务通知
     &-notification {
       background-color: #fff;
       flex: 1;
       height: 300px;
       margin-left: 16px;
       padding: 20px 24px;
+      overflow: hidden;
 
       &-title {
-        height: 56px;
+        display: flex;
+        justify-content: space-between;
+        font-size: 20px;
+        font-weight: 700;
 
         & .title {
           display: inline-block;
           margin-left: 10px;
         }
+
+        & .el-icon-arrow-right {
+          cursor: pointer;
+        }
+      }
+
+      &-container {
+        margin-top: 24px;
+
+        ul {
+          li {
+            display: flex;
+
+            .send_time {
+              width: 175px;
+              margin-right: 20px;
+              color: #767676;
+            }
+
+            .content {
+              color: $color;
+              cursor: pointer;
+            }
+          }
+
+          li:not(:first-child) {
+            margin-top: 16px;
+          }
+        }
       }
     }
   }

+ 10 - 1
src/views/main/curricula_list/student.vue

@@ -43,7 +43,9 @@
       <div class="curricula-student-container-title">
         <div>
           <span class="title">课程列表</span>
-          <span class="tip"> 你也可以去 学习中心 选择更多的课程。 </span>
+          <span class="tip">
+            你也可以去 <a @click="goLearningCenter">学习中心</a> 选择更多的课程。
+          </span>
         </div>
       </div>
       <div class="curricula-student-container-list">
@@ -167,6 +169,9 @@ export default {
       if (val === 52) {
         return '#68CEFA';
       }
+    },
+    goLearningCenter() {
+      window.location.href = `/GCLS-LC/#/EnterSys`;
     }
   }
 };
@@ -222,6 +227,10 @@ export default {
 
       .tip {
         color: #aaa;
+
+        > a {
+          color: $basicColor;
+        }
       }
 
       .create {

+ 1 - 1
src/views/main/index.vue

@@ -66,7 +66,7 @@ export default {
     };
   },
   computed: {
-    currentTabComponent: function () {
+    currentTabComponent() {
       if (['TemplateList', 'TaskList'].includes(this.currentTab)) {
         return this.currentTab;
       }

+ 1 - 1
src/views/task_details/student/index.vue

@@ -396,7 +396,7 @@ $bor-color: #d9d9d9;
     }
 
     .file-list {
-      padding-left: 105px;
+      padding-left: 120px;
       margin-bottom: 16px;
 
       > .el-tag {

+ 4 - 4
src/views/teacher/create_course/step_table/CourseInfo.vue

@@ -70,7 +70,7 @@
         </el-form-item>
 
         <el-form-item label="学生数量">
-          <el-input v-model.number.lazy="form.student_count_start" class="student-count" />
+          <el-input v-model.number.lazy="form.student_count_max" class="student-count" />
           <el-checkbox v-model="form.is_auto_close">报满后自动封班</el-checkbox>
         </el-form-item>
 
@@ -144,7 +144,7 @@ export default {
         teacher_id_list: [],
         begin_date: '',
         end_date: '',
-        student_count_start: '',
+        student_count_max: '',
         is_auto_close: false,
         student_enter_control_type: 0,
         price: '',
@@ -209,7 +209,7 @@ export default {
           intro,
           begin_date,
           end_date,
-          student_count_start,
+          student_count_max,
           is_auto_close,
           student_enter_control_type,
           price,
@@ -224,7 +224,7 @@ export default {
           this.form.intro = intro;
           this.form.begin_date = begin_date;
           this.form.end_date = end_date;
-          this.form.student_count_start = student_count_start;
+          this.form.student_count_max = student_count_max;
           this.form.is_auto_close = is_auto_close === 'true';
           this.form.student_enter_control_type = student_enter_control_type;
           this.form.price = price;

+ 4 - 2
src/views/teacher/create_course/step_table/SelectBook.vue

@@ -12,7 +12,9 @@
               placeholder="输入关键字搜索"
               class="keyword"
               @keyup.enter.native="queryBookList"
-            />
+            >
+              <el-button slot="append" @click="queryBookList">搜索</el-button>
+            </el-input>
             <!-- <el-button class="buy">去购买</el-button><span class="tip">只能添加已购买的资源</span> -->
           </div>
           <div>
@@ -176,7 +178,7 @@ export default {
       }
 
       .book {
-        // height: calc(100vh - #{$header-h} - #{$step-h} - 224px);
+        min-height: calc(100vh - #{$header-h} - #{$step-h} - 224px);
         display: flex;
         flex-direction: column;
         justify-content: space-between;