mirror of
https://github.com/fugary/simple-element-plus-template.git
synced 2025-11-12 14:27:49 +00:00
类型优化
This commit is contained in:
@@ -1,42 +1,4 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
/**
|
|
||||||
* @typedef {Object} CommonAutocompleteOption 自动完成的配置信息
|
|
||||||
* @property {[CommonTableColumn]} columns 表格显示列配置
|
|
||||||
* @property {string} emptyMessage 没有数据的提示信息
|
|
||||||
* @method searchMethod 搜索方法
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* @typedef {Object} CommonSelectPageOption 默认选择页面配置信息
|
|
||||||
* @property {[{ id:string, label:string }]} tabs 显示tabs配置
|
|
||||||
* @method searchMethod 搜索方法
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* @typedef {Object} CommonSelectPageOption 默认选择页配置
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* @typedef {Object} CommonAutocompleteProps
|
|
||||||
* @property {CommonAutocompleteOption} autocompleteConfig 自动完成配置
|
|
||||||
* @property {string} modelValue 输出数据
|
|
||||||
* @property {boolean} useIdModel 输出对象还是id
|
|
||||||
* @property {boolean} clearable 是否可以显示清空
|
|
||||||
* @property {boolean} readonly 只读
|
|
||||||
* @property {boolean} disabled 是否禁用
|
|
||||||
* @property {boolean} emptySearchEnabled 没有关键字时是否点击就开始搜索
|
|
||||||
* @property {string} title popover标题
|
|
||||||
* @property {string} placeholder placeholder占位符
|
|
||||||
* @property {string} defaultLabel 自动完成默认label
|
|
||||||
* @property {string} idKey id字段名
|
|
||||||
* @property {string} labelKey label字段名
|
|
||||||
* @property {number} debounceTime 防抖时间
|
|
||||||
* @property {string} autocompleteWidth 宽度
|
|
||||||
* @property {string} inputWidth input宽度
|
|
||||||
* @property {CommonSelectPageOption} selectPageConfig 分页
|
|
||||||
* @property {Number} colSize 显示几列
|
|
||||||
* @property {string} loadingText 加载提示loading
|
|
||||||
* @property {string} minHeight 高度自定义
|
|
||||||
* @property {Object} inputAttrs 输入框配置项
|
|
||||||
* @property {boolean} validateEvent 验证事件
|
|
||||||
*/
|
|
||||||
import { computed, nextTick, onMounted, ref, watch } from 'vue'
|
import { computed, nextTick, onMounted, ref, watch } from 'vue'
|
||||||
import { debounce, isObject } from 'lodash'
|
import { debounce, isObject } from 'lodash'
|
||||||
import { onClickOutside, onKeyStroke, useVModel } from '@vueuse/core'
|
import { onClickOutside, onKeyStroke, useVModel } from '@vueuse/core'
|
||||||
@@ -139,7 +101,13 @@ const keywords = ref(props.defaultLabel)
|
|||||||
// 上次搜索记录
|
// 上次搜索记录
|
||||||
const lastAutocompleteLabel = ref(props.defaultLabel)
|
const lastAutocompleteLabel = ref(props.defaultLabel)
|
||||||
// 分页条
|
// 分页条
|
||||||
|
/**
|
||||||
|
* @type {PaginationProps}
|
||||||
|
*/
|
||||||
const pageAttrs = { layout: 'total, prev, pager, next', small: true, background: true }
|
const pageAttrs = { layout: 'total, prev, pager, next', small: true, background: true }
|
||||||
|
/**
|
||||||
|
* @type {PaginationProps}
|
||||||
|
*/
|
||||||
const selectPageAttrs = { layout: 'prev, pager, next', small: true, background: true }
|
const selectPageAttrs = { layout: 'prev, pager, next', small: true, background: true }
|
||||||
// 自动完成数据
|
// 自动完成数据
|
||||||
const dataList = ref([])
|
const dataList = ref([])
|
||||||
|
|||||||
78
src/components/common-autocomplete/public.d.ts
vendored
Normal file
78
src/components/common-autocomplete/public.d.ts
vendored
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
import {CommonPage} from "../public";
|
||||||
|
import {CommonTableColumn} from "../common-table/public";
|
||||||
|
|
||||||
|
export interface CommonAutocompleteProps {
|
||||||
|
// 自动完成配置
|
||||||
|
autocompleteConfig: CommonAutocompleteOption;
|
||||||
|
// 数据值
|
||||||
|
modelValue?: string;
|
||||||
|
// 默认选择label
|
||||||
|
defaultLabel?: string;
|
||||||
|
// 是否已id为默认输出
|
||||||
|
useIdModel?: boolean;
|
||||||
|
// 情空选项
|
||||||
|
clearable?: boolean;
|
||||||
|
// 只读选项
|
||||||
|
readonly?: boolean;
|
||||||
|
// 禁用选项
|
||||||
|
disabled?: boolean;
|
||||||
|
// 没有输入时是否可以搜索
|
||||||
|
emptySearchEnabled?: boolean;
|
||||||
|
// 自动完成标题
|
||||||
|
title?: string;
|
||||||
|
// 占位符
|
||||||
|
placeholder?: string;
|
||||||
|
// id字段名
|
||||||
|
idKey?: string;
|
||||||
|
// label字段名
|
||||||
|
labelKey?: string;
|
||||||
|
// 防抖延时
|
||||||
|
debounceTime?: number;
|
||||||
|
// 自动完成宽度
|
||||||
|
autocompleteWidth?: string;
|
||||||
|
// 输入框宽度
|
||||||
|
inputWidth?: string;
|
||||||
|
// 可选项页配置
|
||||||
|
selectPageConfig?: CommonSelectPageOption;
|
||||||
|
// 可选项列默认显示几列
|
||||||
|
colSize?: number;
|
||||||
|
// 加载提示loading
|
||||||
|
loadingText?: string;
|
||||||
|
// 最低高度
|
||||||
|
minHeight?: string;
|
||||||
|
// input自定义属性
|
||||||
|
inputAttrs?: any;
|
||||||
|
// 验证事件
|
||||||
|
validateEvent?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CommonSelectPageOption {
|
||||||
|
tabs: Array<{ id: string, label: string }>;
|
||||||
|
/**搜索方法*/
|
||||||
|
searchMethod: (tabId: string, callback: (items: Array<any>) => void) => Promise<any>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CommonAutocompleteOption {
|
||||||
|
/**自动完成表格列配置*/
|
||||||
|
columns: Array<CommonTableColumn>;
|
||||||
|
/**空数据提示信息*/
|
||||||
|
emptyMessage?: string;
|
||||||
|
/**搜索方法*/
|
||||||
|
searchMethod: (param: CommonSearchParam,
|
||||||
|
callback: (result: {
|
||||||
|
/**返回分分页*/
|
||||||
|
page: CommonPage,
|
||||||
|
/**返回的数据*/
|
||||||
|
items: Array<any>
|
||||||
|
}) => void) => Promise<any>;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 搜索参数
|
||||||
|
*/
|
||||||
|
export interface CommonSearchParam {
|
||||||
|
/** 搜索关键字 */
|
||||||
|
query: string;
|
||||||
|
/**分页信息*/
|
||||||
|
page: CommonPage;
|
||||||
|
}
|
||||||
@@ -4,28 +4,6 @@ import { $i18nBundle } from '@/messages'
|
|||||||
import ControlChild from '@/components/common-form-control/control-child.vue'
|
import ControlChild from '@/components/common-form-control/control-child.vue'
|
||||||
import { useInputType } from '@/components/utils'
|
import { useInputType } from '@/components/utils'
|
||||||
|
|
||||||
/**
|
|
||||||
* 定义一些注释属性,方便代码提示
|
|
||||||
* @typedef {Object} CommonFormOption
|
|
||||||
* @property {'input'|'input-number'|'cascader'|'radio'
|
|
||||||
* |'radio-group'|'radio-button'|'checkbox'|'checkbox-group'|'checkbox-button'|'date-picker'
|
|
||||||
* |'time-picker'|'switch'|'select'|'option'|'slider'|'transfer'|'upload'} type 类型
|
|
||||||
* @property {any} value 数据值
|
|
||||||
* @property {string|[string]} prop 属性
|
|
||||||
* @property {string} label 标签
|
|
||||||
* @property {string} labelKey 用于国际化的label
|
|
||||||
* @property {boolean} required 是否必填,后面解析成为rules的一部分
|
|
||||||
* @property {string|RegExp} pattern 正则表达式验证,解析成为rules的一部分
|
|
||||||
* @property {string} patternMsg 正则表达式验证消息
|
|
||||||
* @property {boolean} common 自定义组件
|
|
||||||
* @property {boolean} disabled 禁用
|
|
||||||
* @property {boolean} readonly 只读
|
|
||||||
* @property {string} placeholder 占位提示符
|
|
||||||
* @property {{clearable:boolean,disabled:boolean,showPassword:boolean}} attrs
|
|
||||||
* @property {[CommonFormOption]} children 子节点
|
|
||||||
* @property {Array<RuleItem>} rules 验证规则
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {{option:CommonFormOption}}
|
* @type {{option:CommonFormOption}}
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -4,14 +4,6 @@ import cloneDeep from 'lodash/cloneDeep'
|
|||||||
import { $i18nBundle } from '@/messages'
|
import { $i18nBundle } from '@/messages'
|
||||||
import { useVModel } from '@vueuse/core'
|
import { useVModel } from '@vueuse/core'
|
||||||
|
|
||||||
/**
|
|
||||||
* @typedef {FormProps} CommonFormProps
|
|
||||||
* @property {[CommonFormOption]} options 配置选项
|
|
||||||
* @property {boolean} showButtons 是否显示按钮区域
|
|
||||||
* @property {boolean} showSubmit 是否显示提交按钮
|
|
||||||
* @property {boolean} showReset 是否显示重置按钮
|
|
||||||
* @method submitForm 提交逻辑
|
|
||||||
*/
|
|
||||||
/**
|
/**
|
||||||
* @type {CommonFormProps}
|
* @type {CommonFormProps}
|
||||||
*/
|
*/
|
||||||
|
|||||||
65
src/components/common-form/public.d.ts
vendored
Normal file
65
src/components/common-form/public.d.ts
vendored
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
import {RuleItem} from "async-validator/dist-types/interface";
|
||||||
|
import {FormInstance, FormProps} from "element-plus";
|
||||||
|
|
||||||
|
export interface CommonFormProps extends FormProps {
|
||||||
|
/**配置选项*/
|
||||||
|
options: Array<CommonFormOption>;
|
||||||
|
/**label宽度*/
|
||||||
|
labelWidth: string;
|
||||||
|
/**model对象*/
|
||||||
|
model: any;
|
||||||
|
/**是否在rule改变时执行验证*/
|
||||||
|
validateOnRuleChange: boolean;
|
||||||
|
/**提交按钮的label*/
|
||||||
|
submitLabel: string;
|
||||||
|
/**重置按钮label*/
|
||||||
|
resetLabel: string;
|
||||||
|
/**返回按钮label*/
|
||||||
|
backLabel: string;
|
||||||
|
/**是否显示按钮区域*/
|
||||||
|
showButtons: boolean;
|
||||||
|
/**是否显示提交按钮*/
|
||||||
|
showSubmit: boolean;
|
||||||
|
/**是否显示重置按钮*/
|
||||||
|
showReset: boolean;
|
||||||
|
/**提交逻辑*/
|
||||||
|
submitForm: (form: FormInstance) => void;
|
||||||
|
/**返回地址*/
|
||||||
|
backUrl: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CommonFormOption {
|
||||||
|
/**表单类型*/
|
||||||
|
type: 'input' | 'input-number' | 'cascader' | 'radio'
|
||||||
|
| 'radio-group' | 'radio-button' | 'checkbox' | 'checkbox-group' | 'checkbox-button' | 'date-picker'
|
||||||
|
| 'time-picker' | 'switch' | 'select' | 'option' | 'slider' | 'transfer' | 'upload' | 'common-icon-select' | 'common-autocomplete';
|
||||||
|
/**数据值*/
|
||||||
|
value?: any;
|
||||||
|
/**属性名*/
|
||||||
|
prop: string | string[];
|
||||||
|
/**表单标签*/
|
||||||
|
label?: string;
|
||||||
|
/**用于国际化的label*/
|
||||||
|
labelKey?: string;
|
||||||
|
/**是否必填,后面解析成为rules的一部分*/
|
||||||
|
required?: boolean;
|
||||||
|
/**正则表达式验证,解析成为rules的一部分*/
|
||||||
|
pattern?: string | RegExp;
|
||||||
|
/**正则表达式验证消息*/
|
||||||
|
patternMsg?: string;
|
||||||
|
/**是否禁用*/
|
||||||
|
disabled?: boolean;
|
||||||
|
/**是否只读*/
|
||||||
|
readonly?: boolean;
|
||||||
|
/**占位提示符*/
|
||||||
|
placeholder?: string;
|
||||||
|
/**其他可用属性*/
|
||||||
|
attrs?: {
|
||||||
|
showPassword: boolean,
|
||||||
|
[key: string]: any
|
||||||
|
};
|
||||||
|
/**有些控件柚子节点*/
|
||||||
|
children?: Array<CommonFormOption>;
|
||||||
|
/**async-validator验证器*/
|
||||||
|
rules: Array<RuleItem>;
|
||||||
|
}
|
||||||
@@ -3,26 +3,12 @@ import { computed } from 'vue'
|
|||||||
import { useRouter } from 'vue-router'
|
import { useRouter } from 'vue-router'
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} CommonMenuItem 菜单对象
|
* @type {CommonMenuItemProps}
|
||||||
* @property {boolean} isDropdown 是否是下拉Dropdown样式
|
|
||||||
* @property {boolean} isSplit 是否是分割元素
|
|
||||||
* @property {string} menuCls 自定义样式
|
|
||||||
* @property {string} index 路由地址
|
|
||||||
* @property {Object} route 路由
|
|
||||||
* @property {string} icon 图标
|
|
||||||
* @property {number} iconSize 图标大小
|
|
||||||
* @property {string} label 菜单显示名称
|
|
||||||
* @property {string} labelKey 菜单显示名称的Key,国际化需要
|
|
||||||
* @method iconIf 图标计算函数
|
|
||||||
* @method click 点击事件
|
|
||||||
* @property {[CommonMenuItem]} children 子菜单
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* @type {Object}
|
|
||||||
* @property {CommonMenuItem} menuItem 菜单对象
|
|
||||||
* @property index 序号
|
|
||||||
*/
|
*/
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
|
/**
|
||||||
|
* @type {CommonMenuItem}
|
||||||
|
*/
|
||||||
menuItem: {
|
menuItem: {
|
||||||
type: Object,
|
type: Object,
|
||||||
required: true
|
required: true
|
||||||
@@ -57,6 +43,7 @@ const dropdownClick = (menuItem, $event) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { computed } from 'vue'
|
import { computed } from 'vue'
|
||||||
import { filterMenus } from '@/components/utils'
|
import { filterMenus, useParentRoute } from '@/components/utils'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
@@ -13,7 +13,8 @@ const menuItems = computed(() => {
|
|||||||
return filterMenus(props.menus)
|
return filterMenus(props.menus)
|
||||||
})
|
})
|
||||||
const activeRoutePath = computed(() => {
|
const activeRoutePath = computed(() => {
|
||||||
const route = useRoute()
|
let route = useRoute()
|
||||||
|
route = useParentRoute(route)
|
||||||
return route && route.path !== '/' ? route.path : ''
|
return route && route.path !== '/' ? route.path : ''
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
42
src/components/common-menu/public.d.ts
vendored
Normal file
42
src/components/common-menu/public.d.ts
vendored
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
import {RouteRecordRaw} from "vue-router";
|
||||||
|
|
||||||
|
export interface CommonMenuItemProps {
|
||||||
|
/**menu配置*/
|
||||||
|
menuItem: CommonMenuItem;
|
||||||
|
/**index序号*/
|
||||||
|
index: number | string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 菜单对象
|
||||||
|
*/
|
||||||
|
export interface CommonMenuItem {
|
||||||
|
/**是否是下拉Dropdown样式*/
|
||||||
|
isDropdown?: boolean;
|
||||||
|
/**是否是分割元素*/
|
||||||
|
isSplit?: boolean;
|
||||||
|
/**自定义样式*/
|
||||||
|
menuCls?: string;
|
||||||
|
/**路由地址*/
|
||||||
|
index?: string;
|
||||||
|
/** 路由 */
|
||||||
|
route?: RouteRecordRaw;
|
||||||
|
/** 图标 */
|
||||||
|
icon?: string;
|
||||||
|
/** 图标大小 */
|
||||||
|
iconSize?: number | string;
|
||||||
|
/** 菜单显示名称 */
|
||||||
|
label?: string;
|
||||||
|
/** 菜单显示名称的Key,国际化需要 */
|
||||||
|
labelKey?: string;
|
||||||
|
/** 图标计算函数 */
|
||||||
|
iconIf?: () => string;
|
||||||
|
/** click事件 */
|
||||||
|
click?: () => string;
|
||||||
|
/**子菜单*/
|
||||||
|
children?: Array<CommonMenuItem>;
|
||||||
|
/**自定义属性*/
|
||||||
|
attrs: {
|
||||||
|
[key: string]: any
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,23 +1,7 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
/**
|
|
||||||
* 表格列配置信息,对应el-table-column数据
|
|
||||||
* @typedef {Object} CommonTableColumn
|
|
||||||
* @property {string} label 标签头
|
|
||||||
* @property {string} labelKey 国际化
|
|
||||||
* @property {string} property 数据属性
|
|
||||||
* @property {string} width 宽度
|
|
||||||
* @property {boolean} isOperation 是否是操作列
|
|
||||||
* @property {string} slot 自定义插槽
|
|
||||||
* @property [ButtonProps] buttons 自定义按钮
|
|
||||||
* @property {Object} attrs 其他属性
|
|
||||||
* @property {Object} linkAttrs 链接配置
|
|
||||||
* @method click 点击事件
|
|
||||||
* @method formatter 格式化
|
|
||||||
*/
|
|
||||||
/**
|
/**
|
||||||
* 配置信息
|
* 配置信息
|
||||||
* @property {CommonTableColumn[]} columns 表格显示列配置
|
* @type {CommonTableColumnProps}
|
||||||
* @buttonSize {''|'large'|'small'|'default'}
|
|
||||||
*/
|
*/
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -2,10 +2,6 @@
|
|||||||
import CommonTableColumn from '@/components/common-table/common-table-column.vue'
|
import CommonTableColumn from '@/components/common-table/common-table-column.vue'
|
||||||
import { computed, ref } from 'vue'
|
import { computed, ref } from 'vue'
|
||||||
|
|
||||||
/**
|
|
||||||
* @typedef {TableProps} CommonTableProps
|
|
||||||
* @property {[CommonTableColumn]} columns
|
|
||||||
*/
|
|
||||||
/**
|
/**
|
||||||
* @type CommonTableProps
|
* @type CommonTableProps
|
||||||
*/
|
*/
|
||||||
@@ -60,6 +56,9 @@ const props = defineProps({
|
|||||||
type: Object,
|
type: Object,
|
||||||
default: null
|
default: null
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
* @type {CommonPage}
|
||||||
|
*/
|
||||||
page: {
|
page: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: null
|
default: null
|
||||||
|
|||||||
74
src/components/common-table/public.d.ts
vendored
Normal file
74
src/components/common-table/public.d.ts
vendored
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
import {ButtonProps, TableProps} from "element-plus";
|
||||||
|
import {CommonPage} from "../public";
|
||||||
|
import {PaginationProps} from "element-plus/es/components/pagination/src/pagination";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 表格列定义
|
||||||
|
*/
|
||||||
|
export interface CommonTableColumn {
|
||||||
|
// 表格头
|
||||||
|
label: string;
|
||||||
|
// 表格头国际化key
|
||||||
|
labelKey: string;
|
||||||
|
// 属性名
|
||||||
|
property: string;
|
||||||
|
// 属性名,同property
|
||||||
|
prop: string;
|
||||||
|
// 宽度
|
||||||
|
width: string;
|
||||||
|
// 是否是可操作列
|
||||||
|
isOperation: boolean;
|
||||||
|
// 自定义插槽名称,用于自定义显示数据
|
||||||
|
slot: string;
|
||||||
|
// 自定义按钮
|
||||||
|
buttons: Array<ButtonProps>
|
||||||
|
// 可选属性
|
||||||
|
attrs: any;
|
||||||
|
// 链接可选属性
|
||||||
|
linkAttrs: any;
|
||||||
|
// 点击事件
|
||||||
|
click: (data: any) => any;
|
||||||
|
// 格式化函数
|
||||||
|
formatter: (data: any, scope: any) => string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 表格配置
|
||||||
|
*/
|
||||||
|
export interface CommonTableProps extends TableProps<any> {
|
||||||
|
/** 列配置 */
|
||||||
|
columns: Array<CommonTableColumn>;
|
||||||
|
/** 显示数据 */
|
||||||
|
data: Array<any>;
|
||||||
|
/** 高亮当前行 */
|
||||||
|
highlightCurrentRow: boolean;
|
||||||
|
/** stripe */
|
||||||
|
stripe: boolean;
|
||||||
|
/** 边框配置 */
|
||||||
|
border: boolean;
|
||||||
|
/** 自定义按钮配置 */
|
||||||
|
buttons?: Array<ButtonProps>;
|
||||||
|
/** buttons插槽 */
|
||||||
|
buttonsSlot?: string;
|
||||||
|
/** 默认的按钮大小 */
|
||||||
|
buttonSize?: string;
|
||||||
|
/** 按钮列配置 */
|
||||||
|
buttonsColumnAttrs?: {
|
||||||
|
[key: string]: any
|
||||||
|
};
|
||||||
|
/** 分页配置 */
|
||||||
|
page?: CommonPage;
|
||||||
|
/** 分页对齐 */
|
||||||
|
pageAlign?: 'left' | 'center' | 'right';
|
||||||
|
/** 其他分页配置项 */
|
||||||
|
pageAttrs?: PaginationProps;
|
||||||
|
/**loading状态*/
|
||||||
|
loading?: boolean;
|
||||||
|
/**loading显示消息*/
|
||||||
|
loadingText?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CommonTableColumnProps {
|
||||||
|
column: CommonTableColumn,
|
||||||
|
buttonSize: '' | 'small' | 'large' | 'default'
|
||||||
|
}
|
||||||
14
src/components/public.d.ts
vendored
Normal file
14
src/components/public.d.ts
vendored
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
/**
|
||||||
|
* 分页参数
|
||||||
|
*/
|
||||||
|
export interface CommonPage {
|
||||||
|
/** 当前第几页 */
|
||||||
|
pageNumber: number;
|
||||||
|
/** 每页数量 */
|
||||||
|
pageSize: number;
|
||||||
|
/** 总页数 */
|
||||||
|
pageCount?: number;
|
||||||
|
/** 数据总数 */
|
||||||
|
totalCount?: number;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -54,3 +54,22 @@ export const filterMenus = menus => menus.filter(menu => !menu.disabled)
|
|||||||
}
|
}
|
||||||
return menu
|
return menu
|
||||||
})
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 如果有replaceTabHistory,获取上级菜单
|
||||||
|
* @function useParentRoute
|
||||||
|
* @param route {RouteRecordMultipleViewsWithChildren} 路由信息
|
||||||
|
*/
|
||||||
|
export const useParentRoute = function (route) {
|
||||||
|
const parentName = route.meta?.replaceTabHistory
|
||||||
|
if (parentName) {
|
||||||
|
const routes = route.matched || []
|
||||||
|
for (let i = routes.length - 1; i > 0; i--) {
|
||||||
|
const r = routes[i]
|
||||||
|
if ((!r.meta || !r.meta.replaceTabHistory) && r.path !== '/') {
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return route
|
||||||
|
}
|
||||||
|
|||||||
@@ -4,14 +4,6 @@
|
|||||||
*/
|
*/
|
||||||
export const PAGE_SIZE = 10
|
export const PAGE_SIZE = 10
|
||||||
|
|
||||||
/**
|
|
||||||
* @typedef {Object} CommonPage
|
|
||||||
* @property {number} pageSize 单页数量
|
|
||||||
* @property {number} pageNumber 当前第几页
|
|
||||||
* @property {number} totalCount 总数
|
|
||||||
* @property {number} pageCount 总页数
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 默认分页数据
|
* 默认分页数据
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ export const loadAutoCities = (data, config) => {
|
|||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 城市自动完成配置
|
* 城市自动完成配置
|
||||||
|
* @return {CommonAutocompleteOption}
|
||||||
*/
|
*/
|
||||||
export const useCityAutocompleteConfig = () => {
|
export const useCityAutocompleteConfig = () => {
|
||||||
return {
|
return {
|
||||||
|
|||||||
Reference in New Issue
Block a user