hookehuyr

✨ feat(客户端): 新增活动说明页面

...@@ -8,9 +8,9 @@ ...@@ -8,9 +8,9 @@
8 <body> 8 <body>
9 <div id="app"></div> 9 <div id="app"></div>
10 <script type="module" src="/src/main.js"></script> 10 <script type="module" src="/src/main.js"></script>
11 - <!-- <script src="https://cdn.bootcdn.net/ajax/libs/vConsole/3.9.0/vconsole.min.js"></script> 11 + <script src="https://cdn.bootcdn.net/ajax/libs/vConsole/3.9.0/vconsole.min.js"></script>
12 <script> 12 <script>
13 var vConsole = new VConsole(); 13 var vConsole = new VConsole();
14 - </script> --> 14 + </script>
15 </body> 15 </body>
16 </html> 16 </html>
......
...@@ -14,7 +14,8 @@ ...@@ -14,7 +14,8 @@
14 "moment": "^2.29.1", 14 "moment": "^2.29.1",
15 "mui-player": "^1.6.0", 15 "mui-player": "^1.6.0",
16 "vant": "^4.0.0-alpha.0", 16 "vant": "^4.0.0-alpha.0",
17 - "vue": "^3.2.31" 17 + "vue": "^3.2.31",
18 + "weixin-js-sdk": "^1.6.0"
18 }, 19 },
19 "devDependencies": { 20 "devDependencies": {
20 "@types/jquery": "^3.5.14", 21 "@types/jquery": "^3.5.14",
...@@ -1704,6 +1705,11 @@ ...@@ -1704,6 +1705,11 @@
1704 "vue": "^3.2.0" 1705 "vue": "^3.2.0"
1705 } 1706 }
1706 }, 1707 },
1708 + "node_modules/weixin-js-sdk": {
1709 + "version": "1.6.0",
1710 + "resolved": "https://registry.npmjs.org/weixin-js-sdk/-/weixin-js-sdk-1.6.0.tgz",
1711 + "integrity": "sha512-3IYQH7aalJGFJrwdT3epvTdR1MboMiH7vIZ5BRL2eYOJ12BNah7csoMkmSZzkq1+l92sSq29XdTCVjCJoK2sBQ=="
1712 + },
1707 "node_modules/wrappy": { 1713 "node_modules/wrappy": {
1708 "version": "1.0.2", 1714 "version": "1.0.2",
1709 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1715 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
...@@ -2907,6 +2913,11 @@ ...@@ -2907,6 +2913,11 @@
2907 "@vue/devtools-api": "^6.0.0" 2913 "@vue/devtools-api": "^6.0.0"
2908 } 2914 }
2909 }, 2915 },
2916 + "weixin-js-sdk": {
2917 + "version": "1.6.0",
2918 + "resolved": "https://registry.npmjs.org/weixin-js-sdk/-/weixin-js-sdk-1.6.0.tgz",
2919 + "integrity": "sha512-3IYQH7aalJGFJrwdT3epvTdR1MboMiH7vIZ5BRL2eYOJ12BNah7csoMkmSZzkq1+l92sSq29XdTCVjCJoK2sBQ=="
2920 + },
2910 "wrappy": { 2921 "wrappy": {
2911 "version": "1.0.2", 2922 "version": "1.0.2",
2912 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2923 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
......
...@@ -15,7 +15,8 @@ ...@@ -15,7 +15,8 @@
15 "moment": "^2.29.1", 15 "moment": "^2.29.1",
16 "mui-player": "^1.6.0", 16 "mui-player": "^1.6.0",
17 "vant": "^4.0.0-alpha.0", 17 "vant": "^4.0.0-alpha.0",
18 - "vue": "^3.2.31" 18 + "vue": "^3.2.31",
19 + "weixin-js-sdk": "^1.6.0"
19 }, 20 },
20 "devDependencies": { 21 "devDependencies": {
21 "@types/jquery": "^3.5.14", 22 "@types/jquery": "^3.5.14",
......
...@@ -5,20 +5,24 @@ ...@@ -5,20 +5,24 @@
5 <script setup> 5 <script setup>
6 import axios from '@/utils/axios' 6 import axios from '@/utils/axios'
7 import { useRoute, useRouter } from 'vue-router' 7 import { useRoute, useRouter } from 'vue-router'
8 +import { onMounted } from 'vue'
8 import { Toast } from 'vant' 9 import { Toast } from 'vant'
9 import { mainStore } from './store'; 10 import { mainStore } from './store';
10 const store = mainStore(); 11 const store = mainStore();
11 const $router = useRouter(); 12 const $router = useRouter();
12 13
14 +onMounted(() => {
15 +})
13 </script> 16 </script>
14 17
15 <style lang="less"> 18 <style lang="less">
16 - html,body{ 19 +html,
20 +body {
17 width: 100%; 21 width: 100%;
18 height: 100%; 22 height: 100%;
19 - } 23 +}
20 24
21 - body { 25 +body {
22 position: relative; 26 position: relative;
23 /* --van-white: #fff; 27 /* --van-white: #fff;
24 --van-blue: #1989fa; 28 --van-blue: #1989fa;
...@@ -32,5 +36,5 @@ const $router = useRouter(); ...@@ -32,5 +36,5 @@ const $router = useRouter();
32 margin: 0; 36 margin: 0;
33 padding: 0; 37 padding: 0;
34 } 38 }
35 - } 39 +}
36 </style> 40 </style>
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -53,6 +53,22 @@ export default [{ ...@@ -53,6 +53,22 @@ export default [{
53 } 53 }
54 ] 54 ]
55 }, { 55 }, {
56 + path: '/client/privacyNotice',
57 + name: '客户端上传作品前须知',
58 + component: () => import('./views/client/privacyNotice.vue'),
59 + meta: {
60 + title: '活动说明'
61 + },
62 + children: []
63 +}, {
64 + path: '/client/verifyPage',
65 + name: '客户端上传作品/留言前实名认证',
66 + component: () => import('./views/client/verifyPage.vue'),
67 + meta: {
68 + title: '实名认证'
69 + },
70 + children: []
71 +}, {
56 path: '/image', 72 path: '/image',
57 name: 'html转图片', 73 name: 'html转图片',
58 component: () => import('./views/html2canvas.vue'), 74 component: () => import('./views/html2canvas.vue'),
......
1 +<template>
2 + <div class="privacy-notice-page">
3 + <p class="title">个人信息保护政策</p>
4 + <div class="content">
5 + <p>
6 + 欢迎您参与童声无界-声音漂流记!童声无界(以下也称“我们”)深知个人信息对您的重要性,因此我们非常重视保护您的隐私和个人信息。我们将按照法律法规要求并通过《童声无界个人信息保护政策》(以下简称“本政策”)向您说明我们在您使用本平台的产品/服务时如何处理您的个人信息,以及我们为您提供的访问、更新、删除和保护这些信息的方式。
7 + </p>
8 + <p style="font-weight: bold;">为了向您提供我们产品/服务的基本功能,您需要授权我们收集、使用必要信息的情形。如您拒绝提供前述必要信息,您将无法正常使用我们的产品/服务;</p>
9 + <p>
10 + 为了向您提供我们产品/服务的附加功能,您可以选择授权我们收集、使用信息的情形。如您拒绝提供前述信息,您将无法正常使用相关附加功能或无法实现我们拟达到的功能效果,但并不会影响您正常使用我们产品/服务的基本功能。
11 + 请您注意,因我们向您提供的产品和服务种类众多,我们将根据您选择使用的具体产品/服务范围,遵循“合理、正当、必要”原则收集和使用您的个人信息。除此之外,您理解并同意,基于向您提供更好的产品和服务的目的,我们可能会不时推出新的或优化后的功能,可能增加或变更收集和使用个人信息的目的、范围和方式。对此,我们将通过更新本政策、弹窗或站内信等通知方式另行向您说明收集和使用对应信息的目的、范围和方式,并为您提供同意与否的选项,且在征得您的明示同意后收集、使用对应信息。在此过程中,如您有任何疑问、意见或建议,您可通过本政策第九条提供的联系方式与我们联系。
12 + </p>
13 + </div>
14 + <div style="height: 5rem;"></div>
15 + <div class="control-bar">
16 + <div class="button">
17 + <my-button @on-click="disagree" type="plain">不同意</my-button>
18 + </div>
19 + <div class="button">
20 + <my-button @on-click="agree" type="primary">同意</my-button>
21 + </div>
22 + </div>
23 + </div>
24 +</template>
25 +
26 +<script setup>
27 +import MyButton from '@/components/MyButton/index.vue'
28 +import { ref, reactive, onMounted } from 'vue'
29 +import { useRoute, useRouter } from 'vue-router'
30 +import axios from '@/utils/axios';
31 +import $ from 'jquery'
32 +import { Toast } from 'vant';
33 +const $route = useRoute();
34 +const $router = useRouter();
35 +
36 +const disagree = () => {
37 + console.warn('不同意');
38 +}
39 +const agree = () => {
40 + console.warn('同意');
41 +}
42 +
43 +onMounted(() => {
44 +
45 +})
46 +</script>
47 +
48 +<script>
49 +import mixin from 'common/mixin';
50 +
51 +export default {
52 + mixins: [mixin.init],
53 + data() {
54 + return {
55 +
56 + }
57 + },
58 + mounted() {
59 +
60 + },
61 + methods: {
62 +
63 + }
64 +}
65 +</script>
66 +
67 +<style lang="less" scoped>
68 +.privacy-notice-page {
69 + padding: 1rem;
70 +
71 + .title {
72 + text-align: center;
73 + font-size: 1.25rem;
74 + padding: 1rem 0;
75 + color: #713610;
76 + font-weight: bold;
77 + }
78 +
79 + .content {
80 + text-align: justify;
81 + color: #231815;
82 + font-size: 1.05rem;
83 +
84 + p {
85 + padding-bottom: 1rem;
86 + }
87 + }
88 +
89 + .control-bar {
90 + z-index: 999;
91 + position: fixed;
92 + right: 0;
93 + bottom: 0;
94 + left: 0;
95 + display: flex;
96 + align-items: center;
97 + box-sizing: content-box;
98 + background-color: white;
99 + padding: 1rem 0;
100 + box-shadow: 0px -2px 4px 0px rgba(0, 0, 0, 0.07);
101 +
102 + .button {
103 + display: flex;
104 + flex-direction: column;
105 + justify-content: center;
106 + flex: 1;
107 + padding: 0 0.5rem;
108 + }
109 + }
110 +}
111 +</style>
...\ No newline at end of file ...\ No newline at end of file
1 +<template>
2 + <div class="verify-page">
3 + <p class="title">请录入真实的信息</p>
4 + </div>
5 +</template>
6 +
7 +<script setup>
8 +import { ref, reactive, onMounted } from 'vue'
9 +import { useRoute, useRouter } from 'vue-router'
10 +import axios from '@/utils/axios';
11 +import $ from 'jquery'
12 +import { Toast } from 'vant';
13 +const $route = useRoute();
14 +const $router = useRouter();
15 +
16 + onMounted(() => {
17 +
18 + })
19 +</script>
20 +
21 +<script>
22 +import mixin from 'common/mixin';
23 +
24 +export default {
25 + mixins: [mixin.init],
26 + data () {
27 + return {
28 +
29 + }
30 + },
31 + mounted () {
32 +
33 + },
34 + methods: {
35 +
36 + }
37 +}
38 +</script>
39 +
40 +<style lang="less" scoped>
41 +.verify-page {
42 + padding: 1rem;
43 + .title {
44 + text-align: center;
45 + font-size: 1.25rem;
46 + padding: 1rem 0;
47 + color: #713610;
48 + font-weight: bold;
49 + }
50 +}
51 +</style>
...\ No newline at end of file ...\ No newline at end of file
...@@ -995,6 +995,11 @@ ...@@ -995,6 +995,11 @@
995 "@vue/server-renderer" "3.2.31" 995 "@vue/server-renderer" "3.2.31"
996 "@vue/shared" "3.2.31" 996 "@vue/shared" "3.2.31"
997 997
998 +"weixin-js-sdk@^1.6.0":
999 + "integrity" "sha512-3IYQH7aalJGFJrwdT3epvTdR1MboMiH7vIZ5BRL2eYOJ12BNah7csoMkmSZzkq1+l92sSq29XdTCVjCJoK2sBQ=="
1000 + "resolved" "https://registry.npmjs.org/weixin-js-sdk/-/weixin-js-sdk-1.6.0.tgz"
1001 + "version" "1.6.0"
1002 +
998 "wrappy@1": 1003 "wrappy@1":
999 "integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1004 "integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
1000 "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 1005 "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
......