manage-detail.tsx 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. import OHeader from '@/components/o-header'
  2. import OPopup from '@/components/o-popup'
  3. import request from '@/helpers/request'
  4. import { Button, Cell, CellGroup, Dialog, Grid, GridItem, Image, showToast } from 'vant'
  5. import { defineComponent, onMounted, reactive, ref } from 'vue'
  6. import { useRoute } from 'vue-router'
  7. import styles from './manage-detail.module.less'
  8. import MenuFunction from './menu-function'
  9. import iconTeacher from '@common/images/icon_teacher.png'
  10. import OSticky from '@/components/o-sticky'
  11. export default defineComponent({
  12. name: 'manage-detail',
  13. setup() {
  14. const route = useRoute()
  15. const detail = ref<any>({})
  16. const state = reactive({
  17. menuStatus: false,
  18. status: false
  19. })
  20. const getDetail = async () => {
  21. try {
  22. const query = route.query
  23. const { data } = await request.get('/api-school/schoolStaff/detail/' + query.id)
  24. detail.value = { ...data }
  25. } catch {
  26. //
  27. }
  28. }
  29. // 冻结
  30. const onFreeze = async () => {
  31. try {
  32. // {
  33. // detail.value.status === 'ACTIVATION' && '冻结账号'
  34. // }
  35. // {
  36. // detail.value.status === 'LOCKED' && '解冻账号'
  37. // }
  38. const query = route.query
  39. await request.post('/api-school/schoolStaff/freeze/' + query.id)
  40. setTimeout(() => {
  41. if (detail.value.status === 'ACTIVATION') {
  42. detail.value.status = 'LOCKED'
  43. showToast('冻结成功')
  44. } else {
  45. detail.value.status = 'ACTIVATION'
  46. showToast('解冻成功')
  47. }
  48. }, 100)
  49. } catch {
  50. //
  51. }
  52. }
  53. onMounted(() => {
  54. getDetail()
  55. })
  56. return () => (
  57. <>
  58. <OHeader />
  59. <CellGroup inset class={styles.detailCellGroup}>
  60. <Cell center class={styles.detailCell}>
  61. {{
  62. icon: () => (
  63. <Image
  64. class={styles.img}
  65. src={detail.value.avatar ? detail.value.avatar : iconTeacher}
  66. />
  67. ),
  68. title: () => (
  69. <div class={styles.content}>
  70. <p class={[styles.name, 'van-ellipsis']}>{detail.value.nickname}</p>
  71. <p class={styles.phone}>{detail.value.phone}</p>
  72. </div>
  73. )
  74. }}
  75. </Cell>
  76. </CellGroup>
  77. <div class={styles.sectionTitle}>
  78. <i></i>
  79. 基本信息
  80. </div>
  81. <CellGroup inset class={[styles.detailCellGroup, styles.sectionCellGroup]}>
  82. <Cell title={'手机号码'} value={detail.value.nickname}></Cell>
  83. <Cell
  84. title={'性别'}
  85. value={detail.value.gender == 1 ? '男' : detail.value.gender == 0 ? '女' : ''}
  86. ></Cell>
  87. </CellGroup>
  88. {/* 判断是否有权限 */}
  89. {detail.value.menuButtons && detail.value.menuButtons.length > 0 && (
  90. <>
  91. <div class={styles.sectionTitle}>
  92. <i></i>
  93. 功能权限
  94. </div>
  95. <Grid border={false} class={styles.functionGrid}>
  96. {detail.value.menuButtons.map((item: any) => (
  97. <GridItem>
  98. {{
  99. icon: () => <Image class={styles.functionImg} src={item.buttonImage} />,
  100. text: () => (
  101. <div class={[styles.functionText, 'van-ellipsis']}>{item.title}</div>
  102. )
  103. }}
  104. </GridItem>
  105. ))}
  106. </Grid>
  107. </>
  108. )}
  109. <OSticky position="bottom">
  110. <div
  111. class={['btnGroup', 'btnMore']}
  112. style={{ paddingLeft: '13px', paddingRight: '13px' }}
  113. >
  114. <Button type="primary" round onClick={() => (state.menuStatus = true)}>
  115. 修改权限
  116. </Button>
  117. <Button
  118. type="primary"
  119. round
  120. color="#64A9FF"
  121. onClick={() => (state.status = true)}
  122. // disabled={ ? false : true}
  123. >
  124. {detail.value.status === 'ACTIVATION' && '冻结账号'}
  125. {detail.value.status === 'LOCKED' && '解冻账号'}
  126. </Button>
  127. </div>
  128. </OSticky>
  129. <OPopup v-model:modelValue={state.menuStatus} destroy>
  130. <MenuFunction
  131. onClose={() => (state.menuStatus = false)}
  132. onSuccess={() => getDetail()}
  133. teacherId={detail.value.id}
  134. menus={detail.value.menuButtons}
  135. />
  136. </OPopup>
  137. <Dialog
  138. v-model:show={state.status}
  139. message={`${
  140. detail.value.status === 'ACTIVATION'
  141. ? '冻结后该管理老师将无法登录\n确认需要冻结吗?'
  142. : '确认需要解冻吗?'
  143. }`}
  144. messageAlign="left"
  145. showCancelButton
  146. onConfirm={onFreeze}
  147. >
  148. {{
  149. title: () => (
  150. <div class={styles.dialogTitle}>
  151. <i></i>
  152. {detail.value.status === 'ACTIVATION' ? '冻结' : '解冻'}管理老师
  153. </div>
  154. )
  155. }}
  156. </Dialog>
  157. </>
  158. )
  159. }
  160. })