dusenyao 3 years ago
parent
commit
0cb0f2efca
1 changed files with 294 additions and 274 deletions
  1. 294 274
      src/views/course_details/index.vue

+ 294 - 274
src/views/course_details/index.vue

@@ -1,325 +1,338 @@
 <template>
   <!-- 课程详情 -->
-  <div v-if="CourseData" class="CourseDetail">
-    <div v-loading="loading" class="main">
-      <div class="bookDetail">
-        <div class="rightUp">
-          <span>HOT</span>
-        </div>
-        <div class="text">
-          <p class="p1">{{ CourseData.name }}</p>
-          <!-- 机构名称 -->
-          <p>{{ CourseData.org_name }}</p>
-          <p>
-            <template v-if="CourseData.teacher_list.length > 0">
-              <span v-for="item in CourseData.teacher_list" :key="item.teacher_id">
-                {{ item.teacher_name }}
-              </span>
-            </template>
-          </p>
-          <p class="intro">
-            {{ CourseData.intro }}
-          </p>
-          <p>
-            <span> {{ CourseData.begin_date }} </span>
-            <span>-</span>
-            <span> {{ CourseData.end_date }} </span>
-          </p>
-
-          <p v-if="backTime" class="tip">距离关闭购买渠道还有</p>
-          <div class="operation">
-            <div v-if="backTime" class="countdown">
-              <div class="time">
-                <div>
-                  <div class="time-num">{{ backTime.days }}</div>
-                  <div class="time-name">天</div>
-                </div>
-                <div>
-                  <div class="time-num">{{ backTime.hours }}</div>
-                  <div class="time-name">小时</div>
-                </div>
-                <div>
-                  <div class="time-num">{{ backTime.minutes }}</div>
-                  <div class="time-name">分</div>
-                </div>
-                <div>
-                  <div class="time-num">{{ backTime.seconds }}</div>
-                  <div class="time-name">秒</div>
+  <div>
+    <div v-if="isData" v-loading="loading" class="CourseDetail">
+      <div class="main">
+        <div class="bookDetail">
+          <div class="rightUp">
+            <span>HOT</span>
+          </div>
+          <div class="text">
+            <p class="p1">{{ CourseData.name }}</p>
+            <!-- 机构名称 -->
+            <p>{{ CourseData.org_name }}</p>
+            <p>
+              <template v-if="CourseData.teacher_list.length > 0">
+                <span v-for="item in CourseData.teacher_list" :key="item.teacher_id">
+                  {{ item.teacher_name }}
+                </span>
+              </template>
+            </p>
+            <p class="intro">
+              {{ CourseData.intro }}
+            </p>
+            <p>
+              <span> {{ CourseData.begin_date }} </span>
+              <span>-</span>
+              <span> {{ CourseData.end_date }} </span>
+            </p>
+
+            <p v-if="backTime" class="tip">距离关闭购买渠道还有</p>
+            <div class="operation">
+              <div v-if="backTime" class="countdown">
+                <div class="time">
+                  <div>
+                    <div class="time-num">{{ backTime.days }}</div>
+                    <div class="time-name">天</div>
+                  </div>
+                  <div>
+                    <div class="time-num">{{ backTime.hours }}</div>
+                    <div class="time-name">小时</div>
+                  </div>
+                  <div>
+                    <div class="time-num">{{ backTime.minutes }}</div>
+                    <div class="time-name">分</div>
+                  </div>
+                  <div>
+                    <div class="time-num">{{ backTime.seconds }}</div>
+                    <div class="time-name">秒</div>
+                  </div>
                 </div>
               </div>
-            </div>
-            <div v-else>购买渠道已关闭</div>
-
-            <div v-if="!readonly">
-              <span class="price">
-                ¥ {{ CourseData.price }}
-                <span class="price_1" v-text="changePrice('1', CourseData.price)"></span>
-                <span class="price_2" v-text="changePrice('2', CourseData.price)"></span>
-              </span>
-              <button class="get" @click="getPurchase">{{ is_buy ? '去学习' : '获取课程' }}</button>
-            </div>
-          </div>
-        </div>
-      </div>
-      <div class="more">
-        <div class="moreTitle">配套教材</div>
-        <div class="moreList">
-          <div v-for="(item, i) in CourseData.book_list" :key="i" class="moreOne">
-            <div>
-              <img :src="item.book_picture_url" alt="" />
-            </div>
-            <div class="text">
-              <p class="p1">{{ item.book_name }}</p>
-              <p>{{ item.book_org_name }}</p>
-              <p>{{ item.book_author }}</p>
-              <div class="operation">
+              <div v-else>购买渠道已关闭</div>
+
+              <div v-if="!readonly">
                 <span class="price">
