Skip to content

组件事件

DrForm 事件

事件名参数说明
update:model(model: object)表单数据更新
submit-提交事件(配合 CipFormLayout)
cancel-取消事件(配合 CipFormLayout)

DrSearchForm 事件

事件名参数说明
update:model(model: object)搜索数据更新
search(model: object)点击搜索按钮
vue
<template>
  <DrSearchForm 
    v-model:model="searchModel" 
    :fieldList="fieldList"
    @search="handleSearch"
  />
</template>

<script setup>
const handleSearch = (model) => {
  console.log('搜索条件:', model)
}
</script>

DrTable 事件

事件名参数说明
update:data(data: array)表格数据更新
select(selection: array, row: object)选择变化
select-all(selection: array)全选变化
selection-change(selection: array)选择变化
cell-mouse-enter(row, column, cell, event)单元格鼠标进入
cell-mouse-leave(row, column, cell, event)单元格鼠标离开
cell-click(row, column, cell, event)单元格点击
cell-dblclick(row, column, cell, event)单元格双击
row-click(row, column, event)行点击
row-contextmenu(row, column, event)行右键
row-dblclick(row, column, event)行双击
header-click(column, event)表头点击
header-contextmenu(column, event)表头右键
sort-change({ column, prop, order })排序变化
filter-change(filters)筛选变化
current-change(currentRow, oldCurrentRow)当前行变化
header-dragend(newWidth, oldWidth, column, event)列宽拖动
vue
<template>
  <DrTable 
    v-model:data="tableData" 
    :columns="columns"
    @selection-change="handleSelectionChange"
    @row-click="handleRowClick"
    @sort-change="handleSortChange"
  />
</template>

<script setup>
const handleSelectionChange = (selection) => {
  console.log('选中行:', selection)
}

const handleRowClick = (row, column) => {
  console.log('点击行:', row)
}

const handleSortChange = ({ prop, order }) => {
  console.log('排序:', prop, order)
}
</script>

DrFormItem 事件

事件名参数说明
update:model(model: object)数据更新

字段级别事件

在字段配置中可以通过 dependOn 实现字段级别的事件处理:

js
{
  name: {
    type: 'input',
    label: '姓名',
    dependOn: ['age'],
    changeValue: ({ age }) => {
      // 当 age 变化时执行
      console.log('age changed:', age)
      return { value: '' }
    }
  }
}

或使用 changeEffect 拦截值更新:

js
{
  amount: {
    type: 'number',
    label: '金额',
    changeEffect: async (value, key, model) => {
      // 可以在这里做异步校验
      if (value > 10000) {
        const confirmed = await showConfirm('金额超过 10000,确认吗?')
        return confirmed
      }
      return true
    }
  }
}