index.tsx 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. import OHeader from '@/components/o-header'
  2. import OQrcode from '@/components/o-qrcode'
  3. import OSearch from '@/components/o-search'
  4. import OSticky from '@/components/o-sticky'
  5. import { Cell, Grid, GridItem, Icon, Image, Popup } from 'vant'
  6. import { defineComponent, onMounted, reactive } from 'vue'
  7. import styles from './index.module.less'
  8. import iconSaveImage from '@/school/orchestra/images/icon-save-image.png'
  9. import iconWechat from '@/school/orchestra/images/icon-wechat.png'
  10. import { useRouter } from 'vue-router'
  11. import request from '@/helpers/request'
  12. import { state } from '@/state'
  13. export default defineComponent({
  14. name: 'companion-teacher',
  15. setup() {
  16. const router = useRouter()
  17. const form = reactive({
  18. oPopover: false,
  19. showQrcode: false,
  20. schoolName: null,
  21. schoolId: null,
  22. url: null as any
  23. })
  24. const getDetail = async (id: string | number) => {
  25. try {
  26. const res = await request.get('/api-school/schoolStaff/detail/' + id)
  27. console.log(res, 'res')
  28. form.schoolName = res.data.schoolName
  29. form.schoolId = res.data.schoolId
  30. form.url =
  31. location.origin + '/orchestra-school/manageTeacher.html?schoolId=' + res.data.schoolId
  32. } catch {
  33. //
  34. }
  35. }
  36. const onDetail = () => {
  37. router.push('/manage-teacher-detail')
  38. }
  39. onMounted(() => {
  40. console.log(state.user.data.id, '1212')
  41. getDetail(state.user.data.id)
  42. })
  43. return () => (
  44. <>
  45. <OSticky position="top">
  46. <OHeader border={false}>
  47. {{
  48. right: () => <Icon name="plus" size={19} onClick={() => (form.showQrcode = true)} />
  49. }}
  50. </OHeader>
  51. <OSearch
  52. placeholder="请输入管理老师姓名"
  53. inputBackground="white"
  54. background="#f6f8f9"
  55. v-slots={{
  56. left: () => (
  57. <div class={styles.searchBand} style={{ marginRight: '13px' }}>
  58. 状态 <Icon name={form.oPopover ? 'arrow-up' : 'arrow-down'} />
  59. </div>
  60. )
  61. }}
  62. />
  63. </OSticky>
  64. <Cell center isLink class={styles.manageCell} onClick={() => onDetail()}>
  65. {{
  66. icon: () => (
  67. <Image
  68. class={styles.img}
  69. src="https://daya.ks3-cn-beijing.ksyuncs.com/12/1670231208704.png"
  70. />
  71. ),
  72. title: () => (
  73. <div class={styles.content}>
  74. <p class={styles.name}>林老师</p>
  75. <p class={styles.phone}>10000000021</p>
  76. </div>
  77. ),
  78. value: () => <span class={[styles.status, styles.frozen]}>状态</span>
  79. }}
  80. </Cell>
  81. <Popup
  82. v-model:show={form.showQrcode}
  83. position="bottom"
  84. style={{ background: 'transparent' }}
  85. safeAreaInsetBottom={true}
  86. >
  87. <div class={styles.codeContainer}>
  88. <div class={styles.codeImg}>
  89. <div class={styles.codeContent}>
  90. <h2 class={styles.codeTitle}>{form.schoolName}</h2>
  91. <div class={styles.codeName}>邀请您成为乐团管理老师</div>
  92. <div class={styles.codeQr}>
  93. <OQrcode text={form.url} size={'100%'} />
  94. </div>
  95. <div style={{ textAlign: 'center' }}>
  96. <span class={styles.codeBtnText}>扫描上方二维码完成资料填写</span>
  97. </div>
  98. <div class={styles.codeTips}>二维码将在两小时后失效,请及时登记</div>
  99. </div>
  100. </div>
  101. <div class={styles.codeBottom}>
  102. <Icon
  103. name="cross"
  104. size={22}
  105. class={styles.close}
  106. color="#666"
  107. onClick={() => (form.showQrcode = false)}
  108. />
  109. <h3 class={styles.title}>
  110. <i></i>分享方式
  111. </h3>
  112. <Grid columnNum={2} border={false}>
  113. <GridItem>
  114. {{
  115. icon: () => <Image class={styles.shareImg} src={iconSaveImage} />,
  116. text: () => <div class={styles.shareText}>保存图片</div>
  117. }}
  118. </GridItem>
  119. <GridItem>
  120. {{
  121. icon: () => <Image class={styles.shareImg} src={iconWechat} />,
  122. text: () => <div class={styles.shareText}>微信</div>
  123. }}
  124. </GridItem>
  125. </Grid>
  126. </div>
  127. </div>
  128. </Popup>
  129. </>
  130. )
  131. }
  132. })