| 
					
				 | 
			
			
				@@ -124,7 +124,7 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		const data = reactive({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			loading: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			drawCount: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			isSave: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			isSave: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			musicId: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			musicName: "", // 曲谱名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			creator: "", // 创建者 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -331,7 +331,7 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				data.activePlayNote = {...ev}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				data.activePlayNote = { ...ev }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				var cursor = document.querySelector("#paper svg .ABCJS-cursor"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				if (cursor) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					cursor.setAttribute("x1", ev.left + ev.width / 2); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -406,10 +406,10 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				abcData.synthControl.restart(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				nextTick(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if (!data.playState){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if (!data.playState) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						abcData.synthControl.play(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// console.log("🚀 ~ abcData.synthControl:", abcData.synthControl.timer.noteTimings); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -481,7 +481,7 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					data.playState = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			data.isSave = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			return new Promise((resolve) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				nextTick(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					data.music = renderMeasures(abcData.abc); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -578,6 +578,21 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			return notes; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const handleClose = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 判断是否在应用中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (window.matchMedia("(display-mode: standalone)").matches) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				window.onbeforeunload = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				window.parent.postMessage( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						api: "notation_exit", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					"*" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				window.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 * @param key 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -595,32 +610,29 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				abcData.abc.measures[data.active?.measureIndex]?.notes[data.active?.noteIndex] || null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			if (type === "exit") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				// 退出时先保存 不提示 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				await handleSaveMusic(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					console.log('点击退出',window.matchMedia("(display-mode: standalone)").matches) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				// 判断是否在应用中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if (window.matchMedia("(display-mode: standalone)").matches) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					window.onbeforeunload = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					console.log('准备发消息') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					window.parent.postMessage( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							api: "notation_exit", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						"*" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					window.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					// 全屏模式无法判断是否在应用打开 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					// 那就都发个消息吧 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					window.parent.postMessage( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							api: "notation_exit", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						"*" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (!data.isSave) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					showConfirmDialog({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						title: "温馨提示", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						message: "还没保存,是否保存?", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						.then(async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							const msg = message.loading("保存中..."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							await handleSaveMusic(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								msg.type = "success"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								msg.content = "保存成功"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									msg.destroy(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									handleClose(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								}, 500); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							}, 300); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						.catch(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							handleClose(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				handleClose(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// console.log(params, activeNote); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			if (type === "type") { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1154,6 +1166,10 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				value: index, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const instrumentName = computed(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			const code = ABCJS.synth.instrumentIndexToName[abcData.synthOptions.program]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return instrumentsNames[code as keyof typeof instrumentsNames]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		const getDetailData = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			data.loading = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			const query: any = getQuery(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1632,7 +1648,16 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 											<div class={styles.btnImg} onClick={() => (popup.instrument = true)}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 												<img class={styles.topBtnIcon} src={getImage("icon_25.png")} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 											</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-											<div>选择声部</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											<div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+												style={{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+													overflow: "hidden", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+													textOverflow: "ellipsis", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+													whiteSpace: "nowrap", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+													maxWidth: "60px", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+												}} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+												{instrumentName.value} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 										</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 									), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 									default: () => ( 
			 |