Skip to content

Runtime 接口

SchemlyRenderer

vue
<SchemlyRenderer
  :schema="schema"
  :data="data"
  :providers="providers"
  :loading="loading"
  :empty-text="emptyText"
  :empty-image="emptyImage"
  @action="onAction"
  @createSubmit="onCreateSubmit"
  @updateSubmit="onUpdateSubmit"
  @submit="onSubmit"
  @reset="onReset"
  @sort-change="onSortChange"
  @page-change="onPageChange"
  @selection-change="onSelectionChange"
  @denied="onDenied"
/>

Props

prop类型必填默认值说明
schemaobjectSchema JSON
dataarray / object数据(DataTable 数组,Descriptions 对象,Form 对象或不传)
providersobject{}外部依赖注入
loadingbooleanfalse加载状态
emptyTextstring"暂无数据"空状态文案
emptyImagestring空状态图片 URL

Events(DataTable)

eventpayload触发场景
action{ key, row }行操作(非 trigger、非 batch)
action{ key, rows }批量操作(batch: true)
createSubmit{ values }createForm 提交
updateSubmit{ values, row }updateForm 提交
sort-change{ key, order }列头排序,order: "ascending" / "descending" / null
page-change{ page, pageSize }分页变化
selection-change{ rows }行选择变化
denied{ permission }Type 级权限不足

Events(Form)

eventpayload触发场景
submit{ values }表单提交
reset{}表单重置

Events(Descriptions)

无事件。

providers 完整结构

javascript
const providers = {
  // 静态字典数据
  dicts: {
    roleList: [
      { label: '管理员', value: 'admin' },
      { label: '编辑', value: 'editor' }
    ]
  },

  // 统一的函数注入(合并 api / remote / upload / validator)
  functions: {
    fetchDeptList: () => api.getDepartments(),
    fetchRoleList: () => api.getRoles(),
    searchUser: (query) => api.searchUser({ keyword: query }),
    uploadImage: (file) => api.uploadImage(file),
    uploadFile: (file) => api.uploadFile(file),
    validateAmount: (rule, value, callback) => {
      if (value <= 0) callback(new Error('金额必须大于 0'))
      else callback()
    }
  },

  // 权限校验
  auth: {
    hasPermission: (code) => currentUser.permissions.includes(code)
  },

  // 行操作动态控制(可选)
  actionControl: (row) => ({
    edit: row.status !== 'done',
    delete: row.createdBy === currentUser.id ? true : 'disabled'
  }),

  // 工具栏操作动态控制(可选)
  toolbarControl: () => ({
    batchDelete: selectedRows.length > 0
  }),

  // 自定义格式化(可选)
  formatters: {
    customMoney: (value) => `${value} 元`
  }
}

命名空间

命名空间说明
dicts静态字典数据
functions所有注入函数,签名由 externalDeps.functions 中的 type 约定
auth权限校验
actionControl行操作动态控制(可选)
toolbarControl工具栏操作动态控制(可选)
formatters自定义格式化(可选)

Released under the MIT License.