Utils 工具函数库
工具函数和核心配置模块
📖 目录
核心模块
config.js - 环境配置
描述:服务器环境配置和公共参数管理
导出:
-
BASE_URL- API 基础域名 -
REQUEST_DEFAULT_PARAMS- 默认请求参数{ f: 'manulife' }
修改方式:
// 修改开发/生产环境域名
const BASE_URL = process.env.NODE_ENV === 'production'
? 'https://manulife.onwall.cn' // 生产
: 'https://manulife.onwall.cn' // 开发
request.js - HTTP 请求封装
描述:基于 axios-miniprogram 的 HTTP 客户端,包含:
- 默认参数合并
- 401 自动跳转登录页
- 弱网/超时错误处理
- sessionid 自动管理
导出:
import service from '@/utils/request'
// GET 请求
service.get('/srv/', { params: { a: 'action' } })
// POST 请求
service.post('/srv/', { key: 'value' })
工具函数:
-
getSessionId()- 获取 sessionid -
setSessionId(sessionid)- 设置 sessionid -
clearSessionId()- 清空 sessionid
openid.js - 微信授权管理
描述:处理小程序静默认证和会话管理
导出:
import { miniProgramAuth, ensureOpenidAuthorized } from '@/utils/openid'
// 小程序授权(静默获取 sessionid)
const user = await miniProgramAuth()
// 确保已授权
await ensureOpenidAuthorized()
工具函数
tools.js - 通用工具函数
描述:常用工具函数集合
| 函数 | 说明 |
|---|---|
formatDate(date) |
格式化时间(YYYY-MM-DD HH:mm) |
wxInfo() |
获取设备信息(isAndroid, isiOS) |
parseQueryString(url) |
解析 URL 参数 |
formatDatetime(data) |
格式化日期时间范围 |
mask_id_number(id, options) |
证件号脱敏 |
buildApiUrl(action, params) |
构建 API 请求 URL |
isVideoFile(file) |
判断是否为视频文件 |
optimizeImageUrl(url, options) |
CDN 图片优化 |
debounce.js - 防抖函数
描述:创建防抖函数,延迟执行
import { debounce, debounceFn } from '@/utils/debounce'
// 基本使用
const debouncedSearch = debounce(() => {
console.log('搜索')
}, 500)
// Hook 方式
const handler = debounceFn(async () => {
await fetchData()
}, 500)
eventBus.js - 事件总线
描述:跨页面/组件通信
import eventBus, { Events } from '@/utils/eventBus'
// 监听事件
const off = eventBus.on(Events.FEEDBACK_SUBMIT, (data) => {
console.log('收到事件:', data)
})
// 发送事件
eventBus.emit(Events.FEEDBACK_SUBMIT, { id: 123 })
// 取消监听
off()
事件常量:
-
Events.FEEDBACK_SUBMIT- 反馈提交成功 -
Events.FAVORITES_UPDATE- 收藏列表更新 -
Events.USER_UPDATE- 用户信息更新
文档处理
documentIcons.js - 文档图标工具
描述:文件类型判断和图标获取
核心函数:
import {
getDocumentIcon, // 获取文档图标
getDocumentLabel, // 获取文件类型标签
extractExtensionFromFile, // 提取文件扩展名
isPDF, // 判断是否为 PDF
isImage, // 判断是否为图片
isVideo // 判断是否为视频
} from '@/utils/documentIcons'
// 使用示例
getDocumentIcon('报告.pdf') // 返回 PDF 图标路径
getDocumentIcon({ extension: 'pdf' }) // 优先使用 extension 字段
isPDF('document.pdf') // true
isImage('photo.jpg') // true
支持的文件类型:
- 文档:PDF, Word, Excel, PPT
- 图片:JPG, PNG, GIF, WebP, SVG
- 视频:MP4, MOV, AVI, MKV
- 其他:TXT, MD, ZIP, RAR
解析器
parsers/config-generator.js - 配置生成器
描述:将产品配置转换为 plan-templates.js 代码
import { generateConfigCode, previewConfig } from '@/utils/parsers/config-generator'
// 生成配置代码
const result = generateConfigCode({
product_name: '宏挚传承保障计划',
product_type: 'savings',
currency: 'USD',
...
})
// 返回: { formSn, configCode, insertPosition, validation }
// 预览配置
const preview = previewConfig(config)
parsers/ai-extractor.js - AI 提取器
描述:从文档中提取产品配置(配合 AI 使用)
使用指南
1. 添加新的工具函数
在 tools.js 或创建新文件:
/**
* @description 函数描述
* @param {Type} param - 参数说明
* @returns {Type} 返回值说明
*/
export const myUtility = (param) => {
// 实现
}
2. API 请求最佳实践
import service from '@/utils/request'
import { buildApiUrl } from '@/utils/tools'
// 方式 1:使用 service
const res = await service.get('/srv/', { params: { a: 'action' } })
if (res.data.code === 1) {
// 成功
}
// 方式 2:使用 buildApiUrl
const url = buildApiUrl('action', { id: 123 })
const res = await service.get(url)
3. 文件类型判断
import { isPDF, isImage, isVideo } from '@/utils/documentIcons'
// 优先使用 extension 字段
if (isPDF({ extension: file.extension })) {
// 是 PDF
}
// 兼容字符串格式
if (isPDF(file.fileName)) {
// 是 PDF
}
// 从 URL 解析
if (isImage({ src: file.url })) {
// 是图片
}
相关文档
最后更新: 2026-02-25