import { NButton, NCard, NCheckbox, NGi, NGrid, NIcon, NInputNumber, NLayout, NLayoutContent, NLayoutSider, NModal, NPopover, NRadio, NRadioGroup, NScrollbar, NSpace, NTabPane, NTable, NTabs, useMessage, } from "naive-ui"; import { defineComponent, onMounted, reactive, watch } from "vue"; import { Close } from "@vicons/ionicons5"; import styles from "./index.module.less"; import { getImage } from "/src/pc/home/images"; import { ABC_DATA } from "/src/pc/home/runtime"; import TheIcon from "/src/components/The-icon"; import { encodeUrl } from "/src/utils"; const instruments = [ { label: "竖笛", key: "recorder", id: 4, icon: getImage("icon_27_0.png"), range: { min: 36, max: 62, }, }, { label: "排箫", key: "pan_flute", id: 1, icon: getImage("icon_27_1.png"), range: { min: 31, max: 66, }, }, { label: "口风琴", key: "piccolo", id: 5, icon: getImage("icon_27_2.png"), range: { min: 41, max: 72, }, }, { label: "陶笛", key: "blown_bottle", id: 2, icon: getImage("icon_27_3.png"), range: { min: 33, max: 53, }, }, { label: "葫芦丝", key: "clarinet", id: 3, icon: getImage("icon_27_4.png"), range: { min: 40, max: 57, }, }, ]; export const notationInstruments = instruments; export default defineComponent({ name: "TheCreate", props: { show: { type: Boolean, default: false, }, }, emits: ["update:show", "create"], setup(props, { emit }) { const message = useMessage(); const formsOptions = reactive({ loading: false, }); const froms = reactive({ key: ABC_DATA.key[0], meter: ABC_DATA.meter[0], speed: 80, measure: 30, subjectCode: "recorder", subjectId: 4, }); const handleCreate = async () => { if (!froms.speed) { message.warning("请输入开始速度"); return; } if (!froms.measure) { message.warning("请输入小节数量"); return; } formsOptions.loading = true; handleOpenNotaion({ meter: froms.meter.value, speed: `Q:1/4=${froms.speed}`, key: froms.key.value, subjectCode: froms.subjectCode, measure: froms.measure, subjectId: froms.subjectId }); emit("create"); formsOptions.loading = false; }; const handleOpenNotaion = (data: any) => { const url = `${location.origin}/notation/#/?v=${Date.now()}&config=${encodeUrl(data)}`; // console.log("🚀 ~ url:", url); window.parent.postMessage( { api: "notation_open", url: url, }, "*" ); // window.open(url, "_blank"); }; return () => ( emit("update:show", val)} >
新建乐谱
emit("update:show", false)} >
声部
{instruments.map((item) => (
{ froms.subjectCode = item.key; froms.subjectId = item.id; }} >
{item.label}
))}
{{ trigger: () => (
调号
{froms.key.name}
), default: () => ( {ABC_DATA.key.map((item) => (
(froms.key = item)} >
{item.name}
))}
), }}
{{ trigger: () => (
拍号
{froms.meter.name}
), default: () => ( {ABC_DATA.meter.map((item) => (
(froms.meter = item)} >
{item.name}
))}
), }}
速度
{{ prefix: () => (
), }}
小节
emit("update:show", false)}> 取消 handleCreate()} > 确定
); }, });