组件、公共方法使用
平台统一样式、统一功能、统一维护、减少重复代码;基于 element-plus 二次封装,支持所有原生饿了么组件属性、事件
表格:fs-el-tabel
<fs-el-table ref="fsTable" :tableConfig="tableConfig" v-model="queryParams">
<template #searchformItem>
<el-form
ref="searchForm"
label-position="right"
:inline="true"
:model="queryParams">
<el-form-item label="待办事项">
<el-input v-model="queryParams.todoItem" placeholder="请输入待办事项" />
</el-form-item>
</el-form>
</template>
<template #todoCategoryName="scope">
<span>{{ scope.row.todoCategoryName }}</span>
</template>"
<el-table-column prop="date" label="Date" />
<el-table-column label="操作" fixed="right" width="240" align="center">
<template #default="{ row }">
<div class="operation-box">
<el-icon v-show="funPower.delete && row.dataSource === 2" class="op-icon"
title="删除" @click="onDelete(row.id)">
<Delete />
</el-icon>
<el-icon v-show="row.dataSource === 2" class="op-icon"
title="修改" @click="goTo(row.id)">
<Edit />
</el-icon>
</div>
</template>
</el-table-column>
</fs-el-table>
import usePower from '@/hooks/usePower.ts'
const { funPower } = usePower()
const fsTable = ref(null)
const queryParams = ref({
taskStatus: 1,
todoCategory: '',
handlerCode: '',
})
| 属性名 | 说明 | 类型 | 默认值 |
|---|
| queryParams | 查询条件 | 详见下面讲解 | |
| tableConfig | 列表配置 | 详见下面讲解 | |
| is-show-filter | 是否需要筛选 | boolean | true |
| is-show-pageination | 是否需要分页 | boolean | true |
| is-local-storage | 是否开启查询条件本地缓存 | boolean | false |
| @search-table | 自定义表格查询 | () => ResTableData | |
1、表格查询条件-queryParams
关于重置功能:重置到初始状态,而不是清空查询条件。请一定在queryParams定义时就赋予初始值,正确案例如下:
const queryParams = ref({
todoCycle: Number(route.query.todoCycle) || '',
taskStatus: 1,
todoItem: ''
})
反例:
const queryParams = ref({
taskStatus: ''
})
onMounted(()=>{
queryParams.value.taskStatus = 2
})
2、表格配置属性-tableConfig
const tableConfig = reactive({
lazyQuery: {},
columnConfig: [],
funBtnConfig: [],
opBtnConfig: [],
moreOperationsConfig: [],
})
lazyQuery属性:列表请求相关
| 属性名 | 说明 | 类型 | 默认值 |
|---|
| url | 请求的接口路径 | string | |
| method | 接口请求方法 | string | get |
| immediate | 是否初始查询 | boolean | true |
| beforeQuery | 请求前回调,接收一个参数params(请求前的接口入参),用于处理请求前参数,返回值为处理后参数 | (params: QueryParams) => any | |
| afterQuery | 请求成功后回调,接收一个参数res(接口返回值),用于处理请求数据,返回处理后的数据 | (res: any) => ResTableData | |
lazyQuery: {
method: 'post',
url: '/personnelManagement/todoTasks/list',
immediate: true,
beforeQuery: (params) => {
return {
...params.params,
pageIndex: params.pageIndex,
pageSize: params.pageSize,
}
},
afterQuery: (res)=>{
return {
data: res.data.records,
total: res.data.total
}
}
},
相关类型
type QueryParams = {
pageIndex: number
pageSize: number
params?: object
}
type ResTableData = {
data: array<object>
total: number
}
columnConfig属性:表格列相关;
这里只列举了几个常用 或者 自定义属性,其他属性皆继承与饿了么组件## Table-column API,参考文档
| 属性名 | 说明 | 类型 | 默认值 |
|---|
| type | 等同于element-plus中Table-column 的type属性 | 参照饿了么组件文档,额外增加operate,表示操作列属性 | 非必填 |
| prop | 等同于element-plus中Table-column 的prop属性 | 参照饿了么组件文档 | 必填,多级表头时父级也必填 |
| label | 等同于element-plus中Table-column 的label属性 | 参照饿了么组件文档 | 非必填 |
| isModulePower | 用于指定此字段为模块数据权限判断(具体逻辑需要梳理) | boolean | false/非必填 |
| isUserPower | 用于指定此字段为人员数据权限判断(具体逻辑需要梳理) | boolean | false/非必填 |
| options | 传入枚举,可用来数字转文案,例如:[{ label: 'aaa', value: '1' }] | array | null/非必填 |
| format | 显示格式,目前支持的格式如下表格 | string| array | null/非必填 |
| statusMap | 文案颜色或图标枚举;与 format = ['textStatus', 'iconStatus', 'iconTextStatus'] 一起使用 | string| array | null/非必填 |
| format的值 | 说明 |
|---|
| textStatus | 带颜色的文案状态 |
| iconStatus | 只有图标的状态 |
| iconTextStatus | 带颜色的文案+图标的状态 |
| file | 附件格式 |
| [key1, key2] | 多字段格式,例如: ['userCode','userName'] |
columnConfig: [
{ type: 'selection' },
{ type: 'index', label: '序号' },
{
prop: 'qualityStatus',
label: '数据状态',
minWidth: 130,
options: qualityStatusList,
format: 'textStatus',
statusMap
},
{ type: 'operate', minWidth: '360' },
],
const statusMap: StatusMap = {
[NEW]: {
icon: 'Edit',
type: 'primary',
color: 'var(--el-color-primary)'
},
[PENDING_TRANSFER]: {
icon: 'Edit',
type: 'primary',
color: 'var(--el-color-primary)'
},
}
declare interface StatusConfig {
icon?: string
type?: 'primary' | 'success' | 'warning' | 'danger' | 'info'
color?: string
}
type StatusMap = Record<string, StatusConfig>
funBtnConfig属性:表格查询条件右边功能按钮
| 属性名 | 说明 | 类型 | 默认值/必填 |
|---|
| label | 按钮文案 | String | 必填 |
| op | 功能模块编码 | String | 必填 |
| api | 请求路径,目前只有导入、导出、模板下载用到 | String | 非必填 |
| tooltip | el-tooltip相关属性 | Object | 非必填 |
| attributes | el-button相关属性 | Object | 非必填 |
| httpMethod | 请求方式,目前只有导入、导出、模板下载用到 | String | get/非必填 |
| isImportTimeFrame | 是否需要选择导入数据时间范围,目前只有导入适用 | Boolean | 非必填 |
| handleClick | 自定义按钮点击事件 | () => void | 非必填 |
| beforeExecution | 执行之前事件,目前只有导出适用,处理导出前接口入参 | (params: QueryParams) => Boolean|QueryParams (注:返回false,则终止导出,否则返回导出接口入参) | 非必填 |
案例
{
label: '新增',
op: 'add',
handleClick: () =>
goto('add')
}
},
{
label: '导出',
op: 'exportData',
api: '/customersatisfaction/preliminarybase/export',
httpMethod: 'post',
beforeExecution: (params) => {
let data = {
...queryParams.value,
displayColumns: params.displayColumns,
menuName: params.menuName,
}
return data
},
},
opBtnConfig属性:表格操作列按钮
| 属性名 | 说明 | 类型 | 默认值/必填 |
|---|
| label | 按钮文案 | string | 必填 |
| op | 功能模块编码 | string | 必填 |
| api | 请求路径,目前只有删除用到; 支持参数最为请求路径方式,例如: '/customersatisfaction/preliminarybase/delPreliminaryBase/{id}' | string | 非必填 |
| httpMethod | 请求方式,目前只有删除用到 | string | get/非必填 |
| params | 请求入参回调,目前只有删除用到,用于处理删除前修改入参 | (row) => any | 非必填 |
| handleClick | 按钮点击事件,接收一个参数scope(包含行数据和行索引) | (scope: rowScope) => void | 非必填 |
| disabledCallback | 按钮禁用回调,接收两参数,参数一:scope(包含行数据和行索引);参数二:组件禁用逻辑处理后的结果 | (scope: rowScope, flag:boolean) => boolean | 非必填 |
| showCallback | 按钮显示回调,接收一个参数scope(包含行数据和行索引) | (scope: rowScope) => boolean | 非必填 |
type rowScope = {
row:any,
$index:number
}
案例
{
label: '回顾反馈',
op: 'feedback',
handleClick: ({ row }) => {
goto('feedback', row.id)
},
disabledCallback: ({ row }, flag) => {
return flag && row.dataStatus != 2
},
showCallback: ({ row }) => {
return row.feedbackStaffId === userInfo.userCode
},
},
moreOperationsConfig属性:更多操作按钮
| 属性名 | 说明 | 类型 | 默认值/必填 |
|---|
| label | 按钮文案 | string | 必填 |
| op | 功能模块编码(批量功能一般情况下与行操作功能一致,因此op可直接用行操作功能的op,例如:批量删除 可直接用delete) | string | 必填 |
| api | 请求路径,目前只有删除用到 | string | 非必填 |
| httpMethod | 请求方式,目前只有删除用到 | string | get/非必填 |
| params | 请求入参回调,目前只有批量删除用到,用于处理批量删除前修改入参 | (list: any[]) => any | 非必填 |
| handleClick | 按钮点击事件,接收一个参数scope(包含行数据和行索引) | (scope: rowScope) => void | 非必填 |
| handleCheckData | 点击批量操作前,检查数据是否都可以操作,接收一个参数list(当前勾选的数据列集合)返回对象必要属性{isSuccessful:boolean,message:string} | (list) => batchOperationsCheckResults | 非必填 |
moreOperationsConfig: [
{
label: '批量删除',
op: 'delete',
api: '/quality/qualityManagement/delete',
handleCheckData: list => ({
isSuccessful: list.every(row => isPower(row) && copyEditDel(row.qualityStatus)),
message:'只有发现人和创建人且数据状态为新增、待传输的数据可删除!'
})
}
],
3、插槽
| 插槽名 | 说明 | 子标签 |
|---|
| headerLeft | 列表功能区左边 | — |
| headerRight | 列表功能区右边(筛选左边) | — |
| template | 模板下载自定义,与funBtnConfig配合使用,插槽名与op保持一致 | — |
| importData | 导入自定义,与funBtnConfig冲突,插槽名与op保持一致 | — |
| exportData | 导出自定义,与funBtnConfig冲突,插槽名与op保持一致 | — |
| add | 新增自定义,与funBtnConfig冲突,插槽名与op保持一致 | — |
| searchformItem | 查询条件区域 | — |
| moreOperations | 更多操作自定义,覆盖moreOperationsConfig | — |
| dropdownItem | 更多操作选项自定义,不与moreOperationsConfig冲突 | el-dropdown-item |
| viewMode | 中间表格区域自定义 | |

