Name Last Update
..
__tests__ Loading commit data...
parsers Loading commit data...
README.md Loading commit data...
config.js Loading commit data...
debounce.js Loading commit data...
documentIcons.js Loading commit data...
eventBus.js Loading commit data...
mixin.js Loading commit data...
mockData.js Loading commit data...
network.js Loading commit data...
openid.js Loading commit data...
planFieldTransformers.js Loading commit data...
planFieldValidation.js Loading commit data...
polyfill.js Loading commit data...
request.js Loading commit data...
tools.js Loading commit data...
weapp.js Loading commit data...
wechatPay.js Loading commit data...

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