26
26
</n-dropdown >
27
27
28
28
<!-- EQ 均衡器弹窗 -->
29
- <n-modal v-model:show =" showEQModal" :mask-closable =" true" :unstable-show-mask =" false" >
29
+ <n-modal v-model:show =" showEQModal" :mask-closable =" true" :unstable-show-mask =" false" :z-index = " 9999999 " >
30
30
<div class =" eq-modal-content" >
31
31
<div class =" modal-close" @click =" showEQModal = false" >
32
32
<i class =" ri-close-line" ></i >
36
36
</n-modal >
37
37
38
38
<!-- 定时关闭弹窗 -->
39
- <n-modal v-model:show =" playerStore.showSleepTimer" :mask-closable =" true" :unstable-show-mask =" false" >
39
+ <n-modal v-model:show =" playerStore.showSleepTimer" :mask-closable =" true" :unstable-show-mask =" false" :z-index = " 9999999 " >
40
40
<div class =" timer-modal-content" >
41
41
<div class =" modal-close" @click =" playerStore.showSleepTimer = false" >
42
42
<i class =" ri-close-line" ></i >
46
46
</n-modal >
47
47
48
48
<!-- 播放速度设置弹窗 -->
49
- <n-modal v-model:show =" showSpeedModal" :mask-closable =" true" :unstable-show-mask =" false" >
49
+ <n-modal v-model:show =" showSpeedModal" :mask-closable =" true" :unstable-show-mask =" false" :z-index = " 9999999 " >
50
50
<div class =" speed-modal-content" >
51
51
<div class =" modal-close" @click =" showSpeedModal = false" >
52
52
<i class =" ri-close-line" ></i >
68
68
</template >
69
69
70
70
<script lang="ts" setup>
71
- import { ref , computed , h } from ' vue' ;
71
+ import { ref , computed , h , watch } from ' vue' ;
72
72
import { useI18n } from ' vue-i18n' ;
73
73
import { DropdownOption } from ' naive-ui' ;
74
74
import { usePlayerStore } from ' @/store/modules/player' ;
@@ -84,10 +84,34 @@ const showEQModal = ref(false);
84
84
const showSpeedModal = ref (false );
85
85
const isEQVisible = ref (false );
86
86
87
+ // 监听弹窗状态,确保互斥
88
+ watch (showEQModal , (newValue ) => {
89
+ if (newValue ) {
90
+ // 如果EQ弹窗打开,关闭其他弹窗
91
+ playerStore .showSleepTimer = false ;
92
+ showSpeedModal .value = false ;
93
+ }
94
+ });
95
+
96
+ watch (() => playerStore .showSleepTimer , (newValue ) => {
97
+ if (newValue ) {
98
+ // 如果睡眠定时器弹窗打开,关闭其他弹窗
99
+ showEQModal .value = false ;
100
+ showSpeedModal .value = false ;
101
+ }
102
+ });
103
+
104
+ watch (showSpeedModal , (newValue ) => {
105
+ if (newValue ) {
106
+ // 如果播放速度弹窗打开,关闭其他弹窗
107
+ showEQModal .value = false ;
108
+ playerStore .showSleepTimer = false ;
109
+ }
110
+ });
111
+
87
112
// 播放速度状态
88
113
const playbackRate = computed (() => playerStore .playbackRate );
89
114
90
-
91
115
// 播放速度选项
92
116
const playbackRateOptions = [
93
117
{ label: ' 0.5x' , key: 0.5 },
@@ -131,6 +155,12 @@ const dropdownOptions = computed<DropdownOption[]>(() => [
131
155
132
156
// 处理菜单选择
133
157
const handleSelect = (key : string ) => {
158
+ // 先关闭所有弹窗
159
+ showEQModal .value = false ;
160
+ playerStore .showSleepTimer = false ;
161
+ showSpeedModal .value = false ;
162
+
163
+ // 然后仅打开所选弹窗
134
164
switch (key ) {
135
165
case ' eq' :
136
166
showEQModal .value = true ;
@@ -212,11 +242,15 @@ const selectSpeed = (speed: number) => {
212
242
.eq-modal-content ,
213
243
.timer-modal-content ,
214
244
.speed-modal-content {
215
- @apply p-6 rounded-3xl bg-white dark :bg- dark;
245
+ @apply p-6 rounded-3xl bg-light-100 dark :bg- dark- 100 bg - opacity - 80 filter backdrop - blur - sm ;
216
246
max-width : 600px ;
217
247
margin : 0 auto ;
218
248
}
219
249
250
+ .eq-modal-content {
251
+ @apply p-10 max-w- [800px ];
252
+ }
253
+
220
254
.speed-modal-content {
221
255
h3 {
222
256
@apply text-lg font-medium mb-4 text-center ;
0 commit comments