fix 修复面包树错误,部门树
This commit is contained in:
parent
4cab8e452e
commit
c905456c10
@ -8,7 +8,7 @@
|
|||||||
/>
|
/>
|
||||||
<el-breadcrumb class="layout-navbars-breadcrumb-hide">
|
<el-breadcrumb class="layout-navbars-breadcrumb-hide">
|
||||||
<transition-group name="breadcrumb">
|
<transition-group name="breadcrumb">
|
||||||
<el-breadcrumb-item v-for="(v, k) in breadcrumbList" :key="!v.meta.tagsViewName ? v.meta.title : v.meta.tagsViewName">
|
<el-breadcrumb-item v-for="(v, k) in breadcrumbList" :key="v.path">
|
||||||
<span v-if="k === breadcrumbList.length - 1" class="layout-navbars-breadcrumb-span">
|
<span v-if="k === breadcrumbList.length - 1" class="layout-navbars-breadcrumb-span">
|
||||||
<SvgIcon :name="v.meta.icon" class="layout-navbars-breadcrumb-iconfont" v-if="themeConfig.isBreadcrumbIcon" />
|
<SvgIcon :name="v.meta.icon" class="layout-navbars-breadcrumb-iconfont" v-if="themeConfig.isBreadcrumbIcon" />
|
||||||
<div v-if="!v.meta.tagsViewName">{{ $t(v.meta.title) }}</div>
|
<div v-if="!v.meta.tagsViewName">{{ $t(v.meta.title) }}</div>
|
||||||
@ -24,10 +24,9 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { toRefs, reactive, computed, onMounted, defineComponent } from 'vue';
|
import { toRefs, reactive, computed, onMounted } from 'vue';
|
||||||
import { onBeforeRouteUpdate, useRoute, useRouter } from 'vue-router';
|
import { onBeforeRouteUpdate, useRoute, useRouter } from 'vue-router';
|
||||||
import { Local } from '/@/utils/storage';
|
import { Local } from '/@/utils/storage';
|
||||||
import other from '/@/utils/other';
|
|
||||||
import { storeToRefs } from 'pinia';
|
import { storeToRefs } from 'pinia';
|
||||||
import { useThemeConfig } from '/@/stores/themeConfig';
|
import { useThemeConfig } from '/@/stores/themeConfig';
|
||||||
import { useRoutesList } from '/@/stores/routesList';
|
import { useRoutesList } from '/@/stores/routesList';
|
||||||
@ -78,17 +77,49 @@ const setLocalThemeConfig = () => {
|
|||||||
};
|
};
|
||||||
// 处理面包屑数据
|
// 处理面包屑数据
|
||||||
const getBreadcrumbList = (arr: Array<string>) => {
|
const getBreadcrumbList = (arr: Array<string>) => {
|
||||||
arr.forEach((item: any) => {
|
let parents :any[] = []
|
||||||
state.routeSplit.forEach((v: any, k: number, arrs: any) => {
|
arr.map((item:any)=>{
|
||||||
if (state.routeSplitFirst === item.path) {
|
parents.push(...getBreadcrumbParent(item,route.path,null))
|
||||||
state.routeSplitFirst += `/${arrs[state.routeSplitIndex]}`;
|
if(parents.length>0){
|
||||||
state.breadcrumbList.push(item);
|
return
|
||||||
state.routeSplitIndex++;
|
}
|
||||||
if (item.children) getBreadcrumbList(item.children);
|
})
|
||||||
|
parents.push(route)
|
||||||
|
parents = uniqueByPath(parents)
|
||||||
|
state.breadcrumbList = parents
|
||||||
|
};
|
||||||
|
const getBreadcrumbParent = (item:any,path:string,parent:any)=>{
|
||||||
|
const parents:any[] = []
|
||||||
|
if(item.path==path){
|
||||||
|
if(parent){
|
||||||
|
parents.push(parent)
|
||||||
|
}
|
||||||
|
return parents
|
||||||
|
}
|
||||||
|
if(item.children){
|
||||||
|
for(let i=0;i<item.children.length;i++){
|
||||||
|
const res = getBreadcrumbParent(item.children[i],path,item)
|
||||||
|
if(res && res.length>0){
|
||||||
|
parents.push(item,...res)
|
||||||
|
return parents
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return parents
|
||||||
|
}
|
||||||
|
const uniqueByPath = (arr:any[]) => {
|
||||||
|
let seen:any = {}; // 用来存储已见过的name
|
||||||
|
let result:any[] = []; // 存储去重后的结果
|
||||||
|
|
||||||
|
arr.forEach(item => {
|
||||||
|
if (!seen[item.path]) { // 如果name还没见过
|
||||||
|
seen[item.path] = true; // 标记为已见过
|
||||||
|
result.push(item); // 添加到结果数组
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
|
||||||
};
|
return result;
|
||||||
|
}
|
||||||
// 当前路由字符串切割成数组,并删除第一项空内容
|
// 当前路由字符串切割成数组,并删除第一项空内容
|
||||||
const initRouteSplit = (path: string) => {
|
const initRouteSplit = (path: string) => {
|
||||||
if (!themeConfig.value.isBreadcrumb) return false;
|
if (!themeConfig.value.isBreadcrumb) return false;
|
||||||
@ -98,8 +129,8 @@ const initRouteSplit = (path: string) => {
|
|||||||
state.routeSplitFirst = `/${state.routeSplit[0]}`;
|
state.routeSplitFirst = `/${state.routeSplit[0]}`;
|
||||||
state.routeSplitIndex = 1;
|
state.routeSplitIndex = 1;
|
||||||
getBreadcrumbList(routesList.value);
|
getBreadcrumbList(routesList.value);
|
||||||
if (route.name === 'home' || (route.name === 'notFound' && state.breadcrumbList.length > 1)) state.breadcrumbList.shift();
|
//if (route.name === 'home' || (route.name === 'notFound' && state.breadcrumbList.length > 1)) state.breadcrumbList.shift();
|
||||||
if (state.breadcrumbList.length > 0) state.breadcrumbList[state.breadcrumbList.length - 1].meta.tagsViewName = other.setTagsViewNameI18n(route);
|
//if (state.breadcrumbList.length > 0) state.breadcrumbList[state.breadcrumbList.length - 1].meta.tagsViewName = other.setTagsViewNameI18n(route);
|
||||||
};
|
};
|
||||||
// 页面加载时
|
// 页面加载时
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
@ -131,7 +131,7 @@ const { isShowDialog, ruleForm, deptData,rules } = toRefs(state);
|
|||||||
const openDialog = (row?: RuleFormState|number) => {
|
const openDialog = (row?: RuleFormState|number) => {
|
||||||
resetForm()
|
resetForm()
|
||||||
getDeptList().then((res:any)=>{
|
getDeptList().then((res:any)=>{
|
||||||
state.deptData = proxy.handleTree(res.data.deptList??[], "deptId","parentId");
|
state.deptData = proxy.handleTree(res.data.deptList??[], "deptId","parentId",'children',true);
|
||||||
});
|
});
|
||||||
if(row && typeof row === "object"){
|
if(row && typeof row === "object"){
|
||||||
state.ruleForm = row;
|
state.ruleForm = row;
|
||||||
|
@ -108,7 +108,7 @@ const initTableData = () => {
|
|||||||
};
|
};
|
||||||
const deptList = ()=>{
|
const deptList = ()=>{
|
||||||
getDeptList(state.tableData.param).then((res:any)=>{
|
getDeptList(state.tableData.param).then((res:any)=>{
|
||||||
state.tableData.data = proxy.handleTree(res.data.deptList??[], "deptId","parentId");
|
state.tableData.data = proxy.handleTree(res.data.deptList??[], "deptId","parentId",'children',true);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
// 打开新增菜单弹窗
|
// 打开新增菜单弹窗
|
||||||
|
Loading…
x
Reference in New Issue
Block a user