|  | @@ -1,146 +1,185 @@
 | 
	
		
			
				|  |  | -import request from '@/helpers/request'
 | 
	
		
			
				|  |  | -import {
 | 
	
		
			
				|  |  | -  Cell,
 | 
	
		
			
				|  |  | -  List,
 | 
	
		
			
				|  |  | -  Sticky,
 | 
	
		
			
				|  |  | -  Image,
 | 
	
		
			
				|  |  | -  CellGroup,
 | 
	
		
			
				|  |  | -  Collapse,
 | 
	
		
			
				|  |  | -  CollapseItem
 | 
	
		
			
				|  |  | -} from 'vant'
 | 
	
		
			
				|  |  | -import { defineComponent } from 'vue'
 | 
	
		
			
				|  |  | -import styles from './theory.module.less'
 | 
	
		
			
				|  |  | -import ColSearch from '@/components/col-search'
 | 
	
		
			
				|  |  | -import ColResult from '@/components/col-result'
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -export default defineComponent({
 | 
	
		
			
				|  |  | -  name: 'special',
 | 
	
		
			
				|  |  | -  data() {
 | 
	
		
			
				|  |  | -    const query = this.$route.query
 | 
	
		
			
				|  |  | -    return {
 | 
	
		
			
				|  |  | -      activeNames: [] as any,
 | 
	
		
			
				|  |  | -      list: [],
 | 
	
		
			
				|  |  | -      dataShow: true, // 判断是否有数据
 | 
	
		
			
				|  |  | -      loading: false,
 | 
	
		
			
				|  |  | -      finished: false,
 | 
	
		
			
				|  |  | -      // 1热门资讯,2开屏广告,3闪页管理,4轮播图管理 5按钮管理 6 乐理章节
 | 
	
		
			
				|  |  | -      params: {
 | 
	
		
			
				|  |  | -        search: '',
 | 
	
		
			
				|  |  | -        page: 1,
 | 
	
		
			
				|  |  | -        rows: 20
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -  },
 | 
	
		
			
				|  |  | -  mounted() {
 | 
	
		
			
				|  |  | -    this.getList()
 | 
	
		
			
				|  |  | -  },
 | 
	
		
			
				|  |  | -  methods: {
 | 
	
		
			
				|  |  | -    async getList() {
 | 
	
		
			
				|  |  | -      try {
 | 
	
		
			
				|  |  | -        let params = this.params
 | 
	
		
			
				|  |  | -        const res = await request.post('/api-cms/music/theory/app/page', {
 | 
	
		
			
				|  |  | -          data: {
 | 
	
		
			
				|  |  | -            ...params
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -        })
 | 
	
		
			
				|  |  | -        this.loading = false
 | 
	
		
			
				|  |  | -        const result = res.data || {}
 | 
	
		
			
				|  |  | -        // 处理重复请求数据
 | 
	
		
			
				|  |  | -        if (this.list.length > 0 && result.pageNo === 1) {
 | 
	
		
			
				|  |  | -          return
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        this.list = this.list.concat(result.rows || [])
 | 
	
		
			
				|  |  | -        this.finished = result.pageNo >= result.totalPage
 | 
	
		
			
				|  |  | -        this.params.page = result.pageNo + 1
 | 
	
		
			
				|  |  | -        this.dataShow = this.list.length > 0
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        const tempList: any = this.list
 | 
	
		
			
				|  |  | -        this.list.length > 0 && this.activeNames.push(tempList[0].id)
 | 
	
		
			
				|  |  | -      } catch {
 | 
	
		
			
				|  |  | -        this.dataShow = false
 | 
	
		
			
				|  |  | -        this.finished = true
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -    },
 | 
	
		
			
				|  |  | -    onSearch(val: string) {
 | 
	
		
			
				|  |  | -      this.params.search = val
 | 
	
		
			
				|  |  | -      this.params.page = 1
 | 
	
		
			
				|  |  | -      this.list = []
 | 
	
		
			
				|  |  | -      this.dataShow = true // 判断是否有数据
 | 
	
		
			
				|  |  | -      this.loading = false
 | 
	
		
			
				|  |  | -      this.finished = false
 | 
	
		
			
				|  |  | -      this.getList()
 | 
	
		
			
				|  |  | -    },
 | 
	
		
			
				|  |  | -    onDetail(item: any) {
 | 
	
		
			
				|  |  | -      if (item.linkUrl) {
 | 
	
		
			
				|  |  | -        window.location.href = item.linkUrl
 | 
	
		
			
				|  |  | -      } else {
 | 
	
		
			
				|  |  | -        this.$router.push({
 | 
	
		
			
				|  |  | -          path: 'theoryDetail',
 | 
	
		
			
				|  |  | -          query: {
 | 
	
		
			
				|  |  | -            id: item.id
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -        })
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -  },
 | 
	
		
			
				|  |  | -  render() {
 | 
	
		
			
				|  |  | -    return (
 | 
	
		
			
				|  |  | -      <div class={styles['theory']}>
 | 
	
		
			
				|  |  | -        <Sticky offsetTop={0} position="top" class={'mb12'}>
 | 
	
		
			
				|  |  | -          <ColSearch onSearch={this.onSearch} />
 | 
	
		
			
				|  |  | -        </Sticky>
 | 
	
		
			
				|  |  | -        {this.dataShow ? (
 | 
	
		
			
				|  |  | -          <List
 | 
	
		
			
				|  |  | -            class={styles.videoList}
 | 
	
		
			
				|  |  | -            v-model:loading={this.loading}
 | 
	
		
			
				|  |  | -            finished={this.finished}
 | 
	
		
			
				|  |  | -            finishedText="没有更多了"
 | 
	
		
			
				|  |  | -            immediateCheck={false}
 | 
	
		
			
				|  |  | -            onLoad={this.getList}
 | 
	
		
			
				|  |  | -          >
 | 
	
		
			
				|  |  | -            {this.list.map((parent: any) => (
 | 
	
		
			
				|  |  | -              <Collapse v-model={this.activeNames} border={false}>
 | 
	
		
			
				|  |  | -                <CollapseItem
 | 
	
		
			
				|  |  | -                  title={parent.name}
 | 
	
		
			
				|  |  | -                  name={parent.id}
 | 
	
		
			
				|  |  | -                  center
 | 
	
		
			
				|  |  | -                  v-slots={{
 | 
	
		
			
				|  |  | -                    title: () => (
 | 
	
		
			
				|  |  | -                      <div class={[styles.groupTitle]}>
 | 
	
		
			
				|  |  | -                        {parent.url && (
 | 
	
		
			
				|  |  | -                          <Image
 | 
	
		
			
				|  |  | -                            src={parent.url}
 | 
	
		
			
				|  |  | -                            fit="cover"
 | 
	
		
			
				|  |  | -                            class={styles.groupImg}
 | 
	
		
			
				|  |  | -                          />
 | 
	
		
			
				|  |  | -                        )}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                        <p class={['van-ellipsis', styles.musicTitle]}>
 | 
	
		
			
				|  |  | -                          {parent.name}
 | 
	
		
			
				|  |  | -                        </p>
 | 
	
		
			
				|  |  | -                      </div>
 | 
	
		
			
				|  |  | -                    )
 | 
	
		
			
				|  |  | -                  }}
 | 
	
		
			
				|  |  | -                >
 | 
	
		
			
				|  |  | -                  {parent.newsInformationList.map((item: any) => (
 | 
	
		
			
				|  |  | -                    <Cell
 | 
	
		
			
				|  |  | -                      title={item.title}
 | 
	
		
			
				|  |  | -                      class={styles.cell}
 | 
	
		
			
				|  |  | -                      border={false}
 | 
	
		
			
				|  |  | -                      onClick={() => {
 | 
	
		
			
				|  |  | -                        this.onDetail(item)
 | 
	
		
			
				|  |  | -                      }}
 | 
	
		
			
				|  |  | -                      titleClass={['van-ellipsis', styles.title]}
 | 
	
		
			
				|  |  | -                    />
 | 
	
		
			
				|  |  | -                  ))}
 | 
	
		
			
				|  |  | -                </CollapseItem>
 | 
	
		
			
				|  |  | -              </Collapse>
 | 
	
		
			
				|  |  | -            ))}
 | 
	
		
			
				|  |  | -          </List>
 | 
	
		
			
				|  |  | -        ) : (
 | 
	
		
			
				|  |  | -          <ColResult btnStatus={false} classImgSize="SMALL" tips="暂无内容" />
 | 
	
		
			
				|  |  | -        )}
 | 
	
		
			
				|  |  | -      </div>
 | 
	
		
			
				|  |  | -    )
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -})
 | 
	
		
			
				|  |  | +import request from '@/helpers/request'
 | 
	
		
			
				|  |  | +import {
 | 
	
		
			
				|  |  | +  Cell,
 | 
	
		
			
				|  |  | +  List,
 | 
	
		
			
				|  |  | +  Sticky,
 | 
	
		
			
				|  |  | +  Image,
 | 
	
		
			
				|  |  | +  CellGroup,
 | 
	
		
			
				|  |  | +  Collapse,
 | 
	
		
			
				|  |  | +  CollapseItem
 | 
	
		
			
				|  |  | +} from 'vant'
 | 
	
		
			
				|  |  | +import { defineComponent } from 'vue'
 | 
	
		
			
				|  |  | +import styles from './theory.module.less'
 | 
	
		
			
				|  |  | +import ColSearch from '@/components/col-search'
 | 
	
		
			
				|  |  | +import ColResult from '@/components/col-result'
 | 
	
		
			
				|  |  | +import { postMessage, promisefiyPostMessage } from '@/helpers/native-message'
 | 
	
		
			
				|  |  | +import { state } from '@/state'
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +export default defineComponent({
 | 
	
		
			
				|  |  | +  name: 'special',
 | 
	
		
			
				|  |  | +  data() {
 | 
	
		
			
				|  |  | +    const query = this.$route.query
 | 
	
		
			
				|  |  | +    return {
 | 
	
		
			
				|  |  | +      activeNames: [] as any,
 | 
	
		
			
				|  |  | +      list: [],
 | 
	
		
			
				|  |  | +      dataShow: true, // 判断是否有数据
 | 
	
		
			
				|  |  | +      loading: false,
 | 
	
		
			
				|  |  | +      finished: false,
 | 
	
		
			
				|  |  | +      // 1热门资讯,2开屏广告,3闪页管理,4轮播图管理 5按钮管理 6 乐理章节
 | 
	
		
			
				|  |  | +      params: {
 | 
	
		
			
				|  |  | +        search: '',
 | 
	
		
			
				|  |  | +        page: 1,
 | 
	
		
			
				|  |  | +        rows: 20
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      theory:null as null
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  mounted() {
 | 
	
		
			
				|  |  | +    let theoryStr = sessionStorage.getItem('theoryCache')
 | 
	
		
			
				|  |  | +    if (theoryStr) {
 | 
	
		
			
				|  |  | +      const theory = JSON.parse(theoryStr)
 | 
	
		
			
				|  |  | +      this.theory = theory
 | 
	
		
			
				|  |  | +      let activeNames = theory.activeNames.split(',').map(item => item * 1)
 | 
	
		
			
				|  |  | +      this.activeNames = activeNames
 | 
	
		
			
				|  |  | +      this.params.search = theory.search || ''
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    this.getList()
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  methods: {
 | 
	
		
			
				|  |  | +    async getList() {
 | 
	
		
			
				|  |  | +      try {
 | 
	
		
			
				|  |  | +        let params = this.params
 | 
	
		
			
				|  |  | +        const res = await request.post('/api-cms/music/theory/app/page', {
 | 
	
		
			
				|  |  | +          data: {
 | 
	
		
			
				|  |  | +            ...params
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +        this.loading = false
 | 
	
		
			
				|  |  | +        const result = res.data || {}
 | 
	
		
			
				|  |  | +        // 处理重复请求数据
 | 
	
		
			
				|  |  | +        if (this.list.length > 0 && result.pageNo === 1) {
 | 
	
		
			
				|  |  | +          return
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        this.list = this.list.concat(result.rows || [])
 | 
	
		
			
				|  |  | +        this.finished = result.pageNo >= result.totalPage
 | 
	
		
			
				|  |  | +        this.params.page = result.pageNo + 1
 | 
	
		
			
				|  |  | +        this.dataShow = this.list.length > 0
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        const tempList: any = this.list
 | 
	
		
			
				|  |  | +        if (this.activeNames.length <= 0) {
 | 
	
		
			
				|  |  | +          this.list.length > 0 && this.activeNames.push(tempList[0].id)
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      } catch {
 | 
	
		
			
				|  |  | +        this.dataShow = false
 | 
	
		
			
				|  |  | +        this.finished = true
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      // if(this.theory&&this.theory.scrollTop as never){
 | 
	
		
			
				|  |  | +      //   this.$nextTick(()=>{
 | 
	
		
			
				|  |  | +      //     window.scrollTo(0, this.theory.scrollTop as never)
 | 
	
		
			
				|  |  | +      //   })
 | 
	
		
			
				|  |  | +      //   //
 | 
	
		
			
				|  |  | +      // }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    onSearch(val: string) {
 | 
	
		
			
				|  |  | +      this.params.search = val
 | 
	
		
			
				|  |  | +      this.params.page = 1
 | 
	
		
			
				|  |  | +      this.list = []
 | 
	
		
			
				|  |  | +      this.dataShow = true // 判断是否有数据
 | 
	
		
			
				|  |  | +      this.loading = false
 | 
	
		
			
				|  |  | +      this.finished = false
 | 
	
		
			
				|  |  | +      this.getList()
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    onDetail(item: any) {
 | 
	
		
			
				|  |  | +      // let scrollTop  = document.documentElement.scrollTop || document.body.scrollTop;
 | 
	
		
			
				|  |  | +      // console.log(scrollTop)
 | 
	
		
			
				|  |  | +      // let obj = JSON.stringify({
 | 
	
		
			
				|  |  | +      //   search: this.params.search,
 | 
	
		
			
				|  |  | +      //   activeNames: this.activeNames.join(','),
 | 
	
		
			
				|  |  | +      //   scrollTop:scrollTop
 | 
	
		
			
				|  |  | +      // })
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // sessionStorage.setItem('theoryCache', obj)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      if (item.linkUrl) {
 | 
	
		
			
				|  |  | +        window.location.href = item.linkUrl
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        // this.$router.push({
 | 
	
		
			
				|  |  | +        //   path: 'theoryDetail',
 | 
	
		
			
				|  |  | +        //   query: {
 | 
	
		
			
				|  |  | +        //     id: item.id
 | 
	
		
			
				|  |  | +        //   }
 | 
	
		
			
				|  |  | +        // })
 | 
	
		
			
				|  |  | +        let client = state.platformType==='STUDENT'?'student':'teacher'
 | 
	
		
			
				|  |  | +        postMessage({
 | 
	
		
			
				|  |  | +          api: 'openWebView',
 | 
	
		
			
				|  |  | +          content: {
 | 
	
		
			
				|  |  | +            url: `${location.origin}/${client}/#/theoryDetail?id=${item.id}`,
 | 
	
		
			
				|  |  | +            orientation: 1,
 | 
	
		
			
				|  |  | +            isHideTitle: false
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  render() {
 | 
	
		
			
				|  |  | +    return (
 | 
	
		
			
				|  |  | +      <div class={[styles['theory'],'theory']}>
 | 
	
		
			
				|  |  | +        <Sticky offsetTop={0} position="top" class={'mb12'}>
 | 
	
		
			
				|  |  | +          <ColSearch onSearch={this.onSearch} modelValue={this.params.search} />
 | 
	
		
			
				|  |  | +        </Sticky>
 | 
	
		
			
				|  |  | +        {this.dataShow ? (
 | 
	
		
			
				|  |  | +          <List
 | 
	
		
			
				|  |  | +            class={styles.videoList}
 | 
	
		
			
				|  |  | +            v-model:loading={this.loading}
 | 
	
		
			
				|  |  | +            finished={this.finished}
 | 
	
		
			
				|  |  | +            finishedText="没有更多了"
 | 
	
		
			
				|  |  | +            immediateCheck={false}
 | 
	
		
			
				|  |  | +            onLoad={this.getList}
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +            {this.list.map((parent: any) => (
 | 
	
		
			
				|  |  | +              <Collapse v-model={this.activeNames} border={false}>
 | 
	
		
			
				|  |  | +                <CollapseItem
 | 
	
		
			
				|  |  | +                  title={parent.name}
 | 
	
		
			
				|  |  | +                  name={parent.id}
 | 
	
		
			
				|  |  | +                  center
 | 
	
		
			
				|  |  | +                  v-slots={{
 | 
	
		
			
				|  |  | +                    title: () => (
 | 
	
		
			
				|  |  | +                      <div class={[styles.groupTitle]}>
 | 
	
		
			
				|  |  | +                        {parent.url && (
 | 
	
		
			
				|  |  | +                          <Image
 | 
	
		
			
				|  |  | +                            src={parent.url}
 | 
	
		
			
				|  |  | +                            fit="cover"
 | 
	
		
			
				|  |  | +                            class={styles.groupImg}
 | 
	
		
			
				|  |  | +                          />
 | 
	
		
			
				|  |  | +                        )}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        <p class={['van-ellipsis', styles.musicTitle]}>
 | 
	
		
			
				|  |  | +                          {parent.name}
 | 
	
		
			
				|  |  | +                        </p>
 | 
	
		
			
				|  |  | +                      </div>
 | 
	
		
			
				|  |  | +                    )
 | 
	
		
			
				|  |  | +                  }}
 | 
	
		
			
				|  |  | +                >
 | 
	
		
			
				|  |  | +                  {parent.newsInformationList.map((item: any) => (
 | 
	
		
			
				|  |  | +                    <Cell
 | 
	
		
			
				|  |  | +                      title={item.title}
 | 
	
		
			
				|  |  | +                      class={styles.cell}
 | 
	
		
			
				|  |  | +                      border={false}
 | 
	
		
			
				|  |  | +                      onClick={() => {
 | 
	
		
			
				|  |  | +                        this.onDetail(item)
 | 
	
		
			
				|  |  | +                      }}
 | 
	
		
			
				|  |  | +                      titleClass={['van-ellipsis', styles.title]}
 | 
	
		
			
				|  |  | +                    />
 | 
	
		
			
				|  |  | +                  ))}
 | 
	
		
			
				|  |  | +                </CollapseItem>
 | 
	
		
			
				|  |  | +              </Collapse>
 | 
	
		
			
				|  |  | +            ))}
 | 
	
		
			
				|  |  | +          </List>
 | 
	
		
			
				|  |  | +        ) : (
 | 
	
		
			
				|  |  | +          <ColResult btnStatus={false} classImgSize="SMALL" tips="暂无内容" />
 | 
	
		
			
				|  |  | +        )}
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +    )
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +})
 |