优化代码

This commit is contained in:
pengxiaolong
2025-08-29 13:31:08 +08:00
parent d294f62469
commit aa74346232
24 changed files with 1002 additions and 518 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -184,7 +184,7 @@
<!-- 头像设置 --> <!-- 头像设置 -->
<div class="avatar-setting"> <div class="avatar-setting">
<el-upload class="avatar-uploader" <el-upload class="avatar-uploader"
action="http://192.168.1.174:8086/file/uploadHeadIcon" action="https://pk.zhukeping.com/file/uploadHeadIcon"
:show-file-list="false" :show-file-list="false"
:on-success="handleAvatarSuccess" :on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload" :before-upload="beforeAvatarUpload"
@@ -296,11 +296,21 @@
</div> </div>
</el-dialog> </el-dialog>
<el-dialog v-model="notActivated" center :title="t('Hint')" width="400" align-center>
<div class="notActivated-content">
<div class="notActivated-text">
{{ t('YourAccountHasNotBeenActivatedYetAndMayBeSubjectToRestrictionsPleaseActivateItInTime') }}
</div>
<div class="notActivated-btn" @click="Activate()">
{{ t('Activate') }}
</div>
</div>
</el-dialog>
</template> </template>
<script setup> <script setup>
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
import { setStorage , getStorage , getPromiseStorage,clearStorage} from '@/utils/storage.js'; import { setStorage , getStorage , getPromiseStorage,clearStorage,getPromiseSessionStorage} from '@/utils/storage.js';
import { UserStore } from '@/stores/notice' import { UserStore } from '@/stores/notice'
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { ElLoading } from "element-plus"; import { ElLoading } from "element-plus";
@@ -324,7 +334,7 @@ import {
onUnmounted, // 组件销毁前执行 onUnmounted, // 组件销毁前执行
reactive reactive
} from "vue"; } from "vue";
import { getCountryNamesArray } from "../utils/countryUtil"; import { getCountryNamesArray } from "@/utils/countryUtil";
import { import {
goEasyGetConversations, goEasyGetConversations,
goEasyDisConnect, goEasyDisConnect,
@@ -430,6 +440,7 @@ const isSendEmail = ref(0); // 是否发送邮箱验证码
const isResendEmail = ref(0); // 是否重发邮箱验证 const isResendEmail = ref(0); // 是否重发邮箱验证
const timeLeft = ref(60); // 倒计时 const timeLeft = ref(60); // 倒计时
const newEmail = ref(''); // 新邮箱 const newEmail = ref(''); // 新邮箱
const notActivated = ref(false); // 未激活弹窗
const chatList = ref({ const chatList = ref({
unreadTotal: 0, unreadTotal: 0,
}); // 会话列表 }); // 会话列表
@@ -812,6 +823,10 @@ function setsignIn() {
}).catch((err) => {}); }).catch((err) => {});
} }
function Activate(){
router.push('/ActivateEmail')
}
//获取用户数据 //获取用户数据
function UserInfo() { function UserInfo() {
getUserInfo({ getUserInfo({
@@ -819,9 +834,11 @@ function UserInfo() {
}).then(res => { }).then(res => {
info.value = res; info.value = res;
setStorage("user", res); setStorage("user", res);
if (info.value.status == 2) { getPromiseSessionStorage("notActivated").then(res => {
router.push('/ActivateEmail') if (info.value.status == 2 && res != true) {
notActivated.value = true;
} }
}).catch((err) => {});
if (info.value.mailVerification == 1 && info.value.email != null) { if (info.value.mailVerification == 1 && info.value.email != null) {
ElMessage.error(t('YourEmailHasNotBeenVerifiedPleaseGoToTheSettingsToVerifyYourEmailIfItHasBeenVerifiedPleaseRefreshThePage')); ElMessage.error(t('YourEmailHasNotBeenVerifiedPleaseGoToTheSettingsToVerifyYourEmailIfItHasBeenVerifiedPleaseRefreshThePage'));
//gj邮箱未验证请前往设置验证邮箱 //gj邮箱未验证请前往设置验证邮箱
@@ -1519,9 +1536,48 @@ onUnmounted(() => {
.email-Verification-btn-text{ .email-Verification-btn-text{
font-size: 14px; font-size: 14px;
color: #999; color: #999;
text-align: center;
} }
.newEmail{ .newEmail{
margin-top: 50px; margin-top: 50px;
width: 410px; width: 410px;
} }
.notActivated-content{
width:100%;
height: 300px;
display: flex;
flex-direction: column;
align-items: center;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.notActivated-text{
width: 90%;
height: 200px;
font-size: 20px;
color: #03ABA8;
}
.notActivated-btn{
width: 90%;
height: 50px;
margin-top: 50px;
background: linear-gradient(0deg, #4FCACD, #5FDBDE);
border-radius: 50px;
text-align: center;
line-height: 50px;
color: #ffffff;
transition: all 0.4s ease;
}
.notActivated-btn:hover{
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.3);
transform: scale(1.05);
opacity: 0.8;
}
.notActivated-btn:active{
background-color: #03ABA8;
color: #ffffff;
transform: scale(0.90) !important;
}
</style> </style>

View File

@@ -1,50 +1,52 @@
<template> <template>
<div class="language-switcher"> <div class="language-switcher">
<button <el-select-v2
@click="setLanguage('ZH')" v-model="currentLanguage"
:class="{ active: currentLanguage === 'ZH' }" :options="languageOptions"
> style="vertical-align: middle"
中文 class="select"
</button> @change="setLanguage(currentLanguage)"
<button />
@click="setLanguage('EN')"
:class="{ active: currentLanguage === 'EN' }"
>
English
</button>
</div> </div>
</template> </template>
<script setup> <script setup>
import { ref } from 'vue' 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) const languageOptions = [
{ label: "中文", value: "ZH" },
{ label: "English", value: "EN" },
];
function setLanguage(lang) { function setLanguage(lang) {
setLocale(lang) setLocale(lang);
currentLanguage.value = lang currentLanguage.value = lang;
} }
</script> </script>
<style scoped> <style scoped>
.language-switcher { .language-switcher {
width: 150px;
height: 30px;
position: fixed; position: fixed;
top: 20px; top: 20px;
right: 20px; right: 20px;
z-index: 1000; z-index: 1000;
} }
button { button {
width: 80px;
height: 30px;
padding: 5px 10px; padding: 5px 10px;
margin: 0 5px; margin: 0 5px;
cursor: pointer; cursor: pointer;
background: #f0f0f0; background: #f0f0f0;
border: 1px solid #ddd; border: 1px solid #ddd;
border-radius: 4px; border-radius: 4px;
font-size: 14px;
} }
button.active { button.active {

View File

@@ -16,12 +16,14 @@
background: ArticleDetailsA.sex == 1 ? '#59D8DB' : '#F3876F', background: ArticleDetailsA.sex == 1 ? '#59D8DB' : '#F3876F',
}" }"
> >
{{ ArticleDetailsA.sex == 1 ? "男" : "女" }} {{ ArticleDetailsA.sex == 1 ? t("man") : t("woman")}}
<!-- gj男/ -->
</div> </div>
<div class="Country">{{ ArticleDetailsA.country }}</div> <div class="Country">{{ ArticleDetailsA.country }}</div>
</div> </div>
<div class="time"> <div class="time">
PK时间(本地时间):{{ TimestamptolocalTime(PkIDInfodata.pkTime * 1000) }} {{t("PKTime") + TimestamptolocalTime(PkIDInfodata.pkTime * 1000) }}
<!-- gjPK时间 -->
</div> </div>
</div> </div>
</div> </div>
@@ -34,7 +36,8 @@
alt="" alt=""
/> />
<div class="sessions-content"> <div class="sessions-content">
金币 {{t('GoldCoin') }}
<!-- gj金币 -->
<div class="gold-num">{{ ArticleDetailsA.coin }}K</div> <div class="gold-num">{{ ArticleDetailsA.coin }}K</div>
</div> </div>
</div> </div>
@@ -45,13 +48,16 @@
alt="" alt=""
/> />
<div class="sessions-content"> <div class="sessions-content">
场次 {{ t('session') }}
<div class="gold-num">{{ PkIDInfodata.pkNumber }}</div> <!-- gj场次 -->
<div class="gold-num">{{ PkIDInfodata.pkNumber+t('match')}}</div>
<!-- gj场 -->
</div> </div>
</div> </div>
</div> </div>
<!-- --> <!-- -->
<div class="Remarks">备注{{ ArticleDetailsA.remark }}</div> <div class="Remarks">{{t('Note')+ArticleDetailsA.remark }}</div>
<!-- gj备注 -->
</div> </div>
</div> </div>
<div class="pk-message-center"> <div class="pk-message-center">
@@ -60,19 +66,24 @@
class="messagebtn" class="messagebtn"
v-if="PkIDInfodata.pkStatus === 0 && ArticleDetailsB.senderId != info.id" v-if="PkIDInfodata.pkStatus === 0 && ArticleDetailsB.senderId != info.id"
> >
<div class="messagebtn-left" @click="agree()">同意</div> <div class="messagebtn-left" @click="agree()">{{ t('agree') }}</div>
<div class="messagebtn-right" @click="refuse()">拒绝</div> <!-- gj同意 -->
<div class="messagebtn-right" @click="refuse()">{{ t('Refuse') }}</div>
<!-- gj拒绝 -->
</div> </div>
<div v-if="PkIDInfodata.pkStatus === 1" class="messageHint">已同意邀请</div> <div v-if="PkIDInfodata.pkStatus === 1" class="messageHint">{{ t('HaveAgreedToTheInvitation') }}</div>
<!-- gj已同意 -->
<div v-if="PkIDInfodata.pkStatus === 2" class="messageHint">已拒绝邀请</div> <div v-if="PkIDInfodata.pkStatus === 2" class="messageHint">{{ t('HaveRefusedTheInvitation') }}</div>
<!-- gj已拒绝 -->
<div <div
v-if="PkIDInfodata.pkStatus === 0 && ArticleDetailsB.senderId == info.id" v-if="PkIDInfodata.pkStatus === 0 && ArticleDetailsB.senderId == info.id"
class="messageHint" class="messageHint"
> >
等待对方回应如果已经回应请刷新页面 {{ t('WaitForTheOtherPartyResponse') }}
<!-- gj等待对方响应 -->
</div> </div>
</div> </div>
<div class="pk-message-right"> <div class="pk-message-right">
@@ -88,11 +99,13 @@
background: ArticleDetailsB.sex == 1 ? '#59D8DB' : '#F3876F', background: ArticleDetailsB.sex == 1 ? '#59D8DB' : '#F3876F',
}" }"
> >
{{ ArticleDetailsB.sex == 1 ? "男" : "女" }} {{ ArticleDetailsB.sex == 1 ? t("man") : t("woman")}}
<!-- gj男/ -->
</div> </div>
</div> </div>
<div class="time"> <div class="time">
PK时间(本地时间):{{ TimestamptolocalTime(PkIDInfodata.pkTime * 1000) }} {{t("PKTime") + TimestamptolocalTime(PkIDInfodata.pkTime * 1000) }}
<!-- gjPK时间 -->
</div> </div>
</div> </div>
<div class="Avatar"> <div class="Avatar">
@@ -108,7 +121,8 @@
alt="" alt=""
/> />
<div class="sessions-content"> <div class="sessions-content">
金币 {{t('GoldCoin') }}
<!-- gj金币 -->
<div class="gold-num">{{ ArticleDetailsB.coin }}K</div> <div class="gold-num">{{ ArticleDetailsB.coin }}K</div>
</div> </div>
</div> </div>
@@ -119,48 +133,53 @@
alt="" alt=""
/> />
<div class="sessions-content"> <div class="sessions-content">
场次 {{ t('session') }}
<div class="gold-num">{{ PkIDInfodata.pkNumber }}</div> <!-- gj场次 -->
<div class="gold-num">{{ PkIDInfodata.pkNumber+t('match')}}</div>
</div> </div>
</div> </div>
</div> </div>
<!-- --> <!-- -->
<div class="Remarks">备注{{ ArticleDetailsB.remark }}</div> <div class="Remarks">{{t('Note')+ArticleDetailsB.remark }}</div>
</div> </div>
</div> </div>
</div> </div>
<!-- 同意邀请提示 --> <!-- 同意邀请提示 -->
<el-dialog v-model="agreedialog" center title="提示" width="400" align-center> <el-dialog v-model="agreedialog" center :title="t('Hint')" width="400" align-center>
<div class="dialog-content"> <div class="dialog-content">
<div class="dialog-content-text"> <div class="dialog-content-text">
<div> <div>
邀请成功后的pk不可修改不可删除请谨慎操作 {{ t('AfterASuccessfulInvitationThePKCannotBeModifiedOrDeletedPleaseOperateWithCaution') }}
<!-- gj邀请成功后PK不可修改或删除请谨慎操作 -->
</div> </div>
</div> </div>
<!-- --> <!-- -->
<div class="myanchor-dialog-btn"> <div class="myanchor-dialog-btn">
<div class="remindermyAnchorDialogReset" @click="agreedialog = false">取消</div> <div class="remindermyAnchorDialogReset" @click="agreedialog = false">{{ t('Cancel') }}</div>
<!-- gj取消 -->
<div class="remindermyAnchorDialogConfirm" @click="agreedialogConfirm"> <div class="remindermyAnchorDialogConfirm" @click="agreedialogConfirm">
确认 {{ t('Confirm') }}
<!-- gj确认 -->
</div> </div>
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
<!-- 拒绝邀请提示 --> <!-- 拒绝邀请提示 -->
<el-dialog v-model="refusedialog" center title="提示" width="400" align-center> <el-dialog v-model="refusedialog" center :title="t('Hint')" width="400" align-center>
<div class="dialog-content"> <div class="dialog-content">
<!-- --> <!-- -->
<div class="dialog-content-text"> <div class="dialog-content-text">
<div> <div>
您确定要拒绝该邀请吗 {{ t('AreYouSureYouWantToDeclineThisInvitation') }}
<!-- gj确定拒绝邀请 -->
</div> </div>
</div> </div>
<div class="myanchor-dialog-btn"> <div class="myanchor-dialog-btn">
<div class="remindermyAnchorDialogReset" @click="refusedialog = false">取消</div> <div class="remindermyAnchorDialogReset" @click="refusedialog = false">{{ t('Cancel') }}</div>
<div class="remindermyAnchorDialogConfirm" @click="refusedialogConfirm"> <div class="remindermyAnchorDialogConfirm" @click="refusedialogConfirm">
确认 {{ t('Confirm') }}
</div> </div>
</div> </div>
@@ -185,6 +204,11 @@ import {
} from "@/utils/storage.js"; } from "@/utils/storage.js";
import { TimestamptolocalTime } from "@/utils/timeConversion.js"; import { TimestamptolocalTime } from "@/utils/timeConversion.js";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
//
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
window['$t'] = t
//
const props = defineProps({ const props = defineProps({
item: { item: {
type: Object, type: Object,
@@ -206,7 +230,8 @@ function agreedialogConfirm(){
id: newValitem.value.payload.customData.id, id: newValitem.value.payload.customData.id,
pkStatus: 1, pkStatus: 1,
}).then(() => { }).then(() => {
ElMessage.success("同意成功"); ElMessage.success(t('AgreeToSuccess'));
//gj同意成功
PkIDInfodata.value.pkStatus = 1; PkIDInfodata.value.pkStatus = 1;
agreedialog.value = false agreedialog.value = false
}).catch((err) => {}); }).catch((err) => {});
@@ -218,7 +243,8 @@ function refusedialogConfirm(){
id: newValitem.value.payload.customData.id, id: newValitem.value.payload.customData.id,
pkStatus: 2, pkStatus: 2,
}).then(() => { }).then(() => {
ElMessage.success("拒绝成功"); ElMessage.success(t('RefuseSuccess'));
//gj拒绝成功
PkIDInfodata.value.pkStatus = 2; PkIDInfodata.value.pkStatus = 2;
refusedialog.value = false refusedialog.value = false
}).catch((err) => {}); }).catch((err) => {});
@@ -498,12 +524,12 @@ watch(refname, async (newQuestion, oldQuestion) => {
height: 20px; height: 20px;
} }
.sessions-content { .sessions-content {
font-size: 20px; font-size: 16px;
color: #999; color: #999;
display: flex; display: flex;
} }
.gold-num { .gold-num {
font-size: 20px; font-size: 16px;
font-weight: bold; font-weight: bold;
color: #333; color: #333;
margin-left: 5px; margin-left: 5px;

View File

@@ -6,10 +6,6 @@
<div class="dialog-content"> <div class="dialog-content">
<img class="dialog-img" :src="item.payload.url" alt=""> <img class="dialog-img" :src="item.payload.url" alt="">
</div> </div>
<div class="dialog-footer">
<el-button type="primary" @click="dialogVisible = false">关闭</el-button>
<el-button type="primary" @click="saveToDesktop">保存到本地</el-button>
</div>
</el-dialog> </el-dialog>
</template> </template>

View File

@@ -15,13 +15,15 @@
background: ArticleDetailsA.sex == 1 ? '#59D8DB' : '#F3876F', background: ArticleDetailsA.sex == 1 ? '#59D8DB' : '#F3876F',
}" }"
> >
{{ ArticleDetailsA.sex == 1 ? "男" : "女" }} {{ ArticleDetailsA.sex == 1 ? t("man") : t("woman") }}
<!-- gj男/ -->
</div> </div>
<div class="Country">{{ ArticleDetailsA.country }}</div> <div class="Country">{{ ArticleDetailsA.country }}</div>
</div> </div>
<!-- --> <!-- -->
<div class="time"> <div class="time">
PK时间(本地时间):{{ TimestamptolocalTime(PkIDInfodata.pkTime * 1000) }} {{ t("PKTime") + TimestamptolocalTime(PkIDInfodata.pkTime * 1000) }}
<!-- gjPK时间 -->
</div> </div>
<!-- --> <!-- -->
<div class="PKinformation"> <div class="PKinformation">
@@ -32,7 +34,8 @@
alt="" alt=""
/> />
<div class="sessions-content"> <div class="sessions-content">
金币 {{t('GoldCoin') }}
<!-- gj金币 -->
<div class="gold-num">{{ ArticleDetailsA.coin }}K</div> <div class="gold-num">{{ ArticleDetailsA.coin }}K</div>
</div> </div>
</div> </div>
@@ -43,13 +46,14 @@
alt="" alt=""
/> />
<div class="sessions-content"> <div class="sessions-content">
场次 {{ t('session') }}
<div class="gold-num">{{ PkIDInfodata.pkNumber }}</div> <!-- gj场次 -->
<div class="gold-num">{{ PkIDInfodata.pkNumber+t('match') }}</div>
</div> </div>
</div> </div>
</div> </div>
<!-- --> <!-- -->
<div class="Remarks">备注{{ ArticleDetailsA.remark }}</div> <div class="Remarks">{{ t('Note')+ArticleDetailsA.remark }}</div>
</div> </div>
<!-- vs --> <!-- vs -->
<div class="messageVS"> <div class="messageVS">
@@ -70,13 +74,15 @@
background: ArticleDetailsB.sex == 1 ? '#59D8DB' : '#F3876F', background: ArticleDetailsB.sex == 1 ? '#59D8DB' : '#F3876F',
}" }"
> >
{{ ArticleDetailsB.sex == 1 ? "男" : "女" }} {{ ArticleDetailsB.sex == 1 ? t("man") : t("woman")}}
<!-- gj男/ -->
</div> </div>
<div class="Country">{{ ArticleDetailsB.country }}</div> <div class="Country">{{ ArticleDetailsB.country }}</div>
</div> </div>
<!-- --> <!-- -->
<div class="time"> <div class="time">
PK时间(本地时间):{{ TimestamptolocalTime(PkIDInfodata.pkTime * 1000) }} {{ t("PKTime") + TimestamptolocalTime(PkIDInfodata.pkTime * 1000) }}
<!-- gjPK时间 -->
</div> </div>
<!-- --> <!-- -->
<div class="PKinformation"> <div class="PKinformation">
@@ -87,7 +93,8 @@
alt="" alt=""
/> />
<div class="sessions-content"> <div class="sessions-content">
金币 {{t('GoldCoin') }}
<!-- gj金币 -->
<div class="gold-num">{{ ArticleDetailsB.coin }}K</div> <div class="gold-num">{{ ArticleDetailsB.coin }}K</div>
</div> </div>
</div> </div>
@@ -98,55 +105,70 @@
alt="" alt=""
/> />
<div class="sessions-content"> <div class="sessions-content">
场次 {{ t('session') }}
<div class="gold-num">{{ PkIDInfodata.pkNumber }}</div> <!-- gj场次 -->
<div class="gold-num">{{ PkIDInfodata.pkNumber+t('match') }}</div>
</div> </div>
</div> </div>
</div> </div>
<div class="Remarks">备注{{ ArticleDetailsB.remark }}</div> <div class="Remarks">{{ t('Note')+ArticleDetailsB.remark }}</div>
<!-- gj备注 -->
</div> </div>
<!-- btn --> <!-- btn -->
<div class="btn" v-if="PkIDInfodata.pkStatus === 0 && ArticleDetailsB.senderId != info.id"> <div
<div class="messagebtn-left" @click="agree()">同意</div> class="btn"
<div class="messagebtn-right" @click="refuse()">拒绝</div> v-if="PkIDInfodata.pkStatus === 0 && ArticleDetailsB.senderId != info.id"
>
<div class="messagebtn-left" @click="agree()">{{ t('agree') }}</div>
<!-- gj同意 -->
<div class="messagebtn-right" @click="refuse()">{{ t('Refuse') }}</div>
<!-- gj拒绝 -->
</div> </div>
<div v-if="PkIDInfodata.pkStatus === 1" class="messageHint">已同意邀请</div> <div v-if="PkIDInfodata.pkStatus === 1" class="messageHint">{{ t('HaveAgreedToTheInvitation') }}</div>
<!-- gj已同意 -->
<div v-if="PkIDInfodata.pkStatus === 2" class="messageHint">已拒绝邀请</div> <div v-if="PkIDInfodata.pkStatus === 2" class="messageHint">{{ t('HaveRefusedTheInvitation') }}</div>
<!-- gj已拒绝 -->
<div <div
v-if="PkIDInfodata.pkStatus === 0 && ArticleDetailsB.senderId == info.id" v-if="PkIDInfodata.pkStatus === 0 && ArticleDetailsB.senderId == info.id"
class="messageHint" class="messageHint"
> >
等待对方回应如果已经回应请刷新页面 {{ t('WaitForTheOtherPartyResponse') }}
<!-- gj等待对方响应 -->
</div> </div>
</div> </div>
<!-- 弹窗 --> <!-- 弹窗 -->
<!-- 同意邀请提示 --> <!-- 同意邀请提示 -->
<el-dialog v-model="agreedialog" center title="提示" width="400" align-center> <el-dialog v-model="agreedialog" center :title="t('Hint')" width="400" align-center>
<div class="dialog-content"> <div class="dialog-content">
<div class="dialog-content-text"> <div class="dialog-content-text">
<div>邀请成功后的pk不可修改不可删除请谨慎操作</div> <div>{{ t('AfterASuccessfulInvitationThePKCannotBeModifiedOrDeletedPleaseOperateWithCaution') }}</div>
<!-- gj邀请成功后PK不可修改或删除请谨慎操作 -->
</div> </div>
<!-- --> <!-- -->
<div class="myanchor-dialog-btn"> <div class="myanchor-dialog-btn">
<div class="remindermyAnchorDialogReset" @click="agreedialog = false">取消</div> <div class="remindermyAnchorDialogReset" @click="agreedialog = false">{{ t('Cancel') }}</div>
<div class="remindermyAnchorDialogConfirm" @click="agreedialogConfirm">确认</div> <!-- gj取消 -->
<div class="remindermyAnchorDialogConfirm" @click="agreedialogConfirm"> {{ t('Confirm') }}
<!-- gj确认 --></div>
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
<!-- 拒绝邀请提示 --> <!-- 拒绝邀请提示 -->
<el-dialog v-model="refusedialog" center title="提示" width="400" align-center> <el-dialog v-model="refusedialog" center :title="t('Hint')" width="400" align-center>
<!-- gj提示 -->
<div class="dialog-content"> <div class="dialog-content">
<!-- --> <!-- -->
<div class="dialog-content-text"> <div class="dialog-content-text">
<div>您确定要拒绝该邀请吗</div> <div> {{ t('AreYouSureYouWantToDeclineThisInvitation') }}
<!-- gj确定拒绝邀请 --></div>
</div> </div>
<div class="myanchor-dialog-btn"> <div class="myanchor-dialog-btn">
<div class="remindermyAnchorDialogReset" @click="refusedialog = false">取消</div> <div class="remindermyAnchorDialogReset" @click="refusedialog = false">{{ t('Cancel') }}</div>
<div class="remindermyAnchorDialogConfirm" @click="refusedialogConfirm">确认</div> <!-- gj取消 -->
<div class="remindermyAnchorDialogConfirm" @click="refusedialogConfirm"> {{ t('Confirm') }}</div>
<!-- gj确认 -->
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
@@ -169,6 +191,11 @@ import {
} from "@/utils/storage.js"; } from "@/utils/storage.js";
import { TimestamptolocalTime } from "@/utils/timeConversion.js"; import { TimestamptolocalTime } from "@/utils/timeConversion.js";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
//
import { useI18n } from "vue-i18n";
const { t } = useI18n();
window["$t"] = t;
//
const props = defineProps({ const props = defineProps({
item: { item: {
type: Object, type: Object,
@@ -188,11 +215,14 @@ function agreedialogConfirm() {
updatePkRecordStatus({ updatePkRecordStatus({
id: newValitem.value.payload.customData.id, id: newValitem.value.payload.customData.id,
pkStatus: 1, pkStatus: 1,
}).then(() => { })
ElMessage.success("同意成功"); .then(() => {
ElMessage.success(t('AgreeToSuccess'));
//gj同意成功
PkIDInfodata.value.pkStatus = 1; PkIDInfodata.value.pkStatus = 1;
agreedialog.value = false; agreedialog.value = false;
}).catch((err) => {}); })
.catch((err) => {});
} }
//确认拒绝 //确认拒绝
@@ -200,11 +230,14 @@ function refusedialogConfirm() {
updatePkRecordStatus({ updatePkRecordStatus({
id: newValitem.value.payload.customData.id, id: newValitem.value.payload.customData.id,
pkStatus: 2, pkStatus: 2,
}).then(() => { })
ElMessage.success("拒绝成功"); .then(() => {
ElMessage.success(t('RefuseSuccess'));
//gj拒绝成功
PkIDInfodata.value.pkStatus = 2; PkIDInfodata.value.pkStatus = 2;
refusedialog.value = false; refusedialog.value = false;
}).catch((err) => {}); })
.catch((err) => {});
} }
//同意邀请 //同意邀请
@@ -224,34 +257,42 @@ watch(
newValitem.value = newVal; newValitem.value = newVal;
queryPkRecord({ queryPkRecord({
id: newVal.payload.customData.id, id: newVal.payload.customData.id,
}).then((res) => { })
.then((res) => {
PkIDInfodata.value = res; PkIDInfodata.value = res;
console.log("PkIDInfodata", res); console.log("PkIDInfodata", res);
}).catch((err) => {}); })
.catch((err) => {});
pkArticleDetail({ pkArticleDetail({
id: newVal.payload.customData.pkIdA, id: newVal.payload.customData.pkIdA,
userId: info.value.id, userId: info.value.id,
from: 2, from: 2,
}).then((res) => { })
.then((res) => {
ArticleDetailsA.value = res; ArticleDetailsA.value = res;
console.log("ArticleDetailsA", res); console.log("ArticleDetailsA", res);
}).catch((err) => {}); })
.catch((err) => {});
pkArticleDetail({ pkArticleDetail({
id: newVal.payload.customData.pkIdB, id: newVal.payload.customData.pkIdB,
userId: info.value.id, userId: info.value.id,
from: 2, from: 2,
}).then((res) => { })
.then((res) => {
ArticleDetailsB.value = res; ArticleDetailsB.value = res;
console.log("ArticleDetailsB", res); console.log("ArticleDetailsB", res);
}).catch((err) => {}); })
.catch((err) => {});
}, },
{ immediate: true } { immediate: true }
); );
onMounted(() => { onMounted(() => {
getPromiseStorage("user").then((res) => { getPromiseStorage("user")
.then((res) => {
info.value = res; info.value = res;
}).catch((err) => {}); })
.catch((err) => {});
}); });
onUpdated(() => { onUpdated(() => {
// 组件更新后执行 // 组件更新后执行
@@ -370,10 +411,10 @@ watch(refname, async (newQuestion, oldQuestion) => {
display: flex; display: flex;
align-items: center; align-items: center;
color: #999; color: #999;
font-size: 16px; font-size: 14px;
} }
.gold-num { .gold-num {
font-size: 16px; font-size: 14px;
font-weight: bold; font-weight: bold;
color: #000000; color: #000000;
margin-left: 5px; margin-left: 5px;

View File

@@ -15,7 +15,8 @@
/> />
<div class="voice-icon-text" v-if="!isPlaying">'{{floor(size)}}'</div> <div class="voice-icon-text" v-if="!isPlaying">'{{floor(size)}}'</div>
<div class="voice-message-text" v-if="isPlaying"> <div class="voice-message-text" v-if="isPlaying">
播放中... {{ t('Playing') }}
<!-- gj播放中 -->
</div> </div>
</div> </div>
@@ -29,7 +30,8 @@
alt="" alt=""
/> />
<div class="voice-message-text" v-if="isPlaying"> <div class="voice-message-text" v-if="isPlaying">
播放中... {{ t('Playing') }}
<!-- gj播放中 -->
</div> </div>
</div> </div>
</div> </div>
@@ -38,6 +40,11 @@
<script setup> <script setup>
import { ref, onMounted, watch } from "vue"; import { ref, onMounted, watch } from "vue";
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 props = defineProps({ const props = defineProps({
item: { item: {
type: String, type: String,

View File

@@ -214,6 +214,7 @@ const deleteAnchor = () => {
ElMessage.success(t('DeletedSuccessfully')); ElMessage.success(t('DeletedSuccessfully'));
// gj删除成功 // gj删除成功
AnchorList(); AnchorList();
cancel();
}) })
.catch((err) => {}); .catch((err) => {});
}; };

View File

@@ -168,6 +168,7 @@
</div> </div>
<div class="notdata" v-if="selectedData == null"> <div class="notdata" v-if="selectedData == null">
<div class="chatNotDeta-text">{{ t('SelectRecordOnTheRightToViewDetailsImmediately') }}</div> <div class="chatNotDeta-text">{{ t('SelectRecordOnTheRightToViewDetailsImmediately') }}</div>
<!-- gj请先选择记录 -->
</div> </div>
</el-splitter-panel> </el-splitter-panel>
</el-splitter> </el-splitter>
@@ -314,6 +315,7 @@ onUnmounted(() => {
font-size: 20px; font-size: 20px;
color: #03aba8; color: #03aba8;
font-weight: bold; font-weight: bold;
text-align: center;
} }
.custom-style { .custom-style {
width: 90%; width: 90%;

View File

@@ -1,3 +1,250 @@
{ {
"Andorra": "Andorra" "AD": "Andorra",
"AE": "United Arab Emirates",
"AF": "Afghanistan",
"AG": "Antigua and Barbuda",
"AI": "Anguilla",
"AL": "Albania",
"AM": "Armenia",
"AO": "Angola",
"AQ": "Antarctica",
"AR": "Argentina",
"AS": "American Samoa",
"AT": "Austria",
"AU": "Australia",
"AW": "Aruba",
"AX": "Åland Islands",
"AZ": "Azerbaijan",
"BA": "Bosnia and Herzegovina",
"BB": "Barbados",
"BD": "Bangladesh",
"BE": "Belgium",
"BF": "Burkina Faso",
"BG": "Bulgaria",
"BH": "Bahrain",
"BI": "Burundi",
"BJ": "Benin",
"BL": "Saint Barthélemy",
"BM": "Bermuda",
"BN": "Brunei Darussalam",
"BO": "Bolivia",
"BQ": "Bonaire, Sint Eustatius and Saba",
"BR": "Brazil",
"BS": "Bahamas",
"BT": "Bhutan",
"BV": "Bouvet Island",
"BW": "Botswana",
"BY": "Belarus",
"BZ": "Belize",
"CA": "Canada",
"CC": "Cocos (Keeling) Islands",
"CD": "Democratic Republic of the Congo",
"CF": "Central African Republic",
"CG": "Congo",
"CH": "Switzerland",
"CI": "Côte d'Ivoire",
"CK": "Cook Islands",
"CL": "Chile",
"CM": "Cameroon",
"CN": "China",
"CO": "Colombia",
"CR": "Costa Rica",
"CU": "Cuba",
"CV": "Cabo Verde",
"CW": "Curaçao",
"CX": "Christmas Island",
"CY": "Cyprus",
"CZ": "Czech Republic",
"DE": "Germany",
"DG": "Diego Garcia",
"DJ": "Djibouti",
"DK": "Denmark",
"DM": "Dominica",
"DO": "Dominican Republic",
"DZ": "Algeria",
"EC": "Ecuador",
"EE": "Estonia",
"EG": "Egypt",
"EH": "Western Sahara",
"ER": "Eritrea",
"ES": "Spain",
"ET": "Ethiopia",
"FI": "Finland",
"FJ": "Fiji",
"FK": "Falkland Islands (Malvinas)",
"FM": "Micronesia",
"FO": "Faroe Islands",
"FR": "France",
"GA": "Gabon",
"GB": "United Kingdom",
"GD": "Grenada",
"GE": "Georgia",
"GF": "French Guiana",
"GG": "Guernsey",
"GH": "Ghana",
"GI": "Gibraltar",
"GL": "Greenland",
"GM": "Gambia",
"GN": "Guinea",
"GP": "Guadeloupe",
"GQ": "Equatorial Guinea",
"GR": "Greece",
"GS": "South Georgia and the South Sandwich Islands",
"GT": "Guatemala",
"GU": "Guam",
"GW": "Guinea-Bissau",
"GY": "Guyana",
"HK": "Hong Kong",
"HM": "Heard Island and McDonald Islands",
"HN": "Honduras",
"HR": "Croatia",
"HT": "Haiti",
"HU": "Hungary",
"ID": "Indonesia",
"IE": "Ireland",
"IL": "Israel",
"IM": "Isle of Man",
"IN": "India",
"IO": "British Indian Ocean Territory",
"IQ": "Iraq",
"IR": "Iran",
"IS": "Iceland",
"IT": "Italy",
"JE": "Jersey",
"JM": "Jamaica",
"JO": "Jordan",
"JP": "Japan",
"KE": "Kenya",
"KG": "Kyrgyzstan",
"KH": "Cambodia",
"KI": "Kiribati",
"KM": "Comoros",
"KN": "Saint Kitts and Nevis",
"KP": "North Korea",
"KR": "South Korea",
"KW": "Kuwait",
"KY": "Cayman Islands",
"KZ": "Kazakhstan",
"LA": "Lao People's Democratic Republic",
"LB": "Lebanon",
"LC": "Saint Lucia",
"LI": "Liechtenstein",
"LK": "Sri Lanka",
"LR": "Liberia",
"LS": "Lesotho",
"LT": "Lithuania",
"LU": "Luxembourg",
"LV": "Latvia",
"LY": "Libya",
"MA": "Morocco",
"MC": "Monaco",
"MD": "Moldova",
"ME": "Montenegro",
"MF": "Saint Martin",
"MG": "Madagascar",
"MH": "Marshall Islands",
"MK": "North Macedonia",
"ML": "Mali",
"MM": "Myanmar",
"MN": "Mongolia",
"MO": "Macao",
"MP": "Northern Mariana Islands",
"MQ": "Martinique",
"MR": "Mauritania",
"MS": "Montserrat",
"MT": "Malta",
"MU": "Mauritius",
"MV": "Maldives",
"MW": "Malawi",
"MX": "Mexico",
"MY": "Malaysia",
"MZ": "Mozambique",
"NA": "Namibia",
"NC": "New Caledonia",
"NE": "Niger",
"NF": "Norfolk Island",
"NG": "Nigeria",
"NI": "Nicaragua",
"NL": "Netherlands",
"NO": "Norway",
"NP": "Nepal",
"NR": "Nauru",
"NU": "Niue",
"NZ": "New Zealand",
"OM": "Oman",
"PA": "Panama",
"PE": "Peru",
"PF": "French Polynesia",
"PG": "Papua New Guinea",
"PH": "Philippines",
"PK": "Pakistan",
"PL": "Poland",
"PM": "Saint Pierre and Miquelon",
"PN": "Pitcairn",
"PR": "Puerto Rico",
"PS": "Palestine",
"PT": "Portugal",
"PW": "Palau",
"PY": "Paraguay",
"QA": "Qatar",
"RE": "Réunion",
"RO": "Romania",
"RS": "Serbia",
"RU": "Russia",
"RW": "Rwanda",
"SA": "Saudi Arabia",
"SB": "Solomon Islands",
"SC": "Seychelles",
"SD": "Sudan",
"SE": "Sweden",
"SG": "Singapore",
"SI": "Slovenia",
"SJ": "Svalbard and Jan Mayen",
"SK": "Slovakia",
"SL": "Sierra Leone",
"SM": "San Marino",
"SN": "Senegal",
"SO": "Somalia",
"SR": "Suriname",
"SS": "South Sudan",
"ST": "Sao Tome and Principe",
"SV": "El Salvador",
"SX": "Sint Maarten",
"SY": "Syria",
"SZ": "Eswatini",
"TC": "Turks and Caicos Islands",
"TD": "Chad",
"TF": "French Southern Territories",
"TG": "Togo",
"TH": "Thailand",
"TJ": "Tajikistan",
"TK": "Tokelau",
"TL": "Timor-Leste",
"TM": "Turkmenistan",
"TN": "Tunisia",
"TO": "Tonga",
"TR": "Turkey",
"TT": "Trinidad and Tobago",
"TV": "Tuvalu",
"TW": "Taiwan",
"TZ": "Tanzania",
"UA": "Ukraine",
"UG": "Uganda",
"UM": "United States Minor Outlying Islands",
"US": "United States",
"UY": "Uruguay",
"UZ": "Uzbekistan",
"VA": "Holy See",
"VC": "Saint Vincent and the Grenadines",
"VE": "Venezuela",
"VG": "Virgin Islands (British)",
"VI": "Virgin Islands (U.S.)",
"VN": "Vietnam",
"VU": "Vanuatu",
"WS": "Samoa",
"YE": "Yemen",
"YT": "Mayotte",
"ZA": "South Africa",
"ZM": "Zambia",
"ZW": "Zimbabwe"
} }

View File

@@ -47,7 +47,7 @@
"PleaseEnterYourNewEmailAddress": "Please enter your new email address", "PleaseEnterYourNewEmailAddress": "Please enter your new email address",
"Modify": "Modify", "Modify": "Modify",
"PleaseEnterTheEmailVerificationCode": "Please enter the email verification code", "PleaseEnterTheEmailVerificationCode": "Please enter the email verification code",
"GetTheVerificationCode": "Get the verification code", "GetTheVerificationCode": "verification code",
"Resend": "Resend", "Resend": "Resend",
"PleaseEnterAValidEmailAddress": "Please enter a valid email address", "PleaseEnterAValidEmailAddress": "Please enter a valid email address",
"TheModificationIsSuccessfulPleaseVerifyYourEmailInTheNewEmailAddress": "The modification is successful. Please verify your email in the new email address.", "TheModificationIsSuccessfulPleaseVerifyYourEmailInTheNewEmailAddress": "The modification is successful. Please verify your email in the new email address.",
@@ -164,6 +164,19 @@
"AddMyStreamer": "Add my streamer", "AddMyStreamer": "Add my streamer",
"ModifyMyStreamer": "Modify my streamer", "ModifyMyStreamer": "Modify my streamer",
"ConfirmTheDeletionOfThisStreamer": "Confirm the deletion of this streamer?", "ConfirmTheDeletionOfThisStreamer": "Confirm the deletion of this streamer?",
"AddedSuccessfully":"Added successfully." "AddedSuccessfully": "Added successfully.",
"Search": "Search",
"Playing": "Playing...",
"Note": "Note:",
"agree": "agree",
"Refuse": "Refuse",
"HaveAgreedToTheInvitation": "have agreed to the invitation.",
"HaveRefusedTheInvitation": "have refused the invitation.",
"WaitForTheOtherPartyResponse": "Wait for the other party's response.",
"AfterASuccessfulInvitationThePKCannotBeModifiedOrDeletedPleaseOperateWithCaution":"After a successful invitation, the pk cannot be modified or deleted. Please operate with caution!",
"AreYouSureYouWantToDeclineThisInvitation":"Are you sure you want to decline this invitation?",
"AgreeToSuccess":"Agree to success",
"RefuseSuccess":"Refuse success",
"YourAccountHasNotBeenActivatedYetAndMayBeSubjectToRestrictionsPleaseActivateItInTime":"Your account has not been activated yet and may be subject to restrictions. Please activate it in time!",
"Activate":"Activate"
} }

View File

@@ -1,5 +1,250 @@
{ {
"Andorra":"安道尔" "AD": "安道尔",
"AE": "阿拉伯联合酋长国",
"AF": "阿富汗",
"AG": "安提瓜和巴布达",
"AI": "安圭拉",
"AL": "阿尔巴尼亚",
"AM": "亚美尼亚",
"AO": "安哥拉",
"AQ": "南极洲",
"AR": "阿根廷",
"AS": "美属萨摩亚",
"AT": "奥地利",
"AU": "澳大利亚",
"AW": "阿鲁巴",
"AX": "奥兰群岛",
"AZ": "阿塞拜疆",
"BA": "波斯尼亚和黑塞哥维那",
"BB": "巴巴多斯",
"BD": "孟加拉国",
"BE": "比利时",
"BF": "布基纳法索",
"BG": "保加利亚",
"BH": "巴林",
"BI": "布隆迪",
"BJ": "贝宁",
"BL": "圣巴泰勒米",
"BM": "百慕大群岛",
"BN": "文莱达鲁萨兰国",
"BO": "玻利维亚",
"BQ": "博奈尔、圣尤斯特歇斯和萨巴",
"BR": "巴西",
"BS": "巴哈马",
"BT": "不丹",
"BV": "布韦岛",
"BW": "博茨瓦纳",
"BY": "白俄罗斯",
"BZ": "伯利兹",
"CA": "加拿大",
"CC": "科科斯(基林)群岛",
"CD": "刚果民主共和国",
"CF": "中非共和国",
"CG": "刚果共和国",
"CH": "瑞士",
"CI": "科特迪瓦",
"CK": "库克群岛",
"CL": "智利",
"CM": "喀麦隆",
"CN": "中国",
"CO": "哥伦比亚",
"CR": "哥斯达黎加",
"CU": "古巴",
"CV": "佛得角",
"CW": "库拉索",
"CX": "圣诞岛",
"CY": "塞浦路斯",
"CZ": "捷克共和国",
"DE": "德国",
"DG": "迪戈加西亚岛",
"DJ": "吉布提",
"DK": "丹麦",
"DM": "多米尼克",
"DO": "多米尼加共和国",
"DZ": "阿尔及利亚",
"EC": "厄瓜多尔",
"EE": "爱沙尼亚",
"EG": "埃及",
"EH": "西撒哈拉",
"ER": "厄立特里亚",
"ES": "西班牙",
"ET": "埃塞俄比亚",
"FI": "芬兰",
"FJ": "斐济",
"FK": "福克兰群岛",
"FM": "密克罗尼西亚",
"FO": "法罗群岛",
"FR": "法国",
"GA": "加蓬",
"GB": "英国",
"GD": "格林纳达",
"GE": "格鲁吉亚",
"GF": "法属圭亚那",
"GG": "根西岛",
"GH": "加纳",
"GI": "直布罗陀",
"GL": "格陵兰",
"GM": "冈比亚",
"GN": "几内亚",
"GP": "瓜德罗普",
"GQ": "赤道几内亚",
"GR": "希腊",
"GS": "南乔治亚和南桑德威奇群岛",
"GT": "危地马拉",
"GU": "关岛",
"GW": "几内亚比绍",
"GY": "圭亚那",
"HK": "中国香港特别行政区",
"HM": "赫德岛和麦克唐纳群岛",
"HN": "洪都拉斯",
"HR": "克罗地亚",
"HT": "海地",
"HU": "匈牙利",
"ID": "印度尼西亚",
"IE": "爱尔兰",
"IL": "以色列",
"IM": "马恩岛",
"IN": "印度",
"IO": "英属印度洋领地",
"IQ": "伊拉克",
"IR": "伊朗",
"IS": "冰岛",
"IT": "意大利",
"JE": "泽西岛",
"JM": "牙买加",
"JO": "约旦",
"JP": "日本",
"KE": "肯尼亚",
"KG": "吉尔吉斯斯坦",
"KH": "柬埔寨",
"KI": "基里巴斯",
"KM": "科摩罗",
"KN": "圣基茨和尼维斯",
"KP": "朝鲜",
"KR": "韩国",
"KW": "科威特",
"KY": "开曼群岛",
"KZ": "哈萨克斯坦",
"LA": "老挝",
"LB": "黎巴嫩",
"LC": "圣卢西亚",
"LI": "列支敦士登",
"LK": "斯里兰卡",
"LR": "利比里亚",
"LS": "莱索托",
"LT": "立陶宛",
"LU": "卢森堡",
"LV": "拉脱维亚",
"LY": "利比亚",
"MA": "摩洛哥",
"MC": "摩纳哥",
"MD": "摩尔多瓦",
"ME": "黑山",
"MF": "圣马丁",
"MG": "马达加斯加",
"MH": "马绍尔群岛",
"MK": "北马其顿",
"ML": "马里",
"MM": "缅甸",
"MN": "蒙古",
"MO": "中国澳门特别行政区",
"MP": "北马里亚纳群岛",
"MQ": "马提尼克",
"MR": "毛里塔尼亚",
"MS": "蒙特塞拉特",
"MT": "马耳他",
"MU": "毛里求斯",
"MV": "马尔代夫",
"MW": "马拉维",
"MX": "墨西哥",
"MY": "马来西亚",
"MZ": "莫桑比克",
"NA": "纳米比亚",
"NC": "新喀里多尼亚",
"NE": "尼日尔",
"NF": "诺福克岛",
"NG": "尼日利亚",
"NI": "尼加拉瓜",
"NL": "荷兰",
"NO": "挪威",
"NP": "尼泊尔",
"NR": "瑙鲁",
"NU": "纽埃",
"NZ": "新西兰",
"OM": "阿曼",
"PA": "巴拿马",
"PE": "秘鲁",
"PF": "法属玻利尼西亚",
"PG": "巴布亚新几内亚",
"PH": "菲律宾",
"PK": "巴基斯坦",
"PL": "波兰",
"PM": "圣皮埃尔和密克隆群岛",
"PN": "皮特凯恩群岛",
"PR": "波多黎各",
"PS": "巴勒斯坦",
"PT": "葡萄牙",
"PW": "帕劳",
"PY": "巴拉圭",
"QA": "卡塔尔",
"RE": "留尼汪",
"RO": "罗马尼亚",
"RS": "塞尔维亚",
"RU": "俄罗斯",
"RW": "卢旺达",
"SA": "沙特阿拉伯",
"SB": "索罗门群岛",
"SC": "塞舌尔",
"SD": "苏丹",
"SE": "瑞典",
"SG": "新加坡",
"SI": "斯洛文尼亚",
"SJ": "斯瓦尔巴和扬马延",
"SK": "斯洛伐克",
"SL": "塞拉利昂",
"SM": "圣马利诺",
"SN": "塞内加尔",
"SO": "索马里",
"SR": "苏里南",
"SS": "南苏丹",
"ST": "圣多美和普林西比",
"SV": "萨尔瓦多",
"SX": "荷属圣马丁",
"SY": "叙利亚",
"SZ": "斯威士兰",
"TC": "特克斯和凯科斯群岛",
"TD": "乍得",
"TF": "法属南部领地",
"TG": "多哥",
"TH": "泰国",
"TJ": "塔吉克斯坦",
"TK": "托克劳群岛",
"TL": "东帝汶",
"TM": "土库曼斯坦",
"TN": "突尼斯",
"TO": "汤加",
"TR": "土耳其",
"TT": "特立尼达和多巴哥",
"TV": "图瓦卢",
"TW": "台湾",
"TZ": "坦桑尼亚",
"UA": "乌克兰",
"UG": "乌干达",
"UM": "美国本土外小岛屿",
"US": "美国",
"UY": "乌拉圭",
"UZ": "乌兹别克斯坦",
"VA": "梵蒂冈",
"VC": "圣文森特",
"VE": "委内瑞拉",
"VG": "英属维尔京群岛",
"VI": "美属维尔京群岛",
"VN": "越南",
"VU": "瓦努阿图",
"WS": "萨摩亚",
"YE": "也门",
"YT": "马约特岛",
"ZA": "南非",
"ZM": "赞比亚",
"ZW": "津巴布韦"
} }

View File

@@ -164,5 +164,19 @@
"AddMyStreamer":"添加我的主播", "AddMyStreamer":"添加我的主播",
"ModifyMyStreamer":"修改我的主播", "ModifyMyStreamer":"修改我的主播",
"ConfirmTheDeletionOfThisStreamer":"确认删除该主播?", "ConfirmTheDeletionOfThisStreamer":"确认删除该主播?",
"AddedSuccessfully":"添加成功" "AddedSuccessfully":"添加成功",
"Search":"搜索",
"Playing":"播放中...",
"Note":"备注:",
"agree":"同意",
"Refuse":"拒绝",
"HaveAgreedToTheInvitation":"已同意邀请",
"HaveRefusedTheInvitation":"已拒绝邀请",
"WaitForTheOtherPartyResponse":"等待对方回应(如果已经回应请刷新页面)",
"AfterASuccessfulInvitationThePKCannotBeModifiedOrDeletedPleaseOperateWithCaution":"邀请成功后的pk不可修改不可删除请谨慎操作",
"AreYouSureYouWantToDeclineThisInvitation":" 您确定要拒绝此邀请吗?",
"AgreeToSuccess":"同意成功",
"RefuseSuccess":"拒绝成功",
"YourAccountHasNotBeenActivatedYetAndMayBeSubjectToRestrictionsPleaseActivateItInTime":"您的账号尚未激活,可能受到限制,请及时激活。",
"Activate":"激活"
} }

View File

@@ -47,7 +47,9 @@ axios.interceptors.response.use((response) => {
return Promise.reject(error) return Promise.reject(error)
}) })
// 处理headerIcon的前缀 import { translateCountryName } from './countryUtil';
// 处理headerIcon的前缀和country的翻译
function addPrefixToHeaderIcon(data) { function addPrefixToHeaderIcon(data) {
// 处理数组:递归处理每个元素 // 处理数组:递归处理每个元素
if (Array.isArray(data)) { if (Array.isArray(data)) {
@@ -66,6 +68,12 @@ function addPrefixToHeaderIcon(data) {
: value != null ? String(value) : value != null ? String(value)
: "" : ""
); );
} else if (key === 'country' && data.hasOwnProperty(key)) {
// 翻译country值
const value = data[key];
if (typeof value === 'string') {
data[key] = translateCountryName(value);
}
} else if (typeof data[key] === 'object' && data[key] !== null) { } else if (typeof data[key] === 'object' && data[key] !== null) {
// 递归处理嵌套对象或数组 // 递归处理嵌套对象或数组
addPrefixToHeaderIcon(data[key]); addPrefixToHeaderIcon(data[key]);

View File

@@ -1,260 +1,28 @@
// country-utils.js import enCountries from '@/i18n/en/country.json';
export const CountryCode = { import zhCountries from '@/i18n/zh/country.json';
AD: "安道尔",
AE: "阿拉伯联合酋长国", // 创建中文名称到国家代码的映射
AF: "阿富汗", const zhNameToCode = {};
AG: "安提瓜和巴布达", Object.entries(zhCountries).forEach(([code, zhName]) => {
AI: "安圭拉", zhNameToCode[zhName] = code;
AL: "阿尔巴尼亚", });
AM: "亚美尼亚",
AO: "安哥拉", // 获取国家名称数组value固定为中文名称label根据当前语言变化
AQ: "南极洲",
AR: "阿根廷",
AS: "美属萨摩亚",
AT: "奥地利",
AU: "澳大利亚",
AU1: "澳大利亚",
AW: "阿鲁巴",
AX: "奥兰群岛",
AZ: "阿塞拜疆",
BA: "波斯尼亚和黑塞哥维那",
BB: "巴巴多斯",
BD: "孟加拉国",
BE: "比利时",
BF: "布基纳法索",
BG: "保加利亚",
BH: "巴林",
BI: "布隆迪",
BJ: "贝宁",
BL: "圣巴泰勒米",
BM: "百慕大群岛",
BN: "文莱达鲁萨兰国",
BO: "玻利维亚",
BQ: "博奈尔、圣尤斯特歇斯和萨巴",
BR: "巴西",
BS: "巴哈马",
BT: "不丹",
BV: "布韦岛",
BW: "博茨瓦纳",
BY: "白俄罗斯",
BZ: "伯利兹",
CA: "加拿大",
CA1: "加拿大",
CC: "科科斯(基林)群岛",
CD: "刚果民主共和国",
CF: "中非共和国",
CG: "刚果共和国",
CH: "瑞士",
CI: "科特迪瓦",
CK: "库克群岛",
CL: "智利",
CM: "喀麦隆",
CN: "中国",
CO: "哥伦比亚",
CR: "哥斯达黎加",
CU: "古巴",
CV: "佛得角",
CW: "库拉索",
CX: "圣诞岛",
CY: "塞浦路斯",
CZ: "捷克共和国",
DE: "德国",
DG: "迪戈加西亚岛",
DJ: "吉布提",
DK: "丹麦",
DM: "多米尼克",
DO: "多米尼加共和国",
DZ: "阿尔及利亚",
EC: "厄瓜多尔",
EE: "爱沙尼亚",
EG: "埃及",
EH: "西撒哈拉",
ER: "厄立特里亚",
ES: "西班牙",
ET: "埃塞俄比亚",
FI: "芬兰",
FJ: "斐济",
FK: "福克兰群岛",
FM: "密克罗尼西亚",
FO: "法罗群岛",
FR: "法国",
GA: "加蓬",
GB: "英国",
GD: "格林纳达",
GE: "格鲁吉亚",
GF: "法属圭亚那",
GG: "根西岛",
GH: "加纳",
GI: "直布罗陀",
GL: "格陵兰",
GM: "冈比亚",
GN: "几内亚",
GP: "瓜德罗普",
GQ: "赤道几内亚",
GR: "希腊",
GS: "南乔治亚和南桑德威奇群岛",
GT: "危地马拉",
GU: "关岛",
GW: "几内亚比绍",
GY: "圭亚那",
HK: "中国香港特别行政区",
HM: "赫德岛和麦克唐纳群岛",
HN: "洪都拉斯",
HR: "克罗地亚",
HT: "海地",
HU: "匈牙利",
ID: "印度尼西亚",
IE: "爱尔兰",
IL: "以色列",
IM: "马恩岛",
IN: "印度",
IO: "英属印度洋领地",
IQ: "伊拉克",
IR: "伊朗",
IS: "冰岛",
IT: "意大利",
JE: "泽西岛",
JM: "牙买加",
JO: "约旦",
JP: "日本",
JP1: "日本",
KE: "肯尼亚",
KG: "吉尔吉斯斯坦",
KH: "柬埔寨",
KI: "基里巴斯",
KM: "科摩罗",
KN: "圣基茨和尼维斯",
KP: "朝鲜",
KR: "韩国",
KR1: "韩国",
KR1_UXWAUDIT: "韩国",
KW: "科威特",
KY: "开曼群岛",
KZ: "哈萨克斯坦",
LA: "老挝",
LB: "黎巴嫩",
LC: "圣卢西亚",
LI: "列支敦士登",
LK: "斯里兰卡",
LR: "利比里亚",
LS: "莱索托",
LT: "立陶宛",
LU: "卢森堡",
LV: "拉脱维亚",
LY: "利比亚",
MA: "摩洛哥",
MC: "摩纳哥",
MD: "摩尔多瓦",
ME: "黑山",
MF: "圣马丁",
MG: "马达加斯加",
MH: "马绍尔群岛",
MK: "北马其顿",
ML: "马里",
MM: "缅甸",
MN: "蒙古",
MO: "中国澳门特别行政区",
MP: "北马里亚纳群岛",
MQ: "马提尼克",
MR: "毛里塔尼亚",
MS: "蒙特塞拉特",
MT: "马耳他",
MU: "毛里求斯",
MV: "马尔代夫",
MW: "马拉维",
MX: "墨西哥",
MY: "马来西亚",
MZ: "莫桑比克",
NA: "纳米比亚",
NC: "新喀里多尼亚",
NE: "尼日尔",
NF: "诺福克岛",
NG: "尼日利亚",
NI: "尼加拉瓜",
NL: "荷兰",
NO: "挪威",
NP: "尼泊尔",
NR: "瑙鲁",
NU: "纽埃",
NZ: "新西兰",
OM: "阿曼",
PA: "巴拿马",
PE: "秘鲁",
PF: "法属玻利尼西亚",
PG: "巴布亚新几内亚",
PH: "菲律宾",
PK: "巴基斯坦",
PL: "波兰",
PM: "圣皮埃尔和密克隆群岛",
PN: "皮特凯恩群岛",
PR: "波多黎各",
PS: "巴勒斯坦",
PT: "葡萄牙",
PW: "帕劳",
PY: "巴拉圭",
QA: "卡塔尔",
RE: "留尼汪",
RO: "罗马尼亚",
RS: "塞尔维亚",
RU: "俄罗斯",
RW: "卢旺达",
SA: "沙特阿拉伯",
SB: "索罗门群岛",
SC: "塞舌尔",
SD: "苏丹",
SE: "瑞典",
SG: "新加坡",
SI: "斯洛文尼亚",
SJ: "斯瓦尔巴和扬马延",
SK: "斯洛伐克",
SL: "塞拉利昂",
SM: "圣马利诺",
SN: "塞内加尔",
SO: "索马里",
SR: "苏里南",
SS: "南苏丹",
ST: "圣多美和普林西比",
SV: "萨尔瓦多",
SX: "荷属圣马丁",
SY: "叙利亚",
SZ: "斯威士兰",
TC: "特克斯和凯科斯群岛",
TD: "乍得",
TF: "法属南部领地",
TG: "多哥",
TH: "泰国",
TJ: "塔吉克斯坦",
TK: "托克劳群岛",
TL: "东帝汶",
TM: "土库曼斯坦",
TN: "突尼斯",
TO: "汤加",
TR: "土耳其",
TT: "特立尼达和多巴哥",
TV: "图瓦卢",
TW: "台湾",
TZ: "坦桑尼亚",
UA: "乌克兰",
UG: "乌干达",
UM: "美国本土外小岛屿",
US: "美国",
UY: "乌拉圭",
UZ: "乌兹别克斯坦",
VA: "梵蒂冈",
VC: "圣文森特",
VE: "委内瑞拉",
VG: "英属维尔京群岛",
VI: "美属维尔京群岛",
VN: "越南",
VN1: "越南",
VU: "瓦努阿图",
WS: "萨摩亚",
YE: "也门",
YT: "马约特岛",
ZA: "南非",
ZM: "赞比亚",
ZW: "津巴布韦"
};
export function getCountryNamesArray() { export function getCountryNamesArray() {
return Object.entries(CountryCode).map(([code, nickname]) => ({ value: nickname, label: nickname })); const currentLanguage = localStorage.getItem('language') || 'ZH';
return Object.entries(zhCountries).map(([code, zhName]) => ({
value: zhName,
label: currentLanguage === 'ZH' ? zhName : enCountries[code]
}));
}
// 根据中文名称获取当前语言环境的翻译
export function translateCountryName(zhName) {
const currentLanguage = localStorage.getItem('language') || 'ZH';
const code = zhNameToCode[zhName];
if (!code) return zhName; // 如果没有找到对应代码,返回原中文名称
return currentLanguage === 'ZH' ? zhName : enCountries[code];
} }

View File

@@ -131,7 +131,7 @@ export function goEasySendPKMessage(data) {
let order = { let order = {
customData: customData, customData: customData,
link: "https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/pk.png", link: "https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/pk.png",
text: "PK邀请消息", text: "PK",
}; };
var customMessage = im.createCustomMessage({ var customMessage = im.createCustomMessage({

View File

@@ -30,3 +30,19 @@ export function clearStorage(key) {
window.localStorage.removeItem(key); window.localStorage.removeItem(key);
} }
} }
//存储sessionStorage
export function setSessionStorage(key, value) {
const data = typeof value === 'object' ? JSON.stringify(value) : value;
window.sessionStorage.setItem(key, data);
}
//获取sessionStorage
export function getPromiseSessionStorage(key) {
return new Promise((resolve, reject) => {
const data = window.sessionStorage.getItem(key);
try {
resolve(JSON.parse(data));
} catch {
resolve(data);
}
});
}

View File

@@ -1,11 +1,17 @@
<template> <template>
<div class="activate-email"> <div class="activate-email">
<div class="activate-email-content"> <div class="activate-email-content">
{{t('YourEmailAddressIs') + user.email + t('ItHasNotBeenActivatedYetPleaseClickTheActivationLinkInYourEmailToActivateYourAccount') }} {{
t("YourEmailAddressIs") +
user.email +
t(
"ItHasNotBeenActivatedYetPleaseClickTheActivationLinkInYourEmailToActivateYourAccount"
)
}}
<!-- gj您的邮箱是{{user.email}}尚未激活请点击激活链接中的链接激活您的账户 --> <!-- gj您的邮箱是{{user.email}}尚未激活请点击激活链接中的链接激活您的账户 -->
</div> </div>
<div class="activate-email-btn" @click="sendActivateEmail"> <div class="activate-email-btn" @click="sendActivateEmail">
{{ t('ResendTheActivationEmail') }} {{ t("ResendTheActivationEmail") }}
<!-- gj重新发送激活邮件 --> <!-- gj重新发送激活邮件 -->
</div> </div>
</div> </div>
@@ -20,11 +26,12 @@ import {
onUnmounted, // 组件销毁前执行 onUnmounted, // 组件销毁前执行
onBeforeMount, // 组件挂载前执行 onBeforeMount, // 组件挂载前执行
} from "vue"; } from "vue";
import {getPromiseStorage} from '@/utils/storage.js'; import { getPromiseStorage } from "@/utils/storage.js";
import { resendEmail } from "@/api/account"; import { resendEmail } from "@/api/account";
import { useRouter } from 'vue-router'; import { useRouter } from "vue-router";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { setLocale } from "@/i18n"; import { setLocale } from "@/i18n";
import { setSessionStorage , getStorage } from '@/utils/storage.js';
// //
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const { t } = useI18n(); const { t } = useI18n();
@@ -32,20 +39,23 @@ const language = ref(null); // 语言
window["$t"] = t; window["$t"] = t;
// //
const router = useRouter(); const router = useRouter();
const refname = ref(''); const refname = ref("");
function sendActivateEmail() { function sendActivateEmail() {
resendEmail({ resendEmail({
mailAddress: user.value.email, mailAddress: user.value.email,
type:1 type: 1,
}).then(res => {
ElMessage.success(t('TheActivationEmailHasBeenSentPleaseCheckItInTime'));
// gj激活邮件已发送请注意查收
router.push('/');
}).catch(err => {
ElMessage.error(t('TheActivationEmailSendingFailedPleaseTryAgainLater'));
// gj激活邮件发送失败请稍后再试
}) })
.then((res) => {
ElMessage.success(t("TheActivationEmailHasBeenSentPleaseCheckItInTime"));
// gj激活邮件已发送请注意查收
setSessionStorage("notActivated", true); // 存储用户信息
router.push('/nav'); // 返回上一页
})
.catch((err) => {
ElMessage.error(t("TheActivationEmailSendingFailedPleaseTryAgainLater"));
// gj激活邮件发送失败请稍后再试
});
} }
onBeforeMount(() => { onBeforeMount(() => {
@@ -66,10 +76,12 @@ watch(refname, async (newQuestion, oldQuestion) => {
}); });
const user = ref({}); const user = ref({});
onMounted(() => { onMounted(() => {
getPromiseStorage('user').then(res => { getPromiseStorage("user")
.then((res) => {
console.log(res); console.log(res);
user.value = res; user.value = res;
}).catch((err) => {}); })
.catch((err) => {});
}); });
onUpdated(() => { onUpdated(() => {
// 组件更新后执行 // 组件更新后执行
@@ -98,11 +110,11 @@ onUnmounted(() => {
} }
.activate-email-content { .activate-email-content {
font-size: 30px; font-size: 30px;
color: #4FCACD; color: #4fcacd;
font-weight: bold; font-weight: bold;
} }
.activate-email-btn { .activate-email-btn {
background-color: #4FCACD; background-color: #4fcacd;
color: #fff; color: #fff;
font-size: 20px; font-size: 20px;
padding: 10px 20px; padding: 10px 20px;

View File

@@ -102,12 +102,6 @@ const user = UserStore()
const info = ref({}) const info = ref({})
// 登录 // 登录
function EmailLogin() { function EmailLogin() {
// // 邮箱验证
// const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
// if (!emailRegex.test(refEmail.value)) {
// ElMessage.error("请输入有效的邮箱地址");
// return;
// }
// 密码验证 // 密码验证
const passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{6,16}$/; const passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{6,16}$/;
if (!passwordRegex.test(refpassword.value)) { if (!passwordRegex.test(refpassword.value)) {

View File

@@ -13,6 +13,7 @@ import { useRoute, useRouter } from "vue-router";
import { ref, watch, onMounted, onUpdated, onUnmounted, onBeforeMount } from "vue"; import { ref, watch, onMounted, onUpdated, onUnmounted, onBeforeMount } from "vue";
import { activeEmail } from "@/api/account"; import { activeEmail } from "@/api/account";
import { setLocale } from "@/i18n"; import { setLocale } from "@/i18n";
import { setStorage , getStorage,getPromiseStorage } from '@/utils/storage.js';
// //
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const { t } = useI18n(); const { t } = useI18n();

View File

@@ -64,7 +64,7 @@
<script setup> <script setup>
import { register,checkStatus,resendEmail,checkUsername} from "@/api/account"; // 导入登录接口 import { register,checkStatus,resendEmail,checkUsername} from "@/api/account"; // 导入登录接口
import { tokenStore, UserStore } from '@/stores/notice' import { tokenStore, UserStore } from '@/stores/notice'
import { setStorage , getStorage } from '@/utils/storage.js'; import { setStorage , getStorage,getPromiseStorage } from '@/utils/storage.js';
import { import {
ref, // 响应式基础 ref, // 响应式基础
watch, // 侦听器 watch, // 侦听器
@@ -110,11 +110,12 @@ function startCountdown() {
// 用户名失去焦点 // 用户名失去焦点
function userNameBlur() { function userNameBlur() {
if (userName.value.length < 6 || userName.value.length > 16 || userName.value == '' || userName.value == null) { if (userName.value.length < 2 || userName.value.length > 16 || userName.value == '' || userName.value == null) {
ElMessage.error(t('TheLengthOfAUsernameCannotBeLessThan2CannotExceed16AndCannotBeEmpty')); ElMessage.error(t('TheLengthOfAUsernameCannotBeLessThan2CannotExceed16AndCannotBeEmpty'));
// gj用户名长度不能小于2不能大于16,不能为空 // gj用户名长度不能小于2不能大于16,不能为空
return; return;
} }
checkUsername({ userName: userName.value }).then(res => { checkUsername({ userName: userName.value }).then(res => {
if (res == false) { if (res == false) {
ElMessage.error(t('TheUsernameAlreadyExists')); ElMessage.error(t('TheUsernameAlreadyExists'));
@@ -128,14 +129,9 @@ function userNameBlur() {
} }
}).catch((err) => {}); }).catch((err) => {});
} }
//下一步 //下一步
function nextStep() { function nextStep() {
//用户名验证
if (userNamebtn.value == false) {
ElMessage.error(t('TheUsernameAlreadyExists'));
// gj用户名已存在
return;
}
// 邮箱验证 // 邮箱验证
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
if (!emailRegex.test(Email.value)) { if (!emailRegex.test(Email.value)) {
@@ -153,7 +149,7 @@ function nextStep() {
} }
//用户名验证 //用户名验证
if (userName.value.length < 6 || userName.value.length > 16 || userName.value == '' || userName.value == null) { if (userName.value.length < 2 || userName.value.length > 16 || userName.value == '' || userName.value == null) {
ElMessage.error(t('TheLengthOfAUsernameCannotBeLessThan2CannotExceed16AndCannotBeEmpty')); ElMessage.error(t('TheLengthOfAUsernameCannotBeLessThan2CannotExceed16AndCannotBeEmpty'));
// gj用户名长度不能小于2不能大于16,不能为空 // gj用户名长度不能小于2不能大于16,不能为空
return; return;

View File

@@ -63,6 +63,7 @@
<script setup> <script setup>
import {forgetPassword} from "@/api/account"; // 导入登录接口 import {forgetPassword} from "@/api/account"; // 导入登录接口
import { setStorage, getStorage, getPromiseStorage } from "@/utils/storage.js";
import { import {
ref, // 响应式基础 ref, // 响应式基础
watch, // 侦听器 watch, // 侦听器

View File

@@ -62,7 +62,6 @@
@change="handleChange" @change="handleChange"
/> />
</div> </div>
<div class="Goldcoinbox-middle"></div>
<div class="Goldcoinbox-right"> <div class="Goldcoinbox-right">
<div class="Goldcoinbox-text"> <div class="Goldcoinbox-text">
{{ t("MaximumNumberOfGoldCoins") }} {{ t("MaximumNumberOfGoldCoins") }}
@@ -105,7 +104,13 @@
? '5px 5px 5px rgba(0, 0, 0, 0.5)' ? '5px 5px 5px rgba(0, 0, 0, 0.5)'
: 'none', : 'none',
}" }"
></div> >
<img class="search-img" src="../../assets/Search.png" alt="">
<div class="search-text">
{{ t("Search") }}
<!-- gj搜索 -->
</div>
</div>
<!-- 重置按钮 --> <!-- 重置按钮 -->
<div <div
class="primary" class="primary"
@@ -114,7 +119,15 @@
marginLeft: PKistodayorhall ? '0px' : '30px', marginLeft: PKistodayorhall ? '0px' : '30px',
marginTop: PKistodayorhall ? '10px' : '0px', marginTop: PKistodayorhall ? '10px' : '0px',
}" }"
></div> >
<img class="primary-img" src="../../assets/Reset.png" alt="">
<div class="primary-text">
{{ t('Reset') }}
<!-- gj重置 -->
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -1302,7 +1315,7 @@ function reset() {
// 计算滑块位置 // 计算滑块位置
const sliderPosition = computed(() => { const sliderPosition = computed(() => {
return PKistodayorhall.value ? "1%" : "13%"; return PKistodayorhall.value ? "0%" : "13%";
}); });
// 触摸事件处理 // 触摸事件处理
const touchStartX = ref(0); const touchStartX = ref(0);
@@ -1453,7 +1466,7 @@ onBeforeUnmount(() => {
margin-left: 50px; margin-left: 50px;
} }
.Goldcoinbox { .Goldcoinbox {
width: 330px; width: 360px;
display: flex; display: flex;
margin-top: -5px; margin-top: -5px;
align-items: center; align-items: center;
@@ -1466,6 +1479,7 @@ onBeforeUnmount(() => {
.Goldcoinbox-right { .Goldcoinbox-right {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
margin-left: 10px;
} }
.Goldcoinbox-text { .Goldcoinbox-text {
font-size: 10px; font-size: 10px;
@@ -1473,7 +1487,7 @@ onBeforeUnmount(() => {
} }
.Goldcoinbox-middle { .Goldcoinbox-middle {
border-bottom: 2px solid #b9b9b9; border-bottom: 2px solid #b9b9b9;
width: 5px; width: 10px;
height: 15px; height: 15px;
} }
.timebox { .timebox {
@@ -1492,17 +1506,40 @@ onBeforeUnmount(() => {
width: 80px; width: 80px;
height: 30px; height: 30px;
border-radius: 5px; border-radius: 5px;
background-image: url(../../assets/Reset.png);
background-size: 100% 100%; background-size: 100% 100%;
transition: all 0.4s ease; transition: all 0.4s ease;
border: 1px solid #03aba8;
background-color: #ffffff;
display: flex;
align-items: center;
justify-content:space-around;
}
.primary-img{
width: 22px;
height: 20px;
}
.primary-text {
font-size: 14px;
color: #03aba8;
} }
.search { .search {
width: 80px; width: 80px;
height: 30px; height: 30px;
border-radius: 5px; border-radius: 5px;
background-image: url(../../assets/Search.png);
background-size: 100% 100%; background-size: 100% 100%;
transition: all 0.4s ease; transition: all 0.4s ease;
background-image: linear-gradient(0deg, #4FCACD, #5FDBDE);
display: flex;
align-items: center;
justify-content:space-around;
}
.search-img{
width: 20px;
height: 20px;
}
.search-text {
font-size: 14px;
color: #ffffff;
} }
.search:active { .search:active {
transition: all 0.1s ease; transition: all 0.1s ease;
@@ -1663,6 +1700,7 @@ onBeforeUnmount(() => {
font-size: 20px; font-size: 20px;
color: #03aba8; color: #03aba8;
font-weight: bold; font-weight: bold;
text-align: center;
} }
.chat-name { .chat-name {
width: 100%; width: 100%;