0.0.2-alpha.3 • Published 1 year ago

@clue_nidapp/plugin-form-dealer-common v0.0.2-alpha.3

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

线索通优选经销商功能插件

能力

根据地理位置获取推荐的优选经销商

前置插件

网络请求能力插件

初始化

需要配合 @clue_nidapp/form-core 线索通 sdk,和网络请求插件使用

初始化线索通 SDK,详见 @clue_nidapp/form-core 使用文档

import { Core, FormOptions } from '@clue_nidapp/form-core';
import { DealerData } from '@clue_nidapp/plugin-form-dealer-common'
import { API } from '@clue_nidapp/plugin-api-h5'

const options: FormOptions = {
  data: {
    formId: 0,
    advId: 0,
    clueAccountId: 0,
  },
  // 注册插件
  plugins: [new API(), new DealerData()]
}
const formCore = new Core(
  options,
);

支持环境

h5,lynx

使用

名词解释

sdk: 注册了自动填充插件后的表单 sdk 使用方: 使用方的 h5 或 lynx 宿主

交互介绍

使用方与 sdk 的事件通信通过发布-订阅模式触发,即,使用方主动触发 sdk 的方法,sdk 逻辑执行完成后,触发回调方法给使用方,使用方监听这个方法执行相应逻辑。

import { DealerDataHandleEvents } from '@clue_nidapp/plugin-api-h5'

// DealerDataHandleEvents 是事件名枚举
formCore.emit(eventName, params);

formCore.on(eventName, (params) => {})

DealerDataHandleEvents 提供的事件如下

常量名常量值描述回调方法返回值/触发事件参数使用方触发事件或sdk回调
DataSourceChange"DataSourceChange"成功获取优选经销商数据IDealerDatasdk回调
getPreferData"getPreferData"获取优选经销商数据IMiniGetLocationRequest使用方触发事件
getPreferDataFail"getPreferDataFail"获取优选经销商数据失败sdk回调
getPreferDataEnd"getPreferDataEnd"getPreferData 结束后触发sdk回调

请求和返回参数说明

成功获取优选经销商数据返回 IDealerData

interface IDealerData {
  data: IDealerDetailResponse,
  elementId: number,
}

interface IDealerDetailResponse {
  version: number;
  fields: {
    businessKey: string;
    name: string;
  }[];
  root: {
    children: IDealerDetailItem[];
    id: number;
    name: string;
  };
}

interface IDealerDetailItem {
  customId: string;
  dcd_id?: string;
  id: number;
  isDefault?: 0 | 1;    // 1 表示是推荐的数据 
  name: string;
  children?: IDealerDetailItem[];
}

获取优选经销商数据请求参数

获取优选经销商有两种模式

  1. 手动模式 触发获取优选经销商方法时,同时传入省份和城市,插件将会返回在传入位置的优选经销商。

  2. 自动模式 触发获取优选经销商方法时,不传入省份和城市,插件将会先使用 deviceId 获取地理位置,然后根据获得的地理位置返回优选经销商。

interface IGetLocationRequest {
  province?: string;         // 用户所在省份 isManualGet 为 true 时生效
  city?: string;             // 用户所在城市 isManualGet 为 true 时生效
  isManualGet?: boolean;     // 是否根据传入的省份城市信息获取
  optionNumber: number;      // 推荐的优选经销商数量 最大为 10
  authorize: boolean;        // 用户是否授权地理位置
}