Ver Fonte

Merge branch 'master' of http://gcls-git.helxsoft.cn/dsy/gcls_sys_learn_web

dusenyao há 11 meses atrás
pai
commit
8d1c803b19

+ 1 - 1
package.json

@@ -16,7 +16,7 @@
     "@tinymce/tinymce-vue": "^3.2.8",
     "awe-dnd": "^0.3.4",
     "axios": "^1.6.8",
-    "book-ui": "file:../book-ui-0.3.78.tgz",
+    "book-ui": "file:../book-ui-0.3.79.tgz",
     "core-js": "^3.36.1",
     "dayjs": "^1.11.10",
     "element-ui": "^2.15.14",

+ 10 - 0
src/api/list.js

@@ -114,3 +114,13 @@ export function GetMyExerciseAnswerRecordList(data) {
     data
   });
 }
+
+// DeleteStudent 删除学生
+export function DeleteStudent(data) {
+  return request({
+    method: 'post',
+    url: process.env.VUE_APP_LearnWebSI,
+    params: getRequestParams('teaching-course_manager-DeleteCourseStudent'),
+    data
+  });
+}

+ 2 - 2
src/layouts/components/LayoutHeader.vue

@@ -2,9 +2,9 @@
   <!-- 顶部登录导航 -->
   <div class="LoginNav">
     <div class="logo">
-      <span class="logo-img" @click="handleSelect">
+      <!-- <span class="logo-img" @click="handleSelect">
         <el-image :src="$store.state.app.config.logo_image_url" />
-      </span>
+      </span> -->
       <ul class="logo-projectlist">
         <li
           v-for="({ name }, i) in projectList"

+ 41 - 2
src/views/task_details/TaskTop.vue

@@ -4,9 +4,20 @@
       <span class="title-name">{{ itemInfo.course_name }}</span>
       <span class="title-time">{{ itemInfo.cs_item_time }}</span>
     </div>
-    <div class="cs_item_name">
-      {{ itemInfo.cs_item_name }}
+    <div class="cs-item-box">
+      <div class="cs_item_name">
+        {{ itemInfo.cs_item_name }}
+      </div>
+      <div
+        class="cs-status"
+        :style="{ color: statusColor[itemInfo.finish_status].color }"
+        v-if="itemInfo.finish_status || itemInfo.finish_status === 0"
+      >
+        <span class="cs-status-bg" :style="{ background: statusColor[itemInfo.finish_status].color }"></span>
+        <span>{{ statusColor[itemInfo.finish_status].text }}</span>
+      </div>
     </div>
+
     <div class="courseware-list">
       <template v-if="type === 'teacher'">
         <div class="task-name">{{ itemInfo.name }}</div>
@@ -100,6 +111,12 @@ const emits = defineEmits(['viewFile']);
 function emitViewFile(fileName, fileId) {
   emits('viewFile', fileName, fileId);
 }
+
+const statusColor = {
+  0: { color: '#FF9900', text: '未开始' },
+  1: { color: '#3ACB85', text: '进行中' },
+  2: { color: '#FF1111', text: '已结束' }
+};
 </script>
 
 <style lang="scss" scoped>
@@ -124,7 +141,29 @@ function emitViewFile(fileName, fileId) {
     }
   }
 
+  .cs-item-box {
+    display: flex;
+    align-items: start;
+
+    .cs-status {
+      display: flex;
+      column-gap: 8px;
+      align-items: center;
+      margin-top: 8px;
+      font-size: 16px;
+      font-weight: 400;
+      line-height: 24px;
+
+      &-bg {
+        width: 8px;
+        height: 8px;
+        border-radius: 50%;
+      }
+    }
+  }
+
   .cs_item_name {
+    flex: 1;
     margin: 8px 0 24px;
     font-size: 16px;
     font-weight: 400;

+ 4 - 30
src/views/task_details/teacher/index.vue

@@ -117,34 +117,6 @@
             <span class="finish-time">{{ curFinishDetail.finish_time_view_txt }}</span>
           </div>
           <div ref="situation" class="finish-situation">
-            <template v-if="!isExercises && itemInfo.courseware_list && itemInfo.courseware_list.length > 0">
-              <div class="title">
-                {{ $t('Key309') }}
-              </div>
-              <div class="courseware-list">
-                <el-tag
-                  v-for="item in itemInfo.courseware_list"
-                  :key="item.courseware_id"
-                  color="#fff"
-                  :title="item.courseware_name"
-                >
-                  <div class="courseware">
-                    <svg-icon icon-class="courseware" />
-                    <router-link
-                      target="_blank"
-                      :to="{
-                        path: `/task_detail/show_courseware/${item.courseware_id}?group_id_selected_info=${
-                          item.group_id_selected_info ? item.group_id_selected_info : '[]'
-                        }`
-                      }"
-                      class="courseware_name nowrap-ellipsis"
-                    >
-                      {{ item.courseware_name }}
-                    </router-link>
-                  </div>
-                </el-tag>
-              </div>
-            </template>
             <template v-if="curFinishDetail.courseware_list.length > 0">
               <div class="title">
                 {{ $t('Key312') }}
@@ -308,7 +280,8 @@ GetTaskInfo({
       is_enable_message: isMessage,
       content,
       cs_item_begin_time,
-      cs_item_end_time
+      cs_item_end_time,
+      finish_status
     }) => {
       itemInfo.value = {
         name,
@@ -318,7 +291,8 @@ GetTaskInfo({
         cs_item_learning_material_list,
         courseware_list,
         content,
-        cs_item_time: `${cs_item_begin_time} ~ ${cs_item_end_time}`
+        cs_item_time: `${cs_item_begin_time} ~ ${cs_item_end_time}`,
+        finish_status
       };
       teachingType.value = teaching_type;
       accessory_list.value = accList;

+ 16 - 2
src/views/teacher/student_list/index.vue

@@ -57,6 +57,7 @@
                 <span class="agree" @click="sendMessage('single', row.student_id, row.student_name)">
                   {{ $t('Key305') }}
                 </span>
+                <span class="refuse" @click="deleteStudent(row.course_student_id)">{{ $t('Key172') }}</span>
               </template>
             </template>
           </el-table-column>
@@ -88,11 +89,11 @@ export default {
 
 <script setup>
 import { ref, inject } from 'vue';
-import { PageQueryCourseStudentList } from '@/api/list';
+import { PageQueryCourseStudentList, DeleteStudent } from '@/api/list';
 import { AuditCourseStudent, SendMessageToCourseStudent } from '@/api/course';
 import { useList } from '@/utils/list';
 import { useRoute } from 'vue-router/composables';
-import { Loading, Message } from 'element-ui';
+import { Loading, Message, MessageBox } from 'element-ui';
 
 import SendMessage from './SendMessage.vue';
 
@@ -170,6 +171,19 @@ function auditCourseStudent(course_student_id, is_audited) {
     queryCourseStudentList();
   });
 }
+
+function deleteStudent(course_student_id) {
+  MessageBox.confirm('确定要删除该学生吗?', $t('Key361'), {
+    confirmButtonText: $t('Key94'),
+    cancelButtonText: $t('Key83'),
+    type: 'warning'
+  }).then(() => {
+    DeleteStudent({ course_student_id }).then(() => {
+      Message.success('删除成功');
+      queryCourseStudentList();
+    });
+  });
+}
 </script>
 
 <style lang="scss" scoped>