no message

This commit is contained in:
chenlin
2025-11-25 10:50:52 +08:00
parent e6e86f2ce0
commit 93ecebcb2e
5 changed files with 63 additions and 103 deletions

View File

@@ -4,7 +4,7 @@ VITE_NODE_ENV=development
VITE_DEV=true VITE_DEV=true
# 请求路径 注:/api 正常不需要 当前是访问演示环境nginx转发用 # 请求路径 注:/api 正常不需要 当前是访问演示环境nginx转发用
VITE_BASE_URL='https://demo.jeelowcode.com/api' VITE_BASE_URL='http://10.28.117.100'
# 文件上传类型server - 后端上传, client - 前端直连上传仅支持S3服务 # 文件上传类型server - 后端上传, client - 前端直连上传仅支持S3服务
VITE_UPLOAD_TYPE=server VITE_UPLOAD_TYPE=server

View File

@@ -171,7 +171,7 @@ const canvasClick = (e) => {
token: backToken.value token: backToken.value
} }
reqCheck(data).then((res) => { reqCheck(data).then((res) => {
if (res.repCode == '0000') { if (res?.repCode == '0000') {
barAreaColor.value = '#4cae4c' barAreaColor.value = '#4cae4c'
barAreaBorderColor.value = '#5cb85c' barAreaBorderColor.value = '#5cb85c'
text.value = t('captcha.success') text.value = t('captcha.success')
@@ -228,14 +228,14 @@ const getPictrue = async () => {
captchaType: captchaType.value captchaType: captchaType.value
} }
const res = await getCode(data) const res = await getCode(data)
if (res.repCode == '0000') { if (res?.repCode == '0000') {
pointBackImgBase.value = res.repData.originalImageBase64 pointBackImgBase.value = res?.repData?.originalImageBase64
backToken.value = res.repData.token backToken.value = res?.repData?.token
secretKey.value = res.repData.secretKey secretKey.value = res?.repData?.secretKey
poinTextList.value = res.repData.wordList poinTextList.value = res?.repData?.wordList || []
text.value = t('captcha.point') + '【' + poinTextList.value.join(',') + '】' text.value = t('captcha.point') + '【' + poinTextList.value?.join(',') + '】'
} else { } else {
text.value = res.repMsg text.value = res?.repMsg
} }
} }
//坐标转换函数 //坐标转换函数

View File

@@ -287,7 +287,7 @@ const end = () => {
token: backToken.value token: backToken.value
} }
reqCheck(data).then((res) => { reqCheck(data).then((res) => {
if (res.repCode == '0000') { if (res?.repCode == '0000') {
moveBlockBackgroundColor.value = '#5cb85c' moveBlockBackgroundColor.value = '#5cb85c'
leftBarBorderColor.value = '#5cb85c' leftBarBorderColor.value = '#5cb85c'
iconColor.value = '#fff' iconColor.value = '#fff'
@@ -364,13 +364,13 @@ const getPictrue = async () => {
captchaType: captchaType.value captchaType: captchaType.value
} }
const res = await getCode(data) const res = await getCode(data)
if (res.repCode == '0000') { if (res?.repCode == '0000') {
backImgBase.value = res.repData.originalImageBase64 backImgBase.value = res?.repData?.originalImageBase64
blockBackImgBase.value = res.repData.jigsawImageBase64 blockBackImgBase.value = res?.repData?.jigsawImageBase64
backToken.value = res.repData.token backToken.value = res?.repData?.token
secretKey.value = res.repData.secretKey secretKey.value = res?.repData?.secretKey
} else { } else {
tipWords.value = res.repMsg tipWords.value = res?.repMsg
} }
} }
</script> </script>

View File

@@ -1,14 +1,6 @@
<template> <template>
<el-form <el-form v-show="getShow" ref="formLogin" :model="loginData.loginForm" :rules="LoginRules"
v-show="getShow" class="login-form login-form-default" label-position="top" label-width="120px" size="large">
ref="formLogin"
:model="loginData.loginForm"
:rules="LoginRules"
class="login-form login-form-default"
label-position="top"
label-width="120px"
size="large"
>
<el-row style="margin-right: -10px; margin-left: -10px"> <el-row style="margin-right: -10px; margin-left: -10px">
<el-col :span="24" style="padding-right: 10px; padding-left: 10px"> <el-col :span="24" style="padding-right: 10px; padding-left: 10px">
<el-form-item> <el-form-item>
@@ -17,40 +9,23 @@
</el-col> </el-col>
<el-col :span="24" style="padding-right: 10px; padding-left: 10px"> <el-col :span="24" style="padding-right: 10px; padding-left: 10px">
<el-form-item v-if="loginData.tenantEnable === 'true'" prop="tenantName"> <el-form-item v-if="loginData.tenantEnable === 'true'" prop="tenantName">
<el-input <el-input v-model="loginData.loginForm.tenantName" :placeholder="t('login.tenantNamePlaceholder')"
v-model="loginData.loginForm.tenantName" :prefix-icon="iconHouse" link type="primary" />
:placeholder="t('login.tenantNamePlaceholder')"
:prefix-icon="iconHouse"
link
type="primary"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24" style="padding-right: 10px; padding-left: 10px"> <el-col :span="24" style="padding-right: 10px; padding-left: 10px">
<el-form-item prop="username"> <el-form-item prop="username">
<el-input <el-input v-model="loginData.loginForm.username" :placeholder="t('login.usernamePlaceholder')"
v-model="loginData.loginForm.username" :prefix-icon="iconAvatar" />
:placeholder="t('login.usernamePlaceholder')"
:prefix-icon="iconAvatar"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24" style="padding-right: 10px; padding-left: 10px"> <el-col :span="24" style="padding-right: 10px; padding-left: 10px">
<el-form-item prop="password"> <el-form-item prop="password">
<el-input <el-input v-model="loginData.loginForm.password" :placeholder="t('login.passwordPlaceholder')"
v-model="loginData.loginForm.password" :prefix-icon="iconLock" show-password type="password" @keyup.enter="getCode()" />
:placeholder="t('login.passwordPlaceholder')"
:prefix-icon="iconLock"
show-password
type="password"
@keyup.enter="getCode()"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col <el-col :span="24" style="padding-right: 10px; padding-left: 10px; margin-top: -20px; margin-bottom: -20px">
:span="24"
style="padding-right: 10px; padding-left: 10px; margin-top: -20px; margin-bottom: -20px"
>
<el-form-item> <el-form-item>
<el-row justify="space-between" style="width: 100%"> <el-row justify="space-between" style="width: 100%">
<el-col :span="6"> <el-col :span="6">
@@ -66,13 +41,8 @@
</el-col> </el-col>
<el-col :span="24" style="padding-right: 10px; padding-left: 10px" class="login-btn-col"> <el-col :span="24" style="padding-right: 10px; padding-left: 10px" class="login-btn-col">
<el-form-item> <el-form-item>
<XButton <XButton :loading="loginLoading" :title="t('login.login')" class="w-[100%]" type="primary"
:loading="loginLoading" @click="getCode()" />
:title="t('login.login')"
class="w-[100%]"
type="primary"
@click="getCode()"
/>
<div v-if="loginType == 'easy'" class="w-100% mt-6px flex justify-end"> <div v-if="loginType == 'easy'" class="w-100% mt-6px flex justify-end">
<el-dropdown @command="easyCommand"> <el-dropdown @command="easyCommand">
<div class="mt--2px cursor-pointer"> <div class="mt--2px cursor-pointer">
@@ -95,13 +65,8 @@
</div> </div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<Verify <Verify ref="verify" :captchaType="captchaType" :imgSize="{ width: '400px', height: '200px' }" mode="pop"
ref="verify" @success="handleLogin" />
:captchaType="captchaType"
:imgSize="{ width: '400px', height: '200px' }"
mode="pop"
@success="handleLogin"
/>
<template v-if="!loginType"> <template v-if="!loginType">
<el-col :span="24" style="padding-right: 10px; padding-left: 10px"> <el-col :span="24" style="padding-right: 10px; padding-left: 10px">
<!-- <el-form-item> <!-- <el-form-item>
@@ -127,15 +92,8 @@
<el-col :span="24" style="padding-right: 10px; padding-left: 10px"> <el-col :span="24" style="padding-right: 10px; padding-left: 10px">
<el-form-item> <el-form-item>
<div class="w-[100%] flex justify-center"> <div class="w-[100%] flex justify-center">
<Icon <Icon v-for="(item, key) in socialList" :key="key" :icon="item.icon" :size="50"
v-for="(item, key) in socialList" class="anticon cursor-pointer" color="#999" @click="doSocialLogin(item.type)" />
:key="key"
:icon="item.icon"
:size="50"
class="anticon cursor-pointer"
color="#999"
@click="doSocialLogin(item.type)"
/>
</div> </div>
</el-form-item> </el-form-item>
</el-col> </el-col>
@@ -269,11 +227,13 @@ const getCookie = () => {
// 根据域名,获得租户信息 // 根据域名,获得租户信息
const getTenantByWebsite = async () => { const getTenantByWebsite = async () => {
const website = location.host const website = location.host
try {
const res = await LoginApi.getTenantByWebsite(website) const res = await LoginApi.getTenantByWebsite(website)
if (res) { if (res) {
loginData.loginForm.tenantName = res.name loginData.loginForm.tenantName = res.name
authUtil.setTenantId(res.id) authUtil.setTenantId(res.id)
} }
} catch (e) { }
} }
const loading = ref() // ElLoading.service 返回的实例 const loading = ref() // ElLoading.service 返回的实例
// 登录 // 登录

View File

@@ -32,7 +32,7 @@ export default ({ command, mode }: ConfigEnv): UserConfig => {
// 本地跨域代理. 目前注释的原因暂时没有用途server 端已经支持跨域 // 本地跨域代理. 目前注释的原因暂时没有用途server 端已经支持跨域
proxy: { proxy: {
['/admin-api']: { ['/admin-api']: {
target: env.VITE_BASE_URL, target: 'http://10.28.117.100:48080',
ws: false, ws: false,
changeOrigin: true, changeOrigin: true,
rewrite: (path) => path.replace(new RegExp(`^/admin-api`), ''), rewrite: (path) => path.replace(new RegExp(`^/admin-api`), ''),