v3.9.0 里程碑版本发布

This commit is contained in:
JEECG
2025-11-26 11:25:35 +08:00
parent 1f73837b7d
commit 9919ae2bc5
380 changed files with 11450 additions and 4555 deletions

View File

@ -99,7 +99,7 @@
import { LoginStateEnum, useLoginState, useFormRules, useFormValid } from './useLogin';
import { useDesign } from '/@/hooks/web/useDesign';
import { getCodeInfo } from '/@/api/sys/user';
//import { onKeyStroke } from '@vueuse/core';
import { encryptAESCBC } from '/@/utils/cipher';
const ACol = Col;
const ARow = Row;
@ -143,9 +143,12 @@
if (!data) return;
try {
loading.value = true;
// 密码使用AES加密传输
const encryptedPassword = encryptAESCBC(data.password);
const { userInfo } = await userStore.login(
toRaw({
password: data.password,
password: encryptedPassword,
username: data.account,
captcha: data.inputCode,
checkKey: randCodeData.checkKey,
@ -166,18 +169,13 @@
duration: 3,
});
loading.value = false;
//update-begin-author:taoyan date:2022-5-3 for: issues/41 登录页面,当输入验证码错误时,验证码图片要刷新一下,而不是保持旧的验证码图片不变
handleChangeCheckCode();
//update-end-author:taoyan date:2022-5-3 for: issues/41 登录页面,当输入验证码错误时,验证码图片要刷新一下,而不是保持旧的验证码图片不变
}
}
function handleChangeCheckCode() {
formData.inputCode = '';
//TODO 兼容mock和接口暂时这样处理
//update-begin---author:chenrui ---date:2025/1/7 for[QQYUN-10775]验证码可以复用 #7674------------
// 代码逻辑说明: [QQYUN-10775]验证码可以复用 #7674------------
randCodeData.checkKey = new Date().getTime() + Math.random().toString(36).slice(-4); // 1629428467008;
//update-end---author:chenrui ---date:2025/1/7 for[QQYUN-10775]验证码可以复用 #7674------------
getCodeInfo(randCodeData.checkKey).then((res) => {
randCodeData.randCodeImage = res;
randCodeData.requestCodeSuccess = true;

View File

@ -1,5 +1,5 @@
<template>
<BasicModal v-bind="config" @register="registerModal" :title="currTitle" wrapClassName="loginSelectModal" v-model:visible="visible">
<BasicModal v-bind="config" @register="registerModal" :title="currTitle" wrapClassName="loginSelectModal" v-model:visible="visible" :maxHeight="500">
<a-form ref="formRef" :model="formState" :rules="rules" v-bind="layout" :colon="false" class="loginSelectForm">
<!--多租户选择-->
<a-form-item v-if="isMultiTenant" name="tenantId" :validate-status="validate_status">

View File

@ -84,8 +84,7 @@
}
//倒计时执行前的函数
function sendCodeApi() {
//update-begin---author:wangshuai---date:2025-07-15---for:【issues/8567】严重修改密码存在水平越权问题登录应该用登录模板不应该用忘记密码的模板---
// 代码逻辑说明: 【issues/8567】严重修改密码存在水平越权问题登录应该用登录模板不应该用忘记密码的模板---
return getCaptcha({ mobile: formData.mobile, smsmode: SmsEnum.LOGIN });
//update-end---author:wangshuai---date:2025-07-15---for:【issues/8567】严重修改密码存在水平越权问题登录应该用登录模板不应该用忘记密码的模板---
}
</script>

View File

@ -96,9 +96,8 @@
//先获取钉钉的企业id如果没有配置 还是走原来的逻辑,走原来的逻辑 需要判断存不存在token存在token直接去首页
let tenantId = getAuthCache(OAUTH2_THIRD_LOGIN_TENANT_ID) || 0;
let url = `/sys/thirdLogin/get/corpId/clientId?tenantId=${tenantId}`;
//update-begin---author:wangshuai---date:2024-12-09---for:不要使用getAction online里面的要用defHttp---
// 代码逻辑说明: 不要使用getAction online里面的要用defHttp---
defHttp.get({ url:url },{ isTransformResponse: false }).then((res) => {
//update-end---author:wangshuai---date:2024-12-09---for:不要使用getAction online里面的要用defHttp---
if (res.success) {
if(res.result && res.result.corpId && res.result.clientId){
requestAuthCode({ corpId: res.result.corpId, clientId: res.result.clientId }).then((res) => {

View File

@ -59,7 +59,7 @@
if(info){
let query = JSON.parse(info);
//update-begin-author:taoyan date:2023-4-27 for: QQYUN-4882【简流】节点消息通知 邮箱 点击办理跳到了应用首页
// 代码逻辑说明: QQYUN-4882【简流】节点消息通知 邮箱 点击办理跳到了应用首页
let path = '';
if(query.isLowApp === 1){
path = '/myapps/personalOffice/myTodo'
@ -67,7 +67,6 @@
let taskId = query.taskId;
path = '/task/handle/' + taskId
}
//update-end-author:taoyan date:2023-4-27 for: QQYUN-4882【简流】节点消息通知 邮箱 点击办理跳到了应用首页
router.replace({ path, query });
notification.success({

View File

@ -166,7 +166,6 @@ async function checkPhone(rule, value, callback) {
}
}
//update-begin---author:wangshuai ---date:20220629 for[issues/I5BG1I]vue3不支持auth2登录------------
/**
* 判断是否是OAuth2APP环境
*/
@ -189,17 +188,14 @@ export function isOAuth2DingAppEnv() {
export function sysOAuth2Login(source) {
let url = `${window._CONFIG['domianURL']}/sys/thirdLogin/oauth2/${source}/login`;
url += `?state=${encodeURIComponent(window.location.origin)}`;
//update-begin---author:wangshuai ---date:20230224 for[QQYUN-3440]新建企业微信和钉钉配置表,通过租户模式隔离------------
// 代码逻辑说明: [QQYUN-3440]新建企业微信和钉钉配置表,通过租户模式隔离------------
let tenantId = getAuthCache(OAUTH2_THIRD_LOGIN_TENANT_ID);
if(tenantId){
url += `&tenantId=${tenantId}`;
}
//update-end---author:wangshuai ---date:20230224 for[QQYUN-3440]新建企业微信和钉钉配置表,通过租户模式隔离------------
window.location.href = url;
}
//update-end---author:wangshuai ---date:20220629 for[issues/I5BG1I]vue3不支持auth2登录------------
//update-begin---author:wangshuai ---date:20241108 for[QQYUN-9421]vue3新版auth登录用户不用点击登录------------
/**
* 后台callBack
* @param code
@ -213,4 +209,3 @@ export function sysOAuth2Callback(code:string) {
}
window.location.href = url;
}
//update-end---author:wangshuai ---date:20241108 for[QQYUN-9421]vue3新版auth登录用户不用点击登录------------

View File

@ -5,7 +5,7 @@
import { unref } from 'vue';
import { useRouter } from 'vue-router';
import { useMultipleTabStore } from '/@/store/modules/multipleTab';
// update-begin--author:liaozhiyang---date:20231123---for【QQYUN-7099】动态路由匹配右键重新加载404
// 代码逻辑说明: 【QQYUN-7099】动态路由匹配右键重新加载404
const { currentRoute, replace } = useRouter();
const { params, query } = unref(currentRoute);
const { path } = params;
@ -26,5 +26,4 @@
});
}
}
// update-end--author:liaozhiyang---date:20231123---for【QQYUN-7099】动态路由匹配右键重新加载404
</script>