Commit 7e12d1f3 authored by 张伯涛's avatar 张伯涛

AItoken获取存储

parent dbba6136
import httpTwo from '../httpTwo'
import heepThree from '../heepThree'
import qs from "qs";
import { encrypt } from '../../utils/jsencrypt.js'
import http from "@/api/http.js";
// 获取随机uuid
export const getAuthUUID = params => {
console.log('params',params)
const sign = qs.stringify({
sign: encrypt(params)
})
console.log('sign',sign)
return httpTwo.get(`/auth/getAuthUUID?` + sign)
}
//
// 生成token
export const createToken = params => {
const sign = qs.stringify({
sign: encrypt(params)
})
return heepThree.post(`/auth/createToken`, sign).then(res => res).catch(function (error) {
console.log(error);
})
}
// 校验token
export const checkToken = params => {
return httpTwo.get(`/auth/checkToken?token=` + params)
}
import axios from 'axios'
import store from '../store/index'
// import qs from "qs";
//import { useRouter, useRoute } from 'vue-router'
import { useRouter } from "vue-router";
//import { ref } from 'vue'
//import { ExternalSERVEICE, WithinSERVEICE } from '../../public/config'
import { ElLoading as Loading, ElMessage as Message } from 'element-plus';
let loadingInstance;
let loadingStatus = false;
const router = useRouter();
const AIapi = axios.create({
timeout : 50000,
baseURL : '/AIapi',//ExternalSERVEICE;
withCredentials : true,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})
if (!AIapi.defaults.baseURL.endsWith('/')) {
AIapi.defaults.baseURL+="/";
}
let ipAddress = AIapi.defaults.baseURL;
AIapi.interceptors.request.use((config) => {
config.baseURL = '/AIapi';
console.log(config.baseURL);
// config.data = qs.stringify(config.data);
return config;
}, (error) => {
return Promise.reject(error);
});
AIapi.interceptors.response.use((res) => {
closeLoading();
checkResponse(res);
return Promise.resolve(res);
}, (error) => {
closeLoading();
let httpMessage = '';
if (error.response) {
alert('1')
if (error.response.status == '401') {
if (error.response.data && error.response.data.status == 401) {
if (!localStorage.getItem('user')) {
Message.error({
showClose: true,
message: '登陆已过期',
type: 'error'
});
}
toLogin();
return;
}
}
if (error.response.status == '404') {
httpMessage = "未找到请求地址";
}
else if (error.response.data && error.response.data.message) {
httpMessage = error.response.data.message;
}
}
if (error.request) {
httpMessage = "未连接到远程服务器!";
console.log(httpMessage + error.message);
if(error.config.url!='/api/User/getVierificationCode'){
toLogin();
}
}
else {
httpMessage = '服务器处理异常';
}
redirect(httpMessage);
return Promise.reject(error.response || {}, httpMessage);
});
function changeIP(IP){
AIapi.defaults.baseURL = IP;
}
function showLoading (loading) {
if (!loading || loadingStatus) {
return;
}
loadingInstance = Loading.service({
lock: true,
text: 'Loading',
customClass:"http-loading",
background: typeof loading == "string" ? loading : '正在处理.....',
background: 'rgba(58, 61, 63, 0.32)'
});
}
function closeLoading () {
if (loadingInstance) {
loadingInstance.close();
}
if (loadingStatus) {
loadingStatus = false;
if (loadingInstance) {
loadingInstance.close();
}
}
}
function checkResponse (res) {
//刷新token
if (!res.headers) {
if (res.getResponseHeader("ams_exp") == "1") {
replaceToken();
}
}
else if (res.headers.ams_exp == "1") {
replaceToken();
}
}
const _Authorization = 'Authorization';
function getToken () {
// const token = sessionStorage.getItem('token');
// if(token != null)
// {
// return token;
// }else{
// return "";
// }
//console.log("token:" + store.getters.getToken());
return null;
}
/*
url
params请求后台的参数,如:{name:123,values:['a','b','c']}
loading是否显示遮罩层,可以传入true.false.及提示文本
config配置信息,如{timeout:3000,headers:{token:123}}
*/
function post (url, params, loading, config) {
showLoading(loading);
//console.log(ipAddress);
AIapi.defaults.headers[_Authorization] = getToken();
return new Promise((resolve, reject) => {
AIapi.post(url, params, config)
.then(response => {
resolve(response.data);
}, err => {
reject(err && err.data && err.data.message ? err.data.message : '服务器处理异常');
})
.catch((error) => {
reject(error)
})
})
}
//=true异步请求时会显示遮罩层,=字符串,异步请求时遮罩层显示当前字符串
function get (url, param, loading, config) {
showLoading(loading);
//console.log(ipAddress);
AIapi.defaults.headers[_Authorization] = getToken();
return new Promise((resolve, reject) => {
AIapi.get(url, config)
.then(response => {
resolve(response.data)
}, err => {
reject(err)
})
.catch((error) => {
reject(error)
})
})
}
//url:url地址
//params:请求参数
//fileName:下载的文件名
//loading:是否显示加载状态
function download (url, params, fileName, loading, callback) {
fileName = fileName.replace(">", ">").replace("<", "<");
post(url, params, loading, { responseType: 'blob' }).then(content => {
const blob = new Blob([content])
if ('download' in document.createElement('a')) { // 非IE下载
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href) // 释放URL 对象
document.body.removeChild(elink)
} else { // IE10+下载
navigator.msSaveBlob(blob, fileName)
}
callback&&callback();
})
}
function createXHR () {
if (XMLHttpRequest) {
return new XMLHttpRequest();
}
if (ActiveXObject) {
if (typeof arguments.callee.activeXString != "string") {
var versions = [
"MSXML2.XMLHttp.6.0",
"MSXML2.XMLHttp",
"MSXML2.XMLHttp.3.0"
];
for (var i = 0; i < versions.length; i++) {
try {
new ActiveXObject(versions[i]);
arguments.callee.activeXString = versions[i];
break;
} catch (e) {
console.log(e);
}
}
}
return new ActiveXObject(arguments.callee.activeXString);
}
}
function redirect (responseText, message) {
try {
let responseData = typeof responseText == 'string' ? JSON.parse(responseText) : responseText;
if ((responseData.hasOwnProperty('status') && responseData.status == 401)
|| (responseData.data && responseData.data.status == 401)) {
closeLoading();
toLogin();
} else {
if (message) {
Message.error({
showClose: true,
message: message,
type: 'error'
});
}
}
} catch (error) {
//console.log(error);
Message.error({
showClose: true,
message: responseText,
type: 'error'
});
}
}
//退回到登录页
function toLogin () {
if (window.location.hash) {
window.location.href = window.location.origin + '/#/login'
return
}
window.location.href = window.location.origin + '/login'
}
//动态刷新token
function replaceToken () {
ajax({
url: "/api/User/replaceToken",
param: {},
json: true,
success: function (x) {
if (x.success) {
let userInfo = store.getters.getUserInfo();
userInfo.token = x.data;
store.commit('setUserInfo', userInfo);
} else {
console.log(x.message);
toLogin();
}
},
errror: function (ex) {
console.log(ex);
toLogin();
},
type: "post",
async: false
});
}
function ajax (param) {
let httpParam =
Object.assign({
url: '', headers: {},
param: {}, json: true,
success: function () { },
errror: function () { },
type: 'post', async: true
}, param);
httpParam.url = AIapi.defaults.baseURL + httpParam.url.replace(/\/?/, '');
httpParam.headers[_Authorization] = getToken();
var xhr = createXHR();
xhr.onreadystatechange = function () {
if (xhr.status == 403 || xhr.status == 401) {
redirect(xhr.responseText);
return;
}
checkResponse(xhr);
if (xhr.readyState == 4 && xhr.status == 200) {
httpParam.success(httpParam.json ? JSON.parse(xhr.responseText) : xhr.responseText);
return;
}
if (xhr.status != 0 && xhr.readyState != 1) {
httpParam.errror(xhr);
}
};
//初始化请求
xhr.open(
httpParam.type,
httpParam.url,
httpParam.async
);
xhr.setRequestHeader("Content-type", "application/json");
for (const key in httpParam.headers) {
xhr.setRequestHeader(key, httpParam.headers[key]);
}
try {
xhr.send(JSON.stringify(httpParam.param));
} catch (error) {
toLogin();
}
}
ajax.post = function (url, param, success, errror) {
ajax({ url: url, param: param, success: success, error: errror, type: 'post' })
}
ajax.get = function (url, param, success, errror) {
ajax({ url: url, param: param, success: success, error: errror, type: 'get' })
}
export default { post, get, download, ajax, ipAddress, changeIP }
...@@ -41,6 +41,7 @@ AIapi.interceptors.response.use((res) => { ...@@ -41,6 +41,7 @@ AIapi.interceptors.response.use((res) => {
closeLoading(); closeLoading();
let httpMessage = ''; let httpMessage = '';
if (error.response) { if (error.response) {
// alert('1')
if (error.response.status == '401') { if (error.response.status == '401') {
if (error.response.data && error.response.data.status == 401) { if (error.response.data && error.response.data.status == 401) {
if (!localStorage.getItem('user')) { if (!localStorage.getItem('user')) {
...@@ -126,7 +127,8 @@ function getToken () { ...@@ -126,7 +127,8 @@ function getToken () {
// return ""; // return "";
// } // }
//console.log("token:" + store.getters.getToken()); //console.log("token:" + store.getters.getToken());
return null; const AIToken = localStorage.getItem('AIToken')
return AIToken;
} }
/* /*
......
import JSEncrypt from 'jsencrypt/bin/jsencrypt'
// 密钥对生成 http://web.chacuo.net/netrsakeypair
const publicKey = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC40cVT6SCi5XaKBuVOEMU7fBv9\n' +
'PjTdRhCk/Ap4oE5UXUOJOgxWh4gBfVY5Sh0qWC8cTLrFPdUQJ9kZt7ivX7xKPP+e\n' +
'q+pZiFUIuJXYV3dNvXuM7IfDISAXKn2ii1kAEBEhSkbu0YkjJvvoHSGYasvYQ2af\n' +
'N8bwm4xsC+R0TAXmZwIDAQAB'
export function encrypt(data) {
const json = JSON.stringify(data)
const encryptor = new JSEncrypt()
encryptor.setPublicKey(publicKey)
return encryptor.encrypt(json)
}
export function encryptTwo(data) {
const json = data
const encryptor = new JSEncrypt()
encryptor.setPublicKey(publicKey)
return encryptor.encrypt(json)
}
export function decrypt(txt) {
const encryptor = new JSEncrypt()
encryptor.setPrivateKey('')
return encryptor.decrypt(txt)
}
const passwordPublicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANL378k3RiZHWx5AfJqdH9xRNBmD9wGD\n' +
'2iRe41HdTNF8RUhNnHit5NpMNtGL0NPTSSpPjjI1kJfVorRvaQerUgkCAwEAAQ=='
const passwordPrivateKey = 'MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEA0vfvyTdGJkdbHkB8\n' +
'mp0f3FE0GYP3AYPaJF7jUd1M0XxFSE2ceK3k2kw20YvQ09NJKk+OMjWQl9WitG9p\n' +
'B6tSCQIDAQABAkA2SimBrWC2/wvauBuYqjCFwLvYiRYqZKThUS3MZlebXJiLB+Ue\n' +
'/gUifAAKIg1avttUZsHBHrop4qfJCwAI0+YRAiEA+W3NK/RaXtnRqmoUUkb59zsZ\n' +
'UBLpvZgQPfj1MhyHDz0CIQDYhsAhPJ3mgS64NbUZmGWuuNKp5coY2GIj/zYDMJp6\n' +
'vQIgUueLFXv/eZ1ekgz2Oi67MNCk5jeTF2BurZqNLR3MSmUCIFT3Q6uHMtsB9Eha\n' +
'4u7hS31tj1UWE+D+ADzp59MGnoftAiBeHT7gDMuqeJHPL4b+kC+gzV4FGTfhR9q3\n' +
'tTbklZkD2A=='
// 加密
export function passwordEncrypt(txt) {
const encryptor = new JSEncrypt()
encryptor.setPublicKey(passwordPublicKey) // 设置公钥
return encryptor.encrypt(txt) // 对需要加密的数据进行加密
}
// 解密
export function passwordDecrypt(txt) {
const encryptor = new JSEncrypt()
encryptor.setPrivateKey(passwordPrivateKey)
return encryptor.decrypt(txt)
}
const urlPrivateKey = 'MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCstNcEy/A6v3BddApjjCN8VESMSh95q3TeFd//1E+36CA1WMIshzP1sL0L9wTHfVjUK/Ii6agsVXkstMMC1+HqavoSz42krvrgadfzEJIepOK4Z2E25YTcyIZ1dt7HgKxz+xhXZWRvbEYdLZrVMVJtjltagFB80RjKStv85U94Z6DMXBF8bZA8DMYGv7+p2Sszl3BUk79X2XLBoF+h2d9Jn0Rl0xKfxPS1k7tSfEVGk0VJArEUZJNAzrr/zCMhH+CN8LISQ/8sI1VYHTx2E85/KhcnewtHjb2P6h5q0fnZ5ELgsf1Bxj/dl2GxW+ybeW1Ir+tyNJWbMz/N7XTZUaLHAgMBAAECggEALCFBV/5scfZ81cRS60DhyGEX6uj9xe8ju6PHSu2LOSjdIgR+CTa69iqlA6uo0viafAyGoJkn2bw1bFD8C3vyRB31rFzQiqYTgMhK39b6H05uiEQSOR7Ipkmu4dDv9/ZPGousmphT44y9FbOTfqpNr6TSfvuOlXYwaXBbafGGLvOQRKqeP0mVq6xmiQOKg9yBAwN1dcoGx77OsvMEV2o0JR0+/0BMd3qRZQLAYH03zv3LE8xkI0zta9Gmmbh44YPwWGW/mMY24Iae1/pKnZxWTGty+X/pLGqHQdtxz6qQr/pCSA9lESNkkocHzVI9D6SxX5+bHWc0AX17EHomB2HawQKBgQDZYIAagH0tRR1XtIsexv1OpAOoHbXnpNmMPkAurpGlIzBlZlQYevPg0gcs7GBA90ZAyt68bkq4ABZ1CYPMEMazcMa2TOMaf9yw5bxnD8Ek2KWOnR4juQqKOyL8/2ddLPBV0J2Boo2D9MFSucyHB3lvRZF/DlYuLbj+GNdt9IZjFwKBgQDLZHosddeLo9Ux4mTChveMdo9nFzrXZZ83mbMPETTJ3EygQGqWmMUUQx9iWkiHWUYyyel/jafdIxOnaZfTEvcYcMDOsj3kDNZ5a1v+ZswqwT5fzQBv4huO3X8CrN7hnNsv9HIVrbT2ZlHhSI0g4Q0nfzSjxo7rYF50vJ6Qk+VL0QKBgQCtGadpc0A7OHpxSRgv3g4A/aLb0Sz11dRXVYsOoXzhn+/+D0qQY/io4xdLsr/DfCW5mtNcAggGFivL71PAwOs6IWhb60Y95+v6AjfRaj5H9S2BL6S8lbHK+eSWy1uoWwzXiVSj0qoWlmUMV2CDdnRBI4kFQIloJIjX7zg+GyaY6QKBgFCyUs7lCln67JFYM4YCqqDuQUMzskLXrO4QazylJP6aC0ThieiqQDcj0oXhMDmTMAjil2PmPh281wVrHbO/KI5n3fekPG4IseeGsv8ipgqolSjJW00ItspeExBqqht1cnl6UPFM9Cl2uzHY6TWMVP3AuI/qLbYxjAhg9cCDDUyhAoGBAI9h0SJjnSivVWl9OCQ8HT17Erl5lPpoI9GA+BjnuHnpWhKu4mxjPKzDMUxF1jmENLpvmGzK6KoeiRSLik2DOosQ1ip4U8N1IlSqJDkwzAVAHpDErwIiIox4bMpnD3vt/MgE1OIkK4PvjYyKfxngygof3gaHaEULTJFFIZVV1KM7'
const urlPublicKey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArLTXBMvwOr9wX\n' +
'XQKY4wjfFREjEofeat03hXf/9RPt+ggNVjCLIcz9bC9C/cEx31Y1CvyIumoLFV5LLTDAtfh6mr6Es+NpK764GnX8x\n' +
'CSHqTiuGdhNuWE3MiGdXbex4Csc/sYV2Vkb2xGHS2a1TFSbY5bWoBQfNEYykrb/OVPeGegzFwRfG2QPAzGBr+/qdk\n' +
'rM5dwVJO/V9lywaBfodnfSZ9EZdMSn8T0tZO7UnxFRpNFSQKxFGSTQM66/8wjIR/gjfCyEkP/LCNVWB08dhPOfyoX\n' +
'J3sLR429j+oeatH52eRC4LH9QcY/3ZdhsVvsm3ltSK/rcjSVmzM/ze102VGixwIDAQAB'
// 视频,pdf加密
export function urlEncrypt(txt) {
const encryptor = new JSEncrypt()
encryptor.setPublicKey(urlPublicKey) // 设置公钥
return encryptor.encrypt(txt) // 对需要加密的数据进行加密
}
// 视频,pdf解密
export function urlDecrypt(txt) {
const encryptor = new JSEncrypt()
encryptor.setPrivateKey(urlPrivateKey)
return encryptor.decrypt(txt)
}
import {checkToken, createToken, getAuthUUID} from "@/api/AIStation/token.js";
import store from "@/store/index.js";
// 获取AI无人站的token
export function handleGetAIToken() {
console.log('1111111111111111111111111111111111111111')
const AIToken = localStorage.getItem('AIToken')
if(AIToken) {
//有存储token判断token有没有过期
// 检验token是否过期
checkToken(AIToken).then(res => {
if(res.data === false) {
// token过期
getToken()
}
})
}else {
// 没有token的话获取存储token
getToken()
}
}
function getToken() {
const userInfo = store.getters.getUserInfo();
const userName = userInfo.userName
const userId = userInfo.userId
const params = {
username: userName
}
// 通过userName获取uuid
getAuthUUID(params).then(res => {
const uuid = res.data
const params ={
userId: userId,
username: userName,
uuid: uuid,
}
// 通过userId,username,uuid获取token
createToken(params).then(res => {
const token = res.data
localStorage.setItem('AIToken',token)
})
})
}
<script setup> <script setup>
import {getCurrentInstance, onMounted, reactive, ref} from 'vue' import {getCurrentInstance, onMounted, reactive, ref, watch} from 'vue'
import ExtinguisherNewDataPage from './ExtinguisherNewDataPage.vue' // 导入组件 import ExtinguisherNewDataPage from './ExtinguisherNewDataPage.vue' // 导入组件
import ExtinguisherHistoryPage from './ExtinguisherHistoryPage.vue' // 导入组件 import ExtinguisherHistoryPage from './ExtinguisherHistoryPage.vue' // 导入组件
import ExtinguisherAlarmPage from './ExtinguisherAlarmPage.vue' // 导入组件 import ExtinguisherAlarmPage from './ExtinguisherAlarmPage.vue' // 导入组件
import zhCn from "element-plus/dist/locale/zh-cn.mjs" import zhCn from "element-plus/dist/locale/zh-cn.mjs"
import store from "../../../store/index.js"; import store from "../../../store/index.js";
import {handleGetAIToken} from '../AItoken'
import {getWeatherMagData} from "@/api/AIStation/Extinguisher.js"; import {getWeatherMagData} from "@/api/AIStation/Extinguisher.js";
import axios from 'axios' import axios from 'axios'
const options = ref([]); const options = ref([]);
...@@ -97,23 +98,25 @@ const data = [{ ...@@ -97,23 +98,25 @@ const data = [{
}] }]
// 查询 // 查询
const search = () => { const search = () => {
const item = { // const item = {
stationId: stationId.value, // stationId: stationId.value,
alarmStatus: queryParams.value.alarmStatus, // alarmStatus: queryParams.value.alarmStatus,
alarmType: queryParams.value.alarmType, // alarmType: queryParams.value.alarmType,
startTime: queryParams.value.startTime, // startTime: queryParams.value.startTime,
endTime: queryParams.value.endTime, // endTime: queryParams.value.endTime,
} // }
//
// axios.get('http://192.168.0.17:8099/busFireExtinguisher/list').then(res => { // // axios.get('http://192.168.0.17:8099/busFireExtinguisher/list').then(res => {
// //
// // })
// getWeatherMagData().then(res => {
// //
// }) // })
getWeatherMagData().then(res => { // console.log('查询:', item);
// searchData.value = data;
// console.log('传值:', searchData.value);
}) handleGetAIToken();
console.log('查询:', item);
searchData.value = data;
console.log('传值:', searchData.value);
}; };
// 导出 // 导出
...@@ -246,7 +249,6 @@ getSupplys(); ...@@ -246,7 +249,6 @@ getSupplys();
onMounted(() => { onMounted(() => {
activeName.value = topBtn.value[0].component; activeName.value = topBtn.value[0].component;
selectedBtn.value = topBtn.value[0].id; selectedBtn.value = topBtn.value[0].id;
}); });
</script> </script>
<template> <template>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment