|
@@ -19,6 +19,8 @@ import { useRoute, useRouter } from 'vue-router'
|
|
|
import styles from './index.module.less'
|
|
|
import iconImage from '../images/icon-photo-default.png'
|
|
|
import iconOrchestra from '../images/icon-or.png'
|
|
|
+import OSticky from '@/components/o-sticky'
|
|
|
+import OFullRefresh from '@/components/o-full-refresh'
|
|
|
export default defineComponent({
|
|
|
name: 'photo-detail',
|
|
|
props: {
|
|
@@ -31,6 +33,7 @@ export default defineComponent({
|
|
|
const route = useRoute()
|
|
|
const router = useRouter()
|
|
|
const data = reactive({
|
|
|
+ refreshing: false,
|
|
|
loading: false,
|
|
|
finished: false,
|
|
|
pages: {
|
|
@@ -44,12 +47,17 @@ export default defineComponent({
|
|
|
})
|
|
|
|
|
|
const getList = async () => {
|
|
|
+ if (data.refreshing) {
|
|
|
+ data.pages.page = 1
|
|
|
+ data.finished = false
|
|
|
+ data.list = []
|
|
|
+ }
|
|
|
data.loading = true
|
|
|
try {
|
|
|
const res = await request.post(`${state.platformApi}/orchestraPhotoAlbum/page`, {
|
|
|
data: {
|
|
|
...data.pages,
|
|
|
- orchestraId: data.school.id
|
|
|
+ schoolId: data.school.id
|
|
|
},
|
|
|
hideLoading: true
|
|
|
})
|
|
@@ -64,6 +72,9 @@ export default defineComponent({
|
|
|
data.finished = true
|
|
|
}
|
|
|
data.loading = false
|
|
|
+ setTimeout(() => {
|
|
|
+ data.refreshing = false
|
|
|
+ }, 500)
|
|
|
}
|
|
|
|
|
|
const getSchoolList = async () => {
|
|
@@ -109,84 +120,100 @@ export default defineComponent({
|
|
|
})
|
|
|
|
|
|
return () => (
|
|
|
- <div class={[styles.phoneDetail]}>
|
|
|
- <CellGroup inset class={styles.cellGroup}>
|
|
|
- <Cell class={styles.select} center isLink onClick={() => (data.schoolStatus = true)}>
|
|
|
- {{
|
|
|
- icon: () => <img class={styles.icon} src={iconOrchestra} />,
|
|
|
- title: () => <div class="van-ellipsis">{data.school.name}</div>
|
|
|
- }}
|
|
|
- </Cell>
|
|
|
- </CellGroup>
|
|
|
- {!data.loading && !!data.list.length && (
|
|
|
- <List
|
|
|
- // v-model:loading={data.loading}
|
|
|
- finished={data.finished}
|
|
|
- finishedText="没有更多数据"
|
|
|
- onLoad={getList}
|
|
|
- immediateCheck={false}
|
|
|
- >
|
|
|
- <div class={styles.photoWrap}>
|
|
|
- {data.list.map((item: any, index: number) => (
|
|
|
- <div
|
|
|
- class={styles.photoItem}
|
|
|
- onClick={() => {
|
|
|
- router.push({
|
|
|
- path: '/photo-list',
|
|
|
- query: {
|
|
|
- id: item.id
|
|
|
- }
|
|
|
- })
|
|
|
- }}
|
|
|
- >
|
|
|
- <div
|
|
|
- class={styles.gridImg}
|
|
|
- style={
|
|
|
- item.coverUrl
|
|
|
- ? { backgroundImage: `url(${item.coverUrl})`, backgroundSize: 'cover' }
|
|
|
- : ''
|
|
|
- }
|
|
|
- ></div>
|
|
|
+ <div>
|
|
|
+ <OSticky
|
|
|
+ onGetHeight={(height: number) => {
|
|
|
+ document.documentElement.style.setProperty('--header-height', height + 'px')
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ <OHeader />
|
|
|
+ <CellGroup inset class={styles.cellGroup}>
|
|
|
+ <Cell class={styles.select} center isLink onClick={() => (data.schoolStatus = true)}>
|
|
|
+ {{
|
|
|
+ icon: () => <img class={styles.icon} src={iconOrchestra} />,
|
|
|
+ title: () => <div class="van-ellipsis">{data.school.name}</div>
|
|
|
+ }}
|
|
|
+ </Cell>
|
|
|
+ </CellGroup>
|
|
|
+ </OSticky>
|
|
|
+ <OFullRefresh v-model={data.refreshing} onRefresh={() => getList()}>
|
|
|
+ <div class={[styles.phoneDetail]}>
|
|
|
+ {!data.loading && !!data.list.length && (
|
|
|
+ <List
|
|
|
+ loading={data.loading}
|
|
|
+ finished={data.finished}
|
|
|
+ finishedText="没有更多数据"
|
|
|
+ onLoad={getList}
|
|
|
+ immediateCheck={false}
|
|
|
+ >
|
|
|
+ <div class={styles.photoWrap}>
|
|
|
+ {data.list.map((item: any, index: number) => (
|
|
|
+ <div
|
|
|
+ class={styles.photoItem}
|
|
|
+ onClick={() => {
|
|
|
+ router.push({
|
|
|
+ path: '/photo-list',
|
|
|
+ query: {
|
|
|
+ id: item.id
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ <div
|
|
|
+ class={styles.gridImg}
|
|
|
+ style={
|
|
|
+ item.coverUrl
|
|
|
+ ? { backgroundImage: `url(${item.coverUrl})`, backgroundSize: 'cover' }
|
|
|
+ : ''
|
|
|
+ }
|
|
|
+ ></div>
|
|
|
|
|
|
- <div class={styles.gridName}>{item.name}</div>
|
|
|
- <div class={styles.gridDes}>{item.photoCount}张</div>
|
|
|
+ <div class={styles.gridName}>{item.name}</div>
|
|
|
+ <div class={styles.gridDes}>{item.photoCount}张</div>
|
|
|
+ </div>
|
|
|
+ ))}
|
|
|
</div>
|
|
|
- ))}
|
|
|
- </div>
|
|
|
- </List>
|
|
|
- )}
|
|
|
- {!data.loading && !data.list.length && (
|
|
|
- <div
|
|
|
- class="emptyRootContainer"
|
|
|
- style={{
|
|
|
- minHeight: 'calc(100vh - 1.22667rem)'
|
|
|
- }}
|
|
|
- >
|
|
|
- <OEmpty btnStatus={false} tips="暂无相册" />
|
|
|
- </div>
|
|
|
- )}
|
|
|
+ </List>
|
|
|
+ )}
|
|
|
+ {!data.loading && !data.list.length && (
|
|
|
+ <div
|
|
|
+ class="emptyRootContainer"
|
|
|
+ style={{
|
|
|
+ minHeight: '78%'
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ <OEmpty btnStatus={false} tips="暂无相册" />
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
|
|
|
- <Popup v-model:show={data.schoolStatus} position="bottom" round class={'popupBottomSearch'}>
|
|
|
- <Picker
|
|
|
- columns={data.schoolList}
|
|
|
- columnsFieldNames={{ text: 'name', value: 'id' }}
|
|
|
- onCancel={() => (data.schoolStatus = false)}
|
|
|
- onConfirm={({ selectedValues }: any) => {
|
|
|
- const val = selectedValues[0] || ''
|
|
|
- data.schoolStatus = false
|
|
|
- if (val == data.school?.id) {
|
|
|
- return
|
|
|
- }
|
|
|
- const active = data.schoolList.find((n: any) => n.id == val) || {}
|
|
|
- data.school = active
|
|
|
+ <Popup
|
|
|
+ v-model:show={data.schoolStatus}
|
|
|
+ position="bottom"
|
|
|
+ round
|
|
|
+ class={'popupBottomSearch'}
|
|
|
+ >
|
|
|
+ <Picker
|
|
|
+ columns={data.schoolList}
|
|
|
+ columnsFieldNames={{ text: 'name', value: 'id' }}
|
|
|
+ onCancel={() => (data.schoolStatus = false)}
|
|
|
+ onConfirm={({ selectedValues }: any) => {
|
|
|
+ const val = selectedValues[0] || ''
|
|
|
+ data.schoolStatus = false
|
|
|
+ if (val == data.school?.id) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ const active = data.schoolList.find((n: any) => n.id == val) || {}
|
|
|
+ data.school = active
|
|
|
|
|
|
- data.pages.page = 1
|
|
|
- data.list = []
|
|
|
- data.finished = false
|
|
|
- getList()
|
|
|
- }}
|
|
|
- />
|
|
|
- </Popup>
|
|
|
+ data.pages.page = 1
|
|
|
+ data.list = []
|
|
|
+ data.finished = false
|
|
|
+ getList()
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </Popup>
|
|
|
+ </div>
|
|
|
+ </OFullRefresh>
|
|
|
</div>
|
|
|
)
|
|
|
}
|