dusenyao 3 years ago
parent
commit
9a80de26e1

+ 7 - 5
src/components/payment/Audit.vue

@@ -77,10 +77,8 @@ export default {
   },
   props: {
     data: {
-      default: () => {
-        return {};
-      },
-      type: Object
+      type: Object,
+      required: true
     },
     goodsId: {
       default: '',
@@ -106,8 +104,12 @@ export default {
       ApplyJoinCourse({
         course_id: this.goodsId, // 课程 ID
         discount_code: this.discount_code // 优惠码 (目前暂时没有用到)
-      }).then(() => {
+      }).then(({ is_audited }) => {
         this.$message.success(this.$i18n.t('Key631'));
+        if (is_audited === 'true') {
+          return this.goPersonal();
+        }
+
         this.visible = true;
       });
     },

+ 3 - 1
src/components/select/SelectTemplate.vue

@@ -28,7 +28,9 @@
       highlight-current-row
       @current-change="handleCurrentChange"
     >
-      <el-table-column prop="name" :label="$t('Key191')" width="320" />
+      <el-table-column prop="name" :label="$t('Key134')" width="150" />
+      <el-table-column prop="creator_name" :label="$t('Key280')" width="120" />
+      <el-table-column prop="org_name" :label="$t('Key136')" width="120" />
       <el-table-column :label="$t('Key250')">
         <template slot-scope="{ row }"> <i class="el-icon-date" /> {{ row.begin_date }} - {{ row.end_date }} </template>
       </el-table-column>

+ 48 - 11
src/views/task_details/TaskTop.vue

@@ -2,12 +2,21 @@
   <div class="task-detail-top">
     <div class="title">
       <span class="title-name">{{ itemInfo.course_name }}</span>
-      <span class="title-time">{{ itemInfo.time_space_view_txt }}</span>
+      <span class="title-time">{{ itemInfo.cs_item_time }}</span>
     </div>
     <div class="cs_item_name">
       {{ itemInfo.cs_item_name }}
     </div>
     <div class="courseware-list">
+      <template v-if="type === 'teacher'">
+        <div class="task-name">{{ itemInfo.name }}</div>
+        <div class="task-time">{{ itemInfo.time_space_view_txt }}</div>
+        <div class="task-content">
+          <span>任务说明</span>
+          <!-- eslint-disable-next-line vue/no-v-html -->
+          <span v-html="contentUrl"></span>
+        </div>
+      </template>
       <div class="courseware-list-title">
         {{ $t('Key309') }}
       </div>
@@ -49,16 +58,22 @@
 export default {
   props: {
     itemInfo: {
-      default: () => {
-        return {
-          course_name: '',
-          time_space_view_txt: '',
-          cs_item_name: '',
-          cs_item_learning_material_list: [],
-          courseware_list: []
-        };
-      },
-      type: Object
+      type: Object,
+      required: true
+    },
+    type: {
+      type: String,
+      required: true
+    }
+  },
+  computed: {
+    contentUrl() {
+      const content = this.itemInfo.content;
+      if (!content) return '';
+      return content.replace(
+        new RegExp(/((https?:\/\/)?[\w-]+\.[\w-]+\.[\w-,@?^=%&:/~\\+#]+)/, 'g'),
+        '<a href="$1" target="_blank">$1</a>'
+      );
     }
   },
   methods: {
@@ -108,6 +123,28 @@ export default {
     margin-bottom: 16px;
     border-top: 1px solid #d9d9d9;
 
+    .task-name {
+      margin-bottom: 16px;
+      font-size: 20px;
+      font-weight: bold;
+    }
+
+    .task-time {
+      margin-bottom: 16px;
+      color: #969696;
+    }
+
+    .task-content {
+      display: flex;
+      column-gap: 40px;
+      margin-bottom: 16px;
+      white-space: pre-wrap;
+
+      ::v-deep a {
+        color: #18a0fb;
+      }
+    }
+
     &-title {
       margin-bottom: 16px;
       font-size: 18px;

+ 26 - 5
src/views/task_details/student/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div v-loading="loading" class="task-detail">
-    <task-top :item-info="itemInfo" @viewFile="viewFile" />
+    <task-top :item-info="itemInfo" type="student" @viewFile="viewFile" />
 
     <div class="task-detail-main">
       <div class="time-type">{{ $t(timeType) }} {{ name }}</div>
@@ -9,7 +9,7 @@
       </div>
       <div class="task-require">
         <span class="label">{{ $t('Key326') }}</span>
-        {{ content }}
+        <span v-html="contentUrl"></span>
       </div>
       <div class="task-courseware">
         <span class="label">{{ $t('Key312') }}</span>
@@ -231,6 +231,14 @@ export default {
         default:
           return '';
       }
+    },
+    contentUrl() {
+      const content = this.content;
+      if (!content) return '';
+      return content.replace(
+        new RegExp(/((https?:\/\/)?[\w-]+\.[\w-]+\.[\w-,@?^=%&:/~\\+#]+)/, 'g'),
+        '<a href="$1" target="_blank">$1</a>'
+      );
     }
   },
   created() {
@@ -256,13 +264,18 @@ export default {
           my_execute_info,
           is_enable_KHPJ,
           is_enable_homework,
-          is_enable_message
+          is_enable_message,
+          cs_item_begin_time,
+          cs_item_end_time
         }) => {
           this.itemInfo = {
+            name,
             time_space_view_txt,
             course_name,
             cs_item_name,
-            cs_item_learning_material_list
+            cs_item_learning_material_list,
+            content,
+            cs_item_time: `${cs_item_begin_time} ~ ${cs_item_end_time}`
           };
 
           this.name = name;
@@ -393,7 +406,7 @@ export default {
 };
 </script>
 
-<style lang="scss">
+<style lang="scss" scoped>
 @import '~@/styles/mixin';
 
 $bor-color: #d9d9d9;
@@ -528,6 +541,14 @@ $bor-color: #d9d9d9;
       }
     }
 
+    .task-require {
+      white-space: pre-wrap;
+
+      ::v-deep a {
+        color: #18a0fb;
+      }
+    }
+
     .submit-button {
       padding-left: 120px;
     }

+ 9 - 8
src/views/task_details/teacher/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div v-loading="loading" class="teacher-task-detail">
-    <task-top :item-info="itemInfo" @viewFile="viewFile" />
+    <task-top :item-info="itemInfo" type="teacher" @viewFile="viewFile" />
 
     <div class="teacher-task-detail-main">
       <div class="student-finish-situation">
@@ -203,14 +203,20 @@ export default {
           custom_student_list,
           is_enable_KHPJ,
           is_enable_homework,
-          is_enable_message
+          is_enable_message,
+          content,
+          cs_item_begin_time,
+          cs_item_end_time
         }) => {
           this.itemInfo = {
+            name,
             time_space_view_txt,
             course_name,
             cs_item_name,
             cs_item_learning_material_list,
-            courseware_list
+            courseware_list,
+            content,
+            cs_item_time: `${cs_item_begin_time} ~ ${cs_item_end_time}`
           };
           this.name = name;
           this.teaching_type = teaching_type;
@@ -231,11 +237,6 @@ export default {
       });
   },
   methods: {
-    siteFilter() {
-      const siteFilter = new RegExp(/(https?:\/\/)?[\w-]+\.[\w-]+\.[\w-,@?^=%&:/~\\+#]+/, 'g');
-      console.log(siteFilter);
-    },
-
     getTaskStudentExecuteInfo(student_id) {
       GetTaskStudentExecuteInfo({
         task_id: this.id,

+ 1 - 0
src/views/teacher/create_course/index.vue

@@ -31,6 +31,7 @@
 import SelectTemplate from '@/components/select/SelectTemplate.vue';
 
 export default {
+  name: 'CreateCourse',
   components: { SelectTemplate },
   data() {
     return {