修改辽宁免登录

This commit is contained in:
guanj
2026-06-02 09:30:10 +08:00
parent 98e0f9de02
commit 2e7c0b7f44
5 changed files with 270 additions and 240 deletions

6
.env.LNqr Normal file
View File

@@ -0,0 +1,6 @@
# 辽宁嵌入
NODE_ENV = LNqr
VITE_NAME="LNqr"
# 电网一张图 地图图层
VITE_NARIMAP=null
VITE_NRGISCOMMON=null

View File

@@ -8,11 +8,13 @@
"dev:jibei": "vite --mode jibei", "dev:jibei": "vite --mode jibei",
"dev:hainan": "vite --mode hainan", "dev:hainan": "vite --mode hainan",
"dev:qujing": "vite --mode qujing", "dev:qujing": "vite --mode qujing",
"dev:LNqr": "vite --mode LNqr",
"dev:removeMode": "vite --mode removeMode", "dev:removeMode": "vite --mode removeMode",
"build": "vite build --mode dev", "build": "vite build --mode dev",
"build:jibei": "vite build --mode jibei", "build:jibei": "vite build --mode jibei",
"build:hainan": "vite build --mode hainan", "build:hainan": "vite build --mode hainan",
"build:qujing": "vite build --mode qujing", "build:qujing": "vite build --mode qujing",
"build:LNqr": "vite build --mode LNqr",
"build:removeMode": "vite build --mode removeMode", "build:removeMode": "vite build --mode removeMode",
"preview": "vite preview" "preview": "vite preview"
}, },

View File

