重写message方法,页面授权认证

84 阅读1分钟

页面认证需弹框

1.根据需规写界面,弹框内的内容样式编写;index.vue

9c7bc702b8cb6b86a0367cc843b353b.jpg

2df9152e6c0c69e360c7c328ec6ec0b.jpg

2.弹框变成全局但后期变成局部组件单独在需要引用的组件使用

全局: 在main.js中引入

import bloMessaege from "@/components/BloMessaege"

vue.prototype.$bloMessaege =bloMessaege ;

this.$bloMessaege()

局部引用:

在permission.js(跳转路由权限跳转)

import BloMessaege from "@/components/BloMessaege"

BloMessaege ()//直接使用

3.写弹框的方法,message的源码,里面内容挂载

238aaeebf9e6d192fd8f089791dd1cb.jpg

`options={ message:options //此处会引发前端获取不到useMap }

options={ ...options //解决方法 }`

4.弹框内给后端传参,将点击菜单处的参数传通过模态框传给index.vue

a:第一次尝试在菜单栏点击弹框,

(1).用split分割字符串;

(2).用includes判断返回布尔值(不要遍历,会影响效率);

(3).用store里面的公共方法组装userMap(前提是引入userMap会报错);

(4).传参前先封装好参数

(5).逻辑问题:全局判断所有需要认证的菜单,根据后端接口返回是否认证通过,如果有直接跳转,如果没有,就判断存不存在认证方式,如果线上就弹框提示语言,如果其他方式就弹框;

b:第二次尝试在路由跳转地方点击弹窗

(1).用router.beforeEach(to,from,next)里面的to是路由信息,next()方法 (2).页面背景置空,操作dom元素

const container=document.querySelector(".app-main").setAttribute("style","display:none");

注意:1.参数组装;2.逻辑判断3.操作添加样式添加importan不生效;4.写界面前写好字段及参数

9f9fbf1e964737168cda0459db50627.jpg

5.点击页面授权弹框确认需要给后端参数,组合好参数,调接口提示语关闭弹窗移除菜单;

6.移除菜单使用之前写的方法全部移过来;