分页组件:fs-el-pageination
<fs-el-pageination
v-model:pagerCount="pageIndex"
v-model:pageSize="pageSize"
:total="total"
:page-sizes="[8, 16, 24, 32, 40]"
@paginationQuery="queryInformation"
/>
| 属性名/事件 | 说明 | 类型 | 默认值/必填 |
|---|
| pageSize | 每页数量 | number | 必传 |
| pagerCount | 当前页 | number | 必传 |
| @paginationQuery | 切换页码、改变页面数量触发 | function | 必传 |
部门下拉选择:fs-el-select-department
默认清空;可以模糊搜素下拉选项;设置多选时,默认折叠+1样式,点击清空图标 多选清空值为[],单选为' '
<fs-el-select-department v-model="queryParams.responsibleDepartment"></fs-el-select-department>
模块下拉选择:fs-el-select-module
下拉项可与部门联动:多选联动时下拉项为多个部门下的模块选项 联动时已选模块不在下拉选项里 则会清空
<fs-el-select-module v-model="queryParams.responsibleModule"></fs-el-select-module>
| 属性名 | 说明 | 类型 | 默认值/必填 |
|---|
| department | 部门名称,用于部门模块联动 | string | 非必传 |
人员下拉选择:fs-el-select-personnel
<fs-el-select-personnel v-model="queryParams.evaluatedEmployeeId"></fs-el-select-personnel>
| 属性名 | 说明 | 类型 | 默认值/必填 |
|---|
| valueKey | 指定当前选中的key, 如果是多个 则空格拼接;例如['staffName', 'staffCode'] = 冯晓雨 01443346 | [String, Array] | staffCode/非必传 |
| labelKey | 指定已选label的key | [String, Array] | staffName/非必传 |
| optionKey | 指定每个选项显示的key,如果是多个 则斜杠拼接;例如['staffName', 'staffCode'] = 冯晓雨/01443346 | [String, Array] | staffName/非必传 |
| personnelModule | 模块名称,用于模块人员联动 | string | ''/非必传 |
| isIncludesNonInternalUser | 是否包含非财务共享用户 | Boolean | false/非必传 |
| @change | 当前选中值发生变化时触发,对于原生饿了么组件的change重写,保留参数一:原生饿了么组件当前选中的值,新增参数二:当前选中值在下拉数组中的整个对象信息,多选下 是数组对象 | (value: any, selectedItem: array<userInfo> | userInfo) => void | 非必传 |
业务所属模块(使用业务组)下拉选择:fs-el-select-business-group
暂时未加联动,其他与模块下拉选择组件一致,区别在下拉选项数据不同
<fs-el-select-business-group v-model="queryParams.applyBusinessGroup" />
| 属性名 | 说明 | 类型 | 默认值/必填 |
|---|
| isNeedAll | 是否需要‘全部项’ | Boolean | false/非必传 |
时间选择器:fs-el-date-picker
<fs-el-date-picker v-model="queryParams.time"></fs-el-date-picker>
| 属性名 | 说明 | 类型 | 默认值/必填 |
|---|
| value-format | 原生属性基础上,指定绑定值的格式,如果指定格式为:YYYY-MM-DD HH:mm:ss;只选择年月日时,时分秒开始时间为00:00:00; 结束时分秒为 23:59:59 | string | 非必传 |
| disabledBeforeToday | 是否禁用今日之前的日期 | Boolean | false/非必填 |
| disabledAfterToday | 是否禁用今日之后的日期 | Boolean | false/非必填 |
| disableBeforeDate | 禁用指定日期之前的日期,指定格式:YYY-MM-DD | string | ''/非必填 |
| disableAfterDate | 禁用指定日期之后的日期,指定格式:YYY-MM-DD | string | ''/非必填 |
图片显示:fs-el-image
<fs-el-image :file="info.newsCoverFile"></fs-el-image>
| 属性名 | 说明 | 类型 | 默认值/必填 |
|---|
| file | 要显示的图片对象 | FileObject | 必填 |
interface FileObject {
fileId: string
fileName: string
}
图片悬浮预览:fs-el-image-viewer
<fs-el-image-viewer v-model="showPreview" :file-list="imageList" />
| 属性名 | 说明 | 类型 | 默认值/必填 |
|---|
| v-model | 是否显示 | FileInfo[] | []/必填 |
| fileList | 要显示的图片集合 | boolean[] | false/必填 |

