|
@@ -77,7 +77,7 @@ export default defineComponent({
|
|
const heightInfo = ref<any>('0')
|
|
const heightInfo = ref<any>('0')
|
|
const musicDetail = ref<any>(null)
|
|
const musicDetail = ref<any>(null)
|
|
const audioFileUrl = ref('')
|
|
const audioFileUrl = ref('')
|
|
- let showImg = [] as any
|
|
|
|
|
|
+ const showImg = ref([] as any)
|
|
const firstList = ref<Array<any>>([])
|
|
const firstList = ref<Array<any>>([])
|
|
const fixedList = ref<Array<any>>([])
|
|
const fixedList = ref<Array<any>>([])
|
|
const staffList = ref<Array<any>>([])
|
|
const staffList = ref<Array<any>>([])
|
|
@@ -112,11 +112,11 @@ export default defineComponent({
|
|
() => staff.radio,
|
|
() => staff.radio,
|
|
(val: string) => {
|
|
(val: string) => {
|
|
if (val == 'first') {
|
|
if (val == 'first') {
|
|
- showImg = firstList.value
|
|
|
|
|
|
+ showImg.value = firstList.value
|
|
} else if (val == 'fixed') {
|
|
} else if (val == 'fixed') {
|
|
- showImg = fixedList.value
|
|
|
|
|
|
+ showImg.value = fixedList.value
|
|
} else {
|
|
} else {
|
|
- showImg = staffList.value
|
|
|
|
|
|
+ showImg.value = staffList.value
|
|
}
|
|
}
|
|
}
|
|
}
|
|
)
|
|
)
|
|
@@ -136,8 +136,7 @@ export default defineComponent({
|
|
const background = res.data.background
|
|
const background = res.data.background
|
|
audioFileUrl.value =
|
|
audioFileUrl.value =
|
|
background && background.length > 0 ? background[0].audioFileUrl : ''
|
|
background && background.length > 0 ? background[0].audioFileUrl : ''
|
|
- // const arrImgs = res.data.musicImg ? res.data.musicImg.split(',') : []
|
|
|
|
- showImg = res.data.musicImg ? res.data.musicImg.split(',') : []
|
|
|
|
|
|
+ showImg.value = res.data.musicImg ? res.data.musicImg.split(',') : []
|
|
firstList.value = res.data.firstTone
|
|
firstList.value = res.data.firstTone
|
|
? res.data.firstTone.split(',')
|
|
? res.data.firstTone.split(',')
|
|
: []
|
|
: []
|
|
@@ -145,20 +144,6 @@ export default defineComponent({
|
|
? res.data.fixedTone.split(',')
|
|
? res.data.fixedTone.split(',')
|
|
: []
|
|
: []
|
|
staffList.value = res.data.musicImg ? res.data.musicImg.split(',') : []
|
|
staffList.value = res.data.musicImg ? res.data.musicImg.split(',') : []
|
|
- // if (!showImg.value) {
|
|
|
|
- // setAccompanyUrl()
|
|
|
|
- // window.addEventListener(
|
|
|
|
- // 'message',
|
|
|
|
- // async e => {
|
|
|
|
- // // 给图片设置背景色
|
|
|
|
- // const tempCanvas = await imgToCanvas(e.data)
|
|
|
|
- // const img = convasToImg(tempCanvas)
|
|
|
|
- // // 开始上传图片
|
|
|
|
- // uploadFunction(img)
|
|
|
|
- // },
|
|
|
|
- // false
|
|
|
|
- // )
|
|
|
|
- // }
|
|
|
|
nextTick(() => {
|
|
nextTick(() => {
|
|
renderStaff()
|
|
renderStaff()
|
|
})
|
|
})
|
|
@@ -240,7 +225,7 @@ export default defineComponent({
|
|
await request.post(state.platformApi + '/open/music/sheet/img', {
|
|
await request.post(state.platformApi + '/open/music/sheet/img', {
|
|
data: { musicSheetId: musicDetail.value.id, musicImg: imgurl }
|
|
data: { musicSheetId: musicDetail.value.id, musicImg: imgurl }
|
|
})
|
|
})
|
|
- // showImg.value = imgurl
|
|
|
|
|
|
+ // showImg.value.value = imgurl
|
|
} catch (e) {
|
|
} catch (e) {
|
|
console.log(e)
|
|
console.log(e)
|
|
}
|
|
}
|
|
@@ -302,51 +287,48 @@ export default defineComponent({
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
|
|
- const tenantObj = reactive({
|
|
|
|
- policy: '',
|
|
|
|
- signature: '',
|
|
|
|
- key: '',
|
|
|
|
- kssAccessKeyId: '',
|
|
|
|
- acl: 'public-read',
|
|
|
|
- name: ''
|
|
|
|
- })
|
|
|
|
-
|
|
|
|
const showLoading = async (e: any) => {
|
|
const showLoading = async (e: any) => {
|
|
// console.log(e, 'showLoading')
|
|
// console.log(e, 'showLoading')
|
|
if (e.data?.api === 'musicStaffRender') {
|
|
if (e.data?.api === 'musicStaffRender') {
|
|
const osmdImg = e.data.osmdImg
|
|
const osmdImg = e.data.osmdImg
|
|
- showImg = []
|
|
|
|
- const img = await svgtopng(osmdImg.img, osmdImg.width, osmdImg.height)
|
|
|
|
- const fileName =
|
|
|
|
- route.query.id + state.user.data.userId + +new Date() + '.png'
|
|
|
|
-
|
|
|
|
- const obj = {
|
|
|
|
- filename: fileName,
|
|
|
|
- bucketName: 'cloud-coach',
|
|
|
|
- postData: {
|
|
|
|
|
|
+ showImg.value = []
|
|
|
|
+ const imgs: any = []
|
|
|
|
+ for (let i = 0; i < osmdImg.length; i++) {
|
|
|
|
+ const img = await svgtopng(
|
|
|
|
+ osmdImg[i].img,
|
|
|
|
+ osmdImg[i].width,
|
|
|
|
+ osmdImg[i].height
|
|
|
|
+ )
|
|
|
|
+ const fileName =
|
|
|
|
+ route.query.id + state.user.data.userId + +new Date() + '.png'
|
|
|
|
+ const obj = {
|
|
filename: fileName,
|
|
filename: fileName,
|
|
|
|
+ bucketName: 'cloud-coach',
|
|
|
|
+ postData: {
|
|
|
|
+ filename: fileName,
|
|
|
|
+ acl: 'public-read',
|
|
|
|
+ key: fileName
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ const { data } = await getUploadSign(obj, true)
|
|
|
|
+ const dataObj = {
|
|
|
|
+ policy: data.policy,
|
|
|
|
+ signature: data.signature,
|
|
|
|
+ key: fileName,
|
|
|
|
+ KSSAccessKeyId: data.kssAccessKeyId,
|
|
acl: 'public-read',
|
|
acl: 'public-read',
|
|
- key: fileName
|
|
|
|
|
|
+ name: fileName
|
|
}
|
|
}
|
|
|
|
+ const files = base64ToBlob(img)
|
|
|
|
+ const ossUploadUrl = getOssUploadUrl('cloud-coach')
|
|
|
|
+ const imgurl = await onOnlyFileUpload(ossUploadUrl, {
|
|
|
|
+ ...dataObj,
|
|
|
|
+ file: files
|
|
|
|
+ })
|
|
|
|
+ imgs.push(imgurl)
|
|
}
|
|
}
|
|
- const { data } = await getUploadSign(obj, true)
|
|
|
|
-
|
|
|
|
- const dataObj = {
|
|
|
|
- policy: data.policy,
|
|
|
|
- signature: data.signature,
|
|
|
|
- key: fileName,
|
|
|
|
- KSSAccessKeyId: data.kssAccessKeyId,
|
|
|
|
- acl: 'public-read',
|
|
|
|
- name: fileName
|
|
|
|
- }
|
|
|
|
- const files = base64ToBlob(img)
|
|
|
|
- const ossUploadUrl = getOssUploadUrl('cloud-coach')
|
|
|
|
- const imgurl = await onOnlyFileUpload(ossUploadUrl, {
|
|
|
|
- ...dataObj,
|
|
|
|
- file: files
|
|
|
|
- })
|
|
|
|
- showImg = [imgurl]
|
|
|
|
-
|
|
|
|
|
|
+ showImg.value = imgs
|
|
|
|
+ console.log(showImg.value, 'showImg.value')
|
|
loading.value = e.data.loading
|
|
loading.value = e.data.loading
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -362,25 +344,6 @@ export default defineComponent({
|
|
}
|
|
}
|
|
|
|
|
|
window.addEventListener('message', showLoading)
|
|
window.addEventListener('message', showLoading)
|
|
-
|
|
|
|
- // useEventListener(document, 'scroll', evt => {
|
|
|
|
- // const { y } = useWindowScroll()
|
|
|
|
- // if (y.value > 20) {
|
|
|
|
- // background.value = `rgba(255, 255, 255)`
|
|
|
|
- // color.value = 'black'
|
|
|
|
- // postMessage({
|
|
|
|
- // api: 'backIconChange',
|
|
|
|
- // content: { iconStyle: 'black' }
|
|
|
|
- // })
|
|
|
|
- // } else {
|
|
|
|
- // background.value = 'transparent'
|
|
|
|
- // color.value = '#fff'
|
|
|
|
- // postMessage({
|
|
|
|
- // api: 'backIconChange',
|
|
|
|
- // content: { iconStyle: 'white' }
|
|
|
|
- // })
|
|
|
|
- // }
|
|
|
|
- // })
|
|
|
|
})
|
|
})
|
|
onUnmounted(() => {
|
|
onUnmounted(() => {
|
|
window.removeEventListener('message', showLoading)
|
|
window.removeEventListener('message', showLoading)
|
|
@@ -584,32 +547,70 @@ export default defineComponent({
|
|
instrumentName: '',
|
|
instrumentName: '',
|
|
iframeRef: null as any,
|
|
iframeRef: null as any,
|
|
partIndex: 0,
|
|
partIndex: 0,
|
|
- partList: [] as any[]
|
|
|
|
|
|
+ partXmlIndex: 0,
|
|
|
|
+ partList: [] as any[],
|
|
|
|
+ xmlPartList: [] as any[]
|
|
})
|
|
})
|
|
- const osmdPreviewRef = ref()
|
|
|
|
/** 渲染五线谱 */
|
|
/** 渲染五线谱 */
|
|
- const renderStaff = () => {
|
|
|
|
- // staffData.iframeSrc = `${location.origin}/osmd/index.html`
|
|
|
|
- staffData.iframeSrc = `${location.origin}${location.pathname}osmd/index.html`
|
|
|
|
- staffData.musicXml = musicDetail.value?.xmlFileUrl || ''
|
|
|
|
- staffData.partList = musicDetail.value?.background || []
|
|
|
|
- staffData.instrumentName = getInstrumentName(
|
|
|
|
- staffData.partList[staffData.partIndex]?.track
|
|
|
|
- )
|
|
|
|
|
|
+ const renderStaff = async () => {
|
|
|
|
+ try {
|
|
|
|
+ if (musicDetail.value?.xmlFileUrl) {
|
|
|
|
+ // 获取文件
|
|
|
|
+ const res = await umiRequest.get(musicDetail.value?.xmlFileUrl, {
|
|
|
|
+ mode: 'cors'
|
|
|
|
+ })
|
|
|
|
+ const xmlParse = new DOMParser().parseFromString(res, 'text/xml')
|
|
|
|
+ const parts = xmlParse.getElementsByTagName('score-part')
|
|
|
|
+
|
|
|
|
+ const partList: any = []
|
|
|
|
+ for (let i = 0; i < parts.length; i++) {
|
|
|
|
+ const childDom = parts[i].children
|
|
|
|
+ for (let j = 0; j < childDom.length; j++) {
|
|
|
|
+ if (childDom[j].nodeName === 'part-name') {
|
|
|
|
+ partList.push({
|
|
|
|
+ name: childDom[j].textContent,
|
|
|
|
+ value: i
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ staffData.xmlPartList = partList
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // staffData.iframeSrc = `${location.origin}/osmd/index.html`
|
|
|
|
+ staffData.iframeSrc = `${location.origin}${location.pathname}osmd/index.html`
|
|
|
|
+ staffData.musicXml = musicDetail.value?.xmlFileUrl || ''
|
|
|
|
+ staffData.partList = musicDetail.value?.background || []
|
|
|
|
+ staffData.partList.forEach((part: any) => {
|
|
|
|
+ const item = staffData.xmlPartList.find(
|
|
|
|
+ item => item.name === part.track
|
|
|
|
+ )
|
|
|
|
+ if (item) {
|
|
|
|
+ part.index = item.value
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ staffData.partXmlIndex = staffData.partList[0].index || 0
|
|
|
|
+
|
|
|
|
+ staffData.instrumentName = getInstrumentName(
|
|
|
|
+ staffData.partList[staffData.partIndex]?.track
|
|
|
|
+ )
|
|
|
|
+ } catch (error) {
|
|
|
|
+ //
|
|
|
|
+ }
|
|
}
|
|
}
|
|
const musicIframeLoad = () => {
|
|
const musicIframeLoad = () => {
|
|
const iframeRef: any = document.getElementById('staffIframeRef')
|
|
const iframeRef: any = document.getElementById('staffIframeRef')
|
|
if (iframeRef && iframeRef.contentWindow.renderXml) {
|
|
if (iframeRef && iframeRef.contentWindow.renderXml) {
|
|
iframeRef.contentWindow.renderXml(
|
|
iframeRef.contentWindow.renderXml(
|
|
staffData.musicXml,
|
|
staffData.musicXml,
|
|
- staffData.partIndex
|
|
|
|
|
|
+ staffData.partXmlIndex
|
|
)
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
const resetRender = () => {
|
|
const resetRender = () => {
|
|
const iframeRef: any = document.getElementById('staffIframeRef')
|
|
const iframeRef: any = document.getElementById('staffIframeRef')
|
|
if (iframeRef && iframeRef.contentWindow.renderXml) {
|
|
if (iframeRef && iframeRef.contentWindow.renderXml) {
|
|
- iframeRef.contentWindow.resetRender(staffData.partIndex)
|
|
|
|
|
|
+ iframeRef.contentWindow.resetRender(staffData.partXmlIndex)
|
|
staffData.instrumentName = getInstrumentName(
|
|
staffData.instrumentName = getInstrumentName(
|
|
staffData.partList[staffData.partIndex]?.track
|
|
staffData.partList[staffData.partIndex]?.track
|
|
)
|
|
)
|
|
@@ -620,7 +621,8 @@ export default defineComponent({
|
|
const instrumentName = getInstrumentName(item.track)
|
|
const instrumentName = getInstrumentName(item.track)
|
|
return {
|
|
return {
|
|
text: item.track + (instrumentName ? `(${instrumentName})` : ''),
|
|
text: item.track + (instrumentName ? `(${instrumentName})` : ''),
|
|
- value: index
|
|
|
|
|
|
+ value: index,
|
|
|
|
+ xmlValue: item.index
|
|
}
|
|
}
|
|
})
|
|
})
|
|
})
|
|
})
|
|
@@ -694,12 +696,13 @@ export default defineComponent({
|
|
</div>
|
|
</div>
|
|
{/* {musicDetail.value?.musicSheetType !== 'CONCERT' && ( */}
|
|
{/* {musicDetail.value?.musicSheetType !== 'CONCERT' && ( */}
|
|
<div
|
|
<div
|
|
- class={styles.alumCollectItem}
|
|
|
|
|
|
+ class={[
|
|
|
|
+ styles.alumCollectItem,
|
|
|
|
+ showImg.value.length <= 0 ? styles.alumCollectItemActive : ''
|
|
|
|
+ ]}
|
|
onClick={() => {
|
|
onClick={() => {
|
|
- if (showImg.length > 0) {
|
|
|
|
|
|
+ if (showImg.value.length > 0) {
|
|
downloadStatus.value = true
|
|
downloadStatus.value = true
|
|
- } else {
|
|
|
|
- Toast('暂无图片')
|
|
|
|
}
|
|
}
|
|
}}
|
|
}}
|
|
>
|
|
>
|
|
@@ -801,8 +804,8 @@ export default defineComponent({
|
|
</>
|
|
</>
|
|
) : (
|
|
) : (
|
|
<>
|
|
<>
|
|
- {showImg.length > 0 ? (
|
|
|
|
- <img src={showImg[0]} alt="" class={styles.musicImg} />
|
|
|
|
|
|
+ {showImg.value.length > 0 ? (
|
|
|
|
+ <img src={showImg.value[0]} alt="" class={styles.musicImg} />
|
|
) : loading.value ? (
|
|
) : loading.value ? (
|
|
<>
|
|
<>
|
|
<Vue3Lottie
|
|
<Vue3Lottie
|
|
@@ -942,7 +945,7 @@ export default defineComponent({
|
|
<Popup v-model:show={downloadStatus.value} position="bottom" round>
|
|
<Popup v-model:show={downloadStatus.value} position="bottom" round>
|
|
{downloadStatus.value && (
|
|
{downloadStatus.value && (
|
|
<Download
|
|
<Download
|
|
- imgList={JSON.parse(JSON.stringify(showImg))}
|
|
|
|
|
|
+ imgList={JSON.parse(JSON.stringify(showImg.value))}
|
|
musicSheetName={musicDetail.value.musicSheetName}
|
|
musicSheetName={musicDetail.value.musicSheetName}
|
|
/>
|
|
/>
|
|
)}
|
|
)}
|
|
@@ -1063,6 +1066,8 @@ export default defineComponent({
|
|
onConfirm={value => {
|
|
onConfirm={value => {
|
|
staffData.open = false
|
|
staffData.open = false
|
|
staffData.partIndex = value.value
|
|
staffData.partIndex = value.value
|
|
|
|
+ staffData.partXmlIndex = value.xmlValue
|
|
|
|
+ showImg.value = []
|
|
nextTick(() => {
|
|
nextTick(() => {
|
|
resetRender()
|
|
resetRender()
|
|
})
|
|
})
|