签到是课堂教学中的一个通用功能,老师可在课堂中单击对应的按钮,学生端可在弹出的签到弹窗上单击按钮完成签到。
开发老师端
我们通过
useTask
创建一个 Task,当老师调用 updateTask 时,学生端会收到老师端发来的签到请求。<template><div class="custom-checkin-btn" @click="checkIn"><span class="header__btn-text">签到</span></div></template><script setup>// 创建一个签到任务 custom-check-in-toolconst { updateTask } = useTask('custom-check-in-tool');// 点击签到按钮时,发起签到const checkIn = () => {updateTask({type: 'ask-check-in',});};</script><style lang="less">...</style>
开发学生端
在学生端,我们监听
custom-check-in-tool
这个任务,当收到签到请求时,进行弹窗,让学生完成签到。<template><div class="checkin-modal" v-if="showModal"><div class="checkin-modal__content"><div class="checkin-modal__header"><h2>签到</h2><button @click="showModal = false">关闭</button></div><div class="checkin-modal__body"><p>请您完成签到</p></div><div class="checkin-modal__footer"><button @click="showModal = false">取消</button><button @click="handleCheckIn()">确认签到</button></div></div></div></template><script setup>import { ref } from 'vue';import useTask from '../hooks/useTask';const showModal = ref(false);const isCheckIn = ref(false);// 监听到老师发起签到任务的回调函数useTask('custom-check-in-tool', (data) => {if (data.type === 'ask-check-in') {// 收到签到请求console.log('收到签到请求');// 检查是否已签到,没有签到就展示签到弹窗if (!isCheckIn.value) {TCIC.SDK.instance.promiseState('TStateDeviceDetect', false).then(() => {// 设备检测完成后展示弹窗showModal.value = true;});} else {// 已经签到,提示用户console.log('已经签到');}}});const handleCheckIn = () => {isCheckIn.value = true;showModal.value = false;// 发送请求到服务器};</script><style lang="less">...</style>
说明: