Compare commits
11 Commits
749a61f00b
...
dragon_boa
| Author | SHA1 | Date | |
|---|---|---|---|
| 616b0c7509 | |||
|
|
a40b88c915 | ||
|
|
80272a6830 | ||
| c458a512bb | |||
|
|
f6e435cece | ||
|
|
6bb2497d7c | ||
| ef44ba761d | |||
|
|
68c4a94916 | ||
| 124e44bae2 | |||
|
|
913e82905b | ||
|
|
e340bc89c6 |
2
.env.fat
@@ -1,6 +1,6 @@
|
|||||||
VITE_MODE = fat
|
VITE_MODE = fat
|
||||||
VITE_HOST = https://wmm-stg.pingan.com.cn
|
VITE_HOST = https://wmm-stg.pingan.com.cn
|
||||||
VITE_CDN = https://cdn.xglpa.com
|
VITE_CDN = https://cdn.xglpa.com/palc-preview
|
||||||
VITE_FOLDER = /vite-4
|
VITE_FOLDER = /vite-4
|
||||||
VITE_APPID = wxc2bc9f9e8d19b504
|
VITE_APPID = wxc2bc9f9e8d19b504
|
||||||
VITE_API = /intfgw/data/mmoactivity
|
VITE_API = /intfgw/data/mmoactivity
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport"
|
<meta name="viewport"
|
||||||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
|
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
|
||||||
|
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
|
||||||
<title><%- title%></title>
|
<title><%- title%></title>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
|||||||
3853
package-lock.json
generated
Normal file
@@ -17,7 +17,6 @@
|
|||||||
"howler": "^2.2.4",
|
"howler": "^2.2.4",
|
||||||
"pinia": "^2.2.0",
|
"pinia": "^2.2.0",
|
||||||
"qrcode": "^1.5.3",
|
"qrcode": "^1.5.3",
|
||||||
"swiper": "^11.2.1",
|
|
||||||
"qs": "^6.11.2",
|
"qs": "^6.11.2",
|
||||||
"vant": "^3.6.12",
|
"vant": "^3.6.12",
|
||||||
"vconsole": "^3.15.1",
|
"vconsole": "^3.15.1",
|
||||||
@@ -27,7 +26,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@vant/auto-import-resolver": "^1.0.2",
|
"@vant/auto-import-resolver": "^1.0.2",
|
||||||
"@vitejs/plugin-vue": "^5.2.4",
|
"@vitejs/plugin-vue": "^4.0.0",
|
||||||
"postcss-px-to-viewport-8-plugin": "^1.2.3",
|
"postcss-px-to-viewport-8-plugin": "^1.2.3",
|
||||||
"sass": "^1.68.0",
|
"sass": "^1.68.0",
|
||||||
"sass-loader": "^13.3.2",
|
"sass-loader": "^13.3.2",
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 582 KiB After Width: | Height: | Size: 125 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 735 B |
|
Before Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 945 B |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 20 KiB |
BIN
src/assets/images/qa/result-box-2.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.3 KiB |
BIN
src/assets/images/qa/tips-bg-2.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
src/assets/images/qa/tips-bg.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 258 KiB After Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 739 B After Width: | Height: | Size: 703 B |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 597 KiB After Width: | Height: | Size: 287 KiB |
|
Before Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 721 B After Width: | Height: | Size: 688 B |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 103 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 65 KiB |
@@ -156,7 +156,7 @@ onMounted(() => {
|
|||||||
<span class="code">{{ code }}</span>
|
<span class="code">{{ code }}</span>
|
||||||
<span class="copy-btn" @click="copyFn($event)"></span>
|
<span class="copy-btn" @click="copyFn($event)"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="exchange-tips">兑换流程:前往微信搜索【平安理财服务号】公众号发送“五一快乐”获取兑奖链接,输入兑换码兑换奖品</div>
|
<div class="exchange-tips">兑换流程:前往微信搜索【平安理财服务号】公众号发送“端午安康”获取兑奖链接,输入兑换码兑换奖品</div>
|
||||||
<div class="exchnage-tips2">(兑换码可在主页面“我的奖品” 再次查看并复制)</div>
|
<div class="exchnage-tips2">(兑换码可在主页面“我的奖品” 再次查看并复制)</div>
|
||||||
<div class="cls-btn" @click="hide($event)"></div>
|
<div class="cls-btn" @click="hide($event)"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ onMounted(() => {
|
|||||||
gsap.from(".index-bg", { duration: 1, scale: 1.2, autoAlpha: 0 });
|
gsap.from(".index-bg", { duration: 1, scale: 1.2, autoAlpha: 0 });
|
||||||
gsap.from(".index-title", { duration: 1, y: 20, autoAlpha: 0, delay: 1 });
|
gsap.from(".index-title", { duration: 1, y: 20, autoAlpha: 0, delay: 1 });
|
||||||
gsap.from(".index-time", { duration: 1, x: 40, autoAlpha: 0, delay: 1 });
|
gsap.from(".index-time", { duration: 1, x: 40, autoAlpha: 0, delay: 1 });
|
||||||
gsap.from(".index-text", { duration: 1, scale: 2, autoAlpha: 0, delay: 1 });
|
|
||||||
gsap.from(".index-logo", { duration: 1, y: 20, autoAlpha: 0, delay: 0.75 });
|
gsap.from(".index-logo", { duration: 1, y: 20, autoAlpha: 0, delay: 0.75 });
|
||||||
gsap.from(".index-rule-btn", { duration: 1, x: -100, autoAlpha: 0, delay: 1.3 });
|
gsap.from(".index-rule-btn", { duration: 1, x: -100, autoAlpha: 0, delay: 1.3 });
|
||||||
gsap.from(".index-prize-btn", {
|
gsap.from(".index-prize-btn", {
|
||||||
@@ -124,7 +123,7 @@ const showVC = () => {
|
|||||||
|
|
||||||
.index-title {
|
.index-title {
|
||||||
// pointer-events: none;
|
// pointer-events: none;
|
||||||
@include pos(593px, 155px, 85px, 387px);
|
@include pos(593px, 156px, 85px, 387px);
|
||||||
@include bg_pos("index/title.png");
|
@include bg_pos("index/title.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,27 +2,26 @@
|
|||||||
import { debounceTap } from "@/plugins";
|
import { debounceTap } from "@/plugins";
|
||||||
import gsap from "gsap";
|
import gsap from "gsap";
|
||||||
import { Toast } from "vant";
|
import { Toast } from "vant";
|
||||||
import useClipboard from 'vue-clipboard3'
|
import useClipboard from "vue-clipboard3";
|
||||||
import { useMainStore } from "@/store";
|
import { useMainStore } from "@/store";
|
||||||
import { onMounted } from "vue";
|
import { onMounted } from "vue";
|
||||||
|
|
||||||
// 页面配置初始化
|
// 页面配置初始化
|
||||||
const emit = defineEmits(["MyPrizePage"]);
|
const emit = defineEmits(["MyPrizePage"]);
|
||||||
const userStore = useMainStore();
|
const userStore = useMainStore();
|
||||||
const { toClipboard } = useClipboard()
|
const { toClipboard } = useClipboard();
|
||||||
|
|
||||||
const money = ref(userStore.prizeMoney);
|
const money = ref(userStore.prizeMoney);
|
||||||
const code = ref(userStore.prizeCode);
|
const code = ref(userStore.prizeCode);
|
||||||
|
|
||||||
const copyFn = (event) => {
|
const copyFn = (event) => {
|
||||||
let e = event.target;
|
let e = event.target;
|
||||||
toClipboard(code.value)
|
toClipboard(code.value);
|
||||||
debounceTap(e, () => {
|
debounceTap(e, () => {
|
||||||
Toast(`复制成功:${code.value}`);
|
Toast(`复制成功:${code.value}`);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const hide = (event) => {
|
const hide = (event) => {
|
||||||
let e = event.target;
|
let e = event.target;
|
||||||
debounceTap(e, () => {
|
debounceTap(e, () => {
|
||||||
@@ -57,8 +56,12 @@ onMounted(() => {
|
|||||||
<div class="code">{{ code }}</div>
|
<div class="code">{{ code }}</div>
|
||||||
<div class="myPrize-copy-btn" @click="copyFn($event)"></div>
|
<div class="myPrize-copy-btn" @click="copyFn($event)"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="exchange-tips">兑换流程:前往微信搜索【平安理财服务号】公众号发送“五一快乐”获取兑奖链接,输入兑换码兑换奖品</div>
|
<div class="exchange-tips">
|
||||||
<div class="exchnage-tips2">(兑换码可在主页面“我的奖品” 再次查看并复制)</div>
|
兑换流程:前往微信搜索【平安理财服务号】公众号发送“端午安康”获取兑奖链接,输入兑换码兑换奖品
|
||||||
|
</div>
|
||||||
|
<div class="exchnage-tips2">
|
||||||
|
(兑换码可在主页面“我的奖品” 再次查看并复制)
|
||||||
|
</div>
|
||||||
<div class="myPrize-cls-btn" @click="hide($event)"></div>
|
<div class="myPrize-cls-btn" @click="hide($event)"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -93,7 +96,6 @@ onMounted(() => {
|
|||||||
letter-spacing: 0;
|
letter-spacing: 0;
|
||||||
// background-color: aqua;
|
// background-color: aqua;
|
||||||
@include flexCen();
|
@include flexCen();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.myPrize-money {
|
.myPrize-money {
|
||||||
@@ -117,13 +119,11 @@ onMounted(() => {
|
|||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
color: #fff6cc;
|
color: #fff6cc;
|
||||||
|
|
||||||
|
|
||||||
span {
|
span {
|
||||||
// height: 77px;
|
// height: 77px;
|
||||||
line-height: 65px;
|
line-height: 65px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.code {
|
.code {
|
||||||
font-size: 25px;
|
font-size: 25px;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
@@ -162,7 +162,6 @@ onMounted(() => {
|
|||||||
// background-color: aqua;
|
// background-color: aqua;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.myPrize-cls-btn {
|
.myPrize-cls-btn {
|
||||||
@include pos(82px, 82px, 517px, 114px);
|
@include pos(82px, 82px, 517px, 114px);
|
||||||
@include bg_pos("prize/cls-btn.png");
|
@include bg_pos("prize/cls-btn.png");
|
||||||
|
|||||||
@@ -7,10 +7,9 @@ import { useMainStore } from "@/store";
|
|||||||
import { subAnswer } from "@/api";
|
import { subAnswer } from "@/api";
|
||||||
|
|
||||||
// 页面配置初始化
|
// 页面配置初始化
|
||||||
const emit = defineEmits([ "QuestionPage"]);
|
const emit = defineEmits(["QuestionPage"]);
|
||||||
const userStore = useMainStore();
|
const userStore = useMainStore();
|
||||||
|
|
||||||
|
|
||||||
// 当前题目
|
// 当前题目
|
||||||
// const currentId = ref(props.questionId); //当前id 0~4
|
// const currentId = ref(props.questionId); //当前id 0~4
|
||||||
const currentId = ref(0); //当前id 0~3
|
const currentId = ref(0); //当前id 0~3
|
||||||
@@ -19,6 +18,7 @@ const questionList = ref(data); //随机打乱题库
|
|||||||
const isChecked = ref(false);
|
const isChecked = ref(false);
|
||||||
const checkedOption = ref("");
|
const checkedOption = ref("");
|
||||||
const QaResult = ref(1); //当前答题结果
|
const QaResult = ref(1); //当前答题结果
|
||||||
|
const correctObj = ref({}); //当前正确选项
|
||||||
|
|
||||||
// 答题事件
|
// 答题事件
|
||||||
const answerFn = (item, event) => {
|
const answerFn = (item, event) => {
|
||||||
@@ -30,6 +30,13 @@ const answerFn = (item, event) => {
|
|||||||
checkedOption.value = item;
|
checkedOption.value = item;
|
||||||
console.log("checkedOption", checkedOption.value);
|
console.log("checkedOption", checkedOption.value);
|
||||||
QaResult.value = item.result;
|
QaResult.value = item.result;
|
||||||
|
|
||||||
|
// 设置正确选项
|
||||||
|
correctObj.value = questionList.value[currentId.value].answer.find(
|
||||||
|
(item) => item.result == 1
|
||||||
|
);
|
||||||
|
console.log("correctObj", correctObj.value);
|
||||||
|
|
||||||
gsap.to(".qp-result ", { duration: 0.5, autoAlpha: 1, delay: 1 });
|
gsap.to(".qp-result ", { duration: 0.5, autoAlpha: 1, delay: 1 });
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -66,7 +73,9 @@ const viewResult = (event) => {
|
|||||||
forbidClick: true,
|
forbidClick: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (import.meta.env.VITE_MODE != "dev") {
|
let dev = "dev";
|
||||||
|
|
||||||
|
if (dev != "dev") {
|
||||||
// 提交完成记录
|
// 提交完成记录
|
||||||
subAnswer({}, userStore.token).then((res) => {
|
subAnswer({}, userStore.token).then((res) => {
|
||||||
console.log("key:", res);
|
console.log("key:", res);
|
||||||
@@ -76,11 +85,11 @@ const viewResult = (event) => {
|
|||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
Toast.clear();
|
Toast.clear();
|
||||||
gsap.to(".QuestionPage", {
|
gsap.to(".QuestionPage,.qp-result", {
|
||||||
duration: 0.5,
|
duration: 0.5,
|
||||||
autoAlpha: 0,
|
autoAlpha: 0,
|
||||||
onComplete: () => {
|
onComplete: () => {
|
||||||
emit("showResult", { action: "showResult" });
|
emit("QuestionPage", { action: "showResult" });
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}, 1000);
|
}, 1000);
|
||||||
@@ -92,7 +101,7 @@ const viewResult = (event) => {
|
|||||||
duration: 0.5,
|
duration: 0.5,
|
||||||
autoAlpha: 0,
|
autoAlpha: 0,
|
||||||
onComplete: () => {
|
onComplete: () => {
|
||||||
emit("QuestionPage", { action: 'showResult' });
|
emit("QuestionPage", { action: "showResult" });
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}, 1000);
|
}, 1000);
|
||||||
@@ -122,9 +131,13 @@ const getClass = (item) => {
|
|||||||
<div class="question-serial">
|
<div class="question-serial">
|
||||||
<div>
|
<div>
|
||||||
<div class="serial-icon"></div>
|
<div class="serial-icon"></div>
|
||||||
<div class="serial-text">第{{ currentId + 1 }}题</div>
|
<div class="serial-text">
|
||||||
|
{{ ["题目一", "题目二", "题目三", "题目四"][currentId] }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="serial-num">
|
||||||
|
{{ currentId + 1 }}/{{ questionList.length }}
|
||||||
</div>
|
</div>
|
||||||
<div class="serial-num">{{ currentId+1 }}/{{ questionList.length }}</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="qa-question-box">
|
<div class="qa-question-box">
|
||||||
<div class="question">
|
<div class="question">
|
||||||
@@ -173,14 +186,27 @@ const getClass = (item) => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="qp-result">
|
<div class="qp-result">
|
||||||
<div class="qp-result-box">
|
<div
|
||||||
|
class="qp-result-box"
|
||||||
|
:class="!QaResult ? 'qp-result-box-0' : 'qp-result-box-1'"
|
||||||
|
>
|
||||||
<div
|
<div
|
||||||
class="qp-result-icon"
|
class="qp-result-icon"
|
||||||
:class="!QaResult ? 'is-incorrect' : ''"
|
:class="!QaResult ? 'is-incorrect' : ''"
|
||||||
></div>
|
></div>
|
||||||
<div class="qp-result-text">{{ QaResult ? "答对啦" : "答错啦" }}</div>
|
|
||||||
<div class="qp-tips-text">{{ questionList[currentId].tips[0] }}</div>
|
<div class="qp-result-content">
|
||||||
<div class="qp-result-btn"></div>
|
<div
|
||||||
|
class="qp-result-text"
|
||||||
|
:class="!QaResult ? 'text-bg-2' : 'text-bg-1'"
|
||||||
|
>
|
||||||
|
{{ QaResult ? "答对啦" : "答错啦" }}
|
||||||
|
</div>
|
||||||
|
<div class="qp-tips" v-if="!QaResult">
|
||||||
|
答案:{{ correctObj.aid }}.{{ correctObj.text }}
|
||||||
|
</div>
|
||||||
|
<div class="qp-tips-text">解析:{{ questionList[currentId].tips[0] }}</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="next-btn"
|
class="next-btn"
|
||||||
@@ -235,6 +261,7 @@ const getClass = (item) => {
|
|||||||
color: transparent;
|
color: transparent;
|
||||||
-webkit-text-stroke: 3px #ffffff; /* 控制描边粗细和颜色 */
|
-webkit-text-stroke: 3px #ffffff; /* 控制描边粗细和颜色 */
|
||||||
text-stroke: 3px #ffffff;
|
text-stroke: 3px #ffffff;
|
||||||
|
opacity: 0.5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -350,31 +377,63 @@ const getClass = (item) => {
|
|||||||
background-color: rgba($color: #000000, $alpha: 0.6);
|
background-color: rgba($color: #000000, $alpha: 0.6);
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
.qp-result-box {
|
.qp-result-box {
|
||||||
@include box(569px, 399px);
|
@include box(569px, 526px);
|
||||||
@include bg_pos("qa/result-box.png");
|
|
||||||
position: relative;
|
position: relative;
|
||||||
.qp-result-icon {
|
.qp-result-icon {
|
||||||
@include pos(112px, 112px, 222px, -28px);
|
@include pos(112px, 112px, 223px, -30px);
|
||||||
@include bg_pos("qa/correct-icon.png");
|
@include bg_pos("qa/correct-icon.png");
|
||||||
}
|
}
|
||||||
.is-incorrect {
|
.is-incorrect {
|
||||||
@include bg_pos("qa/incorrect-icon.png");
|
@include bg_pos("qa/incorrect-icon.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.qp-result-content {
|
||||||
|
@include pos(569px, 430px, 0px, 95px);
|
||||||
|
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
.qp-result-text {
|
.qp-result-text {
|
||||||
@include pos(569px, 50px, 0px, 104px);
|
@include box(319px, 47px);
|
||||||
@include flexCen();
|
text-align: center;
|
||||||
|
width: 100%;
|
||||||
font-size: 35px;
|
font-size: 35px;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
|
margin: 20px auto;
|
||||||
|
}
|
||||||
|
.text-bg-1 {
|
||||||
|
@include bg_pos("qa/tips-bg.png");
|
||||||
|
}
|
||||||
|
.text-bg-2 {
|
||||||
|
@include bg_pos("qa/tips-bg-2.png");
|
||||||
|
}
|
||||||
|
.qp-tips {
|
||||||
|
width: 80%;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 25px;
|
||||||
|
color: #ff0000;
|
||||||
}
|
}
|
||||||
.qp-tips-text {
|
.qp-tips-text {
|
||||||
@include pos(569px, 220px, 0px, 150px);
|
width: 100%;
|
||||||
padding: 20px;
|
padding: 10px 20px;
|
||||||
font-size: 25px;
|
font-size: 25px;
|
||||||
line-height: 35px;
|
line-height: 40px;
|
||||||
text-align: justify;
|
text-align: justify;
|
||||||
color: #b3640d;
|
color: #b3640d;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.qp-result-box-1 {
|
||||||
|
@include bg_pos("qa/result-box.png");
|
||||||
|
}
|
||||||
|
.qp-result-box-0 {
|
||||||
|
@include bg_pos("qa/result-box-2.png");
|
||||||
|
}
|
||||||
|
|
||||||
.next-btn {
|
.next-btn {
|
||||||
@include box(190px, 65px);
|
@include box(190px, 65px);
|
||||||
|
|||||||
@@ -56,9 +56,9 @@ const showPoster = () => {
|
|||||||
duration: 0.3,
|
duration: 0.3,
|
||||||
autoAlpha: 1,
|
autoAlpha: 1,
|
||||||
});
|
});
|
||||||
gsap.from(".cls-btn-box", {
|
gsap.from(".poster-title", {
|
||||||
duration: 0.7,
|
duration: 0.7,
|
||||||
scale: 1.2,
|
scale: 0.3,
|
||||||
autoAlpha: 0,
|
autoAlpha: 0,
|
||||||
});
|
});
|
||||||
gsap.from(".poster-box", {
|
gsap.from(".poster-box", {
|
||||||
@@ -216,6 +216,7 @@ const posterCreate = (option, imageArr) => {
|
|||||||
<div class="posterPop" @touchmove.prevent>
|
<div class="posterPop" @touchmove.prevent>
|
||||||
<div class="poster-bg"></div>
|
<div class="poster-bg"></div>
|
||||||
<div class="poster-container">
|
<div class="poster-container">
|
||||||
|
<div class="poster-title"></div>
|
||||||
<div class="poster-box">
|
<div class="poster-box">
|
||||||
<div class="poster">
|
<div class="poster">
|
||||||
<img id="posterSrc" src="" alt="" srcset="" />
|
<img id="posterSrc" src="" alt="" srcset="" />
|
||||||
@@ -251,14 +252,12 @@ const posterCreate = (option, imageArr) => {
|
|||||||
|
|
||||||
.poster-container {
|
.poster-container {
|
||||||
@include pos(750px, 1624px, 0px, 0px);
|
@include pos(750px, 1624px, 0px, 0px);
|
||||||
// transform: translateY(-50%);
|
|
||||||
@include flexCen();
|
@include flexCen();
|
||||||
background-color: rgba($color: #000000, $alpha: 0.3);
|
background-color: rgba($color: #000000, $alpha: 0.3);
|
||||||
|
|
||||||
.cls-btn-box {
|
.poster-title {
|
||||||
width: 617px;
|
@include box(592px, 156px);
|
||||||
display: flex;
|
@include bg_pos("index/title.png");
|
||||||
justify-content: flex-end;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.save-tips {
|
.save-tips {
|
||||||
|
|||||||
@@ -33,13 +33,13 @@ onMounted(() => {
|
|||||||
<div class="rule-text-area wrapper">
|
<div class="rule-text-area wrapper">
|
||||||
<div>
|
<div>
|
||||||
<div class="part">
|
<div class="part">
|
||||||
<div>活动时间:2025年4月27日——4月30日</div>
|
<div>活动时间:2025年5月29日——5月31日</div>
|
||||||
<div>活动奖励:微信红包</div>
|
<div>活动奖励:微信红包</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="part">
|
<div class="part">
|
||||||
<div>活动攻略:</div>
|
<div>活动攻略:</div>
|
||||||
<div>
|
<div>
|
||||||
1、【打卡理想假期,五一好礼等你】活动共设计5道题目,首页进入后左右滑动选择您想打卡的地点,点击进行答题,答对后即可获取专属打卡海报,并参与抽奖;答错时将跳转回选择打卡地点的页面,重新答题。
|
1、【龙舟争渡 稳健为先——端午赛龙舟中的投资哲学】活动共设计4道题目,首页进入后点击进行答题,全部答对即可获取专属赛龙舟海报,并参与抽奖;答错时刷新即可重新回答本题。
|
||||||
</div>
|
</div>
|
||||||
<div>2、活动期间不限制参与答题次数,每人每日有1次抽奖机会。</div>
|
<div>2、活动期间不限制参与答题次数,每人每日有1次抽奖机会。</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -47,7 +47,7 @@ onMounted(() => {
|
|||||||
<div>领奖说明:</div>
|
<div>领奖说明:</div>
|
||||||
<div>
|
<div>
|
||||||
1、中奖后在中奖页面复制兑换码,前往<span
|
1、中奖后在中奖页面复制兑换码,前往<span
|
||||||
class="blod">[平安理财服务号]</span>消息框输入“五一快乐”获取兑换链接,进入链接输入兑换码兑换奖品。如关闭了中奖界面,可在首页-[我的奖品]
|
class="blod">[平安理财服务号]</span>消息框输入“端午安康”获取兑换链接,进入链接输入兑换码兑换奖品。如关闭了中奖界面,可在首页-[我的奖品]
|
||||||
内查看兑换码;
|
内查看兑换码;
|
||||||
</div>
|
</div>
|
||||||
<div>2、成功领奖后,奖品将会在24小时内自动到账,请耐心等候;</div>
|
<div>2、成功领奖后,奖品将会在24小时内自动到账,请耐心等候;</div>
|
||||||
@@ -98,12 +98,12 @@ onMounted(() => {
|
|||||||
|
|
||||||
.rule-container {
|
.rule-container {
|
||||||
position: relative;
|
position: relative;
|
||||||
@include box(685px, 876px);
|
@include box(708px, 880px);
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
.rule-content {
|
.rule-content {
|
||||||
@include box(685px, 876px);
|
@include box(708px, 880px);
|
||||||
@include bg_pos("rule/rule-box.png");
|
@include bg_pos("rule/rule-box.png");
|
||||||
position: relative;
|
position: relative;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@@ -122,7 +122,7 @@ onMounted(() => {
|
|||||||
margin-top: 30px;
|
margin-top: 30px;
|
||||||
text-align: justify;
|
text-align: justify;
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
font-family: 'FZZY_Regular';
|
font-family: 'HarmonyOS_Sans_SC_Regular';
|
||||||
}
|
}
|
||||||
|
|
||||||
.blod {
|
.blod {
|
||||||
@@ -151,7 +151,7 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.rule-icon {
|
.rule-icon {
|
||||||
@include pos(97px, 120px, 561px, 25px);
|
@include pos(121px, 104px, 501px, 25px);
|
||||||
@include bg_pos("rule/icon.png");
|
@include bg_pos("rule/icon.png");
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +1,51 @@
|
|||||||
const load = [
|
const load = [
|
||||||
"load/icon.png",
|
"load/icon.png",
|
||||||
|
|
||||||
"index/bg.jpg",
|
|
||||||
"music-on.png",
|
"music-on.png",
|
||||||
|
"music-off.png",
|
||||||
"share.jpg",
|
"share.jpg",
|
||||||
|
"orientation-icon.png",
|
||||||
];
|
];
|
||||||
|
|
||||||
const page = [
|
const page = [
|
||||||
|
"index/title.png",
|
||||||
|
"index/time.png",
|
||||||
|
"index/btn.png",
|
||||||
|
"index/logo.png",
|
||||||
|
"index/bg.jpg",
|
||||||
|
|
||||||
"prize/tips.png",
|
"prize/tips.png",
|
||||||
"prize/star.png",
|
"prize/star.png",
|
||||||
"prize/draw-text.png",
|
|
||||||
"prize/light.png",
|
|
||||||
"prize/myPrize-box2.png",
|
"prize/myPrize-box2.png",
|
||||||
"prize/no-prize.png",
|
"prize/no-prize.png",
|
||||||
|
"prize/light.png",
|
||||||
|
"prize/myPrize-box.png",
|
||||||
|
"prize/draw-text.png",
|
||||||
"prize/cls-btn.png",
|
"prize/cls-btn.png",
|
||||||
"prize/copy-btn.png",
|
"prize/copy-btn.png",
|
||||||
"prize/draw-box.png",
|
"prize/draw-box.png",
|
||||||
|
|
||||||
|
"qa/text-bg.png",
|
||||||
|
"qa/result-box.png",
|
||||||
|
"qa/incorrect.png",
|
||||||
|
"qa/paper.png",
|
||||||
|
"qa/incorrect-icon.png",
|
||||||
|
"qa/correct-icon.png",
|
||||||
|
"qa/correct.png",
|
||||||
|
"qa/result-box-2.png",
|
||||||
|
"qa/tips-bg.png",
|
||||||
|
"qa/tips-bg-2.png",
|
||||||
|
|
||||||
|
"result/poster.jpg",
|
||||||
|
"result/card.png",
|
||||||
|
"result/cls-btn.png",
|
||||||
|
"result/go-draw-btn.png",
|
||||||
|
"result/go-share-btn.png",
|
||||||
|
"result/bg.jpg",
|
||||||
|
|
||||||
|
"rule/rule-box.png",
|
||||||
|
"rule/arrow.png",
|
||||||
|
"rule/cls-btn.png",
|
||||||
|
"rule/icon.png",
|
||||||
];
|
];
|
||||||
|
|
||||||
// 处理为vite引入图片格式
|
// 处理为vite引入图片格式
|
||||||
|
|||||||
@@ -85,8 +85,6 @@ const myPrizeFn = (item) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const posterId = ref(1);
|
|
||||||
|
|
||||||
const showDraw = ref(false);
|
const showDraw = ref(false);
|
||||||
const drawFn = (item) => {
|
const drawFn = (item) => {
|
||||||
if (item.action == "hide") {
|
if (item.action == "hide") {
|
||||||
@@ -94,7 +92,7 @@ const drawFn = (item) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const showResult = ref(true);
|
const showResult = ref(false);
|
||||||
const resultFn = (item) => {
|
const resultFn = (item) => {
|
||||||
if (item.action == "hide") {
|
if (item.action == "hide") {
|
||||||
showResult.value = false;
|
showResult.value = false;
|
||||||
@@ -120,7 +118,8 @@ onMounted(() => {
|
|||||||
let code = getQueryString("code");
|
let code = getQueryString("code");
|
||||||
let url = import.meta.env.VITE_URL;
|
let url = import.meta.env.VITE_URL;
|
||||||
|
|
||||||
let dev = import.meta.env.VITE_MODE;
|
// let dev = import.meta.env.VITE_MODE;
|
||||||
|
let dev = "dev";
|
||||||
if (dev != "dev") {
|
if (dev != "dev") {
|
||||||
if (code) {
|
if (code) {
|
||||||
getUserInfo({ code: code }).then((res) => {
|
getUserInfo({ code: code }).then((res) => {
|
||||||
@@ -205,7 +204,7 @@ onMounted(() => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// showLoad.value = true;
|
showLoad.value = true;
|
||||||
iosMusic(); //自动播放音乐
|
iosMusic(); //自动播放音乐
|
||||||
gsap.set(".music_icon", { autoAlpha: 1 });
|
gsap.set(".music_icon", { autoAlpha: 1 });
|
||||||
}
|
}
|
||||||
@@ -279,7 +278,7 @@ const firstClick = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.music_icon {
|
.music_icon {
|
||||||
@include pos(60px, 60px, 50px, 245px);
|
@include pos(60px, 60px, 20px, 305px);
|
||||||
@include bg_pos("music-on.png");
|
@include bg_pos("music-on.png");
|
||||||
z-index: 99;
|
z-index: 99;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
|
|||||||
@@ -19,8 +19,8 @@ app.config.globalProperties.imgUrl = (url) => {
|
|||||||
|
|
||||||
// 微信分享配置
|
// 微信分享配置
|
||||||
wxShare({
|
wxShare({
|
||||||
title: '打卡理想假期 五一好礼等你',
|
title: '龙舟争渡 稳健为先',
|
||||||
desc: '穿越城市地标,解锁你的财富基因',
|
desc: '端午赛龙舟中的投资哲学',
|
||||||
})
|
})
|
||||||
|
|
||||||
// 测试环境开vconsole
|
// 测试环境开vconsole
|
||||||
|
|||||||
@@ -44,14 +44,10 @@ body {
|
|||||||
/* -webkit-user-select: none;*/
|
/* -webkit-user-select: none;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
|
||||||
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");
|
|
||||||
}
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "FZZY_Regular";
|
font-family: "FZZY_Regular";
|
||||||
src: url(@/assets/font/FZZY_Regular.ttf) format("truetype");
|
src: url(@/assets/font/FZZY_Regular.ttf) format("truetype");
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ export default defineConfig(({ command, mode }) => {
|
|||||||
template: 'index.html',
|
template: 'index.html',
|
||||||
injectOptions: {
|
injectOptions: {
|
||||||
data: {
|
data: {
|
||||||
title: '打卡理想假期',
|
title: '龙舟争渡 稳健为先',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
142
字体压缩.txt
@@ -1,142 +0,0 @@
|
|||||||
|
|
||||||
<template>
|
|
||||||
<div class="RulePage" @touchmove.prevent>
|
|
||||||
<div class="rule-container"> <div class="index-agreement">
|
|
||||||
风险提示: 本材料由平安理财有限责任公司(以下简称“平安理财”)制作并提供。<span
|
|
||||||
class="b">本资料内容及观点仅供参考,不构成对任何人的投资建议。</span>以上产品投资管理机构/管理人为平安理财,代理销售机构不承担产品的投资、兑付和风险管理的责任。以上产品通过代理销售机构渠道销售的,产品风险评级应当以代理销售机构最终披露的评级结果为准。以上产品为非保本浮动收益理财产品,具体以产品说明书或产品公告披露为准。产品的业绩比较基准指管理人基于过往投资经验以及对产品存续期投资市场波动的预判而对本产品所设定的投资目标,业绩比较基准不是预期收益率,不代表产品的未来表现和实际收益,不构成对产品收益的承诺。<span
|
|
||||||
class="b">理财产品过往业绩不代表其未来表现,不等于理财产品实际收益,投资须谨慎。过往业绩相关数据已经托管人核对。</span><span class="orange">理财非存款,产品有风险,投资须谨慎。</span>金融消费者不得利用金融产品和服务从事违法活动。
|
|
||||||
</div>
|
|
||||||
<div class="content">
|
|
||||||
<div class="rule-content">
|
|
||||||
<div class="rule-text-area wrapper">
|
|
||||||
<div>
|
|
||||||
<div class="part">
|
|
||||||
<div>活动时间:2024年7月31日——8月2日</div>
|
|
||||||
<div>活动奖励:微信红包</div>
|
|
||||||
</div>
|
|
||||||
<div class="part">第{{ questionList[currentId].id }}题
|
|
||||||
<div>活动攻略:</div>
|
|
||||||
<div>
|
|
||||||
1、进入活动参加【好理在手 邂逅清凉一夏】答题,共设计3道题目,全部选择完毕后即可参与抽奖活动;
|
|
||||||
</div>
|
|
||||||
<div>2、活动期间不限制参与答题次数,每人每日有1次抽奖机会。</div>
|
|
||||||
</div>
|
|
||||||
<div class="part">
|
|
||||||
<div>领奖说明:</div>
|
|
||||||
<div>
|
|
||||||
<span class="blod">1、中奖后在中奖页面复制兑换码,前往[平安理财服务号] 消息框输入“清凉一夏”获取兑换链接,进入链接输入兑换码兑换奖品。</span>如关闭了中奖界面,可在首页-[我的奖品] 内查看兑换码;
|
|
||||||
</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>
|
|
||||||
1、本活动由平安理财有限责任公司主办,为保证活动的公平公正,活动结束后主办方将对中奖用户信息进行核对,用户若有下列任何一种行为或情况的,主办方有权不经另行通知,取消其参与活动以及获奖资格,收回奖品权益,井保留追究其法律责任的权利:
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
(1) 以任何机器人软件、蜘蛛软件、爬虫软件、刷奖软件或其它任何自动方式不正当手段等参与本活动;
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
(2) 同一用户(包含相同手机号、相同收货信息、相同移动设备号、相同IP地址等) 单日内恶意切换微信账号参加活动,扰乱正常抽奖秩序,影响活动公平性的;
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
(3) 有任何违反法律法规、诚实信用、公序良俗、公平公正、平安理财平台规则等行为;
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
2、平安理财保留调整、暂停和终止本活动的权利,并经公告后生效;
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
3、用户参与本活动,即视为理解并同意本活动细则。在法律规定的范围内,平安理财有权对活动规则进行解释,并根据活动实际情况对本活动的规则进行变动或调整,相关变动或调整将公布在规则页面,并于公布时即时生效。
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="margin-bottom-area"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="rule-bottom-bg"></div>
|
|
||||||
<div class="rule-arrow"></div>
|
|
||||||
<div class="rule-icon"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="rule-cls-btn" @click="hide($event)"></div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
1234567890,./
|
|
||||||
export const data = [
|
|
||||||
{
|
|
||||||
id: 1,
|
|
||||||
question: [
|
|
||||||
'激情夏日温度攀升,理财投资热情高涨。当理财市场有波动、收益上涨,别人劝你搏一搏时,正确的做法是:',
|
|
||||||
],
|
|
||||||
answer: [
|
|
||||||
{
|
|
||||||
aid: 'A',
|
|
||||||
text: [
|
|
||||||
'当然all in,我就是热点中心',
|
|
||||||
],
|
|
||||||
result:'incorrect',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
aid: 'B',
|
|
||||||
text: [
|
|
||||||
'鸡蛋不放在一个篮子里,样样都来点儿',
|
|
||||||
],
|
|
||||||
result:'correct',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
analysis: ['解析:选择B。虽然市场热点可能带来诱人的收益,但理财的基本原则是风险管理。通过将投资分散在不同的理财产品和市场,可以降低单一投资的风险,争取资产增长的机会。']
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 2,
|
|
||||||
question: [
|
|
||||||
'2、夏日闲钱早规划,get生活小确幸。长期来看,选择哪类型理财,可以较稳健地进行闲钱进阶?',
|
|
||||||
],
|
|
||||||
answer: [
|
|
||||||
{
|
|
||||||
aid: 'A',
|
|
||||||
text: [
|
|
||||||
'较低风险的现金类产品',
|
|
||||||
],
|
|
||||||
result:'incorrect',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
aid: 'B',
|
|
||||||
text: [
|
|
||||||
'策略稳健的固收类理财产品',
|
|
||||||
],
|
|
||||||
result:'correct',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
analysis: ['解析:选择B。现金类产品具有高流动性的特征,更适合日常流动资金。但在长期限选择中,固收理财拥有较大的投资范围和空间,运用策略提供稳健体验,有效平衡风险,力争增厚收益机会,闲钱再进阶。因此不同的资金用途记得匹配不同产品噢。']
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 3,
|
|
||||||
question: [
|
|
||||||
'3、夏天的快乐是多巴胺旅行给的!想要一场说走就走的快乐,平时的旅行备用金该如何准备才好呢?',
|
|
||||||
],
|
|
||||||
answer: [
|
|
||||||
{
|
|
||||||
aid: 'A',
|
|
||||||
text: [
|
|
||||||
'购买最短持有期理财产品,享灵活与收益空间',
|
|
||||||
],
|
|
||||||
result:'correct',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
aid: 'B',
|
|
||||||
text: [
|
|
||||||
'船到桥头自然直',
|
|
||||||
],
|
|
||||||
result:'incorrect',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
analysis: ['解析:选择A。最短持有期理财产品拥有较为灵活的申赎机制,在持有时间超过最短持有的时间要求后,随时可发起赎回,闲置时力争收益机会,用钱时满足你的流动性需求。']
|
|
||||||
},
|
|
||||||
]
|
|
||||||
abAbB元
|
|
||||||