11import { computed , defineComponent , PropType , ref } from "vue" ;
22import { HttpResponse , MusicXmlWithABJacket } from "@/client/apiGen" ;
3- import { NButton , NDrawer , NDrawerContent , NFlex , NForm , NFormItem , NInputNumber , NModal , NRadio , useDialog } from "naive-ui" ;
3+ import { NButton , NDrawer , NDrawerContent , NFlex , NForm , NFormItem , NInputNumber , NModal , NPopover , NRadio , useDialog } from "naive-ui" ;
44import noJacket from "@/assets/noJacket.webp" ;
55import { globalCapture , selectedADir } from "@/store/refs" ;
66import FileTypeIcon from "@/components/FileTypeIcon" ;
@@ -12,11 +12,11 @@ import SetMovieButton from "@/components/MusicEdit/SetMovieButton";
1212
1313export default defineComponent ( {
1414 props : {
15- song : { type : Object as PropType < MusicXmlWithABJacket > , required : true } ,
15+ song : { type : Object as PropType < MusicXmlWithABJacket > , required : true } ,
1616 } ,
1717 setup ( props ) {
1818 const updateTime = ref ( 0 )
19- const url = computed ( ( ) => getUrl ( `GetMusicWavApi/${ selectedADir . value } /${ props . song . id } ?${ updateTime . value } ` ) )
19+ const url = computed ( ( ) => getUrl ( `GetMusicWavApi/${ selectedADir . value } /${ props . song . cueId } ?${ updateTime . value } ` ) )
2020 const tipShow = ref ( false )
2121 const tipSelectAwbShow = ref ( false )
2222 const setOffsetShow = ref ( false )
@@ -25,6 +25,8 @@ export default defineComponent({
2525 const okResolve = ref < Function > ( ( ) => {
2626 } )
2727 const dialog = useDialog ( ) ;
28+ const cueIdNotMatch = computed ( ( ) => props . song . nonDxId !== props . song . cueId )
29+ const movieIdNotMatch = computed ( ( ) => props . song . nonDxId !== props . song . movieId )
2830
2931 const uploadFlow = async ( ) => {
3032 tipShow . value = true
@@ -65,7 +67,7 @@ export default defineComponent({
6567
6668 load . value = true ;
6769 const awb = await fileHandle . getFile ( ) as File ;
68- res = await api . SetAudio ( props . song . id ! , selectedADir . value , { file, awb, padding : 0 } ) ;
70+ res = await api . SetAudio ( props . song . id ! , selectedADir . value , { file, awb, padding : 0 } ) ;
6971 } else {
7072 offset . value = 0 ;
7173 setOffsetShow . value = true ;
@@ -74,11 +76,11 @@ export default defineComponent({
7476 } ) ;
7577 load . value = true ;
7678 setOffsetShow . value = false ;
77- res = await api . SetAudio ( props . song . id ! , selectedADir . value , { file, padding : offset . value } ) ;
79+ res = await api . SetAudio ( props . song . id ! , selectedADir . value , { file, padding : offset . value } ) ;
7880 }
7981 if ( res . error ) {
8082 const error = res . error as any ;
81- dialog . warning ( { title : '设置失败' , content : error . message || error } ) ;
83+ dialog . warning ( { title : '设置失败' , content : error . message || error } ) ;
8284 return ;
8385 }
8486 updateTime . value = Date . now ( )
@@ -97,9 +99,24 @@ export default defineComponent({
9799
98100 return ( ) => < NFlex align = "center" >
99101 { props . song . isAcbAwbExist && < audio controls src = { url . value } class = "w-0 grow" /> }
100- { selectedADir . value !== 'A000' && < NButton secondary class = { `${ ! props . song . isAcbAwbExist && "w-full" } ` } onClick = { uploadFlow } loading = { load . value } > { props . song . isAcbAwbExist ? '替换' : '设置' } 音频</ NButton > }
101- { selectedADir . value !== 'A000' && props . song . isAcbAwbExist && < AudioPreviewEditorButton /> }
102- { selectedADir . value !== 'A000' && props . song . isAcbAwbExist && < SetMovieButton song = { props . song } /> }
102+ { selectedADir . value !== 'A000' &&
103+ < NPopover trigger = "hover" disabled = { ! cueIdNotMatch . value } > { {
104+ trigger : ( ) => < NButton secondary class = { `${ ! props . song . isAcbAwbExist && "w-full" } ` } onClick = { uploadFlow } loading = { load . value } disabled = { cueIdNotMatch . value } > { props . song . isAcbAwbExist ? '替换' : '设置' } 音频</ NButton > ,
105+ default : ( ) => '由于 XML 内自行设置了不同的 CueID,不支持在这里替换音频'
106+ } } </ NPopover >
107+ }
108+ { selectedADir . value !== 'A000' && props . song . isAcbAwbExist &&
109+ < NPopover trigger = "hover" disabled = { ! cueIdNotMatch . value } > { {
110+ trigger : ( ) => < AudioPreviewEditorButton disabled = { cueIdNotMatch . value } /> ,
111+ default : ( ) => '由于 XML 内自行设置了不同的 CueID,不支持在这里修改设置'
112+ } } </ NPopover >
113+ }
114+ { selectedADir . value !== 'A000' && props . song . isAcbAwbExist &&
115+ < NPopover trigger = "hover" disabled = { ! movieIdNotMatch . value } > { {
116+ trigger : ( ) => < SetMovieButton song = { props . song } disabled = { movieIdNotMatch . value } /> ,
117+ default : ( ) => '由于 XML 内自行设置了不同的 MovieID,不支持在这里替换 PV'
118+ } } </ NPopover >
119+ }
103120
104121 { /* 打开文件对话框一般在左上角,所以在下边显示一个 Drawer */ }
105122 < NDrawer v-model :show = { tipShow . value } height = { 200 } placement = "bottom" >
0 commit comments