README.md 5.74 KB

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