import { Button, Popup } from "vant"; import {} from "vant"; import { defineComponent, nextTick, onMounted, reactive, ref, watch } from "vue"; import styles from "./index.module.less"; import { getImage } from "./images"; import { getQuery } from "/src/utils/queryString"; export default defineComponent({ name: "studentB-guide", emits: ["close"], setup(props, { emit }) { const data = reactive({ box: {}, show: false, steps: [ { ele: "", eleRect: {} as DOMRect, img: getImage("studentB1.png"), handStyle: { top: "-1.41rem", left: "1.4rem", transform: "rotate(180deg)", }, imgStyle: { top: "-5.01rem", width: "6.48rem", height: "3.01rem", left: "1.2rem", }, btnsStyle: { top: "-1.61rem", left: "3.2rem", }, }, { ele: "", img: getImage("studentB2.png"), handStyle: { top: "-1.39rem", left: "0.15rem", transform: "rotate(180deg)", }, imgStyle: { top: "-5.01rem", width: "6.48rem", height: "3.01rem", }, btnsStyle: { top: "-1.61rem", left: "1.3rem", }, }, { ele: "", img: getImage("studentB3.png"), handStyle: { top: "-1.39rem", left: "2.8rem", transform: "rotate(180deg)", }, imgStyle: { top: "-4.5rem", width: "6.48rem", height: "3.01rem", left: "-2.9rem", }, btnsStyle: { top: "-1.1rem", left: "-1.8rem", }, }, ], step: 0, }); const tipShow = ref(false); const query: any = getQuery(); const guideInfo = localStorage.getItem("guideInfo"); if ((guideInfo && JSON.parse(guideInfo).studentB) || !query.showGuide) { tipShow.value = false; } else { tipShow.value = true; } const getStepELe = () => { console.log(`modeType${data.step}`); const ele: HTMLElement = document.getElementById(`modeType-${data.step}`)!; if (ele) { const eleRect = ele.getBoundingClientRect(); data.box = { left: eleRect.x + "px", top: eleRect.y + "px", width: eleRect.width + "px", height: eleRect.height + "px", }; } }; onMounted(() => { getStepELe(); }); const handleNext = () => { if (data.step >= 2) { endGuide(); return; } data.step = data.step + 1; getStepELe(); }; const endGuide = () => { let guideInfo = JSON.parse(localStorage.getItem("guideInfo") || "{}") || null; if (!guideInfo) { guideInfo = { studentB: true }; } else { guideInfo.studentB = true; } localStorage.setItem("guideInfo", JSON.stringify(guideInfo)); tipShow.value = false; // localStorage.setItem('endC') }; return () => (
handleNext()}>
{ e.stopPropagation(); endGuide(); }} > 跳过
{data.steps.map((item: any, index) => (
e.stopPropagation()} class={styles.item} style={{ display: index === data.step ? "" : "none", left: `${item.eleRect?.left}px`, top: `${item.eleRect?.top}px`, }} >
{data.step + 1 == data.steps.length ? ( <>
endGuide()}> 完成
{ data.step = 0; getStepELe(); }} > 再看一遍
) : ( )}
))}
); }, });