|  | @@ -0,0 +1,216 @@
 | 
	
		
			
				|  |  | +import {
 | 
	
		
			
				|  |  | +	NButton,
 | 
	
		
			
				|  |  | +	NCard,
 | 
	
		
			
				|  |  | +	NGi,
 | 
	
		
			
				|  |  | +	NGrid,
 | 
	
		
			
				|  |  | +	NIcon,
 | 
	
		
			
				|  |  | +	NInputNumber,
 | 
	
		
			
				|  |  | +	NLayout,
 | 
	
		
			
				|  |  | +	NLayoutContent,
 | 
	
		
			
				|  |  | +	NLayoutSider,
 | 
	
		
			
				|  |  | +	NModal,
 | 
	
		
			
				|  |  | +	NPopover,
 | 
	
		
			
				|  |  | +	NRadio,
 | 
	
		
			
				|  |  | +	NRadioGroup,
 | 
	
		
			
				|  |  | +	NScrollbar,
 | 
	
		
			
				|  |  | +	NSpace,
 | 
	
		
			
				|  |  | +	NTabPane,
 | 
	
		
			
				|  |  | +	NTable,
 | 
	
		
			
				|  |  | +	NTabs,
 | 
	
		
			
				|  |  | +	useMessage,
 | 
	
		
			
				|  |  | +} from "naive-ui";
 | 
	
		
			
				|  |  | +import { defineComponent, 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 TheSpeed from "/src/pc/home/component/the-speed";
 | 
	
		
			
				|  |  | +import { api_musicSheetCreationSave } from "/src/pc/api";
 | 
	
		
			
				|  |  | +export default defineComponent({
 | 
	
		
			
				|  |  | +	name: "TheCreate",
 | 
	
		
			
				|  |  | +	props: {
 | 
	
		
			
				|  |  | +		show: {
 | 
	
		
			
				|  |  | +			type: Boolean,
 | 
	
		
			
				|  |  | +			default: false,
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	emits: ["update:show", "create"],
 | 
	
		
			
				|  |  | +	setup(props, { emit }) {
 | 
	
		
			
				|  |  | +		const message = useMessage();
 | 
	
		
			
				|  |  | +		const instruments = [
 | 
	
		
			
				|  |  | +			{
 | 
	
		
			
				|  |  | +				label: "竖笛",
 | 
	
		
			
				|  |  | +				key: "shudi",
 | 
	
		
			
				|  |  | +				icon: getImage("icon_27_0.png"),
 | 
	
		
			
				|  |  | +			},
 | 
	
		
			
				|  |  | +			{
 | 
	
		
			
				|  |  | +				label: "排箫",
 | 
	
		
			
				|  |  | +				key: "paixiao",
 | 
	
		
			
				|  |  | +				icon: getImage("icon_27_1.png"),
 | 
	
		
			
				|  |  | +			},
 | 
	
		
			
				|  |  | +			{
 | 
	
		
			
				|  |  | +				label: "口风琴",
 | 
	
		
			
				|  |  | +				key: "koufengqin",
 | 
	
		
			
				|  |  | +				icon: getImage("icon_27_2.png"),
 | 
	
		
			
				|  |  | +			},
 | 
	
		
			
				|  |  | +			{
 | 
	
		
			
				|  |  | +				label: "陶笛",
 | 
	
		
			
				|  |  | +				key: "taodie",
 | 
	
		
			
				|  |  | +				icon: getImage("icon_27_3.png"),
 | 
	
		
			
				|  |  | +			},
 | 
	
		
			
				|  |  | +			{
 | 
	
		
			
				|  |  | +				label: "葫芦丝",
 | 
	
		
			
				|  |  | +				key: "hulusi",
 | 
	
		
			
				|  |  | +				icon: getImage("icon_27_4.png"),
 | 
	
		
			
				|  |  | +			},
 | 
	
		
			
				|  |  | +		];
 | 
	
		
			
				|  |  | +		const froms = reactive({
 | 
	
		
			
				|  |  | +			instrument: "shudi",
 | 
	
		
			
				|  |  | +			key: ABC_DATA.key[0],
 | 
	
		
			
				|  |  | +			meter: ABC_DATA.meter[0],
 | 
	
		
			
				|  |  | +			speed: 80,
 | 
	
		
			
				|  |  | +			measure: 30,
 | 
	
		
			
				|  |  | +		});
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		const handleCreate = async () => {
 | 
	
		
			
				|  |  | +			await api_musicSheetCreationSave({
 | 
	
		
			
				|  |  | +				creationData: "sd",
 | 
	
		
			
				|  |  | +				name: "sd",
 | 
	
		
			
				|  |  | +				creationConfig: "sd",
 | 
	
		
			
				|  |  | +				subjectId: 1,
 | 
	
		
			
				|  |  | +			});
 | 
	
		
			
				|  |  | +			emit('create')
 | 
	
		
			
				|  |  | +		};
 | 
	
		
			
				|  |  | +		return () => (
 | 
	
		
			
				|  |  | +			<NModal autoFocus={false} show={props.show} onUpdate:show={(val) => emit("update:show", val)}>
 | 
	
		
			
				|  |  | +				<div class={styles.setbox}>
 | 
	
		
			
				|  |  | +					<div class={styles.head}>
 | 
	
		
			
				|  |  | +						<div>新建乐谱</div>
 | 
	
		
			
				|  |  | +						<NButton
 | 
	
		
			
				|  |  | +							class={styles.close}
 | 
	
		
			
				|  |  | +							quaternary
 | 
	
		
			
				|  |  | +							circle
 | 
	
		
			
				|  |  | +							size="small"
 | 
	
		
			
				|  |  | +							onClick={() => emit("update:show", false)}
 | 
	
		
			
				|  |  | +						>
 | 
	
		
			
				|  |  | +							<NIcon component={Close} size={18} />
 | 
	
		
			
				|  |  | +						</NButton>
 | 
	
		
			
				|  |  | +					</div>
 | 
	
		
			
				|  |  | +					<div class={styles.content}>
 | 
	
		
			
				|  |  | +						<div class={styles.lineTitle}>声部</div>
 | 
	
		
			
				|  |  | +						<NSpace style={{ paddingBottom: "45px" }}>
 | 
	
		
			
				|  |  | +							{instruments.map((item) => (
 | 
	
		
			
				|  |  | +								<div
 | 
	
		
			
				|  |  | +									class={[styles.item, froms.instrument === item.key && styles.itemActive]}
 | 
	
		
			
				|  |  | +									onClick={() => (froms.instrument = item.key)}
 | 
	
		
			
				|  |  | +								>
 | 
	
		
			
				|  |  | +									<div class={styles.itemImg}>
 | 
	
		
			
				|  |  | +										<img class={styles.icon} src={item.icon} />
 | 
	
		
			
				|  |  | +									</div>
 | 
	
		
			
				|  |  | +									<div>{item.label}</div>
 | 
	
		
			
				|  |  | +								</div>
 | 
	
		
			
				|  |  | +							))}
 | 
	
		
			
				|  |  | +						</NSpace>
 | 
	
		
			
				|  |  | +						<NSpace style={{ paddingBottom: "45px" }}>
 | 
	
		
			
				|  |  | +							<NPopover to="body" trigger="click">
 | 
	
		
			
				|  |  | +								{{
 | 
	
		
			
				|  |  | +									trigger: () => (
 | 
	
		
			
				|  |  | +										<div>
 | 
	
		
			
				|  |  | +											<div class={styles.lineTitle}>调号</div>
 | 
	
		
			
				|  |  | +											<div class={styles.beatItem}>
 | 
	
		
			
				|  |  | +												<div class={[styles.beatIcon]}>
 | 
	
		
			
				|  |  | +													<TheIcon iconClassName={froms.key.icon} />
 | 
	
		
			
				|  |  | +												</div>
 | 
	
		
			
				|  |  | +												<div>{froms.key.name}</div>
 | 
	
		
			
				|  |  | +											</div>
 | 
	
		
			
				|  |  | +										</div>
 | 
	
		
			
				|  |  | +									),
 | 
	
		
			
				|  |  | +									default: () => (
 | 
	
		
			
				|  |  | +										<NGrid cols={5} xGap={20} yGap={8}>
 | 
	
		
			
				|  |  | +											{ABC_DATA.key.map((item) => (
 | 
	
		
			
				|  |  | +												<NGi>
 | 
	
		
			
				|  |  | +													<div
 | 
	
		
			
				|  |  | +														class={[styles.btnItem, froms.key.value === item.value && styles.active]}
 | 
	
		
			
				|  |  | +														onClick={() => (froms.key = item)}
 | 
	
		
			
				|  |  | +													>
 | 
	
		
			
				|  |  | +														<div class={[styles.btnItemIcon]}>
 | 
	
		
			
				|  |  | +															<TheIcon iconClassName={item.icon} />
 | 
	
		
			
				|  |  | +														</div>
 | 
	
		
			
				|  |  | +														<div class={styles.btnItemName}>{item.name}</div>
 | 
	
		
			
				|  |  | +													</div>
 | 
	
		
			
				|  |  | +												</NGi>
 | 
	
		
			
				|  |  | +											))}
 | 
	
		
			
				|  |  | +										</NGrid>
 | 
	
		
			
				|  |  | +									),
 | 
	
		
			
				|  |  | +								}}
 | 
	
		
			
				|  |  | +							</NPopover>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +							<NPopover to="body" trigger="click">
 | 
	
		
			
				|  |  | +								{{
 | 
	
		
			
				|  |  | +									trigger: () => (
 | 
	
		
			
				|  |  | +										<div>
 | 
	
		
			
				|  |  | +											<div class={styles.lineTitle}>拍号</div>
 | 
	
		
			
				|  |  | +											<div class={styles.beatItem}>
 | 
	
		
			
				|  |  | +												<div class={[styles.beatIcon]}>
 | 
	
		
			
				|  |  | +													<TheIcon iconClassName={froms.meter.icon} />
 | 
	
		
			
				|  |  | +												</div>
 | 
	
		
			
				|  |  | +												<div>{froms.meter.name}</div>
 | 
	
		
			
				|  |  | +											</div>
 | 
	
		
			
				|  |  | +										</div>
 | 
	
		
			
				|  |  | +									),
 | 
	
		
			
				|  |  | +									default: () => (
 | 
	
		
			
				|  |  | +										<NGrid cols={5} xGap={50} yGap={20}>
 | 
	
		
			
				|  |  | +											{ABC_DATA.meter.map((item) => (
 | 
	
		
			
				|  |  | +												<NGi>
 | 
	
		
			
				|  |  | +													<div
 | 
	
		
			
				|  |  | +														class={[styles.btnItem, froms.meter.value === item.value && styles.active]}
 | 
	
		
			
				|  |  | +														onClick={() => (froms.meter = item)}
 | 
	
		
			
				|  |  | +													>
 | 
	
		
			
				|  |  | +														<div class={[styles.btnItemIcon]}>
 | 
	
		
			
				|  |  | +															<TheIcon iconClassName={item.icon} />
 | 
	
		
			
				|  |  | +														</div>
 | 
	
		
			
				|  |  | +														<div class={styles.btnItemName}>{item.name}</div>
 | 
	
		
			
				|  |  | +													</div>
 | 
	
		
			
				|  |  | +												</NGi>
 | 
	
		
			
				|  |  | +											))}
 | 
	
		
			
				|  |  | +										</NGrid>
 | 
	
		
			
				|  |  | +									),
 | 
	
		
			
				|  |  | +								}}
 | 
	
		
			
				|  |  | +							</NPopover>
 | 
	
		
			
				|  |  | +							<div>
 | 
	
		
			
				|  |  | +								<div class={styles.lineTitle}>速度</div>
 | 
	
		
			
				|  |  | +								<div class={styles.beatItem}>
 | 
	
		
			
				|  |  | +									<NInputNumber size="large" v-model:value={froms.speed} showButton={false} min={50}>
 | 
	
		
			
				|  |  | +										{{
 | 
	
		
			
				|  |  | +											prefix: () => (
 | 
	
		
			
				|  |  | +												<div class={styles.speedIcon}>
 | 
	
		
			
				|  |  | +													<TheIcon iconClassName="icon-a-sudu-4fenyinfu" size={["2em", "1em"]} />
 | 
	
		
			
				|  |  | +												</div>
 | 
	
		
			
				|  |  | +											),
 | 
	
		
			
				|  |  | +										}}
 | 
	
		
			
				|  |  | +									</NInputNumber>
 | 
	
		
			
				|  |  | +								</div>
 | 
	
		
			
				|  |  | +							</div>
 | 
	
		
			
				|  |  | +							<div>
 | 
	
		
			
				|  |  | +								<div class={styles.lineTitle}>小节</div>
 | 
	
		
			
				|  |  | +								<div class={styles.beatItem}>
 | 
	
		
			
				|  |  | +									<NInputNumber size="large" v-model:value={froms.measure} min={4}></NInputNumber>
 | 
	
		
			
				|  |  | +								</div>
 | 
	
		
			
				|  |  | +							</div>
 | 
	
		
			
				|  |  | +						</NSpace>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +						<div class={styles.btns}>
 | 
	
		
			
				|  |  | +							<NButton round onClick={() => emit("update:show", false)}>
 | 
	
		
			
				|  |  | +								取消
 | 
	
		
			
				|  |  | +							</NButton>
 | 
	
		
			
				|  |  | +							<NButton round type="primary" onClick={() => handleCreate()}>
 | 
	
		
			
				|  |  | +								确定
 | 
	
		
			
				|  |  | +							</NButton>
 | 
	
		
			
				|  |  | +						</div>
 | 
	
		
			
				|  |  | +					</div>
 | 
	
		
			
				|  |  | +				</div>
 | 
	
		
			
				|  |  | +			</NModal>
 | 
	
		
			
				|  |  | +		);
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +});
 |