index.tsx 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import OHeader from '@/components/o-header'
  2. import OSticky from '@/components/o-sticky'
  3. import { Tabs, Tab, showToast, Icon } from 'vant'
  4. import { defineComponent, reactive, ref, onMounted } from 'vue'
  5. import styles from './index.module.less'
  6. import schoolBg from './images/school-bg.png'
  7. import logoIcon from './images/logo.png'
  8. import { useRouter } from 'vue-router'
  9. import { state as globalState } from '@/state'
  10. import TeacherItem from './modals/teacher-item'
  11. import { schoolSystem } from '@/constant/index'
  12. import request from '@/helpers/request'
  13. export default defineComponent({
  14. name: 'school-detail',
  15. setup() {
  16. const router = useRouter()
  17. const state = reactive({
  18. list: [],
  19. info: {} as any
  20. })
  21. const getSchoolDetail = async () => {
  22. const schoolId = (globalState.user.data.schoolInfos || [])
  23. .map((item) => {
  24. return item.id
  25. })
  26. .join(',')
  27. try {
  28. const { data } = await request.get(`/api-school/school/detail/${schoolId}`, {})
  29. state.info = data
  30. } catch (e: any) {
  31. showToast(e.message)
  32. }
  33. }
  34. const gotoEidt = () => {
  35. // /school-eidt
  36. router.push({ path: '/school-eidt' })
  37. }
  38. const getTeacherList = async () => {
  39. // const schoolId = (globalState.user.data.schoolInfos || [])
  40. // .map((item) => {
  41. // return item.id
  42. // })
  43. // .join(',')
  44. try {
  45. const { data } = await request.post(`/api-school/teacher/page`, {
  46. data: {
  47. page: 1,
  48. rows: 9999
  49. }
  50. })
  51. state.list = data.rows
  52. } catch (e: any) {
  53. showToast(e.message)
  54. }
  55. }
  56. onMounted(() => {
  57. getSchoolDetail()
  58. getTeacherList()
  59. })
  60. return () => (
  61. <>
  62. <div class={styles.schoolWrap}>
  63. <img src={schoolBg} class={styles.schoolBg} alt="" />
  64. <OHeader border={false} background={'transparent'}></OHeader>
  65. <div class={styles.absWrap}>
  66. <div class={styles.schoolMainTitle}>
  67. <div class={styles.schoolMainLeft}>
  68. <img src={state.info.logo ? state.info.logo : logoIcon} alt="" />
  69. </div>
  70. <div class={styles.schoolMainRight}>
  71. <p class={styles.schoolMainTitle}>{state.info.name}</p>
  72. <p class={styles.schoolMainSub}>
  73. {state.info.provinceName}
  74. {state.info.cityName}
  75. </p>
  76. </div>
  77. </div>
  78. <div class={styles.detailInfo}>
  79. <p onClick={gotoEidt}>
  80. 地址:{state.info.address} <Icon class={styles.eidtIcon} name="edit"></Icon>
  81. </p>
  82. <p>学年制:{schoolSystem[state.info.schoolSystem]} </p>
  83. <p>邮箱:{state.info.email}</p>
  84. <p>管理老师:{state.info.educationalAdministrationUsername}</p>
  85. <p>负责人:{state.info.emergencyContactPosition}</p>
  86. </div>
  87. </div>
  88. <div class={styles.teacherList}>
  89. <h2 class={styles.teacherTitle}>
  90. <div class={styles.dot}></div>
  91. <p>伴学指导</p>
  92. </h2>
  93. <div>
  94. {state.list.map((item) => (
  95. <TeacherItem item={item}></TeacherItem>
  96. ))}
  97. </div>
  98. </div>
  99. </div>
  100. </>
  101. )
  102. }
  103. })