-                  ¥ {{ item.book_price }}
-                  <span class="price_1" v-text="changePrice('1', item.book_price)"></span>
-                  <span class="price_2" v-text="changePrice('2', item.book_price)"></span>
+                  ¥ {{ CourseData.price }}
+                  <span class="price_1" v-text="changePrice('1', CourseData.price)"></span>
+                  <span class="price_2" v-text="changePrice('2', CourseData.price)"></span>
                 </span>
-                <button v-if="!readonly" :class="['get', is_buy ? 'acquired' : '']">
-                  {{ is_buy ? '已' : '' }}购买
+                <button class="get" @click="getPurchase">
+                  {{ is_buy ? '去学习' : '获取课程' }}
                 </button>
               </div>
             </div>
           </div>
         </div>
-      </div>
-      <div class="more">
-        <div class="moreTitle">授课教师</div>
-        <div class="moreList teacherList">
-          <div v-for="(item, i) in CourseData.teacher_list" :key="i" class="moreOne">
-            <div>
-              <img :src="item.teacher_image_url" alt="" />
-            </div>
-            <div class="text">
-              <p class="p1">{{ item.teacher_name }}</p>
-              <p>{{ item.teacher_org_name }}</p>
-              <p></p>
+        <div class="more">
+          <div class="moreTitle">配套教材</div>
+          <div class="moreList">
+            <div v-for="(item, i) in CourseData.book_list" :key="i" class="moreOne">
+              <div>
+                <img :src="item.book_picture_url" alt="" />
+              </div>
+              <div class="text">
+                <p class="p1">{{ item.book_name }}</p>
+                <p>{{ item.book_org_name }}</p>
+                <p>{{ item.book_author }}</p>
+                <div class="operation">
+                  <span class="price">
+                    ¥ {{ item.book_price }}
+                    <span class="price_1" v-text="changePrice('1', item.book_price)"></span>
+                    <span class="price_2" v-text="changePrice('2', item.book_price)"></span>
+                  </span>
+                  <button v-if="!readonly" :class="['get', is_buy ? 'acquired' : '']">
+                    {{ is_buy ? '已' : '' }}购买
+                  </button>
+                </div>
+              </div>
             </div>
           </div>
         </div>
-      </div>
-      <div class="course-arrangement">
-        <div class="moreTitle">课程安排</div>
-        <div v-for="(item, i) in CourseData.cs_item_list" :key="i" class="angement">
-          <div class="courseOne">
-            <div class="title">
+        <div class="more">
+          <div class="moreTitle">授课教师</div>
+          <div class="moreList teacherList">
+            <div v-for="(item, i) in CourseData.teacher_list" :key="i" class="moreOne">
               <div>
-                <span>{{ i + 1 }}.</span>
-                <span>{{ item.name }}</span>
+                <img :src="item.teacher_image_url" alt="" />
+              </div>
+              <div class="text">
+                <p class="p1">{{ item.teacher_name }}</p>
+                <p>{{ item.teacher_org_name }}</p>
+                <p></p>
               </div>
-              <div style="color: #737373">{{ item.begin_time }} ~ {{ item.end_time }}</div>
             </div>
           </div>
-          <div class="content" style="width: 670px">
-            <el-collapse @change="handleChange">
-              <el-collapse-item :name="item.id">
-                <div slot="title" class="Coursetasks">
-                  课程任务
-                  <img
-                    v-show="openList.indexOf(item.id) !== -1"
-                    class="open1"
-                    src="../../assets/course_details/open1.png"
-                  />
-                  <img
-                    v-show="openList.indexOf(item.id) === -1"
-                    class="open2"
-                    src="../../assets/course_details/open2.png"
-                  />
+        </div>
+        <div class="course-arrangement">
+          <div class="moreTitle">课程安排</div>
+          <div v-for="(item, i) in CourseData.cs_item_list" :key="i" class="angement">
+            <div class="courseOne">
+              <div class="title">
+                <div>
+                  <span>{{ i + 1 }}.</span>
+                  <span>{{ item.name }}</span>
                 </div>
