写在前面
主要内容
本文档主要对泛微 ecodeSDK 的 API 列表和详细信息进行展示,以帮助开发人员更好地了解和使用该 SDK 的功能。由于未能找到完整的 SDK API 列表文档,因此制作此文档以记录供大家及自己使用。
本文档包括以下内容:
- API 列表:提供 SDK 中可用的所有 API 的名称和功能简介。
- API 详细:提供每个 API 的详细信息,包括参数、返回值、使用示例等。
- 使用示例:提供一些使用示例,以便开发人员更好地理解如何使用 SDK 中的 API。
需要注意的是,由于文档可能存在更新和变化,建议在使用前再次查阅官方文档以获取最新的 SDK API 信息。
⚠️ 特别注意
本文档由丸子本人收集整理制作,内容多由丸子自行分析整理,部分来源自网络,难免存在错误和不详细之处,使用时请自行甄别;欢迎评论区反馈,引用请务必注明出处!
泛微 ecode 简介
ecode 是内嵌在 E-cology9 系统中,为了解决 E-cology9 所有标准界面无侵入定制和扩展二次开发的开发工具。
泛微官方 ecode 使用说明: e-cloudstore.com
展开详情
ecode 核心是解决 EC 所有界面无侵入定制和扩展二次开发,采用动态注册,不直接修改源码的方案解决开发需求。除了新开发页面的之外,它还支持所有标准页面的修改。ecode 包含了整套前端编辑器、编译器,可以让用户无需搭建开发环境直接通过浏览器开始 single page 前端开发,同时采用 ecode 开发的内容都是插件化,支持一键共享、复用、二次封装。
ecode 中可能用到的技术栈(Technology Stack):
PC 端:
js、css、es6、react16.x、react-router3、mobx
MOBILE 端:
js、css、es6、react16.x、react-router4、mobx
关于如何使用 ecode,官方已给出详细的使用说明,你可以直接点击上方链接或访问官方说明文档:https://e-cloudstore.com/doc.html 进行学习,丸子不在此进行过多介绍
* SDK API 列表
-
ecodeSDK
1. 数组排序(ecode 运行顺序)
对 item 结构体数组按照 order 属性进行排序,该 API 无需使用
ecodeSDK.ecodeQueueSort(arr)
参数说明
| 参数 | 参数类型 | 必须 | 说明 |
|---|---|---|---|
| arr | item 结构体数组 | 是 | 需要排序的数组 |
样例
let arr = [ { order: 3, name: "C" }, { order: 1, name: "A" }, { order: 4, name: "D" }, { order: 2, name: "B" }];
ecodeSDK.ecodeQueueSort(arr);2. PC 端组件参数复写
对 EC 全系统 PC 端组件参数进行复写,包含 组件站 PC 组件库 ecCom、antd 大部分组件 ,其中 Radio、Radio.Button、Tree.TreeNode、Menu.ItemGruop、Select.Option、Select.OptGroup、SelectNew.Option、SelectNew.OptGroup 暂不支持复写
ecodeSDK.overwritePropsFnQueueMapSet(name,option)
参数说明
| 参数 | 参数类型 | 必须 | 说明 |
|---|---|---|---|
| name | String | 是 | 组件库 ecCom、antd 组件名称 |
| option | Object | 是 | 复写配置 |
| option.fn | Function | 是 | 复写钩子函数 (newProps)=>{} |
| option.order | Integer | 否 | 复写排序 |
| option.desc | String | 否 | 复写说明 |
样例
ecodeSDK.overwritePropsFnQueueMapSet('WeaTop',{ //组件名fn:(newProps)=>{ //newProps 代表组件参数//建议添加进行位置判断操作console.log('WeaTop:',newProps); //在这里输出日志,如果成功输出代表组件成功定位},order:1, //排序字段,如果存在同一个页面复写了同一个组件,控制顺序时使用desc:'在这里写此复写的作用,在调试的时候方便查找'});3. PC 端组件重写
对 EC 全系统 PC 端组件参数进行重写,重新定义的组件只要遵循原组件的交互要求,即可进行自由定义
ecodeSDK.overwriteClassFnQueueMapSet(name,option)
参数说明
| 参数 | 参数类型 | 必须 | 说明 |
|---|---|---|---|
| name | String | 是 | 组件库 ecCom、antd 组件名称 |
| option | Object | 是 | 重写配置 |
| option.fn | Function | 是 | 重写钩子函数 (Com,newProps)=>{} |
| option.order | Integer | 否 | 重写排序 |
| option.desc | String | 否 | 重写说明 |
样例
ecodeSDK.overwriteClassFnQueueMapSet('Table',{ fn:(Com,newProps)=>{ //Com是当前复写的原组件 //newProps是当前复写的原组件参数 return { com:Com, props:newProps }; }, order:1, desc:'浏览按钮复写'});4. MOBILE 端组件参数复写:
对 EC 全系统 Mobile 端组件参数进行复写,包含 组件站 移动组件库 WeaverMobile、WeaMobilePage 大部分组件
ecodeSDK.overwriteMobilePropsFnQueueMapSet(name,option)
参数说明
| 参数 | 参数类型 | 必须 | 说明 |
|---|---|---|---|
| name | String | 是 | 组件库 WeaverMobile、WeaMobilePage 组件名称 |
| option | Object | 是 | 复写配置 |
| option.fn | Function | 是 | 复写钩子函数 (newProps)=>{} |
| option.order | Integer | 否 | 复写排序 |
| option.desc | String | 否 | 复写说明 |
样例
ecodeSDK.overwriteMobilePropsFnQueueMapSet('TabPage',{ //组件名 fn:(newProps)=>{ //newProps代表组件参数 //建议添加进行位置判断操作 console.log('TabPage:',newProps); //在这里输出日志,如果成功输出代表组件成功定位 }, order:1, //排序字段,如果存在同一个页面复写了同一个组件,控制顺序时使用 desc:'在这里写此复写的作用,在调试的时候方便查找'});5. MOBILE 端组件重写
对 EC 全系统 Mobile 端组件参数进行重写,重新定义的组件只要遵循原组件的交互要求,即可进行自由定义
ecodeSDK.overwriteMobileClassFnQueueMapSet(name,option)
参数说明
| 参数 | 参数类型 | 必须 | 说明 |
|---|---|---|---|
| name | String | 是 | 组件库 WeaverMobile、WeaMobilePage 组件名称 |
| option | Object | 是 | 重写配置 |
| option.fn | Function | 是 | 重写钩子函数 (Com,newProps)=>{} |
| option.order | Integer | 否 | 重写排序 |
| option.desc | String | 否 | 重写说明 |
样例
ecodeSDK.overwriteMobileClassFnQueueMapSet('WeaBrowser',{ fn:(Com,newProps)=>{ //Com是当前复写的原组件 //newProps是当前复写的原组件参数 return { com:Com, props:newProps }; }}, order:1, desc:'浏览按钮复写'})6. 检查 url 是否匹配
用于检查当前页面的 URL 是否与给定的 URL 匹配
ecodeSDK.checkLPath(url)
参数说明
| 参数 | 参数类型 | 必须 | 说明 |
|---|---|---|---|
| url | String | 是 | 需要检查的url |
样例
function checkURL() { var url = '/wui/index.html#/main/workflow/listDoing'; var result = ecodeSDK.checkLPath(url);
if (result) { console.log('URL路径有效'); } else { console.log('URL路径无效'); }}
checkURL();7. 在 props 对象中查找指定的键值
在复杂的属性对象中查找指定键的值。它通过递归地遍历属性对象的子对象和子数组来查找,并返回找到的第一个非空值。如果没有找到非空值,则返回空字符串。
ecodeSDK.findPropData(props, key)
参数说明
| 参数 | 参数类型 | 必须 | 说明 |
|---|---|---|---|
| props | Object | 是 | 要查找的属性对象 |
| key | String | 是 | 要查找的键 |
样例
var props = { children: [ { props: { key1: 'value1', key2: 'value2' } }, { props: { key3: 'value3', key4: 'value4' } } ]};
var key = 'key3';
var result = ecodeSDK.findPropData(props, key);
console.log(result); // 输出:value38. 复写 API 响应数据
用于修改 API 的响应数据。这种功能通常在开发过程中使用,允许开发人员对从 API 接收到的数据进行定制化的处理。在这个函数中,可以根据特定的条件来拦截接口响应数据,并响应修改后的数据。注意:本接口会监听PC端、手机端接口都会触发。
ecodeSDK.rewriteApiDataQueueSet(fn)
参数说明
| 参数 | 参数类型 | 必须 | 说明 |
|---|---|---|---|
| fn | Function | 是 | 用于修改 API 响应数据的函数 (url, params, data)=>{} |
| (url) | String | - | API 的 URL(接口路径) |
| (params) | Object | - | API 的参数 |
| (data) | Object | - | API 的响应数据 |
样例
ecodeSDK.rewriteApiDataQueueSet({ fn: function fn(url, params, data) { // 添加判断,如果当前页面路径不是'/spa/hrm/engine.html#/hrmengine/authAdjust',则不执行复写逻辑 if (!ecodeSDK.checkLPath('/spa/hrm/engine.html#/hrmengine/authAdjust')) return; console.log("路径识别正确!");
if (url.indexOf("/api/public/browser/condition/1") === -1) return; console.log("API识别正确!");
console.log("url", url); console.log("params", params); console.log("data", data);
// 开始复写,这里是复写的内容
//return data;(丸子一般不习惯return,注释掉就好) },});9. 复写 PC 端 API 请求参数
修改接口请求的参数。具体来说,这个函数会接收一个函数作为参数,这个函数会被调用来处理接口请求的参数。在这个函数中,可以根据特定的条件来修改请求参数,并返回修改后的参数。
ecodeSDK.rewriteApiParamsQueueSet(fn)
参数说明
| 参数 | 参数类型 | 必须 | 说明 |
|---|---|---|---|
| fn | Function | 是 | 用于修改 API 请求参数的函数 (url, method, params)=>{} |
| (url) | String | - | API 的 URL(接口路径) |
| (method) | Object | - | API 的请求类型 |
| (params) | Object | - | API 的请求参数 |
样例
ecodeSDK.rewriteApiParamsQueueSet({ fn: (url, method, params) => {
// 不是需要拦截的接口返回默认的参数 return { url: url, // 接口路径 method: method, // 请求类型 params: params // 请求参数 } } });10. 复写 MOBILE 端 API 请求参数
修改接口请求的参数。具体来说,这个函数会接收一个函数作为参数,这个函数会被调用来处理接口请求的参数。在这个函数中,可以根据特定的条件来修改请求参数,并返回修改后的参数。
ecodeSDK.rewriteMobileApiParamsQueueSet(fn)
参数说明
| 参数 | 参数类型 | 必须 | 说明 |
|---|---|---|---|
| fn | Function | 是 | 用于修改 API 请求参数的函数 (url, method, params)=>{} |
| (url) | String | - | API 的 URL(接口路径) |
| (method) | Object | - | API 的请求类型 |
| (params) | Object | - | API 的请求参数 |
样例
ecodeSDK.rewriteMobileApiParamsQueueSet({ fn: (url, method, params) => {
// 不是需要拦截的接口返回默认的参数 return { url: url, // 接口路径 method: method, // 请求类型 params: params // 请求参数 } } });11. 获取本地存储中的 JSON 数据
用于从
window.localStorage中获取存储的 JSON 数据并将其解析为 JavaScript 对象,函数返回获取到的属性值,如果指定的键名不存在或数据无法解析为 JSON 格式,函数会返回一个空对象{}。
ecodeSDK.getJSONObj(key)
参数说明
| 参数 | 参数类型 | 必须 | 说明 |
|---|---|---|---|
| key | String | 是 | 要获取的本地存储数据的键名 |
样例
// 存储在本地的数据window.localStorage['userData'] = '{"name": "Alice", "age": 25, "email": "alice@example.com"}';
// 使用示例var userData = ecodeSDK.getJSONObj('userData');
console.log(userData.name); // 输出:Aliceconsole.log(userData.age); // 输出:25console.log(userData.email); // 输出:alice@example.com12. 逐级获取本地存储中嵌套的 JSON 数据
用于逐级获取本地存储数据中嵌套的 JSON 对象的属性值,函数返回获取到的属性值,如果遍历过程中出现了错误(比如某个键名不存在或获取数据失败),则函数会返回空字符串
''。
ecodeSDK.getEcodeParams(keys)
参数说明
| 参数 | 参数类型 | 必须 | 说明 |
|---|---|---|---|
| keys | Array | 是 | 由字符串组成的数组,表示逐级获取本地存储数据中的属性路径。 |
样例
// 存储在本地的数据window.localStorage['userData'] = '{"name": "Alice", "age": 25, "address": {"city": "New York", "country": "USA"}}';
// 使用示例var name = ecodeSDK.getEcodeParams(['userData', 'name']);console.log(name); // 输出:Alice
var city = ecodeSDK.getEcodeParams(['userData', 'address', 'city']);console.log(city); // 输出:New York13. 动态加载资源文件
为动态加载 JavaScript 和 CSS 资源提供了方便的接口,使得页面在需要时可以按需加载所需的资源文件,该函数还提供了一些静态方法,例如
t.ready、t.done、t.reset和t.isDefined,用于处理资源的加载完成状态、重置状态和检查资源是否已定义等;loadjs 加载第三方资源,注意加载次数,避免多次请求重复资源
ecodeSDK.loadjs(resourceUrl, { callbacks, options })
参数说明
| 参数 | 参数类型 | 必须 | 说明 |
|---|---|---|---|
| resourceUrl | String | 是 | 要加载的资源的 URL,可以是 JavaScript 或 CSS 文件的 URL。 |
| callbacks | Object | 否 | 包含回调函数的对象,用于在资源加载成功或失败后执行相应的操作。可以包含 success 和 error 回调函数。 |
callbacks.success | Function | 否 | 资源加载成功后调用的回调函数。 |
callbacks.error | Function | 否 | 资源加载失败后调用的回调函数。 |
| options | Object | 否 | 包含加载资源的选项的对象。可以指定以下选项:async、numRetries、before和returnPromise。 |
options.async | Boolean | 否 | 表示是否异步加载资源,默认为 true。 |
options.numRetries | Number | 否 | 表示加载重试次数,默认为 0。 |
options.before | Function | 否 | 在加载资源之前执行的回调函数,默认为空函数。 |
options.returnPromise | Boolean | 否 | 如果为 true,则返回一个 Promise 对象,否则返回 undefined。 |
| retryCount | Number | 否 | 内部使用的加载重试计数,默认为 0。 |
| successCb | Function | 否 | 资源加载成功后调用的回调函数。 |
| errorCb | Function | 否 | 资源加载失败后调用的回调函数。 |
样例
//异步加载 JavaScript 文件ecodeSDK.loadjs('https://example.com/js/script.js', { async: true, numRetries: 2, before: function () { console.log('Before loading the script...'); }, success: function () { console.log('Script loaded successfully!'); }, error: function () { console.error('Failed to load the script!'); }});
//同步加载 JavaScript 文件并使用 PromiseecodeSDK.loadjs('https://example.com/js/script.js', { async: false, returnPromise: true}).then(function () { console.log('Script loaded successfully!');}).catch(function () { console.error('Failed to load the script!');});
//加载 CSS 文件:ecodeSDK.loadjs('https://example.com/css/styles.css', { async: true, numRetries: 1, before: function () { console.log('Before loading the CSS...'); }, success: function () { console.log('CSS loaded successfully!'); }, error: function () { console.error('Failed to load the CSS!'); }});
//loadjs 加载第三方资源,注意加载次数,避免多次请求重复资源ecodeSDK.loadjs.isDefined('name') // 判断资源是否加载到-
window.weaJs
1. 提取当前窗口的 URL 中查询参数
从当前窗口的 URL 中提取查询参数,并将这些查询参数作为一个对象返回。
window.weaJs.getFrameParams()
参数说明
无
样例
// 调用 getFrameParams 方法获取当前页面的查询参数var params = window.weaJs.getFrameParams();
// 输出获取的查询参数对象console.log(params);2. 构建 options 对象调用 API
用于调用 API,根据传入的选项执行相应的操作;请注意,实际使用时,您需要根据具体的 API 接口和请求方法,调整选项中的 URL、method、params 等参数,以及根据需要处理返回的 API 响应。
window.weaJs.callApi(options)
参数说明
| 参数 | 参数类型 | 必须 | 说明 |
|---|---|---|---|
| options | Object | 是 | 包含调用 API 的选项的对象,可以指定以下参数。 |
| options.url | String | 是 | 要调用的 API 的 URL。 |
| options.method | String | 否 | 请求方法,默认为 ‘GET’。 |
| options.params | Object | 否 | 请求参数,作为 GET 或 POST 请求的参数。 |
| options.type | String | 否 | 指定返回数据的类型,默认为 ‘json’。 |
| options.deep | Boolean | 否 | 是否深度请求,针对复杂请求类型。 |
| options.checkCode | Boolean | 否 | 是否检查响应状态码,如果为 true,则会检查返回的状态码,否则不检查。 |
样例
var options = { url: 'https://api.example.com/data', method: 'POST', params: { key: 'value' }, type: 'json', deep: true, checkCode: false};
var ApiResponse = window.weaJs.callApi(options);console.log(ApiResponse);3. 显示弹窗提示
用于在页面上显示弹窗提示。该方法在移动端和 PC 端使用方式略有不同,会根据环境调用相应的弹窗组件或原生弹窗。
window.weaJs.alert(content)
参数说明
| 参数 | 参数类型 | 必须 | 说明 |
|---|---|---|---|
| content | String | 是 | 弹窗的提示信息内容。 |
样例
// 显示弹窗提示var content = "这是一个提示信息。";window.weaJs.alert(content);4. 显示对话框或浮层
用于显示对话框或浮层。根据页面运行环境,在 PC 端将创建对话框并显示指定 URL 的页面,而在移动端(0601 之后的版本)将创建一个浮层显示指定 URL 的页面。请注意,对话框和浮层的显示效果可能因具体页面环境和样式设置而有所不同。在移动端,创建的浮层可以通过
frameView.destory()方法来关闭。
window.weaJs.showDialog(url, params)
参数说明
| 参数 | 参数类型 | 必须 | 说明 |
|---|---|---|---|
| url | String | 是 | 要显示的页面的 URL。 |
| params | Object | 否 | 作为 GET 请求的参数,传递给要显示的页面。 |
- params 参数说明 (移动端默认为路由全屏,不支持设置特殊参数)
| 属性 | 说明 | 类型 |
|---|---|---|
| params.title | 标题 | String |
| params.moduleName | 模块名 | String |
| params.style | 弹框样式,一般用来设置宽高 | Object |
| params.callback | 确认回调 | Function |
| params.onCancel | 取消回调 | Function |
样例
// 在 PC 端显示对话框var url = 'https://example.com/dialog.html';var params ={title: '标题',moduleName: 'workflow',style: { width: 800, height: 600 },callback: function() {},onCancel: function() {},};
var dialog = window.weaJs.showDialog(url, params);
// PC端关闭对话框dialog.destory();
// 移动端关闭浮层frameView.destory();5. 创建自定义组件-Con
是一个构造函数,用于创建自定义组件。在这个方法中,定义了一个名为
WeaCon的类(同样继承自React.Component),用于创建自定义组件。
window.weaJs.Con()
参数说明
无
样例
// 使用 window.weaJs.Con 方法创建自定义组件var MyCustomComponent = new window.weaJs.Con();
// 定义组件的 render 方法MyCustomComponent.prototype.render = function() { return ( <div> <h1>Hello, This is another Custom Component!</h1> <p>It can also be used to render custom content.</p> </div> );};
// 渲染自定义组件ReactDOM.render(<MyCustomComponent />, document.getElementById('root'));
- 使用
window.weaJs.Con方法创建的自定义组件是一个类,继承自React.Component。- 组件创建的方式更接近传统的 ES6 类的写法,通过
class关键字和extends关键字来定义组件。- 适用于在 PC 端开发时,使用 React 库创建自定义组件。
6. 创建自定义组件-Custom
是一个构造函数,用于创建自定义组件。在这个方法中,定义了一个名为
WeaCustom的类(继承自React.Component),可以通过prototype.render方法定义组件的显示内容。
window.weaJs.Custom()
参数说明
无
样例
// 使用 window.weaJs.Custom 方法创建自定义组件var MyCustomComponent = new window.weaJs.Custom();
// 定义组件的 render 方法MyCustomComponent.prototype.render = function() { return ( <div> <h1>Hello, This is a Custom Component!</h1> <p>It can be used to render custom content.</p> </div> );};
// 渲染自定义组件ReactDOM.render(<MyCustomComponent />, document.getElementById('root'));
- 使用
window.weaJs.Custom方法创建的自定义组件也是一个类,同样继承自React.Component。- 组件创建的方式更接近传统的 JavaScript 构造函数的写法,通过原型链和构造函数来定义组件。
- 适用于在移动端开发时,使用 React 库创建自定义组件。