完成加载页、我的奖品页面、答题页逻辑,首页待优化动画

This commit is contained in:
Andy Leong 2024-01-14 02:15:21 +08:00
parent a52ecc1526
commit f2bb4f9efc
30 changed files with 830 additions and 138 deletions

View File

@ -11,6 +11,7 @@
"preview": "vite preview" "preview": "vite preview"
}, },
"dependencies": { "dependencies": {
"@vueuse/core": "^10.7.1",
"axios": "^1.6.3", "axios": "^1.6.3",
"gsap": "^3.12.4", "gsap": "^3.12.4",
"howler": "^2.2.4", "howler": "^2.2.4",
@ -18,6 +19,7 @@
"lodash.debounce": "^4.0.8", "lodash.debounce": "^4.0.8",
"pinia": "^2.1.7", "pinia": "^2.1.7",
"qs": "^6.11.2", "qs": "^6.11.2",
"v-clipboard": "^3.0.0-next.1",
"vant": "^3.6.12", "vant": "^3.6.12",
"vconsole": "^3.15.1", "vconsole": "^3.15.1",
"vue": "^3.2.41", "vue": "^3.2.41",

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 365 KiB

After

Width:  |  Height:  |  Size: 352 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@ -1,26 +1,74 @@
<script setup> <script setup>
import { Button, Toast } from "vant"; import { Button, Toast } from "vant";
import { debounceTap } from "@/plugins"; import { debounceTap } from "@/plugins";
import gsap from "gsap";
const emit = defineEmits(["IndexPage"]); const emit = defineEmits(["IndexPage"]);
const start = (event) => { const start = (event) => {
debounceTap(event.target, () => { debounceTap(event.target, () => {
Toast.success("开发中!"); emit("IndexPage", { action: "start" });
}); });
}; };
const showMyPrize = (event) => {
let e = event.target;
debounceTap(e, () => {
emit("IndexPage", { action: "showMyPrize" });
});
};
const clockAni = () => {
gsap.to(".index-clock-h", {
duration: 12,
rotation: "+=360",
repeat: -1,
ease: "none",
});
gsap.to(".index-clock-m", {
duration: 8,
rotation: "+=360",
repeat: -1,
ease: "none",
});
gsap.to(".index-clock-s", {
duration: 3,
rotation: "+=360",
repeat: -1,
ease: "none",
});
};
onMounted(() => {
clockAni();
});
</script> </script>
<template> <template>
<div class="IndexPage"> <div class="IndexPage">
<div class="index-bg"></div> <div class="index-bg">
<div class="index-clock-box">
<div class="index-clock-h"></div>
<div class="index-clock-m"></div>
<div class="index-clock-s"></div>
<div class="index-clock-circle"></div>
</div>
</div>
<div class="index-container"> <div class="index-container">
<div class="index-title"></div> <div class="index-title"></div>
<div class="index-rule-btn"></div> <div class="index-rule-btn"></div>
<div class="index-prize-btn"></div> <div class="index-prize-btn" @click="showMyPrize($event)"></div>
<div class="index-start-btn" @click="start"></div> <div class="index-start-btn" @click="start"></div>
<div class="index-agreement"></div> <div class="index-agreement">
风险提示:本材料由平安理财有限责任公司(以下简称平安理财)制作并提供<span
class="b"
>本资料内容及观点仅供参考不构成对任何人的投资建议</span
>以上产品投资管理机构/管理人为平安理财代理销售机构不承担产品的投资兑付和风险管理的责任以上产品通过代理销售机构渠道销售的产品风险评级应当以代理销售机构最终披露的评级结果为准以上产品为非保本浮动收益理财产品具体以产品说明书或产品公告披露为准产品的业绩比较基准指管理人基于过往投资经验以及对产品存续期投资市场波动的预判而对本产品所设定的投资目标业绩比较基准不是预期收益率不代表产品的未来表现和实际收益不构成对产品收益的承诺<span
class="b"
>理财产品过往业绩不代表其未来表现不等于理财产品实际收益投资须谨慎过往业绩相关数据已经托管人核对</span
><span class="orange">理财非存款产品有风险投资须谨慎</span
>金融消费者不得利用金融产品和服务从事违法活动
</div>
</div> </div>
</div> </div>
</template> </template>
@ -34,6 +82,26 @@ const start = (event) => {
@include pos(750px, 1624px, 0px, 50%); @include pos(750px, 1624px, 0px, 50%);
transform: translateY(-50%); transform: translateY(-50%);
@include bg_pos("index/bg.jpg"); @include bg_pos("index/bg.jpg");
.index-clock-box {
@include pos(125px, 125px, 213px, 700px);
@include bg_pos("load/clock-bg.png");
.index-clock-circle {
@include pos(13px, 13px, 57px, 55px);
@include bg_pos("load/clock-circle.png");
}
.index-clock-s {
@include pos(125px, 125px, 0px, 0px);
@include bg_pos("load/clock-second.png");
}
.index-clock-m {
@include pos(125px, 125px, 0px, 0px);
@include bg_pos("load/clock-minute.png");
}
.index-clock-h {
@include pos(125px, 125px, 0px, 0px);
@include bg_pos("load/clock-hour.png");
}
}
} }
.index-container { .index-container {
@ -41,18 +109,18 @@ const start = (event) => {
transform: translateY(-50%); transform: translateY(-50%);
.index-title { .index-title {
pointer-events: none;
@include pos(552px, 131px, 101px, 331px); @include pos(552px, 131px, 101px, 331px);
@include bg_pos("index/title.png"); @include bg_pos("index/title.png");
} }
.index-rule-btn { .index-rule-btn {
@include pos(101px, 51px, 0px, 474px); @include pos(168px, 51px, -67px, 474px);
@include bg_pos("index/rule-btn.png"); @include bg_pos("index/rule-btn.png");
} }
.index-prize-btn { .index-prize-btn {
@include pos(101px, 51px, 0px, 536px); @include pos(168px, 51px, -67px, 536px);
@include bg_pos("index/prize-btn.png"); @include bg_pos("index/prize-btn.png");
} }
@ -62,8 +130,21 @@ const start = (event) => {
} }
.index-agreement { .index-agreement {
pointer-events: none;
@include pos(736px, 172px, 7px, 1219px); @include pos(736px, 172px, 7px, 1219px);
@include bg_pos("index/agreement.png"); background: rgba($color: #f49e6a, $alpha: 0.55);
font-size: 14px;
text-align: justify;
color: #000000;
padding: 10px;
box-sizing: border-box;
border-radius: 10px;
.b {
font-weight: 700;
}
.orange {
color: #ea5404;
}
} }
} }
} }

