首页 > 其他分享 >ruoyi-vue接入钉钉,作为h5微应用

ruoyi-vue接入钉钉,作为h5微应用

时间:2023-05-20 09:44:38浏览次数:50  
标签:vue DINGTALK APP ruoyi h5 VUE env ID

ruoyi-vue接入钉钉,作为h5微应用

https://blog.csdn.net/jiaodacailei/article/details/124709914

1.安装依赖

ruoyi-ui目录,npm安装依赖:

npm install dingtalk-jsapi --save

2.定义全局钉钉企业ID

ruoyi-ui/.env.development
ruoyi-ui/.env.production
ruoyi-ui/.env.staging

# 钉钉企业ID
VUE_APP_DINGTALK_CORP_ID = 'dingaf0bcf9326a136ea35c2f4657eb6378f'

变量名称必须VUE_APP开头,这是ruoyi的规范,否则读不到

3.路由拦截处理

在ruoyi-ui/src/permission.js中:

3.1.引入钉钉jsapi

import * as dd from 'dingtalk-jsapi';

3.2.路由拦截

} else if (process.env.VUE_APP_DINGTALK_CORP_ID && process.env.VUE_APP_DINGTALK_CORP_ID != '') {
dd.runtime.permission.requestAuthCode({
corpId: process.env.VUE_APP_DINGTALK_CORP_ID,
onSuccess: function(result) {
Message.info(result.code)
console.log('dingtalk', result);
},
onFail : function(err) {
console.error('dingtalk', err);
}
})
}

完整代码如下:

router.beforeEach((to, from, next) => {
NProgress.start()
if (getToken()) {
to.meta.title && store.dispatch('settings/setTitle', to.meta.title)
/* has token*/
if (to.path === '/login') {
next({ path: '/' })
NProgress.done()
} else {
if (store.getters.roles.length === 0) {
// 判断当前用户是否已拉取完user_info信息
store.dispatch('GetInfo').then(() => {
store.dispatch('GenerateRoutes').then(accessRoutes => {
// 根据roles权限生成可访问的路由表
router.addRoutes(accessRoutes) // 动态添加可访问路由表
next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
})
}).catch(err => {
store.dispatch('LogOut').then(() => {
Message.error(err)
next({ path: '/' })
})
})
} else {
next()
}
}
} else {
// Message.info(dingtalkCorporationId)
// 没有token
if (whiteList.indexOf(to.path) !== -1) {
// 在免登录白名单,直接进入
next()
} else if (process.env.VUE_APP_DINGTALK_CORP_ID && process.env.VUE_APP_DINGTALK_CORP_ID != '') {
dd.runtime.permission.requestAuthCode({
corpId: process.env.VUE_APP_DINGTALK_CORP_ID,
onSuccess: function(result) {
Message.info(result.code)
console.log('dingtalk', result);
},
onFail : function(err) {
console.error('dingtalk', err);
}
})
} else {
next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
NProgress.done()
}
}
})

4.本地测试

4.1.钉钉后台配置:

 

4.2.测试

在钉钉桌面版上,访问应用,即可访问本地若依前端项目

 

 

标签:vue,DINGTALK,APP,ruoyi,h5,VUE,env,ID
From: https://www.cnblogs.com/chuangsi/p/17416784.html

相关文章

  • java基于springboot+vue的漫画网站管理系统,附源码+数据库+lw文档+PPT,适合毕业设计、课
    1、项目介绍考虑到实际生活中在漫画网站方面的需要以及对该系统认真的分析,将系统权限按管理员和用户这两类涉及用户划分。(a)管理员;管理员使用本系统涉到的功能主要有:首页、个人中心、用户管理、漫画分类管理、漫画投稿管理、分类管理、排行榜管理、交流论坛、系统管理等功能......
  • abp框架Excel导出——基于vue
    @@abp到处excel https://blog.51cto.com/u_15162069/2747885https://www.cnblogs.com/JerryMouseLi/p/13399027.html abp框架Excel导出——基于vue 目录abp框架Excel导出——基于vue1.技术栈1.1前端采用vue,官方提供1.2后台是abp——aspnetboilerplate2.E......
  • vue3+vant3封装省市区组件
    因为后台返回的数据格式和vant不一致,所以自己遍历循环得到自己想到的格式。省市区的接口并不是一个以children格式,一次性全部获取,而是选择市的时候需要得到省的id,一层一层请求接口才能得到省市区。 父组件:1<selectArea2@addressOnFinish="onChangeArea"3......
  • SpringBoot实现WebSocket发送接收消息 + Vue实现SocketJs接收发送消息
    SpringBoot实现WebSocket发送接收消息+Vue实现SocketJs接收发送消息参考:1、https://www.mchweb.net/index.php/dev/887.html2、https://itonline.blog.csdn.net/article/details/81221103?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2......
  • 美团前端vue面试题
    CompositionAPI与OptionsAPI有什么不同分析Vue3最重要更新之一就是CompositionAPI,它具有一些列优点,其中不少是针对OptionsAPI暴露的一些问题量身打造。是Vue3推荐的写法,因此掌握好CompositionAPI应用对掌握好Vue3至关重要WhatisCompositionAPI?(opensnewwindow)......
  • vue组件通信方式有哪些?
    vue组件通信方式一、props(父向子传值----自定义属性)/$emit(子向父传值-----自定义事件)父组件通过props的方式向子组件传递数据,而通过$emit子组件可以向父组件通信。1.父组件向子组件传值(props)下面通过一个例子说明父组件如何向子组件传递数据:在子组件article.vue中......
  • 滴滴前端必会vue面试题汇总
    watch原理watch本质上是为每个监听属性setter创建了一个watcher,当被监听的属性更新时,调用传入的回调函数。常见的配置选项有deep和immediate,对应原理如下deep:深度监听对象,为对象的每一个属性创建一个watcher,从而确保对象的每一个属性更新时都会触发传入的回调函数。主......
  • vue组件通信6种方式总结(常问知识点)
    前言在Vue组件库开发过程中,Vue组件之间的通信一直是一个重要的话题,虽然官方推出的Vuex状态管理方案可以很好的解决组件之间的通信问题,但是在组件库内部使用Vuex往往会比较重,本文将系统的罗列出几种不使用Vuex,比较实用的组件间的通信方式,供大家参考。组件之间通信的场景在......
  • vue什么时候进行虚拟dom对比
    1、vue什么时候进行虚拟dom对比Vue在更新组件时会先创建一个新的虚拟DOM树,然后与旧的虚拟DOM树进行对比,从而找出两个树之间的差异性,进而只对差异性进行更新操作。这个过程就是所谓的虚拟DOM对比。对比虚拟DOM的时机,主要是在组件更新操作中进行。当Vue检测到组件的某......
  • Vue 插槽slot 以及传递多个props
    <!--*@Descripttion:插槽slot*@version:*@Author:zhangfan*@email:[email protected]*@Date:2020-05-1409:08:01*@LastEditors:zhangfan*@LastEditTime:2020-06-2909:51:02--><template><divclass="topCon">......