|
@@ -23,7 +23,15 @@ export default defineComponent({
|
|
|
showSearchStatus: true,
|
|
|
showPopoverTime: false,
|
|
|
actions: [] as any,
|
|
|
- subjects: [] as any
|
|
|
+ subjects: [] as any,
|
|
|
+ listState: {
|
|
|
+ dataShow: true, // 判断是否有数据
|
|
|
+ loading: false,
|
|
|
+ finished: false,
|
|
|
+ refreshing: false,
|
|
|
+ height: 0 // 页面头部高度,为了处理下拉刷新用的
|
|
|
+ },
|
|
|
+ isClick: false
|
|
|
})
|
|
|
const forms = reactive({
|
|
|
startTime: dayjs().day(1).format('YYYY-MM-DD'),
|
|
@@ -38,21 +46,22 @@ export default defineComponent({
|
|
|
page: 1,
|
|
|
rows: 20
|
|
|
})
|
|
|
- const refreshing = ref(false)
|
|
|
- const loading = ref(false)
|
|
|
- const finished = ref(false)
|
|
|
- const showContact = ref(true)
|
|
|
+ // const loading = ref(false)
|
|
|
+ // const finished = ref(false)
|
|
|
+ // const showContact = ref(true)
|
|
|
const list = ref([])
|
|
|
+
|
|
|
const getList = async () => {
|
|
|
- loading.value = true
|
|
|
try {
|
|
|
- if (refreshing.value) {
|
|
|
+ if (state.isClick) return
|
|
|
+ state.isClick = true
|
|
|
+ if (state.listState.refreshing) {
|
|
|
forms.page = 1
|
|
|
list.value = []
|
|
|
- refreshing.value = false
|
|
|
+ state.listState.refreshing = false
|
|
|
}
|
|
|
+
|
|
|
const { endTime, startTime, ...re } = forms
|
|
|
- //
|
|
|
const res = await request.post(
|
|
|
`${platformApi.value}/musicPracticeRecord/${
|
|
|
globalState.platformType === 'TEACHER' ? 'teacher' : 'school'
|
|
@@ -61,26 +70,26 @@ export default defineComponent({
|
|
|
data: { ...re, endTime: endTime + ' 23:59:59', startTime: startTime + ' 00:00:00' }
|
|
|
}
|
|
|
)
|
|
|
-
|
|
|
- if (list.value.length > 0 && res.data.pages === 1) {
|
|
|
+ state.listState.loading = false
|
|
|
+ state.listState.refreshing = false
|
|
|
+ const result = res.data || {}
|
|
|
+ // 处理重复请求数据
|
|
|
+ if (list.value.length > 0 && result.current === 1) {
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
- forms.page = res.data.current + 1
|
|
|
- list.value = list.value.concat(res.data.rows || [])
|
|
|
- showContact.value = list.value.length > 0
|
|
|
- console.log(showContact.value, ' showContact.value ')
|
|
|
- loading.value = false
|
|
|
-
|
|
|
- finished.value = res.data.current >= res.data.pages
|
|
|
- } catch (e: any) {
|
|
|
- // console.log(e, 'e')
|
|
|
- const message = e.message
|
|
|
- showToast(message)
|
|
|
- showContact.value = false
|
|
|
- finished.value = true
|
|
|
+ list.value = list.value.concat(result.rows || [])
|
|
|
+ state.listState.finished = result.current >= result.pages
|
|
|
+ forms.page = result.current + 1
|
|
|
+ state.listState.dataShow = list.value.length > 0
|
|
|
+ state.isClick = false
|
|
|
+ } catch {
|
|
|
+ state.listState.dataShow = false
|
|
|
+ state.listState.finished = true
|
|
|
+ state.listState.refreshing = false
|
|
|
+ state.isClick = false
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
onMounted(async () => {
|
|
|
await getSubjects()
|
|
|
await getOrchestraList()
|
|
@@ -143,10 +152,11 @@ export default defineComponent({
|
|
|
}
|
|
|
}
|
|
|
const onRefresh = () => {
|
|
|
- finished.value = false
|
|
|
+ state.listState.finished = false
|
|
|
// 重新加载数据
|
|
|
// 将 loading 设置为 true,表示处于加载状态
|
|
|
- loading.value = true
|
|
|
+ state.listState.loading = true
|
|
|
+ console.log(3)
|
|
|
getList()
|
|
|
}
|
|
|
|
|
@@ -174,19 +184,21 @@ export default defineComponent({
|
|
|
forms.sortType = ''
|
|
|
forms.sortTypeName = ''
|
|
|
dropdownItemRef.value?.toggle()
|
|
|
- refreshing.value = true
|
|
|
+ state.listState.refreshing = true
|
|
|
+ console.log(4)
|
|
|
getList()
|
|
|
}
|
|
|
|
|
|
// 搜索
|
|
|
const onSearchConfirm = () => {
|
|
|
dropdownItemRef.value?.toggle()
|
|
|
- refreshing.value = true
|
|
|
+ state.listState.refreshing = true
|
|
|
+ console.log(5)
|
|
|
getList()
|
|
|
}
|
|
|
|
|
|
return () => (
|
|
|
- <div class={[!showContact.value ? 'emptyRootContainer' : '', styles.exerciseRecord]}>
|
|
|
+ <div class={[!state.listState.dataShow ? 'emptyRootContainer' : '', styles.exerciseRecord]}>
|
|
|
<OSticky
|
|
|
position="top"
|
|
|
background="#F8F8F8"
|
|
@@ -304,7 +316,8 @@ export default defineComponent({
|
|
|
class={styles.recordSearch}
|
|
|
onSearch={(val: any) => {
|
|
|
forms.keyword = val
|
|
|
- refreshing.value = true
|
|
|
+ state.listState.refreshing = true
|
|
|
+ console.log(6)
|
|
|
getList()
|
|
|
}}
|
|
|
></OSearch>
|
|
@@ -329,7 +342,8 @@ export default defineComponent({
|
|
|
forms.orchestraId = ''
|
|
|
forms.orchestraName = ''
|
|
|
e.stopPropagation()
|
|
|
- refreshing.value = true
|
|
|
+ state.listState.refreshing = true
|
|
|
+ console.log(8)
|
|
|
getList()
|
|
|
}}
|
|
|
/>
|
|
@@ -345,7 +359,8 @@ export default defineComponent({
|
|
|
forms.subjectId = ''
|
|
|
forms.subjectName = ''
|
|
|
e.stopPropagation()
|
|
|
- refreshing.value = true
|
|
|
+ state.listState.refreshing = true
|
|
|
+ console.log(2)
|
|
|
getList()
|
|
|
}}
|
|
|
/>
|
|
@@ -361,7 +376,8 @@ export default defineComponent({
|
|
|
forms.sortType = ''
|
|
|
forms.sortTypeName = ''
|
|
|
e.stopPropagation()
|
|
|
- refreshing.value = true
|
|
|
+ state.listState.refreshing = true
|
|
|
+ console.log(1)
|
|
|
getList()
|
|
|
}}
|
|
|
/>
|
|
@@ -370,20 +386,19 @@ export default defineComponent({
|
|
|
</div>
|
|
|
</div>
|
|
|
</OSticky>
|
|
|
- {showContact.value ? (
|
|
|
+ {state.listState.dataShow ? (
|
|
|
<OFullRefresh
|
|
|
- v-model:modelValue={refreshing.value}
|
|
|
+ v-model:modelValue={state.listState.refreshing}
|
|
|
onRefresh={onRefresh}
|
|
|
style="min-height: calc(100vh - var(--header-height))"
|
|
|
>
|
|
|
<List
|
|
|
- loading-text=" "
|
|
|
// v-model:loading={loading.value}
|
|
|
- finished={finished.value}
|
|
|
+ finished={state.listState.finished}
|
|
|
style={{
|
|
|
paddingTop: '12px'
|
|
|
}}
|
|
|
- finished-text=" "
|
|
|
+ finishedText=" "
|
|
|
onLoad={getList}
|
|
|
immediateCheck={false}
|
|
|
>
|