8 Commits

Author SHA1 Message Date
梁泽军
d239b3f8fb Merge branch 'summer' of https://git.szxgl.cn/liangzejun/palc-newyear2024 into summer 2025-01-13 10:00:07 +08:00
梁泽军
8f74351ebc 存档 2025-01-13 09:58:49 +08:00
5ffb8d8e76 update 2024-08-30 18:33:11 +08:00
9204daccf2 update 2024-08-09 10:27:55 +08:00
3a20e989b3 update 2024-08-08 15:36:03 +08:00
梁泽军
070a49155a 修改了部分内容 2024-08-08 10:58:37 +08:00
梁泽军
d0d616a598 Merge branch 'summer' of https://git.szxgl.cn/liangzejun/palc-newyear2024 into summer 2024-07-25 10:15:43 +08:00
梁泽军
0b680fe379 整合 2024-07-25 10:15:19 +08:00
24 changed files with 256 additions and 161 deletions

View File

@@ -5,3 +5,4 @@ VITE_FOLDER = /vite-4
VITE_APPID = wxc2bc9f9e8d19b504
VITE_API = /intfgw/data/mmoactivity
VITE_URL = https://w-stg.pingan.com.cn/lckj/pawm-mmo-activity-xgl-frontend/index.html

View File

@@ -2,7 +2,7 @@ import http from './http'
// 获取code
export function authorize(data, authorization) {
return http.post("/h5/Oauth/authorize",
return http.post("/h5/oauth/authorize",
data,
true,
);
@@ -10,7 +10,7 @@ export function authorize(data, authorization) {
// 获取用户信息
export function getUserInfo(data, authorization) {
return http.post("/h5/Oauth/getUserInfo",
return http.post("/h5/oauth/getUserInfo",
data,
true,
);
@@ -54,7 +54,7 @@ export function exchangePrize(data, authorization) {
// 分享接口
export function getShareConfig(data, authorization) {
return http.post("/h5/Oauth/getShareConfig",
return http.post("/h5/oauth/getShareConfig",
data,
true,
);

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 KiB

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 224 KiB

After

Width:  |  Height:  |  Size: 267 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 176 KiB

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 KiB

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 KiB

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 89 KiB

View File

@@ -3,6 +3,8 @@ import { Toast } from "vant";
import { debounceTap } from "@/plugins";
import gsap from "gsap";
import { useMainStore } from "@/store";
import Preloader from "@/plugins/Preloader";
import { pageQAImg } from "@/data/imgList";
const emit = defineEmits(["IndexPage"]);
const userStore = useMainStore();
@@ -33,9 +35,11 @@ const showRule = (event) => {
});
};
onMounted(() => {
gsap.from(".index-bg,.index-island,.index-cloud-1,.index-cloud-2,.index-tree-1", { duration: 1, scale: 1.2, autoAlpha: 0 });
gsap.from(
".index-bg,.index-island,.index-cloud-1,.index-cloud-2,.index-tree-1",
{ duration: 1, scale: 1.2, autoAlpha: 0 }
);
gsap.from(".index-title", { duration: 1, y: 20, autoAlpha: 0 });
gsap.from(".index-sub-title", { duration: 1, x: 20, autoAlpha: 0 });
gsap.from(".index-rule-btn", { duration: 1, x: -100, autoAlpha: 0 });
@@ -56,21 +60,62 @@ onMounted(() => {
scale: 0.4,
autoAlpha: 0,
delay: 0.5,
onComplete:()=>{
gsap.to('.index-start-btn',{duration:1,scale:'0.9',repeat:-1,yoyo:true,ease:'bounce.in'})
gsap.to('.index-cloud-1',{duration:2,x:-30,repeat:-1,yoyo:true,ease:'none'})
gsap.to('.index-cloud-2',{duration:2,x:30,repeat:-1,yoyo:true,ease:'none'})
gsap.to('.index-tree-1',{duration:2,y:10,repeat:-1,yoyo:true,ease:'none'})
gsap.to('.index-title',{duration:2.5,y:-20,repeat:-1,yoyo:true,ease:'none'})
gsap.to('.index-sub-title',{duration:3,x:10,repeat:-1,yoyo:true,ease:'none'})
}
onComplete: () => {
gsap.to(".index-start-btn", {
duration: 1,
scale: "0.9",
repeat: -1,
yoyo: true,
ease: "bounce.in",
});
gsap.to(".index-cloud-1", {
duration: 2,
x: -30,
repeat: -1,
yoyo: true,
ease: "none",
});
gsap.to(".index-cloud-2", {
duration: 2,
x: 30,
repeat: -1,
yoyo: true,
ease: "none",
});
gsap.to(".index-tree-1", {
duration: 2,
y: 10,
repeat: -1,
yoyo: true,
ease: "none",
});
gsap.to(".index-title", {
duration: 2.5,
y: -20,
repeat: -1,
yoyo: true,
ease: "none",
});
gsap.to(".index-sub-title", {
duration: 3,
x: 10,
repeat: -1,
yoyo: true,
ease: "none",
});
// 开始加载答题页面资源
Preloader({
name: "加载答题页资源",
imgs: pageQAImg,
callback: (progress) => {
// console.log("进度:", progress);
},
}).then((res) => {
console.log("done!");
});
},
});
});
const vcNum = ref(false);
@@ -98,9 +143,17 @@ const showVC = () => {
<div class="index-prize-btn" @click="showMyPrize($event)"></div>
<div class="index-start-btn" @click="start"></div>
<div class="index-agreement">
风险提示: 本材料由平安理财有限责任公司(以下简称平安理财)制作并提供<span
class="b">本资料内容及观点仅供参考不构成对任何人的投资建议</span>以上产品投资管理机构/管理人为平安理财代理销售机构不承担产品的投资兑付和风险管理的责任以上产品通过代理销售机构渠道销售的产品风险评级应当以代理销售机构最终披露的评级结果为准以上产品为非保本浮动收益理财产品具体以产品说明书或产品公告披露为准产品的业绩比较基准指管理人基于过往投资经验以及对产品存续期投资市场波动的预判而对本产品所设定的投资目标业绩比较基准不是预期收益率不代表产品的未来表现和实际收益不构成对产品收益的承诺<span
class="b">理财产品过往业绩不代表其未来表现不等于理财产品实际收益投资须谨慎过往业绩相关数据已经托管人核对</span><span class="orange">理财非存款产品有风险投资须谨慎</span>金融消费者不得利用金融产品和服务从事违法活动
<div class="agreement">
风险提示:
本材料由平安理财有限责任公司(以下简称平安理财)制作并提供<span
class="b"
>本资料内容及观点仅供参考不构成对任何人的投资建议</span
>以上产品投资管理机构/管理人为平安理财代理销售机构不承担产品的投资兑付和风险管理的责任以上产品通过代理销售机构渠道销售的产品风险评级应当以代理销售机构最终披露的评级结果为准以上产品为非保本浮动收益理财产品具体以产品说明书或产品公告披露为准产品的业绩比较基准指管理人基于过往投资经验以及对产品存续期投资市场波动的预判而对本产品所设定的投资目标业绩比较基准不是预期收益率不代表产品的未来表现和实际收益不构成对产品收益的承诺<span
class="b"
>理财产品过往业绩不代表其未来表现不等于理财产品实际收益投资须谨慎过往业绩相关数据已经托管人核对</span
><span class="orange">理财非存款产品有风险投资须谨慎</span
>金融消费者不得利用金融产品和服务从事违法活动
</div>
</div>
</div>
</div>
@@ -122,7 +175,6 @@ const showVC = () => {
@include pos(750px, 1624px, 0px, 50%);
transform: translateY(-50%);
// .index-logo{
// pointer-events: none;
// @include pos(632px, 94px, 59px, 267px);
@@ -131,29 +183,29 @@ const showVC = () => {
.index-title {
// pointer-events: none;
@include pos(632px, 253px, 46px, 254px);
@include pos(633px, 253px, 46px, 254px);
@include bg_pos("index/title.png");
}
.index-island{
.index-island {
pointer-events: none;
@include pos(714px, 867px, 15px, 542px);
@include bg_pos("index/island.png");
}
.index-cloud-1{
.index-cloud-1 {
pointer-events: none;
@include pos(210px, 147px, -15px, 535px);
@include bg_pos("index/cloud-1.png");
}
.index-cloud-2{
.index-cloud-2 {
pointer-events: none;
@include pos(151px, 172px, 656px, 486px);
@include bg_pos("index/cloud-2.png");
}
.index-tree-1{
.index-tree-1 {
pointer-events: none;
@include pos(228px, 199px, -45px, 492px);
@include bg_pos("index/tree-1.png");
@@ -181,10 +233,13 @@ const showVC = () => {
}
.index-agreement {
font-family: 'HarmonyOS_Sans_SC_Regular';
font-family: "HarmonyOS_Sans_SC_Regular";
pointer-events: none;
@include pos(736px, 182px, 7px, 1230px);
background-color: rgba(255, 255, 255,0.75);
.agreement {
background-color: rgba(255, 255, 255, 0.75);
font-size: 14px;
text-align: justify;
letter-spacing: 0.1px;
@@ -203,7 +258,7 @@ const showVC = () => {
font-weight: 700;
}
}
}
}
}
</style>

View File

@@ -5,6 +5,8 @@ import { data } from "@/data";
import { debounceTap, FYShuffle, mostValue, judgeBigScreen } from "@/plugins";
import { useMainStore } from "@/store";
import { subAnswer } from "@/api";
import Preloader from "@/plugins/Preloader";
import { pageResultImg } from "@/data/imgList";
// 页面配置初始化
const emit = defineEmits(["QuestionPage"]);
@@ -22,7 +24,7 @@ const isChecked = ref(false);
const answerFn = (item, event) => {
let e = event.target.parentElement;
activeId.value = item.aid; //更新选中状态
console.log("选项", item);
// console.log("选项", item);
debounceTap(e, () => {
let cid = questionList.value[currentId.value].id;
let has = answerList.value.findIndex((obj) => obj.id === cid);
@@ -41,9 +43,9 @@ const answerFn = (item, event) => {
gsap.set(".option-tips,.analysis", { autoAlpha: 1 });
gsap.set(".answer-box", { pointerEvents: "none" });
isChecked.value = true;
console.log("currentId.value", currentId.value);
// console.log("currentId.value", currentId.value);
if (currentId.value == 2) {
console.log("over");
// console.log("over");
gsap.set(".create-btn", { autoAlpha: 1 });
} else {
gsap.set(".next-btn", { autoAlpha: 1 });
@@ -121,8 +123,31 @@ const getRandomNumber = (arr) => {
onMounted(() => {
gsap.from(".question-bg", { duration: 0.5, autoAlpha: 0 });
gsap.from(".question-box", { duration: 0.5, y: 30, autoAlpha: 0 });
gsap.from(".answer-box", { duration: 0.5, y: 30, autoAlpha: 0 });
gsap.to('.question-tree', { duration: 3, transformOrigin: '0% 70%', rotation: '-10deg', repeat: -1, yoyo: true, ease: 'none' })
gsap.from(".answer-box", {
duration: 0.5,
y: 30,
autoAlpha: 0,
onComplete: () => {
// 开始加载答题页面资源
Preloader({
name: "加载结果页资源",
imgs: pageResultImg,
callback: (progress) => {
// console.log("进度:", progress);
},
}).then((res) => {
console.log("done!");
});
},
});
gsap.to(".question-tree", {
duration: 3,
transformOrigin: "0% 70%",
rotation: "-10deg",
repeat: -1,
yoyo: true,
ease: "none",
});
});
</script>
@@ -146,7 +171,6 @@ onMounted(() => {
</div>
</div>
</div>
</div>
<!-- 选项 -->
<div class="answer-box">
@@ -173,12 +197,12 @@ onMounted(() => {
</div>
</div>
<!-- 解析 -->
<div class="analysis">
<!-- <div class="analysis">
<div v-for="li in questionList[currentId].analysis" :key="li">
<span class="analysis-icon"></span>
{{ li }}
</div>
</div>
</div> -->
<div class="next-btn" @click="nextQuestion($event)"></div>
<div class="create-btn" @click="viewResult($event)"></div>
</div>
@@ -201,7 +225,6 @@ onMounted(() => {
@include pos(750px, 1624px, 0px, 50%);
transform: translateY(-50%);
@include bg_pos("qa/bg.jpg");
}
.question-container {
@@ -210,18 +233,18 @@ onMounted(() => {
@include flexCen();
justify-content: space-around;
.question-box{
.question-box {
@include box(696px, 441px);
@include bg_pos("qa/question-box.png");
position: relative;
.question-tree{
@include pos(277px, 232px,-100px,-141px);
.question-tree {
@include pos(277px, 232px, -100px, -141px);
@include bg_pos("qa/tree.png");
}
.question-con {
@include pos(696px, 441px,0px,0px);
@include pos(696px, 441px, 0px, 0px);
@include bg_pos("qa/question-box.png");
.qa-number {
@@ -259,7 +282,6 @@ onMounted(() => {
}
}
// 选项样式
.answer-box {
@include box(750px, 205px);
@@ -274,6 +296,8 @@ onMounted(() => {
padding: 0 50px;
font-family: "HarmonyOS_Sans_SC_Regular";
.answer {
display: flex;
flex-direction: row;
@@ -287,6 +311,10 @@ onMounted(() => {
position: relative;
box-shadow: 0px 0px 5px rgba(255, 255, 255, 0.361) inset;
.answer-text {
white-space: nowrap;
}
.bubble-1 {
@include pos(55px, 5px, 88px, 7px);
@include bg_pos("qa/bubble-1.png");
@@ -325,7 +353,6 @@ onMounted(() => {
color: #e74c00;
// background-color: rgba(255, 255, 255, 0.471);
box-shadow: 5px 5px 5px rgba(255, 240, 192, 0.471) inset;
}
.option-tips {

View File

@@ -88,7 +88,7 @@ const createPoster = (event) => {
{
name: "text",
src: posterTextSrc,
pos: { w: 337, h: 117, x: 81, y: 1133 },
pos: { w: 347, h: 155, x: 81, y: 1113 },
},
]
);
@@ -213,15 +213,15 @@ const hideShare = () => {
}
.r-text-1 {
@include pos(638px, 814px, 67px, 396px);
@include pos(642px, 865px, 67px, 396px);
@include bg_pos("result/text-1.png");
}
.r-text-2 {
@include pos(643px, 814px, 67px, 396px);
@include pos(644px, 830px, 59px, 407px);
@include bg_pos("result/text-2.png");
}
.r-text-3 {
@include pos(643px, 844px, 63px, 392px);
@include pos(642px, 876px, 63px, 392px);
@include bg_pos("result/text-3.png");
}

View File

@@ -33,7 +33,8 @@ onMounted(() => {
<div class="rule-text-area wrapper">
<div>
<div class="part">
<div>活动时间2024年7月31日8月2日</div>
<div>活动时间</div>
<div>2024年8月14日8:30-2024年8月16日17:30</div>
<div>活动奖励微信红包</div>
</div>
<div class="part">
@@ -50,14 +51,9 @@ onMounted(() => {
</div>
<div>2成功领奖后奖品将会在24小时内自动到账请耐心等候</div>
<div>3中奖人请在活动结束前进行兑换逾期视为弃权</div>
<div class="part">其他</div>
<div>
活动期间如遇到任何问题请在<span class="blod">[平安理财服务号]</span>后台咨询我们会在一个工作日内回复
</div>
<div class="part">说明平安理财有权对活动规则进行解释</div>
</div>
<div class="part">
<div>活动规则</div>
<div>其他说明</div>
<div>
1本活动由平安理财有限责任公司主办为保证活动的公平公正活动结束后主办方将对中奖用户信息进行核对用户若有下列任何一种行为或情况的主办方有权不经另行通知取消其参与活动以及获奖资格收回奖品权益井保留追究其法律责任的权利:
</div>
@@ -117,8 +113,8 @@ onMounted(() => {
.part {
color: #0070d9;
font-size: 20px;
line-height: 35px;
font-size: 24px;
line-height: 40px;
margin-top: 30px;
text-align: justify;
padding: 0 10px;

View File

@@ -13,6 +13,27 @@ const page = [
"index/title.png",
"index/island.png",
"rule/cls-btn.png",
"rule/arrow.png",
"rule/rule-box.png",
"rule/icon.png",
];
// 问题页面
const pageQA = [
"qa/bubble-1.png",
"qa/analysis-icon.png",
"qa/create-btn.png",
"qa/next-btn.png",
"qa/incorrect.png",
"qa/correct.png",
"qa/question-box.png",
"qa/tree.png",
"qa/bg.jpg",
]
// 结果页面
const pageResult = [
"prize/copy-btn2.png",
"prize/copy-btn.png",
"prize/cls-btn.png",
@@ -27,17 +48,6 @@ const page = [
"prize/prize-box.png",
"prize/myPrize-box.png",
"prize/draw-box.png",
"qa/bubble-1.png",
"qa/analysis-icon.png",
"qa/create-btn.png",
"qa/next-btn.png",
"qa/incorrect.png",
"qa/correct.png",
"qa/question-box.png",
"qa/tree.png",
"qa/bg.jpg",
"result/cls-btn.png",
"result/poster-text.png",
"result/go-draw-btn.png",
@@ -50,15 +60,10 @@ const page = [
"result/r-bg-2.jpg",
"result/r-bg-1.jpg",
"result/r-bg-3.jpg",
"result/poster-1.jpg",
"result/poster-3.jpg",
"result/poster-2.jpg",
"rule/cls-btn.png",
"rule/arrow.png",
"rule/rule-box.png",
"rule/icon.png",
];
// "result/poster-1.jpg",
// "result/poster-3.jpg",
// "result/poster-2.jpg",
]
// 处理为vite引入图片格式
function imgCreate(url, img) {
@@ -66,8 +71,15 @@ function imgCreate(url, img) {
img.push(i);
}
const loadImg = [];
const pageImg = [];
const pageQAImg = [];
const pageResultImg = [];
load.forEach((element) => {
imgCreate(element, loadImg);
@@ -77,4 +89,12 @@ page.forEach((element) => {
imgCreate(element, pageImg);
});
export { loadImg, pageImg };
pageQA.forEach((element) => {
imgCreate(element, pageQAImg);
});
pageResult.forEach((element) => {
imgCreate(element, pageResultImg);
});
export { loadImg, pageImg,pageQAImg,pageResultImg };

View File

@@ -1,23 +1,24 @@
export const data = [
{
id: 1,
type: '1',
question: [
'激情夏日温度攀升,理财投资热情高涨。当理财市场有波动、收益上涨,别人劝你搏一搏时,正确的做法是:',
'低波稳健类产品通常是指配置大比例低波资产,不投资权益类资产的产品 \n受债市波动影响较小且不受股市影响。低波稳健类产品的产品风险评级是哪个',
],
answer: [
{
aid: 'A',
text: [
'当然all in我就是热点中心',
'R1低风险或R2中低风险',
],
result:'incorrect',
result:'correct',
},
{
aid: 'B',
text: [
'鸡蛋不放在一个篮子里,样样都来点儿',
'R4及以上高风险',
],
result:'correct',
result:'incorrect',
},
],
analysis: ['解析选择B。虽然市场热点可能带来诱人的收益但理财的基本原则是风险管理。通过将投资分散在不同的理财产品和市场可以降低单一投资的风险争取资产增长的机会。']
@@ -25,22 +26,22 @@ export const data = [
{
id: 2,
question: [
'夏日闲钱早规划get生活小确幸。长期来看选择哪类型理财可以较稳健地进行闲钱进阶',
'经常热衷于购买现金管理类产品的投资者,如果希望进行“稳健的理财进阶”,需要牺牲一定流动性换取收益空间,以下哪类产品可以帮助实现:',
],
answer: [
{
aid: 'A',
text: [
'较低风险的现金类产品',
'最短持有期类理财产品',
],
result:'incorrect',
result:'correct',
},
{
aid: 'B',
text: [
'策略稳健的固收类理财产品',
'混合类理财产品',
],
result:'correct',
result:'incorrect',
},
],
analysis: ['解析选择B。现金类产品具有高流动性的特征更适合日常流动资金。但在长期限选择中固收理财拥有较大的投资范围和空间运用策略提供稳健体验有效平衡风险力争增厚收益机会闲钱再进阶。因此不同的资金用途记得匹配不同产品噢。']
@@ -48,20 +49,20 @@ export const data = [
{
id: 3,
question: [
'夏天的快乐是多巴胺旅行给的!想要一场说走就走的快乐,平时的旅行备用金该如何准备才好呢?',
'低波稳健类理财通常会通过估值、资产、策略三方面实现“低波稳健”的特征,以下哪个描述是正确的:',
],
answer: [
{
aid: 'A',
text: [
'购买最短持有期理财产品,享灵活与收益空间',
'精选存单存款等低波资产的理财产品更稳健',
],
result:'correct',
},
{
aid: 'B',
text: [
'船到桥头自然直',
'混合估值法不能在市场震荡时帮助净值更平稳',
],
result:'incorrect',
},

View File

@@ -40,8 +40,6 @@ const showDraw = ref(false);
const showRule = ref(false);
const showResult = ref(false);
const loadFn = (item) => {
if (item.action == "hide") {
showLoad.value = false;

View File

@@ -51,10 +51,7 @@ body {
font-family: "HarmonyOS_Sans_SC_Regular";
src: url(@/assets/font/HarmonyOS_Sans_SC_Regular.ttf) format("truetype");
}
@font-face {
font-family: "DouyinSansBold";
src: url(@/assets/font/DouyinSansBold.ttf) format("truetype");
}
* {
padding: 0;

View File

@@ -33,7 +33,7 @@ export default defineConfig(({ command, mode }) => {
template: 'index.html',
injectOptions: {
data: {
title: '平安理财 邂逅清凉一夏',
title: '好“理”在手 邂逅清凉一夏',
},
}
},