|  | @@ -1,35 +1,100 @@
 | 
	
		
			
				|  |  | -import { Button, Cell, Image } from 'vant'
 | 
	
		
			
				|  |  | -import { defineComponent } from 'vue'
 | 
	
		
			
				|  |  | +import OEmpty from '@/components/o-empty'
 | 
	
		
			
				|  |  | +import OPopup from '@/components/o-popup'
 | 
	
		
			
				|  |  | +import request from '@/helpers/request'
 | 
	
		
			
				|  |  | +import dayjs from 'dayjs'
 | 
	
		
			
				|  |  | +import { Button, Cell, Image, List } from 'vant'
 | 
	
		
			
				|  |  | +import { defineComponent, onMounted, reactive } from 'vue'
 | 
	
		
			
				|  |  | +import { useRoute } from 'vue-router'
 | 
	
		
			
				|  |  | +import AddInformation from './modal/add-information'
 | 
	
		
			
				|  |  |  import styles from './orchestra-information.module.less'
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  export default defineComponent({
 | 
	
		
			
				|  |  |    name: 'orchestra-information',
 | 
	
		
			
				|  |  |    setup() {
 | 
	
		
			
				|  |  | +    const route = useRoute()
 | 
	
		
			
				|  |  | +    const state = reactive({
 | 
	
		
			
				|  |  | +      addStatus: false,
 | 
	
		
			
				|  |  | +      isLoading: false,
 | 
	
		
			
				|  |  | +      list: [] as any,
 | 
	
		
			
				|  |  | +      listState: {
 | 
	
		
			
				|  |  | +        dataShow: true, // 判断是否有数据
 | 
	
		
			
				|  |  | +        loading: false,
 | 
	
		
			
				|  |  | +        finished: false
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      params: {
 | 
	
		
			
				|  |  | +        page: 1,
 | 
	
		
			
				|  |  | +        rows: 20
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const getList = async () => {
 | 
	
		
			
				|  |  | +      try {
 | 
	
		
			
				|  |  | +        if (state.isLoading) return
 | 
	
		
			
				|  |  | +        state.isLoading = true
 | 
	
		
			
				|  |  | +        const res = await request.post('/api-school/sysNewsInformation/page', {
 | 
	
		
			
				|  |  | +          data: {
 | 
	
		
			
				|  |  | +            ...state.params,
 | 
	
		
			
				|  |  | +            orchestraPhotoAlbumId: route.query.photoId
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +        state.listState.loading = false
 | 
	
		
			
				|  |  | +        const result = res.data || {}
 | 
	
		
			
				|  |  | +        // 处理重复请求数据
 | 
	
		
			
				|  |  | +        if (state.list.length > 0 && result.pageNo === 1) {
 | 
	
		
			
				|  |  | +          return
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        const rows = result.rows || []
 | 
	
		
			
				|  |  | +        state.list = state.list.concat(rows)
 | 
	
		
			
				|  |  | +        state.listState.finished = result.current >= result.pages
 | 
	
		
			
				|  |  | +        state.params.page = result.current + 1
 | 
	
		
			
				|  |  | +        state.listState.dataShow = state.list.length > 0
 | 
	
		
			
				|  |  | +        state.isLoading = false
 | 
	
		
			
				|  |  | +      } catch {
 | 
	
		
			
				|  |  | +        state.listState.dataShow = false
 | 
	
		
			
				|  |  | +        state.listState.finished = true
 | 
	
		
			
				|  |  | +        state.isLoading = false
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    onMounted(() => {
 | 
	
		
			
				|  |  | +      getList()
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  |      return () => (
 | 
	
		
			
				|  |  |        <div class={styles.information}>
 | 
	
		
			
				|  |  | -        <Button icon="plus" block class={styles.addPhone}>
 | 
	
		
			
				|  |  | +        <Button icon="plus" block class={styles.addPhone} onClick={() => (state.addStatus = true)}>
 | 
	
		
			
				|  |  |            添加资讯
 | 
	
		
			
				|  |  |          </Button>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        <Cell center class={styles.cell}>
 | 
	
		
			
				|  |  | -          {{
 | 
	
		
			
				|  |  | -            icon: () => (
 | 
	
		
			
				|  |  | -              <Image
 | 
	
		
			
				|  |  | -                src="https://daya.ks3-cn-beijing.ksyuncs.com/12/1670329682459.png"
 | 
	
		
			
				|  |  | -                class={styles.img}
 | 
	
		
			
				|  |  | -              />
 | 
	
		
			
				|  |  | -            ),
 | 
	
		
			
				|  |  | -            title: () => (
 | 
	
		
			
				|  |  | -              <div>
 | 
	
		
			
				|  |  | -                <div class={[styles.title, 'van-ellipsis']}>2021世界大学排名公布</div>
 | 
	
		
			
				|  |  | -                <div class={[styles.content, 'van-multi-ellipsis--l2']}>
 | 
	
		
			
				|  |  | -                  2021世界大学排名公布,中国64所招音2021世界大学排名公布,中国64所招音
 | 
	
		
			
				|  |  | -                </div>
 | 
	
		
			
				|  |  | -                <div class={styles.time}>2021年10月15日</div>
 | 
	
		
			
				|  |  | -              </div>
 | 
	
		
			
				|  |  | -            )
 | 
	
		
			
				|  |  | -          }}
 | 
	
		
			
				|  |  | -        </Cell>
 | 
	
		
			
				|  |  | +        {state.listState.dataShow ? (
 | 
	
		
			
				|  |  | +          <List
 | 
	
		
			
				|  |  | +            v-model:loading={state.listState.loading}
 | 
	
		
			
				|  |  | +            finished={state.listState.finished}
 | 
	
		
			
				|  |  | +            finishedText=" "
 | 
	
		
			
				|  |  | +            onLoad={getList}
 | 
	
		
			
				|  |  | +            immediateCheck={false}
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +            {state.list.map((item: any, index: number) => (
 | 
	
		
			
				|  |  | +              <Cell center class={styles.cell}>
 | 
	
		
			
				|  |  | +                {{
 | 
	
		
			
				|  |  | +                  icon: () => <Image src={item.coverImage} class={styles.img} />,
 | 
	
		
			
				|  |  | +                  title: () => (
 | 
	
		
			
				|  |  | +                    <div>
 | 
	
		
			
				|  |  | +                      <div class={[styles.title, 'van-ellipsis']}>{item.title}</div>
 | 
	
		
			
				|  |  | +                      <div class={[styles.content, 'van-multi-ellipsis--l2']}>{item.memo}</div>
 | 
	
		
			
				|  |  | +                      <div class={styles.time}>{dayjs(item.createBy).format('YYYY年MM月DD日')}</div>
 | 
	
		
			
				|  |  | +                    </div>
 | 
	
		
			
				|  |  | +                  )
 | 
	
		
			
				|  |  | +                }}
 | 
	
		
			
				|  |  | +              </Cell>
 | 
	
		
			
				|  |  | +            ))}
 | 
	
		
			
				|  |  | +          </List>
 | 
	
		
			
				|  |  | +        ) : (
 | 
	
		
			
				|  |  | +          <OEmpty btnStatus={false} classImgSize="SMALL" tips="暂无资讯" />
 | 
	
		
			
				|  |  | +        )}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <OPopup v-model:modelValue={state.addStatus} style={{ background: '#f8f8f8' }}>
 | 
	
		
			
				|  |  | +          <AddInformation onClose={() => (state.addStatus = false)} />
 | 
	
		
			
				|  |  | +        </OPopup>
 | 
	
		
			
				|  |  |        </div>
 | 
	
		
			
				|  |  |      )
 | 
	
		
			
				|  |  |    }
 |