优化代码
This commit is contained in:
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 |
@@ -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>
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -214,6 +214,7 @@ const deleteAnchor = () => {
|
|||||||
ElMessage.success(t('DeletedSuccessfully'));
|
ElMessage.success(t('DeletedSuccessfully'));
|
||||||
// gj删除成功
|
// gj删除成功
|
||||||
AnchorList();
|
AnchorList();
|
||||||
|
cancel();
|
||||||
})
|
})
|
||||||
.catch((err) => {});
|
.catch((err) => {});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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%;
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
@@ -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"
|
||||||
}
|
}
|
||||||
@@ -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": "津巴布韦"
|
||||||
}
|
}
|
||||||
@@ -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":"激活"
|
||||||
}
|
}
|
||||||
@@ -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]);
|
||||||
|
|||||||
@@ -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];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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({
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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)) {
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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, // 侦听器
|
||||||
|
|||||||
@@ -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%;
|
||||||
|
|||||||
Reference in New Issue
Block a user