Skip to content

实例方法与事件 ​

暴露方法(Ref) ​

通过 ref 获取组件实例后可调用:

方法说明
refresh()刷新列表(重新请求 api)
reset()重置搜索条件并刷新列表
getTableData()返回当前表格数据数组
getSelectedRows()返回当前选中的行数组(多选为多条,单选为 0/1 条)
getPagination()返回当前分页 { page, size, total }
getSearchParams()返回当前搜索表单值
openAdd(data?)打开新增弹窗(需配置 formConfig),可传初始回显数据
openEdit(row)打开编辑弹窗(需配置 formConfig),传入当前行数据用于回显
openCopy(row)打开复制弹窗(需配置 formConfig),传入当前行数据并去除主键用于回显;表单 type 为 copy
closeForm()关闭当前表单弹窗/整页表单
isFormOpen()返回当前表单是否处于打开状态
getFormState()返回当前表单状态 { visible, type, row, params }
getFormRef()返回内部 FormPopup 组件实例
getFormData()返回当前表单数据(需已打开表单)
setFormData(data)设置整表表单数据(需已打开表单)
patchFormData(data)部分更新表单数据(需已打开表单)
validateForm()触发表单校验,返回 Promise(需已打开表单)
getDataTableRef()返回内部 DataTable 组件实例
vue
<template>
  <pro-table ref="tableRef" :table-config="tableConfig" :search-config="searchConfig" :form-config="formConfig" />
</template>
<script setup>
import { ref } from 'vue'
const tableRef = ref(null)
// 刷新列表
tableRef.value?.refresh()
// 重置并刷新
tableRef.value?.reset()
// 获取选中行
const rows = tableRef.value?.getSelectedRows()
// 外部打开新增弹窗,并回显初始数据
tableRef.value?.openAdd({ type: 'admin', status: 1 })
// 外部打开编辑弹窗,并传入当前行数据
tableRef.value?.openEdit({ id: 1, name: 'Tom', status: 1 })
// 外部打开复制弹窗
tableRef.value?.openCopy({ id: 1, name: 'Tom', status: 1 })
// 当前表单是否打开
const opened = tableRef.value?.isFormOpen()
// 获取当前表单状态
const formState = tableRef.value?.getFormState()
// 获取当前表单数据(需先打开表单)
const formData = tableRef.value?.getFormData()
// 获取内部表单实例
const formRef = tableRef.value?.getFormRef()
// 设置整表数据
tableRef.value?.setFormData({ name: 'Jerry', status: 0 })
// 部分更新表单数据
tableRef.value?.patchFormData({ status: 1 })
// 主动触发表单校验
tableRef.value?.validateForm()
// 主动关闭表单
tableRef.value?.closeForm()
</script>

表单相关控制 ​

js
const tableRef = ref(null)

// 打开新增,并传入初始数据
tableRef.value?.openAdd({ type: 'admin', status: 1 })

// 打开编辑/复制
tableRef.value?.openEdit(row)
tableRef.value?.openCopy(row)

// 关闭表单
tableRef.value?.closeForm()

// 判断当前表单状态
const opened = tableRef.value?.isFormOpen()
const state = tableRef.value?.getFormState()

// 读取 / 操作表单数据(需已打开表单)
const data = tableRef.value?.getFormData()
tableRef.value?.setFormData({ name: 'Jerry' })
tableRef.value?.patchFormData({ status: 1 })
await tableRef.value?.validateForm()

autoFetch: false 场景 ​

需要先请求外部接口拿到参数再加载表格时,将 requestConfig.autoFetch 设为 false,在外部数据就绪后手动调用 refresh():

vue
<template>
  <pro-table ref="tableRef" :table-config="tableConfig" />
</template>

<script setup>
import { ref, onMounted } from 'vue'

const tableRef = ref(null)
const orgId = ref(null)

const tableConfig = {
  requestConfig: {
    autoFetch: false,
    api: getList,
    params: () => ({ orgId: orgId.value })
  }
}

onMounted(async () => {
  // 先拿到依赖数据
  const res = await getOrgInfo()
  orgId.value = res.id
  // 再触发表格加载
  tableRef.value?.refresh()
})
</script>

事件 ​

事件名说明
back点击工具栏「返回」按钮时触发(需配置 toolbarConfig.showBack: true),可在回调中执行 router.back() 或切换列表视图