Skip to content

Commit 076dc79

Browse files
committed
fix: 左侧菜单超出屏幕不能滚动问题
1 parent 18b8798 commit 076dc79

File tree

7 files changed

+40
-38
lines changed

7 files changed

+40
-38
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
"nprogress": "^1.0.0-1",
3535
"pinia": "2.0.9",
3636
"qs": "^6.10.2",
37-
"socket.io-client": "4.4.0",
37+
"socket.io-client": "4.4.1",
3838
"sortablejs": "^1.14.0",
3939
"vue": "^3.2.26",
4040
"vue-i18n": "^9.2.0-beta.26",

src/components/core/schema-form/schema-form.vue

+9-5
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
} from 'vue';
3939
import { Form, Row } from 'ant-design-vue';
4040
import { formProps } from 'ant-design-vue/lib/form';
41-
import { isNullOrUnDef, isObject, isArray, isFunction, isBoolean } from '@/utils/is';
41+
import { isNullOrUnDef, isObject, isArray, isFunction, isBoolean, isString } from '@/utils/is';
4242
import { deepMerge } from '@/utils/';
4343
import SchemaFormItem from './schema-form-item.vue';
4444
import type { FormItemSchema, FormSchema, FormActionType } from './types/form';
@@ -71,7 +71,7 @@
7171
let oldFormSchema: FormSchema;
7272
// TODO 将formSchema克隆一份,避免修改原有的formSchema
7373
// TODO 类型为FormSchema 提示:类型实例化过深,且可能无限
74-
const formSchemaRef = ref<any>({});
74+
const formSchemaRef = ref<FormSchema>(cloneDeep(props.formSchema));
7575
// 表单项数据
7676
const formModel = reactive({ ...props.initialValues });
7777
// 表单默认数据
@@ -172,7 +172,9 @@
172172
*/
173173
function itemIsDateType(key: string) {
174174
return unref(formSchemaRef).schemas.some((item) => {
175-
return item.field === key ? dateItemType.includes(item.component) : false;
175+
return item.field === key && isString(item.component)
176+
? dateItemType.includes(item.component)
177+
: false;
176178
});
177179
}
178180
@@ -191,7 +193,9 @@
191193
let value = values[key];
192194
193195
const hasKey = Reflect.has(values, key);
194-
value = handleInputNumberValue(schema?.component, value);
196+
if (isString(schema?.component)) {
197+
value = handleInputNumberValue(schema?.component, value);
198+
}
195199
// 0| '' is allow
196200
if (hasKey && fields.includes(key)) {
197201
// time type
@@ -227,7 +231,7 @@
227231
if (isArray(data)) {
228232
updateData = [...data];
229233
}
230-
234+
// @ts-ignore
231235
unref(formSchemaRef).schemas = updateData as FormItemSchema[];
232236
}
233237

src/components/core/schema-form/types/form.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export type RegisterFn = (formInstance: FormActionType) => void;
5252
export type UseFormReturnType = [RegisterFn, FormActionType];
5353

