优化代码

This commit is contained in:
pengxiaolong
2025-08-26 22:04:33 +08:00
parent 20cb7bc0d1
commit 50f3126fc1
13 changed files with 218 additions and 61 deletions

View File

@@ -45,7 +45,8 @@
<div class="add-anchor-library"> <div class="add-anchor-library">
<div class="title"> <div class="title">
<img class="titleimg" src="@/assets/embellish.png" alt="" /> <img class="titleimg" src="@/assets/embellish.png" alt="" />
<div>发布新PK</div> <!-- gj发布新PK -->
<div>{{ t('ReleaseANewPK') }}</div>
<img class="titleimg" src="@/assets/embellish.png" alt="" /> <img class="titleimg" src="@/assets/embellish.png" alt="" />
</div> </div>
<div class="add-anchor-library-content"> <div class="add-anchor-library-content">
@@ -55,12 +56,13 @@
class="input-name-input" class="input-name-input"
v-model="anchorName" v-model="anchorName"
size="large" size="large"
placeholder="请输入主播名称" :placeholder="t('PleaseEnterTheNameOfTheHost')"
@blur="handleChange()" @blur="handleChange()"
/> />
<!-- gj请输入主播名称 -->
<div class="myanchor"> <div class="myanchor">
<div class="myanchor-btn" @click="myAnchorDialogVisible = true"> <div class="myanchor-btn" @click="myAnchorDialogVisible = true">
选择我的主播 {{ t('ChooseMyStreamer') }}
</div> </div>
</div> </div>
</div> </div>
@@ -70,11 +72,12 @@
v-model="countryvalue" v-model="countryvalue"
filterable filterable
:options="country" :options="country"
placeholder="请选择国家" :placeholder="t('PleaseSelectACountry')"
size="large" size="large"
style="vertical-align: middle" style="vertical-align: middle"
class="select" class="select"
/> />
<!-- gj选择国家 -->
</div> </div>
<div class="gender"> <div class="gender">
<!-- 性别 --> <!-- 性别 -->
@@ -83,29 +86,33 @@
filterable filterable
:options="genderOptions" :options="genderOptions"
size="large" size="large"
placeholder="请选择性别" :placeholder="t('PleaseSelectGender')"
style="vertical-align: middle" style="vertical-align: middle"
class="select" class="select"
/> />
<!-- gj请选择性别 -->
</div> </div>
<div class="timeselect"> <div class="timeselect">
<el-date-picker <el-date-picker
v-model="timevalue" v-model="timevalue"
type="datetime" type="datetime"
placeholder="选择PK时间" :placeholder="t('SelectThePKTime')"
size="large" size="large"
style="width: 100%; height: 100%" style="width: 100%; height: 100%"
format="YYYY/MM/DD hh:mm" format="YYYY/MM/DD hh:mm"
value-format="x" value-format="x"
/> />
<!-- gj请选择PK时间 -->
</div> </div>
<div class="Gold-sessions"> <div class="Gold-sessions">
<div class="Goldcoinbox-right"> <div class="Goldcoinbox-right">
<div class="Goldcoinbox-text">金币数单位为K</div> <div class="Goldcoinbox-text">{{ t('NumberOfGoldCoins') }}</div>
<!-- gj金币提示 -->
<el-input-number v-model="goldvalue" controls-position="right" /> <el-input-number v-model="goldvalue" controls-position="right" />
</div> </div>
<div class="Goldcoinbox-right"> <div class="Goldcoinbox-right">
<div class="Goldcoinbox-text">场次</div> <div class="Goldcoinbox-text">{{ t('Session') }}</div>
<!-- gj场次提示 -->
<el-input-number v-model="sessionnum" controls-position="right" /> <el-input-number v-model="sessionnum" controls-position="right" />
</div> </div>
</div> </div>
@@ -116,17 +123,20 @@
class="textarea" class="textarea"
style="width: 100%; height: 100%" style="width: 100%; height: 100%"
maxlength="50" maxlength="50"
placeholder="请输入备注(选填)" :placeholder="t('PleaseEnterTheRemarks')"
/> />
<!-- gj备注 -->
</div> </div>
<div class="Confirm" @click="Confirm()">确认</div> <div class="Confirm" @click="Confirm()">{{ t('Confirm') }}</div>
<div class="Reset" @click="Reset()">重置</div> <!-- gj确认 -->
<div class="Reset" @click="Reset()">{{ t('Reset') }}</div>
<!-- gj重置 -->
</div> </div>
</div> </div>
</div> </div>
</el-drawer> </el-drawer>
<!-- 选择我的主播弹窗 --> <!-- 选择我的主播弹窗 -->
<el-dialog v-model="myAnchorDialogVisible" center title="选择我的主播库主播" width="800" align-center> <el-dialog v-model="myAnchorDialogVisible" center :title="t('SelectTheStreamersFromMyStreamerLibrary')" width="800" align-center>
<div class="myanchor-content"> <div class="myanchor-content">
<div class="myanchor-list"> <div class="myanchor-list">
<div <div
@@ -152,7 +162,8 @@
background: item.gender == 1 ? '#59D8DB' : '#F3876F', background: item.gender == 1 ? '#59D8DB' : '#F3876F',
}" }"
> >
{{ item.gender == 1 ? "男" : "女" }} {{ item.gender == 1 ? t('man') : t('woman') }}
<!-- gj男女 -->
</div> </div>
<div class="Country">{{ item.country }}</div> <div class="Country">{{ item.country }}</div>
</div> </div>
@@ -161,12 +172,14 @@
</div> </div>
</div> </div>
<div class="myanchor-dialog-btn"> <div class="myanchor-dialog-btn">
<div class="myAnchorDialogReset" @click="myAnchorDialogVisible = false">取消</div> <div class="myAnchorDialogReset" @click="myAnchorDialogVisible = false">{{ t('Cancel') }}</div>
<div class="myAnchorDialogConfirm" @click="myAnchorDialogConfirm()">确认</div> <!-- gj取消 -->
<div class="myAnchorDialogConfirm" @click="myAnchorDialogConfirm()">{{ t('Confirm') }}</div>
<!-- gj确认 -->
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog v-model="settingsVisible" center title="设置" width="800" align-center> <el-dialog v-model="settingsVisible" center :title="t('Settings')" width="800" align-center>
<div class="settings-content"> <div class="settings-content">
<!-- 头像设置 --> <!-- 头像设置 -->
<div class="avatar-setting"> <div class="avatar-setting">
@@ -179,55 +192,64 @@
> >
<img :src="avatar" class="avatar" /> <img :src="avatar" class="avatar" />
</el-upload> </el-upload>
<div class="Hint">点击上方头像修改头像</div> <div class="Hint">{{ t('ClickOnTheAvatarAboveToModifyIt') }}</div>
<!-- gj点击头像修改 -->
</div> </div>
<!-- 昵称设置 --> <!-- 昵称设置 -->
<div class="nickname-setting"> <div class="nickname-setting">
<input type="text" class="nickname-input" v-model="info.nickName" @blur="handleNickNameChange"/> <input type="text" class="nickname-input" v-model="info.nickName" @blur="handleNickNameChange"/>
<div class="Hint">点击输入修改昵称</div> <div class="Hint">{{ t('ClickToEnterAndModifyYourNickname') }}</div>
<!-- gj点击昵称修改 -->
</div> </div>
<div class="email-setting" @click="ResendEmail" v-if="info.mailVerification == 1 && info.email != null"> <div class="email-setting" @click="ResendEmail" v-if="info.mailVerification == 1 && info.email != null">
<div v-if="isResendEmail == 0"> <div v-if="isResendEmail == 0">
{{info.email}}重发邮箱验证 {{t('ResendTheEmailTo')}}{{""+info.email+""}}{{t('ForVerification')}}
<!-- gj重新发送邮件 -->
</div> </div>
<div v-if="isResendEmail == 1"> <div v-if="isResendEmail == 1">
{{timeLeft}} {{timeLeft}}
</div> </div>
</div> </div>
<!-- 邮箱设置 --> <!-- 邮箱设置 -->
<div class="email-setting" v-if="info.email != null" @click="emailVisiblefu">修改邮箱{{info.email}}</div> <div class="email-setting" v-if="info.email != null" @click="emailVisiblefu">{{t('ModifyTheEmailAddress')}}{{""+info.email+""}}</div>
<!-- gj点击邮箱修改 -->
<!-- 密码设置 --> <!-- 密码设置 -->
<div class="password-setting" v-if="info.email != null" @click="passwordVisiblefn">修改密码</div> <div class="password-setting" v-if="info.email != null" @click="passwordVisiblefn">{{ t('ChangePassword') }}</div>
<!-- gj点击密码修改 -->
</div> </div>
</el-dialog> </el-dialog>
<!-- 修改密码弹窗 --> <!-- 修改密码弹窗 -->
<el-dialog v-model="passwordVisible" center title="修改密码" width="600" align-center> <el-dialog v-model="passwordVisible" center :title="t('ChangePassword')" width="600" align-center>
<!-- gj修改密码 -->
<div class="password-content"> <div class="password-content">
<el-input <el-input
type="password" type="password"
v-model="password" v-model="password"
placeholder="请输入旧密码" :placeholder="t('PleaseEnterTheOldPassword')"
size="large" size="large"
class="password-input" class="password-input"
show-password show-password
/> />
<!-- gj请输入旧密码 -->
<el-input <el-input
type="password" type="password"
v-model="newPassword" v-model="newPassword"
placeholder="请输入新密码" :placeholder="t('PleaseEnterTheNewPassword')"
size="large" size="large"
class="password-input" class="password-input"
show-password show-password
/> />
<!-- gj请输入新密码 -->
<el-input <el-input
type="password" type="password"
v-model="confirmPassword" v-model="confirmPassword"
placeholder="请确认新密码" :placeholder="t('PleaseEnterTheConfirmPassword')"
size="large" size="large"
class="password-input" class="password-input"
show-password show-password
/> />
<div class="password-btn" @click="changePassword()">确定</div> <div class="password-btn" @click="changePassword()">{{ t('Confirm') }}</div>
<!-- gj确认 -->
</div> </div>
</el-dialog> </el-dialog>
<!-- 修改邮箱弹窗 --> <!-- 修改邮箱弹窗 -->
@@ -303,6 +325,11 @@ import {
import { goeasy } from "../main"; import { goeasy } from "../main";
import GoEasy from "goeasy"; import GoEasy from "goeasy";
var im = goeasy.im; var im = goeasy.im;
//
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
window['$t'] = t
//
const info = ref({}); // 用户信息 const info = ref({}); // 用户信息
const avatar = ref(null); //头像 const avatar = ref(null); //头像
const country = ref([]); const country = ref([]);
@@ -321,19 +348,21 @@ const sessionnum = ref(null); // 场次
const remark = ref(null); // 备注 const remark = ref(null); // 备注
const Avatarlist = [ const Avatarlist = [
{ {
name:'签到', // gj签到
name:t('SignIn'),
id:1 id:1
}, },
{ {
name: '设置', //gj设置
name: t('Settings'),
id: 2, id: 2,
}, },
{ {
name: '联系客服(点击复制邮箱)', name: t('ContactCustomerService'),
id: 3, id: 3,
}, },
{ {
name: '退出登录', name: t('Logout'),
id: 4, id: 4,
} }
] ]
@@ -346,21 +375,24 @@ const NavigationModule = [
Selectedicon:'https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/SelectPKpage.png' Selectedicon:'https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/SelectPKpage.png'
}, },
{ {
name: '站内信', //gj论坛
name: t('InSiteMessage'),
id: 2, id: 2,
path: '/nav/Forum', path: '/nav/Forum',
icon: 'https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/Forum.png', icon: 'https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/Forum.png',
Selectedicon:'https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/Selectinsitemessagepage.png' Selectedicon:'https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/Selectinsitemessagepage.png'
}, },
{ {
name: '消息', //gj消息
name: t('message'),
id: 3, id: 3,
path: '/nav/Message', path: '/nav/Message',
icon: 'https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/Message.png', icon: 'https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/Message.png',
Selectedicon:'https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/Selectmessagepage.png' Selectedicon:'https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/Selectmessagepage.png'
}, },
{ {
name: '我的', //gj我的
name: t('Mine'),
id: 4, id: 4,
path: '/nav/Mine', path: '/nav/Mine',
icon: 'https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/Mine.png', icon: 'https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/Mine.png',
@@ -918,6 +950,7 @@ onUnmounted(() => {
font-size: 12px; font-size: 12px;
color:@Prompt-text-color; color:@Prompt-text-color;
margin-top: 5px; margin-top: 5px;
text-align: center;
} }
.redDot{ .redDot{

View File

@@ -20,6 +20,7 @@ import { ref } from 'vue'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { setLocale } from '@/i18n' import { setLocale } from '@/i18n'
const { locale } = useI18n() const { locale } = useI18n()
const currentLanguage = ref(locale.value) const currentLanguage = ref(locale.value)

View File

@@ -97,7 +97,8 @@
<div class="add-anchor-library"> <div class="add-anchor-library">
<div class="title"> <div class="title">
<img class="titleimg" src="@/assets/embellish.png" alt="" /> <img class="titleimg" src="@/assets/embellish.png" alt="" />
<div v-if="!modifyDialogstate">发布新PK</div> <!-- gj发布新PK -->
<div v-if="!modifyDialogstate">{{ t('ReleaseANewPK') }}</div>
<div v-if="modifyDialogstate">修改PK信息</div> <div v-if="modifyDialogstate">修改PK信息</div>
<img class="titleimg" src="@/assets/embellish.png" alt="" /> <img class="titleimg" src="@/assets/embellish.png" alt="" />
</div> </div>
@@ -108,12 +109,13 @@
class="input-name-input" class="input-name-input"
v-model="anchorName" v-model="anchorName"
size="large" size="large"
placeholder="请输入主播名称" :placeholder="t('PleaseEnterTheNameOfTheHost')"
@blur="handleChange()" @blur="handleChange()"
/> />
<!-- gj请输入主播名称 -->
<div class="myanchor"> <div class="myanchor">
<div class="myanchor-btn" @click="myAnchorDialogVisible = true"> <div class="myanchor-btn" @click="myAnchorDialogVisible = true">
选择我的主播 {{ t('ChooseMyStreamer') }}
</div> </div>
</div> </div>
</div> </div>
@@ -123,11 +125,12 @@
v-model="countryvalue" v-model="countryvalue"
filterable filterable
:options="country" :options="country"
placeholder="请选择国家" :placeholder="t('PleaseSelectACountry')"
size="large" size="large"
style="vertical-align: middle" style="vertical-align: middle"
class="select" class="select"
/> />
<!-- gj选择国家 -->
</div> </div>
<div class="gender"> <div class="gender">
<!-- 性别 --> <!-- 性别 -->
@@ -136,29 +139,33 @@
filterable filterable
:options="genderOptions" :options="genderOptions"
size="large" size="large"
placeholder="请选择性别" :placeholder="t('PleaseSelectGender')"
style="vertical-align: middle" style="vertical-align: middle"
class="select" class="select"
/> />
<!-- gj请选择性别 -->
</div> </div>
<div class="timeselect"> <div class="timeselect">
<el-date-picker <el-date-picker
v-model="timevalue" v-model="timevalue"
type="datetime" type="datetime"
placeholder="选择PK时间" :placeholder="t('SelectThePKTime')"
size="large" size="large"
style="width: 100%; height: 100%" style="width: 100%; height: 100%"
format="YYYY/MM/DD hh:mm" format="YYYY/MM/DD hh:mm"
value-format="x" value-format="x"
/> />
<!-- gj请选择PK时间 -->
</div> </div>
<div class="Gold-sessions"> <div class="Gold-sessions">
<div class="Goldcoinbox-right"> <div class="Goldcoinbox-right">
<div class="Goldcoinbox-text">金币数单位为K</div> <div class="Goldcoinbox-text">{{ t('NumberOfGoldCoins') }}</div>
<!-- gj金币提示 -->
<el-input-number v-model="goldvalue" controls-position="right" /> <el-input-number v-model="goldvalue" controls-position="right" />
</div> </div>
<div class="Goldcoinbox-right"> <div class="Goldcoinbox-right">
<div class="Goldcoinbox-text">场次</div> <div class="Goldcoinbox-text">{{ t('Session') }}</div>
<!-- gj场次提示 -->
<el-input-number v-model="sessionnum" controls-position="right" /> <el-input-number v-model="sessionnum" controls-position="right" />
</div> </div>
</div> </div>
@@ -169,11 +176,14 @@
class="textarea" class="textarea"
style="width: 100%; height: 100%" style="width: 100%; height: 100%"
maxlength="50" maxlength="50"
placeholder="请输入备注(选填)" :placeholder="t('PleaseEnterTheRemarks')"
/> />
<!-- gj备注 -->
</div> </div>
<div class="Confirm" @click="Confirm()">确认</div> <div class="Confirm" @click="Confirm()">{{ t('Confirm') }}</div>
<div class="Reset" @click="Reset()">重置</div> <!-- gj确认 -->
<div class="Reset" @click="Reset()">{{ t('Reset') }}</div>
<!-- gj重置 -->
<div class="Reset" v-if="modifyDialogstate" @click="cancel()">取消</div> <div class="Reset" v-if="modifyDialogstate" @click="cancel()">取消</div>
</div> </div>
</div> </div>
@@ -300,7 +310,11 @@ import { getCountryNamesArray } from "../../utils/countryUtil";
import { ElLoading } from "element-plus"; import { ElLoading } from "element-plus";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { setStorage, getStorage, getPromiseStorage } from "@/utils/storage.js"; import { setStorage, getStorage, getPromiseStorage } from "@/utils/storage.js";
//
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
window['$t'] = t
//
const country = ref([]); const country = ref([]);
country.value = getCountryNamesArray(); //国家条目 country.value = getCountryNamesArray(); //国家条目
const genderOptions = [ const genderOptions = [

33
src/i18n/en/Appaside.json Normal file
View File

@@ -0,0 +1,33 @@
{
"InSiteMessage": "In-site message",
"Mine": "Mine",
"SignIn": "Sign in",
"message": "message",
"Settings": "Settings",
"ContactCustomerService": "Contact customer service (click to copy the email address)",
"Logout": "Log out",
"ReleaseANewPK": "Release a new PK",
"PleaseEnterTheNameOfTheHost": "Please enter the name of the host",
"ChooseMyStreamer": "Choose mine",
"PleaseSelectACountry": "Please select a country",
"PleaseSelectGender": "Please select gender",
"SelectThePKTime": "Select the PK time",
"NumberOfGoldCoins": "The number of gold coins (in K)",
"Session": "Session",
"PleaseEnterTheRemarks": "Please enter the remarks (optional)",
"Confirm": "Confirm",
"Reset": "Reset",
"Cancel": "Cancel",
"SelectTheStreamersFromMyStreamerLibrary": "Select the streamers from my streamer library",
"man": "man",
"woman": "woman",
"ClickOnTheAvatarAboveToModifyIt": "Click on the avatar above to modify it",
"ClickToEnterAndModifyYourNickname": "Click to enter and modify your nickname",
"ResendTheEmailTo": "Resend the email to",
"ForVerification": "for verification",
"ModifyTheEmailAddress": "Modify the email address",
"ChangePassword":"Change password",
"PleaseEnterTheOldPassword": "Please enter the old password",
"PleaseEnterTheNewPassword": "Please enter the new password",
"PleaseEnterTheConfirmPassword": "Please enter the confirm password"
}

View File

@@ -1,9 +1,11 @@
import login from './login.json' import login from './login.json'
import Appaside from './Appaside.json'
const global = { const global = {
logout: 'Logout', logout: 'Logout',
} }
export default { export default {
...global, ...global,
...login ...login,
...Appaside
} }

View File

@@ -2,5 +2,11 @@
"login": "Login", "login": "Login",
"Welcome_to_login": "Welcome to login", "Welcome_to_login": "Welcome to login",
"PleaseEnterEmailOrUsername": "Please enter email or username", "PleaseEnterEmailOrUsername": "Please enter email or username",
"PleaseEnterPassword": "Please enter password" "PleaseEnterPassword": "Please enter password",
"WechatMiniProgramLogin": "Wechat Mini Program Login",
"LogInByScanningTheQRCodeWithTheWechatMini-program":"Log in by scanning the QR code with the wechat mini-program",
"DontHaveAnAccountYet":"Don't have an account yet?",
"Register":"Register",
"AlreadyHaveAnAccount":"Already have an account?",
"ForgotPassword":"Forgot password?"
} }

View File

@@ -3,11 +3,12 @@
import { createI18n } from 'vue-i18n' //引入vue-i18n组件 import { createI18n } from 'vue-i18n' //引入vue-i18n组件
import zh from './zh/index' import zh from './zh/index'
import en from './en/index' import en from './en/index'
import { setStorage , getStorage } from '@/utils/storage.js';
const i18n = createI18n({ const i18n = createI18n({
legacy: false, legacy: false,
globalInjection:true, globalInjection:true,
locale: "ZH", // Default language locale: getStorage('language') || "ZH", // Default language
fallbackLocale: "EN", // Fallback to English if translation missing fallbackLocale: "EN", // Fallback to English if translation missing
messages: { messages: {
ZH: zh, ZH: zh,
@@ -19,7 +20,8 @@ const i18n = createI18n({
export function setLocale(lang) { export function setLocale(lang) {
if (['ZH', 'EN'].includes(lang)) { if (['ZH', 'EN'].includes(lang)) {
i18n.global.locale.value = lang i18n.global.locale.value = lang
setStorage('language', lang)
} }
} }
export default i18n export default i18n

33
src/i18n/zh/Appaside.json Normal file
View File

@@ -0,0 +1,33 @@
{
"InSiteMessage":"站内信",
"Mine":"我的",
"SignIn":"签到",
"message":"消息",
"Settings":"设置",
"ContactCustomerService":"联系客服(点击复制邮箱)",
"Logout":"退出登录",
"ReleaseANewPK":"发布新PK",
"PleaseEnterTheNameOfTheHost":"请输入主播名称",
"ChooseMyStreamer":"选择我的主播",
"PleaseSelectACountry":"请选择国家",
"PleaseSelectGender":"请选择性别",
"SelectThePKTime":"选择PK时间",
"NumberOfGoldCoins":"金币数单位为K",
"Session":"场次",
"PleaseEnterTheRemarks":"请输入备注(选填)",
"Confirm":"确认",
"Reset":"重置",
"Cancel":"取消",
"SelectTheStreamersFromMyStreamerLibrary":"选择我的主播库主播",
"man":"男",
"woman":"女",
"ClickOnTheAvatarAboveToModifyIt":"点击头像上方修改头像",
"ClickToEnterAndModifyYourNickname":"点击输入修改昵称",
"ResendTheEmailTo":"向",
"ForVerification":"重发邮箱验证",
"ModifyTheEmailAddress":"修改邮箱",
"ChangePassword":"修改密码",
"PleaseEnterTheOldPassword":"请输入旧密码",
"PleaseEnterTheNewPassword":"请输入新密码",
"PleaseEnterTheConfirmPassword":"请再次输入新密码"
}

View File

@@ -1,9 +1,11 @@
import login from './login.json' import login from './login.json'
import Appaside from './Appaside.json'
const global = { const global = {
logout: '退出登录', logout: '退出登录',
} }
export default { export default {
...global, ...global,
...login ...login,
...Appaside
} }

View File

@@ -2,5 +2,11 @@
"login": "登录", "login": "登录",
"Welcome_to_login": "欢迎登录", "Welcome_to_login": "欢迎登录",
"PleaseEnterEmailOrUsername": "请输入邮箱或用户名", "PleaseEnterEmailOrUsername": "请输入邮箱或用户名",
"PleaseEnterPassword": "请输入密码" "PleaseEnterPassword": "请输入密码",
"WechatMiniProgramLogin": "微信小程序登录",
"LogInByScanningTheQRCodeWithTheWechatMini-program": "使用微信小程序扫描二维码登录",
"DontHaveAnAccountYet":"还没有账号?",
"Register": "注册",
"AlreadyHaveAnAccount": "已有账号?",
"ForgotPassword": "忘记密码?"
} }

View File

@@ -20,7 +20,7 @@ export function getPromiseStorage(key) {
try { try {
resolve(JSON.parse(data)); resolve(JSON.parse(data));
} catch { } catch {
reject(data); resolve(data);
} }
}); });
} }

View File

@@ -16,6 +16,7 @@
</div> </div>
<!-- 标题 --> <!-- 标题 -->
<div v-if="!refSwitch" class="container"> <div v-if="!refSwitch" class="container">
<!-- gj欢迎登录 -->
<div class="title">{{ t('Welcome_to_login') }}</div> <div class="title">{{ t('Welcome_to_login') }}</div>
<div class="striping"></div> <div class="striping"></div>
<div class="input-Email"> <div class="input-Email">
@@ -29,6 +30,7 @@
:placeholder="t('PleaseEnterEmailOrUsername')" :placeholder="t('PleaseEnterEmailOrUsername')"
@keydown.enter.native="EmailLogin" @keydown.enter.native="EmailLogin"
/> />
<!-- gj请输入邮箱或用户名 -->
</div> </div>
<div class="input-Password"> <div class="input-Password">
<img class="Passwordimg" src="../assets/Password.png" alt="" /> <img class="Passwordimg" src="../assets/Password.png" alt="" />
@@ -42,25 +44,33 @@
:placeholder="t('PleaseEnterPassword')" :placeholder="t('PleaseEnterPassword')"
@keydown.enter.native="EmailLogin" @keydown.enter.native="EmailLogin"
/> />
<!-- gj请输入密码 -->
</div> </div>
<div class="login-btn" @click="EmailLogin">{{ t('login') }}</div> <div class="login-btn" @click="EmailLogin">{{ t('login') }}</div>
<!-- gj登录 -->
</div> </div>
<!-- 微信登录 --> <!-- 微信登录 -->
<div v-if="refSwitch" class="container"> <div v-if="refSwitch" class="container">
<div class="title">微信小程序登录</div> <!-- gj微信登录 -->
<div class="title">{{ t('WechatMiniProgramLogin') }}</div>
<div class="striping"></div> <div class="striping"></div>
<img class="qrcode" :src="Qrcode.qrcode" alt="" /> <img class="qrcode" :src="Qrcode.qrcode" alt="" />
<div class="qrcode-text">使用微信小程序扫描二维码登录</div> <!-- gj通过微信小程序扫描二维码登录 -->
<div class="qrcode-text">{{ t('LogInByScanningTheQRCodeWithTheWechatMini-program') }}</div>
</div> </div>
</div> </div>
<div class="register" v-if="!refSwitch"> <div class="register" v-if="!refSwitch">
<div class="register-content"> <div class="register-content">
<div class="register-text">还没有账号</div> <!-- gj还没有账号 -->
<div class="register-btn" @click="register">注册</div> <div class="register-text">{{ t('DontHaveAnAccountYet') }}</div>
<!-- gj注册 -->
<div class="register-btn" @click="register">{{ t('Register') }}</div>
</div> </div>
<div class="register-content"> <div class="register-content">
<div class="register-text">已有账号</div> <!-- gj已有账号 -->
<div class="register-btn" @click="forgetPassword">忘记密码</div> <div class="register-text">{{ t('AlreadyHaveAnAccount') }}</div>
<!-- gj忘记密码 -->
<div class="register-btn" @click="forgetPassword">{{ t('ForgotPassword') }}</div>
</div> </div>
</div> </div>
</div> </div>
@@ -238,10 +248,10 @@ onUnmounted(() => {
align-items: center; align-items: center;
} }
.register { .register {
width: 627px; width: 730px;
height: 40px; height: 40px;
display: flex; display: flex;
justify-content:space-between; justify-content:space-around;
} }
.register-text { .register-text {
font-size: 18px; font-size: 18px;

View File

@@ -15,14 +15,16 @@
<script setup> <script setup>
import Appaside from "/src/components/Appaside.vue"; import Appaside from "/src/components/Appaside.vue";
import { ref, watch, onMounted, onUnmounted } from "vue"; import { ref, watch, onMounted, onUnmounted,onBeforeMount } from "vue";
import { getOtp } from "@/api/account"; import { getOtp } from "@/api/account";
const user = ref(null); // 用户信息 const user = ref(null); // 用户信息
import { goEasyLink } from "@/utils/goeasy.js"; import { goEasyLink } from "@/utils/goeasy.js";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import {getPromiseStorage } from "@/utils/storage.js"; import {getPromiseStorage } from "@/utils/storage.js";
import { setLocale } from '@/i18n'
const router = useRouter(); const router = useRouter();
const language = ref(null); // 语言
//自动链接IM //自动链接IM
function autoLinkIM() { function autoLinkIM() {
getOtp() getOtp()
@@ -48,6 +50,19 @@ function autoLinkIM() {
}); });
} }
onBeforeMount(() => {
// 语言
getPromiseStorage("language")
.then((res) => {
console.log("获取语言成功", res);
language.value = res;
setLocale(language.value);
})
.catch((err) => {
console.log("获取语言失败", err);
});
});
onMounted(() => { onMounted(() => {
getPromiseStorage("user") getPromiseStorage("user")
.then((res) => { .then((res) => {