配置超高压生产嵌入系统

This commit is contained in:
GGJ
2025-04-18 15:15:00 +08:00
parent f4a22dbed1
commit 0a521bdcb7
2 changed files with 55 additions and 3 deletions

View File

@@ -15,6 +15,14 @@ export function heBeiToken(data) {
params: data,
});
}
// /超高压嵌入token校验
export function productionManagementCheck(data) {
return request({
url: "/pqs-auth/judgeToken/productionManagementCheck",
method: "post",
params: data,
});
}
//登录获取token
export function login(data) {
return request({

View File

@@ -3,8 +3,7 @@ import store from './store'
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style
import getPageTitle from '@/utils/get-page-title'
import { logout } from '@/api/user.js'
import { productionManagementCheck } from '@/api/user.js'
// NProgress.configure({ showSpinner: false }) // NProgress Configuration
// && from.path === '/agreement' && from.path === '/policy'
const whiteList = ['/login', '/agreement', '/policy'] // no redirect whitelist
@@ -87,8 +86,34 @@ router.beforeEach(async (to, from, next) => {
// })
// }
} else {
const response = await fetch('/')
const flag = response.headers.get('X-Xbqr')
console.log('🚀 ~ flag:', flag)
if (flag) {
// 超高压嵌入 接受父应用传参
window.addEventListener(
'message',
event => {
if (event.data && event.data.type === 'iframeNest') {
let { accessToken, displayMode, theme } = event.data
console.log('我是iframe,我接收到了数据:', accessToken)
productionManagementCheck({
token: accessToken
}).then(res => {
console.log('🚀 ~ receiveMessageFromOutside ~ res:', res)
if (res.code == 'A0000') {
proceed(to, from, next)
}
})
}
},
false
)
} else {
proceed(to, from, next)
}
}
// else {
// //获取用户信息
@@ -133,9 +158,13 @@ router.beforeEach(async (to, from, next) => {
})
async function proceed(to, from, next, HB_NAME) {
// 打印当前 name 和 sessionStorage 中 cntoken 是否为空的日志
let name = HB_NAME || 'cdf'
// 检查 sessionStorage 中是否没有 cntoken
console.log('🚀 ~ proceed ~ name:', name, window.sessionStorage.getItem('cntoken') == null)
// 定义默认密码
if (window.sessionStorage.getItem('cntoken') == null) {
// 初始化登录表单
let password = '@#001njcnpqs'
let loginjmForm = {
username: '',
@@ -143,38 +172,53 @@ async function proceed(to, from, next, HB_NAME) {
grant_type: 'captcha',
verifyCode: 0,
imageCode: ''
// 对 name 进行加密处理
}
let username = encrypt(name)
// 设置登录表单的用户名
// 将应用高度存储到 sessionStorage 中
loginjmForm.username = username
// 调用 gongkey 函数获取公钥
window.sessionStorage.setItem('appheight', document.body.offsetHeight - 10)
await gongkey({ loginName: username }).then(async response => {
window.publicKey = response.data
// 将公钥存储到全局变量和 localStorage 中
window.localStorage.setItem('publicKey', response.data)
var sm3Pwd = sm3Digest(password)
// 使用 SM3 算法对密码进行摘要处理
var jiamipassword = ''
// 使用 SM2 算法对密码进行加密
jiamipassword = sm2(sm3Pwd + '|' + password, publicKey, 0)
loginjmForm.password = jiamipassword
// 设置登录表单的加密密码
store
// 调用 Vuex 的 login 方法进行登录
.dispatch('user/login', loginjmForm)
.then(async response => {
if (response.code === 'A0101' && response.message === '登录认证,密码失效,请重置') {
// 如果登录响应需要重置密码
CodeSr().then(response => {
// 调用 CodeSr 函数获取验证码图片
let blob = new Blob([response], { type: 'image/jpg' })
let url = window.URL.createObjectURL(blob)
})
}
await store.dispatch('user/getInfo')
// 获取用户信息
// 根据角色生成可访问的路线图
const accessRoutes = await store.dispatch('permission/generateRoutes')
// 动态添加可访问的路由
setTimeout(() => {
router.addRoutes(accessRoutes)
if (response.code === 'A0000') {
// 如果登录成功
loginjmForm.verifyCode = 0
// 重置验证码
SysConfig()
// 调用 SysConfig 函数进行系统配置
// cgyList.indexOf(to.path) !== -1
store.dispatch('user/getmenu').then(async response => {
await getmuen(response.data[0])