{"version":3,"file":"view.0cba426c.mjs","sources":["../../../../assets/images/teacher_bg.png","../../../../pages/teacher/view.vue"],"sourcesContent":["export default \"__VITE_ASSET__c6aa11e1__\"","<template>\n  <NuxtLayout>\n\n    <div class=\"page\">\n      <img class=\"teacher_bg\" src=\"~/assets/images/teacher_bg.png\" alt=\"\">\n      <div class=\"info\">\n        <div class=\"img_box\">\n          <img :src=\"map.info.headImg\" alt=\"\">\n        </div>\n        <div class=\"text\">\n          <div class=\"row1\">\n            <div>\n              <span>{{map.info.nickname}}</span>\n              <span class=\"divide\">{{map.info.rankName}}</span>\n            </div>\n          </div>\n          <div class=\"row2\">{{map.info.introduce}}</div>\n        </div>\n      </div>\n      <div class=\"tabs\">\n        <span :class=\"{active: map.tab === 1}\" @click=\"clickTab(1)\">课程 {{map.count1}}</span>\n        <span :class=\"{active: map.tab === 2}\" @click=\"clickTab(2)\">班级 {{map.count2}}</span>\n      </div>\n      <template v-if=\"map.tab === 1\">\n        <div class=\"ov_course_content\" v-loading=\"ctrl.loading\">\n          <course-list :visible=\"map.list.length > 0\" :list=\"map.list\"></course-list>\n        </div>\n        <div class=\"pagination\" v-if=\"page.totalPage > 1\">\n        <el-pagination\n          background layout=\"total, prev, pager, next, jumper\"\n          :total=\"page.totalCount\"\n          v-model:currentPage=\"page.pageCurrent\"\n          v-model:pageSize=\"page.pageSize\"\n          @current-change=\"handleCurrentChange\"\n        >\n        </el-pagination>\n      </div>\n      </template>\n      <template v-if=\"map.tab === 2\">\n        <div class=\"ov_course_content\" >\n          <index-grade\n            :componentInfo=\"{ config: { }, data: map.list2 }\"\n          ></index-grade>\n        </div>\n        <div class=\"pagination\" v-if=\"page2.totalPage > 1\">\n        <el-pagination\n          background layout=\"total, prev, pager, next, jumper\"\n          :total=\"page2.totalCount\"\n          v-model:currentPage=\"page2.pageCurrent\"\n          v-model:pageSize=\"page2.pageSize\"\n          @current-change=\"handleCurrentChange2\"\n        >\n        </el-pagination>\n      </div>\n      </template>\n\n      <teacher-introduce-dialog\n        v-if=\"ctrl.dialogVisible\"\n        :dialog-visible=\"ctrl.dialogVisible\"\n        :introduce=\"map.info.introduce\"\n        @close=\"ctrl.dialogVisible = false\"\n      ></teacher-introduce-dialog>\n    </div>\n  </NuxtLayout>\n</template>\n\n<script setup>\nimport {teacherView, teacherCoursePage, teacherRankList, teacherPage} from '../../api/teacher.js'\nimport { getGradeList } from \"@/api/grade\";\nimport cookie from '@/utils/cookies'\n\nconst route = useRoute()\nlet cookieData = cookie.getShop()\nconst { data: courseInfo } = await useAsyncData(\"teacher\"+route.query.id, async (ctx) => {\n  // console.log(ctx,'ctx')\n  return await teacherView(route.query.id);\n});\n// console.log(courseInfo.value,'courseInfo')\nuseHead({\n  title: computed(() => `${courseInfo.value.nickname?courseInfo.value.nickname+'-'+ cookieData.shopName:'讲师详情'}`),\n  meta:[{\n    hid: 'keywords',\n    name: 'keywords',\n    content: courseInfo.value.nickname\n  },\n    {\n      hid: 'description',\n      name: 'description',\n      content: courseInfo.value.introduce ? courseInfo.value.introduce : courseInfo.value.nickname\n    }]\n})\n\nconst map = reactive({\n  info: {},\n  id: '',\n  list: [],\n  list2:[],\n  tab: 1,\n  count1: 0,\n  count2: 0\n})\nconst page = reactive({\n  totalCount: 0,\n  pageCurrent: 1,\n  pageSize: 20,\n  totalPage: 1\n})\nconst page2 = reactive({\n  totalCount: 0,\n  pageCurrent: 1,\n  pageSize: 20,\n  totalPage: 1\n})\nconst ctrl = reactive({\n  loading: false,\n  show: false,\n  dialogVisible: false\n})\nconst router = useRouter()\nconst changeRank = (id) => {\n  map.rankId = id\n  getTeacherList()\n}\nconst clickTab = (index) => {\n  map.tab = +index\n  page.pageCurrent = 1\n  page.pageSize = 20\n  page2.pageCurrent = 1\n  page2.pageSize = 20\n  if(map.tab === 1) {\n    getCourse()\n  }\n  if(map.tab === 2){\n    getGrade()\n  }\n}\nconst handleClose = () => {\n  ctrl.dialogVisible = false\n}\nconst getRankList = () => {\n  teacherRankList().then(res => {\n    map.rankList = res || []\n    map.rankList.unshift({\n      rankName: '全部',\n      id: ''\n    })\n  })\n}\nconst viewDetail = (i) => {\n  router.push({\n    path:'/teacher/view',\n    query:{\n      id:i.id\n    }\n  })\n}\nconst handleCurrentChange = (v) => {\n  page.pageCurrent = v\n    getCourse()\n}\nconst handleCurrentChange2 = (v) => {\n  page2.pageCurrent = v\n    getGrade()\n}\nconst getCourse = () => {\n  ctrl.loading = true\n  teacherCoursePage({\n    pageCurrent: page.pageCurrent,\n    pageSize: page.pageSize,\n    teacherId: map.id,\n  }).then((res) => {\n    map.list = res.list || []\n    page.pageCurrent = res.pageCurrent;\n    page.totalPage = res.totalPage;\n    page.totalCount = res.totalCount;\n    map.count1 = res.totalCount\n    ctrl.loading = false\n  });\n}\nconst getGrade = ()=>{\n  ctrl.loading = true\n  getGradeList({\n    pageCurrent: page2.pageCurrent,\n    pageSize: page2.pageSize,\n    teacherId: map.id,\n  }).then((res) => {\n    map.list2 = res.list || []\n    page2.pageCurrent = res.pageCurrent;\n    page2.totalPage = res.totalPage;\n    page2.totalCount = res.totalCount;\n    map.count2 = res.totalCount\n    ctrl.loading = false\n  });\n}\nconst getTeacherInfo = () => {\n  ctrl.loading = true\n  teacherView(map.id).then(res => {\n    if(res) {\n      map.info = res\n    }\n    ctrl.loading = false\n  })\n}\nconst { data, pending, error } = await useAsyncData('TeacherListPage', () => {\n  return new Promise(async (resolve) => {\n    map.id = route.query.id\n    Promise.allSettled([\n      teacherView(map.id),\n      teacherCoursePage({\n        pageCurrent: page.pageCurrent,\n        pageSize: page.pageSize,\n        teacherId: map.id,\n      }),getGradeList({\n        pageCurrent: page2.pageCurrent,\n        pageSize: page2.pageSize,\n        teacherId: map.id,\n      })]).then(([view, course,grade ])=>{\n      let data = {};\n      if(view.status === 'fulfilled') {\n        data.view = view.value\n      } else {\n        data.view = {}\n      }\n      if(course.status === 'fulfilled') {\n        data.course = course.value\n      } else {\n        data.course = []\n      }\n      if(grade.status === 'fulfilled') {\n        data.grade = grade.value\n      } else {\n        data.grade = []\n      }\n      resolve(data)\n    })\n  })\n},{initialCache:false})\nif (!pending.value && data.value) {\n  const d = data.value\n  map.list = d.course.list || []\n  map.list2 = d.grade.list || []\n  page2.pageCurrent = d.grade.pageCurrent;\n  page2.totalPage = d.grade.totalPage;\n  page2.totalCount = d.grade.totalCount;\n  page.pageCurrent = d.course.pageCurrent;\n  page.totalPage = d.course.totalPage;\n  page.totalCount = d.course.totalCount;\n  map.count1 = d.course.totalCount\n  map.count2 = d.grade.totalCount\n  map.info = d.view\n}\nonMounted(() => {\n});\n\n\n</script>\n<style lang=\"scss\" scoped>\n.page {\n  position: relative;\n}\n.teacher_bg {\n  width: 100%;\n  height: 191px;\n}\n.info {\n  width: 1200px;\n  padding-left: 50px;\n  padding-right: 45px;\n  position: absolute;\n  top: 35px;\n  left: 0;\n  right: 0;\n  margin: auto;\n  display: flex;\n  align-items: center;\n  box-sizing: border-box;\n  background: transparent;\n  z-index: 10;\n  .img_box {\n    width: 130px;\n    height: 130px;\n    margin-right: 24px;\n    background: rgba(255, 255, 255, 0.1);\n    border-radius: 50%;\n  }\n  img {\n    width: 120px;\n    height: 120px;\n    border-radius: 50%;\n    margin: 5px auto;\n  }\n  .text {\n    width: calc(100% - 155px);\n    display: flex;\n    flex-direction: column;\n    row-gap: 15px;\n  }\n  .row1 {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    color: #fff;\n    font-size: 20px;\n    .divide {\n      position: relative;\n      margin-left: 40px;\n      &::before {\n        content: '';\n        position: absolute;\n        top: 6px;\n        left: -20px;\n        width: 1px;\n        height: 16px;\n        background: #fff;\n      }\n    }\n  }\n  .row2 {\n    color: #fff;\n    word-break: break-all;\n    line-height: 20px;\n  }\n}\n.tabs {\n  padding: 20px 0px 11px 0px;\n  text-align: center;\n  background: #fff;\n  font-size: 16px;\n  span {\n    margin-right: 30px;\n    margin-left: 30px;\n    display: inline-block;\n    height: 33px;\n    cursor: pointer;\n  }\n  .active {\n    position: relative;\n    color: #2256F6;\n    &::after {\n      content: '';\n      position: absolute;\n      bottom: 0;\n      left: 0;\n      right: 0;\n      margin: auto;\n      width: 20px;\n      height: 3px;\n      background: #2256F6;\n    }\n  }\n}\n.ov_course_content {\n  width: 1200px;\n  margin: auto;\n  margin-top: 20px;\n}\n.pagination {\n  text-align: center;\n  margin-bottom: 30px;\n}\n</style>\n"],"names":["_imports_0","URL","import","meta","url","href","route","useRoute","cookieData","cookie","getShop","data","courseInfo","teacherView","query","id","useHead","title","computed","value","nickname","shopName","hid","name","content","introduce","map","reactive","info","list","list2","tab","count1","count2","page","totalCount","pageCurrent","pageSize","totalPage","page2","ctrl","loading","show","dialogVisible","useRouter","clickTab","index","getCourse","getGrade","handleCurrentChange","v","handleCurrentChange2","teacherCoursePage","teacherId","then","res","getGradeList","pending","error","__temp","__restore","_withAsyncContext","useAsyncData","Promise","async","resolve","allSettled","view","course","grade","status","initialCache","d","onMounted"],"mappings":"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"}