hookehuyr

feat: 统一 Mock 数据开关配置

创建统一的配置文件 src/config/app.js 管理 Mock 开关

变更内容:
- 新增 src/config/app.js 统一配置文件
- 更新 8 个页面使用统一的 USE_MOCK_DATA 配置:
  - src/pages/material-list/index.vue
  - src/pages/feedback-list/index.vue
  - src/pages/message/index.vue
  - src/pages/week-hot-material/index.vue
  - src/pages/favorites/index.vue
  - src/pages/plan/index.vue
  - src/pages/search/index.vue
  - src/pages/product-center/index.vue

收益:
- 便于开发和测试环境的 Mock 数据切换
- 统一代码风格,提升可维护性
- 符合 DRY 原则

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
/**
* 应用配置
*
* @description 应用的全局配置,包括 Mock 数据开关等
* @module config/app
*/
/**
* Mock 数据开关
*
* @description 统一控制是否使用 Mock 数据
* - 开发环境可设置为 true 进行前端开发测试
* - 生产环境必须设置为 false 使用真实 API
*
* @type {boolean}
* @default false
*
* @example
* // 开启 Mock 数据(开发环境)
* USE_MOCK_DATA = true
*
* // 关闭 Mock 数据(生产环境)
* USE_MOCK_DATA = false
*/
export const USE_MOCK_DATA = false
/**
* 根据 NODE_ENV 自动判断是否使用 Mock
*
* @description 如果希望在开发环境自动开启 Mock,
* 可以使用以下方式:
*
* @example
* import { USE_MOCK_DATA_DEV } from '@/config/app'
* const USE_MOCK_DATA = USE_MOCK_DATA_DEV
*/
export const USE_MOCK_DATA_DEV = process.env.NODE_ENV === 'development'
/**
* API 请求基础配置
*/
export const API_CONFIG = {
/** 请求超时时间(毫秒) */
timeout: 10000,
/** 是否显示请求日志 */
showRequestLog: process.env.NODE_ENV === 'development',
/** 是否显示错误提示 */
showErrorToast: true,
}
/**
* 应用功能开关
*/
export const FEATURE_FLAGS = {
/** 是否启用计划书功能 */
ENABLE_PLAN: true,
/** 是否启用收藏功能 */
ENABLE_FAVORITE: true,
/** 是否启用消息功能 */
ENABLE_MESSAGE: true,
/** 是否启用反馈功能 */
ENABLE_FEEDBACK: true,
}
......@@ -71,9 +71,10 @@ import ListItemActions from '@/components/list/ListItemActions/index.vue'
import { listAPI, delAPI } from '@/api/favorite'
import { mockFavoriteListAPI } from '@/utils/mockData'
import eventBus, { Events } from '@/utils/eventBus'
import { USE_MOCK_DATA } from '@/config/app'
// ⚠️ MOCK 数据开关 - 开发环境使用 mock 数据,生产环境使用真实 API
const USE_MOCK_DATA = process.env.NODE_ENV === 'development'
// ⚠️ MOCK 数据开关 - 统一从 @/config/app 导入
// const USE_MOCK_DATA = process.env.NODE_ENV === 'development'
const { viewFile } = useFileOperation()
......
......@@ -96,10 +96,10 @@ import { listAPI } from '@/api/feedback'
import { mockFeedbackListAPI } from '@/utils/mockData'
import eventBus, { Events } from '@/utils/eventBus'
import { optimizeImageUrl } from '@/utils/tools'
import { USE_MOCK_DATA } from '@/config/app'
// ⚠️ MOCK 数据开关 - 开发环境使用 mock 数据,生产环境使用真实 API
// ⚠️ MOCK 数据开关 - 统一从 @/config/app 导入
// const USE_MOCK_DATA = process.env.NODE_ENV === 'development'
const USE_MOCK_DATA = false
const go = useGo()
......
......@@ -123,10 +123,10 @@ import { fileListAPI } from '@/api/file'
import { mockFileListAPI } from '@/utils/mockData'
import { useCollectOperation } from '@/composables/useCollectOperation'
import Taro from '@tarojs/taro'
import { USE_MOCK_DATA } from '@/config/app'
// ⚠️ MOCK 数据开关 - 开发环境使用 mock 数据,生产环境使用真实 API
// ⚠️ MOCK 数据开关 - 统一从 @/config/app 导入
// const USE_MOCK_DATA = process.env.NODE_ENV === 'development'
const USE_MOCK_DATA = false
const searchValue = ref('')
const activeTabId = ref('all') // 默认选中"全部"
......
......@@ -79,10 +79,10 @@ import NavHeader from '@/components/navigation/NavHeader.vue'
import IconFont from '@/components/icons/IconFont.vue'
import { myListAPI } from '@/api/news'
import { mockMessageListAPI } from '@/utils/mockData'
import { USE_MOCK_DATA } from '@/config/app'
// ⚠️ MOCK 数据开关 - 开发环境使用 mock 数据,生产环境使用真实 API
// ⚠️ MOCK 数据开关 - 统一从 @/config/app 导入
// const USE_MOCK_DATA = process.env.NODE_ENV === 'development'
const USE_MOCK_DATA = false
const go = useGo()
......
......@@ -142,10 +142,8 @@ import { mockPlanListAPI } from '@/utils/mockData'
import NavHeader from '@/components/navigation/NavHeader.vue'
import ListItemActions from '@/components/list/ListItemActions/index.vue'
import SearchBar from '@/components/forms/SearchBar.vue'
// Mock 数据开关(开发环境使用 Mock,生产环境使用真实 API)
// const USE_MOCK_DATA = process.env.NODE_ENV === 'development'
const USE_MOCK_DATA = false
import { USE_MOCK_DATA } from '@/config/app'
// ⚠️ MOCK 数据开关 - 统一从 @/config/app 导入
const { viewFile } = useFileOperation()
......
......@@ -152,10 +152,8 @@ import { listAPI } from '@/api/get_product'
import { mockProductListAPI } from '@/utils/mockData'
import { usePlanSubmit } from '@/composables/usePlanSubmit'
import { usePlanPermission } from '@/composables/usePlanPermission'
// ⚠️ MOCK 数据开关 - 开发环境使用 mock 数据,生产环境使用真实 API
// const USE_MOCK_DATA = process.env.NODE_ENV === 'development'
const USE_MOCK_DATA = false
import { USE_MOCK_DATA } from '@/config/app'
// ⚠️ MOCK 数据开关 - 统一从 @/config/app 导入
const go = useGo()
......
......@@ -137,11 +137,11 @@ import MaterialCard from '@/components/cards/MaterialCard.vue'
import PlanFormContainer from '@/components/plan/PlanFormContainer.vue'
import { searchAPI } from '@/api/search'
import { mockSearchAPI } from '@/utils/mockData'
import { USE_MOCK_DATA } from '@/config/app'
import { usePlanSubmit } from '@/composables/usePlanSubmit'
import { usePlanPermission } from '@/composables/usePlanPermission'
// ⚠️ MOCK 数据开关 - 开发环境使用 mock 数据,生产环境使用真实 API
const USE_MOCK_DATA = process.env.NODE_ENV === 'development'
// ⚠️ MOCK 数据开关 - 统一从 @/config/app 导入
const go = useGo()
......
......@@ -45,9 +45,10 @@ import NavHeader from '@/components/navigation/NavHeader.vue'
import MaterialCard from '@/components/cards/MaterialCard.vue'
import { weekHotAPI } from '@/api/file'
import { mockWeekHotAPI } from '@/utils/mockData'
import { USE_MOCK_DATA } from '@/config/app'
// ⚠️ MOCK 数据开关 - 开发环境使用 mock 数据,生产环境使用真实 API
const USE_MOCK_DATA = process.env.NODE_ENV === 'development'
// ⚠️ MOCK 数据开关 - 统一从 @/config/app 导入
// const USE_MOCK_DATA = process.env.NODE_ENV === 'development'
/**
* 当前列表数据
......