-                <div class="courseContent">
-                  <div class="tasks">
-                    <div class="title">
-                      <span></span>
-                      课前任务
-                    </div>
-                    <div class="content">
-                      <el-collapse-item
-                        v-for="(it, it_i) in item.pre_task_list"
-                        :key="it_i"
-                        :name="it.id"
-                      >
-                        <div
-                          slot="title"
-                          :class="openList.indexOf(it.id) !== -1 ? 'contenttitle2' : 'contenttitle'"
+                <div style="color: #737373">{{ item.begin_time }} ~ {{ item.end_time }}</div>
+              </div>
+            </div>
+            <div class="content" style="width: 670px">
+              <el-collapse @change="handleChange">
+                <el-collapse-item :name="item.id">
+                  <div slot="title" class="Coursetasks">
+                    课程任务
+                    <img
+                      v-show="openList.indexOf(item.id) !== -1"
+                      class="open1"
+                      src="../../assets/course_details/open1.png"
+                    />
+                    <img
+                      v-show="openList.indexOf(item.id) === -1"
+                      class="open2"
+                      src="../../assets/course_details/open2.png"
+                    />
+                  </div>
+                  <div class="courseContent">
+                    <div class="tasks">
+                      <div class="title">
+                        <span></span>
+                        课前任务
+                      </div>
+                      <div class="content">
+                        <el-collapse-item
+                          v-for="(it, it_i) in item.pre_task_list"
+                          :key="it_i"
+                          :name="it.id"
                         >
-                          <span>{{ it.name }}</span>
-                          <span>
-                            <span class="gray">{{ it.begin_time }} ~ {{ it.end_time }}</span>
-                            <span class="gray">···</span>
-                          </span>
-                        </div>
-                        <div class="detail">
-                          <div>
-                            <span>说明</span>
-                            <p>
-                              {{ it.content }}
-                            </p>
+                          <div
+                            slot="title"
+                            :class="
+                              openList.indexOf(it.id) !== -1 ? 'contenttitle2' : 'contenttitle'
+                            "
+                          >
+                            <span>{{ it.name }}</span>
+                            <span>
+                              <span class="gray">{{ it.begin_time }} ~ {{ it.end_time }}</span>
+                              <span class="gray">···</span>
+                            </span>
                           </div>
-                          <div v-if="it.courseware_list.length > 0">
-                            <span>课件</span>
+                          <div class="detail">
                             <div>
-                              <div
-                                v-for="(courseware, courseware_i) in it.courseware_list"
-                                :key="courseware_i"
-                                class="btn"
-                              >
-                                <img src="../../assets/course_details/file.png" alt="" />
-                                <span> {{ courseware.courseware_name }} </span>
+                              <span>说明</span>
+                              <p>
+                                {{ it.content }}
+                              </p>
+                            </div>
+                            <div v-if="it.courseware_list.length > 0">
+                              <span>课件</span>
+                              <div>
+                                <div
+                                  v-for="(courseware, courseware_i) in it.courseware_list"
+                                  :key="courseware_i"
+                                  class="btn"
+                                >
+                                  <img src="../../assets/course_details/file.png" alt="" />
+                                  <span> {{ courseware.courseware_name }} </span>
+                                </div>
                               </div>
                             </div>
-                          </div>
-                          <div v-if="it.accessory_list.length > 0">
-                            <span>附件</span>
-                            <div>
-                              <div
-                                v-for="(accessory, accessory_i) in it.accessory_list"
-                                :key="accessory_i"
-                                class="btn"
-                              >
-                                <img src="../../assets/course_details/fileType1.png" alt="" />
-                                <span> {{ accessory.file_name }} </span>
+                            <div v-if="it.accessory_list.length > 0">
+                              <span>附件</span>
+                              <div>
+                                <div
+                                  v-for="(accessory, accessory_i) in it.accessory_list"
+                                  :key="accessory_i"
+                                  class="btn"
+                                >
+                                  <img src="../../assets/course_details/fileType1.png" alt="" />
+                                  <span> {{ accessory.file_name }} </span>
+                                </div>
                               </div>
                             </div>
                           </div>
-                        </div>
-                      </el-collapse-item>
+                        </el-collapse-item>
+                      </div>
                     </div>
