修复 Menu TagMenu 类型错误问题

This commit is contained in:
chuan_wuhao 2022-12-27 16:08:45 +08:00
parent 6bc7a23987
commit 161b133b9a
3 changed files with 20 additions and 5 deletions

View File

@ -61,7 +61,7 @@ const MenuTag = defineComponent({
return ( return (
<NScrollbar class="menu-tag" xScrollable> <NScrollbar class="menu-tag" xScrollable>
<NSpace class="menu-tag-sapce" wrap={false} align="center"> <NSpace class="menu-tag-sapce" wrap={false} align="center">
{this.menuTagOptions.map((curr: MenuOption, idx) => ( {this.menuTagOptions.map((curr, idx) => (
<NTag <NTag
closable={ closable={
curr.key !== '/dashboard' && this.menuTagOptions.length > 1 curr.key !== '/dashboard' && this.menuTagOptions.length > 1

View File

@ -15,12 +15,12 @@ export const useMenu = defineStore('menu', () => {
const menuState = reactive({ const menuState = reactive({
menuKey: cacheMenuKey as string | null, // 当前菜单 `key` menuKey: cacheMenuKey as string | null, // 当前菜单 `key`
options: [] as RouteRecordRaw[], // 菜单列表 options: [] as IMenuOptions[], // 菜单列表
collapsed: false, // 是否折叠菜单 collapsed: false, // 是否折叠菜单
menuTagOptions: [] as RouteRecordRaw[], menuTagOptions: [] as TagMenuOptions[],
}) })
const handleMenuTagOptions = (item: RouteRecordRaw) => { const handleMenuTagOptions = (item: IMenuOptions) => {
if (item.path !== menuState.menuKey) { if (item.path !== menuState.menuKey) {
const tag = menuState.menuTagOptions.find( const tag = menuState.menuTagOptions.find(
(curr) => curr.path === item.path, (curr) => curr.path === item.path,
@ -40,7 +40,7 @@ export const useMenu = defineStore('menu', () => {
* `menu key` * `menu key`
*/ */
const menuModelValueChange = (key: string, item: MenuOption) => { const menuModelValueChange = (key: string, item: MenuOption) => {
handleMenuTagOptions(item as unknown as RouteRecordRaw) handleMenuTagOptions(item as unknown as TagMenuOptions)
menuState.menuKey = key menuState.menuKey = key

15
src/types/store.d.ts vendored Normal file
View File

@ -0,0 +1,15 @@
export {}
import type { RouteRecordRaw } from 'vue-router'
import type { MenuOption } from 'naive-ui'
import type { VNode } from 'vue'
declare global {
declare interface IMenuOptions extends MenuOption, RouteRecordRaw {
key: string | number
path: string
label: string | Function
}
declare interface TagMenuOptions extends IMenuOptions {}
}