瀏覽代碼

更新优化

lex 2 年之前
父節點
當前提交
3c3f4b1609

+ 26 - 0
src/helpers/hooks.ts

@@ -0,0 +1,26 @@
+// 搜索关键字
+export const SubjectEnum = {
+  SEARCH: 'music-songbook-subject',
+  ALBUM: 'music-album-subject',
+  MUSIC: 'music-subject'
+}
+/**
+ * 获取声部编号 | 保存声部编号
+ */
+export const useSubjectId = (
+  key: string,
+  value?: any,
+  type = 'get' as 'get' | 'set'
+) => {
+  // 判断是否在关键字
+  console.log(key, value, type)
+  if (!key) return ''
+  if (type === 'get') {
+    let subject = localStorage.getItem(key)
+    subject = subject ? JSON.parse(subject) : { name: '', id: '' }
+    return subject
+  } else {
+    localStorage.setItem(key, value)
+    return ''
+  }
+}

+ 3 - 2
src/views/music/album-detail/index.tsx

@@ -193,7 +193,8 @@ export default defineComponent({
                 onDetail={(item: any) => {
                   if (onItemClick === noop || !onItemClick) {
                     musicBuy(item, () => {}, {
-                      albumId: route.params.id
+                      albumId: route.params.id,
+                      albumName: albumDetail.value?.albumName
                     })
                   } else {
                     onItemClick(item)
@@ -202,7 +203,7 @@ export default defineComponent({
               />
 
               {rows.value && rows.value.length <= 0 && (
-                <ColResult btnStatus={false} tips="暂无曲目列表" />
+                <ColResult btnStatus={false} tips="暂无曲目" />
               )}
             </div>
 

+ 24 - 6
src/views/music/album/index.tsx

@@ -9,6 +9,7 @@ import ColResult from '@/components/col-result'
 import styles from './index.module.less'
 import { state } from '@/state'
 import SelectSubject from '../search/select-subject'
+import { SubjectEnum, useSubjectId } from '@/helpers/hooks'
 
 export default defineComponent({
   name: 'Album',
@@ -33,13 +34,17 @@ export default defineComponent({
     // if (state.platformType === 'TEACHER') {
     tempParams.myself = false
     // }
-    console.log({ ...defauleParams })
+    // console.log({ ...defauleParams })
+    if (!hideSearch) {
+      const getSubject: any = useSubjectId(SubjectEnum.ALBUM)
+      tempParams.subjectIds = getSubject.id
+    }
     const params = reactive({
       search: (route.query.search as string) || '',
       albumTagIds: route.query.tagids || '',
       page: 1,
-      ...tempParams,
-      ...defauleParams
+      ...defauleParams,
+      ...tempParams
     })
     const data = ref<any>(null)
     const loading = ref(false)
@@ -97,6 +102,14 @@ export default defineComponent({
       subject.id = item.id
       subject.name = item.name
       data.value = null
+      useSubjectId(
+        SubjectEnum.ALBUM,
+        JSON.stringify({
+          id: item.id,
+          name: item.name
+        }),
+        'set'
+      )
       FetchList()
       subject.show = false
     }
@@ -107,10 +120,11 @@ export default defineComponent({
       onComfirmSubject
     })
 
+    const getSubject: any = useSubjectId(SubjectEnum.ALBUM)
     const subject = reactive({
       show: false,
-      name: '全部声部',
-      id: ''
+      name: getSubject.name || '全部声部',
+      id: getSubject.id || ''
     })
 
     return () => {
@@ -187,7 +201,11 @@ export default defineComponent({
             onClose={() => (subject.show = false)}
             onClosed={() => (subject.show = false)}
           >
-            <SelectSubject isReset onComfirm={onComfirmSubject} />
+            <SelectSubject
+              isReset
+              searchParams={subject}
+              onComfirm={onComfirmSubject}
+            />
           </Popup>
         </>
       )

+ 6 - 1
src/views/music/component/song/index.module.less

@@ -22,7 +22,7 @@
     }
     .tag {
       flex-shrink: 0;
-      padding: 2px 4px;
+      padding: 2px 4px 0;
       border-radius: 4px;
     }
     .user {
@@ -112,6 +112,11 @@
   padding-top: 23px;
   padding-bottom: 23px;
   margin-bottom: 10px;
+  .tag {
+    flex-shrink: 0;
+    padding: 2px 4px 0;
+    border-radius: 4px;
+  }
 }
 
 .shareIcon {

+ 1 - 1
src/views/music/component/song/index.tsx

@@ -239,7 +239,7 @@ export default defineComponent({
               size="large"
               title={'小酷Ai练习'}
               isLink
-              style={{ marginBottom: '30px' }}
+              style={{ marginBottom: '100px' }}
               onClick={() => {
                 isMore.value = false
                 emit('detail', moreData.value)

+ 25 - 6
src/views/music/list/index.tsx

@@ -10,6 +10,7 @@ import styles from './index.module.less'
 import { getRandomKey, musicBuy } from '../music'
 import { state } from '@/state'
 import SelectSubject from '../search/select-subject'
+import { SubjectEnum, useSubjectId } from '@/helpers/hooks'
 
 const noop = () => {}
 
@@ -43,12 +44,18 @@ export default defineComponent({
       tempParams.platform =
         state.platformType === 'STUDENT' ? 'ios-student' : 'ios-teacher'
     }
+    console.log(hideSearch, '1111')
+    if (!hideSearch) {
+      const getSubject: any = useSubjectId(SubjectEnum.MUSIC)
+      tempParams.subjectIds = getSubject.id
+    }
+    //
     const params = reactive({
       search: (route.query.search as string) || '',
       musicTagIds: route.query.tagids || '',
       page: 1,
-      ...tempParams,
-      ...defauleParams
+      ...defauleParams,
+      ...tempParams
     })
     const data = ref<any>(null)
     const loading = ref(false)
@@ -112,14 +119,22 @@ export default defineComponent({
       subject.id = item.id
       subject.name = item.name
       data.value = null
+      useSubjectId(
+        SubjectEnum.MUSIC,
+        JSON.stringify({
+          id: item.id,
+          name: item.name
+        }),
+        'set'
+      )
       FetchList()
       subject.show = false
     }
-
+    const getSubject: any = useSubjectId(SubjectEnum.MUSIC)
     const subject = reactive({
       show: false,
-      name: '全部声部',
-      id: ''
+      name: getSubject.name || '全部声部',
+      id: getSubject.id || ''
     })
 
     expose({
@@ -213,7 +228,11 @@ export default defineComponent({
           onClose={() => (subject.show = false)}
           onClosed={() => (subject.show = false)}
         >
-          <SelectSubject isReset onComfirm={onComfirmSubject} />
+          <SelectSubject
+            isReset
+            searchParams={subject}
+            onComfirm={onComfirmSubject}
+          />
         </Popup>
       </>
     )

+ 20 - 5
src/views/music/search/header.tsx

@@ -14,6 +14,7 @@ import classNames from 'classnames'
 import SelectTag from './select-tag'
 import { getRandomKey, musicBuy } from '../music'
 import SelectSubject from './select-subject'
+import { SubjectEnum, useSubjectId } from '@/helpers/hooks'
 
 export const mitter = mitt()
 
@@ -33,11 +34,12 @@ export default defineComponent({
     const activeTab = ref('songe')
 
     onBeforeRouteUpdate(() => {
+      const getSubject: any = useSubjectId(SubjectEnum.SEARCH)
+      subject.name = getSubject.name || '全部声部'
+      subject.id = getSubject.id
       if (route.path === '/music-songbook/search') {
         keyword.value = ''
         tagids.value = ''
-        subject.name = '全部声部'
-        subject.id = ''
         activeTab.value = 'songe'
         try {
           selectTagRef.value?.resetTags?.()
@@ -76,16 +78,25 @@ export default defineComponent({
       // console.log('onSort', item)
       subject.name = item.name
       subject.id = item.id
+      useSubjectId(
+        SubjectEnum.SEARCH,
+        JSON.stringify({
+          id: item.id,
+          name: item.name
+        }),
+        'set'
+      )
       mitter.emit('confirmSubject', subject)
       subject.show = false
     }
 
     onMounted(() => {})
 
+    const getSubject: any = useSubjectId(SubjectEnum.SEARCH)
     const subject = reactive({
       show: false,
-      name: '全部声部',
-      id: ''
+      name: getSubject.name || '全部声部',
+      id: getSubject.id || ''
     })
     return () => {
       return (
@@ -184,7 +195,11 @@ export default defineComponent({
             onClose={() => (subject.show = false)}
             onClosed={() => (subject.show = false)}
           >
-            <SelectSubject isReset onComfirm={onComfirmSubject} />
+            <SelectSubject
+              isReset
+              searchParams={subject}
+              onComfirm={onComfirmSubject}
+            />
           </Popup>
         </div>
       )

+ 5 - 1
src/views/music/search/index.tsx

@@ -6,6 +6,7 @@ import styles from './index.module.less'
 import { useRoute, useRouter } from 'vue-router'
 import { getRandomKey, musicBuy } from '../music'
 import { mitter } from './header'
+import { SubjectEnum, useSubjectId } from '@/helpers/hooks'
 
 export default defineComponent({
   name: 'MusicSearch',
@@ -21,6 +22,9 @@ export default defineComponent({
     const words = useLocalStorage<string[]>('music-search', [])
     const activeTab = ref('songe')
 
+    const getSubject: any = useSubjectId(SubjectEnum.SEARCH)
+    subject.value = getSubject.id
+
     const onSearch = val => {
       keyword.value = val
       const indexOf = words.value.indexOf(val)
@@ -66,7 +70,7 @@ export default defineComponent({
     onUnmounted(() => {
       mitter.off('changeTab', changeTab)
       mitter.off('search', onSearch)
-      mitter.off('confirm', onComfirm) 
+      mitter.off('confirm', onComfirm)
       mitter.off('confirmSubject', onConfirmSubject)
     })
 

+ 13 - 0
src/views/music/search/select-subject.tsx

@@ -3,6 +3,7 @@ import styles from './select-subject.module.less'
 import { Tag, Button, Sticky } from 'vant'
 import { state } from '@/state'
 import request from '@/helpers/request'
+import { SubjectEnum, useSubjectId } from '@/helpers/hooks'
 
 export default defineComponent({
   name: 'selectSubject',
@@ -11,6 +12,14 @@ export default defineComponent({
       type: Boolean,
       default: false
     },
+    searchParams: {
+      type: Object,
+      // eslint-disable-next-line vue/require-valid-default-prop
+      default: {
+        name: '',
+        id: ''
+      }
+    },
     onComfirm: {
       type: Function,
       default: (item: any) => {}
@@ -28,6 +37,10 @@ export default defineComponent({
     }
   },
   mounted() {
+    this.subject = {
+      name: this.searchParams.name || '全部声部',
+      id: this.searchParams.id || ''
+    }
     this.getList()
   },
   methods: {

+ 5 - 0
src/views/music/songbook/album.tsx

@@ -6,6 +6,7 @@ import styles from './index.module.less'
 import classNames from 'classnames'
 import { useRoute, useRouter } from 'vue-router'
 import { state as tempState } from '@/state'
+import { SubjectEnum, useSubjectId } from '@/helpers/hooks'
 
 export default defineComponent({
   name: 'Songbook',
@@ -23,6 +24,10 @@ export default defineComponent({
     // if (tempState.platformType === 'TEACHER') {
     params.myself = false
     // }
+    const getSubject: any = useSubjectId(SubjectEnum.SEARCH)
+    if (getSubject) {
+      params.subjectIds = getSubject.id
+    }
     const { isLoading, state } = useAsyncState(
       request.post(`${apiSuffix}/music/album/list`, {
         data: {

+ 5 - 0
src/views/music/songbook/list.tsx

@@ -8,6 +8,7 @@ import { musicBuy } from '../music'
 import { useRoute, useRouter } from 'vue-router'
 import ColResult from '@/components/col-result'
 import { state as tempState } from '@/state'
+import { SubjectEnum, useSubjectId } from '@/helpers/hooks'
 
 export default defineComponent({
   name: 'Songbook',
@@ -26,6 +27,10 @@ export default defineComponent({
     // if (tempState.platformType === 'TEACHER') {
     params.myself = false
     // }
+    const getSubject: any = useSubjectId(SubjectEnum.SEARCH)
+    if (getSubject) {
+      params.subjectIds = getSubject.id
+    }
     const { isLoading, state } = useAsyncState(
       request.post(`${apiSuffix}/music/sheet/list`, {
         data: {