上传文件:fs-el-upload
<fs-el-upload v-model="formData.file"></fs-el-upload>
注意:v-model="formData.file" 双向绑定的值,
情况1:无值可以是null、' '、[] ;
情况2:有值可以是对象、对象数组、JSON,但对象中必须包含fileId、fileName属性
| 属性名 | 说明 | 类型 | 默认值/必填 |
|---|
| v-model | 双向绑定的值 | 上面情况12中已说明 | 必填 |
| url | 上传文件请求路径 | String | /oss/upload / 非必填 |
| limit | 限制文件最大上传数量 | Number | 5 / 非必填 |
| fileType | 限制文件上传类型,[]空数组表示什么类型都不限制 | Array | [] / 非必填 |
| fileSize | 限制文件上传大小 | Number | 10 / 非必填 |
| tipStr | 提示文案;不传则使用组件的默认文案:如果指定了文件类型,则提示文案默认为:支持.a、.b、.c文件类型;如果指定文件最大上传的文件大小,则提示文案为:文件最大10M | String | ' ' / 非必填 |
| isShowTipStr | 是否显示提示文案 | Boolean | true / 非必填 |
| fileIdKey | 指定上传文件请求路径,并指定上传接口返回的文件fileIdd字段key | String | fileId / 非必填 |
| fileNameKey | 指定上传文件请求路径,并指定上传接口返回的文件fileName字段key | String | fileName / 非必填 |
| disabled | 原生属性:是否禁用上传,传true则禁用,不显示上传按钮 | boolean | false / 非必填 |
文件列表:fs-file-list(常用在列表附件,案例如下)
<el-table-column label="相关附件" prop="certificateCompletion" align="center" min-width="200">
<template #default="{ row }">
<fs-file-list :file="row.certificateCompletion"></fs-file-list>
</template>
</el-table-column>
| 属性名 | 说明 | 类型 | 默认值/必填 |
|---|
| file | 文件列表 | string | FileInfo | FileInfo[] | 必填 |
缺省图:fs-empty
<el-table-column label="相关附件" prop="certificateCompletion" align="center" min-width="200">
<template #default="{ row }">
<fs-file-list :file="row.certificateCompletion"></fs-file-list>
</template>
</el-table-column>
| 属性名 | 说明 | 类型 | 默认值/必填 |
|---|
| width | 图片宽度 | String| Number | '200px'/非必填 |
| text | 缺省文案 | String | '暂无数据'/非必填 |

