API 配置

type

  • 类型:string
  • 默认值:undefined定义表单类型的block,目前可用类型有form list dialog

resource

  • 类型:string
  • 默认值:undefined该block对应注册的resource名称,如resource: 'demo'对应的是ams.resource('demo', Config)

ctx

  • 类型:string
  • 默认值:view表单的显示类型,可选值为view(预览) edit(编辑)

若在block的fields有定义ctx,则优先级的判断如下:

ctx

优先级1:检查blocks中fields对应field是否有ctx,如果有则应用

优先级2:检查注册的resource中对应的field是否有ctx,如果有则应用

优先级3:应用blocks本身的ctx,若无设置则默认为view

props

优先级1:检查blocks中fields对应field是否有props,如果有则应用

优先级2:检查注册的resource中对应的field是否有ctx,如果有则应用

优先级3:使用默认field的props。附默认列表

style

  • 类型:object
  • 默认值:undefined给block添加样式,如
  1. style: {
  2. width: '50%'
  3. }

data

  • 类型:object
  • 默认值:undefined
  1. data: {
  2. testRadio: 'c'
  3. }

内置可赋值的data为:

data.page

当type为list时有效,设置page数值

data.total

当type为list时有效,设置total数值

data.list

当type为list时有效,设置list的初始化数据

其他赋值

当type为form,可以设置对应field的值作为默认展示的值,如data: { testRadio: 'c' }

当type为error, data配置如下

  1. data: {
  2. img: 'Url | Base64',
  3. title: 'String', // 默认为Error
  4. subtitle: 'String' // 默认为Opps,some error happen !
  5. }

events

详见event 与 action

  • 类型:object且{ [field: string]: string }
  • 默认值:undefined表单的事件定义
  1. events: {
  2. init: '@read',
  3. submit: '@validate @confirm:确认提交吗? @update',
  4. cancel: '@cancel',
  5. dialog: '@demo-dialog.show'
  6. }

定义block的事件流,采用链式action调用,前一个action执行完之后再调用下一个action,多个action之间用空格隔开

submit: '@validate @confirm:确认提交吗? @update'表示为:

执行validate -> 执行confirm,传参确认提交吗 -> 执行update

  • action的传参有以下几种:

    • 通过@action:args传参,如@confirm:确认提交吗?,调用confirm事件,传参确认提交吗

    • 通过@block.action:args1,args2传参,如@demo-dialog.show,调用demo-dialogblock中的show事件

actions

详见event 与 action

  • 类型:{ function({ name: string, value: any }): void }
  • 默认值:undefined
  1. actions: {
  2. fieldChange({ name, value }) {
  3. if (name === 'testSwitch') {
  4. this.block.fields.testPassword.props.disabled = !value
  5. }
  6. },
  7. cancel() {
  8. this.$router.back()
  9. }
  10. }

内置的action有详见:

event 与 action

可以自定义actions,可被events中使用,如果定义跟内置action同名则会覆盖默认提供方法,异步操作需要返回 Promise 或者使用 async 函数

field的数据变更触发可以通过在actions中定义fieldChange获取对应的值,方法参数为

fieldChange({ field, name, value, path })

fields

  • 类型:object
  • 默认值:undifined
  1. fields: {
  2. id: {
  3. label: '新id名',
  4. props: {
  5. disabled: false
  6. }
  7. },
  8. testPassword: {
  9. props: {
  10. disabled: false
  11. }
  12. },
  13. // 字段隐藏
  14. testAudio: false
  15. }

用于block级别作用域的fields,重置resource中的默认配置

operations

  • 类型:object
  • 默认值:undefinedtype代表按钮类型,有button icon dropdown类型。

slot代表按钮的位置,如果没有设置slot的位置,默认会在每行的操作项中,若设置,目前有以下的配置:

  • searchs 搜索栏;
  • multipleSelect复选栏,当复选框有值时才会出现tooltip代表hover到按钮上出现的文案

event代表点击该按钮时,会触发的event同名事件

show代表按钮出现的条件,可以配置string或者function(content),content是按钮所在行的数据

  1. operations: {
  2. dropdown: {
  3. slot: 'searchs',
  4. type: 'dropdown',
  5. label: '更多搜索',
  6. event: 'list',
  7. props: {
  8. placeholder: '搜索...'
  9. },
  10. style: {
  11. width: '300px'
  12. },
  13. fields: {
  14. department_id: true,
  15. activity_type: true,
  16. category: true,
  17. grade: true,
  18. status: true,
  19. act_no: true,
  20. start_time: true,
  21. end_time: true
  22. }
  23. },
  24. act_id: {
  25. slot: 'searchs',
  26. type: 'field',
  27. field: 'act_id',
  28. label: 'id'
  29. },
  30. title: {
  31. slot: 'searchs',
  32. type: 'field',
  33. field: 'title',
  34. label: '活动名称'
  35. },
  36. search: {
  37. slot: 'searchs',
  38. type: 'button',
  39. props: {
  40. type: 'primary'
  41. },
  42. label: '搜索',
  43. event: 'list'
  44. },
  45. reset: {
  46. slot: 'searchs',
  47. type: 'reset',
  48. label: '重置',
  49. event: 'reset'
  50. },
  51. deleteMulti: {
  52. slot: 'multipleSelect',
  53. type: 'button',
  54. label: '删除',
  55. event: 'deleleAction'
  56. },
  57. delete: {
  58. type: 'button',
  59. props: {
  60. size: 'mini',
  61. type: 'danger',
  62. icon: 'el-icon-delete',
  63. circle: true
  64. },
  65. tooltip: '删除',
  66. show: 'operations.allow_del'
  67. },
  68. copy: {
  69. type: 'button',
  70. props: {
  71. size: 'mini',
  72. type: 'primary',
  73. icon: 'el-icon-document-copy',
  74. circle: true
  75. },
  76. tooltip: '复制活动'
  77. },
  78. approve: {
  79. type: 'button',
  80. props: {
  81. size: 'mini',
  82. type: 'primary',
  83. icon: 'el-icon-check',
  84. circle: true
  85. },
  86. tooltip: '审核通过',
  87. show(context) {
  88. return context.status !== ActivitiesAuditStatus.Draft ? context.operations.allow_audit : false
  89. }
  90. },
  91. reject: {
  92. type: 'button',
  93. props: {
  94. size: 'mini',
  95. type: 'danger',
  96. icon: 'el-icon-close',
  97. circle: true
  98. },
  99. tooltip: '审核不通过',
  100. show(context) {
  101. return context.status !== ActivitiesAuditStatus.Draft ? context.operations.allow_audit : false
  102. }
  103. }
  104. }