-                  </div>
-                  <div class="tasks">
-                    <div class="title">
-                      <span></span>
-                      课中任务
-                    </div>
-                    <div class="content">
-                      <el-collapse-item
-                        v-for="(it, it_i) in item.mid_task_list"
-                        :key="it_i"
-                        :name="it.id"
-                      >
-                        <div
-                          slot="title"
-                          :class="openList.indexOf(it.id) !== -1 ? 'contenttitle2' : 'contenttitle'"
+                    <div class="tasks">
+                      <div class="title">
+                        <span></span>
+                        课中任务
+                      </div>
+                      <div class="content">
+                        <el-collapse-item
+                          v-for="(it, it_i) in item.mid_task_list"
+                          :key="it_i"
+                          :name="it.id"
                         >
-                          <span>{{ it.name }}</span>
-                          <span>
-                            <span class="gray">{{ it.begin_time }} ~ {{ it.end_time }}</span>
-                            <span class="gray">···</span>
-                          </span>
-                        </div>
-                        <div class="detail">
-                          <div>
-                            <span>说明</span>
-                            <p>
-                              {{ it.content }}
-                            </p>
+                          <div
+                            slot="title"
+                            :class="
+                              openList.indexOf(it.id) !== -1 ? 'contenttitle2' : 'contenttitle'
+                            "
+                          >
+                            <span>{{ it.name }}</span>
+                            <span>
+                              <span class="gray">{{ it.begin_time }} ~ {{ it.end_time }}</span>
+                              <span class="gray">···</span>
+                            </span>
                           </div>
-                          <div v-if="it.courseware_list.length > 0">
-                            <span>课件</span>
+                          <div class="detail">
                             <div>
-                              <div
-                                v-for="(courseware, courseware_i) in it.courseware_list"
-                                :key="courseware_i"
-                                class="btn"
-                              >
-                                <img src="../../assets/course_details/file.png" alt="" />
-                                <span> {{ courseware.courseware_name }} </span>
+                              <span>说明</span>
+                              <p>
+                                {{ it.content }}
+                              </p>
+                            </div>
+                            <div v-if="it.courseware_list.length > 0">
+                              <span>课件</span>
+                              <div>
+                                <div
+                                  v-for="(courseware, courseware_i) in it.courseware_list"
+                                  :key="courseware_i"
+                                  class="btn"
+                                >
+                                  <img src="../../assets/course_details/file.png" alt="" />
+                                  <span> {{ courseware.courseware_name }} </span>
+                                </div>
                               </div>
                             </div>
-                          </div>
-                          <div v-if="it.accessory_list.length > 0">
-                            <span>附件</span>
-                            <div>
-                              <div
-                                v-for="(accessory, accessory_i) in it.accessory_list"
-                                :key="accessory_i"
-                                class="btn"
-                              >
-                                <img src="../../assets/course_details/fileType1.png" alt="" />
-                                <span> {{ accessory.file_name }} </span>
+                            <div v-if="it.accessory_list.length > 0">
+                              <span>附件</span>
+                              <div>
+                                <div
+                                  v-for="(accessory, accessory_i) in it.accessory_list"
+                                  :key="accessory_i"
+                                  class="btn"
+                                >
+                                  <img src="../../assets/course_details/fileType1.png" alt="" />
+                                  <span> {{ accessory.file_name }} </span>
+                                </div>
                               </div>
                             </div>
                           </div>
-                        </div>
-                      </el-collapse-item>
-                    </div>
-                  </div>
-                  <div v-if="item.after_task_list.length > 0" class="tasks">
-                    <div class="title">
-                      <span></span>
-                      课后任务
+                        </el-collapse-item>
+                      </div>
                     </div>
-                    <div class="content">
-                      <el-collapse-item
-                        v-for="(it, it_i) in item.after_task_list"
-                        :key="it_i"
-                        :name="it.id"
-                      >
-                        <div
-                          slot="title"
-                          :class="openList.indexOf(it.id) !== -1 ? 'contenttitle2' : 'contenttitle'"
+                    <div v-if="item.after_task_list.length > 0" class="tasks">
+                      <div class="title">
+                        <span></span>
+                        课后任务
+                      </div>
+                      <div class="content">
+                        <el-collapse-item
+                          v-for="(it, it_i) in item.after_task_list"
+                          :key="it_i"
+                          :name="it.id"
                         >
