Skip to content

通用函数库(@/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 查询参数字符串。

    • 参数说明:

      参数名类型说明默认值
      paramsObject要转换的对象{}
    • 用法:

      js
      this.$fn.objToStr({a:1, b:2}); // "?a=1&b=2"
  • urlToObj(url)

    • 作用:将 URL 查询参数转为对象。

    • 参数说明:

      参数名类型说明默认值
      urlStringURL 字符串
    • 用法:

      js
      this.$fn.urlToObj('http://xx.com?a=1&b=2'); // {a: "1", b: "2"}

1.2 表单校验与脱敏

  • notFilled(obj, tipsList)

    • 作用:校验对象中是否有未填写项,自动弹出提示。

    • 参数说明:

      参数名类型说明默认值
      objObject需要校验的对象
      tipsListArray校验提示项(如:[{name, tips}])
    • 用法:

      js
      let res = this.$fn.notFilled({name: '', age: 18}, [{name: 'name', tips: '请输入姓名'}]);
      if(!res){ return; }
  • phoVerify(phoneNumber)

    • 作用:校验手机号格式是否正确,错误会自动弹出提示。

    • 参数说明:

      参数名类型说明默认值
      phoneNumberString手机号
    • 用法:

      js
      this.$fn.phoVerify('13812345678'); // true/false
  • idNumberVerify(idNum)

    • 作用:校验身份证号格式是否正确,错误会自动弹出提示。

    • 参数说明:

      参数名类型说明默认值
      idNumString身份证号
    • 用法:

      js
      this.$fn.idNumberVerify('440101199001011234'); // true/false
  • phoneEn(phone)

    • 作用:手机号脱敏(加密中间四位)。

    • 参数说明:

      参数名类型说明默认值
      phoneString手机号
    • 用法:

      js
      this.$fn.phoneEn('13812345678'); // "138****5678"

1.3 图片与 base64 处理

  • fixBase64(base64)

    • 作用:为 base64 字符串添加图片前缀。

    • 参数说明:

      参数名类型说明默认值
      base64Stringbase64 字符串
    • 用法:

      js
      this.$fn.fixBase64('xxxx'); // "data:image/jpeg;base64,xxxx"
  • imageToBase64(filePath)

    • 作用:将本地图片路径转为 base64 字符串。

    • 参数说明:

      参数名类型说明默认值
      filePathString图片本地路径
    • 用法:

      js
      this.$fn.imageToBase64(filePath).then(base64 => { ... });
  • base64ToUrl(base64, type)

    • 作用:base64 转为本地 url(微信小程序环境)。

    • 参数说明:

      参数名类型说明默认值
      base64Stringbase64 字符串
      typeBoolean是否截取前缀(true/false)false
    • 用法:

      js
      this.$fn.base64ToUrl(base64).then(url => { ... });

1.4 富文本与图片路径处理

  • formatRichText(html)

    • 作用:处理富文本中的图片样式,统一宽度,去除多余的

    • 参数说明:

      参数名类型说明默认值
      htmlString富文本内容
    • 用法:

      js
      this.$fn.formatRichText('<img ...>');
  • substrStr(str)

    • 作用:为图片路径添加前缀,或截取逗号前内容。

    • 参数说明:

      参数名类型说明默认值
      strString图片路径
    • 用法:

      js
      this.$fn.substrStr('xxx,yyy');

1.5 其他常用方法

  • getToken(response)

    • 作用:从请求 header 中提取 token。

    • 参数说明:

      参数名类型说明默认值
      responseObject完整请求对象
    • 用法:

      js
      this.$fn.getToken(response);
  • getLocationName(key, location, SecretKey)

    • 作用:腾讯云逆地理解析,获取地名信息。

    • 参数说明:

      参数名类型说明默认值
      keyString腾讯云Key
      locationString经纬度
      SecretKeyString签名密钥
    • 用法:

      js
      this.$fn.getLocationName(key, location, SecretKey).then(res => { ... });
  • calculateDistance(point1, point2)

    • 作用:计算两点间距离(单位:米)。

    • 参数说明:

      参数名类型说明默认值
      point1Object{lat, lng}
      point2Object{lat, lng}
    • 用法:

      js
      this.$fn.calculateDistance({lat: 0, lng: 0}, {lat: 1, lng: 1});

uni方法封装(uni.js)

对 UniApp 原生 API 的二次封装,提升易用性和统一性。

2.1 页面跳转

  • jumpPage(url, isLogin = false)
    • 作用:页面跳转,支持登录校验。

    • 参数说明:

      参数名类型说明默认值
      urlString跳转页面路径
      isLoginBoolean是否需要登录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)
    • 作用:统一弹出提示框,防止多次弹出。

    • 参数说明:

      参数名类型说明默认值
      titleString提示内容"默认提示"
      iconString图标类型"none"
      durationNumber显示时长(毫秒)1500
      maskBoolean是否显示透明蒙层true
    • 用法:

      js
      // 成功提示
      this.$fn.showToast('操作成功', 'success');
      // 错误提示
      this.$fn.showToast('操作失败', 'error', 2000);
      // 自定义遮罩和时长
      this.$fn.showToast('请稍候', 'loading', 3000, false);

2.4 解析扫码结果

  • getScanResult(options)
    • 作用:解析扫码结果,适用于 onLoad 的 options。

    • 参数说明:

      参数名类型说明默认值
      optionsObjectonLoad 传入的 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)
    • 作用:上传图片到服务器,支持上传进度提示,上传成功或失败后通过回调通知。

    • 参数说明:

      参数名类型说明是否必填默认值
      imageString图片本地路径
      callbackFunction上传完成后的回调函数
    • 回调格式:

      • 上传成功时: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);
        }
      });
    • 注意事项:

      1. 该方法会自动弹出"上传中..."的 loading 提示,上传结束后自动关闭。
      2. 上传接口地址依赖 this.vuex_baseUrl,需确保在 vue 组件内调用或自行传递 baseUrl。
      3. 建议 callback 做类型判断,避免未传入时报错。
      4. 上传失败会自动弹出 toast 提示。

云服务相关方法(cloudIai.js)

封装了调用 uniCloud 云函数的特定业务方法。

3.1 人脸识别(人脸搜索比对-并非真正的人脸识别)

  • recognizeFace(imageUrl)
    • 作用:封装人脸识别功能。通过调用 search-faces 云函数,将传入的图片在腾讯云的人脸库中进行搜索和匹配,并返回最相似的人员信息。

    • 参数说明

      参数名类型说明是否必填
      imageUrlString需要识别的图片,支持 base64URL 格式。
    • 用法

      javascript
      async 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 云函数已正确部署,并且其配置(如腾讯云密钥、人员库ID GroupIds)已根据实际情况修改。

使用建议

  • 推荐通过 this.$fn.xxx 方式调用,确保全局唯一、命名不冲突。
  • 如需扩展新工具文件,可在 index.js 中按需引入并合并导出。

本内容仅限内部使用,包含机密和专有信息。严禁任何形式的复制、分发或泄露给任何第三方