View File

@ -1,28 +1,86 @@
<script setup> <script setup>
import { ref } from "vue"; import { Toast } from "vant";
import { Button, Toast } from "vant";
import gsap from "gsap"; import gsap from "gsap";
import { debounceTap } from "@/plugins"; import { debounceTap } from "@/plugins";
import Preloader from "@/plugins/Preloader";
import { loadImg, pageImg } from "@/data/imgList";
// //
const emit = defineEmits(["LoadPage"]); const emit = defineEmits(["LoadPage"]);
const show = (event) => { const loadNum = ref(0);
const e = event.target;
debounceTap(e, () => { const entryAni = () => {
console.log(1); gsap.to(".clock-h", {
emit("LoadPage", { action: "hide" }); duration: 10,
rotation: "+=360",
repeat: -1,
ease: "none",
});
gsap.to(".clock-m", {
duration: 3,
rotation: "+=360",
repeat: -1,
ease: "none",
});
gsap.to(".clock-s", {
duration: 1,
rotation: "+=360",
repeat: -1,
ease: "none",
}); });
}; };
onMounted(() => {
entryAni();
Preloader({
name: "加载页资源",
imgs: loadImg,
callback: (progress) => {
// console.log('', progress);
},
}).then((res) => {
gsap.to(".LoadPage", {
duration: 0.2,
autoAlpha: 1,
onComplete: () => {
Preloader({
name: "内页资源",
imgs: pageImg,
callback: (progress) => {
// console.log('', progress);
gsap.set(".bar", { width: progress + "%" });
loadNum.value = progress;
},
}).then((res) => {
console.log("加载完成");
gsap.to(".LoadPage", {
duration: 1,
autoAlpha: 0,
onComplete: () => {
emit("LoadPage", { action: "hide" });
},
});
});
},
});
});
});
</script> </script>
<template> <template>
<div class="LoadPage"> <div class="LoadPage">
<div class="load-bg"></div> <div class="load-bg"></div>
<div class="load-container"> <div class="load-container">
<div class="box"> <div class="clock-box">
<Button @click="show">to index</Button> <div class="clock-h"></div>
<div class="clock-m"></div>
<div class="clock-s"></div>
<div class="clock-circle"></div>
</div> </div>
<div class="load-box">
<div class="bar"></div>
</div>
<div class="load-num">{{ loadNum }}%</div>
</div> </div>
</div> </div>
</template> </template>
@ -32,20 +90,67 @@ const show = (event) => {
@include pos(100%, 100%, 0px, 0px); @include pos(100%, 100%, 0px, 0px);
background-color: rgb(223, 15, 60); background-color: rgb(223, 15, 60);
overflow: hidden; overflow: hidden;
@include flexCen();
.load-bg { .load-bg {
@include pos(750px, 100%, 0px, 50%); @include pos(750px, 100%, 0px, 50%);
transform: translateY(-50%); transform: translateY(-50%);
@include bg_pos("load/bg.jpg");
} }
.load-container { .load-container {
@include pos(750px, 100%, 0px, 50%); position: relative;
transform: translateY(-50%); @include box(750px, 1180px);
@include flexCen(); // transform: translateY(-50%);
.box { .clock-box {
@include box(300px, 300px); @include pos(125px, 125px, 313px, 299px);
@include flexCen(); @include bg_pos("load/clock-bg.png");
.clock-circle {
@include pos(13px, 13px, 57px, 55px);
@include bg_pos("load/clock-circle.png");
}
.clock-s {
@include pos(125px, 125px, 0px, 0px);
@include bg_pos("load/clock-second.png");
}
.clock-m {
@include pos(125px, 125px, 0px, 0px);
@include bg_pos("load/clock-minute.png");
}
.clock-h {
@include pos(125px, 125px, 0px, 0px);
@include bg_pos("load/clock-hour.png");
}
}
.load-box {
@include pos(512px, 38px, 119px, 450px);
border-style: solid;
border-width: 2px;
border-color: #e17c4d;
border-radius: 20px;
overflow: hidden;
.bar {
@include box(10%, 38px);
border-radius: 20px;
background: linear-gradient(45deg, #f2733a, #ffd667);
}
}
.load-num {
@include pos(750px, 50px, 0px, 511px);
text-align: center;
font-size: 38px;
color: #ffaf5e;
line-height: 40px;
font-weight: 700;
background: linear-gradient(to right, #f2733a, #ffd667);
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
letter-spacing: 2px;
font-style: italic;
} }
.btn { .btn {

105
src/components/MyPrize.vue Normal file
View File

@ -0,0 +1,105 @@
<script setup>
import { debounceTap } from "@/plugins";
import gsap from "gsap";
import { Toast } from "vant";
import { Clipboard } from "v-clipboard";
import { useMainStore } from "@/store";
import { onMounted } from "vue";
//
const emit = defineEmits(["MyPrizePage"]);
const userStore = useMainStore();
const money = ref(userStore.prizeMoney);
const code = ref(userStore.prizeCode);
const copyFn = (event) => {
let e = event.target;
debounceTap(e, () => {
Clipboard.copy(code.value);
Toast(`复制成功:${code.value}`);
});
};
const hide = (event) => {
let e = event.target;
debounceTap(e, () => {
gsap.to(".MyPrizePage", {
duration: 0.4,
autoAlpha: 0,
onComplete: () => {
emit("MyPrizePage", { action: "hide" });
},
});
});
};
const entryAni = () => {
gsap.from(".MyPrizePage", { duration: 0.2, autoAlpha: 0 });
gsap.from(".myPrize-container", { duration: 0.5, autoAlpha: 0, scale: 0.7 });
};
onMounted(() => {
entryAni();
});
</script>
<template>
<div class="MyPrizePage">
<div class="myPrize-container">
<div class="myPrize-money">¥{{ money }}</div>
<div class="myPrize-code-box">
<div class="code">{{ code }}</div>
<div class="myPrize-copy-btn" @click="copyFn($event)"></div>
</div>
<div class="myPrize-cls-btn" @click="hide($event)"></div>
</div>
</div>
</template>
<style lang="scss" scoped>
.MyPrizePage {
@include fixed();
@include flexCen();
background-color: rgba($color: #000000, $alpha: 0.7);
.myPrize-container {
position: relative;
@include box(665px, 731px);
@include bg_pos("prize/myPrize-box.png");
.myPrize-money {
@include pos(370px, 81px, 139px, 239px);
display: flex;
justify-content: center;
align-items: center;
color: #e95b46;
font-weight: 700;
font-size: 58px;
letter-spacing: 4px;
}
.myPrize-code-box {
@include pos(312px, 52px, 197px, 508px);
display: flex;
flex-direction: row;
align-items: center;
.code {
font-size: 25px;
font-weight: 700;
margin-right: 10px;
color: #fff6cc;
}
.myPrize-copy-btn {
@include box(77px, 39px);
@include bg_pos("prize/copy-btn.png");
}
}
.myPrize-cls-btn {
@include pos(57px, 57px, 517px, 114px);
@include bg_pos("prize/cls-btn.png");
}
}
}
</style>

View File

@ -1,147 +1,375 @@
<script setup name="Question"> <script setup name="Question">
import { Button, Toast } from 'vant' import { Button, Toast } from "vant";
import gsap from 'gsap' import gsap from "gsap";
import data from '@/data' import data from "@/data";
import { debounceTap, FYShuffle, mostValue } from '@/plugins' import { debounceTap, FYShuffle, mostValue } from "@/plugins";
import { onMounted } from "vue";
// //
const emit = defineEmits(["QuestionPage"]); const emit = defineEmits(["QuestionPage"]);
// //
const currentId = ref(0) //id 0~11 const currentId = ref(0); //id 0~11
const questionList = ref(FYShuffle(data)) // const questionList = ref(FYShuffle(data)); //
const answerList = ref([]) // const answerList = ref([]); //
const activeId = ref('') // const activeId = ref(""); //
const showResultBtn = ref(false) const showResultBtn = ref(false);
// //
const answerFn = (item, event) => { const answerFn = (item, event) => {
let e = event.target let e = event.target.parentElement.parentElement;
activeId.value = item.aid activeId.value = item.aid;
debounceTap(e, () => { debounceTap(e, () => {
let cid = questionList.value[currentId.value].id if (currentId.value != 0 && currentId.value != 11) {
let has = answerList.value.findIndex(obj => obj.qid === cid); gsap.to(".prev-btn", { duration: 0.5, x: "-=20px", autoAlpha: 0 });
}
if (currentId.value != 11) {
questionOut.timeScale(2);
questionOut.restart();
questionOut.eventCallback("onComplete", () => {
console.log("题目:", currentId.value);
let cid = questionList.value[currentId.value].id;
let has = answerList.value.findIndex((obj) => obj.qid === cid);
if (has == -1) { if (has == -1) {
answerList.value.push({ answerList.value.push({
qid: cid, qid: cid,
answer: item.secore, answer: item.secore,
text: item.text text: item.text,
}) });
} else { } else {
answerList.value[has].answer = item.secore answerList.value[has].answer = item.secore;
answerList.value[has].text = item.text answerList.value[has].text = item.text;
} }
// //
if (currentId.value >= 11) { if (currentId.value >= 11) {
Toast('答题结束') console.log("jieshu");
console.log('答题结束'); Toast("答题结束");
showResultBtn.value = true gsap.set(".answer", { pointerEvents: "none" });
gsap.set('.answer-box', { pointerEvents: 'none' }) return;
return
} else { } else {
activeId.value = '' activeId.value = "";
currentId.value++ currentId.value++;
} }
questionEntry.timeScale(2);
questionEntry.restart();
});
} else {
resultBtnAni.play();
}
console.log("答案库", answerList.value);
});
};
console.log('答案库', answerList.value); const mbtiArr = ref([[], [], [], []]); // E&IS&TT&FJ&P
})
}
const mbtiArr = ref([[], [], [], []]) // E&IS&TT&FJ&P
const showResult = (event) => { const showResult = (event) => {
let e = event.target let e = event.target;
debounceTap(e, () => { debounceTap(e, () => {
// console.log('', answerList.value); // console.log('', answerList.value);
answerList.value.forEach(element => { answerList.value.forEach((element) => {
if (element.answer == "E" || element.answer == "I") mbtiArr.value[0].push(element.answer) if (element.answer == "E" || element.answer == "I")
if (element.answer == "S" || element.answer == "N") mbtiArr.value[1].push(element.answer) mbtiArr.value[0].push(element.answer);
if (element.answer == "T" || element.answer == "F") mbtiArr.value[2].push(element.answer) if (element.answer == "S" || element.answer == "N")
if (element.answer == "J" || element.answer == "P") mbtiArr.value[3].push(element.answer) mbtiArr.value[1].push(element.answer);
}); if (element.answer == "T" || element.answer == "F")
// console.log('mbtiArr', mbtiArr.value); mbtiArr.value[2].push(element.answer);
let mbti = mostValue(mbtiArr.value[0]).value + mostValue(mbtiArr.value[1]).value + mostValue(mbtiArr.value[2]).value + mostValue(mbtiArr.value[3]).value if (element.answer == "J" || element.answer == "P")
console.log('MBTI:', mbti); mbtiArr.value[3].push(element.answer);
Toast('你的MBTI测试结果:' + mbti) });
}) // console.log('mbtiArr', mbtiArr.value);
} let mbti =
mostValue(mbtiArr.value[0]).value +
mostValue(mbtiArr.value[1]).value +
mostValue(mbtiArr.value[2]).value +
mostValue(mbtiArr.value[3]).value;
console.log("MBTI:", mbti);
Toast("你的MBTI测试结果:" + mbti);
});
};
// //
const prevePage = (event) => { const prevePage = (event) => {
let e = event.target let e = event.target;
debounceTap(e, () => { debounceTap(e, () => {
activeId.value = '' gsap.to(".prev-btn", { duration: 0.5, x: "-=20px", autoAlpha: 0 });
currentId.value-- if (currentId.value >= 11) {
}) resultBtnAni.reverse();
} gsap.set(".answer", { pointerEvents: "initial" });
}
activeId.value = "";
currentId.value--;
// questionEntry.reverse(0.3);
// questionEntry.restart(true);
// setTimeout(()=>{})
});
};
//
const questionEntry = gsap.timeline({
paused: true,
onStart: () => {
gsap.set(".answer-box", { pointerEvents: "none" });
},
onComplete: () => {
if (currentId.value != 0) {
gsap.to(".prev-btn", { duration: 0.5, x: "+=20px", autoAlpha: 1 });
}
gsap.set(".answer-box", { pointerEvents: "initial" });
},
});
const questionOut = gsap.timeline({
paused: true,
onStart: () => {
gsap.set(".answer-box", { pointerEvents: "none" });
},
onComplete: () => {
gsap.set(".answer-box", { pointerEvents: "initial" });
},
});
//
const resultBtnAni = gsap.timeline({ paused: true });
onMounted(() => {
resultBtnAni.from(".showResult-btn", { y: 200, autoAlpha: 0 });
questionEntry
.from(".question", { y: 100, autoAlpha: 0 })
.from(".answer-0", {
y: 400,
scale: 0.3,
autoAlpha: 0,
duration: 2,
ease: "slow(0.7,0.7,false)",
})
.from(
".answer-1",
{
y: 400,
scale: 0.3,
autoAlpha: 0,
duration: 2,
ease: "slow(0.7,0.7,false)",
},
0.5
);
questionEntry.play();
questionOut
.to(".question", { y: -50, autoAlpha: 0, duration: 0.3 })
.to(".answer-0", { scale: 0.3, duration: 1 })
.to(".answer-1", { scale: 0.3, duration: 1 }, 0.5)
.to(".answer-0", {
y: -600,
scale: 0.5,
autoAlpha: 0,
duration: 1.5,
ease: "slow(0.7,0.7,false)",
})
.to(
".answer-1",
{
y: -600,
scale: 0.5,
autoAlpha: 0,
duration: 1.5,
ease: "slow(0.7,0.7,false)",
},
1.5
);
});
</script> </script>
<template> <template>
<div class="QuestionPage"> <div class="QuestionPage" @touchmove.prevent>
<div class="question-bg"></div> <div class="question-bg"></div>
<div class="question-container"> <div class="question-container">
<div class="question-content"> <div class="question-content">
<div class="question">{{ currentId + 1 }}.{{ questionList[currentId].question }}</div> <div class="question">
<div class="answer-box"> <div class="question-order">{{ currentId + 1 }}</div>
<div class="answer" :class="activeId == item.aid ? 'active' : ''" <div class="question-text">
v-for="item in questionList[currentId].answer " @click="answerFn(item, $event)">{{ item.aid }}.{{ <div class="text">{{ questionList[currentId].question }}</div>
item.text }} </div>
</div>
</div>
<!-- 查看结果 -->
<Button v-if="showResultBtn" @click="showResult">查看结果</Button>
<!-- 下一页 -->
<Button v-show="currentId != 0" @click="prevePage">上一页</Button>
</div>
</div> </div>
<div class="answer-box">
<div
class="answer"
v-for="(item, index) in questionList[currentId].answer"
:class="'answer-' + index"
:key="index"
>
<div
class="answer-bg"
:class="activeId == item.aid ? 'active' : ''"
></div>
<div class="answer-text">
<div class="content-before"></div>
<div class="content-after"></div>
<div class="text" @click="answerFn(item, $event)">
{{ item.aid }}<br />{{ item.text }}
</div>
</div>
</div>
<!-- 查看结果 -->
<div class="showResult-btn" @click="showResult"></div>
<!-- 上一页 -->
<div class="prev-btn" @click="prevePage($event)"></div>
</div>
</div>
</div> </div>
</div>
</template> </template>
<style lang='scss' scope> <style lang='scss' scope>
.QuestionPage { .QuestionPage {
@include pos(100%, 100%, 0px, 0px); @include pos(100%, 100%, 0px, 0px);
background-color: rgb(68, 208, 112); background-color: rgb(68, 208, 112);
overflow: hidden; overflow: hidden;
.question-bg { .question-bg {
@include pos(750px, 100%, 0px, 50%); @include pos(750px, 100%, 0px, 50%);
transform: translateY(-50%); transform: translateY(-50%);
@include bg_pos("qa/bg.jpg"); @include bg_pos("qa/bg.jpg");
}
} .question-container {
@include pos(750px, 100%, 0px, 50%);
transform: translateY(-50%);
@include flexCen();
.question-container { .question-content {
@include pos(750px, 100%, 0px, 50%); @include box(100%, 100%);
transform: translateY(-50%); @include flexCen();
@include flexCen();
.question-content { .question {
@include box(100%, 100%); position: relative;
@include flexCen(); @include box(713px, 428px);
@include bg_pos("qa/question.png");
font-family: "alimama";
color: #c6672c;
.question-order {
@include pos(544px, 75px, 87px, 112px);
display: flex;
justify-content: center;
align-items: center;
font-size: 66px;
font-weight: 700;
line-height: 80px;
}
.question-text {
@include pos(544px, 150px, 87px, 192px);
box-sizing: border-box;
// padding-bottom: 20px;
display: flex;
justify-content: center;
align-items: center;
font-size: 40px;
font-weight: 700;
line-height: 50px;
.text {
width: 80%;
// height: 100%;
display: flex;
justify-content: center;
align-content: center;
}
}
}
.question { .answer-box {
@include box(713px, 428px); // display: flex;
@include bg_pos("qa/question.png"); // flex-direction: column;
} @include box(750px, 886px);
margin-top: 10px;
.answer-box { position: relative;
display: flex;
flex-direction: column; .answer {
margin-top: 30px; @include box(481px, 471px);
// width: 80%; position: absolute;
// font-family: "alimama";
.answer {} color: #c6672c;
.answer-bg {
.active { @include pos(481px, 471px, 0px, 0px);
background-color: #ff2020; @include bg_pos("qa/answer-box-1.png");
color: rgb(255, 255, 255); pointer-events: none;
} }
.active {
@include bg_pos("qa/answer-box-2.png");
// color: rgb(255, 255, 255);
}
.answer-text {
// @include pos(367px, 357px, 0px, 0px);
position: relative;
left: 58px;
top: 58px;
@include box(367px, 357px);
padding: 10px;
border-radius: 50%;
font-size: 35px;
font-weight: 700;
border-radius: 50%;
// .content-before {
// pointer-events: none;
// float: left;
// width: 50%;
// height: 100%;
// shape-outside: radial-gradient(
// farthest-side ellipse at right,
// transparent 98%,
// red
// );
// }
// .content-after {
// pointer-events: none;
// float: right;
// width: 50%;
// height: 100%;
// shape-outside: radial-gradient(
// farthest-side ellipse at left,
// transparent 98%,
// red
// );
// }
.text {
@include box(367px, 357px);
padding: 0px 20px;
box-sizing: border-box;
position: absolute;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
padding-bottom: 20px;
} }
}
} }
.answer:nth-child(1) {
top: 0px;
left: 6px;
}
.answer:nth-child(2) {
top: 414px;
left: 258px;
}
}
.prev-btn {
@include pos(148px, 61px, 50px, 600px);
@include bg_pos("qa/prev-btn.png");
visibility: hidden;
}
.showResult-btn {
@include box(478px, 246px);
position: fixed;
left: 149px;
bottom: 0px;
@include bg_pos("qa/showResult-btn.png");
}
} }
}
} }
</style> </style>

1
src/data/argument.js Normal file
View File

@ -0,0 +1 @@
export const argument = '风险提示: 本材料由平安理财有限责任公司(以下简称“平安理财”)制作并提供。本资料内容及观点仅供参考,不构成对任何人的投资建议。以上产品投资管理机构/管理人为平安理财,代理销售机构不承担产品的投资、兑付和风险管理的责任。以上产品通过代理销售机构渠道销售的,产品风险评级应当以代理销售机构最终披露的评级结果为准。以上产品为非保本浮动收益理财产品,具体以产品说明书或产品公告披露为准。产品的业绩比较基准指管理人基于过往投资经验以及对产品存续期投资市场波动的预判而对本产品所设定的投资目标,业绩比较基准不是预期收益率,不代表产品的未来表现和实际收益,不构成对产品收益的承诺。理财产品过往业绩不代表其未来表现,不等于理财产品实际收益,投资须谨慎。过往业绩相关数据已经托管人核对。理财非存款,产品有风险,投资须谨慎。金融消费者不得利用金融产品和服务从事违法活动。'

View File

@ -1,6 +1,28 @@
const load = [ const load = [
'load/1.png', 'load/clock-second.png',
'load/clock-minute.png',
'load/clock-hour.png',
'load/clock-circle.png',
'load/clock-bg.png',
'load/bg.jpg',
]
const page = [
'index/title.png',
'index/start-btn.png',
'index/rule-btn.png',
'index/prize-btn.png',
'index/bg.jpg',
'prize/myPrize-box.png',
'prize/copy-btn.png',
'prize/cls-btn.png',
'qa/showResult-btn.png',
'qa/question.png',
'qa/prev-btn.png',
'qa/bg.jpg',
'qa/answer-box-2.png',
'qa/answer-box-1.png',
] ]
// 处理为vite引入图片格式 // 处理为vite引入图片格式
@ -17,4 +39,8 @@ load.forEach(element => {
imgCreate(element, loadImg) imgCreate(element, loadImg)
}); });
page.forEach(element => {
imgCreate(element, pageImg)
});
export { loadImg, pageImg } export { loadImg, pageImg }

View File

@ -74,7 +74,7 @@ export default [
answer: [ answer: [
{ {
aid: 'A', aid: 'A',
text: '与朋友、同事或专业顾问讨论,通过外部交流获得信息和建议', text: '与朋友、同事或专业顾问讨论, 通过外部交流获得信息和建议',
secore: 'E', secore: 'E',
}, },
{ {

View File

@ -3,6 +3,7 @@
<Index v-if="showIndex" @IndexPage="indexFn"></Index> <Index v-if="showIndex" @IndexPage="indexFn"></Index>
<Question v-if="showQuestion" @QuestionPage="questionFn"></Question> <Question v-if="showQuestion" @QuestionPage="questionFn"></Question>
<Loading v-if="showLoad" @LoadPage="loadFn"></Loading> <Loading v-if="showLoad" @LoadPage="loadFn"></Loading>
<MyPrize v-if="showMyPrize" @MyPrizePage="myPrizeFn"></MyPrize>
</div> </div>
</template> </template>
@ -11,9 +12,10 @@ import gsap from "gsap";
import Loading from "@/components/Loading"; import Loading from "@/components/Loading";
import Index from "@/components/Index"; import Index from "@/components/Index";
import Question from "@/components/Question"; import Question from "@/components/Question";
import MyPrize from "@/components/MyPrize";
import { createBGM } from "@/plugins"; import { createBGM } from "@/plugins";
const showLoad = ref(false); const showLoad = ref(true);
const loadFn = (item) => { const loadFn = (item) => {
if (item.action == "hide") { if (item.action == "hide") {
showLoad.value = false; showLoad.value = false;
@ -26,15 +28,28 @@ const indexFn = (item) => {
if (item.action == "hide") { if (item.action == "hide") {
showIndex.value = false; showIndex.value = false;
} }
if (item.action == "showMyPrize") {
showMyPrize.value = true;
}
if (item.action == "start") {
showQuestion.value = true;
}
}; };
const showQuestion = ref(true); const showQuestion = ref(false);
const questionFn = (item) => { const questionFn = (item) => {
if (item.action == "hide") { if (item.action == "hide") {
showQuestion.value = false; showQuestion.value = false;
} }
}; };
const showMyPrize = ref(false);
const myPrizeFn = (item) => {
if (item.action == "hide") {
showMyPrize.value = false;
}
};
onMounted(() => { onMounted(() => {
// createBGM(); // createBGM();
}); });

View File

@ -5,7 +5,9 @@ import { defineStore } from "pinia"
export const useMainStore = defineStore("counter", { export const useMainStore = defineStore("counter", {
state: () => { state: () => {
return { return {
name: '超级管理员' name: '超级管理员',
prizeCode: 'DKS18',
prizeMoney: '8.88',
} }
}, },
// 相当于computed属性对state进行二次加工 // 相当于computed属性对state进行二次加工

View File

@ -1,6 +1,10 @@
@charset "utf-8"; @charset "utf-8";
$red: red; // @import url('@/assets/font/AlimamaShuHeiTi.ttf');
$green: green;
@font-face {
font-family: 'alimama';
src: url(@/assets/font/AlimamaShuHeiTi.ttf) format('truetype');
}
* { * {
padding: 0; padding: 0;
@ -24,7 +28,6 @@ $green: green;
// DIV背景 // DIV背景
@mixin bg_pos($src) { @mixin bg_pos($src) {
// new URL(`../assets/images/${url}`, import.meta.url).href
background-image: url("@/assets/images/" + $src); background-image: url("@/assets/images/" + $src);
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 100% 100%; background-size: 100% 100%;

126
yarn.lock
View File

@ -112,6 +112,11 @@
resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
"@types/web-bluetooth@^0.0.20":
version "0.0.20"
resolved "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz#f066abfcd1cbe66267cdbbf0de010d8a41b41597"
integrity sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==
"@vant/auto-import-resolver@^1.0.2": "@vant/auto-import-resolver@^1.0.2":
version "1.0.2" version "1.0.2"
resolved "https://registry.npmmirror.com/@vant/auto-import-resolver/-/auto-import-resolver-1.0.2.tgz#6eeb5fc3976dc64b425c7cb4ca7c0ddc8469a4fb" resolved "https://registry.npmmirror.com/@vant/auto-import-resolver/-/auto-import-resolver-1.0.2.tgz#6eeb5fc3976dc64b425c7cb4ca7c0ddc8469a4fb"
@ -148,6 +153,17 @@
estree-walker "^2.0.2" estree-walker "^2.0.2"
source-map-js "^1.0.2" source-map-js "^1.0.2"
"@vue/compiler-core@3.4.13":
version "3.4.13"
resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.13.tgz#49f499034c25b0832845028ea3cd701fe5a17367"
integrity sha512-zGUdmB3j3Irn9z51GXLJ5s0EAHxmsm5/eXl0y6MBaajMeOAaiT4+zaDoxui4Ets98dwIRr8BBaqXXHtHSfm+KA==
dependencies:
"@babel/parser" "^7.23.6"
"@vue/shared" "3.4.13"
entities "^4.5.0"
estree-walker "^2.0.2"
source-map-js "^1.0.2"
"@vue/compiler-dom@3.4.10": "@vue/compiler-dom@3.4.10":
version "3.4.10" version "3.4.10"
resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.10.tgz#aaed699125ea6da2daf540bf8f68ade08e95086b" resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.10.tgz#aaed699125ea6da2daf540bf8f68ade08e95086b"
@ -156,6 +172,14 @@
"@vue/compiler-core" "3.4.10" "@vue/compiler-core" "3.4.10"
"@vue/shared" "3.4.10" "@vue/shared" "3.4.10"
"@vue/compiler-dom@3.4.13":
version "3.4.13"
resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.13.tgz#66a80a6ee412a3d32b7175a146b75d9ec3d1c50c"
integrity sha512-XSNbpr5Rs3kCfVAmBqMu/HDwOS+RL6y28ZZjDlnDUuf146pRWt2sQkwhsOYc9uu2lxjjJy2NcyOkK7MBLVEc7w==
dependencies:
"@vue/compiler-core" "3.4.13"
"@vue/shared" "3.4.13"
"@vue/compiler-sfc@3.4.10": "@vue/compiler-sfc@3.4.10":
version "3.4.10" version "3.4.10"
resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.4.10.tgz#3ff0abf204d7a24317ad2111e087b7b775970f6b" resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.4.10.tgz#3ff0abf204d7a24317ad2111e087b7b775970f6b"
@ -171,6 +195,21 @@
postcss "^8.4.32" postcss "^8.4.32"
source-map-js "^1.0.2" source-map-js "^1.0.2"
"@vue/compiler-sfc@3.4.13":
version "3.4.13"
resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.4.13.tgz#0f5f6db0e64f522c09995585453ae5f13ba54c60"
integrity sha512-SkpmQN8xIFBd5onT413DFSDdjxULJf6jmJg/t3w/DZ9I8ZzyNlLIBLO0qFLewVHyHCiAgpPZlWqSRZXYrawk3Q==
dependencies:
"@babel/parser" "^7.23.6"
"@vue/compiler-core" "3.4.13"
"@vue/compiler-dom" "3.4.13"
"@vue/compiler-ssr" "3.4.13"
"@vue/shared" "3.4.13"
estree-walker "^2.0.2"
magic-string "^0.30.5"
postcss "^8.4.32"
source-map-js "^1.0.2"
"@vue/compiler-ssr@3.4.10": "@vue/compiler-ssr@3.4.10":
version "3.4.10" version "3.4.10"
resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.4.10.tgz#526a55c718249de43e13914b0df03ddadfcc3cb1" resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.4.10.tgz#526a55c718249de43e13914b0df03ddadfcc3cb1"
@ -179,6 +218,14 @@
"@vue/compiler-dom" "3.4.10" "@vue/compiler-dom" "3.4.10"
"@vue/shared" "3.4.10" "@vue/shared" "3.4.10"
"@vue/compiler-ssr@3.4.13":
version "3.4.13"
resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.4.13.tgz#90fa9a4116f7974d7a4e43a8a67f3fc162e8720f"
integrity sha512-rwnw9SVBgD6eGKh8UucnwztieQo/R3RQrEGpE0b0cxb2xxvJeLs/fe7DoYlhEfaSyzM/qD5odkK87hl3G3oW+A==
dependencies:
"@vue/compiler-dom" "3.4.13"
"@vue/shared" "3.4.13"
"@vue/devtools-api@^6.5.0": "@vue/devtools-api@^6.5.0":
version "6.5.1" version "6.5.1"
resolved "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.1.tgz#7f71f31e40973eeee65b9a64382b13593fdbd697" resolved "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.1.tgz#7f71f31e40973eeee65b9a64382b13593fdbd697"
@ -191,6 +238,13 @@
dependencies: dependencies:
"@vue/shared" "3.4.10" "@vue/shared" "3.4.10"
"@vue/reactivity@3.4.13":
version "3.4.13"
resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.4.13.tgz#7eeeb9d598512f66e06a6438fd53464014b5ae59"
integrity sha512-/ZdUOrGKkGVONzVJkfDqNcn2fLMvaa5VlYx2KwTbnRbX06YZ4GJE0PVTmWzIxtBYdpSTLLXgw3pDggO+96KXzg==
dependencies:
"@vue/shared" "3.4.13"
"@vue/runtime-core@3.4.10": "@vue/runtime-core@3.4.10":
version "3.4.10" version "3.4.10"
resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.4.10.tgz#b2eb152d26760dd7e3c362a1db2d7105826c1cc2" resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.4.10.tgz#b2eb152d26760dd7e3c362a1db2d7105826c1cc2"
@ -199,6 +253,14 @@
"@vue/reactivity" "3.4.10" "@vue/reactivity" "3.4.10"
"@vue/shared" "3.4.10" "@vue/shared" "3.4.10"
"@vue/runtime-core@3.4.13":
version "3.4.13"
resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.4.13.tgz#776cad7c1d56ec5e92a48e040c8483b89f779542"
integrity sha512-Ov4d4At7z3goxqzSqQxdfVYEcN5HY4dM1uDYL6Hu/Es9Za9BEN602zyjWhhi2+BEki5F9NizRSvn02k/tqNWlg==
dependencies:
"@vue/reactivity" "3.4.13"
"@vue/shared" "3.4.13"
"@vue/runtime-dom@3.4.10": "@vue/runtime-dom@3.4.10":
version "3.4.10" version "3.4.10"
resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.4.10.tgz#89974d8aa7e9555f952a92c3f03ed1713df04b6f" resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.4.10.tgz#89974d8aa7e9555f952a92c3f03ed1713df04b6f"
@ -208,6 +270,15 @@
"@vue/shared" "3.4.10" "@vue/shared" "3.4.10"
csstype "^3.1.3" csstype "^3.1.3"
"@vue/runtime-dom@3.4.13":
version "3.4.13"
resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.4.13.tgz#74aff1494bee49c037b9c5355d8998c793ac0977"
integrity sha512-ynde9p16eEV3u1VCxUre2e0nKzD0l3NzH0r599+bXeLT1Yhac8Atcot3iL9XNqwolxYCI89KBII+2MSVzfrz6w==
dependencies:
"@vue/runtime-core" "3.4.13"
"@vue/shared" "3.4.13"
csstype "^3.1.3"
"@vue/server-renderer@3.4.10": "@vue/server-renderer@3.4.10":
version "3.4.10" version "3.4.10"
resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.4.10.tgz#722cc408d926344c695456f62e918d961b41cd4f" resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.4.10.tgz#722cc408d926344c695456f62e918d961b41cd4f"
@ -216,11 +287,46 @@
"@vue/compiler-ssr" "3.4.10" "@vue/compiler-ssr" "3.4.10"
"@vue/shared" "3.4.10" "@vue/shared" "3.4.10"
"@vue/server-renderer@3.4.13":
version "3.4.13"
resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.4.13.tgz#b8c9cfb2147c0a01feba7f136d3a432848dafcab"
integrity sha512-hkw+UQyDZZtSn1q30nObMfc8beVEQv2pG08nghigxGw+iOWodR+tWSuJak0mzWAHlP/xt/qLc//dG6igfgvGEA==
dependencies:
"@vue/compiler-ssr" "3.4.13"
"@vue/shared" "3.4.13"
"@vue/shared@3.4.10": "@vue/shared@3.4.10":
version "3.4.10" version "3.4.10"
resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.10.tgz#d2399901586bdb1bc727c8d61f0e543b25b2461c" resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.10.tgz#d2399901586bdb1bc727c8d61f0e543b25b2461c"
integrity sha512-C0mIVhwW1xQLMFyqMJxnhq6fWyE02lCgcE+TDdtGpg6B3H6kh/0YcqS54qYc76UJNlWegf3VgsLqgk6D9hBmzQ== integrity sha512-C0mIVhwW1xQLMFyqMJxnhq6fWyE02lCgcE+TDdtGpg6B3H6kh/0YcqS54qYc76UJNlWegf3VgsLqgk6D9hBmzQ==
"@vue/shared@3.4.13":
version "3.4.13"
resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.13.tgz#a1eefce5ddffe207d53eafbc07f4ebbea0a4768a"
integrity sha512-56crFKLPpzk85WXX1L1c0QzPOuoapWlPVys8eMG8kkRmqdMjWUqK8KpFdE2d7BQA4CEbXwyyHPq6MpFr8H9rcg==
"@vueuse/core@^10.7.1":
version "10.7.1"
resolved "https://registry.npmmirror.com/@vueuse/core/-/core-10.7.1.tgz#b4bfe3355dbb0ec17d34d737385e1c8a0156ccf1"
integrity sha512-74mWHlaesJSWGp1ihg76vAnfVq9NTv1YT0SYhAQ6zwFNdBkkP+CKKJmVOEHcdSnLXCXYiL5e7MaewblfiYLP7g==
dependencies:
"@types/web-bluetooth" "^0.0.20"
"@vueuse/metadata" "10.7.1"
"@vueuse/shared" "10.7.1"
vue-demi ">=0.14.6"
"@vueuse/metadata@10.7.1":
version "10.7.1"
resolved "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-10.7.1.tgz#190a8d0e97216941cc95120c89dfa2c4228b2a53"
integrity sha512-jX8MbX5UX067DYVsbtrmKn6eG6KMcXxLRLlurGkZku5ZYT3vxgBjui2zajvUZ18QLIjrgBkFRsu7CqTAg18QFw==
"@vueuse/shared@10.7.1":
version "10.7.1"
resolved "https://registry.npmmirror.com/@vueuse/shared/-/shared-10.7.1.tgz#b9892fc31784d685619015fba287cde53873485d"
integrity sha512-v0jbRR31LSgRY/C5i5X279A/WQjD6/JsMzGa+eqt658oJ75IvQXAeONmwvEMrvJQKnRElq/frzBR7fhmWY5uLw==
dependencies:
vue-demi ">=0.14.6"
acorn@^8.10.0, acorn@^8.11.2, acorn@^8.8.2: acorn@^8.10.0, acorn@^8.11.2, acorn@^8.8.2:
version "8.11.3" version "8.11.3"
resolved "https://registry.npmmirror.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" resolved "https://registry.npmmirror.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
@ -1326,6 +1432,13 @@ unplugin@^1.4.0, unplugin@^1.5.1, unplugin@^1.6.0:
webpack-sources "^3.2.3" webpack-sources "^3.2.3"
webpack-virtual-modules "^0.6.1" webpack-virtual-modules "^0.6.1"
v-clipboard@^3.0.0-next.1:
version "3.0.0-next.1"
resolved "https://registry.npmmirror.com/v-clipboard/-/v-clipboard-3.0.0-next.1.tgz#6e360e54f20cc15cd5bc57b3a71af28bc371b4e5"
integrity sha512-UvCnzetQMlVfk9yoiyew8ldGiCzeER5aYdmXXtZp8LC6rt2QXQS0AayEDn1K7rlXpd3M8d+JeYNUV+ZNgtaS4A==
dependencies:
vue "^3.2.45"
vant@^3.6.12: vant@^3.6.12:
version "3.6.12" version "3.6.12"
resolved "https://registry.npmmirror.com/vant/-/vant-3.6.12.tgz#a46045c74961744f27d5a6ffbc3bed592f0f4d0b" resolved "https://registry.npmmirror.com/vant/-/vant-3.6.12.tgz#a46045c74961744f27d5a6ffbc3bed592f0f4d0b"
@ -1384,7 +1497,7 @@ vite@^3.2.3:
optionalDependencies: optionalDependencies:
fsevents "~2.3.2" fsevents "~2.3.2"
vue-demi@>=0.14.5: vue-demi@>=0.14.5, vue-demi@>=0.14.6:
version "0.14.6" version "0.14.6"
resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.6.tgz#dc706582851dc1cdc17a0054f4fec2eb6df74c92" resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.6.tgz#dc706582851dc1cdc17a0054f4fec2eb6df74c92"
integrity sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w== integrity sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==
@ -1400,6 +1513,17 @@ vue@^3.2.41:
"@vue/server-renderer" "3.4.10" "@vue/server-renderer" "3.4.10"
"@vue/shared" "3.4.10" "@vue/shared" "3.4.10"
vue@^3.2.45:
version "3.4.13"
resolved "https://registry.npmmirror.com/vue/-/vue-3.4.13.tgz#aa522baf2344d1c4c54c769f66c0151f1872f1ff"
integrity sha512-FE3UZ0p+oUZTwz+SzlH/hDFg+XsVRFvwmx0LXjdD1pRK/cO4fu5v6ltAZji4za4IBih3dV78elUK3di8v3pWIg==
dependencies:
"@vue/compiler-dom" "3.4.13"
"@vue/compiler-sfc" "3.4.13"
"@vue/runtime-dom" "3.4.13"
"@vue/server-renderer" "3.4.13"
"@vue/shared" "3.4.13"
webpack-sources@^3.2.3: webpack-sources@^3.2.3:
version "3.2.3" version "3.2.3"
resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"