@@ -1,215 +1,223 @@
import request from '@/utils/request' import request from '@/utils/request'
import { LoginData } from '@/api/types' import { LoginData } from '@/api/types'
import { useAdminInfo } from '@/stores/adminInfo' import { useAdminInfo } from '@/stores/adminInfo'
import { sm3Digest } from '@/assets/commjs/sm3.js' import { sm3Digest } from '@/assets/commjs/sm3.js'
import { sm2, encrypt } from '@/assets/commjs/sm2.js' import { sm2, encrypt } from '@/assets/commjs/sm2.js'
// 获取公钥 // 获取公钥
export function gongkey(params?: any) { export function gongkey(params?: any) {
if (!params) { if (!params) {
const adminInfo = useAdminInfo() const adminInfo = useAdminInfo()
params = { params = {
loginName: encrypt(adminInfo.$state.loginName) loginName: encrypt(adminInfo.$state.loginName)
} }
} }
return request({ return request({
url: '/user-boot/user/generateSm2Key', url: '/user-boot/user/generateSm2Key',
method: 'get', method: 'get',
params params
}) })
} }
export async function pwdSm3(pwd: any, loginName?: string) { export async function pwdSm3(pwd: any, loginName?: string) {
let publicKey = await gongkey( let publicKey = await gongkey(
loginName loginName
? { ? {
loginName: encrypt(loginName) loginName: encrypt(loginName)
} }
: false : false
) )
let sm3Pwd = sm3Digest(pwd) //SM3加密 let sm3Pwd = sm3Digest(pwd) //SM3加密
return sm2(sm3Pwd + '|' + pwd, publicKey.data, 0) return sm2(sm3Pwd + '|' + pwd, publicKey.data, 0)
} }
//登录获取token //登录获取token
export async function login(params: any) { export async function login(params: any) {
if (params.refresh_token == undefined) { if (params.refresh_token == undefined) {
params.password = await pwdSm3(params.password, params.username) params.password = await pwdSm3(params.password, params.username)
} }
params.username = encrypt(params.username) params.username = encrypt(params.username)
return request({ return request({
url: '/pqs-auth/oauth/token', url: '/pqs-auth/oauth/token',
method: 'post', method: 'post',
params params
}) })
} }
//辽宁嵌入登录获取token
//获取用户信息 export async function loginLNqr() {
export function getUserById() { return request({
const adminInfo = useAdminInfo() url: '/LNapi/pqs-auth/oauth/lnLogin',
return request({ method: 'get',
url: '/user-boot/user/getUserById?id=' + adminInfo.userIndex, baseURL: ''
method: 'get' })
}) }
}
//获取用户信息
// 刷新token export function getUserById() {
// 导出一个名为refreshToken的函数该函数返回一个Promise对象 const adminInfo = useAdminInfo()
export function refreshToken(): Promise<any> { return request({
// 调用useAdminInfo函数获取管理员信息并将其赋值给adminInfo变量 url: '/user-boot/user/getUserById?id=' + adminInfo.userIndex,
const adminInfo = useAdminInfo() method: 'get'
// 调用login函数传入一个对象作为参数该对象包含grant_type、refresh_token和username三个属性 })
// grant_type设置为'refresh_token',表示使用刷新令牌的方式获取新的访问令牌 }
// refresh_token使用adminInfo中的refresh_token属性
// username使用adminInfo中的loginName属性 // 刷新token
// 返回login函数的调用结果一个Promise对象 // 导出一个名为refreshToken的函数该函数返回一个Promise对象
return login({ export function refreshToken(): Promise<any> {
grant_type: 'refresh_token', // 调用useAdminInfo函数获取管理员信息并将其赋值给adminInfo变量
refresh_token: adminInfo.refresh_token, const adminInfo = useAdminInfo()
username: adminInfo.loginName // 调用login函数传入一个对象作为参数该对象包含grant_type、refresh_token和username三个属性
}) // grant_type设置为'refresh_token',表示使用刷新令牌的方式获取新的访问令牌
} // refresh_token使用adminInfo中的refresh_token属性
// username使用adminInfo中的loginName属性
/** // 返回login函数的调用结果即一个Promise对象
* 获取营销用户列表 return login({
* @returns {AxiosPromise} grant_type: 'refresh_token',
*/ refresh_token: adminInfo.refresh_token,
export const getMarketList = () => { username: adminInfo.loginName
return request({ })
url: '/user-boot/user/getMarketList', }
method: 'post'
}) /**
} * 获取营销用户列表
* @returns {AxiosPromise}
export function add(data: any) { */
return request({ export const getMarketList = () => {
url: '/user-boot/user/add', return request({
method: 'post', url: '/user-boot/user/getMarketList',
data: data method: 'post'
}) })
} }
export function edit(data: any) { export function add(data: any) {
return request({ return request({
url: '/user-boot/user/update', url: '/user-boot/user/add',
method: 'put', method: 'post',
data: data data: data
}) })
} }
export async function passwordConfirm(pwd: string) { export function edit(data: any) {
return request({ return request({
url: '/user-boot/user/passwordConfirm?password=' + (await pwdSm3(pwd)), url: '/user-boot/user/update',
method: 'get' method: 'put',
}) data: data
} })
}
export function deluser(data: any) {
return request({ export async function passwordConfirm(pwd: string) {
url: '/user-boot/user/delete', return request({
method: 'delete', url: '/user-boot/user/passwordConfirm?password=' + (await pwdSm3(pwd)),
params: data method: 'get'
}) })
} }
export function activateUser(data: any) { export function deluser(data: any) {
return request({ return request({
url: '/user-boot/user/activateUser', url: '/user-boot/user/delete',
method: 'put', method: 'delete',
params: data params: data
}) })
} }
export async function updatePassword(params: any) { export function activateUser(data: any) {
return request({ return request({
url: '/user-boot/user/updatePassword', url: '/user-boot/user/activateUser',
method: 'put', method: 'put',
params: { params: data
id: params.id, })
newPassword: await pwdSm3(params.newPassword) }
}
}) export async function updatePassword(params: any) {
} return request({
url: '/user-boot/user/updatePassword',
export async function updateFirstPassword(params: any) { method: 'put',
return request({ params: {
url: '/user-boot/user/updateFirstPassword', id: params.id,
method: 'put', newPassword: await pwdSm3(params.newPassword)
data: { }
name: encrypt(params.name), })
password: await pwdSm3(params.password, params.name) }
}
}) export async function updateFirstPassword(params: any) {
} return request({
url: '/user-boot/user/updateFirstPassword',
export function checkUser(data: any) { method: 'put',
return request({ data: {
url: '/user-boot/user/check', name: encrypt(params.name),
method: 'put', password: await pwdSm3(params.password, params.name)
data: data }
}) })
} }
export function existMonitorDeptTree() {
return request({ export function checkUser(data: any) {
url: '/user-boot/dept/existMonitorDeptTree', return request({
method: 'post' url: '/user-boot/user/check',
}) method: 'put',
} data: data
// 获取用户 })
export function getUserByRoleType(data: any) { }
return request({ export function existMonitorDeptTree() {
url: '/user-boot/user/getUserByRoleType?roleType=' + data, return request({
method: 'GET' url: '/user-boot/dept/existMonitorDeptTree',
}) method: 'post'
} })
}
// 获取部门下所有用户 // 获取用户
export function listAllUserByDeptId(data: any) { export function getUserByRoleType(data: any) {
return request({ return request({
url: '/user-boot/user/listAllUserByDeptId?deptId=' + data, url: '/user-boot/user/getUserByRoleType?roleType=' + data,
method: 'GET' method: 'GET'
}) })
} }
// 根据id获取所有用户信息 // 获取部门下所有用户
export function getUserListByIds(data: any) { export function listAllUserByDeptId(data: any) {
return request({ return request({
url: '/user-boot/user/getUserListByIds', url: '/user-boot/user/listAllUserByDeptId?deptId=' + data,
method: 'POST', method: 'GET'
data })
}) }
}
// 根据id获取所有用户信息
/** export function getUserListByIds(data: any) {
* 查询所有用户不包括管理员 return request({
*/ url: '/user-boot/user/getUserListByIds',
export const getUserSimpleList = () => { method: 'POST',
return request({ data
url: '/user-boot/user/simpleList', })
method: 'GET' }
})
} /**
* 查询所有用户不包括管理员
/** */
* 查询所有用户包括管理员 export const getUserSimpleList = () => {
*/ return request({
export const getAllUserSimpleList = () => { url: '/user-boot/user/simpleList',
return request({ method: 'GET'
url: '/user-boot/user/getAllUserSimpleList', })
method: 'GET' }
})
} /**
* 查询所有用户包括管理员
export const getSysConfig = () => { */
return request({ export const getAllUserSimpleList = () => {
url: '/system-boot/config/getSysConfig', return request({
method: 'get' url: '/user-boot/user/getAllUserSimpleList',
}) method: 'GET'
} })
// 驾驶舱组件配置 }
export const componentTree = () => {
return request({ export const getSysConfig = () => {
url: '/user-boot/component/componentTree', return request({
method: 'GET' url: '/system-boot/config/getSysConfig',
}) method: 'get'
} })
}
// 驾驶舱组件配置
export const componentTree = () => {
return request({
url: '/user-boot/component/componentTree',
method: 'GET'
})
}

