# Setup 文件夹说明

这个文件夹包含了项目中的组合式函数（Composables），用于封装和复用业务逻辑。

## useIndexPageApi.js

首页API请求的组合式函数，提供了轮播图、资讯、展览、活动等数据的获取功能。

### 使用方法

```javascript
import { useIndexPageApi } from '@/setup/useIndexPageApi'

// 在组件中使用
const {
  // 响应式数据
  bannerData,
  newsList,
  exhibitionList,
  activeList,
  loading,

  // API方法
  getBannerData,
  getNewsList,
  getExhibitionList,
  getActiveList,
  initAllData,
} = useIndexPageApi()
```

### API 方法说明

#### 1. getBannerData(params)

获取轮播图数据

**参数：**

- `params.pageNum` - 页码，默认1
- `params.pageSize` - 每页数量，默认10
- `params.status` - 状态，默认1

**使用示例：**

```javascript
// 使用默认参数
getBannerData()

// 传入自定义参数
getBannerData({ pageNum: 1, pageSize: 5, status: 1 })
```

#### 2. getNewsList(params)

获取资讯列表数据

**参数：**

- `params.pageNum` - 页码，默认1
- `params.pageSize` - 每页数量，默认3
- `params.status` - 状态，默认1

#### 3. getExhibitionList(params)

获取展览列表数据

**参数：**

- `params.pageNum` - 页码，默认1
- `params.pageSize` - 每页数量，默认5
- `params.status` - 状态，默认1

#### 4. getActiveList(params)

获取活动列表数据

**参数：**

- `params.pageNum` - 页码，默认1
- `params.pageSize` - 每页数量，默认5
- `params.status` - 状态，默认1

#### 5. initAllData(options)

初始化所有数据（并行请求）

**参数：**

- `options.bannerParams` - 轮播图请求参数
- `options.newsParams` - 资讯请求参数
- `options.exhibitionParams` - 展览请求参数
- `options.activeParams` - 活动请求参数

**使用示例：**

```javascript
// 在 onMounted 中初始化所有数据
onMounted(() => {
  initAllData({
    bannerParams: { pageNum: 1, pageSize: 10 },
    newsParams: { pageNum: 1, pageSize: 3 },
    exhibitionParams: { pageNum: 1, pageSize: 5 },
    activeParams: { pageNum: 1, pageSize: 5 },
  })
})
```

### 响应式数据

- `bannerData` - 轮播图数据数组
- `newsList` - 资讯列表数据数组
- `exhibitionList` - 展览列表数据数组
- `activeList` - 活动列表数据数组
- `loading` - 加载状态

### 特性

1. **参数可配置** - 所有API方法都支持传入动态参数
2. **错误处理** - 内置错误处理和默认数据降级
3. **加载状态** - 提供loading状态管理
4. **并行请求** - initAllData方法支持并行请求提高性能
5. **数据兼容** - 自动适配不同的接口返回数据结构

### 扩展说明

如需添加新的API请求，可以参考现有方法的模式：

```javascript
const getNewApiData = async (params = {}) => {
  const defaultParams = {
    pageNum: 1,
    pageSize: 10,
    ...params,
  }

  try {
    loading.value = true
    const response = await museumApi.newApiMethod(defaultParams)
    // 处理数据...
    return response
  } catch (error) {
    console.error('获取数据失败:', error)
    // 错误处理...
    throw error
  } finally {
    loading.value = false
  }
}
```
