Browse Source

修改声部

lex 1 year ago
parent
commit
8987b966ae

+ 1 - 1
public/version.json

@@ -1 +1 @@
-{ "version": 1710320157028 }
+{"version":1710759394958}

+ 7 - 0
src/api/user.ts

@@ -70,3 +70,10 @@ export const suggestMessageUnread = (params?: any) => {
 export const api_musicSheetDetail = (data: any) => {
   return request.get(`/edu-app/musicSheet/detail/${data}`);
 };
+
+/** 获取乐器列表 */
+export const api_musicalInstrumentList = (data: any) => {
+  return request.post('/edu-app/musicalInstrument/list', {
+    data
+  });
+};

+ 33 - 1
src/store/modules/catchData.ts

@@ -1,12 +1,18 @@
 import { defineStore } from 'pinia';
 import { store } from '@/store';
-import { getSubjectList, getSubjectList2, getCategories } from '@/api/user';
+import {
+  getSubjectList,
+  getSubjectList2,
+  getCategories,
+  api_musicalInstrumentList
+} from '@/api/user';
 
 export const useCatchStore = defineStore('catch-store', {
   state: () => ({
     bookVersionList: [] as any[], // 其它类型
     musicTypeList: [] as any[], // 乐谱分类
     subjectList: [] as any[], // 声部列表,
+    musicInstrumentList: [] as any[], // 乐器列表,
     subjectInstruemnts: [] as any[] // 乐器列表,
   }),
   getters: {
@@ -16,6 +22,9 @@ export const useCatchStore = defineStore('catch-store', {
     getMusicCategories(): any[] {
       return this.musicTypeList;
     },
+    getMusicInstruments(): any[] {
+      return this.musicInstrumentList;
+    },
     getAllMusicCategories(): any[] {
       return [
         {
@@ -62,6 +71,9 @@ export const useCatchStore = defineStore('catch-store', {
     setSubjectInstruemnts(subjects: any[]) {
       this.subjectInstruemnts = subjects;
     },
+    setMusicInstruments(instruments: any[]) {
+      this.musicInstrumentList = instruments;
+    },
     /**
      * 判断是否有声部数据,如不存在则获取声部列表
      * @returns Promise
@@ -148,6 +160,26 @@ export const useCatchStore = defineStore('catch-store', {
       } catch (e) {
         return Promise.reject(e);
       }
+    },
+    /**
+     * 获取乐器列表
+     * @returns Promise
+     */
+    async getMusicInstrument() {
+      try {
+        // 判断是否存在声部数据
+        if (this.getMusicInstruments && this.getMusicInstruments.length > 0) {
+          return Promise.resolve();
+        }
+        const { data } = await api_musicalInstrumentList({
+          enableFlag: true
+        });
+        console.log(data, 'data');
+        this.setMusicInstruments(data || []);
+        return Promise.resolve();
+      } catch (e) {
+        return Promise.reject(e);
+      }
     }
   }
 });

+ 28 - 23
src/views/home/modals/subject-modal/index.tsx

@@ -1,6 +1,6 @@
 import { defineComponent, onMounted, ref } from 'vue';
 import styles from './index.module.less';
-import { NButton, NSpace } from 'naive-ui';
+import { NButton, NScrollbar, NSpace } from 'naive-ui';
 import { useCatchStore } from '/src/store/modules/catchData';
 import iconSelect from '../../../prepare-lessons/images/icon-select.png';
 
@@ -21,8 +21,9 @@ export default defineComponent({
       emit('confirm', item);
     };
     onMounted(async () => {
-      await catchStore.getSubjects();
-      subjectList.value = catchStore.getSubjectList;
+      // await catchStore.getSubjects();
+      await catchStore.getMusicInstrument();
+      subjectList.value = catchStore.getMusicInstruments;
       if (subjectList.value.length > 0) {
         selectSubjectId.value = subjectList.value[0].id;
       }
@@ -34,28 +35,32 @@ export default defineComponent({
           <span>(勾选后则对应乐器下的课件内容将被当前课件内容全部替换)</span>
         </div> */}
 
-        <div class={styles.subjectList}>
-          {subjectList.value.map((subject: any) => (
-            <div
-              class={[
-                styles.subjectItem,
-                selectSubjectId.value === subject.id ? styles.subjectSelect : ''
-              ]}
-              onClick={() => {
-                selectSubjectId.value = subject.id;
-              }}>
-              <div class={styles.imgSection}>
-                <img src={subject.img} />
+        <NScrollbar style={{ maxHeight: '60vh' }}>
+          <div class={styles.subjectList}>
+            {subjectList.value.map((subject: any) => (
+              <div
+                class={[
+                  styles.subjectItem,
+                  selectSubjectId.value === subject.id
+                    ? styles.subjectSelect
+                    : ''
+                ]}
+                onClick={() => {
+                  selectSubjectId.value = subject.id;
+                }}>
+                <div class={styles.imgSection}>
+                  <img src={subject.img} />
 
-                {selectSubjectId.value === subject.id && (
-                  <img src={iconSelect} class={styles.iconSelect} />
-                )}
-              </div>
+                  {selectSubjectId.value === subject.id && (
+                    <img src={iconSelect} class={styles.iconSelect} />
+                  )}
+                </div>
 
-              <p class={styles.subjectName}>{subject.name}</p>
-            </div>
-          ))}
-        </div>
+                <p class={styles.subjectName}>{subject.name}</p>
+              </div>
+            ))}
+          </div>
+        </NScrollbar>
 
         <NSpace class={styles.btnGroupModal} justify="center">
           <NButton round onClick={() => emit('close')}>

+ 32 - 31
src/views/prepare-lessons/model/subject-sync/index.tsx

@@ -1,6 +1,6 @@
 import { defineComponent, onMounted, ref } from 'vue';
 import styles from './index.module.less';
-import { NButton, NSpace, useMessage } from 'naive-ui';
+import { NButton, NScrollbar, NSpace, useMessage } from 'naive-ui';
 import { useCatchStore } from '/src/store/modules/catchData';
 import iconSelect from '../../images/icon-select.png';
 import { usePrepareStore } from '/src/store/modules/prepareLessons';
@@ -64,9 +64,8 @@ export default defineComponent({
     };
     onMounted(async () => {
       // 获取教材分类列表
-      await catchStore.getSubjects();
-
-      subjectList.value = catchStore.getSubjectList;
+      await catchStore.getMusicInstrument();
+      subjectList.value = catchStore.getMusicInstruments;
       // const teachingSubjectList = prepareStore.getSubjectList; // 教材自带声部;
       // const tempSubjectList: any = [];
       // baseAllSubjectList.forEach((subject: any) => {
@@ -90,35 +89,37 @@ export default defineComponent({
           <span>(勾选后则对应乐器下的课件内容将被当前课件内容全部替换)</span>
         </div> */}
 
-        <div class={styles.subjectList}>
-          {subjectList.value.map((subject: any) => (
-            <div
-              class={[
-                styles.subjectItem,
-                selectSubjectIds.value.includes(subject.id)
-                  ? styles.subjectSelect
-                  : ''
-              ]}
-              onClick={() => {
-                if (selectSubjectIds.value.includes(subject.id)) {
-                  const index = selectSubjectIds.value.indexOf(subject.id);
-                  selectSubjectIds.value.splice(index, 1);
-                } else {
-                  selectSubjectIds.value.push(subject.id);
-                }
-              }}>
-              <div class={styles.imgSection}>
-                <img src={subject.img} />
+        <NScrollbar style={{ maxHeight: '60vh' }}>
+          <div class={styles.subjectList}>
+            {subjectList.value.map((subject: any) => (
+              <div
+                class={[
+                  styles.subjectItem,
+                  selectSubjectIds.value.includes(subject.id)
+                    ? styles.subjectSelect
+                    : ''
+                ]}
+                onClick={() => {
+                  if (selectSubjectIds.value.includes(subject.id)) {
+                    const index = selectSubjectIds.value.indexOf(subject.id);
+                    selectSubjectIds.value.splice(index, 1);
+                  } else {
+                    selectSubjectIds.value.push(subject.id);
+                  }
+                }}>
+                <div class={styles.imgSection}>
+                  <img src={subject.img} />
 
-                {selectSubjectIds.value.includes(subject.id) && (
-                  <img src={iconSelect} class={styles.iconSelect} />
-                )}
-              </div>
+                  {selectSubjectIds.value.includes(subject.id) && (
+                    <img src={iconSelect} class={styles.iconSelect} />
+                  )}
+                </div>
 
-              <p class={styles.subjectName}>{subject.name}</p>
-            </div>
-          ))}
-        </div>
+                <p class={styles.subjectName}>{subject.name}</p>
+              </div>
+            ))}
+          </div>
+        </NScrollbar>
 
         <NSpace class={styles.btnGroupModal} justify="center">
           <NButton round onClick={() => emit('close')}>

+ 2 - 2
vite.config.ts

@@ -23,8 +23,8 @@ function resolve(dir: string) {
 }
 // https://vitejs.dev/config/
 // https://github.com/vitejs/vite/issues/1930 .env
-// const proxyUrl = 'https://dev.kt.colexiu.com/';
-const proxyUrl = 'https://test.kt.colexiu.com';
+const proxyUrl = 'https://dev.kt.colexiu.com/';
+// const proxyUrl = 'https://test.kt.colexiu.com';
 // const proxyUrl = 'http://192.168.3.14:7989';
 const now = new Date().getTime();
 export default defineConfig(() => {