|
@@ -180,6 +180,7 @@ export default defineComponent({
|
|
|
isSave: false,
|
|
|
musicId: "",
|
|
|
musicName: "", // 曲谱名称
|
|
|
+ creator: "", // 创建者
|
|
|
subjectId: "", // 声部
|
|
|
speed: "",
|
|
|
music: "",
|
|
@@ -257,6 +258,9 @@ export default defineComponent({
|
|
|
abcElem,
|
|
|
data.music.substring(data.active.startChar, data.active.endChar)
|
|
|
);
|
|
|
+ if (abcElem.el_type === "tempo") {
|
|
|
+ abcData.visualObj.engraver.rangeHighlight(abcElem.startChar, abcElem.endChar);
|
|
|
+ }
|
|
|
if (drag && drag.step) {
|
|
|
// console.log("🚀 ~ drag:", drag);
|
|
|
handleMoveNote("drag", drag.step);
|
|
@@ -275,7 +279,7 @@ export default defineComponent({
|
|
|
clickListener: clickListener,
|
|
|
responsive: "resize",
|
|
|
dragging: true,
|
|
|
- selectTypes: true, // ["note", "clef", "keySignature", "timeSignature", "dynamicDecoration"],
|
|
|
+ selectTypes: ["note"], // ["note", "clef", "keySignature", "timeSignature", "dynamicDecoration"],
|
|
|
visualTranspose: 0,
|
|
|
wrap: {
|
|
|
minSpacing: 2,
|
|
@@ -968,6 +972,7 @@ export default defineComponent({
|
|
|
if (res?.code == 200) {
|
|
|
data.musicId = res.data.id || "";
|
|
|
data.musicName = res.data.name || "";
|
|
|
+ data.creator = res.data.creator || "";
|
|
|
let abc = "" as any;
|
|
|
try {
|
|
|
abc = JSON.parse(res.data.creationData);
|
|
@@ -984,8 +989,8 @@ export default defineComponent({
|
|
|
abcData.abc.visualTranspose = abc.visualTranspose || 0;
|
|
|
abcData.abc.transposeKey = abc.transposeKey || "K:C";
|
|
|
abcData.abc.subjectCode = abc.subjectCode || "acoustic_grand_piano";
|
|
|
- const _instruments = ABCJS.synth.instrumentIndexToName.indexOf(abcData.abc.subjectCode as any)
|
|
|
- abcData.synthOptions.program = _instruments > -1 ? _instruments : 0
|
|
|
+ const _instruments = ABCJS.synth.instrumentIndexToName.indexOf(abcData.abc.subjectCode as any);
|
|
|
+ abcData.synthOptions.program = _instruments > -1 ? _instruments : 0;
|
|
|
abcData.abc.measures = abc.measures || initMusic(30);
|
|
|
console.log("🚀 ~ abcData.abc:", abcData.abc);
|
|
|
}
|
|
@@ -994,6 +999,7 @@ export default defineComponent({
|
|
|
const handleSaveMusic = async () => {
|
|
|
await api_musicSheetCreationUpdate({
|
|
|
name: data.musicName,
|
|
|
+ creator: data.creator,
|
|
|
creationConfig: data.music,
|
|
|
creationData: JSON.stringify(abcData.abc),
|
|
|
id: data.musicId,
|
|
@@ -1178,7 +1184,7 @@ export default defineComponent({
|
|
|
|
|
|
return () => (
|
|
|
<div class={styles.container}>
|
|
|
- <div class={styles.containerTop}>
|
|
|
+ <div class={styles.containerTop} onKeyup={(e: Event) => e.stopPropagation()}>
|
|
|
<div class={styles.topWrap}>
|
|
|
<div class={styles.topBtn}>
|
|
|
<FileBtn
|
|
@@ -1839,8 +1845,18 @@ export default defineComponent({
|
|
|
<div class={styles.box}>
|
|
|
<div class={styles.titleBox}>
|
|
|
<div style={{ width: "50%", margin: "0 auto" }}>
|
|
|
- <NInput v-model:value={data.musicName} placeholder="乐谱名称" />
|
|
|
- {/* // <Input v-model={data.musicName} variant="outlined" placeholder="乐谱名称" /> */}
|
|
|
+ <NInput
|
|
|
+ onKeyup={(e: Event) => e.stopPropagation()}
|
|
|
+ v-model:value={data.musicName}
|
|
|
+ placeholder="乐谱名称"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div style={{ width: "30%", margin: "10px 0 0 auto" }}>
|
|
|
+ <NInput
|
|
|
+ onKeyup={(e: Event) => e.stopPropagation()}
|
|
|
+ v-model={data.creator}
|
|
|
+ placeholder="曲谱作者"
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
<div id="paper"></div>
|