saas-dynamic-component-ihs
saas平台动态引擎组件库,目前包括查询引擎、表格引擎,后续待增加...
安装
npm install saas-dynamic-component-ihs --save-dev
试用范围
NornJ
+React
+Mobx-state-tree
项目模板
使用说明
- store文件注入
; const RootStore = types
- 修改webpack配置文件
webpack.config.js
,具体关注注释部分
__ENV: isProd || isTest ? "'pro'" : "'dev'" __HOST: isProd || isTest ? "''" : "'http://localhost:8089/'" __HOST_DYNAMIC: isProd || isTest ? `'//raas.jd.com/'` : "'http://localhost:8080/'" // 同域跨应用调用数据 __IS_BUILD: isProd || isTest ? true : false //标识是否构建 'process.env': 'NODE_ENV': JSON __JSPATH: JSON __COMMONHOST: isProd || isTest ? `''` : "'http://localhost:8089/'"
- 页面使用(举例)
- js文件,注意:flarej里面的组件引入不可缺少,否则影响正常使用
;;;;;;; ; ;
- html文件,举例如下
- 组件API
- 查询引擎
参数 | 说明 | 类型 |
---|---|---|
appCode | 应用code(应用标识) | string |
menuUrl | 菜单url(菜单标识) | string |
searchText | 按钮文本(不设置则按钮区域不显示,可支持自定义按钮,自定义请求),如使用国际化 | string |
onChange | 获取查询列表form数据,通常在不设置searchText时使用 | Function(form) |
onBuried | 点击查询按钮回调 | Function() |
- 表格引擎
参数 | 说明 | 类型 |
---|---|---|
appCode | 应用code(应用标识) | string |
menuUrl | 菜单url(菜单标识) | string |
tableAction | 表格操作属性(不设置则无操作列) | object |
scroll | 参考ant-design(talbe) | { x: number | true, y: number } |
showQuickJumper | 参考ant-design(pagination) | boolean |
showSizeChanger | 参考ant-design(pagination) | boolean |
rowSelection | 参考ant-design(table) | object |
onRef | 获取表格组件this,用于调用组件方法 | Function(ref) |
onChangeEdit | 可编辑项,编辑时回调,通常用于存储修改后的值,或增加一些校验信息。 | Function |
onChangePage | 点击分页回调 | Function(pagination, filters, sorter) |
bordered | 参考ant-design(talbe)bordered | boolean |
- 表格引擎内置方法
方法名 | 说明 | 参数 |
---|---|---|
loadData | 刷新当前页 | Page:不传默认当前页 |
changeGroupMember | 改变分组显示,只试用于表格分组模板 | Boolean:true展示所有组内成员,false展示默认显示成员 |
本地开发-调用测试环境接口方案
-
配置测试环境host
// 模板引擎举例19216815399 passportjdcom101824816 raasjdcom -
Chrome 浏览器安装插件
EditThisCookie
可自行去chrome应用商店搜索,并添加至浏览器,用于管理chookie信息,添加完后,会在浏览器地址栏右侧出现插件图标-小饼干。
webpack.config.js
配置文件中增加反向代理
// 将ypub-pass-web(用于模板引擎的服务)的接口全部代理到raas.jd.comdevServer: port: 8080 proxy: '/mockjs': target: 'http://rap.jd.com' secure: false changeOrigin: true '/ypub-paas-web': target: 'http://raas.jd.com/' secure: false changeOrigin: true
__ENV: isProd || isTest ? "'pro'" : "'dev'" __HOST: isProd || isTest ? "''" : "'http://localhost:8089/'" __HOST_DYNAMIC: isProd || isTest ? `'//raas.jd.com/'` : "'http://localhost:8080/'" // 将需要代理的接口配置为监听端口 __IS_BUILD: isProd || isTest ? true : false 'process.env': 'NODE_ENV': JSON __JSPATH: JSON __COMMONHOST: isProd || isTest ? `''` : "'http://localhost:8089/'"
注意:上方代码只需关注含注释的部分。
-
具体操作流程(模板引擎服务举例,其他同理)
-
登录租户端应用 raas.jd.com/tenant/ (使用配置的host环境账号进行登录)。
-
点击浏览器地址栏右侧
EditThisChookie
(小饼干)图标,粘贴出登录租户标识saassessionid
的值。 -
通过
npm run dev-web
启动你的本地项目,浏览器访问,点击EditThisChookie
图标,点击+
新增cookie,名称为saassessionid
,值为上一步粘贴的值,点击保存。 -
重新刷新页面,即可看到本地服务调取测试环境接口成功后的返回值。
-
说明:若一段时间后接口数据报错,可能为登陆过期,需要按具体操作流程重新操作一遍。
API具体使用
查询模板
appCode
和menuUrl
appCode为应用标识——即在SaaS运营端系统维护的标识编码
menuUrl为菜单标识——即在SaaS运营端系统维护的菜单编码
作用:这两个参数为后台接口提供,用于唯一确定在PaaS平台配置的模板信息,获取到模板信息完成组件渲染
searchText
按钮文字
如果使用react-intl-universal作为国际化工具,系统需要支持国际化,则使用如下:
语言变量keybtnCode
需要在locales文件加下语言文件里添加,key可自定义。
scroll
使用样例
// 根据配置列动态适应总宽度,可根据实际需求改动@computed { const store: tableEngine = thisprops; let length = tableEnginetableColumnslength; tableEnginetableColumns return x: length * 120 + 300 }
onChange
返回查询列表form,举例
@observable formEngine = null;@autobind { thisformEngine = form;} /* * 自定义按钮需要获取form数据时,如需进行虚拟字段(品牌、品类、地址)/时间格式翻译* 可调用searchEngine.translateForm方法,返回翻译后的form信息,如下*/@autobind { const store: searchEngine = thisprops; let params = searchEngine;}
onBuried
点击查询按钮的回调,举例(增加操作埋点)
; @autobind { ; // test_search为埋点标识,根据业务自行修改}
表格模板
appCode
和menuUrl
同查询模板,不再赘述。onRef
获取表格模板组件this
@observable refTable = null; //用于存储表格组件this @autobind { thisrefTable = ref;}
tableAction
为表格操作栏
@computed { return width: 150 fixed: 'right' title: '操作' dataIndex: 'handler' nj ` <#if }> <span> <a href="javascript:;" onClick= className="btn-link">保存</a> <a href="javascript:;" onClick= className="btn-link">取消</a> </span> <#else> <span> <a href="javascript:;" onClick= className="btn-link">编辑</a> </span> </#else> </#if> ` } @observable editLine = null;@autobind { const store: tableEngine = thisprops; thiseditLine = record; tableEngine;} @autobind { const store: tableEngine = thisprops; tableEngine; thiseditLine = null} @autobind { const store: tableEngine = thisprops; tableEngine; // 调取保存接口,保存数据 thisrefTable; // 保存成功后,刷新表格数据,this.refTable参考上一条说明}
onChangeEdit
编辑项在编辑态时,改变值回调函数
@autobind { /* * e 为ant design控件onChange的返回 * code 为 修改列的字段编码 * text,record, index 同表格操作render * callback 为表格模板分组 目标字段根据分组成员动态计算扩展回调,具体使用如下 * oldRecord 改变前的record值 */ // 此处例子说明:只能输入数字,否则出现错误提示,判定为数字,则分组内汇总字段(目标字段)根据填入的数字做动态求和。 if /^$/ ; // 参数说明:sum 为求和,avg 为求平均 else Message; etargetvalue = etargetvalue}
onChangePage
为点击分页回调
// 如分页埋点@autobind{ ;}
表格内置方法
-
loadData
刷新表格,使用可参考表格模板tableAction
说明。 -
changeGroupMember
改变分组表格的显示效果,即切换表格分组成员的默认显示/显示全部。
{show ? ('折叠分组', '展开分组')}
@observable show = false;@autobind { thisshow = !thisshow; thisrefTable;}