hookehuyr

✨ feat: 播放列表关闭后操作优化,详情页tab切换滚动页面优化

...@@ -18,8 +18,8 @@ ...@@ -18,8 +18,8 @@
18 <div class="progress-ring"> 18 <div class="progress-ring">
19 <div class="circle"> 19 <div class="circle">
20 <div class="pause-icon"> 20 <div class="pause-icon">
21 - <van-icon @click="handleAudioPause(item, index)" v-if="item.play" name="https://cdn.ipadbiz.cn/bieyuan/map/icon/pauseButton@3x.png" size="2.05rem" /> 21 + <van-icon @click="handleAudioPause(item, index)" v-if="item.play" name="https://cdn.ipadbiz.cn/bieyuan/map/icon/pauseButton1@3x.png" size="2.2rem" />
22 - <van-icon @click="handleAudioPlay(item, index)" v-else name="https://cdn.ipadbiz.cn/bieyuan/map/icon/play@3x.png" size="2.05rem" /> 22 + <van-icon @click="handleAudioPlay(item, index)" v-else name="https://cdn.ipadbiz.cn/bieyuan/map/icon/play1@3x.png" size="2.2rem" />
23 </div> 23 </div>
24 <div :class="['progress', item.play ? 'checked' : '']"></div> 24 <div :class="['progress', item.play ? 'checked' : '']"></div>
25 </div> 25 </div>
...@@ -83,6 +83,7 @@ const onClose = () => { // 关闭列表回调 ...@@ -83,6 +83,7 @@ const onClose = () => { // 关闭列表回调
83 // 播放进度条 83 // 播放进度条
84 $('.progress').css('background', 'conic-gradient(#f07142 0%, transparent 0%)'); 84 $('.progress').css('background', 'conic-gradient(#f07142 0%, transparent 0%)');
85 audio_list.value.forEach(item => item.play = false); 85 audio_list.value.forEach(item => item.play = false);
86 + audio_index.value = null;
86 emit('close'); 87 emit('close');
87 } 88 }
88 89
...@@ -109,6 +110,21 @@ onMounted(() => { ...@@ -109,6 +110,21 @@ onMounted(() => {
109 src: 'https://img.tukuppt.com/newpreview_music/01/65/86/63c0264040bd4441.mp3', 110 src: 'https://img.tukuppt.com/newpreview_music/01/65/86/63c0264040bd4441.mp3',
110 play: false 111 play: false
111 }, 112 },
113 + {
114 + title: '3',
115 + src: 'https://img.tukuppt.com/newpreview_music/01/62/01/63b515415b482633.mp3',
116 + play: false
117 + },
118 + {
119 + title: '2',
120 + src: 'https://img.tukuppt.com/newpreview_music/01/66/20/63c0c3db3f8de739.mp3',
121 + play: false
122 + },
123 + {
124 + title: '风纺声(测试)(风的声音)风纺声(测试)(风的声音)',
125 + src: 'https://img.tukuppt.com/newpreview_music/01/65/86/63c0264040bd4441.mp3',
126 + play: false
127 + },
112 ]; 128 ];
113 }); 129 });
114 130
...@@ -239,6 +255,11 @@ watch( ...@@ -239,6 +255,11 @@ watch(
239 }, 255 },
240 { immediate: true } 256 { immediate: true }
241 ); 257 );
258 +
259 +onUnmounted(() => { // 离开页面时关闭音频播放
260 + onClose();
261 + store.changeAudioStatus('pause');
262 +})
242 </script> 263 </script>
243 264
244 <style lang="less" scoped> 265 <style lang="less" scoped>
...@@ -285,7 +306,7 @@ watch( ...@@ -285,7 +306,7 @@ watch(
285 } 306 }
286 } 307 }
287 308
288 - .progress-ring { 309 +.progress-ring {
289 position: relative; 310 position: relative;
290 width: 2.5rem; 311 width: 2.5rem;
291 height: 2.5rem; 312 height: 2.5rem;
......
1 <!-- 1 <!--
2 * @Date: 2024-09-15 22:08:49 2 * @Date: 2024-09-15 22:08:49
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2024-10-09 11:06:12 4 + * @LastEditTime: 2024-10-09 13:43:35
5 * @FilePath: /map-demo/src/views/bieyuan/info.vue 5 * @FilePath: /map-demo/src/views/bieyuan/info.vue
6 * @Description: 文件描述 6 * @Description: 文件描述
7 --> 7 -->
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
34 </div> 34 </div>
35 <div class="info-sub-title">{{ page_details.note }}</div> 35 <div class="info-sub-title">{{ page_details.note }}</div>
36 </div> 36 </div>
37 - <div style="margin-top: 0.5rem;"> 37 + <div id="tab-wrapper" style="margin-top: 0.5rem;">
38 <van-config-provider :theme-vars="themeVars"> 38 <van-config-provider :theme-vars="themeVars">
39 <van-tabs ref="tabsRef" v-model:active="active" @click-tab="clickTab" color="#DD7850" title-active-color="#DD7850" title-inactive-color="#DD7850" :shrink="show_shrink" sticky animated> 39 <van-tabs ref="tabsRef" v-model:active="active" @click-tab="clickTab" color="#DD7850" title-active-color="#DD7850" title-inactive-color="#DD7850" :shrink="show_shrink" sticky animated>
40 <van-tab title="介 绍" v-if="page_details.introduction"> 40 <van-tab title="介 绍" v-if="page_details.introduction">
...@@ -179,6 +179,7 @@ const stopAudio = (item, index) => { ...@@ -179,6 +179,7 @@ const stopAudio = (item, index) => {
179 179
180 const audio = ref(new Audio()); 180 const audio = ref(new Audio());
181 const img_height = ref('15rem'); 181 const img_height = ref('15rem');
182 +const scrollTop = ref(0);
182 183
183 onMounted(async () => { 184 onMounted(async () => {
184 // 通过ID查询到标记点详情 185 // 通过ID查询到标记点详情
...@@ -219,6 +220,12 @@ onMounted(async () => { ...@@ -219,6 +220,12 @@ onMounted(async () => {
219 var screenHeight = screenWidth * 3 / 4; 220 var screenHeight = screenWidth * 3 / 4;
220 // 设置容器的高度 221 // 设置容器的高度
221 img_height.value = screenHeight + 'px'; 222 img_height.value = screenHeight + 'px';
223 + //
224 + nextTick(() => {
225 + $('.info-page').on('scroll', (evt) => {
226 + scrollTop.value = $(evt.currentTarget).scrollTop(); // 获取滚动的垂直距离
227 + })
228 + })
222 }); 229 });
223 230
224 onUnmounted(() => { // 离开页面时关闭音频播放 231 onUnmounted(() => { // 离开页面时关闭音频播放
...@@ -307,6 +314,11 @@ const clickTab = (evt) => { // 标签切换 ...@@ -307,6 +314,11 @@ const clickTab = (evt) => { // 标签切换
307 // 图片有5个像素的圆角 314 // 图片有5个像素的圆角
308 $(img).css('border-radius', '5px'); 315 $(img).css('border-radius', '5px');
309 }); 316 });
317 + // 滚动高度大于tabs高度后才滚动到指定高度
318 + let offsetTop = $('#tab-wrapper')[0].offsetTop;
319 + if (scrollTop.value >= offsetTop) {
320 + $('.info-page').scrollTop(offsetTop);
321 + }
310 }); 322 });
311 } 323 }
312 324
......