另外提供了简化的常用配置,目前有:

  1. operations: {
  2. BASE: 'FORM_SUBMIT'
  3. }
  4. 等同于
  5. operations: {
  6. submit: {
  7. type: 'button',
  8. label: '提交',
  9. props: {
  10. type: 'primary'
  11. }
  12. }
  13. }

上述例子中,当点击submit按钮时,会调用events中的同名events方法,若没有绑定同名event则调用同名action

点击前往更多operations相关介绍

blocks

  • 类型:object
  • 默认值:undefined可以定义嵌套的blocks数据,如
  1. adminEditDialog: {
  2. type: 'dialog',
  3. data: {
  4. title: '编辑',
  5. visible: false
  6. },
  7. events: {
  8. submit: 'editDialogForm.submit'
  9. },
  10. actions: { },
  11. operations: {
  12. submit: {
  13. type: 'button',
  14. label: '提交',
  15. props: {
  16. type: 'primary'
  17. }
  18. },
  19. hide: {
  20. type: 'button',
  21. label: '关闭'
  22. }
  23. },
  24. blocks: {
  25. editDialogForm: {
  26. type: 'form',
  27. resource: 'resource-admin',
  28. ctx: 'edit',
  29. events: {
  30. init: '@read',
  31. submit: '@validate @update adminListView.init @adminEditDialog.hide'
  32. }
  33. }
  34. }
  35. }
  36. // 上述代码会注册 adminEditDialog 和 editDialogForm 两个blocks
  37. // 其中editDialogForm包含在adminEditDialog中

render

  • 类型: boolean | string
  • 默认值:undefined根据render的参数注册一个ams-block,可用于unpkg版本(直接用 script 引入)的ams

render值为true,或者根据document.querySelector(render)查询不到对应dom节点,则注册一个默认的ams-block

render值根据document.querySelector(render)能查询到,则创建一个在该DOM结构下的ams-block

filters (list) list独有

  • 类型:object
  • 默认值:{}block的type为list时独有字段

设置列表的过滤条件,如

  1. filters: {
  2. testCheckbox: {
  3. multiple: false,
  4. remote: true
  5. },
  6. testSelect: {
  7. multiple: true,
  8. remote: false
  9. }
  10. }
  11. // `multiple` 表示是否支持多选,boolean值
  12. // `remote` 表示是否支持远程过滤,boolean值

sorts (list) list独有

  • 类型:object且{ [field: string]: boolean }
  • 默认值:{}block的type为list时独有字段

列表排序设置,如

  1. sorts: {
  2. testInputnumber: true
  3. }

searchs (list) list独有

  • 类型:object且{ [field: string]: boolean }
  • 默认值:undefinedblock的type为list时独有字段

列表搜索设置,如

  1. searchs: {
  2. testText: true,
  3. testTextarea: true
  4. }

searchsOptions (list) list独有

  • 类型:object
  • 默认值:undefinedblock的type为list时独有字段

列表的搜索栏添加操作项,目前type只有button类型,如

  1. searchsOptions: {
  2. addItem: {
  3. type: 'button',
  4. label: '添加',
  5. props: {
  6. type: 'primary'
  7. }
  8. }
  9. }

pageSize (list) list独有

  • 类型:number
  • 默认值:20block的type为list时独有字段

设置分页时每页的条数,赋值优先级为block.data.pageSize -> block.pageSize

router (router) router独有

  • 类型:object
  • 默认值:undefinedblock的type为router时独有字段

options

  • 类型:object
  • 默认值:{}详见各种block的配置。比如block的type为chart时:
  1. // 图表配置
  2. options: {
  3. // 图表类型,line 折线图,bar 柱状图,pie 圆饼图
  4. type: 'line',
  5. // 图表的标题和子标题
  6. title: {
  7. text: 'data.title',
  8. subtext: '我是副标题'
  9. },
  10. // 图例显示
  11. legend: {
  12. data: 'data.legend'
  13. },
  14. // x轴数据
  15. xAxis: {
  16. data: 'data.xAxis'
  17. },
  18. // 图标的提示组件,全局设置
  19. tooltip: {
  20. trigger: 'axis' // 触发类型, axis 坐标轴触发
  21. },
  22. series: [
  23. {
  24. name:'邮件营销',
  25. data: 'data.series1'
  26. },
  27. {
  28. name:'联盟广告',
  29. data: [220, 182, 191, 234, 290, 330, 310]
  30. }
  31. ]
  32. }

props

  • 类型:object
  • 默认值:undefined主要是用来透传Element组件的属性配置,详见各种block的配置。

on

  • 类型:object
  • 默认值:undefined主要是用来透传Element组件的方法配置,详见各种block的配置。