折叠面板:fs-el-collapse
<fs-el-collapse>
<fs-el-collapse-item title="首问基础信息"></fs-el-collapse-item>
</fs-el-collapse>
Fs Collapse API
| 属性名 | 说明 | 类型 | 默认值/必填 |
|---|
| disabled | 是否禁用展开收起 | Boolean | false / 非必填 |
| activeDefault | 默认展开的项:默认为null表示没有默认项会全部展开;传[]表示没有默认项会全部收起,指定展开的项:['首问基础信息'] | Array | null / 非必填 |
Fs Collapse slot
| 插槽名 | Description | 子标签 |
|---|
| default | 自定义默认内容 | Fs Collapse Item |
FS CollapseItem API
| 属性名 | 说明 | 类型 | 默认值/必填 |
|---|
| title | 标题文案 | string | 必填 |
Fs CollapseItem slot
| 插槽名 | Description | 子标签 |
|---|
| default | 面板内容 | |
| left | 面板头部左边区域 | |
| right | 面板头部右边区域 | |
表单页头部:fs-details-head
<fs-details-head title="标题文案"></fs-details-head>
| 属性名 | 说明 | 类型 | 默认值/必填 |
|---|
| v-model | 双向绑定;将表单model绑定的对象绑定到此组件,v-model="formData", 用于重置 | object | {} / 非必填 |
| title | 标题 | string | '' / 非必填 |
| tips | 提示语 | string | '' / 非必填 |
| showCancel | 是否显示取消按钮 | Boolean | true / 非必填 |
| showReset | 是否显示重置按钮 | Boolean | true / 非必填 |
| showTemporarilySave | 是否显示暂存按钮 | Boolean | false / 非必填 |
| showSubmit | 是否显示提交按钮 | Boolean | true / 非必填 |
| formRef | 表单元素ref | ComputedRef | 使用重置功能必传 |
FormItem Exposes
| 名称 | 说明 | 类型 |
|---|
| setInitialData | 设置重置的默认值,用在表单页面,详情接口请求完成后调用, | (formData:Object)=>void |
根据工号批量选择人员:fs-batch-add-personnel
<fs-batch-add-personnel
v-if="batchAddPersonnelVisble"
v-model="batchAddPersonnelVisble"
@handle-comfig="batchAddPersonnel"
/>
| 属性名 | 说明 | 类型 | 默认值/必填 |
|---|
| v-model | 是否显示弹窗 | boolean | false/必填 |
| @handle-comfig | 点击确定按钮时的回调 | (data: Array<userInfo>)=>void | |

