1.0.8 • Published 3 years ago

ct-h5-utils v1.0.8

Weekly downloads
-
License
ISC
Repository
-
Last release
3 years ago

安装

npm i -S ct-h5-utils

自动登录

import { login } from 'ct-h5-utils'

使用前准备

  • src/config/env.js 中导出 mallUrl 作为商城 IP 加端口号
  • (非必须)在 src/config/env.js 中导出 mobileNoRsa 布尔值,false 表示获取的手机号码为明文的,true 表示获取的手机号码为加密

注意事项

  • 由事件传递登录状态
  • 登录过程中,不会弹出等待框,等待框要自己加
  • 电脑上登录目前还是跳转login页面,所以,以前的登录页面,还是要留着
  • 登录成功事件 logined 返回数据说明
    • 电脑上返回的数据是 undefined
    • app上分两种情况
      • 上一次登录的资金账号的登录状态有效时,返回 undefined
      • 非上述情况将发起加密登录请求,此时返回加密登录请求返回的数据
    • 综上,使用登录成功返回的数据,要有判断。一般有返回数据,说明账号变更
  • 登录成功后的本地存储,使用 localStorage 保存了
    • client_name 用户名
    • client_gender 用户性别 0:先生,1:女士
    • token_code token,当前服务端返回的是包含密码的 rsa 加密的 jwt 字符串
  • 登录成功后 ctDataManager 上也做了数据同步
    • ctDataManager.fundAccount 报错了资金账号
    • ctDataManager.loginStatus 值更新为2,表示已登录
  • 自动登录接口传参都是加密的,故而返回的 token 也是加密的 jwt 。如果后台使用的 token 是普通 jwt,然后台改 简言之后台接口要是报 token 错误,让后台改,原因是前面半句。

加密登录请求地址

若自动登录保存的本地缓存数据不够,可以自行定制。从下面接口查看后的返回的数据

'/mall/user/submitLoginWithEncryption'

举例

import { login } from 'ct-h5-utils'
mounted(){
  this.loginEvent();
  login(this.$el);
},
methods: {
  /**
   * 登录事件
   */
  loginEvent () {
    let el = this.$el;
    window.loading.show();
    // 登录成功
    el.addEventListener('logined', (e) => {
      window.loading.hide();
    });
    // 登录失败
    el.addEventListener('loginErr', (e) => {
      window.loading.hide();
      common.showToast(e.detail.error_info); // 报错
    });
    // 跳转登录页面,电脑上登录
    el.addEventListener('goLoginPage', () => {
      // 页面跳转了,页面元素发生变化,不会触发这个事件。
      window.loading.hide();
    });
    // 登录取消(点了同花顺登录界面返回键)
    el.addEventListener('loginCancel', () => {
      window.loading.hide();
    });
    // 告知当前是未登录状态,(app方法获取不到账号和密码)
    el.addEventListener('notLogin', () => {
    });
  },
}

可能遇到的问题

src/manager/dataManager.js 中的 logoutFundAccount 方法报 callback is not function ,请判断 callback 存在时在执行

神策埋点

使用:

import { ctSensors } from 'ct-h5-utils'
  • 调用 ctSensors.init() 初始化,可向该函数传参,一般不用传
  • 接着调用 ctSensors.bindAction(['action_a']) 生成埋点方法,可以不传参。埋点时,在vue组件中调用this.ctSensors.ActionA(params) 即可。
  • 默认提供 ['tab_view', 'tab_resource_click', 'Deal_login_click', 'Deal_login_result', 'Cancel_order_click', 'Cancel_order_confirm'] 埋点事件。当对tab_view事件埋点时,如下使用:
    this.ctSensors.TabView(params).

注意事项

  1. tab_view 事件一般业务都会要求埋点,没有的话,要询问。
  2. tab_view 事件,进页面就要埋点。但首页上要在调用app方法获取手机号回调中埋点,有调用app方法获取手机号的页面,也应该在获取手机号回调中埋点
  3. 如果页面需要自动登录,务必在登录请求回调成功逻辑中调用this.ctSensors.setLoginInfo() 重新设置登录信息。但不必在意在此之前触发的埋点事件没有登录信息,之后的有即可
  4. 使用示例参考文档:神策埋点npm包使用
1.0.8

3 years ago