mod vue2 to vue3

This commit is contained in:
chenhaodong
2026-06-18 01:44:25 +08:00
parent 109204734a
commit d30ff1a362
124 changed files with 951 additions and 2183 deletions
@@ -1,7 +1,11 @@
<template>
<svg-icon v-if="icon" :icon-class="icon" />
<span v-if="title">{{ title }}</span>
</template>
<script>
export default {
name: 'MenuItem',
functional: true,
props: {
icon: {
type: String,
@@ -11,19 +15,6 @@ export default {
type: String,
default: ''
}
},
render(h, context) {
const { icon, title } = context.props
const vnodes = []
if (icon) {
vnodes.push(<svg-icon icon-class={icon}/>)
}
if (title) {
vnodes.push(<span slot='title'>{(title)}</span>)
}
return vnodes
}
}
</script>
@@ -1,9 +1,11 @@
<template>
<!-- eslint-disable vue/require-component-is -->
<component v-bind="linkProps(to)">
<a v-if="isExternal" :href="to" target="_blank" rel="noopener">
<slot />
</component>
</a>
<router-link v-else :to="to">
<slot />
</router-link>
</template>
<script>
@@ -16,20 +18,9 @@ export default {
required: true
}
},
methods: {
linkProps(url) {
if (isExternal(url)) {
return {
is: 'a',
href: url,
target: '_blank',
rel: 'noopener'
}
}
return {
is: 'router-link',
to: url
}
computed: {
isExternal() {
return isExternal(this.to)
}
}
}
@@ -36,7 +36,7 @@ export default {
transition: opacity 1.5s;
}
.sidebarLogoFade-enter,
.sidebarLogoFade-enter-from,
.sidebarLogoFade-leave-to {
opacity: 0;
}
@@ -8,8 +8,8 @@
</app-link>
</template>
<el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body>
<template slot="title">
<el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" teleported>
<template #title>
<item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" />
</template>
<sidebar-item
@@ -25,11 +25,11 @@
</template>
<script>
import path from 'path'
import { resolve } from '@/utils/path'
import { isExternal } from '@/utils/validate'
import Item from './Item'
import AppLink from './Link'
import FixiOSBug from './FixiOSBug'
import Item from './Item.vue'
import AppLink from './Link.vue'
import FixiOSBug from './FixiOSBug.js'
export default {
name: 'SidebarItem',
@@ -88,7 +88,7 @@ export default {
if (isExternal(this.basePath)) {
return this.basePath
}
return path.resolve(this.basePath, routePath)
return resolve(this.basePath, routePath)
}
}
}
@@ -20,9 +20,9 @@
<script>
import { mapGetters } from 'vuex'
import Logo from './Logo'
import SidebarItem from './SidebarItem'
import variables from '@/styles/variables.scss'
import Logo from './Logo.vue'
import SidebarItem from './SidebarItem.vue'
import variables from '@/styles/variables-js.js'
export default {
components: { SidebarItem, Logo },