|
@@ -61,14 +61,40 @@
|
|
|
<img class="itemImg" src="./imgs/yp.png" alt="" />
|
|
|
<div class="tit">乐谱</div>
|
|
|
</div>
|
|
|
- <!-- <div class="handler-item">
|
|
|
- <img class="itemImg" src="./imgs/jzlx.png" alt="" />
|
|
|
- <div class="tit">节奏练习</div>
|
|
|
+ <div class="handler-item" @click="expandedKnowledgeVisible = true">
|
|
|
+ <img class="itemImg" src="./imgs/kzzs.png" alt="" />
|
|
|
+ <Popover trigger="click" v-model:value="expandedKnowledgeVisible" :offset="10" @click.stop>
|
|
|
+ <template #content>
|
|
|
+ <PopoverMenuItem
|
|
|
+ @click="
|
|
|
+ () => {
|
|
|
+ expandedKnowledgeVisible = false
|
|
|
+ listeningPracticeVisible = true
|
|
|
+ }
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <div class="menuItem">
|
|
|
+ <img src="./imgs/tylx.png" alt="" />
|
|
|
+ <div class="tit">听音练习</div>
|
|
|
+ </div>
|
|
|
+ </PopoverMenuItem>
|
|
|
+ <PopoverMenuItem
|
|
|
+ @click="
|
|
|
+ () => {
|
|
|
+ expandedKnowledgeVisible = false
|
|
|
+ rhythmPracticeVisible = true
|
|
|
+ }
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <div class="menuItem">
|
|
|
+ <img src="./imgs/jzlx.png" alt="" />
|
|
|
+ <div class="tit">节奏练习</div>
|
|
|
+ </div>
|
|
|
+ </PopoverMenuItem>
|
|
|
+ </template>
|
|
|
+ <div class="tit">扩展知识</div>
|
|
|
+ </Popover>
|
|
|
</div>
|
|
|
- <div class="handler-item">
|
|
|
- <img class="itemImg" src="./imgs/tylx.png" alt="" />
|
|
|
- <div class="tit">听音练习</div>
|
|
|
- </div> -->
|
|
|
<div class="handler-item" @click="resourcesListVisible = true">
|
|
|
<img class="itemImg" src="./imgs/zyk.png" alt="" />
|
|
|
<div class="tit">资源库</div>
|
|
@@ -267,6 +293,46 @@
|
|
|
"
|
|
|
/>
|
|
|
</Modal>
|
|
|
+ <Modal
|
|
|
+ :contentStyle="{
|
|
|
+ width: '742px',
|
|
|
+ height: '570px',
|
|
|
+ boxShadow: '0px 2px 10px 0px rgba(0,0,0,0.08)',
|
|
|
+ borderRadius: '16px',
|
|
|
+ border: '1px solid #DEDEDE',
|
|
|
+ padding: '0'
|
|
|
+ }"
|
|
|
+ v-model:visible="listeningPracticeVisible"
|
|
|
+ >
|
|
|
+ <listeningPracticeList
|
|
|
+ @update="handleAddListeningPractice"
|
|
|
+ @close="
|
|
|
+ () => {
|
|
|
+ listeningPracticeVisible = false
|
|
|
+ }
|
|
|
+ "
|
|
|
+ />
|
|
|
+ </Modal>
|
|
|
+ <Modal
|
|
|
+ :contentStyle="{
|
|
|
+ width: '1100px',
|
|
|
+ height: '750px',
|
|
|
+ boxShadow: '0px 2px 10px 0px rgba(0,0,0,0.08)',
|
|
|
+ borderRadius: '16px',
|
|
|
+ border: '1px solid #DEDEDE',
|
|
|
+ padding: '0'
|
|
|
+ }"
|
|
|
+ v-model:visible="rhythmPracticeVisible"
|
|
|
+ >
|
|
|
+ <rhythmPracticeList
|
|
|
+ @update="handleAddRhythmPractice"
|
|
|
+ @close="
|
|
|
+ () => {
|
|
|
+ rhythmPracticeVisible = false
|
|
|
+ }
|
|
|
+ "
|
|
|
+ />
|
|
|
+ </Modal>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -294,6 +360,8 @@ import PopoverMenuItem from "@/components/PopoverMenuItem.vue"
|
|
|
import { ElUpload, ElMessage, type UploadRequestOptions } from "element-plus"
|
|
|
import cloudCoachList from "@/views/components/element/cloudCoachElement/cloudCoachList"
|
|
|
import resourcesList from "@/views/components/element/enjoyElement/resourcesList"
|
|
|
+import listeningPracticeList from "@/views/components/element/listeningPracticeElement/listeningPracticeList"
|
|
|
+import rhythmPracticeList from "@/views/components/element/rhythmPracticeElement/rhythmPracticeList"
|
|
|
import fileUpload from "@/utils/oss-file-upload"
|
|
|
import usePptWork from "@/store/pptWork"
|
|
|
|
|
@@ -326,7 +394,9 @@ const {
|
|
|
createVideoElement,
|
|
|
createAudioElement,
|
|
|
createCloudCoachElement,
|
|
|
- createEnjoyElement
|
|
|
+ createEnjoyElement,
|
|
|
+ createListeningPracticeElement,
|
|
|
+ createRhythmPracticeElement
|
|
|
} = useCreateElement()
|
|
|
|
|
|
const insertImageElement = (files: FileList) => {
|
|
@@ -345,6 +415,9 @@ const shapeMenuVisible = ref(false)
|
|
|
const cloudCoachVisible = ref(false)
|
|
|
const resourcesListVisible = ref(false)
|
|
|
const moreToolsVisible = ref(false)
|
|
|
+const expandedKnowledgeVisible = ref(false)
|
|
|
+const listeningPracticeVisible = ref(false)
|
|
|
+const rhythmPracticeVisible = ref(false)
|
|
|
|
|
|
// 音视频
|
|
|
function handleUpload(fileData: UploadRequestOptions) {
|
|
@@ -371,6 +444,16 @@ function handleCloudCoach(id: string, name: string) {
|
|
|
createCloudCoachElement(id, name)
|
|
|
cloudCoachVisible.value = false
|
|
|
}
|
|
|
+// 处理听音练习创建
|
|
|
+function handleAddListeningPractice(item: Record<string, any>) {
|
|
|
+ createListeningPracticeElement(item.code, item.img, item.name)
|
|
|
+ listeningPracticeVisible.value = false
|
|
|
+}
|
|
|
+// 处理节奏练习
|
|
|
+function handleAddRhythmPractice(value: string) {
|
|
|
+ createRhythmPracticeElement(value)
|
|
|
+ rhythmPracticeVisible.value = false
|
|
|
+}
|
|
|
// 处理资源创建
|
|
|
function handleResources(item: Record<string, any>) {
|
|
|
if (item.type === "SONG") {
|