Browse Source

[Feature][UI Next] Remove sidekey, resolve the sidebar route jump issue (#8200)

3.0.0/version-upgrade
labbomb 3 years ago committed by GitHub
parent
commit
7945a2f3aa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 10
      dolphinscheduler-ui-next/src/layouts/content/components/sidebar/index.tsx
  2. 5
      dolphinscheduler-ui-next/src/layouts/content/components/sidebar/use-menuClick.ts
  3. 15
      dolphinscheduler-ui-next/src/layouts/content/index.tsx
  4. 7
      dolphinscheduler-ui-next/src/store/menu/menu.ts
  5. 1
      dolphinscheduler-ui-next/src/store/menu/types.ts

10
dolphinscheduler-ui-next/src/layouts/content/components/sidebar/index.tsx

@ -15,10 +15,11 @@
* limitations under the License. * limitations under the License.
*/ */
import { defineComponent, ref, PropType } from 'vue' import { defineComponent, ref, PropType, watch } from 'vue'
import { NLayoutSider, NMenu } from 'naive-ui' import { NLayoutSider, NMenu } from 'naive-ui'
import { useMenuClick } from './use-menuClick' import { useMenuClick } from './use-menuClick'
import { useMenuStore } from '@/store/menu/menu' import { useMenuStore } from '@/store/menu/menu'
import { useRoute } from 'vue-router'
const Sidebar = defineComponent({ const Sidebar = defineComponent({
name: 'Sidebar', name: 'Sidebar',
@ -26,9 +27,14 @@ const Sidebar = defineComponent({
sideMenuOptions: { sideMenuOptions: {
type: Array as PropType<any>, type: Array as PropType<any>,
default: [] default: []
},
sideKey: {
type: String as PropType<string>,
default: ''
} }
}, },
setup() { setup() {
const route = useRoute()
const menuStore = useMenuStore() const menuStore = useMenuStore()
const collapsedRef = ref(false) const collapsedRef = ref(false)
const defaultExpandedKeys = [ const defaultExpandedKeys = [
@ -54,7 +60,7 @@ const Sidebar = defineComponent({
onExpand={() => (this.collapsedRef = false)} onExpand={() => (this.collapsedRef = false)}
> >
<NMenu <NMenu
value={this.menuStore.getSideMenuKey} value={this.sideKey}
options={this.sideMenuOptions} options={this.sideMenuOptions}
defaultExpandedKeys={this.defaultExpandedKeys} defaultExpandedKeys={this.defaultExpandedKeys}
onUpdateValue={this.handleMenuClick} onUpdateValue={this.handleMenuClick}

5
dolphinscheduler-ui-next/src/layouts/content/components/sidebar/use-menuClick.ts

@ -18,15 +18,12 @@
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import type { Router } from 'vue-router' import type { Router } from 'vue-router'
import { MenuOption } from 'naive-ui' import { MenuOption } from 'naive-ui'
import { useMenuStore } from '@/store/menu/menu'
export function useMenuClick() { export function useMenuClick() {
const router: Router = useRouter() const router: Router = useRouter()
const menuStore = useMenuStore()
const handleMenuClick = (key: string, item: MenuOption) => { const handleMenuClick = (key: string, item: MenuOption) => {
console.log(key, item) // console.log(key, item)
menuStore.setSideMenuKey(`${key}`)
router.push({ path: `${key}` }) router.push({ path: `${key}` })
} }

15
dolphinscheduler-ui-next/src/layouts/content/index.tsx

@ -15,7 +15,7 @@
* limitations under the License. * limitations under the License.
*/ */
import { defineComponent, onMounted, watch, toRefs } from 'vue' import { defineComponent, onMounted, watch, toRefs, ref } from 'vue'
import { NLayout, NLayoutContent, NLayoutHeader, useMessage } from 'naive-ui' import { NLayout, NLayoutContent, NLayoutHeader, useMessage } from 'naive-ui'
import NavBar from './components/navbar' import NavBar from './components/navbar'
import SideBar from './components/sidebar' import SideBar from './components/sidebar'
@ -40,6 +40,7 @@ const Content = defineComponent({
changeHeaderMenuOptions, changeHeaderMenuOptions,
changeUserDropdown changeUserDropdown
} = useDataList() } = useDataList()
const sideKey = ref()
locale.value = localesStore.getLocales locale.value = localesStore.getLocales
@ -59,10 +60,11 @@ const Content = defineComponent({
watch( watch(
() => route.path, () => route.path,
(path) => { () => {
state.isShowSide = menuStore.getShowSideStatus state.isShowSide = menuStore.getShowSideStatus
menuStore.setSideMenuKey(path) sideKey.value = route.matched[1]?.path
} },
{immediate: true}
) )
const getSideMenu = (state: any) => { const getSideMenu = (state: any) => {
@ -82,7 +84,8 @@ const Content = defineComponent({
...toRefs(state), ...toRefs(state),
menuStore, menuStore,
changeMenuOption, changeMenuOption,
getSideMenuOptions getSideMenuOptions,
sideKey
} }
}, },
render() { render() {
@ -98,7 +101,7 @@ const Content = defineComponent({
</NLayoutHeader> </NLayoutHeader>
<NLayout has-sider position='absolute' style='top: 65px'> <NLayout has-sider position='absolute' style='top: 65px'>
{this.isShowSide && ( {this.isShowSide && (
<SideBar sideMenuOptions={this.sideMenuOptions} /> <SideBar sideMenuOptions={this.sideMenuOptions} sideKey={this.sideKey} />
)} )}
<NLayoutContent native-scrollbar={false} style='padding: 16px 22px'> <NLayoutContent native-scrollbar={false} style='padding: 16px 22px'>
<router-view key={this.$route.fullPath} /> <router-view key={this.$route.fullPath} />

7
dolphinscheduler-ui-next/src/store/menu/menu.ts

@ -23,7 +23,6 @@ export const useMenuStore = defineStore({
state: (): MenuState => ({ state: (): MenuState => ({
menuKey: 'home', menuKey: 'home',
isShowSide: false, isShowSide: false,
sideMenuKey: '',
projectCode: '' projectCode: ''
}), }),
persist: true, persist: true,
@ -34,9 +33,6 @@ export const useMenuStore = defineStore({
getShowSideStatus(): boolean { getShowSideStatus(): boolean {
return this.isShowSide || false return this.isShowSide || false
}, },
getSideMenuKey(): string {
return this.sideMenuKey || ''
},
getProjectCode(): string { getProjectCode(): string {
return this.projectCode || '' return this.projectCode || ''
} }
@ -48,9 +44,6 @@ export const useMenuStore = defineStore({
setShowSideStatus(isShowSide: boolean): void { setShowSideStatus(isShowSide: boolean): void {
this.isShowSide = isShowSide this.isShowSide = isShowSide
}, },
setSideMenuKey(sideMenuKey: string): void {
this.sideMenuKey = sideMenuKey
},
setProjectCode(projectCode: string): void { setProjectCode(projectCode: string): void {
this.projectCode = projectCode this.projectCode = projectCode
} }

1
dolphinscheduler-ui-next/src/store/menu/types.ts

@ -18,7 +18,6 @@
interface MenuState { interface MenuState {
menuKey: string menuKey: string
isShowSide: boolean isShowSide: boolean
sideMenuKey: string
projectCode: string projectCode: string
} }

Loading…
Cancel
Save