|
@@ -8,13 +8,16 @@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</el-menu-item>
|
|
</el-menu-item>
|
|
- <MenuItem :datas="datas" :cur="curKey" :collapse="isCollapse" @change="MenuClick"/>
|
|
|
|
|
|
+ <MenuItem :datas="menuDatas" :cur="curKey" :collapse="isCollapse" @change="MenuClick"/>
|
|
</el-menu>
|
|
</el-menu>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
<script setup>
|
|
-import {ref,watch} from "vue";
|
|
|
|
|
|
+import {nextTick, ref, watch} from "vue";
|
|
import MenuItem from "./MenuItem.vue"
|
|
import MenuItem from "./MenuItem.vue"
|
|
|
|
+import {useAppStore} from "~src/store";
|
|
|
|
+import {getToken} from "~src/api/util/auth";
|
|
|
|
+const useAppState = useAppStore()
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
datas: {
|
|
datas: {
|
|
type: Array,
|
|
type: Array,
|
|
@@ -31,23 +34,62 @@ const props = defineProps({
|
|
})
|
|
})
|
|
|
|
|
|
//初始变量
|
|
//初始变量
|
|
|
|
+const menuDatas = ref([]);
|
|
const curKey = ref(props.cur);
|
|
const curKey = ref(props.cur);
|
|
const isCollapse = ref(props.collapse);
|
|
const isCollapse = ref(props.collapse);
|
|
|
|
|
|
|
|
+//监听
|
|
|
|
+/*watch(() => [
|
|
|
|
+ props.datas
|
|
|
|
+], ([datas]) => {
|
|
|
|
+ setMenuDatas(datas)
|
|
|
|
+})*/
|
|
|
|
+
|
|
//监听
|
|
//监听
|
|
watch(() => [
|
|
watch(() => [
|
|
props.cur,
|
|
props.cur,
|
|
props.collapse
|
|
props.collapse
|
|
-], ([cur,collapse]) => {
|
|
|
|
|
|
+], ([cur, collapse]) => {
|
|
curKey.value = cur
|
|
curKey.value = cur
|
|
isCollapse.value = collapse
|
|
isCollapse.value = collapse
|
|
})
|
|
})
|
|
|
|
|
|
|
|
+//渲染完成
|
|
|
|
+nextTick(() => {
|
|
|
|
+ setMenuDatas(props.datas)
|
|
|
|
+});
|
|
|
|
+
|
|
|
|
+//设置菜单数据
|
|
|
|
+const setMenuDatas = (datas) => {
|
|
|
|
+ let newArr = datas || [];
|
|
|
|
+ const res = getToArchivesUrl();
|
|
|
|
+ if (res) {
|
|
|
|
+ newArr.push({
|
|
|
|
+ code: res.code,
|
|
|
|
+ source: res.source,
|
|
|
|
+ path: res.path,
|
|
|
|
+ name: res.name,
|
|
|
|
+ children: []
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ menuDatas.value = newArr
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//获取档案管理的数据
|
|
|
|
+const getToArchivesUrl = () => {
|
|
|
|
+ return useAppState.getButtonsVal('to-archives-url')
|
|
|
|
+}
|
|
|
|
+
|
|
//事件
|
|
//事件
|
|
const emit = defineEmits(['change'])
|
|
const emit = defineEmits(['change'])
|
|
const MenuClick = (item) => {
|
|
const MenuClick = (item) => {
|
|
- curKey.value = item?.code || '';
|
|
|
|
- emit('change', item)
|
|
|
|
|
|
+ if (item?.code === 'to-archives-url') {
|
|
|
|
+ const token = getToken()
|
|
|
|
+ window.open(item?.path + '/#/auth?token=' + token,'_blank')
|
|
|
|
+ } else {
|
|
|
|
+ curKey.value = item?.code || '';
|
|
|
|
+ emit('change', item)
|
|
|
|
+ }
|
|
}
|
|
}
|
|
</script>
|
|
</script>
|
|
|
|
|
|
@@ -69,6 +111,9 @@ const MenuClick = (item) => {
|
|
white-space: nowrap;
|
|
white-space: nowrap;
|
|
padding-left: 0;
|
|
padding-left: 0;
|
|
}
|
|
}
|
|
|
|
+ &.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-sub-menu__title {
|
|
|
|
+ padding-right: 10px;
|
|
|
|
+ }
|
|
.el-sub-menu__title {
|
|
.el-sub-menu__title {
|
|
padding: 0;
|
|
padding: 0;
|
|
}
|
|
}
|