chore: fix type:check error (#3159)
This commit is contained in:
parent
0bb76a86d2
commit
18222ab0b6
|
|
@ -1,4 +1,5 @@
|
||||||
import type { BarMap } from './types';
|
import type { BarMap } from './types';
|
||||||
|
import type { MergeAll } from '/@/utils/types';
|
||||||
|
|
||||||
export const BAR_MAP: BarMap = {
|
export const BAR_MAP: BarMap = {
|
||||||
vertical: {
|
vertical: {
|
||||||
|
|
@ -40,8 +41,16 @@ function extend<T extends object, K extends object>(to: T, _from: K): T & K {
|
||||||
return Object.assign(to, _from);
|
return Object.assign(to, _from);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function toObject<T extends object>(arr: Array<T>): Recordable<T> {
|
/**
|
||||||
const res = {};
|
* [
|
||||||
|
* { name: 'zhangsan', age: 18 },
|
||||||
|
* { sex: 'male', age: 20 }
|
||||||
|
* ]
|
||||||
|
* =>
|
||||||
|
* { name: 'zhangsan', sex: 'male', age: 20 }
|
||||||
|
*/
|
||||||
|
export function toObject<T extends object[]>(arr: T): MergeAll<T> {
|
||||||
|
const res = {} as MergeAll<T>;
|
||||||
for (let i = 0; i < arr.length; i++) {
|
for (let i = 0; i < arr.length; i++) {
|
||||||
if (arr[i]) {
|
if (arr[i]) {
|
||||||
extend(res, arr[i]);
|
extend(res, arr[i]);
|
||||||
|
|
|
||||||
|
|
@ -45,11 +45,18 @@
|
||||||
},
|
},
|
||||||
emits: ['select', 'open-change'],
|
emits: ['select', 'open-change'],
|
||||||
setup(props, { emit }) {
|
setup(props, { emit }) {
|
||||||
const rootMenuEmitter = mitt();
|
const rootMenuEmitter = mitt<{
|
||||||
|
'on-update-opened': (string | number)[];
|
||||||
|
'on-menu-item-select': string | number;
|
||||||
|
'open-name-change': {
|
||||||
|
name: string;
|
||||||
|
opened: boolean;
|
||||||
|
};
|
||||||
|
}>();
|
||||||
const instance = getCurrentInstance();
|
const instance = getCurrentInstance();
|
||||||
|
|
||||||
const currentActiveName = ref<string | number>('');
|
const currentActiveName = ref<string | number>('');
|
||||||
const openedNames = ref<string[]>([]);
|
const openedNames = ref<(string | number)[]>([]);
|
||||||
|
|
||||||
const { prefixCls } = useDesign('menu');
|
const { prefixCls } = useDesign('menu');
|
||||||
|
|
||||||
|
|
@ -95,13 +102,13 @@
|
||||||
rootMenuEmitter.emit('on-update-opened', openedNames.value);
|
rootMenuEmitter.emit('on-update-opened', openedNames.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
function addSubMenu(name: string) {
|
function addSubMenu(name: string | number) {
|
||||||
if (openedNames.value.includes(name)) return;
|
if (openedNames.value.includes(name)) return;
|
||||||
openedNames.value.push(name);
|
openedNames.value.push(name);
|
||||||
updateOpened();
|
updateOpened();
|
||||||
}
|
}
|
||||||
|
|
||||||
function removeSubMenu(name: string) {
|
function removeSubMenu(name: string | number) {
|
||||||
openedNames.value = openedNames.value.filter((item) => item !== name);
|
openedNames.value = openedNames.value.filter((item) => item !== name);
|
||||||
updateOpened();
|
updateOpened();
|
||||||
}
|
}
|
||||||
|
|
@ -131,7 +138,7 @@
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
openedNames.value = !props.collapse ? [...props.openNames] : [];
|
openedNames.value = !props.collapse ? [...props.openNames] : [];
|
||||||
updateOpened();
|
updateOpened();
|
||||||
rootMenuEmitter.on('on-menu-item-select', (name: string) => {
|
rootMenuEmitter.on('on-menu-item-select', (name: string | number) => {
|
||||||
currentActiveName.value = name;
|
currentActiveName.value = name;
|
||||||
|
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import type {
|
||||||
TableRowSelection as ITableRowSelection,
|
TableRowSelection as ITableRowSelection,
|
||||||
Key,
|
Key,
|
||||||
} from 'ant-design-vue/lib/table/interface';
|
} from 'ant-design-vue/lib/table/interface';
|
||||||
|
|
||||||
import type { ColumnProps } from 'ant-design-vue/lib/table';
|
import type { ColumnProps } from 'ant-design-vue/lib/table';
|
||||||
|
|
||||||
import { ComponentType } from './componentType';
|
import { ComponentType } from './componentType';
|
||||||
|
|
@ -94,7 +95,7 @@ export interface TableActionType {
|
||||||
expandRows: (keys: (string | number)[]) => void;
|
expandRows: (keys: (string | number)[]) => void;
|
||||||
collapseAll: () => void;
|
collapseAll: () => void;
|
||||||
scrollTo: (pos: string) => void; // pos: id | "top" | "bottom"
|
scrollTo: (pos: string) => void; // pos: id | "top" | "bottom"
|
||||||
getSelectRowKeys: () => string[];
|
getSelectRowKeys: () => Key[];
|
||||||
deleteSelectRowByKey: (key: string) => void;
|
deleteSelectRowByKey: (key: string) => void;
|
||||||
setPagination: (info: Partial<PaginationProps>) => void;
|
setPagination: (info: Partial<PaginationProps>) => void;
|
||||||
setTableData: <T = Recordable>(values: T[]) => void;
|
setTableData: <T = Recordable>(values: T[]) => void;
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ export const treeProps = buildProps({
|
||||||
},
|
},
|
||||||
|
|
||||||
renderIcon: {
|
renderIcon: {
|
||||||
type: Function as PropType<(params: Recordable) => string>,
|
type: Function as PropType<(...params: any[]) => string>,
|
||||||
},
|
},
|
||||||
|
|
||||||
helpMessage: {
|
helpMessage: {
|
||||||
|
|
|
||||||
|
|
@ -113,11 +113,15 @@
|
||||||
const isTitleClickable = computed(() => !!props.onTitleClick);
|
const isTitleClickable = computed(() => !!props.onTitleClick);
|
||||||
const getPagination = computed(() => {
|
const getPagination = computed(() => {
|
||||||
const { list, pageSize } = props;
|
const { list, pageSize } = props;
|
||||||
if (pageSize > 0 && list && list.length > pageSize) {
|
|
||||||
|
// compatible line 104
|
||||||
|
// if typeof pageSize is boolean, Number(true) && 5 = 5, Number(false) && 5 = 0
|
||||||
|
const size = isNumber(pageSize) ? pageSize : Number(pageSize) && 5;
|
||||||
|
|
||||||
|
if (size > 0 && list && list.length > size) {
|
||||||
return {
|
return {
|
||||||
total: list.length,
|
total: list.length,
|
||||||
pageSize,
|
pageSize: size,
|
||||||
//size: 'small',
|
|
||||||
current: unref(current),
|
current: unref(current),
|
||||||
onChange(page) {
|
onChange(page) {
|
||||||
current.value = page;
|
current.value = page;
|
||||||
|
|
|
||||||
|
|
@ -40,3 +40,26 @@ export type ComponentSize = 'large' | 'medium' | 'small' | 'mini';
|
||||||
export type StyleValue = string | CSSProperties | Array<StyleValue>;
|
export type StyleValue = string | CSSProperties | Array<StyleValue>;
|
||||||
|
|
||||||
export type Mutable<T> = { -readonly [P in keyof T]: T[P] };
|
export type Mutable<T> = { -readonly [P in keyof T]: T[P] };
|
||||||
|
|
||||||
|
type Merge<O extends object, T extends object> = {
|
||||||
|
[K in keyof O | keyof T]: K extends keyof T ? T[K] : K extends keyof O ? O[K] : never;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* T = [
|
||||||
|
* { name: string; age: number; },
|
||||||
|
* { sex: 'male' | 'female'; age: string }
|
||||||
|
* ]
|
||||||
|
* =>
|
||||||
|
* MergeAll<T> = {
|
||||||
|
* name: string;
|
||||||
|
* sex: 'male' | 'female';
|
||||||
|
* age: string
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
export type MergeAll<T extends object[], R extends object = {}> = T extends [
|
||||||
|
infer F extends object,
|
||||||
|
...infer Rest extends object[],
|
||||||
|
]
|
||||||
|
? MergeAll<Rest, Merge<R, F>>
|
||||||
|
: R;
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,12 @@
|
||||||
/>
|
/>
|
||||||
<a-button type="primary" class="my-4" @click="handleCreatePrompt"> Prompt </a-button>
|
<a-button type="primary" class="my-4" @click="handleCreatePrompt"> Prompt </a-button>
|
||||||
|
|
||||||
<component :is="currentModal" v-model:open="modalOpen" :userData="userData" />
|
<component
|
||||||
|
v-if="currentModal"
|
||||||
|
:is="currentModal"
|
||||||
|
v-model:open="modalOpen"
|
||||||
|
:userData="userData"
|
||||||
|
/>
|
||||||
|
|
||||||
<Modal1 @register="register1" :minHeight="100" />
|
<Modal1 @register="register1" :minHeight="100" />
|
||||||
<Modal2 @register="register2" />
|
<Modal2 @register="register2" />
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,8 @@
|
||||||
import { PlusOutlined, DeleteOutlined } from '@ant-design/icons-vue';
|
import { PlusOutlined, DeleteOutlined } from '@ant-design/icons-vue';
|
||||||
import { PageWrapper } from '/@/components/Page';
|
import { PageWrapper } from '/@/components/Page';
|
||||||
|
|
||||||
|
import { EventDataNode } from 'ant-design-vue/es/vc-tree/interface';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
components: { BasicTree, PageWrapper, Row, Col },
|
components: { BasicTree, PageWrapper, Row, Col },
|
||||||
setup() {
|
setup() {
|
||||||
|
|
@ -65,8 +67,8 @@
|
||||||
console.log(node);
|
console.log(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getRightMenuList(node: any): ContextMenuItem[] {
|
function getRightMenuList(node: EventDataNode): Promise<ContextMenuItem[]> {
|
||||||
return [
|
const menu = [
|
||||||
{
|
{
|
||||||
label: '新增',
|
label: '新增',
|
||||||
handler: () => {
|
handler: () => {
|
||||||
|
|
@ -82,6 +84,9 @@
|
||||||
icon: 'bx:bxs-folder-open',
|
icon: 'bx:bxs-folder-open',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
resolve(menu);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
const actionList: TreeActionItem[] = [
|
const actionList: TreeActionItem[] = [
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -14,17 +14,18 @@
|
||||||
<!-- 处理数组属性,placeholder -->
|
<!-- 处理数组属性,placeholder -->
|
||||||
|
|
||||||
<div v-if="item.children">
|
<div v-if="item.children">
|
||||||
|
<template v-for="(child, index) of item.children" :key="index">
|
||||||
<component
|
<component
|
||||||
v-for="(child, index) of item.children"
|
v-if="child.component"
|
||||||
:key="index"
|
|
||||||
v-bind="child.componentProps"
|
v-bind="child.componentProps"
|
||||||
:is="child.component"
|
|
||||||
v-model:value="formConfig.currentItem.componentProps[item.name][index]"
|
v-model:value="formConfig.currentItem.componentProps[item.name][index]"
|
||||||
|
:is="child.component"
|
||||||
/>
|
/>
|
||||||
|
</template>
|
||||||
</div>
|
</div>
|
||||||
<!-- 如果不是数组,则正常处理属性值 -->
|
<!-- 如果不是数组,则正常处理属性值 -->
|
||||||
<component
|
<component
|
||||||
v-else
|
v-else-if="item.component"
|
||||||
class="component-prop"
|
class="component-prop"
|
||||||
v-bind="item.componentProps"
|
v-bind="item.componentProps"
|
||||||
:is="item.component"
|
:is="item.component"
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
<div v-for="item of baseItemColumnProps" :key="item.name">
|
<div v-for="item of baseItemColumnProps" :key="item.name">
|
||||||
<FormItem :label="item.label" v-if="showProps(item.exclude)">
|
<FormItem :label="item.label" v-if="showProps(item.exclude)">
|
||||||
<component
|
<component
|
||||||
v-if="formConfig.currentItem.colProps"
|
v-if="formConfig.currentItem.colProps && item.component"
|
||||||
class="component-props"
|
class="component-props"
|
||||||
v-bind="item.componentProps"
|
v-bind="item.componentProps"
|
||||||
:is="item.component"
|
:is="item.component"
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
<div v-for="item of baseFormItemProps" :key="item.name">
|
<div v-for="item of baseFormItemProps" :key="item.name">
|
||||||
<FormItem :label="item.label" v-if="showProps(item.exclude)">
|
<FormItem :label="item.label" v-if="showProps(item.exclude)">
|
||||||
<component
|
<component
|
||||||
|
v-if="item.component"
|
||||||
class="component-props"
|
class="component-props"
|
||||||
v-bind="item.componentProps"
|
v-bind="item.componentProps"
|
||||||
:is="item.component"
|
:is="item.component"
|
||||||
|
|
@ -19,6 +20,7 @@
|
||||||
<div v-for="item of advanceFormItemProps" :key="item.name">
|
<div v-for="item of advanceFormItemProps" :key="item.name">
|
||||||
<FormItem :label="item.label" v-if="showProps(item.exclude)">
|
<FormItem :label="item.label" v-if="showProps(item.exclude)">
|
||||||
<component
|
<component
|
||||||
|
v-if="item.component"
|
||||||
class="component-props"
|
class="component-props"
|
||||||
v-bind="item.componentProps"
|
v-bind="item.componentProps"
|
||||||
:is="item.component"
|
:is="item.component"
|
||||||
|
|
@ -28,6 +30,7 @@
|
||||||
><div v-for="item of advanceFormItemColProps" :key="item.name">
|
><div v-for="item of advanceFormItemColProps" :key="item.name">
|
||||||
<FormItem :label="item.label" v-if="showProps(item.exclude)">
|
<FormItem :label="item.label" v-if="showProps(item.exclude)">
|
||||||
<component
|
<component
|
||||||
|
v-if="item.component"
|
||||||
class="component-props"
|
class="component-props"
|
||||||
v-bind="item.componentProps"
|
v-bind="item.componentProps"
|
||||||
:is="item.component"
|
:is="item.component"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue