Appearance
列表模板使用说明
QListLayout
是一个通用的列表模板,它集成了列表页面的基础功能,包括表单查询、快速筛选、表格按钮组、表格选项组等。所有这些功能都是通过配置来生成的。以下将详细介绍各个功能模块的使用方法、案例代码以及 API 展示。 列表按钮组配置
QListLayout 实例化
- 通过
ref
获取QListLayout
实例中的方法或变量,例如fetchListData()
。这可以用于刷新列表、控制列表加载状态、获取列表中的选中项等。
vue
<q-list-layout
ref="listLayoutRef"
:apiUrls="apiUrls"
:pageData="pageData"
></q-list-layout>
<script setup>
import { ref } from "vue";
const listLayoutRef = ref();
// 刷新列表
listLayoutRef.value.fetchListData();
// 刷新列表,并携带其他自定义参数,也可以通过在formState对象里面添加
listLayoutRef.value.fetchListData({ extraParams: { test: "test" } });
// 获取列表中的勾选项目
listLayoutRef.value.gridInstance.getCheckboxRecords();
// 打开列表加载状态
listLayoutRef.value.loading = true;
</script>
事件名/属性名 | 说明 | 回调参数/类型 | 版本 |
---|---|---|---|
fetchListData | 列表加载方法 | (params?: FetchDataOptions) => void |
fetchListData
方法的类型定义如下:
ts
(params?: FetchDataOptions) => void
export interface FetchDataOptions {
propsData?: ListContent | {
[key: string]: any;
};
extraParams?: {
[key: string]: unknown;
};
pagerConfig?: VxeGridPropTypes.PagerConfig;
formState?: ObjectMap;
statusFilter?: ObjectMap;
getParams?: () => {
[key: string]: unknown;
};
}
API
QListLayout 列表模板参数
参数 | 说明 | 类型 | 默认值 |
---|---|---|---|
apiUrls | HTTP 请求 URL 配置 | object | - columnsCode: 列项 code - list: 列表查询接口 - countTabsUrl: 状态事项接口 |
pageData | 页面配置 | object | - optionConfig: 列操作按钮配置 - buttonConfig: 列表按钮组配置 - queryConfig: 页面查询配置 - pagerConfig: 页码配置 - navConfig: 快速导航 - statusConfig: 事项状态 - filterConfig: 快速筛选 - listMergeConfig: 列表合并配置 - toolsConfig: 工具栏按钮配置 - localColumns: 本地列项默认会跟接口返回的列项合并 - isUseLocalColumns:是否只用本地列项,跟 localColumns 一起用 - foldIconHide: 布尔值,是否隐藏头部折叠图标 |
extraListConfig | 表格配置拓展,参考 vxetable | object | 自定义表格配置 |
apiUrls 配置示例
json
const apiUrls = reactive({
columnsCode: 'purchaseRequestHeadList',
excelCode: 'PurchaseRequestHeadExcel',
list: '/demand/purchaseRequestHead/list',
countTabsUrl: '/demand/purchaseRequestHead/counts',
})
如果特殊列表的请求方式不同,可以通过 method
属性进行配置:
json
const apiUrls = reactive({
columnsCode: 'purchaseRequestHeadList',
excelCode: 'PurchaseRequestHeadExcel',
list: {
url: '/demand/purchaseRequestHead/list',
method: 'get',
},
countTabsUrl: '/demand/purchaseRequestHead/counts',
})
pageData 配置示例
ts
import type { GlobalListPageLayoutTypes } from "@qqt-product/ui";
const pageData = reactive<GlobalListPageLayoutTypes.PageData>({
optionConfig: {
options: [
// ...
],
},
buttonConfig: {
buttons: [
// ...
],
},
queryConfig: {
form: [
{
type: "input",
label: "关键字",
fieldName: "keyWord",
},
],
formState: {
keyWord: "",
},
},
listMergeConfig: {
options: [
{
title: srmI18n("i18n_field_it_c9c61", "整单"),
key: "head",
},
{
title: srmI18n("i18n_dict_RH_cda78", "明细"),
key: "item",
},
],
change(event, value, options) {
// 事件 ...
console.log(event, value, options);
},
currentValue: "head",
},
statusConfig: {
show: false,
},
filterConfig: {
show: false,
},
navConfig: {
show: false,
},
});
事件
事件名 | 说明 | 回调参数 | 版本 |
---|---|---|---|
cellClick | 表格点击触发 | ||
afterChangeTab | 头部状态事项选中触发 | ({currentValue,tabsData})=> void | |
addButtonClick | 新增按钮点击事件 | ({ row }: { row: GlobalPageLayoutTypes.CurrentRow })=> void |
状态事项回调方法例子
可参考-菜单-竞价管理 /srm/enquiry/ebiddingHead/list
afterChangeTab
<q-list-layout ref="listLayoutRef" :apiUrls="apiUrls" :pageData="pageData" @add-button-click="handleCreate" @afterChangeTab="afterChangeTab" />
省略...
function afterChangeTab({ currentValue }) {
pageData.queryConfig.formState.ebiddingStatus = currentValue
}
本地列项配置
需要配置 localColumns, 默认会和列表接口返回的列项合并,以下是个例子
js
// ...省略其他代码
const pageData = {
localColumns: [
{
title: srmI18n(`i18n_field_eBLRL_9daf066b`, "投标人名称"),
field: "supplierName",
},
{
title: srmI18n(`i18n_field_YVey_43196f4f`, "退款账号"),
field: "refundAccount",
},
{
title: srmI18n(`i18n_field_YVeyDR_e2871045`, "退款账号户名 "),
field: "refundName",
},
{
title: srmI18n(`i18n_field_YVeyvDc_6e512646`, "退款账号开户行"),
field: "bankName",
},
{
title: srmI18n(`i18n_field_YVKEy_1feb0481`, "退款联行号"),
field: "interBankNo",
},
{
title: srmI18n(`i18n_field_YVHfWjW_d1a4b644`, "退款金额(元)"),
field: "refundAmount",
},
{
title: srmI18n(`i18n_field_YVKI_4314f27c`, "退款时间"),
field: "updateTime",
},
{
title: srmI18n(`i18n_field_YVzE_431647c9`, "退款状态"),
field: "status_dictText",
},
],
};
如果只想使用本地列项,则配置 isUseLocalColumns 为 true 即可,配置后不会进行列项请求,以下是示列
js
// ...省略其他代码
const pageData = {
isUseLocalColumns: true, // 设置为true
localColumns: [
{
title: srmI18n(`i18n_field_eBLRL_9daf066b`, "投标人名称"),
field: "supplierName",
},
{
title: srmI18n(`i18n_field_YVey_43196f4f`, "退款账号"),
field: "refundAccount",
},
{
title: srmI18n(`i18n_field_YVeyDR_e2871045`, "退款账号户名 "),
field: "refundName",
},
{
title: srmI18n(`i18n_field_YVeyvDc_6e512646`, "退款账号开户行"),
field: "bankName",
},
{
title: srmI18n(`i18n_field_YVKEy_1feb0481`, "退款联行号"),
field: "interBankNo",
},
{
title: srmI18n(`i18n_field_YVHfWjW_d1a4b644`, "退款金额(元)"),
field: "refundAmount",
},
{
title: srmI18n(`i18n_field_YVKI_4314f27c`, "退款时间"),
field: "updateTime",
},
{
title: srmI18n(`i18n_field_YVzE_431647c9`, "退款状态"),
field: "status_dictText",
},
],
};
自定义表格配置
extraListConfig
选项默认会与表格的标准配置自动合并。若需要对表格的行高或其他属性进行定制,可以参考vxe-grid
组件的详细参数说明文档进行配置。
例如,若业务需求中需要调整表格的行高
vue
// ...省略其他代码
<q-list-layout :extraListConfig="{ rowConfig: { height: 80 } }" ref="listLayoutRef" />