Controller:CollectionController
<next-tab-block-collection /> 是嵌入在 <n-tab-block /> 中的列表视图组件。
<next-tab-block-collection :name="name" :options="options" :params="params" :refer="refer" />
name: <n-tab-block /> 的名称。options: 列表视图的选项参数。params: 组件参数。refer: 组件参照内容。name 是 <n-tab-block /> 的名称。会显示在列表卡片顶部。
options 是组织列表视图的选项参数,必填。以下是 options 的默认参数值:
export default {
// 用于获取基础配置信息
getBaseConfig () {
return {
// options 作用域,保留字段
scope: '',
// 列表头部 icon
icon: 'ni-menuicon-default',
// 列表头部 title
title: '',
// 列表数据id的键名
idKey: 'id',
// 是否有页码总数
hasTotal: true,
// 列表单页数据长度, -1时隐藏页码组件
pageSize: 50,
// 自动刷新(分钟)
autoRefresh: 0,
// 动态列表样式
classIndex: null,
// 表格 props
tableProps: {
// 表格 允许拖动表头
hasResize: true,
// 表格 selection 宽度
selectionWidth: 41,
// 表格 operation 宽度
operationWidth: 104
}
}
},
// 用于获取统一的props
getUnifyProps: null,
// 用于获取默认参数
getDefaultParams: null,
// 用于获取筛选项配置
getFilterInputs: () => [],
// 用于获取表格的列配置项(优先于外部的columns参数)
getColumns: null,
// 用于获取列表数据
getDataList: () => ({ dataList: [] }),
// 用于获取列表数据的合计概况
getDataListSummary: null,
// 用于刷新指定数据
getDataListSync: () => [],
// 用于获取顶部操作菜单
getHeaderMenus: () => [],
// 用于获取表格数据操作菜单
getDataMenus: null,
// 用于获取表格所选数据操作菜单
getSelectionMenus: null,
// 用于数据点击事件的回调
onDataClick: null
}
在 NextCollectionController 控制器中,会将默认options与外部传入的 options 进行合并。
params 是组件参数,会注入到请求参数中。
refer 是组件参照内容,可用于获取外部数据。
在任意事件中均可使用 nvt.props.refer 获取当前函数的返回值。
该执行函数用于获取基础配置信息。默认值:
// 用于获取基础配置信息
function getBaseConfig () {
return {
// options 作用域,保留字段
scope: '',
// 列表头部 icon
icon: 'ni-menuicon-default',
// 列表头部 title
title: '',
// 列表数据id的键名
idKey: 'id',
// 是否有页码总数
hasTotal: true,
// 列表单页数据长度, -1时隐藏页码组件
pageSize: 50,
// 自动刷新(分钟)
autoRefresh: 0,
// 动态列表样式
classIndex: null,
// 自定义表格的参数
tableProps: {
// 允许拖动表格表头
hasResize: true,
// 表格 selection 列宽度
selectionWidth: 41,
// 表格 operation 列宽度
operationWidth: 104
}
}
}
该执行函数用于获取统一的props。抹平由于不同入口导致的参数差异。
在任意事件中均可使用 nvt.props 获取当前函数的返回值。
function getUnifyProps (nvt) {
return null
}
该执行函数用于获取默认参数,会将页面传入的 nvt.params 参数传给执行函数。
返回值将注入到组件参数。
function getDefaultParams (nvt) {
// 页面跳转携带的参数
// nvt.params
return nvt.params
}
该执行函数用于获取筛选项配置(支持异步函数)。
返回值为可用于 n-filter 组件的 inputs 参数值:
function getFilterInputs (nvt) {
return [
{
label: '模糊搜索',
type: 'search',
clearable: true,
name: 'QueryKeywords',
placeholder: '请输入物料型号',
filterHidden: false
}
]
}
该执行函数用于获取表格的列配置项。
优先于外部的 columns 参数,即定义该函数后,将忽略外部的 columns 参数。
返回值与外部 columns 相同:
function getFilterInputs (nvt) {
return {
name: '@CURRENT_PATH@',
data: [
{
title: '状态',
key: 'StatusStr',
width: 80
}
]
}
}
该执行函数用于获取列表数据(支持异步函数)。
返回值需要是包含 dataList 的分页数据类型。
function getDataList (nvt) {
// 请求参数
// nvt.params
return {
index: 1,
total: 0,
dataList: [],
hasMore: false
}
}
该执行函数用于获取列表数据的合计概况。
返回值为table的sum参数。
function getDataListSummary (nvt) {
// 当前参数
// nvt.params
return {}
}
该执行函数用于刷新指定数据。
返回值需要是数组。
function getDataListSync (nvt) {
// 需要的数据id
// nvt.getIds()
return []
}
该执行函数用于获取顶部操作菜单(支持异步函数)。
返回值是 menus 类型。
function getHeaderMenus (nvt) {
return [
{
power: false,
label: '上传质检图片',
quick: 1,
onClick: nvt => console.log(nvt)
}
]
}
该执行函数用于获取表格数据操作菜单(支持异步函数)。
返回值是 menus 类型。
function getDataMenus (nvt) {
return [
{
power: false,
label: '编辑',
quick: 1,
onClick: nvt => console.log(nvt)
}
]
}
该执行函数用于获取表格所选数据操作菜单(支持异步函数)。
返回值是 menus 类型。
function getSelectionMenus (nvt) {
return [
{
power: false,
label: '编辑',
quick: 1,
onClick: nvt => console.log(nvt)
}
]
}
该执行函数用于数据点击事件的回调。
function onDataClick (nvt) {
console.log(nvt)
}
刷新列表,一般用于新建,轻量编辑等场景。
在 menu.onClick 回调中,均可使用 nvt.refresh.current() 即可刷新列表数据。
列表数据刷新后,会以 dataList 作为标准,自动更新 selection 中的相同数据。如果数据在 dataList 中不存在,则不更新。
// hook:getDataList
nvt.refresh.current()
刷新列表,一般用于新建,重度编辑,需要强制更新数据状态的场景。
在 menu.onClick 回调中,均可使用 nvt.refresh.force() 即可刷新列表数据。
列表数据刷新后,会以 dataList 作为标准,自动更新 selection 中的相同数据。如果数据在 dataList 中不存在,则调用 options.getDataListSync 进行更新。
// hook:getDataList + getDataListSync
nvt.refresh.force()
刷新列表,一般用于删除数据等场景。
在 menu.onClick 回调中,均可使用 nvt.refresh.remove() 即可删除当前操作的数据,并刷新列表。
nvt.refresh.remove()
刷新 <next-collection-viewer /> 列表视图组件。
内部是调用了 refreshManager.viewer()
nvt.refresh.viewer()
刷新 <next-side-viewer /> 详情视图组件的 getContentData。
内部是调用了 refreshManager.side()
nvt.refresh.side()
刷新 <next-side-viewer /> 详情视图组件的 <n-tab-chunk />。
内部是调用了 refreshManager.chunk()
nvt.refresh.chunk()
任意选项回调中,均可使用 nvt.props 获取 props。
NextCollectionController 使用 init 单例函数进行初始化。
因为是单例函数,所以可以直接调用函数检测等待初始化完毕。
await controller.init()
// 初始化完毕后执行
init 内部的执行内容/顺序如下:
// 初始化 Actuator/Action
// 【hook】 getColumns
await this._initActions()
// 初始化props
// 【hook】 getUnifyProps
await this._initProps()
// 初始化参数
// 【hook】 getDefaultParams
await this._initParams()
// 初始化config
// 【hook】 getBaseConfig
await this._initConfig()
// 初始化分页
await this._initPaginate()