52 lines
1.6 KiB
Vue
52 lines
1.6 KiB
Vue
<template>
|
|
<div class="aa-mixed">
|
|
<div class="aa-mixed-top">
|
|
<div
|
|
v-for="(m, i) in menu"
|
|
:key="i"
|
|
class="aa-mixed-topitem"
|
|
:class="{ 'is-active': topIdx === i }"
|
|
@click="selectTop(i)"
|
|
>{{ m.name }}</div>
|
|
</div>
|
|
<div class="aa-mixed-body">
|
|
<div class="aa-mixed-side">
|
|
<div
|
|
v-for="(it, i) in menu[topIdx].items"
|
|
:key="i"
|
|
class="aa-mixed-sideitem"
|
|
:class="{ 'is-active': sideIdx === i }"
|
|
@click="sideIdx = i"
|
|
>{{ it.name }}</div>
|
|
</div>
|
|
<div class="aa-mixed-content">
|
|
<h4>{{ menu[topIdx].name }} / {{ menu[topIdx].items[sideIdx].name }}</h4>
|
|
<div>{{ menu[topIdx].items[sideIdx].desc }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup>
|
|
import { ref } from 'vue';
|
|
|
|
const props = defineProps({
|
|
menu: {
|
|
type: Array,
|
|
default: () => [
|
|
{ name: '工作台', items: [{ name: '概览', desc: '数据看板总览' }, { name: '待办', desc: '我的待处理任务' }, { name: '报表', desc: '统计报表入口' }] },
|
|
{ name: '系统管理', items: [{ name: '用户管理', desc: '用户增删改查' }, { name: '角色管理', desc: '角色与权限分配' }, { name: '菜单管理', desc: '导航菜单配置' }] },
|
|
{ name: '业务中心', items: [{ name: '订单', desc: '订单列表与详情' }, { name: '商品', desc: '商品上下架' }, { name: '库存', desc: '库存预警' }] }
|
|
]
|
|
}
|
|
});
|
|
const topIdx = ref(0);
|
|
const sideIdx = ref(0);
|
|
function selectTop(i) {
|
|
topIdx.value = i;
|
|
sideIdx.value = 0;
|
|
}
|
|
</script>
|
|
|
|
<style src="./MixedNavigation.css"></style>
|