-                          <span>{{ it.name }}</span>
-                          <span>
-                            <span class="gray">{{ it.begin_time }} ~ {{ it.end_time }}</span>
-                            <span class="gray">···</span>
-                          </span>
-                        </div>
-                        <div class="detail">
-                          <div>
-                            <span>说明</span>
-                            <p>
-                              {{ it.content }}
-                            </p>
+                          <div
+                            slot="title"
+                            :class="
+                              openList.indexOf(it.id) !== -1 ? 'contenttitle2' : 'contenttitle'
+                            "
+                          >
+                            <span>{{ it.name }}</span>
+                            <span>
+                              <span class="gray">{{ it.begin_time }} ~ {{ it.end_time }}</span>
+                              <span class="gray">···</span>
+                            </span>
                           </div>
-                          <div v-if="it.courseware_list.length > 0">
-                            <span>课件</span>
+                          <div class="detail">
                             <div>
-                              <div
-                                v-for="(courseware, courseware_i) in it.courseware_list"
-                                :key="courseware_i"
-                                class="btn"
-                              >
-                                <img src="../../assets/course_details/file.png" alt="" />
-                                <span> {{ courseware.courseware_name }} </span>
+                              <span>说明</span>
+                              <p>
+                                {{ it.content }}
+                              </p>
+                            </div>
+                            <div v-if="it.courseware_list.length > 0">
+                              <span>课件</span>
+                              <div>
+                                <div
+                                  v-for="(courseware, courseware_i) in it.courseware_list"
+                                  :key="courseware_i"
+                                  class="btn"
+                                >
+                                  <img src="../../assets/course_details/file.png" alt="" />
+                                  <span> {{ courseware.courseware_name }} </span>
+                                </div>
                               </div>
                             </div>
-                          </div>
-                          <div v-if="it.accessory_list.length > 0">
-                            <span>附件</span>
-                            <div>
-                              <div
-                                v-for="(accessory, courseware_i) in it.accessory_list"
-                                :key="courseware_i"
-                                class="btn"
-                              >
-                                <img src="../../assets/course_details/fileType1.png" alt="" />
-                                <span> {{ accessory.file_name }} </span>
+                            <div v-if="it.accessory_list.length > 0">
+                              <span>附件</span>
+                              <div>
+                                <div
+                                  v-for="(accessory, courseware_i) in it.accessory_list"
+                                  :key="courseware_i"
+                                  class="btn"
+                                >
+                                  <img src="../../assets/course_details/fileType1.png" alt="" />
+                                  <span> {{ accessory.file_name }} </span>
+                                </div>
                               </div>
                             </div>
                           </div>
-                        </div>
-                      </el-collapse-item>
+                        </el-collapse-item>
+                      </div>
                     </div>
                   </div>
-                </div>
-              </el-collapse-item>
-            </el-collapse>
+                </el-collapse-item>
+              </el-collapse>
+            </div>
           </div>
         </div>
-      </div>
 
-      <el-dialog
-        class="orderDialog"
-        title="商品详情"
-        :visible.sync="auditShow"
-        width="720px"
-        :before-close="closeaudit"
-      >
-        <audit :goods-id="goods_id" :data="CourseData" :goods-type="goods_type" />
-      </el-dialog>
+        <el-dialog
+          class="orderDialog"
+          title="商品详情"
+          :visible.sync="auditShow"
+          width="720px"
+          :before-close="closeaudit"
+        >
+          <audit :goods-id="goods_id" :data="CourseData" :goods-type="goods_type" />
+        </el-dialog>
+      </div>
+    </div>
+    <div v-else-if="!loading" class="non-existent">
+      <h1>该课程已下架</h1>
     </div>
   </div>
 </template>
@@ -347,7 +360,8 @@ export default {
       auditShow: false,
       loading: false,
       is_buy: false,
-      CourseData: null
+      CourseData: null,
+      isData: false
     };
   },
   created() {
@@ -361,6 +375,7 @@ export default {
     GetCourseInfoBox({ id: this.goods_id })
       .then(res => {
         this.CourseData = res;
+        this.isData = 'id' in res;
         this.getBackTime();
         this.loading = false;
       })
@@ -477,7 +492,7 @@ export default {
 
         span {
           color: #fff;
-          transform: translateX(4px) translateY(4px) rotateZ(45deg);
+          transform: translateX(4px) translateY(px) rotateZ(45deg);
           position: absolute;
           left: 30px;
           top: 10px;
@@ -965,6 +980,11 @@ export default {
     }
   }
 }
+
+.non-existent {
+  text-align: center;
+  margin-top: 15vh;
+}
 </style>
 
 <style lang="scss">