Appearance
通用函数库(@/utils)
本模块包含了项目中常用的工具函数,分为通用方法(common.js)和 UniApp 相关方法(uni.js)。所有方法通过 index.js 统一导出,可通过 this.$fn.xxx 方式在项目中调用。
目录结构与说明
index.js
index.js 统一导出 common.js、uni.js 和 cloudIai.js 的所有方法。
js
import * as common from './common.js'
import * as cloudIai from './cloudIai.js'
import * as uni from './uni.js'
export default {
...common,
...cloudIai,
...uni,
}通用方法(common.js)
通用方法库,适用于各种业务场景,主要包含:
1.1 对象与 URL 参数互转
objToStr(params)
作用:将对象转为 URL 查询参数字符串。
参数说明:
参数名 类型 说明 默认值 params Object 要转换的对象 {} 用法:
jsthis.$fn.objToStr({a:1, b:2}); // "?a=1&b=2"
urlToObj(url)
作用:将 URL 查询参数转为对象。
参数说明:
参数名 类型 说明 默认值 url String URL 字符串 无 用法:
jsthis.$fn.urlToObj('http://xx.com?a=1&b=2'); // {a: "1", b: "2"}
1.2 表单校验与脱敏
notFilled(obj, tipsList)
作用:校验对象中是否有未填写项,自动弹出提示。
参数说明:
参数名 类型 说明 默认值 obj Object 需要校验的对象 无 tipsList Array 校验提示项(如:[{name, tips}]) 无 用法:
jslet res = this.$fn.notFilled({name: '', age: 18}, [{name: 'name', tips: '请输入姓名'}]); if(!res){ return; }
phoVerify(phoneNumber)
作用:校验手机号格式是否正确,错误会自动弹出提示。
参数说明:
参数名 类型 说明 默认值 phoneNumber String 手机号 无 用法:
jsthis.$fn.phoVerify('13812345678'); // true/false
idNumberVerify(idNum)
作用:校验身份证号格式是否正确,错误会自动弹出提示。
参数说明:
参数名 类型 说明 默认值 idNum String 身份证号 无 用法:
jsthis.$fn.idNumberVerify('440101199001011234'); // true/false
phoneEn(phone)
作用:手机号脱敏(加密中间四位)。
参数说明:
参数名 类型 说明 默认值 phone String 手机号 无 用法:
jsthis.$fn.phoneEn('13812345678'); // "138****5678"
1.3 图片与 base64 处理
fixBase64(base64)
作用:为 base64 字符串添加图片前缀。
参数说明:
参数名 类型 说明 默认值 base64 String base64 字符串 无 用法:
jsthis.$fn.fixBase64('xxxx'); // "data:image/jpeg;base64,xxxx"
imageToBase64(filePath)
作用:将本地图片路径转为 base64 字符串。
参数说明:
参数名 类型 说明 默认值 filePath String 图片本地路径 无 用法:
jsthis.$fn.imageToBase64(filePath).then(base64 => { ... });
base64ToUrl(base64, type)
作用:base64 转为本地 url(微信小程序环境)。
参数说明:
参数名 类型 说明 默认值 base64 String base64 字符串 无 type Boolean 是否截取前缀(true/false) false 用法:
jsthis.$fn.base64ToUrl(base64).then(url => { ... });
1.4 富文本与图片路径处理
formatRichText(html)
作用:处理富文本中的图片样式,统一宽度,去除多余的
。参数说明:
参数名 类型 说明 默认值 html String 富文本内容 无 用法:
jsthis.$fn.formatRichText('<img ...>');
substrStr(str)
作用:为图片路径添加前缀,或截取逗号前内容。
参数说明:
参数名 类型 说明 默认值 str String 图片路径 无 用法:
jsthis.$fn.substrStr('xxx,yyy');
1.5 其他常用方法
getToken(response)
作用:从请求 header 中提取 token。
参数说明:
参数名 类型 说明 默认值 response Object 完整请求对象 无 用法:
jsthis.$fn.getToken(response);
getLocationName(key, location, SecretKey)
作用:腾讯云逆地理解析,获取地名信息。
参数说明:
参数名 类型 说明 默认值 key String 腾讯云Key 无 location String 经纬度 无 SecretKey String 签名密钥 无 用法:
jsthis.$fn.getLocationName(key, location, SecretKey).then(res => { ... });
calculateDistance(point1, point2)
作用:计算两点间距离(单位:米)。
参数说明:
参数名 类型 说明 默认值 point1 Object {lat, lng}无 point2 Object {lat, lng}无 用法:
jsthis.$fn.calculateDistance({lat: 0, lng: 0}, {lat: 1, lng: 1});
uni方法封装(uni.js)
对 UniApp 原生 API 的二次封装,提升易用性和统一性。
2.1 页面跳转
- jumpPage(url, isLogin = false)
作用:页面跳转,支持登录校验。
参数说明:
参数名 类型 说明 默认值 url String 跳转页面路径 无 isLogin Boolean 是否需要登录 false 用法:
js// 跳转到详情页 this.$fn.jumpPage('/pages/detail/index?id=123'); // 跳转到用户中心,需登录 this.$fn.jumpPage('/pages/user/profile', true); // 测试:未登录时跳转需登录页面会弹窗提示 this.$fn.jumpPage('/pages/secure/center', true);
2.2 登录校验
- isLogin()
作用:判断用户是否已登录,未登录自动弹窗提示。
参数说明:无
用法:
js// 已登录场景 if(this.$fn.isLogin()){ console.log('已登录,可继续操作'); } // 未登录场景会自动弹窗提示 this.$fn.isLogin();
2.3 统一提示
- showToast(title = "默认提示", icon = "none", duration = 1500, mask = true)
作用:统一弹出提示框,防止多次弹出。
参数说明:
参数名 类型 说明 默认值 title String 提示内容 "默认提示" icon String 图标类型 "none" duration Number 显示时长(毫秒) 1500 mask Boolean 是否显示透明蒙层 true 用法:
js// 成功提示 this.$fn.showToast('操作成功', 'success'); // 错误提示 this.$fn.showToast('操作失败', 'error', 2000); // 自定义遮罩和时长 this.$fn.showToast('请稍候', 'loading', 3000, false);
2.4 解析扫码结果
- getScanResult(options)
作用:解析扫码结果,适用于 onLoad 的 options。
参数说明:
参数名 类型 说明 默认值 options Object onLoad 传入的 options 无 用法:
js// 假设扫码后 onLoad(options) 传入如下: // options = { xxxx其他参数xxx, q: 'https%3A%2F%2Ftest.com%3FbarrierId%3D123%26isTrue%3Dtrue' } const result = this.$fn.getScanResult(options); // result: // { // domain: 'https://test.com', // queryList: [ // { key: 'barrierId', value: '123' }, // { key: 'isTrue', value: 'true' } // ] // }
2.5 图片上传
- handleUploadImage(image, callback)
作用:上传图片到服务器,支持上传进度提示,上传成功或失败后通过回调通知。
参数说明:
参数名 类型 说明 是否必填 默认值 image String 图片本地路径 是 无 callback Function 上传完成后的回调函数 是 无 回调格式:
- 上传成功时:
callback(res),其中 res 为上传成功返回的响应对象。 - 上传失败时:
callback(null, err),其中 err 为错误对象。 - 建议在回调前判断 callback 是否为函数类型。
- 上传成功时:
用法:
js// 基本用法 this.$fn.handleUploadImage('/static/process.jpg', function(res, err) { if (res) { // 上传成功逻辑 console.log('上传成功', res); } else { // 上传失败逻辑 console.error('上传失败', err); } });注意事项:
- 该方法会自动弹出"上传中..."的 loading 提示,上传结束后自动关闭。
- 上传接口地址依赖 this.vuex_baseUrl,需确保在 vue 组件内调用或自行传递 baseUrl。
- 建议 callback 做类型判断,避免未传入时报错。
- 上传失败会自动弹出 toast 提示。
云服务相关方法(cloudIai.js)
封装了调用 uniCloud 云函数的特定业务方法。
3.1 人脸识别(人脸搜索比对-并非真正的人脸识别)
- recognizeFace(imageUrl)
作用:封装人脸识别功能。通过调用
search-faces云函数,将传入的图片在腾讯云的人脸库中进行搜索和匹配,并返回最相似的人员信息。参数说明:
参数名 类型 说明 是否必填 imageUrlString 需要识别的图片,支持 base64或URL格式。是 用法:
javascriptasync function testFaceRecognition() { // 使用 base64 const imageBase64 = 'data:image/jpeg;base64,...'; const result1 = await this.$fn.recognizeFace(imageBase64); console.log(result1); // 或使用 URL const imageUrl = 'https://your-domain.com/face.jpg'; const result2 = await this.$fn.recognizeFace(imageUrl); console.log(result2); }返回值:
- 返回一个
Promise,其resolve的值为一个对象,包含以下字段:succeed(Boolean): 识别是否成功。msg(String): 结果信息。成功时返回匹配到的人员和相似度,失败时返回错误原因。
- 成功示例:json
{ "succeed": true, "msg": "识别成功! 最匹配的人员是:张三,相似度:98.5" } - 失败示例:json
{ "succeed": false, "msg": "未在人员库中匹配到相似人员" }
- 返回一个
关联云函数:
- 该函数依赖
uniCloud下的search-faces云函数。 - 注意:使用前,请确保
search-faces云函数已正确部署,并且其配置(如腾讯云密钥、人员库IDGroupIds)已根据实际情况修改。
- 该函数依赖
使用建议
- 推荐通过
this.$fn.xxx方式调用,确保全局唯一、命名不冲突。 - 如需扩展新工具文件,可在
index.js中按需引入并合并导出。
