|
@@ -13,6 +13,12 @@ export function useIndexPageApi() {
|
|
|
const activeList = ref([])
|
|
const activeList = ref([])
|
|
|
const loading = ref(false)
|
|
const loading = ref(false)
|
|
|
|
|
|
|
|
|
|
+ // 分页相关状态
|
|
|
|
|
+ const exhibitionHasMore = ref(true)
|
|
|
|
|
+ const exhibitionCurrentPage = ref(1)
|
|
|
|
|
+ const activeHasMore = ref(true)
|
|
|
|
|
+ const activeCurrentPage = ref(1)
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 获取轮播图数据
|
|
* 获取轮播图数据
|
|
|
* @param {Object} params - 请求参数
|
|
* @param {Object} params - 请求参数
|
|
@@ -85,11 +91,14 @@ export function useIndexPageApi() {
|
|
|
* @param {number} params.pageNum - 页码,默认1
|
|
* @param {number} params.pageNum - 页码,默认1
|
|
|
* @param {number} params.pageSize - 每页数量,默认5
|
|
* @param {number} params.pageSize - 每页数量,默认5
|
|
|
* @param {number} params.status - 状态,默认1
|
|
* @param {number} params.status - 状态,默认1
|
|
|
|
|
+ * @param {boolean} isLoadMore - 是否为加载更多
|
|
|
*/
|
|
*/
|
|
|
- const getExhibitionList = async (params = {}) => {
|
|
|
|
|
|
|
+ const getExhibitionList = async (params = {}, isLoadMore = false) => {
|
|
|
|
|
+ if (loading.value) return
|
|
|
|
|
+
|
|
|
const defaultParams = {
|
|
const defaultParams = {
|
|
|
- pageNum: 1,
|
|
|
|
|
- pageSize: 5,
|
|
|
|
|
|
|
+ pageNum: isLoadMore ? exhibitionCurrentPage.value : 1,
|
|
|
|
|
+ pageSize: 10,
|
|
|
status: 1,
|
|
status: 1,
|
|
|
...params,
|
|
...params,
|
|
|
}
|
|
}
|
|
@@ -98,13 +107,33 @@ export function useIndexPageApi() {
|
|
|
loading.value = true
|
|
loading.value = true
|
|
|
const response = await museumApi.getExhibitionList(defaultParams)
|
|
const response = await museumApi.getExhibitionList(defaultParams)
|
|
|
console.log('展览列表数据:', response)
|
|
console.log('展览列表数据:', response)
|
|
|
- // 根据接口返回的数据结构设置exhibitionList
|
|
|
|
|
- exhibitionList.value = response.records || response.list || response.data || response || []
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // 获取数据列表
|
|
|
|
|
+ const newData = response.records || response.list || response.data || response || []
|
|
|
|
|
+
|
|
|
|
|
+ // 过滤掉没有 webSite 或 webSiteB 字段的数据
|
|
|
|
|
+ const filteredData = newData.filter((item) => {
|
|
|
|
|
+ return item.webSite || item.webSiteB
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ if (isLoadMore) {
|
|
|
|
|
+ // 加载更多时追加数据
|
|
|
|
|
+ exhibitionList.value = [...exhibitionList.value, ...filteredData]
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 首次加载或刷新时替换数据
|
|
|
|
|
+ exhibitionList.value = filteredData
|
|
|
|
|
+ exhibitionCurrentPage.value = 1
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 判断是否还有更多数据
|
|
|
|
|
+ exhibitionHasMore.value = filteredData.length >= defaultParams.pageSize
|
|
|
|
|
+
|
|
|
return response
|
|
return response
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
console.error('获取展览列表数据失败:', error)
|
|
console.error('获取展览列表数据失败:', error)
|
|
|
- // 如果接口失败,使用默认数据
|
|
|
|
|
- exhibitionList.value = []
|
|
|
|
|
|
|
+ if (!isLoadMore) {
|
|
|
|
|
+ exhibitionList.value = []
|
|
|
|
|
+ }
|
|
|
throw error
|
|
throw error
|
|
|
} finally {
|
|
} finally {
|
|
|
loading.value = false
|
|
loading.value = false
|
|
@@ -117,11 +146,14 @@ export function useIndexPageApi() {
|
|
|
* @param {number} params.pageNum - 页码,默认1
|
|
* @param {number} params.pageNum - 页码,默认1
|
|
|
* @param {number} params.pageSize - 每页数量,默认5
|
|
* @param {number} params.pageSize - 每页数量,默认5
|
|
|
* @param {number} params.status - 状态,默认1
|
|
* @param {number} params.status - 状态,默认1
|
|
|
|
|
+ * @param {boolean} isLoadMore - 是否为加载更多
|
|
|
*/
|
|
*/
|
|
|
- const getActiveList = async (params = {}) => {
|
|
|
|
|
|
|
+ const getActiveList = async (params = {}, isLoadMore = false) => {
|
|
|
|
|
+ if (loading.value) return
|
|
|
|
|
+
|
|
|
const defaultParams = {
|
|
const defaultParams = {
|
|
|
- pageNum: 1,
|
|
|
|
|
- pageSize: 5,
|
|
|
|
|
|
|
+ pageNum: isLoadMore ? activeCurrentPage.value : 1,
|
|
|
|
|
+ pageSize: 10,
|
|
|
status: 1,
|
|
status: 1,
|
|
|
...params,
|
|
...params,
|
|
|
}
|
|
}
|
|
@@ -130,13 +162,28 @@ export function useIndexPageApi() {
|
|
|
loading.value = true
|
|
loading.value = true
|
|
|
const response = await museumApi.getSocialActivityList(defaultParams)
|
|
const response = await museumApi.getSocialActivityList(defaultParams)
|
|
|
console.log('活动列表数据:', response)
|
|
console.log('活动列表数据:', response)
|
|
|
- // 根据接口返回的数据结构设置activeList
|
|
|
|
|
- activeList.value = response.records || response.list || response.data || response || []
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // 获取数据列表
|
|
|
|
|
+ const newData = response.records || response.list || response.data || response || []
|
|
|
|
|
+
|
|
|
|
|
+ if (isLoadMore) {
|
|
|
|
|
+ // 加载更多时追加数据
|
|
|
|
|
+ activeList.value = [...activeList.value, ...newData]
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 首次加载或刷新时替换数据
|
|
|
|
|
+ activeList.value = newData
|
|
|
|
|
+ activeCurrentPage.value = 1
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 判断是否还有更多数据
|
|
|
|
|
+ activeHasMore.value = newData.length >= defaultParams.pageSize
|
|
|
|
|
+
|
|
|
return response
|
|
return response
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
console.error('获取活动列表数据失败:', error)
|
|
console.error('获取活动列表数据失败:', error)
|
|
|
- // 如果接口失败,使用默认数据
|
|
|
|
|
- activeList.value = []
|
|
|
|
|
|
|
+ if (!isLoadMore) {
|
|
|
|
|
+ activeList.value = []
|
|
|
|
|
+ }
|
|
|
throw error
|
|
throw error
|
|
|
} finally {
|
|
} finally {
|
|
|
loading.value = false
|
|
loading.value = false
|
|
@@ -166,6 +213,42 @@ export function useIndexPageApi() {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
|
+ * 加载更多展览数据
|
|
|
|
|
+ */
|
|
|
|
|
+ const loadMoreExhibitions = async (params = {}) => {
|
|
|
|
|
+ if (!exhibitionHasMore.value || loading.value) return
|
|
|
|
|
+
|
|
|
|
|
+ // 先递增页码
|
|
|
|
|
+ exhibitionCurrentPage.value++
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ await getExhibitionList(params, true)
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ // 如果请求失败,回退页码
|
|
|
|
|
+ exhibitionCurrentPage.value--
|
|
|
|
|
+ throw error
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 加载更多活动数据
|
|
|
|
|
+ */
|
|
|
|
|
+ const loadMoreActivities = async (params = {}) => {
|
|
|
|
|
+ if (!activeHasMore.value || loading.value) return
|
|
|
|
|
+
|
|
|
|
|
+ // 先递增页码
|
|
|
|
|
+ activeCurrentPage.value++
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ await getActiveList(params, true)
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ // 如果请求失败,回退页码
|
|
|
|
|
+ activeCurrentPage.value--
|
|
|
|
|
+ throw error
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
* 初始化所有数据
|
|
* 初始化所有数据
|
|
|
* @param {Object} options - 配置选项
|
|
* @param {Object} options - 配置选项
|
|
|
* @param {Object} options.bannerParams - 轮播图请求参数
|
|
* @param {Object} options.bannerParams - 轮播图请求参数
|
|
@@ -196,6 +279,10 @@ export function useIndexPageApi() {
|
|
|
exhibitionList,
|
|
exhibitionList,
|
|
|
activeList,
|
|
activeList,
|
|
|
loading,
|
|
loading,
|
|
|
|
|
+ exhibitionHasMore,
|
|
|
|
|
+ exhibitionCurrentPage,
|
|
|
|
|
+ activeHasMore,
|
|
|
|
|
+ activeCurrentPage,
|
|
|
|
|
|
|
|
// API方法
|
|
// API方法
|
|
|
getBannerData,
|
|
getBannerData,
|
|
@@ -204,5 +291,7 @@ export function useIndexPageApi() {
|
|
|
getActiveList,
|
|
getActiveList,
|
|
|
getInformationDetail,
|
|
getInformationDetail,
|
|
|
initAllData,
|
|
initAllData,
|
|
|
|
|
+ loadMoreExhibitions,
|
|
|
|
|
+ loadMoreActivities,
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|