视图/列表模式切换:fs-mode-switch (使用案例:全面质量管理)
<fs-mode-switch v-model="dataShowType"></fs-mode-switch>
| 属性名 | 说明 | 类型 | 默认值/必填 |
|---|
| v-model | 双向绑定,选中的模式;视图模式值为:'viewMode' 列表模式值为:'dataTable' | string | 'viewMode'/必填 |

视图模式数据列表:fs-view-list (使用案例:全面质量管理)
<fs-view-list :data="tableDate">
<template #default="row">
<fs-view-item
:row="row"
:operation-buttons="tableConfig.opBtnConfig"
:fs-table-ref="fsTable"
></fs-view-item>
</template>
</fs-view-list>
| 属性名 | 说明 | 类型 | 默认值/必填 |
|---|
| data | 列表数据 | array | []/必填 |
| isHoverDisplay | 是否悬停显示操作区 | Boolean | false/非必填 |
Fs view list slot
| 插槽名 | 说明 | 子标签 |
|---|
| default | 默认插槽 | view-data-item |
视图模式数据项:fs-view-item
<fs-view-item :operation-buttons="tableConfig.opBtnConfig" :row="row">
<template #default="rowLeft">
左边区域
</template>
<template #default="rowTitle">
中间区域(标题)
</template>
<template #default="rowInfo">
中间区域(主要字段信息)
</template>
<template #default="buttonGroup">
右边按钮区域
</template>
<template #default="right">
按钮右边区域
</template>
</fs-view-litemist>
| 属性名 | 说明 | 类型 | 默认值/必填 |
|---|
| rowLeft | 左边区域,通常放状态样式 | — | |
| rowTitle | 标题区 | — | |
| rowInfo | 内容区 | — | |
| buttonGroup | 右边操作按钮区 | — | |
| right | 操作按钮右边区,用于放一些乱七八糟除钮之外的东西 | | |
流程、环节切换:fs-step-list (使用案例:全面质量管理)
案例路径:src\pages\qualityData\totalQualityManagement\qualityControl\processForm.vue
<fs-step-list v-model="activeName" :list="processList"></fs-step-list>
<script setup lang="ts">
const processList = reactive([
{
label: '基础信息',
name: 'baseInfo',
component: baseInfo,
disabled: false
},
{
label: '责任模块确认与升级',
name: 'responsibilityConfirmation',
component: responsibilityConfirmation,
disabled: pageType !== 'details' && ['baseInfo'].includes(formType)
},
]
</script>
| 属性名 | 说明 | 类型 | 默认值/必填 |
|---|
| v-model | 双向绑定,选中的环节name值; | string | ''/必填 |
| list | 流程、环节列表 | Step[] | []/必填 |

interface Step {
name: string
label: string
disabled?: boolean
}
带图片的tabs切换:fs-el-icon-tabs
<fs-el-icon-tabs v-model="activedTab" :tab-list="tabList" />
| 属性名 | 说明 | 类型 | 默认值/必填 |
|---|
| v-model | 选中的value值 | — | 必填 |
| tabList | tab项 | Array<iconTab> | 必填 |
interface iconTab {
value: string
label: string
icon?: string
}

element方法二次封装
统一风格;集中管理
toast吐司提示;
import toast from '@/utils/message'
toast.success('成功提示')
toast.warning('注意提示')
toast.error('错误提示')
toast.info('信息提示')
loading遮罩;
import {FSElLoading} from '@/utils/message'
FSElLoading()
提示确认框;
import {FSElMessageBox} from '@/utils/message'
FSElMessageBox()
FSElMessageBox({message:'请检查表单输入!'})
导入是否覆盖对话框;
import {FSImpotElMessageBox} from '@/utils/message'
importType = await FSImpotElMessageBox('下方已存在问题类型确认信息,再次导入将覆盖已存在信息,请确认是否覆盖导入?')

公共方法使用
平台统一管理逻辑,使用公共方法,减少开发成本
type RequestConfig = {
url: string
method?: string
[key: string]: any
}
type FileInfo = {
fileId: string;
fileName?: string;
}
type batchOperationsCheckResults = {
isSuccessful:boolean;
message:string='勾选数据中包含不可操作的数据,请重新检查'
}
根据字典类型获取下拉选项:getOptionsByDictType
getOptionsByDictType(dictType: String, getDataFun?: Function) => any[]
文件流下载:download
download(params:RequestConfig, fileName?:String = '') => Viod
导出到下载页面:exportToDownloadPage
exportToDownloadPage(params:RequestConfig) => Viod
导入文件:importFile
exportToDownloadPage(file:File,url:String, data?:Any = {}) => Viod
下载文件,并重命名:downloadFileWithName
**
* 通过文件地址下载并重命名文件
* @param {string} url - 文件地址
* @param {string} fileName - 重命后的文件名(含扩展名)
*/
downloadFileWithName(fileId:String, fileName?:String = '附件下载.xlsx') => Proimse
下载多个文件:downloadFileList
downloadFileList(fileList: FileInfo[],fileName:String) => Viod
是否为模块运营经理或监管模块经理:isManagerByModule
isManagerByModule(moduleCode:string) => Boolean
查找人员信息: getUserInfoByCode
getUserInfoByCode(userCode:string) => UserInfo
获取所有人员列表: getUserList
getUserList(isIncludesNonInternalUser:Boolean) => Array<UserInfo>
判断是否JSON: isJSON
isJSON(str:string) => Boolean
公共hook
表单相关 useForm
| 方法名 | 说明 | 类型 |
|---|
| queryDetails | 请求详情表单数据(异步方法) | (requestConfig:RequestConfig)=>void |
| setFormData | 设置详情表单数据(不涉及接口请求,同步方法) | (detailsInfo:Object,targetData:Object)=>void |
| setInitialData | 设置初始数据(用于重置到初始数据);如果调用了queryDetails方法,会自动调用setInitialData方法,否则自己请求详情数据时,需手动调用setInitialData | (data:Object,)=>void |
| check | 表单校验,必须使用hook提供的formRef | ()=>void |
| submit | 表单提交,包含表单校验check,因此也必须使用hook提供的formRef | (requestConfig:RequestConfig)=>void |
| resetForm | 重置表单;必须使用hook提供的formRef | (formData:Object)=>void |
| 属性名 | 说明 | 类型 |
|---|
| formRef | 表单元素ref | ref<FormInstance> |
| initialFormData | 初始状态数据 | unknown |
使用示例:
import { useForm } from '@/hooks/useForm'
const { formRef, setInitialData, check, resetForm } = useForm()