{"version":3,"file":"topic.dc96ddb8.mjs","sources":["../../../../pages/course/topic.vue"],"sourcesContent":["<template>\n  <NuxtLayout >\n    <div class=\"app_container detail_content\" v-loading=\"ctrl.loading\">\n      <div class=\"course_info\" v-if=\"opts.info.id\">\n        <div class=\"course_info_header\" ref=\"head\">\n          <div class=\"course_info_content\">\n            <div class=\"course_nav\">\n              <el-breadcrumb :separator-icon=\"ArrowRight\">\n                <el-breadcrumb-item :to=\"{ path: '/' }\"\n                  ><span class=\"nav_course_title\">首页</span></el-breadcrumb-item\n                >\n                <el-breadcrumb-item :to=\"{ path: '/course/list' }\"\n                  ><span class=\"nav_course_title\"\n                    >课程中心</span\n                  ></el-breadcrumb-item\n                >\n                <el-breadcrumb-item\n                  :to=\"{\n                    path: '/course/list',\n                    query: { courseType: opts.info.courseType },\n                  }\"\n                >\n                  <span class=\"nav_course_title\">{{\n                    opts.PeriodTypeEnum[opts.info.courseType]\n                  }}</span></el-breadcrumb-item\n                >\n                <el-breadcrumb-item\n                  ><div class=\"nav_course_title tx-ov\">\n                    {{ opts.info.courseName }}\n                  </div></el-breadcrumb-item\n                >\n              </el-breadcrumb>\n            </div>\n            <div class=\"course_message\">\n              <div class=\"course_cover\">\n                <img :src=\"opts.info.courseCover\" class=\"course_cover_img\" />\n                <div\n                  v-if=\"opts.info.buyStatus\"\n                  class=\"update_status\"\n                  :class=\"{\n                    success: !opts.info.overSet,\n                    danger: opts.info.overSet,\n                  }\"\n                >\n                  {{ !opts.info.overSet ? \"更新中\" : \"已完结\" }}\n                </div>\n              </div>\n              <div class=\"course_msg_content\">\n                <div class=\"course_price_content\">\n                  <div class=\"course_name\">\n                    <span class=\"course_name_tag\">{{\n                      opts.PeriodTypeEnum[opts.info.courseType]\n                    }}</span>\n                    <span>{{ opts.info.courseName }}</span>\n                  </div>\n                  <div class=\"course_int\">\n                    <div class=\"course_int_text tx-ov\">\n                      课程描述：{{ opts.info.courseDesc || '无' }}\n                    </div>\n                    <client-only v-if=\"opts.info.courseDesc.length > 35\">\n                      <el-popover\n                        :width=\"600\"\n                        placement=\"bottom-end\"\n                        :offset=\"5\"\n                        :show-arrow=\"false\"\n                        trigger=\"hover\"\n                      >\n                        <span\n                          style=\"line-height: 1.6; font-size: 14px; color: #999\"\n                          >{{ opts.info.courseDesc }}</span\n                        >\n                        <template #reference>\n                          <span class=\"loadmore\">更多</span>\n                        </template>\n                      </el-popover>\n                    </client-only>\n                  </div>\n                </div>\n                <div class=\"course_price_info\">\n                  <div class=\"course_price\">\n                    <span class=\"course_tip\">价格：</span>\n                    <span class=\"price_now\" :style=\"{ color: '#F01414' }\">\n                      <span class=\"price_icon\" v-if=\"opts.info.price > 0\"\n                        >￥</span\n                      >\n                      {{ opts.info.price ? opts.info.price.toFixed(2) : \"免费\" }}\n                    </span>\n                    <span class=\"price_old\" v-if=\"opts.info.linePrice > 0\">\n                      <span class=\"price_icon\">￥</span>\n                      {{ opts.info.linePrice.toFixed(2) }}\n                    </span>\n                  </div>\n                </div>\n                <div class=\"course_cell\">\n                  <span class=\"course_tip\">包含内容：</span>\n                  <span class=\"course_cell_item\"\n                    ><img src=\"@/assets/class.svg\" />&nbsp;专题课数：{{\n                      opts.info.resourceCount\n                    }}个\n                  </span>\n                </div>\n                <div class=\"course_int\" v-if=\"opts.info.courseAuthor\">\n                  <div class=\"course_int_text tx-ov\">课程作者：{{ opts.info.courseAuthor }}</div>\n                  <client-only v-if=\"opts.info.courseAuthor.length > 35\">\n                    <el-popover\n                      :width=\"600\"\n                      placement=\"bottom-end\"\n                      :offset=\"5\"\n                      :show-arrow=\"false\"\n                      trigger=\"hover\"\n                    >\n                      <span style=\"line-height: 1.6;font-size: 14px;color:#999\">{{ opts.info.courseAuthor }}</span>\n                      <template #reference>\n                        <span class=\"loadmore\">更多</span>\n                      </template>\n                    </el-popover>\n                  </client-only>\n                </div>\n                <div class=\"course_cell course_cell_valid\">\n                  <span class=\"course_tip\">有效期：</span>\n                  <template v-if=\"opts.info.courseStatus === 3\">\n                    <span class=\"valid_text\">已过期</span>\n                  </template>\n                  <template v-else>\n                    <span v-if=\"opts.info.validityType === 1\">永久有效</span>\n                    <span v-else-if=\"opts.info.validityType === 2\"\n                      >{{ opts.info.beginTime }} 至\n                      {{ opts.info.endTime }}\n                    </span>\n                    <span v-else-if=\"opts.info.validityType === 3\">\n                      {{ opts.info.days }}天\n                    </span>\n                  </template>\n                </div>\n                <div class=\"course_bottom\">\n                  <div class=\"course_btn_info\">\n                    <div class=\"course_btn\">\n                      <template v-if=\"opts.info.courseStatus\">\n                        <el-button\n                          @click=\"handleMake\"\n                          type=\"primary\"\n                          class=\"buy_btn\"\n                          v-if=\"opts.info.courseStatus === 1\"\n                          >预约课程</el-button\n                        >\n                        <el-button\n                          type=\"info\"\n                          class=\"buy_btn\"\n                          v-if=\"opts.info.courseStatus === 2\"\n                          >待开课</el-button\n                        >\n                        <el-button\n                          @click=\"handleOpenOther\"\n                          type=\"primary\"\n                          class=\"buy_btn\"\n                          v-if=\"opts.info.courseStatus === 3\"\n                          >查看其它课程</el-button\n                        >\n                      </template>\n                      <el-button\n                        v-if=\"!opts.info.courseStatus && opts.info.buyStatus\"\n                        class=\"buy_btn\"\n                        type=\"primary\"\n                        @click=\"handleBuy()\"\n                      >\n                        {{ !opts.info.enableFirst ? \"继续学习\" : \"开始学习\" }}\n                      </el-button>\n                      <el-button\n                        v-if=\"\n                          !opts.info.courseStatus &&\n                          !opts.info.buyStatus &&\n                          opts.info.supportAloneSales\n                        \"\n                        class=\"buy_btn\"\n                        type=\"primary\"\n                        @click=\"handleBuy()\"\n                      >\n                        {{ opts.info.price ? \"购买\" : \"开始学习\" }}\n                      </el-button>\n                      <el-button\n                        disabled\n                        v-if=\"\n                          !opts.info.courseStatus &&\n                          !opts.info.buyStatus &&\n                          !opts.info.supportAloneSales\n                        \"\n                        class=\"buy_btn\"\n                        type=\"primary\"\n                      >\n                        不支持单独售卖\n                      </el-button>\n                    </div>\n                    <div class=\"course_learn_msg\">\n                      <span class=\"learn_item\" v-if=\"shopData && shopData.config.showLearnUserCount && shopData.config.showCourseLearnUserCount\">{{ opts.info.saleCount }}人已购买</span\n                      >\n                      <span class=\"learn_item icon_btn\" @click=\"handleCollection\">\n                        <span\n                          class=\"iconfont\"\n                          :class=\"{\n                            'icon-collection': !opts.info.collectStatus,\n                            'icon-collections': opts.info.collectStatus,\n                          }\"\n                        ></span>\n                        <span class=\"icon_text_name\">收藏</span>\n                      </span>\n                      <span class=\"learn_item icon_btn\" @click=\"handleShare\">\n                        <span class=\"iconfont icon-share\"></span>\n                        <span class=\"icon_text_name\">分享</span>\n                      </span>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div class=\"nav_tabs\">\n            <div\n              class=\"nav_tabs_item\"\n              @click=\"handleChangeType('details')\"\n              :class=\"{ active: map.tabs === 'details' }\"\n            >\n              课程介绍\n            </div>\n            <div\n              class=\"nav_tabs_item\"\n              @click=\"handleChangeType('directory')\"\n              :class=\"{ active: map.tabs === 'directory' }\"\n            >\n              课程目录\n            </div>\n            <div\n              class=\"nav_tabs_item\"\n              @click=\"handleChangeType('comments')\"\n              :class=\"{ active: map.tabs === 'comments' }\"\n              v-if=\"opts.info.enableCourseComment\"\n            >\n              课程评论\n            </div>\n          </div>\n        </div>\n        <div class=\"detail_tab_pane\" v-show=\"map.tabs === 'details'\">\n          <div class=\"have_detail_list\" v-if=\"opts.info.courseViewDataList && opts.info.courseViewDataList.length > 0\">\n            <div class=\"have_detail_title\">包含该课程的还有</div>\n            <div class=\"have_scroll_view\">\n              <div\n                class=\"have_scroll_left\"\n                v-if=\"opts.scrollX > 0\"\n                @click=\"lastScroll\"\n              >\n                <el-icon><arrow-left /></el-icon>\n              </div>\n              <div\n                class=\"have_scroll_x\"\n                @scroll=\"handleScrollX\"\n                ref=\"scroll\"\n                :style=\"opts.style\"\n              >\n                <div\n                  class=\"course_have_item\"\n                  v-for=\"(item, idx) in opts.info.courseViewDataList\"\n                  :key=\"idx\"\n                  @click=\"handleBuy(item)\"\n                >\n                  <img\n                    class=\"course_have_img\"\n                    :src=\"item.courseCover\"\n                  />\n                  <div class=\"course_have_msg\">\n                    <div class=\"course_item_title\">{{ item.courseName }}</div>\n                    <span class=\"course_item_courseware\"\n                      >{{ item.resourceCount }}个课件</span\n                    >\n                  </div>\n                </div>\n              </div>\n              <div\n                class=\"have_scroll_right\"\n                v-if=\"getScrollRight()\"\n                @click=\"nextScroll\"\n              >\n                <el-icon><arrow-right /></el-icon>\n              </div>\n            </div>\n          </div>\n          <div class=\"detail_desc_content\" v-html=\"opts.info.courseIntro\"></div>\n        </div>\n        <div class=\"detail_tab_pane\" v-show=\"map.tabs === 'directory'\">\n          <div class=\"menu_have_num\">共{{ opts.topicList.length }}门课程</div>\n          <div\n            class=\"single_menu_item\"\n            v-for=\"(topic, i) in opts.topicList\"\n            :key=\"i\"\n            @click=\"handleBuy(topic)\"\n          >\n            <div class=\"single_menu_left\">\n              <img :src=\"topic.courseCover\" class=\"cover_single_cover\" />\n              <span class=\"course_tag_topic\">{{\n                opts.PeriodTypeEnum[topic.courseType]\n              }}</span>\n            </div>\n            <div class=\"single_menu_right\">\n              <div class=\"topic_item_name tx-ov-2\">{{ topic.courseName }}</div>\n              <div class=\"learn_num\" v-if=\"shopData.config.showLearnUserCount && shopData.config.showCourseLearnUserCount\">{{ topic.studyNum }}人已学习</div>\n              <div class=\"price_box\">\n                <span class=\"price_now_topic\">\n                  <span class=\"price_icon_topic\" v-if=\"topic.price > 0\">￥</span>\n                  <span>{{ topic.price ? topic.price.toFixed(2) : \"免费\" }}</span>\n                </span>\n              </div>\n            </div>\n          </div>\n        </div>\n        <div\n          class=\"detail_tab_pane\"\n          v-show=\"map.tabs === 'comments'\"\n          v-loading=\"ctrl.comment\"\n        >\n          <div\n            class=\"comment_add_box relative\"\n            v-if=\"token && opts.info.buyStatus && map.tabs === 'comments'\"\n          >\n            <div class=\"relative\">\n              <el-input\n                v-model=\"map.commentText\"\n                type=\"textarea\"\n                :rows=\"2\"\n                maxlength=\"500\"\n                show-word-limit\n                class=\"font14\"\n                placeholder=\"请输入...\"\n              ></el-input>\n              <span class=\"limit_count_box\"\n                >{{ map.commentText.length }} / 500</span\n              >\n            </div>\n            <div class=\"comment_add_btn\">\n              <emoji-box @select=\"handleSelectEmoji($event, map)\"></emoji-box>\n              <el-button\n                type=\"primary\"\n                @click=\"handleSaveComment(map.commentText)\"\n                :disabled=\"map.commentText === 0\"\n                class=\"comment_btn\"\n                >评论</el-button\n              >\n            </div>\n          </div>\n          <div class=\"all_txt\">全部评论&nbsp;{{ commentPage.totalCount }}</div>\n          <div class=\"course_comment_list\">\n            <div\n              class=\"course_comment_item\"\n              v-for=\"(comment, x) in opts.commentList\"\n              :key=\"x\"\n            >\n              <div class=\"course_comment_cover\">\n                <el-avatar\n                  :size=\"48\"\n                  class=\"comment_cover_img\"\n                  :src=\"comment.headPortrait\"\n                ></el-avatar>\n              </div>\n              <div class=\"course_comment_content\">\n                <div class=\"course_comment_user\">{{ comment.userName }}</div>\n                <div\n                  class=\"course_comment_int\"\n                  :class=\"{ 'tx-ov-2': !comment.showContent }\"\n                >\n                  {{ comment.commentContent }}\n                </div>\n                <el-button\n                  type=\"text\"\n                  v-if=\"comment.commentContent.length > 137\"\n                  @click=\"comment.showContent = !comment.showContent\"\n                  >{{ comment.showContent ? \"收起\" : \"展开\" }}</el-button\n                >\n                <div\n                  class=\"course_comment_btn\"\n                  :class=\"{ has: comment.replyList }\"\n                >\n                  <div class=\"course_comment_time\">{{ comment.gmtCreate }}</div>\n                  <div class=\"comment_btn_list\">\n                    <!--                    <div class=\"btn_icons\" @mouseover=\"handleFocus(comment,'report')\" @mouseleave=\"handleBlur(comment,'report')\" :class=\"{hover:comment.report}\">-->\n                    <!--                      <span class=\"iconfont icon-report\"></span>-->\n                    <!--                      <span class=\"btn_text\">举报</span>-->\n                    <!--                    </div>-->\n                    <div\n                      class=\"btn_icons\"\n                      v-if=\"userInfo && userInfo.id !== comment.userId\"\n                      @click=\"handleShowComment(comment)\"\n                      @mouseover=\"handleFocus(comment, 'add')\"\n                      @mouseleave=\"handleBlur(comment, 'add')\"\n                      :class=\"{ hover: comment.add }\"\n                    >\n                      <span class=\"iconfont icon-comment\"></span>\n                      <span class=\"btn_text\">回复</span>\n                    </div>\n                    <!--                    <div class=\"btn_icons\" @mouseover=\"handleFocus(comment,'love')\" @mouseleave=\"handleBlur(comment,'love')\" :class=\"{hover:comment.love,active:comment.like}\">-->\n                    <!--                      <span class=\"iconfont\" :class=\"{'icon-like':(!comment.love&&!comment.like),'icon-like1':comment.love||comment.like}\"></span>-->\n                    <!--                      <span class=\"btn_text\">{{comment.likeNum}}</span>-->\n                    <!--                    </div>-->\n                  </div>\n                </div>\n                <div\n                  class=\"comment_add_box relative\"\n                  v-if=\"comment.showCommentChild && token\"\n                >\n                  <div class=\"relative\">\n                    <el-input\n                      v-model=\"comment.commentText\"\n                      type=\"textarea\"\n                      :rows=\"1\"\n                      maxlength=\"500\"\n                      show-word-limit\n                      class=\"font14\"\n                      :placeholder=\"`回复 ${comment.userName}`\"\n                    ></el-input>\n                    <span class=\"limit_count_box\"\n                      >{{ comment.commentText.length }} / 500</span\n                    >\n                  </div>\n                  <div class=\"comment_add_btn\">\n                    <emoji-box\n                      @select=\"handleSelectEmoji($event, comment)\"\n                    ></emoji-box>\n                    <el-button\n                      type=\"primary\"\n                      @click=\"\n                        handleSaveComment(\n                          comment.commentText,\n                          comment.id,\n                          comment\n                        )\n                      \"\n                      :disabled=\"comment.commentText.length === 0\"\n                      class=\"comment_btn\"\n                      >评论</el-button\n                    >\n                  </div>\n                </div>\n                <div class=\"course_child_comment\" v-if=\"comment.replyList\">\n                  <div\n                    class=\"course_comment_item\"\n                    :class=\"{ hide: !comment.showAllReply && x > 1 }\"\n                    v-for=\"(child, x) in comment.replyList\"\n                    :key=\"x\"\n                  >\n                    <div class=\"course_comment_cover\">\n                      <el-avatar\n                        :size=\"48\"\n                        class=\"comment_cover_img\"\n                        :src=\"child.headPortrait\"\n                      ></el-avatar>\n                    </div>\n                    <div class=\"course_comment_content\">\n                      <div class=\"course_comment_user\">{{ child.userName }}</div>\n                      <div\n                        class=\"course_comment_int\"\n                        :class=\"{ 'tx-ov-2': !child.showContent }\"\n                      >\n                        回复 <span class=\"both\">{{ child.replyUserName }}</span> :\n                        {{ child.commentContent }}\n                      </div>\n                      <el-button\n                        type=\"text\"\n                        v-if=\"child.commentContent.length > 137\"\n                        @click=\"child.showContent = !child.showContent\"\n                        >{{ child.showContent ? \"收起\" : \"展开\" }}</el-button\n                      >\n                      <div class=\"course_comment_btn\">\n                        <div class=\"course_comment_time\">\n                          {{ formatDay(child.gmtCreate) }}\n                        </div>\n                        <div class=\"comment_btn_list\">\n                          <!--                          <div class=\"btn_icons\" @mouseover=\"handleFocus(child,'report')\" @mouseleave=\"handleBlur(child,'report')\" :class=\"{hover:child.report}\">-->\n                          <!--                            <span class=\"iconfont icon-report\"></span>-->\n                          <!--                            <span class=\"btn_text\">举报</span>-->\n                          <!--                          </div>-->\n                          <div\n                            class=\"btn_icons\"\n                            v-if=\"userInfo && userInfo.id !== child.userId\"\n                            @click=\"handleShowComment(child)\"\n                            @mouseover=\"handleFocus(child, 'add')\"\n                            @mouseleave=\"handleBlur(child, 'add')\"\n                            :class=\"{ hover: child.add }\"\n                          >\n                            <span class=\"iconfont icon-comment\"></span>\n                            <span class=\"btn_text\">回复</span>\n                          </div>\n                          <!--                          <div class=\"btn_icons\" @mouseover=\"handleFocus(child,'love')\" @mouseleave=\"handleBlur(child,'love')\" :class=\"{hover:child.love,active:child.like}\">-->\n                          <!--                            <span class=\"iconfont\" :class=\"{'icon-like':(!child.love&&!child.like),'icon-like1':child.love||child.like}\"></span>-->\n                          <!--                            <span class=\"btn_text\">{{ child.likeNum }}</span>-->\n                          <!--                          </div>-->\n                        </div>\n                      </div>\n                      <div\n                        class=\"comment_add_box relative\"\n                        v-if=\"child.showCommentChild\"\n                      >\n                        <div class=\"relative\">\n                          <el-input\n                            v-model=\"child.commentText\"\n                            type=\"textarea\"\n                            :rows=\"1\"\n                            maxlength=\"500\"\n                            show-word-limit\n                            class=\"font14\"\n                            :placeholder=\"`回复 ${child.userName}`\"\n                          ></el-input>\n                          <span class=\"limit_count_box\"\n                            >{{ child.commentText.length }} / 500</span\n                          >\n                        </div>\n                        <div class=\"comment_add_btn\">\n                          <emoji-box\n                            @select=\"handleSelectEmoji($event, child)\"\n                          ></emoji-box>\n                          <el-button\n                            type=\"primary\"\n                            @click=\"\n                              handleSaveComment(\n                                child.commentText,\n                                child.id,\n                                child\n                              )\n                            \"\n                            :disabled=\"child.commentText.length === 0\"\n                            class=\"comment_btn\"\n                            >评论</el-button\n                          >\n                        </div>\n                      </div>\n                    </div>\n                  </div>\n                  <el-button\n                    class=\"mgt20\"\n                    type=\"text\"\n                    @click=\"comment.showAllReply = !comment.showAllReply\"\n                    v-if=\"comment.replyList.length > 2\"\n                  >\n                    {{\n                      comment.showAllReply\n                        ? \"收起\"\n                        : `查看全部${comment.replyList.length}条评论 >`\n                    }}</el-button\n                  >\n                </div>\n              </div>\n            </div>\n            <div class=\"loading_btn\">\n              <el-button\n                type=\"text\"\n                class=\"warning_color\"\n                @click=\"handleScroll\"\n                v-if=\"\n                  commentPage.totalPage > commentPage.pageCurrent && !ctrl.comment\n                \"\n                >查看更多</el-button\n              >\n              <span class=\"loading_text\" v-if=\"ctrl.comment\">加载中...</span>\n              <span\n                class=\"loading_text\"\n                v-if=\"\n                  commentPage.totalPage <= commentPage.pageCurrent &&\n                  !ctrl.comment\n                \"\n                >已经到底部，没有更多内容了</span\n              >\n            </div>\n          </div>\n        </div>\n        <div class=\"fixed_header\" v-if=\"ctrl.fixed\">\n          <div class=\"fixed_content\">\n            <a class=\"nav_logo\" href=\"/\">\n              <img\n                v-if=\"componentInfo.websiteLogo\"\n                :src=\"componentInfo.websiteLogo\"\n                alt=\"\"\n              />\n            </a>\n            <div class=\"nav_tabs_header\">\n              <div\n                class=\"nav_tabs_item\"\n                @click=\"handleChangeType('details')\"\n                :class=\"{ active: map.tabs === 'details' }\"\n              >\n                课程介绍\n              </div>\n              <div\n                class=\"nav_tabs_item\"\n                @click=\"handleChangeType('directory')\"\n                :class=\"{ active: map.tabs === 'directory' }\"\n              >\n                课程目录\n              </div>\n              <!-- <div class=\"nav_tabs_item\" @click=\"handleChangeType('notes')\" :class=\"{active:map.tabs === 'notes'}\">笔记</div> -->\n              <div\n                class=\"nav_tabs_item\"\n                @click=\"handleChangeType('comments')\"\n                :class=\"{ active: map.tabs === 'comments' }\"\n                v-if=\"opts.info.enableCourseComment\"\n              >\n                课程评论\n              </div>\n              <!-- <div class=\"nav_tabs_item\" @click=\"handleChangeType('courseware')\" :class=\"{active:map.tabs === 'courseware'}\">课件</div> -->\n            </div>\n            <div class=\"course_btn\">\n              <template v-if=\"opts.info.courseStatus\">\n                <el-button\n                  @click=\"handleMake\"\n                  type=\"primary\"\n                  class=\"buy_btn\"\n                  v-if=\"opts.info.courseStatus === 1\"\n                  >预约课程</el-button\n                >\n                <el-button\n                  type=\"info\"\n                  class=\"buy_btn\"\n                  v-if=\"opts.info.courseStatus === 2\"\n                  >待开课</el-button\n                >\n                <el-button\n                  @click=\"handleOpenOther\"\n                  type=\"primary\"\n                  class=\"buy_btn\"\n                  v-if=\"opts.info.courseStatus === 3\"\n                  >查看其它课程</el-button\n                >\n              </template>\n              <el-button\n                v-if=\"!opts.info.courseStatus && opts.info.buyStatus\"\n                class=\"buy_btn\"\n                type=\"primary\"\n                @click=\"handleBuy()\"\n              >\n                {{ !opts.info.enableFirst ? \"继续学习\" : \"开始学习\" }}\n              </el-button>\n              <el-button\n                v-if=\"\n                  !opts.info.courseStatus &&\n                  !opts.info.buyStatus &&\n                  opts.info.supportAloneSales\n                \"\n                class=\"buy_btn\"\n                type=\"primary\"\n                @click=\"handleBuy()\"\n              >\n                {{ opts.info.price ? \"购买\" : \"开始学习\" }}\n              </el-button>\n              <el-button\n                disabled\n                v-if=\"\n                  !opts.info.courseStatus &&\n                  !opts.info.buyStatus &&\n                  !opts.info.supportAloneSales\n                \"\n                class=\"buy_btn\"\n                type=\"primary\"\n              >\n                不支持单独售卖\n              </el-button>\n            </div>\n          </div>\n        </div>\n      </div>\n      <client-only>\n        <course-share\n          @share=\"handleShare\"\n          :info=\"opts.info\"\n          v-model=\"ctrl.share\"\n        ></course-share>\n      </client-only>\n    </div>\n  </NuxtLayout>\n</template>\n<script setup>\nimport EmojiBox from \"@/components/comment/emojiBox.vue\";\nimport {\n  ArrowRight,\n  ArrowDown,\n  ArrowUp,\n  ArrowLeft,\n} from \"@element-plus/icons-vue\";\nimport { useUserStore } from \"../../stores/user\";\nimport {\n  courseAuthAppointment,\n  courseCommentPage,\n  courseCommentReplySave,\n  courseCommentSave,\n  courseSubjectMenuView,\n  courseTopicMenuView,\n  getAuthCourseView,\n  getCourseView,\n} from \"../../api/course\";\nimport cookie from \"@/utils/cookies\";\nimport { formatDuring, formatDay, forbidCopy } from \"../../utils\";\nimport { getHearder } from \"@/api/layouts\";\nimport { collectionUserDelete, collectionUserSave } from \"../../api/system\";\nimport { ElMessage } from \"element-plus\";\nimport { ElMessageBox } from \"element-plus\";\nconst route = useRoute();\nconst { data: componentInfo } = await useAsyncData(\"header\", async (ctx) => {\n  return getHearder();\n});\nlet cookieData = cookie.getShop()\nuseHead({\n  title: \"套餐详情-\" + cookieData.shopName,\n});\n\n// console.log(courseInfo.value,'courseInfo')\n\nconst store = useUserStore();\nconst { getEnumList, getToken, userView, shopData } = store;\nconst router = useRouter();\nconst head = ref(null);\nconst userInfo = computed(() => store.userView);\n\nconst token = computed(() => {\n  return getToken();\n});\nconst map = reactive({\n  id: \"\",\n  tabs: \"details\",\n  commentText: ''\n});\nconst opts = reactive({\n  errorNum: 0,\n  info: {},\n  topicList: [],\n  style: {\n    width: \"1100px\",\n  },\n  infoTimer: null,\n  scrollX: 0,\n  PeriodTypeEnum: {},\n  commentList: [],\n});\nconst commentPage = reactive({\n  pageCurrent: 1,\n  pageSize: 10,\n  totalPage: 1,\n  totalCount: 0,\n});\nconst ctrl = reactive({\n  loading: false,\n  showDesc: false,\n  comment: false,\n  fixed: false,\n  share: false,\n});\nconst scroll = ref(null);\nconst handleShare = () => {\n  // 分享\n  ctrl.share = true;\n};\nconst getScrollRight = () => {\n  // 获取右侧按钮是否显示\n  if (!opts.info.courseViewDataList) {\n    return false;\n  } else {\n    if (scroll.value) {\n      let scrollLength = scroll.value.scrollWidth - scroll.value.offsetWidth;\n      return (\n        scrollLength !== scroll.value.scrollLeft &&\n        opts.info.courseViewDataList.length > 3\n      );\n    } else {\n      return false;\n    }\n  }\n};\nconst handleShowComment = (comment) => {\n  // 显示评论框\n  comment.showCommentChild = !comment.showCommentChild;\n  if (comment.showCommentChild) {\n    comment.commentText = \"\";\n  }\n};\nconst handleBeforeValid = () => {\n  // 课程是否已过期\n  if (opts.info.courseStatus === 3) {\n    ElMessage.error(\"课程已过期\");\n    return false;\n  } else {\n    return true;\n  }\n};\nconst handleMake = () => {\n  // 预约\n  if (!token.value) {\n    router.push({\n      path: \"/login\",\n      query: {\n        redirect: encodeURIComponent(route.fullPath),\n      },\n    });\n    return;\n  }\n  courseAuthAppointment({ id: opts.info.id }).then((res) => {\n    if (res) {\n      ElMessageBox.alert(\n        \"课程开课时，我们将以短信的形式通知您，请您留意哟~\",\n        \"预约成功提醒\",\n        {\n          confirmButtonText: \"知道了\",\n          type: \"success\",\n          center: true,\n        }\n      ).then(() => {});\n      getInfo();\n    }\n  });\n};\nconst handleBuy = (row) => {\n  // 购买\n  if (!handleBeforeValid()) {\n    return false;\n  }\n\n  if (opts.info.courseStatus === 1) {\n    handleMake();\n    return;\n  }\n  if (opts.info.courseStatus === 2) {\n    return;\n  }\n  if (opts.info.courseStatus === 3) {\n    handleOpenOther();\n    return;\n  }\n  if (opts.info.price > 0 && !opts.info.buyStatus) {\n    if (!shopData.config.enabledPay) {\n      ElMessage.error(shopData.config.disablePayTips);\n      return;\n    }\n    if (!shopData.config.enabledAliPay && !shopData.config.enabledWxPay) {\n      ElMessage.error(shopData.config.disablePayTips);\n      return;\n    }\n  }\n  if (opts.info.price > 0 && !opts.info.buyStatus) {\n    if (!opts.info.publishStatus) {\n      ElMessage.error(\"课程暂未发布\");\n      return false;\n    }\n    if (token.value) {\n      router.push({\n        path: \"/pay/buy\",\n        query: {\n          id: map.id,\n        },\n      });\n    } else {\n      router.push({\n        path: \"/login\",\n        query: {\n          redirect: encodeURIComponent(route.fullPath),\n        },\n      });\n    }\n  } else {\n    if (\n      !opts.info.enableNotLoginWatch &&\n      !opts.info.buyStatus &&\n      opts.info.price === 0 &&\n      !token.value\n    ) {\n      ElMessage.error(\"请登录后再进行观看\");\n      router.push({\n        path: \"/login\",\n        query: {\n          redirect: encodeURIComponent(route.fullPath),\n        },\n      });\n      return;\n    }\n    if (row) {\n      let pathRouter = router.resolve({\n        path: \"/course/subject\",\n        query: {\n          id: row.id,\n          topicId: map.id,\n        },\n      });\n      window.open(pathRouter.href);\n    } else {\n      getMenuList(() => {\n        if (opts.topicList.length > 0) {\n          router.push({\n            path: \"/course/subject\",\n            query: {\n              id: opts.topicList[0].id,\n              topicId: map.id,\n            },\n          });\n        } else {\n          ElMessage.error('暂无课程学习!')\n        }\n      });\n    }\n  }\n};\nconst handleOpenOther = () => {\n  router.push({\n    path: \"/course/list\",\n  });\n};\nconst handleFocus = (row, key) => {\n  // 悬浮\n  row[key] = !row[key];\n};\nconst handleBlur = (row, key) => {\n  // 离开悬浮\n  row[key] = false;\n};\n// 向右滚动\nconst nextScroll = () => {\n  scroll.value.scrollLeft += 327 * 3;\n  opts.scrollX = scroll.value.scrollLeft;\n};\n// 向左滚动\nconst lastScroll = () => {\n  scroll.value.scrollLeft -= 327 * 3;\n  if (scroll.value.scrollLeft < 0) {\n    scroll.value.scrollLeft = 0;\n  }\n  opts.scrollX = scroll.value.scrollLeft;\n};\n// 滚动轴事件\nconst handleScrollX = () => {\n  if (scroll.value.scrollLeft < 0) {\n    scroll.value.scrollLeft = 0;\n  }\n  opts.scrollX = scroll.value.scrollLeft;\n};\nconst handleOpenTeacher = (teacher) => {\n  // 教师详情\n  router.push({\n    path: \"/teacher/view\",\n    query: {\n      id: teacher.id,\n    },\n  });\n};\n// 获取详情\nconst getInfo = () => {\n  ctrl.loading = true;\n  if (token.value) {\n    getAuthCourseView(map)\n      .then((res) => {\n        ctrl.loading = false;\n        opts.info = res;\n        // route.meta.title = opts.info.courseName\n        opts.info.courseIntro = opts.info.courseIntro\n          .replace(\n            /<a style=\"position: relative; width: 144px; height: 80px; margin:  10px; display: inline-block;/,\n            '<a style=\"position: relative; width: 144px; height: auto; margin:  10px; display: inline-block;'\n          )\n          .replace(/<img/g, '<img style=\"width:100%\"');\n        if (opts.infoTimer) {\n          clearInterval(opts.infoTimer);\n          opts.infoTimer = null;\n        }\n        nextTick(() => {\n          if (opts.info && opts.info.enableForbidContentCopy) {\n            forbidCopy(\".detail_desc_content\");\n          }\n        });\n      })\n      .catch(() => {\n        ctrl.loading = false;\n        opts.errorNum++;\n        if (!opts.infoTimer) {\n          opts.infoTimer = setInterval(getInfo, 3000);\n        }\n        if (opts.errorNum > 5) {\n          if (opts.infoTimer) {\n            clearInterval(opts.infoTimer);\n            opts.infoTimer = null;\n          }\n        }\n      });\n  } else {\n    getCourseView(map)\n      .then((res) => {\n        ctrl.loading = false;\n        opts.info = res;\n        // route.meta.title = opts.info.courseName\n        opts.info.courseIntro = opts.info.courseIntro\n          .replace(\n            /<a style=\"position: relative; width: 144px; height: 80px; margin:  10px; display: inline-block;/,\n            '<a style=\"position: relative; width: 144px; height: auto; margin:  10px; display: inline-block;'\n          )\n          .replace(/<img/g, '<img style=\"width:100%\"');\n        if (opts.infoTimer) {\n          clearInterval(opts.infoTimer);\n          opts.infoTimer = null;\n        }\n        nextTick(() => {\n          if (opts.info && opts.info.enableForbidContentCopy) {\n            forbidCopy(\".detail_desc_content\");\n          }\n        });\n      })\n      .catch(() => {\n        ctrl.loading = false;\n      });\n  }\n};\nconst handleScroll = () => {\n  // 滚动到底翻页\n  if (map.tabs === \"comments\") {\n    if (commentPage.totalPage > commentPage.pageCurrent) {\n      commentPage.pageCurrent++;\n      getComment();\n    }\n  }\n};\n// 显示描述\nconst handleChangeDesc = () => {\n  ctrl.showDesc = !ctrl.showDesc;\n};\n// tabs切换\nconst handleChangeType = (item) => {\n  map.tabs = item;\n  if (map.tabs === \"directory\" && opts.topicList.length === 0) {\n    getMenuList();\n  } else if (map.tabs === \"comments\" && opts.commentList.length === 0) {\n    commentPage.pageCurrent = 1;\n    getComment();\n  }\n};\nconst getMenuList = (fn = () => {}) => {\n  // 专题课目录\n  courseTopicMenuView({ id: map.id }).then((res) => {\n    opts.topicList = res;\n    fn && fn();\n  });\n};\nconst handleSelectEmoji = (emoji, obj) => {\n  if (!obj.commentText) {\n    obj.commentText = emoji + \"\";\n  } else {\n    if (obj.commentText.length + 2 <= 500) {\n      obj.commentText += emoji;\n    }\n  }\n};\nconst handleSaveComment = (content, id, row) => {\n  // 保存评论\n  if (content.length > 500) {\n    ElMessage.error(\"字数已超出限制！\");\n    return;\n  }\n  if (row) {\n    courseCommentReplySave({\n      commentContent: content,\n      goodsType: 1,\n      parentId: id,\n    }).then((res) => {\n      row.commentText = \"\";\n      ElMessage.success(res);\n      getComment();\n    });\n  } else {\n    courseCommentSave({\n      commentContent: content,\n      courseId: opts.info.id,\n      goodsType: 1,\n    }).then((res) => {\n      map.commentText = \"\";\n      ElMessage.success(res);\n      getComment();\n    });\n  }\n};\n// 评论列表\nconst getComment = () => {\n  ctrl.comment = true;\n  courseCommentPage(\n    { courseId: map.id, goodsType: 1 },\n    commentPage.pageCurrent,\n    commentPage.pageSize\n  ).then((res) => {\n    ctrl.comment = false;\n    if (res.list) {\n      res.list.forEach((el) => {\n        el.commentShow = false;\n        el.showChild = false;\n        if (el.replyList) {\n          el.replyList.forEach((e) => {\n            e.commentShow = false;\n          });\n        }\n      });\n    }\n    if (commentPage.pageCurrent === 1) {\n      opts.commentList = res.list || [];\n    } else {\n      res.list = res.list || [];\n      res.list.forEach((el) => {\n        opts.commentList.push(el);\n      });\n    }\n    commentPage.pageCurrent = res.pageCurrent;\n    commentPage.totalPage = res.totalPage;\n    commentPage.totalCount = res.totalCount;\n  });\n};\nconst handleScrollBody = () => {\n  if (opts.info.buyStatus === 1) {\n    return false;\n  }\n  const app = document.querySelector(\"#app\");\n  let top = Math.floor(app.scrollTop || window.pageYOffset);\n  if (top >= head.value.clientHeight - 10) {\n    ctrl.fixed = true;\n  } else {\n    ctrl.fixed = false;\n  }\n  // console.log(top,'====>',head.value.clientHeight)\n};\nconst handleCollection = () => {\n  // 收藏\n  if (ctrl.isClick) {\n    return false;\n  }\n  ctrl.isClick = true;\n  if (!token.value) {\n    router.push({\n      path: \"/login\",\n      query: {\n        redirect: encodeURIComponent(route.fullPath),\n      },\n    });\n    return;\n  }\n  if (opts.info.collectStatus) {\n    collectionUserDelete({ collectionType: 1, resourceId: opts.info.id })\n      .then((res) => {\n        ElMessage.success(res);\n        ctrl.isClick = false;\n        getInfo();\n      })\n      .catch(() => {\n        ctrl.isClick = false;\n      });\n  } else {\n    collectionUserSave({ collectionType: 1, resourceId: opts.info.id })\n      .then((res) => {\n        ElMessage.success(res);\n        ctrl.isClick = false;\n        getInfo();\n      })\n      .catch(() => {\n        ctrl.isClick = false;\n      });\n  }\n};\nconst { data, pending, error } = await useAsyncData(\n  \"courseVideoView\" + route.query.id,\n  () => {\n    return new Promise(async (resolve) => {\n      if (route.query.id) {\n        map.id = route.query.id;\n      }\n      if (route.query.superiorResourceId) {\n        map.superiorResourceId = route.query.superiorResourceId;\n      }\n      let courseFn = getAuthCourseView;\n      if (!token.value) {\n        courseFn = getCourseView;\n      }\n      Promise.allSettled([\n        courseFn(map),\n        getEnumList(\"CourseTypeEnum\", \"obj\"),\n        courseTopicMenuView({ id: map.id }),\n      ]).then(([course, CourseTypeEnum, menu]) => {\n        let data = {};\n        if (course.status === \"fulfilled\") {\n          data.course = course.value;\n        } else {\n          data.course = {};\n        }\n        if (CourseTypeEnum.status === \"fulfilled\") {\n          data.CourseTypeEnum = CourseTypeEnum.value;\n        } else {\n          data.CourseTypeEnum = [];\n        }\n        if (menu.status === \"fulfilled\") {\n          data.subjectList = menu.value;\n        } else {\n          data.subjectList = [];\n        }\n        resolve(data);\n      });\n    });\n  },\n  { initialCache: false }\n);\nif (!pending.value && data.value) {\n  const d = data.value;\n  opts.PeriodTypeEnum = d.CourseTypeEnum;\n  opts.subjectList = d.menu;\n  opts.info = d.course;\n  opts.info.courseIntro = opts.info.courseIntro\n    .replace(\n      /<a style=\"position: relative; width: 144px; height: 80px; margin:  10px; display: inline-block;/,\n      '<a style=\"position: relative; width: 144px; height: auto; margin:  10px; display: inline-block;'\n    )\n    .replace(/<img/g, '<img style=\"width:100%\"');\n}\nuseHead({\n  title: computed(\n    () =>\n      `${\n        opts.info.courseName\n          ? opts.info.courseName + \"-\" + cookieData.shopName\n          : \"套餐详情\"\n      }`\n  ),\n  meta: [\n    {\n      hid: \"keywords\",\n      name: \"keywords\",\n      content: opts.info.courseName,\n    },\n    {\n      hid: \"description\",\n      name: \"description\",\n      content: opts.info.courseDesc\n        ? opts.info.courseDesc\n        : opts.info.courseName,\n    },\n  ],\n});\nonMounted(() => {\n  window.addEventListener(\"scroll\", handleScrollBody, true);\n  if (opts.info && opts.info.enableForbidContentCopy) {\n    forbidCopy(\".detail_desc_content\");\n  }\n});\nonUnmounted(() => {\n  // if(!token.value) {\n  window.removeEventListener(\"scroll\", handleScrollBody, true);\n  // }\n  if (opts.infoTimer) {\n    clearInterval(opts.infoTimer);\n    opts.infoTimer = null;\n  }\n});\n</script>\n\n<style scoped lang=\"scss\">\n.have_scroll_x {\n  overflow-x: auto;\n  display: inline-flex;\n  &::-webkit-scrollbar {\n    display: none;\n  }\n  &:hover::-webkit-scrollbar {\n    display: block;\n  }\n}\n.course_info_content {\n  padding: 20px calc((100vw - 1200px) / 2);\n  background-color: #ffffff;\n  border-top: 1px solid #ebeef5;\n}\n.nav_tabs_header {\n  background-color: #ffffff;\n  display: flex;\n  flex: 1;\n  padding-left: 60px;\n  .nav_tabs_item {\n    display: flex;\n    align-items: center;\n    margin-right: 50px;\n    font-size: 16px;\n    line-height: 65px;\n    white-space: nowrap;\n  }\n  .nav_tabs_item:hover {\n    cursor: pointer;\n    position: relative;\n    color: var(--el-color-primary);\n  }\n  .nav_tabs_item:hover::after {\n    content: \"\";\n    position: absolute;\n    left: 0;\n    bottom: 0;\n    width: 64px;\n    height: 3px;\n    border-radius: 1.5px;\n    background-color: var(--el-color-primary);\n  }\n  .active {\n    position: relative;\n    color: var(--el-color-primary);\n  }\n  .active::after {\n    content: \"\";\n    position: absolute;\n    left: 0;\n    bottom: 0;\n    width: 64px;\n    height: 3px;\n    border-radius: 1.5px;\n    background-color: var(--el-color-primary);\n  }\n}\n.nav_tabs {\n  padding: 20px calc((100vw - 1200px) / 2) 0;\n  background-color: #ffffff;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  .nav_tabs_item {\n    margin-right: 60px;\n    font-style: normal;\n    font-weight: normal;\n    font-size: 16px;\n    padding-bottom: 20px;\n    color: #333333;\n    position: relative;\n    cursor: pointer;\n  }\n\n  .nav_tabs_item.active,\n  .nav_tabs_item:hover {\n    color: #2256f6;\n    &:before {\n      content: \"\";\n      position: absolute;\n      bottom: 0;\n      background: #2256f6;\n      width: 64px;\n      padding-top: 3px;\n      left: 0;\n      border-radius: 10px;\n    }\n  }\n  .nav_tabs_item:last-child {\n    margin-right: 0;\n  }\n}\n.course_nav {\n  margin-bottom: 20px;\n}\n.nav_course_title {\n  color: #becadb;\n  font-weight: 400;\n  max-width: 115px;\n}\n.course_name_tag {\n  padding: 5px 3px;\n  border-radius: 5px 0;\n  background: rgba(61, 127, 255, 0.1);\n  display: inline-block;\n  font-style: normal;\n  width: 46px;\n  position: relative;\n  top: -2px;\n  text-align: center;\n  font-weight: normal;\n  font-size: 10px;\n  color: #3d7fff;\n  margin-right: 4px;\n}\n.course_cover_img {\n  width: 576px;\n  height: 320px;\n  object-fit: cover;\n  border-radius: 5px;\n}\n.course_name {\n  display: flex;\n  align-items: center;\n  font-style: normal;\n  font-size: 20px;\n  color: #333333;\n}\n.course_price_content {\n  width: 100%;\n}\n.course_msg_content {\n  width: 589px;\n  margin-left: 30px;\n  position: relative;\n}\n.course_message {\n  display: flex;\n  position: relative;\n}\n.course_int {\n  margin-top: 5px;\n  display: flex;\n  .course_in_icon {\n    min-width: 28px;\n    margin-left: 8px;\n    color: #666666;\n    cursor: pointer;\n  }\n  .course_int_text {\n    font-style: normal;\n    font-weight: normal;\n    font-size: 14px;\n    color: #999999;\n    width: 570px;\n  }\n  .loadmore {\n    font-size: 14px;\n    color: #666;\n  }\n}\n.course_cell {\n  overflow: hidden;\n  width: 100%;\n  display: flex;\n  align-items: center;\n  & + .course_cell {\n    margin-top: 12px;\n  }\n  .course_cell_item {\n    white-space: nowrap;\n    font-style: normal;\n    font-weight: normal;\n    font-size: 14px;\n    color: #333333;\n    display: flex;\n    align-items: center;\n  }\n  .course_cell_item:last-child {\n    padding-right: 0;\n  }\n  .course_cell_item + .course_cell_item {\n    padding-left: 24px;\n    position: relative;\n  }\n}\n.mgl3 {\n  margin-left: 3px;\n}\n.price_old {\n  color: #999999;\n  font-style: normal;\n  font-weight: normal;\n  font-size: 12px;\n  text-decoration-line: line-through;\n  margin-left: 5px;\n}\n.price_now {\n  font-style: normal;\n  font-weight: bold;\n  font-size: 26px;\n  color: #f01414;\n}\n.price_now .price_icon {\n  font-style: normal;\n  font-weight: normal;\n  font-size: 18px;\n  color: #f61818;\n}\n.course_btn_info {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  margin-top: 5px;\n}\n.buy_btn {\n  width: 154px;\n  height: 40px;\n  font-size: 16px;\n}\n.course_learn_msg {\n  display: flex;\n  align-items: center;\n}\n.learn_item {\n  position: relative;\n  font-style: normal;\n  font-weight: normal;\n  font-size: 14px;\n  color: #999999;\n  & + .learn_item {\n    padding-left: 20px;\n  }\n}\n.icon_text_name {\n  margin-left: 3px;\n}\n.icon_btn {\n  cursor: pointer;\n  .iconfont {\n    //margin-right: 5px;\n  }\n}\n.detail_tab_pane {\n  padding: 30px;\n  background-color: #ffffff;\n  border-radius: 5px;\n  width: 1200px;\n  margin: 10px auto auto;\n}\n.have_detail_list {\n  margin-bottom: 30px;\n}\n.have_detail_title {\n  font-style: normal;\n  font-weight: 550;\n  font-size: 16px;\n  color: #333333;\n  margin-bottom: 10px;\n}\n.have_scroll_view {\n  display: flex;\n  align-items: center;\n}\n.have_scroll_left {\n  margin-right: 10px;\n}\n.have_scroll_right {\n  margin-left: 10px;\n}\n.have_scroll_left,\n.have_scroll_right {\n  background: #f6f8fb;\n  border-radius: 5px;\n  padding: 27px 7px;\n  cursor: pointer;\n}\n.course_have_item {\n  cursor: pointer;\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  padding: 10px;\n  width: 317px;\n  max-width: 317px;\n  min-width: 317px;\n  border-radius: 10px;\n  background-color: #f6f8fb;\n  position: relative;\n  .course_have_img {\n    width: 90px;\n    height: 50px;\n    border-radius: 10px;\n    object-fit: cover;\n  }\n  & + .course_have_item {\n    margin-left: 10px;\n  }\n  .course_have_msg {\n    margin-left: 10px;\n    width: calc(100% - 20px - 90px - 10px);\n  }\n  .course_item_courseware {\n    font-style: normal;\n    font-weight: 400;\n    font-size: 12px;\n    color: #999999;\n  }\n  .course_item_title {\n    width: 100%;\n    font-style: normal;\n    font-weight: normal;\n    font-size: 14px;\n    color: #333333;\n    text-overflow: ellipsis;\n    overflow: hidden;\n    white-space: nowrap;\n  }\n  &:before {\n    content: \">\";\n    position: absolute;\n    right: 13.5px;\n    color: #becadb;\n  }\n}\n.slide-forward-leave-active {\n  transition: all 1s;\n  transform: translate(-100%);\n}\n// router2\n.v-enter {\n  transform: translateX(100%);\n}\n.v-enter-active {\n  transition: all 3s;\n}\n.single_item_title {\n  max-width: 550px;\n}\n.single_item_name .video_icon {\n  font-size: 24px;\n}\n.single_item_name {\n  display: flex;\n  align-items: center;\n}\n.down_menu_item {\n  display: flex;\n  padding: 20px;\n  justify-content: space-between;\n  align-items: center;\n  font-style: normal;\n  font-weight: normal;\n  font-size: 14px;\n  color: #999999;\n  border-bottom: 1px solid #ebeef5;\n  .down_item_name {\n    display: flex;\n    align-items: center;\n  }\n  .iconfont {\n    color: #333333;\n    font-size: 24px;\n  }\n}\n.single_menu_item {\n  display: flex;\n  padding: 20px 0;\n  font-style: normal;\n  font-weight: normal;\n  font-size: 14px;\n  color: #999999;\n  border-bottom: 1px solid #ebeef5;\n  cursor: pointer;\n  .cover_single_cover {\n    width: 180px;\n    height: 100px;\n    border-radius: 8px;\n    object-fit: cover;\n  }\n  .single_menu_left {\n    position: relative;\n    margin-right: 20px;\n  }\n  .course_tag_topic {\n    position: absolute;\n    left: 5px;\n    top: 77px;\n    background: rgba(0, 0, 0, 0.5);\n    border-radius: 5px;\n    color: #ffffff;\n    font-style: normal;\n    font-size: 10px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    padding: 2px 5px;\n  }\n  .single_menu_right {\n    width: calc(100% - 200px);\n    position: relative;\n  }\n  .price_box {\n    position: absolute;\n    bottom: 0;\n  }\n  .price_now_topic {\n    font-style: normal;\n    font-weight: 700;\n    font-size: 18px;\n    color: #f61818;\n  }\n  .price_now_topic {\n    font-style: normal;\n    font-weight: 400;\n    font-size: 12px;\n  }\n  .learn_num {\n    font-style: normal;\n    font-weight: 400;\n    font-size: 12px;\n    margin-top: 10px;\n    color: #999999;\n  }\n  .topic_item_name {\n    font-style: normal;\n    font-weight: 400;\n    font-size: 16px;\n    color: #333333;\n  }\n  &:hover {\n    background: rgba(34, 86, 246, 0.05);\n  }\n}\n.all_txt {\n  font-style: normal;\n  font-weight: normal;\n  font-size: 16px;\n  color: #333333;\n  margin-bottom: 20px;\n}\n.note_pane {\n  padding-top: 20px;\n}\n.loading_btn {\n  text-align: center;\n  padding-top: 11px;\n  padding-bottom: 11px;\n  margin-top: 20px;\n  .loading_text {\n    font-style: normal;\n    font-weight: normal;\n    font-size: 12px;\n    color: #999999;\n  }\n}\n.comment_add_box {\n  margin-bottom: 30px;\n  :deep(.el-textarea__inner) {\n    padding: 10px 11px;\n  }\n}\n.comment_add_btn {\n  margin-top: 15px;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  .iconfont {\n    font-size: 24px;\n    color: #becadb;\n  }\n  .comment_btn {\n    width: 100px;\n    height: 40px;\n    font-size: 14px;\n  }\n}\n\n.limit_count_box {\n  background: var(--el-fill-color-blank);\n  bottom: 5px;\n  color: var(--el-color-info);\n  font-size: 12px;\n  line-height: 14px;\n  position: absolute;\n  right: 10px;\n}\n.course_comment_item {\n  display: flex;\n  padding-bottom: 20px;\n  border-bottom: 1px solid #ebeef5;\n  &.hide {\n    display: none;\n  }\n  & + .course_comment_item {\n    padding-top: 20px;\n  }\n  .course_comment_cover {\n    margin-right: 20px;\n  }\n  .course_comment_content {\n    width: calc(100% - 68px);\n  }\n  .course_comment_btn {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .course_comment_btn.has {\n    padding-bottom: 20px;\n  }\n  .course_child_comment .course_comment_btn {\n    padding-bottom: 0;\n  }\n  .course_comment_time {\n    font-style: normal;\n    font-weight: normal;\n    font-size: 14px;\n    color: #999999;\n  }\n  .comment_btn_list {\n    display: flex;\n    align-items: center;\n    margin-top: 10px;\n  }\n  .btn_icons {\n    font-style: normal;\n    font-weight: normal;\n    font-size: 12px;\n    color: #999999;\n    display: flex;\n    align-items: center;\n    cursor: pointer;\n  }\n  .btn_icons.active,\n  .btn_icons.hover {\n    color: #ff9d00;\n  }\n  .btn_icons:hover {\n    color: #ff9d00;\n  }\n  .btn_icons + .btn_icons {\n    margin-left: 15px;\n  }\n  .btn_icons .iconfont {\n    font-size: 16px;\n    margin-right: 3px;\n  }\n  .course_comment_user {\n    font-style: normal;\n    font-weight: 550;\n    font-size: 16px;\n  }\n  .course_comment_int {\n    font-style: normal;\n    font-weight: normal;\n    font-size: 14px;\n    margin-top: 10px;\n    margin-bottom: 10px;\n    color: #999999;\n  }\n}\n.warning_color {\n  color: #ff9d00;\n}\n.course_child_comment {\n  padding: 20px;\n  background: #f6f8fb;\n  border-radius: 5px;\n  position: relative;\n  &:before {\n    content: \"\";\n    width: 15px;\n    height: 15px;\n    position: absolute;\n    top: -7.5px;\n    transform: rotate(45deg);\n    background: #f6f8fb;\n  }\n}\n.course_bottom {\n  margin-top: 29px;\n  width: 100%;\n}\n.fixed_header {\n  position: fixed;\n  top: 0;\n  height: 66px;\n  background-color: #ffffff;\n  width: 100%;\n  z-index: 10000;\n  .fixed_content {\n    width: 1200px;\n    height: 100%;\n    margin: auto;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .nav_logo {\n    width: 170px;\n    height: 36px;\n    img {\n      width: 170px;\n      height: 36px;\n      object-fit: cover;\n    }\n  }\n}\n.detail_content {\n  min-height: 100%;\n}\n.menu_have_num {\n  margin-bottom: 20px;\n  font-style: normal;\n  font-weight: normal;\n  font-size: 16px;\n}\n.course_cell_valid {\n  margin-top: 5px;\n  font-style: normal;\n  font-weight: 400;\n  font-size: 14px;\n  .course_tip {\n    letter-spacing: 0.32em;\n  }\n}\n.cover_teacher {\n  width: 26px;\n  height: 26px;\n  border-radius: 50%;\n  cursor: pointer;\n  & + .cover_teacher {\n    transition: all 0.3s;\n    margin-left: 3px;\n  }\n  &.hover {\n    transform: scale(1.5);\n    // border: 1px solid #2256F6;\n    // box-shadow: 0px 5px 15px rgba(54, 41, 183, 0.06);\n  }\n}\n.course_cover {\n  position: relative;\n}\n.update_status {\n  position: absolute;\n  padding: 4px 9.5px;\n  border-radius: 5px;\n  color: #ffffff;\n  right: 10px;\n  top: 10px;\n  &.success {\n    background: #19cf8a;\n  }\n  &.danger {\n    background: #ff4844;\n  }\n}\n.course_price_info {\n  margin-top: 10px;\n  margin-bottom: 12px;\n  background: #f5f5f5;\n  padding: 13px 10px 17px;\n\n  .course_tip {\n    letter-spacing: 0.6em;\n  }\n}\n.course_tip {\n  font-style: normal;\n  font-weight: 400;\n  font-size: 14px;\n  color: #999999;\n}\n.teacher_warp_item {\n  display: flex;\n  align-items: center;\n  cursor: pointer;\n  & + .teacher_warp_item {\n    margin-left: 10px;\n  }\n  .teacher_name {\n    margin-left: 4px;\n  }\n  &:hover .teacher_name {\n    color: #3d7fff;\n  }\n}\n.flex_teacher {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  width: calc(100% - 70px);\n  .course_in_icon {\n    width: 29px;\n    cursor: pointer;\n  }\n  .course_cell_item.teacher_wrap {\n    padding-right: 10px;\n  }\n}\n.course_cell_item {\n  display: flex;\n  align-items: center;\n  flex-wrap: wrap;\n  word-break: break-all;\n  overflow: auto;\n}\n.course_cell_item.teacher_wrap {\n  display: flex;\n  align-items: center;\n  flex-wrap: nowrap;\n  text-overflow: clip;\n  overflow: hidden;\n}\n.valid_text {\n  font-weight: 400;\n  font-size: 14px;\n  color: #f01414;\n}\n</style>\n"],"names":["route","useRoute","data","componentInfo","__temp","__restore","_withAsyncContext","useAsyncData","async","ctx","getHearder","cookieData","cookie","getShop","useHead","title","shopName","store","useUserStore","getEnumList","getToken","userView","shopData","router","useRouter","head","ref","userInfo","computed","token","map","reactive","id","tabs","commentText","opts","errorNum","info","topicList","style","width","infoTimer","scrollX","PeriodTypeEnum","commentList","commentPage","pageCurrent","pageSize","totalPage","totalCount","ctrl","loading","showDesc","comment","fixed","share","scroll","handleShare","getScrollRight","courseViewDataList","value","scrollWidth","offsetWidth","scrollLeft","length","handleShowComment","showCommentChild","handleMake","courseAuthAppointment","then","res","ElMessageBox","alert","confirmButtonText","type","center","push","path","query","redirect","encodeURIComponent","fullPath","handleBuy","row","courseStatus","ElMessage","error","price","buyStatus","config","enabledPay","disablePayTips","enabledAliPay","enabledWxPay","publishStatus","enableNotLoginWatch","pathRouter","resolve","topicId","window","open","href","getMenuList","handleOpenOther","handleFocus","key","handleBlur","nextScroll","lastScroll","handleScrollX","getInfo","getAuthCourseView","courseIntro","replace","clearInterval","nextTick","enableForbidContentCopy","forbidCopy","catch","setInterval","getCourseView","handleScroll","handleChangeType","item","fn","courseTopicMenuView","handleSelectEmoji","emoji","obj","handleSaveComment","content","courseCommentReplySave","commentContent","goodsType","parentId","success","courseCommentSave","courseId","getComment","courseCommentPage","list","forEach","el","commentShow","showChild","replyList","e","handleScrollBody","app","document","querySelector","Math","floor","scrollTop","pageYOffset","clientHeight","handleCollection","isClick","collectStatus","collectionUserDelete","collectionType","resourceId","collectionUserSave","pending","Promise","superiorResourceId","courseFn","allSettled","course","CourseTypeEnum","menu","status","subjectList","initialCache","d","courseName","meta","hid","name","courseDesc","onMounted","addEventListener","onUnmounted","removeEventListener"],"mappings":"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"}