|  | @@ -242,7 +242,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |          //   'data.list[data.listActive]'
 | 
	
		
			
				|  |  |          // );
 | 
	
		
			
				|  |  |          musicsrc = `${vaildMusicScoreUrl()}/instrument/?modelType=practise&id=${
 | 
	
		
			
				|  |  | -          data.list[data.listActive].xmlFileUrl
 | 
	
		
			
				|  |  | +          data.list[data.listActive]?.xmlFileUrl
 | 
	
		
			
				|  |  |          }&Authorization=${userStore.getToken}/#/preview`;
 | 
	
		
			
				|  |  |        } else {
 | 
	
		
			
				|  |  |          musicsrc = '';
 | 
	
	
		
			
				|  | @@ -309,6 +309,20 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    // 判断是否可转谱 - 为空也可以转谱
 | 
	
		
			
				|  |  | +    const checkConverTible = (isConvertibleScore: any) => {
 | 
	
		
			
				|  |  | +      if (
 | 
	
		
			
				|  |  | +        isConvertibleScore ||
 | 
	
		
			
				|  |  | +        isConvertibleScore === '' ||
 | 
	
		
			
				|  |  | +        isConvertibleScore === undefined ||
 | 
	
		
			
				|  |  | +        isConvertibleScore === null
 | 
	
		
			
				|  |  | +      ) {
 | 
	
		
			
				|  |  | +        return true;
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        return false;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      const musicIframeLoad = () => {
 | 
	
		
			
				|  |  |        const token = userStore.getToken;
 | 
	
		
			
				|  |  |        const details = data.list[data.listActive];
 | 
	
	
		
			
				|  | @@ -356,20 +370,45 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    const _actions = [
 | 
	
		
			
				|  |  | -      {
 | 
	
		
			
				|  |  | -        value: 'staff',
 | 
	
		
			
				|  |  | -        label: '五线谱'
 | 
	
		
			
				|  |  | -      },
 | 
	
		
			
				|  |  | -      {
 | 
	
		
			
				|  |  | -        value: 'first',
 | 
	
		
			
				|  |  | -        label: '首调'
 | 
	
		
			
				|  |  | -      },
 | 
	
		
			
				|  |  | -      {
 | 
	
		
			
				|  |  | -        value: 'fixed',
 | 
	
		
			
				|  |  | -        label: '固定调'
 | 
	
		
			
				|  |  | +    const _actions = computed(() => {
 | 
	
		
			
				|  |  | +      const details = data.list[data.listActive];
 | 
	
		
			
				|  |  | +      const { scoreType, isConvertibleScore } = details || {};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      const action: any[] = [
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +          value: 'first',
 | 
	
		
			
				|  |  | +          label: '首调'
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +          value: 'fixed',
 | 
	
		
			
				|  |  | +          label: '固定调'
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      ];
 | 
	
		
			
				|  |  | +      // 首调 固定调 并且 不显示可转谱 则不显示五线谱
 | 
	
		
			
				|  |  | +      if (
 | 
	
		
			
				|  |  | +        !(['JIAN', 'FIRST'].includes(scoreType) && isConvertibleScore === false)
 | 
	
		
			
				|  |  | +      ) {
 | 
	
		
			
				|  |  | +        action.unshift({
 | 
	
		
			
				|  |  | +          value: 'staff',
 | 
	
		
			
				|  |  | +          label: '五线谱'
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -    ];
 | 
	
		
			
				|  |  | +      return action;
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +    // const _actions = [
 | 
	
		
			
				|  |  | +    //   {
 | 
	
		
			
				|  |  | +    //     value: 'staff',
 | 
	
		
			
				|  |  | +    //     label: '五线谱'
 | 
	
		
			
				|  |  | +    //   },
 | 
	
		
			
				|  |  | +    //   {
 | 
	
		
			
				|  |  | +    //     value: 'first',
 | 
	
		
			
				|  |  | +    //     label: '首调'
 | 
	
		
			
				|  |  | +    //   },
 | 
	
		
			
				|  |  | +    //   {
 | 
	
		
			
				|  |  | +    //     value: 'fixed',
 | 
	
		
			
				|  |  | +    //     label: '固定调'
 | 
	
		
			
				|  |  | +    //   }
 | 
	
		
			
				|  |  | +    // ];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // 解析xml,获取分轨信息
 | 
	
		
			
				|  |  |      const analyzeXml = async () => {
 | 
	
	
		
			
				|  | @@ -400,24 +439,33 @@ export default defineComponent({
 | 
	
		
			
				|  |  |          //   );
 | 
	
		
			
				|  |  |          // }
 | 
	
		
			
				|  |  |          // showMusicImg: 'first' as 'staff' | 'first' | 'fixed',
 | 
	
		
			
				|  |  | -        const { defaultScore, transferFlag } =
 | 
	
		
			
				|  |  | -          details.musicalInstruments[0] || {};
 | 
	
		
			
				|  |  | -        // console.log(
 | 
	
		
			
				|  |  | -        //   details.musicalInstruments[0],
 | 
	
		
			
				|  |  | -        //   'details.musicalInstruments[0]'
 | 
	
		
			
				|  |  | -        // );
 | 
	
		
			
				|  |  | -        let musicImgType: 'staff' | 'first' | 'fixed' = 'staff';
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // const { defaultScore, transferFlag } =
 | 
	
		
			
				|  |  | +        //   details.musicalInstruments[0] || {};
 | 
	
		
			
				|  |  | +        // let musicImgType: 'staff' | 'first' | 'fixed' = 'staff';
 | 
	
		
			
				|  |  | +        // musicImgType =
 | 
	
		
			
				|  |  | +        //   defaultScore === 'STAVE'
 | 
	
		
			
				|  |  | +        //     ? 'staff'
 | 
	
		
			
				|  |  | +        //     : defaultScore === 'JIAN'
 | 
	
		
			
				|  |  | +        //     ? 'fixed'
 | 
	
		
			
				|  |  | +        //     : defaultScore === 'FIRST'
 | 
	
		
			
				|  |  | +        //     ? 'first'
 | 
	
		
			
				|  |  | +        //     : 'staff';
 | 
	
		
			
				|  |  | +        // console.log(musicImgType, 'musicImgType1');
 | 
	
		
			
				|  |  | +        // data.showMusicImg = musicImgType;
 | 
	
		
			
				|  |  | +        // data.showTransBtn = transferFlag;
 | 
	
		
			
				|  |  | +        const { scoreType, isConvertibleScore } = details || {};
 | 
	
		
			
				|  |  | +        let musicImgType: 'staff' | 'first' | 'fixed' = 'first';
 | 
	
		
			
				|  |  |          musicImgType =
 | 
	
		
			
				|  |  | -          defaultScore === 'STAVE'
 | 
	
		
			
				|  |  | +          scoreType === 'STAVE'
 | 
	
		
			
				|  |  |              ? 'staff'
 | 
	
		
			
				|  |  | -            : defaultScore === 'JIAN'
 | 
	
		
			
				|  |  | +            : scoreType === 'JIAN'
 | 
	
		
			
				|  |  |              ? 'fixed'
 | 
	
		
			
				|  |  | -            : defaultScore === 'FIRST'
 | 
	
		
			
				|  |  | +            : scoreType === 'FIRST'
 | 
	
		
			
				|  |  |              ? 'first'
 | 
	
		
			
				|  |  | -            : 'staff';
 | 
	
		
			
				|  |  | -        console.log(musicImgType, 'musicImgType1');
 | 
	
		
			
				|  |  | +            : 'first';
 | 
	
		
			
				|  |  |          data.showMusicImg = musicImgType;
 | 
	
		
			
				|  |  | -        data.showTransBtn = transferFlag;
 | 
	
		
			
				|  |  | +        data.showTransBtn = checkConverTible(isConvertibleScore);
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -432,7 +480,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |          item =>
 | 
	
		
			
				|  |  |            item.getElementsByTagName('part-name')?.[0]?.textContent?.trim() || ''
 | 
	
		
			
				|  |  |        );
 | 
	
		
			
				|  |  | -      const parts: any = xmlParse.getElementsByTagName('part');
 | 
	
		
			
				|  |  | +      // const parts: any = xmlParse.getElementsByTagName('part');
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        /** 第一分谱如果是约定的配置分谱则跳过 */
 | 
	
		
			
				|  |  |        if (partListNames[0]?.toLocaleUpperCase?.() === 'COMMON') {
 | 
	
	
		
			
				|  | @@ -465,31 +513,44 @@ export default defineComponent({
 | 
	
		
			
				|  |  |          .filter((item: any) => item.canselect)
 | 
	
		
			
				|  |  |          .sort((a: any, b: any) => a.sortId - b.sortId);
 | 
	
		
			
				|  |  |        data.trackList = arr;
 | 
	
		
			
				|  |  | -      let track = arr.find(
 | 
	
		
			
				|  |  | -        (item: any) => item.value === data.musicInstrumentIndex
 | 
	
		
			
				|  |  | -      )?.track;
 | 
	
		
			
				|  |  | +      // let track = arr.find(
 | 
	
		
			
				|  |  | +      //   (item: any) => item.value === data.musicInstrumentIndex
 | 
	
		
			
				|  |  | +      // )?.track;
 | 
	
		
			
				|  |  |        // track = track
 | 
	
		
			
				|  |  |        //   .replace(/[0-9]+/g, '')
 | 
	
		
			
				|  |  |        //   .replace(/\s/g, '')
 | 
	
		
			
				|  |  |        //   .toLocaleLowerCase();
 | 
	
		
			
				|  |  | -      track = trackToCode(track);
 | 
	
		
			
				|  |  | -      let musicRenderType: 'staff' | 'first' | 'fixed' = 'staff';
 | 
	
		
			
				|  |  | -      let canTrans = true;
 | 
	
		
			
				|  |  | -      data.list[data.listActive]?.musicalInstruments.forEach((item: any) => {
 | 
	
		
			
				|  |  | -        if (item.code.toLocaleLowerCase() === track.toLocaleLowerCase()) {
 | 
	
		
			
				|  |  | -          musicRenderType =
 | 
	
		
			
				|  |  | -            item.defaultScore === 'STAVE'
 | 
	
		
			
				|  |  | -              ? 'staff'
 | 
	
		
			
				|  |  | -              : item.defaultScore === 'JIAN'
 | 
	
		
			
				|  |  | -              ? 'fixed'
 | 
	
		
			
				|  |  | -              : item.defaultScore === 'FIRST'
 | 
	
		
			
				|  |  | -              ? 'first'
 | 
	
		
			
				|  |  | -              : 'staff';
 | 
	
		
			
				|  |  | -          canTrans = item.transferFlag;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -      });
 | 
	
		
			
				|  |  | -      data.showTransBtn = canTrans;
 | 
	
		
			
				|  |  | -      data.showMusicImg = musicRenderType;
 | 
	
		
			
				|  |  | +      // track = trackToCode(track);
 | 
	
		
			
				|  |  | +      // let musicRenderType: 'staff' | 'first' | 'fixed' = 'staff';
 | 
	
		
			
				|  |  | +      // let canTrans = true;
 | 
	
		
			
				|  |  | +      // data.list[data.listActive]?.musicalInstruments.forEach((item: any) => {
 | 
	
		
			
				|  |  | +      //   if (item.code.toLocaleLowerCase() === track.toLocaleLowerCase()) {
 | 
	
		
			
				|  |  | +      //     musicRenderType =
 | 
	
		
			
				|  |  | +      //       item.defaultScore === 'STAVE'
 | 
	
		
			
				|  |  | +      //         ? 'staff'
 | 
	
		
			
				|  |  | +      //         : item.defaultScore === 'JIAN'
 | 
	
		
			
				|  |  | +      //         ? 'fixed'
 | 
	
		
			
				|  |  | +      //         : item.defaultScore === 'FIRST'
 | 
	
		
			
				|  |  | +      //         ? 'first'
 | 
	
		
			
				|  |  | +      //         : 'staff';
 | 
	
		
			
				|  |  | +      //     canTrans = item.transferFlag;
 | 
	
		
			
				|  |  | +      //   }
 | 
	
		
			
				|  |  | +      // });
 | 
	
		
			
				|  |  | +      // data.showTransBtn = canTrans;
 | 
	
		
			
				|  |  | +      // data.showMusicImg = musicRenderType;
 | 
	
		
			
				|  |  | +      const details = data.list[data.listActive];
 | 
	
		
			
				|  |  | +      const { scoreType, isConvertibleScore } = details || {};
 | 
	
		
			
				|  |  | +      let musicImgType: 'staff' | 'first' | 'fixed' = 'first';
 | 
	
		
			
				|  |  | +      musicImgType =
 | 
	
		
			
				|  |  | +        scoreType === 'STAVE'
 | 
	
		
			
				|  |  | +          ? 'staff'
 | 
	
		
			
				|  |  | +          : scoreType === 'JIAN'
 | 
	
		
			
				|  |  | +          ? 'fixed'
 | 
	
		
			
				|  |  | +          : scoreType === 'FIRST'
 | 
	
		
			
				|  |  | +          ? 'first'
 | 
	
		
			
				|  |  | +          : 'first';
 | 
	
		
			
				|  |  | +      data.showMusicImg = musicImgType;
 | 
	
		
			
				|  |  | +      data.showTransBtn = checkConverTible(isConvertibleScore);
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |      watch(
 | 
	
		
			
				|  |  |        () => data.listActive,
 | 
	
	
		
			
				|  | @@ -839,7 +900,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                    {/* 转谱按钮 */}
 | 
	
		
			
				|  |  |                    {data.showTransBtn && (
 | 
	
		
			
				|  |  |                      <NPopselect
 | 
	
		
			
				|  |  | -                      options={_actions}
 | 
	
		
			
				|  |  | +                      options={_actions.value}
 | 
	
		
			
				|  |  |                        trigger="hover"
 | 
	
		
			
				|  |  |                        v-model:value={data.showMusicImg}
 | 
	
		
			
				|  |  |                        onUpdate:value={async (val: any) => {
 |