Jeecg-Boot 更换首页 踩坑日记

2 篇文章 0 订阅

Jeecg-Boot 更换首页 踩坑日记

环境说明:
node: v16.18.0
yarn: v1.22.19
vue: 2.x
框架:jeecg-boot

一、首先网上有很多帖子,但是大部分是告诉你将首页内容重写

这么简单的事情,不需要我去多做说明了吧?

二、将首页菜单的配置数据改成你自己的组件

  1. 到src/views文件夹下面,创建一个vue组件,编写你的首页内容在这里插入图片描述
  2. 去菜单管理页面,找到首页那条数据,然后把路径改成你的组件对应的路径,即可;
  3. 点击保存,刷新页面;

三、彻底更改首页指向

  • Java后端

    将下图红框中的代码注释掉。在这里插入图片描述
    说明一下,第二个框是因为删除首页数据,会 退出系统,并重新登陆报错。如果你的系统没有这个问题,可以不用管
  • 前端

    • 在src/views创建一个组件,作为您的首页
    • 到src/config/router.config.js中,找到constantRouterMap,并添加路由
    • 找到src/utils/util.js文件,搜索generateIndexRouter方法,修改成下面这样:
    // 生成首页路由
    export function generateIndexRouter(data) {
      let indexRouter = [{
        path: '/',
        name: '为路由起的名字',
        //component: () => import('@/components/layouts/BasicLayout'),
        component: resolve => require(['@/components/layouts/TabLayout'], resolve),
        meta: { title: '您首页的名字' },
        // redirect: '/dashboard/analysis',
        redirect: '您的路由',
        children: [
          ...generateChildRouters(data)
        ]
      },{
        "path": "*", "redirect": "/404", "hidden": true
      }]
      return indexRouter;
    }
    
    • 找到src/components/layouts/TabLayout.vue文件,搜索addIndexToFirst方法
    addIndexToFirst() {
        this.pageList.splice(0, 0, {
          name: '为路由起的名字', // 这个名称必须与 generateIndexRouter 统一
          path: indexKey,
          fullPath: indexKey,
          meta: {
            icon: '菜单icon',
            title: '您的首页名称'
          }
        })
        this.linkList.splice(0, 0, indexKey)
      },
    
    • 找到indexKey,修改成您的路由
    const indexKey = '您的首页路由'
    
    • 找到src/components/tools/UserMenu.vue文件,搜索handleLogout方法,修改成下面这样
    handleLogout() {
        const that = this
        this.$confirm({
          title: '提示',
          content: '真的要注销登录吗 ?',
          onOk() {
            return that.Logout({}).then(() => {
              /* ------------------只需要修改下面这一行---------------------- */
              // window.location.reload()
              window.location.replace('/user/login')
            }).catch(err => {
              that.$message.error({
                title: '错误',
                description: err.message
              })
            })
          },
          onCancel() {
          },
        });
      },
    
    • 到此,首页就变更好了。

四、但是既然是踩坑日记,肯定遇到一些坑,下面我们来谈谈;

  • 看了网络日志中将addIndexToFirst去掉,然后我发现,我不在首页刷新页面,会导致首页无法默认添加到页面tab菜单中;既:在这里插入图片描述
    卡片服务会消失,而且点击左侧菜单,无法添加到tab中;
    在这里插入图片描述
  • 去掉自定义首页,tab上的关闭按钮,需要找到tabLayout.vue组件,找到a-tabs标签,给tab-pane标签加上如下代码:
    在这里插入图片描述
<a-tab-pane 
	:id="page.fullPath" 
	:key="page.fullPath" 
	v-for="page in pageList" 
	:closable="!(page.meta.title=='首页') && !(page.meta.title=='卡片服务')"
>
<!-- <a-tab-pane :id="page.fullPath" :key="page.fullPath" v-for="page in pageList" :closable="!(page.meta.title=='首页')"> -->
  <span slot="tab" :pagekey="page.fullPath">{{ page.meta.title }}</span>
</a-tab-pane>
  • 另外还遇到,首页有子页面,通过查询参数的方式导航到子页面,tab上的文字会改变成默认颜色,而不是蓝色的问题;这是因为,路由导航的时候,框架用新的路由path更改了tabs的active-key导致的;我们需要做一些更改:

找到watch的$route,在监听函数的前面,添加如下代码

	const notPage = ['/enexmanage/cardmanage/index?id='];
 	let isAddPage = true;
 	notPage.forEach(t => {
   		if (this.activePage.indexOf(t) !== -1) {
     		isAddPage = false;
   		}
 	})
 	if (!isAddPage) {
	   	this.activePage = newRoute.fullPath.split('?')[0];
	   	return;
 	};
  • 首页有子页面还有另一个问题,点击tab无法返回到首页的问题,如:/home?id=1111路由无法返回到/home的问题;

找到a-tabs上的tabClick,更改它的执行函数;

	tabCallBack(ops) {
      this.$nextTick(() => {
        //update-begin-author:taoyan date: 20201211 for:【新版】online报错 JT-100
       setTimeout(()=>{
         //省市区组件里面给window绑定了个resize事件 导致切换页面的时候触发了他的resize,但是切换页面,省市区组件还没被销毁前就触发了该事件,导致控制台报错,加个延迟
         triggerWindowResizeEvent()
       },20)
        //update-end-author:taoyan date: 20201211 for:【新版】online报错 JT-100
      })
      // 下面是新增的代码,解决自定义首页点击tab无法回到首页的问题;
      if (
        ops.indexOf('/enexmanage/cardmanage/index') !== -1 &&
        this.$route.fullPath !== '/enexmanage/cardmanage/index'
      ) {
        this.$router.push('/enexmanage/cardmanage/index')
      }
    },

好了,大致就到这里了,大家还有什么疑问,欢迎在评论区讨论;


补充一下:后来的测试中,发现首页路由如果有查询参数缓存页面的话,从子页面刷新页面,再点击tab选项卡返回首页。存在tab标签颜色不是蓝色的问题;
在这里插入图片描述
在这里插入图片描述

//在created方法里加入下面这段代码;
currentRoute.fullPath = currentRoute.fullPath.indexOf(this.homePath) !== -1 ? this.homePath : currentRoute.fullPath;

在这里插入图片描述

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值