View File

@@ -107,7 +107,11 @@ function createAxios<Data = any, T = ApiPromise<Data>>(
config.headers.Authorization = 'Basic bmpjbjpuamNucHFz' config.headers.Authorization = 'Basic bmpjbjpuamNucHFz'
} }
} }
if (config.url == '/user-boot/user/generateSm2Key' || config.url == '/pqs-auth/oauth/token') { if (
config.url == '/user-boot/user/generateSm2Key' ||
config.url == '/pqs-auth/oauth/token' ||
config.url == '/LNapi/pqs-auth/oauth/token'
) {
config.headers.Authorization = 'Basic bmpjbjpuamNucHFz' config.headers.Authorization = 'Basic bmpjbjpuamNucHFz'
} }

View File

@@ -12,14 +12,8 @@
</div> </div>
<el-form :rules="rules" ref="formRef" size="large" class="login-form" :model="form"> <el-form :rules="rules" ref="formRef" size="large" class="login-form" :model="form">
<el-form-item prop="username"> <el-form-item prop="username">
<el-input <el-input ref="usernameRef" v-model="form.username" type="text" clearable placeholder="用户名"
ref="usernameRef" autocomplete="off">
v-model="form.username"
type="text"
clearable
placeholder="用户名"
autocomplete="off"
>
<template #prefix> <template #prefix>
<!-- <span class="iconfont icon-yonghu" style="color: var(--el-color-primary)"></span> --> <!-- <span class="iconfont icon-yonghu" style="color: var(--el-color-primary)"></span> -->
<Icon name="fa fa-user" style="color: var(--el-color-primary); font-size: 16px" /> <Icon name="fa fa-user" style="color: var(--el-color-primary); font-size: 16px" />
@@ -27,13 +21,8 @@
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="password"> <el-form-item prop="password">
<el-input <el-input ref="passwordRef" v-model="form.password" type="password" placeholder="密码"
ref="passwordRef" autocomplete="off">
v-model="form.password"
type="password"
placeholder="密码"
autocomplete="off"
>
<template #prefix> <template #prefix>
<Icon name="local-password" style="color: var(--el-color-primary); font-size: 16px" /> <Icon name="local-password" style="color: var(--el-color-primary); font-size: 16px" />
<!-- <span class="iconfont icon-mima" style="color: var(--el-color-primary)"></span> --> <!-- <span class="iconfont icon-mima" style="color: var(--el-color-primary)"></span> -->
@@ -41,13 +30,8 @@
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button <el-button :loading="state.submitLoading" class="submit-btn" round type="info"
:loading="state.submitLoading" @click="onSubmit(formRef)">
class="submit-btn"
round
type="info"
@click="onSubmit(formRef)"
>
登录 登录
</el-button> </el-button>
</el-form-item> </el-form-item>
@@ -68,7 +52,7 @@
import { onMounted, onBeforeUnmount, reactive, ref, nextTick } from 'vue' import { onMounted, onBeforeUnmount, reactive, ref, nextTick } from 'vue'
import * as pageBubble from '@/utils/pageBubble' import * as pageBubble from '@/utils/pageBubble'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { gongkey, login,getSysConfig } from '@/api/user-boot/user' import { gongkey, login, getSysConfig, loginLNqr } from '@/api/user-boot/user'
import { useAdminInfo } from '@/stores/adminInfo' import { useAdminInfo } from '@/stores/adminInfo'
import type { FormInstance, InputInstance, FormRules } from 'element-plus' import type { FormInstance, InputInstance, FormRules } from 'element-plus'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
@@ -77,7 +61,7 @@ import { Local } from '@/utils/storage'
import { getTheme } from '@/api/systerm' import { getTheme } from '@/api/systerm'
import { useConfig } from '@/stores/config' import { useConfig } from '@/stores/config'
import PopupUpdatePwd from './popupUpdatePwd.vue' import PopupUpdatePwd from './popupUpdatePwd.vue'
const VITE_FLAG = import.meta.env.VITE_NAME == 'LNqr'
const router = useRouter() const router = useRouter()
let timer: number let timer: number
const configStore = useConfig() const configStore = useConfig()
@@ -117,6 +101,9 @@ const focusInput = () => {
} }
onMounted(() => { onMounted(() => {
if (VITE_FLAG) {
LNonSubmit()
}
timer = window.setTimeout(() => { timer = window.setTimeout(() => {
pageBubble.init() pageBubble.init()
}, 0) }, 0)
@@ -182,6 +169,28 @@ const onSubmit = async (formEl: FormInstance | undefined) => {
} }
}) })
} }
const LNonSubmit = async () => {
state.submitLoading = true
loginLNqr()
.then(res => {
userInfo.dataFill(res.data)
state.submitLoading = false
getSysConfig().then(res => {
window.localStorage.setItem('sysdata', JSON.stringify(res.data))
})
router.push({
path: '/'
})
})
.catch(err => {
//
})
setTimeout(() => {
state.submitLoading = false
}, 500)
}
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
@@ -312,6 +321,7 @@ const onSubmit = async (formEl: FormInstance | undefined) => {
// background: #009688; // background: #009688;
//background: #4d6ea1; //background: #4d6ea1;
border-radius: 0; border-radius: 0;
&:hover { &:hover {
background: var(--el-color-primary-light-5); background: var(--el-color-primary-light-5);
} }