Yansen 2 년 전
부모
커밋
84bf5f595d

BIN
public/images/pg3/1937.png 파일 보기


BIN
public/images/share.jpg 파일 보기


+ 8
- 3
src/components/IFrame.vue 파일 보기

@@ -1,22 +1,27 @@
1 1
 <template>
2 2
   <div class="iframe-wrapper">
3
-    <img class="goback abs" src="/images/goback.png" alt="">
4
-    <iframe src="https://mp.weixin.qq.com/s/9d2gPLtuOxs0pKmwvJtu8A" frameborder="0"></iframe>
3
+    <img class="goback abs" src="/images/goback.png" alt="" @click="emit('cancel')">
4
+    <iframe :src="link" frameborder="0" v-if="link"></iframe>
5 5
   </div>
6 6
 </template>
7 7
 
8 8
 <script setup>
9
-
9
+  const props = defineProps({
10
+    link: String,
11
+  });
12
+  const emit = defineEmits(['cancel']);
10 13
 </script>
11 14
 
12 15
 <style lang="less" scoped>
13 16
 
14 17
 .iframe-wrapper {
15 18
   position: fixed;
19
+  background: #f5f5f5;
16 20
   width: 100vw;
17 21
   height: 100vh;
18 22
   top: 0;
19 23
   left: 0;
24
+  z-index: 1200;
20 25
 
21 26
   .goback {
22 27
     position: absolute;

+ 0
- 3
src/pages/index.vue 파일 보기

@@ -12,8 +12,6 @@
12 12
         <Pg3 class="container" />
13 13
       </div>
14 14
     </div>
15
-
16
-    <!-- <IFrame /> -->
17 15
   </div>
18 16
 </template>
19 17
 
@@ -25,7 +23,6 @@ import Pg1 from './pg1/index.vue'
25 23
 import Pg2 from './pg2/index.vue'
26 24
 import Pg3 from './pg3/index.vue'
27 25
 // import parallaxing from '@/utils/parallaxing.js'
28
-// import IFrame from '@/components/IFrame.vue'
29 26
 
30 27
 const { play, pause } = useModel('audio');
31 28
 

+ 16
- 2
src/pages/loading/index.vue 파일 보기

@@ -49,7 +49,21 @@
49 49
     emit('ready');
50 50
   }
51 51
 
52
-  const onProcess = (val) => {
52
+  const throttle = (fn, delay) => {
53
+    let t = null;
54
+    return (...args) => {
55
+      if (!t) {
56
+        fn(...args);
57
+        t = setTimeout(() => null, delay);
58
+        return;
59
+      } else {
60
+        clearTimeout(t);
61
+        t = setTimeout(() => fn(...args), delay);
62
+      }
63
+    }
64
+  }
65
+
66
+  const callback = (val) => {
53 67
     const p = Number(val * 100).toFixed(2);
54 68
     if (p >= 100) {
55 69
       return percent.value = '100%';
@@ -59,7 +73,7 @@
59 73
   }
60 74
 
61 75
   onMounted(() => {
62
-    preload(onProcess)
76
+    preload(throttle(callback, 10));
63 77
   });
64 78
 </script>
65 79
 

+ 18
- 2
src/pages/pg2-2/index.vue 파일 보기

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="page pg-bg pg2-2">
3
-    <GoBack class="goback abs" style="z-index: 100" @click="router.go(-1)" />
3
+    <!-- <GoBack class="goback abs" style="z-index: 100" @click="router.go(-1)" /> -->
4 4
     <Bell class="bell" />
5 5
     <div class="bk-pd content" >
6 6
       <Animate
@@ -121,7 +121,18 @@
121 121
           <br />为了深切缅怀惨遭日军屠戮遇难同胞,
122 122
           <br />唤起人们对和平的向往和珍视,
123 123
           <br />南京广播电视集团发起了“紫金草行动”。<br />九年了,
124
-          <br />“紫金草行动”再启航,<br />让“和平之花”开得更远。
124
+          <br />
125
+          <Animate
126
+            comp="span"
127
+            class="animate__infinite"
128
+            name="animate__headShake"
129
+            style="display: inline-block; font-size: 1.1em; font-family: sans serif; font-weight: 700;"
130
+            delay="300ms"
131
+            :ready="show3"
132
+            @click="onGoFoward"
133
+          >
134
+            “紫金草行动”再启航。
135
+          </Animate>
125 136
         </p>
126 137
       </Animate>
127 138
     </div>
@@ -161,6 +172,11 @@ const slideOptions = {
161 172
 const onSlideChange = (slide, newIndex) => {
162 173
   slideIndexRef.value = newIndex;
163 174
 };
175
+
176
+const onGoFoward = () => {
177
+  localStorage.setItem("page", 3);
178
+  router.go(-1);
179
+}
164 180
 </script>
165 181
 
166 182
 <style lang="less" scoped>

+ 13
- 7
src/pages/pg2/index.vue 파일 보기

@@ -44,15 +44,21 @@
44 44
       
45 45
       <div class="story" style="z-index: 2000">
46 46
         <Animate
47
-          comp="img"
48 47
           name="animate__fadeIn"
49
-          @click="router.push('/pg2-2')"
50
-          src="/images/pg2/getStory.png"
51
-          alt=""
52
-          style="width: 30vw; margin: auto; margin-bottom: 3vh"     
53
-          delay="4000ms"     
48
+          delay="4000ms"
54 49
           :ready="show"
55
-        />
50
+          @click="router.push('/pg2-2')"
51
+        >
52
+          <Animate
53
+            comp="img"
54
+            name="animate__heartBeat animate__infinite"
55
+            src="/images/pg2/getStory.png"
56
+            alt=""
57
+            style="width: 30vw; margin: auto; margin-bottom: 3vh"
58
+            delay="5000ms"
59
+            :ready="show"
60
+          />
61
+        </Animate>
56 62
       </div>
57 63
     </div>
58 64
 

+ 41
- 18
src/pages/pg3/index.vue 파일 보기

@@ -75,23 +75,11 @@
75 75
     >
76 76
       <div class="ink-slider-wrapper">
77 77
         <SplideTrack>
78
-          <SplideSlide>
79
-            <Ink class="slide-ink" :active="slideIndexRef == 0" src="./images/pg3/1.png" />
80
-          </SplideSlide>
81
-          <SplideSlide>
82
-            <Ink class="slide-ink" :active="slideIndexRef == 1" src="./images/pg3/2.png" />
83
-          </SplideSlide>
84
-          <SplideSlide>
85
-            <Ink class="slide-ink" :active="slideIndexRef == 2" src="./images/pg3/3.png" />
86
-          </SplideSlide>
87
-          <SplideSlide>
88
-            <Ink class="slide-ink" :active="slideIndexRef == 3" src="./images/pg3/4.png" />
89
-          </SplideSlide>
90
-          <SplideSlide>
91
-            <Ink class="slide-ink" :active="slideIndexRef == 4" src="./images/pg3/5.png" />
92
-          </SplideSlide>
93
-          <SplideSlide>
94
-            <Ink class="slide-ink" :active="slideIndexRef == 5" src="./images/pg3/6.png" />
78
+          <SplideSlide
79
+            v-for="(item, inx) in famous"
80
+            :key="item.image"
81
+          >
82
+            <Ink class="slide-ink" :active="slideIndexRef == inx" :src="item.image" @click="onFamous(item)" />
95 83
           </SplideSlide>
96 84
         </SplideTrack>
97 85
         <div class="splide__arrows abs" style="left: 0; top: 0">
@@ -112,6 +100,8 @@
112 100
     </div>
113 101
 
114 102
     <!-- <Persons v-if="showPerson" @cancel="showPerson = false" /> -->
103
+
104
+    <IFrame v-if="showPerson" :link="personLink" @cancel="showPerson = false" />
115 105
   </div>
116 106
 </template>
117 107
 
@@ -122,6 +112,7 @@
122 112
   import Bell from '@/components/Bell.vue';
123 113
   import Btn from '@/components/Btn.vue';
124 114
   import Animate from '@/components/Animate.vue';
115
+  import IFrame from '@/components/IFrame.vue';
125 116
   // import Persons from './Persons.vue';
126 117
   import Ink from './Ink.vue';
127 118
   import usePageShow from '../usePageShow';
@@ -129,6 +120,7 @@
129 120
   const router = useRouter();
130 121
   const [pgRef, show] = usePageShow(0.3);
131 122
   const showPerson = ref(false);
123
+  const personLink = ref();
132 124
   const slideIndexRef = ref(0);
133 125
 
134 126
   const slideOptions = {
@@ -140,6 +132,38 @@
140 132
     interval: 5000,
141 133
   }
142 134
 
135
+  const famous = ref([
136
+    {      
137
+      image: './images/pg3/1.png',
138
+      link: 'http://m2.nbs.cn/article/564333.html?id=564333&mid=1',
139
+    },
140
+    {      
141
+      image: './images/pg3/2.png',
142
+      link: 'http://m2.nbs.cn/article/564367.html?id=564367&mid=1',
143
+    },
144
+    {      
145
+      image: './images/pg3/3.png',
146
+      link: 'http://m2.nbs.cn/article/564359.html?id=564359&mid=1',
147
+    },
148
+    {      
149
+      image: './images/pg3/4.png',
150
+      link: 'http://m2.nbs.cn/article/564351.html?id=564351&mid=1',
151
+    },
152
+    {      
153
+      image: './images/pg3/5.png',
154
+      link: '',
155
+    },
156
+    {      
157
+      image: './images/pg3/6.png',
158
+      link: '',
159
+    },
160
+  ]);
161
+
162
+  const onFamous = (famousItem) => {
163
+    personLink.value = famousItem.link;
164
+    showPerson.value = true;
165
+  }
166
+
143 167
   const onVideo = () => {
144 168
     router.push('/pg4')
145 169
   }
@@ -216,7 +240,6 @@
216 240
 
217 241
   .nj-1937 {
218 242
     width: 32vw;
219
-    margin-top: -5vw;
220 243
   }
221 244
 
222 245
   .content {

+ 1
- 1
src/pages/pg4/Badge.vue 파일 보기

@@ -9,7 +9,7 @@
9 9
       <div class="desc">
10 10
         关注“南京广播电视台”回复<br>
11 11
         “<span class="keyword">紫金草</span>”<br>
12
-        领取紫金草徽章<br>
12
+        领取紫金草徽章<br>
13 13
         (数量有限,领完即止)
14 14
       </div>
15 15
     </div>

+ 1
- 1
src/pages/pg4/Rule.vue 파일 보기

@@ -4,7 +4,7 @@
4 4
       <h3>参与规则</h3>
5 5
       <ul>
6 6
         <li>选择要播撒的种子,并进行播种。</li>
7
-        <li>种植完成后可领取实体资金草徽章一枚。</li>
7
+        <li>种植完成后,分享海报至“南京广播电视台”微信公众号领取实体徽章一枚。</li>
8 8
       </ul>
9 9
     </div>
10 10
   </Modal>

+ 1
- 13
src/pages/pg4/video.vue 파일 보기

@@ -14,7 +14,7 @@
14 14
         @play="pause()"
15 15
         @pause="play()"
16 16
       ></video>
17
-      <div class="play-action animate__animated animate__fadeIn" v-if="show">
17
+      <div class="play-action animate__animated animate__fadeIn">
18 18
         <img src="/images/pg4/重播.png" @click="onReplay" alt="" />
19 19
         <img src="/images/pg4/播撒种子.png" @click="onNext" alt="" />
20 20
       </div>
@@ -34,18 +34,6 @@
34 34
   const show = ref(false);
35 35
   const controls = ref();
36 36
 
37
-  const { query } = route;
38
-  const { from } = query;
39
-
40
-  if (from) {
41
-    // window.location.href = decodeURIComponent(from);
42
-    // const link = document.createElement('a');
43
-    // link.target = "_blank";
44
-    // link.href = from;
45
-    // link.click();
46
-    // history.pushState('', '', from);
47
-  }
48
-
49 37
   const onReplay = () => {
50 38
     mediaRef.value.play();
51 39
     show.value = false;

+ 11
- 1
src/pages/share/index.vue 파일 보기

@@ -4,7 +4,9 @@
4 4
     <GoBack class="goback abs" style="z-index: 100" @click="router.go(-1)" />
5 5
 
6 6
     <div class="will-copy" ref="src">
7
-      <img class="copy-img" src="/images/share.jpg" alt="" />
7
+      <div class="copy-img">
8
+        <img src="/images/share.jpg" alt="" />
9
+      </div>
8 10
       <div class="content txt">
9 11
         <div class="name">{{ user.nickname || "朋友" }}</div>
10 12
         <div style="line-height: 1.6em">
@@ -74,6 +76,14 @@ onMounted(() => {
74 76
     .copy-img {
75 77
       width: 100%;
76 78
       height: 100%;
79
+      position: relative;
80
+
81
+      img {
82
+        width: 100%;
83
+        position: absolute;
84
+        left: 0;
85
+        bottom: 0;
86
+      }
77 87
     }
78 88
   }
79 89