5454
/** 表单 */
55-
export interface FormSchema extends FormProps {
55+
export interface FormSchema<T = any> extends FormProps {
5656
// Form value
5757
model?: any;
5858
// The width of all items in the entire form
@@ -69,7 +69,7 @@ export interface FormSchema extends FormProps {
6969
baseColProps?: Partial<ColEx>;
7070

7171
// Form configuration rules
72-
schemas: FormItemSchema<any>[];
72+
schemas: FormItemSchema<T>[];
7373
// Function values used to merge into dynamic control form items
7474
mergeDynamicData?: any;
7575
// Compact mode for search forms
@@ -116,9 +116,9 @@ export interface FormSchema extends FormProps {
116116
transformDateFunc?: (date: any) => string;
117117
}
118118
/** 表单项 */
119-
export interface FormItemSchema<T = string> {
119+
export interface FormItemSchema<T = any> {
120120
/** 字段名 */
121-
field: T extends string ? string : keyof T;
121+
field: T extends any ? string : keyof T;
122122
// Event name triggered by internal value change, default change
123123
changeEvent?: string;
124124
// Variable name bound to v-model Default value

src/layout/menu/menu.vue

+15-14
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
<template>
2-
<Menu
3-
v-model:open-keys="state.openKeys"
4-
v-model:selected-keys="state.selectedKeys"
5-
mode="inline"
6-
theme="dark"
7-
:collapsed="props.collapsed"
8-
collapsible
9-
class="menu-container"
10-
@click="clickMenuItem"
11-
>
12-
<template v-for="item in menus" :key="item.name">
13-
<MenuItem :menu-info="item" />
14-
</template>
15-
</Menu>
2+
<div class="menu-container">
3+
<Menu
4+
v-model:open-keys="state.openKeys"
5+
v-model:selected-keys="state.selectedKeys"
6+
mode="inline"
7+
theme="dark"
8+
:collapsed="props.collapsed"
9+
collapsible
10+
@click="clickMenuItem"
11+
>
12+
<template v-for="item in menus" :key="item.name">
13+
<MenuItem :menu-info="item" />
14+
</template>
15+
</Menu>
16+
</div>
1617
</template>
1718

1819
<script setup lang="ts">

src/layout/tabs/tabs-view.vue

+3-3
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
<close-outlined />
2525
{{ $t('layout.multipleTab.close') }}
2626
</Menu.Item>
27-
<a-menu-divider />
27+
<Menu.Divider />
2828
<Menu.Item key="3" @click="closeLeft(pageItem)">
2929
<vertical-right-outlined />
3030
{{ $t('layout.multipleTab.closeLeft') }}
@@ -33,7 +33,7 @@
3333
<vertical-left-outlined />
3434
{{ $t('layout.multipleTab.closeRight') }}
3535
</Menu.Item>
36-
<a-menu-divider />
36+
<Menu.Divider />
3737
<Menu.Item key="5" @click="closeOther(pageItem)">
3838
<column-width-outlined />
3939
{{ $t('layout.multipleTab.closeOther') }}
@@ -63,7 +63,7 @@
6363
<close-outlined />
6464
{{ $t('layout.multipleTab.close') }}
6565
</Menu.Item>
66-
<a-menu-divider />
66+
<Menu.Divider />
6767
<Menu.Item key="5" @click="closeOther(route)">
6868
<column-width-outlined />
6969
{{ $t('layout.multipleTab.closeOther') }}

src/views/system/permission/user/index.vue

+4-7
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@
3232
>
3333
编辑 <EditOutlined />
3434
</Menu.Item>
35-
<a-menu-item key="2" :disabled="!$auth('sys.dept.delete')" @click="delDept(key)">
35+
<Menu.Item key="2" :disabled="!$auth('sys.dept.delete')" @click="delDept(key)">
3636
删除 <DeleteOutlined />
37-
</a-menu-item>
37+
</Menu.Item>
3838
</Menu>
3939
</template>
4040
</Dropdown>
@@ -100,11 +100,8 @@
100100
SwapOutlined,
101101
} from '@ant-design/icons-vue';
102102
import { SplitPanel } from '@/components/basic/split-panel';
103-
import {
104-
DynamicTable,
105-
type LoadDataParams,
106-
type DynamicTableInstance,
107-
} from '@/components/core/dynamic-table';
103+
import { DynamicTable } from '@/components/core/dynamic-table';
104+
import type { LoadDataParams, DynamicTableInstance } from '@/components/core/dynamic-table';
108105
import {
109106
deleteUsers,
110107
getUserListPage,

yarn.lock

+4-4
Original file line numberDiff line numberDiff line change
@@ -8118,10 +8118,10 @@ snapdragon@^0.8.1:
81188118
source-map-resolve "^0.5.0"
81198119
use "^3.1.0"
81208120

8121-
socket.io-client@4.4.0:
8122-
version "4.4.0"
8123-
resolved "https://registry.npmmirror.com/socket.io-client/download/socket.io-client-4.4.0.tgz?cache=0&sync_timestamp=1637241002786&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fsocket.io-client%2Fdownload%2Fsocket.io-client-4.4.0.tgz#d6568ebd79ac12e2d6b628e7e90e60f1d48d99ff"
8124-
integrity sha512-g7riSEJXi7qCFImPow98oT8X++MSsHz6MMFRXkWNJ6uEROSHOa3kxdrsYWMq85dO+09CFMkcqlpjvbVXQl4z6g==
8121+
socket.io-client@4.4.1:
8122+
version "4.4.1"
8123+
resolved "https://registry.npmmirror.com/socket.io-client/download/socket.io-client-4.4.1.tgz#b6aa9448149d09b8d0b2bbf3d2fac310631fdec9"
8124+
integrity sha512-N5C/L5fLNha5Ojd7Yeb/puKcPWWcoB/A09fEjjNsg91EDVr5twk/OEyO6VT9dlLSUNY85NpW6KBhVMvaLKQ3vQ==
81258125
dependencies:
81268126
"@socket.io/component-emitter" "~3.0.0"
81278127
backo2 "~1.0.2"

0 commit comments

Comments
 (0)