|
@@ -57,6 +57,7 @@ import { UseDraggable } from "@vueuse/components";
|
|
|
import { getQuery } from "/src/utils/queryString";
|
|
|
import Metronome, { metronomeData } from "/src/helpers/metronome";
|
|
|
import cleanDeep from "clean-deep";
|
|
|
+import { saveAs } from "file-saver";
|
|
|
|
|
|
export const initMusic = (total: number): IMeasure[] => {
|
|
|
return new Array(total).fill(0).map((item, index) => {
|
|
@@ -629,7 +630,7 @@ export default defineComponent({
|
|
|
autoFocus: false,
|
|
|
class: "deleteDialog saveDialog",
|
|
|
title: "温馨提示",
|
|
|
- content: '是否保存当前曲谱?',
|
|
|
+ content: "是否保存当前曲谱?",
|
|
|
positiveText: "保存",
|
|
|
positiveButtonProps: {
|
|
|
type: "primary",
|
|
@@ -1225,6 +1226,7 @@ export default defineComponent({
|
|
|
}
|
|
|
}
|
|
|
data.loading = false;
|
|
|
+ return res;
|
|
|
};
|
|
|
const handleSaveMusic = async (tips = true) => {
|
|
|
await api_musicSheetCreationUpdate({
|
|
@@ -1412,6 +1414,20 @@ export default defineComponent({
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+ const downXML = async () => {
|
|
|
+ const msg = message.loading("导出中...");
|
|
|
+ await handleSaveMusic(false);
|
|
|
+ const res = await getDetailData();
|
|
|
+ if (!res?.data?.xml) {
|
|
|
+ msg.type = "error";
|
|
|
+ msg.content = "导出失败";
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ saveAs(res.data.xml, (data.musicName || '曲谱') + ".xml");
|
|
|
+ msg.type = "success";
|
|
|
+ msg.content = "导出成功";
|
|
|
+ };
|
|
|
+
|
|
|
const handleDownFile = (type: IFileBtnType) => {
|
|
|
if (type === "png") {
|
|
|
downPng();
|
|
@@ -1419,6 +1435,8 @@ export default defineComponent({
|
|
|
downMidi();
|
|
|
} else if (type === "wav") {
|
|
|
downWav();
|
|
|
+ } else if (type === "down-xml") {
|
|
|
+ downXML();
|
|
|
}
|
|
|
};
|
|
|
|
|
@@ -1428,6 +1446,7 @@ export default defineComponent({
|
|
|
input.accept = ".xml,.musicxml";
|
|
|
input.onchange = (e: any) => {
|
|
|
const file = e.target.files[0];
|
|
|
+
|
|
|
const reader = new FileReader();
|
|
|
reader.onload = (e: any) => {
|
|
|
let abc = e.target.result;
|
|
@@ -1502,7 +1521,7 @@ export default defineComponent({
|
|
|
} else if (["xml"].includes(val)) {
|
|
|
handleExport();
|
|
|
} else if (val === "upload") {
|
|
|
- } else if (["png", "midi", "wav"].includes(val)) {
|
|
|
+ } else if (["png", "midi", "wav", "down-xml"].includes(val)) {
|
|
|
handleDownFile(val);
|
|
|
} else if (val === "print") {
|
|
|
}
|
|
@@ -2316,7 +2335,7 @@ export default defineComponent({
|
|
|
)}
|
|
|
|
|
|
{/* <textarea ref={textAreaRef} class={styles.value} id="abc"></textarea> */}
|
|
|
- <div id="importRef"></div>
|
|
|
+ <div id="importRef" style={{ display: "none" }}></div>
|
|
|
<div id="audio" style={{ display: "none" }}></div>
|
|
|
{data.loadingAudioSrouce && (
|
|
|
<div class={styles.loading}>
|