tg-turing
- tg-turing 视图数据适配引擎
- 模型驱动组件库:res.wisedu.com
基本用法
npm i tg-turing --save
定义一个视图数据适配器,如:Dept.js
适配器中包含两部分:
- 视图的定义; 即表单、表格所需要呈现的字段属性的定义。
- 数据操作的定义;
es6 写法
{ super //视图定义 let views = //default这一段是基础属性会与以下其他的视图定义做合并输出 "default": id: caption: "编号" name: caption: "名称" pId: caption: "父级部门编号" //以下视图定义根据业务需要,进行追加,每个属性即对于default的扩展 "默认列表:table": id: name: minWidth:150 pId: {} "默认表单:form": id: {} name: {} pId: xtype:"tree" url:"/api/dept" "查询": thisactionsfindurl = "/api/dept"; thisactionsfindmethod = "get" thisactionssaveurl = "/api/dept/save"; thisactionsdeleteurl = "/api/dept/{id}"; thisactionsdeletemethod = "delete" this; } { let props = name let antdtype = props1; return TgTgAntd; } { return TgAntd } { //覆盖一个findAll,一般用在新的实例上。 thisactionsfindurl = "/api/dept/scdFindAll"; return this }
获取对应view table组件的columns定义
let inst = ;let columns = inst console "caption":"编号""title":"编号""key":"id""minWidth":120 "caption":"名称""title":"名称""key":"name""minWidth":150 "caption":"父级部门编号""title":"父级部门编号""key":"pId""minWidth":120
默认列表:table
属性与 default
属性 合并再经过 antdAdapter 转换,返回以上属性结果,与 iview table column 相匹配,可以如下方示例,直接绑定到 table 的 columns 属性上
数据赋值
为了配合 Vue.js的响应式机制 ,需要初始化时就构造完整的数据项,以便在过程中补充新的数据项时,监听器仍然生效。
- 提供了根据视图模型构造初始数据对象的方法:initData
- 整个数据赋值,为了保证每个数据项的监听器可以被正确的触发,请使用浅拷贝方法:Object.assign。IE系列不支持,需要通过Polyfill来支持
{ return fields: inst data: inst } { inst }
查询数据动态条件 querySetting
/** * Dept.vue: * this.searchValues = {"字段":"值","User.字段":"值"} * * */methods: { instquerySetting = inst; inst; }/** * 提交值: * { * querySetting:{ "Dept":{"字段":"值"},"User":{"字段":"值"} } * where: * } * */
获取数据 findAll
继承后,带有 findAll 方法可以查询数据
let inst = ;inst;
提交地址在构造函数中的 this.actions.findAll.url
中已经配置,默认提交的数据结构如下:
this.actions.findAll.params
中可以配置固定查询参数,会与findAll传入的参数做合并,传入参数的优先级高- 数据格式与 Sequelize 接近
"where": "created_at":"2018-05-16T15:41:16.000Z" "parentId":"00001" "order":"created_at":"+""workcode":"+" "offset":0"limit":100
排序
使用order方法,设置排序,该参数只在findAll方法中生效。
methods: { instquerySetting = inst; inst; } { let keys = paramkey if paramorder !== "normal" inst; else inst; this }
提交参数格式需要 自定义
findAll 执行过程中提供以下两个事件可以用于参数 格式处理:
- function beforeFindAll(action, params, props) : Object
- function afterFindAll(data, action) : Object
需要在构造函数中进行定义,具体示例可以参见底部的 es5 示例
保存数据 save
inst
删除数据 delete
inst
视图属性的定义
以下定义为我们所约定的标准化属性,依此映射到不同风格的实现组件库,如:ant desgin
使用视图定义的展现组件:
- 表单组件:formConnector
- 表格组件:gridBuilder
action 默认定义
actions = save: url: "" method: "post" name: "" delete: url: "" method: "post" name: "" find: url: "" method: "post" name: "" params: {} orders: include:
变量参数
url里面可以写{变量名},会由params中的数据替换掉 如:
thisactionsdeleteurl = "/api/dept/{id}";... this
es5 写法
{ { exportsDataAdapter; exportsaxiosdefaultsheaderspost'Content-Type' = 'application/x-www-form-urlencoded'; exportsaxiosdefaultstransformRequest = { var ret = for var it in data ret return ret; } this { return Object } this{ return datadatasactionname; } } ExampleDataAdapterprototype = ; exportsExampleDataAdapter = ExampleDataAdapter;}window"tg-turing" var da = "tg-turing";