import OHeader from '@/components/o-header' import OQrcode from '@/components/o-qrcode' import OSearch from '@/components/o-search' import OSticky from '@/components/o-sticky' import { ActionSheet, Cell, CellGroup, closeToast, Grid, GridItem, Icon, Image, List, Picker, Popup, showFailToast, showLoadingToast, showSuccessToast, showToast, Tag } from 'vant' import { defineComponent, onMounted, reactive } from 'vue' import styles from './index.module.less' import iconSaveImage from '@/school/orchestra/images/icon-save-image.png' import iconWechat from '@/school/orchestra/images/icon-wechat.png' import iconCallPhone from '@common/images/icon-call-phone.png' import iconCallMessage from '@common/images/icon-call-message.png' import iconTeacher from '@common/images/icon_teacher.png' import iconMessage from '@common/images/icon-message.png' import { useRouter } from 'vue-router' import request from '@/helpers/request' import { state } from '@/state' import OEmpty from '@/components/o-empty' import { manageTeacherType } from '@/constant' import { postMessage, promisefiyPostMessage } from '@/helpers/native-message' import html2canvas from 'html2canvas' import { forms } from '../train-planning/create' import OFullRefresh from '@/components/o-full-refresh' import { format } from 'path' import OActionSheet from '@/components/o-action-sheet' export default defineComponent({ name: 'companion-teacher', setup() { const router = useRouter() const form = reactive({ showMessage: false, showPopover: false, oPopover: false, subjectList: [{ text: '全部声部', value: 'ALL' }] as any, action: [ { name: '解绑', id: true }, { name: '绑定', id: false, selected: true } ], list: [] as any, listState: { dataShow: true, // 判断是否有数据 loading: false, finished: false, refreshing: false, height: 0 // 页面头部高度,为了处理下拉刷新用的 }, subjectText: '全部声部', statusText: '绑定', params: { keyword: null, delFlag: false, subjectId: null, page: 1, rows: 20 }, selectItem: {} as any }) const getSubjects = async () => { try { const { data } = await request.post('/api-school/subjectBasicConfig/page', { data: { page: 1, rows: 50 } }) // console.log(data, 'data') const temp = data.rows || [] temp.forEach((row: any) => { form.subjectList.push({ text: row.subjectName, value: row.subjectId }) }) } catch { // } } const getList = async () => { try { const res = await request.post('/api-school/teacher/page', { data: { ...form.params, schoolId: state.user.data.school.id } }) form.listState.loading = false form.listState.refreshing = false const result = res.data || {} // 处理重复请求数据 if (form.list.length > 0 && result.current === 1) { return } const rows = result.rows || [] rows.forEach((item: any) => { item.subjectNames = item.subjectName ? item.subjectName.split(',') : [] }) form.list = form.list.concat(rows) form.listState.finished = result.current >= result.pages form.params.page = result.current + 1 form.listState.dataShow = form.list.length > 0 } catch { form.listState.dataShow = false form.listState.refreshing = false form.listState.finished = true } } const onSearch = () => { form.params.page = 1 form.list = [] form.listState.dataShow = true // 判断是否有数据 form.listState.loading = false form.listState.finished = false getList() } // 详情 const onDetail = (item: any) => { router.push({ path: '/companion-teacher-detail', query: { id: item.id } }) } // 选择声部 const onConfirmSubject = (item: any) => { form.subjectText = item.selectedOptions[0].text form.params.subjectId = item.selectedOptions[0].value === 'ALL' ? null : item.selectedOptions[0].value form.showPopover = false onSearch() } onMounted(async () => { getSubjects() getList() }) return () => (
{ form.listState.height = height }} > {{ right: () => ( { router.push({ path: 'save-share-image', query: { type: 'teacher' } }) }} /> ) }} { form.params.keyword = val onSearch() }} />
(form.showPopover = true)} > {form.subjectText}
(form.oPopover = true)} > {form.statusText}
{form.listState.dataShow ? ( {form.list.map((item: any) => ( onDetail(item)}> {{ icon: () => (
{item.delFlag && ( 解绑 )}
), title: () => (

{item.nickname}

), value: () => (

{item.completedCourseScheduleNum || 0}/ {item.totalCourseScheduleNum || 0}

课时

{ e.stopPropagation() e.preventDefault() form.showMessage = true form.selectItem = item }} >
) }}
{{ title: () => (
声部:
{item.subjectNames && item.subjectNames.length > 0 && item.subjectNames.map((subject: any) => ( {subject} ))}
) }}
))}
) : ( )}
(form.showMessage = false)} />

联系方式

{ postMessage({ api: 'joinChatGroup', content: { type: 'single', // single 单人 multi 多人 id: form.selectItem.imUserId } }) form.showMessage = false }} > {{ icon: () => , text: () =>
发送消息
}}
{ postMessage({ api: 'callPhone', content: { phone: form.selectItem.phone } }) form.showMessage = false }} > {{ icon: () => , text: () =>
拨打电话
}}
{ form.action.forEach((child: any) => { child.selected = false }) val.selected = true form.statusText = val.name form.params.delFlag = val.id === 'ALL' ? null : val.id form.oPopover = false onSearch() }} /> (form.showPopover = false)} onConfirm={(item: any) => onConfirmSubject(item)} />
) } })