|
@@ -1,7 +1,7 @@
|
|
|
import { defineComponent, nextTick, onMounted, onUnmounted, reactive, ref, watch } from "vue";
|
|
|
import ABCJS, { AbcElem, AbcVisualParams, ClickListenerAnalysis, ClickListenerDrag, NoteTimingEvent, SynthObjectController } from "abcjs";
|
|
|
-import { api_musicSheetCreationWav2mp3, api_musicSheetCreationSaveMusic, api_musicalInstrumentList, api_musicSheetCreationUpdate } from "../../api";
|
|
|
-import { NButton, NForm, NFormItem, NIcon, NModal, NProgress, NSelect, NSpace, useMessage } from "naive-ui";
|
|
|
+import { api_musicSheetCreationWav2mp3, api_musicSheetCreationSaveMusic, api_musicalInstrumentList, api_musicSheetCreationUpdate, api_subjectList } from "../../api";
|
|
|
+import { NButton, NCascader, NForm, NFormItem, NIcon, NModal, NProgress, NSelect, NSpace, useMessage } from "naive-ui";
|
|
|
import styles from "./index.module.less";
|
|
|
import { Close } from "@vicons/ionicons5";
|
|
|
import { SelectMixedOption } from "naive-ui/es/select/src/interface";
|
|
@@ -28,7 +28,7 @@ export default defineComponent({
|
|
|
setup(props, { emit }) {
|
|
|
const message = useMessage();
|
|
|
const model = reactive({
|
|
|
- subjects: [] as SelectMixedOption[],
|
|
|
+ subjects: [] as any[],
|
|
|
saveLoading: false,
|
|
|
saveProgress: 0,
|
|
|
productOpen: false,
|
|
@@ -44,13 +44,13 @@ export default defineComponent({
|
|
|
musicJianSvg: "",
|
|
|
});
|
|
|
const getSubjects = async () => {
|
|
|
- const { data } = await api_musicalInstrumentList({ page: 1 });
|
|
|
- model.subjects = data.map((item: any) => {
|
|
|
- return {
|
|
|
- label: item.name,
|
|
|
- value: item.id,
|
|
|
- };
|
|
|
+ const { data } = await api_subjectList({
|
|
|
+ enableFlag: true,
|
|
|
+ delFlag: 0,
|
|
|
+ page: 1,
|
|
|
+ rows: 999,
|
|
|
});
|
|
|
+ model.subjects = data;
|
|
|
};
|
|
|
|
|
|
const handleProductResult = (res: MessageEvent) => {
|
|
@@ -108,13 +108,23 @@ export default defineComponent({
|
|
|
() => props.item,
|
|
|
() => {
|
|
|
// console.log(props.item, model.subjects);
|
|
|
- const subjectId = model.subjects.length > 0 ? model.subjects[0].value : null;
|
|
|
+ const subjectId = model.subjects.length > 0 ? model.subjects[0].instruments[0]?.id : null;
|
|
|
froms.subjectId = props.item.subjectId ?? subjectId;
|
|
|
- const cbsMusicalInstrumentIds = model.subjects.length > 0 ? model.subjects[0] : null;
|
|
|
+ const cbsMusicalInstrumentIds = model.subjects.length > 0 ? model.subjects[0].instruments[0]?.id : null;
|
|
|
const cbsM = props.item.cbsMusicalInstrumentIds ?? cbsMusicalInstrumentIds;
|
|
|
- froms.cbsMusicalInstrumentIds = cbsM ? Number(cbsM) : null;
|
|
|
-
|
|
|
- console.log(froms.cbsMusicalInstrumentIds, "froms.cbsMusicalInstrumentIds");
|
|
|
+ let status = false;
|
|
|
+ if (model.subjects.length > 0) {
|
|
|
+ model.subjects.forEach((item: any) => {
|
|
|
+ if (Array.isArray(item.instruments)) {
|
|
|
+ item.instruments.forEach((child: any) => {
|
|
|
+ if (cbsM === child.id) {
|
|
|
+ status = true;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ froms.cbsMusicalInstrumentIds = status ? (cbsM ? cbsM : null) : null;
|
|
|
}
|
|
|
);
|
|
|
|
|
@@ -293,12 +303,27 @@ export default defineComponent({
|
|
|
path="cbsMusicalInstrumentIds"
|
|
|
rule={{
|
|
|
required: true,
|
|
|
- type: "number",
|
|
|
+ // type: "number",
|
|
|
message: "请选择素材可用乐器",
|
|
|
trigger: "change",
|
|
|
}}
|
|
|
>
|
|
|
- <NSelect to="body" disabled={model.saveLoading} placeholder="请选择素材可用乐器" options={model.subjects} v-model:value={froms.cbsMusicalInstrumentIds}></NSelect>
|
|
|
+ {/* <NSelect to="body" disabled={model.saveLoading} placeholder="请选择素材可用乐器" options={model.subjects} v-model:value={froms.cbsMusicalInstrumentIds}></NSelect> */}
|
|
|
+ <NCascader
|
|
|
+ to="body"
|
|
|
+ disabled={model.saveLoading}
|
|
|
+ placeholder="请选择素材可用乐器"
|
|
|
+ options={model.subjects}
|
|
|
+ v-model:value={froms.cbsMusicalInstrumentIds}
|
|
|
+ checkStrategy="child"
|
|
|
+ showPath={false}
|
|
|
+ childrenField="instruments"
|
|
|
+ expandTrigger="hover"
|
|
|
+ labelField="name"
|
|
|
+ valueField="id"
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ />
|
|
|
</NFormItem>
|
|
|
{/* <NFormItem label="是否公开">
|
|
|
<NSpace class={styles.checkbox} wrapItem={false}>
|