语言适配加部分布局修改

This commit is contained in:
X1627315083
2024-12-23 16:23:18 +08:00
parent fd69caff94
commit 570b5f97e9
16 changed files with 505 additions and 188 deletions

View File

@@ -126,11 +126,16 @@ export default defineComponent({
<style lang="less" scoped>
.account_frontPage{
width: 100%;
height: 100%;
.account_frontPage_body{
padding-bottom: 3rem;
height: 100%;
:deep(.ant-badge){
font-size: var(--aida-fsize2);
}
:deep(.ant-tabs-content){
height: 100%;
}
:deep(.ant-tabs-tabpane){
padding: 0 5rem;
}

View File

@@ -2,42 +2,55 @@
<div class="bindPage_page">
<div class="bindPage_page_body">
<div class="bind_item">
<div class="title">Bind Wechat</div>
<div class="title">{{ $t('frontPage.BindWechat') }}</div>
<div class="box">
<div class="type">
<img v-if="!userDetail.accountExtendList?.WeChat" src="@/assets/images/loginPage/weiXinIcon.svg" alt="">
<img v-else :src="userDetail.accountExtendList?.WeChat.headImgUrl" alt="">
<div class="text">{{ userDetail.accountExtendList?.WeChat?userDetail.accountExtendList?.WeChat.name:'Unbound' }}</div>
<div class="text">{{ userDetail.accountExtendList?.WeChat?userDetail.accountExtendList?.WeChat.name:$t('frontPage.Unbound') }}</div>
</div>
<div v-if="!userDetail.accountExtendList?.WeChat" class="gallery_btn" @click="openWeiXinModel">Bind Now</div>
<div v-else class="gallery_btn" @click="ungroupWeiXinModel">Unbind</div>
<div v-if="!userDetail.accountExtendList?.WeChat" class="gallery_btn" @click="openWeiXinModel">{{ $t('frontPage.BindNow') }}</div>
<div v-if="userDetail.accountExtendList?.WeChat" class="gallery_btn" @click="ungroupWeiXinModel">{{ $t('frontPage.Unbind') }}</div>
</div>
</div>
<div class="bind_item">
<div class="title">Bind Gmail</div>
<div class="title">{{ $t('frontPage.BindGmail') }}</div>
<div class="box">
<div class="type">
<img v-if="!userDetail.accountExtendList?.Google" src="@/assets/images/loginPage/gmailIcon.svg" alt="">
<img v-else :src="userDetail.accountExtendList?.Google?.headImgUrl" alt="">
<div class="text">{{ userDetail.accountExtendList?.Google?userDetail.accountExtendList?.Google.name:'Unbound' }}</div>
<div class="text">{{ userDetail.accountExtendList?.Google?userDetail.accountExtendList?.Google.name:$t('frontPage.Unbound') }}</div>
</div>
<div class="gmail_btn">
<div v-if="!userDetail.accountExtendList?.Google" class="gallery_btn">Bind Now</div>
<div v-else class="gallery_btn" @click="ungroupGoogleModel">Unbind</div>
<div v-if="!userDetail.accountExtendList?.Google && googleLoad" class="gallery_btn">{{ $t('frontPage.BindNow') }}</div>
<div v-else class="gallery_btn loading"><i class="fi fi-br-loading"></i></div>
<div v-show="!userDetail.accountExtendList?.Google" id="g_id_bind"></div>
<div v-if="userDetail.accountExtendList?.Google" class="gallery_btn" @click="ungroupGoogleModel">{{ $t('frontPage.Unbind') }}</div>
</div>
</div>
</div>
<div class="bind_item">
<div class="title">{{ $t('frontPage.ModifyEmail') }}</div>
<div class="box">
<div class="type">
<img :src="userDetail.avatar" alt="">
<div class="text">{{ userDetail.email }}</div>
</div>
<div class="gmail_btn">
<div class="gallery_btn" @click="modifyEmail">{{ $t('frontPage.Modify') }}</div>
</div>
</div>
</div>
</div>
<div class="mark_loading" v-show="loadingShow">
<a-spin size="large" />
</div>
<weiXinModel ref="weiXinModel"></weiXinModel>
<bindEmail ref="bindEmail" type="Modify"></bindEmail>
</div>
</template>
<script>
import { defineComponent,computed,ref,reactive,nextTick,toRefs,onBeforeUnmount, onMounted} from 'vue'
import { defineComponent,computed,createVNode,reactive,nextTick,toRefs,onBeforeUnmount, onMounted} from 'vue'
import { Https } from "@/tool/https";
import { Modal,message } from 'ant-design-vue';
import { useStore } from "vuex";
@@ -45,23 +58,28 @@ import weiXinModel from "@/component/LoginPage/weiXinModel.vue";
import { useRoute } from 'vue-router';
import { useRouter } from 'vue-router';
import { useI18n } from 'vue-i18n'
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
import bindEmail from "@/component/HomePage/bindEmail.vue";
export default defineComponent({
components:{
weiXinModel
weiXinModel,bindEmail
},
setup() {
const route = useRoute();
const router = useRouter();
const t = useI18n().t;
const store = useStore();
let accountHomeData = reactive({
router:null,
loadingShow:false,
googleLoad:false,
userDetail:computed(()=>{
return store.state.UserHabit.userDetail
})
})
let bindPageDom = reactive({
weiXinModel:null
weiXinModel:null,
bindEmail:null,
})
let data = reactive({
scriptSrc:'https://accounts.google.com/gsi/client',
@@ -88,7 +106,7 @@ export default defineComponent({
}
const ungroupWeiXinModel = ()=>{
Https.axiosGet(Https.httpUrls.unbindWeChat,).then((rv)=>{
message.success('Successful discharge');
message.success(t('frontPage.jsContent1'));
let value = {
accountExtendList:{
WeChat:undefined,
@@ -107,11 +125,14 @@ export default defineComponent({
}
}
store.commit("upUserDetail", value)
message.success('Successful discharge');
message.success(t('frontPage.jsContent1'));
})
}
const modifyEmail = ()=>{
bindPageDom.bindEmail.init()
}
onMounted(async ()=>{
let GOOGLE_CLIENT_ID = '194770296147-njd68pm7tnapgonkj2h48mhf63n15n3f.apps.googleusercontent.com'
var existingScript = document.querySelector(`script[src="${data.scriptSrc}"]`);
if(!existingScript){
@@ -119,8 +140,22 @@ export default defineComponent({
const script = document.createElement("script");
script.src = data.scriptSrc
script.onload=()=>{
accountHomeData.googleLoad = true
resolve()
}
script.onerror = ()=>{
Modal.confirm({
title: t('frontPage.jsContent2'),
icon: createVNode(ExclamationCircleOutlined),
okText: 'Yes',
cancelText: 'No',
mask:false,
centered:true,
onOk() {
}
});
accountHomeData.googleLoad = true
}
document.body.appendChild(script);
})
}
@@ -154,6 +189,7 @@ export default defineComponent({
openWeiXinModel,
ungroupGoogleModel,
ungroupWeiXinModel,
modifyEmail,
}
},
data(){
@@ -165,6 +201,8 @@ export default defineComponent({
</script>
<style lang="less" scoped>
.bindPage_page{
height: 100%;
overflow-y: auto;
.bindPage_page_body{
.bind_item{
margin-bottom: 4rem;
@@ -194,6 +232,25 @@ export default defineComponent({
font-size: 1.8rem;
}
}
.gallery_btn{
&.loading{
width: 10rem;
i{
&::before{
display: inline-block;
animation: loading 1s linear infinite;
@keyframes loading {
from{
transform: rotate(0deg);
}
to{
transform: rotate(360deg);
}
}
}
}
}
}
>.gmail_btn{
position: relative;
#g_id_bind{

View File

@@ -3,35 +3,34 @@
<div v-if="userDetail.status != 'canceled'">
<div class="cancel_box_item">
<div class="modal_title_text">
<div>What is your reason for cancelling AiDA?</div>
<div>{{ $t('cancelRenewal.cancelling') }}</div>
</div>
<textarea v-model="textareaValue" placeholder="Share your feedback here..."></textarea>
</div>
<div class="cancel_box_item cancel_box_item2">
<div class="modal_title_text">
<div>Youre about to cancel your subscription</div>
<div>{{ $t('cancelRenewal.subscription') }}</div>
<div>
<i class="fi fi-sr-circle-xmark"></i>
<div class="modal_title_text_assistant">You will loose all your date</div>
<div class="modal_title_text_assistant">{{ $t('cancelRenewal.looseDate') }}</div>
</div>
<div>
<i class="fi fi-sr-circle-xmark"></i>
<div class="modal_title_text_assistant">You will loose your settings and customizations</div>
<div class="modal_title_text_assistant">{{ $t('cancelRenewal.looseCustomizations') }}</div>
</div>
</div>
<div class="tips">
<i class="fi fi-sr-triangle-warning"></i>
<div>Dont worry! The data you have in AiDA will be
safe.</div>
<div>{{ $t('cancelRenewal.DonWorry') }}</div>
</div>
<div class="button_box">
<div class="gallery_btn white" @click="subscribe">Continue to renew</div>
<div class="gallery_btn" @click="cancelSubscription">Yescancel it</div>
<div class="gallery_btn white" @click="subscribe">{{ $t('cancelRenewal.Continue') }}</div>
<div class="gallery_btn" @click="cancelSubscription">{{ $t('cancelRenewal.cancel') }}</div>
</div>
</div>
</div>
<div v-else class="no_renewal">
There are no subscription plans with automatic renewal.
{{ $t('cancelRenewal.subscriptionRenewal') }}
</div>
<div class="mark_loading" v-show="isShowMark">
<a-spin size="large" />

View File

@@ -96,6 +96,13 @@ export default defineComponent({
dataIndex: "id",
key: "id",
fixed: "left",
},
{
title: 'User Name',
align: "center",
width: 100,
dataIndex: "username",
key: "username",
},
{
title: 'Create Time',
@@ -112,13 +119,6 @@ export default defineComponent({
dataIndex: "status",
key: "status",
},{
title: 'Updata Time',
align: "center",
width: 200,
dataIndex: "updateTime",
key: "updateTime",
},{
title: 'Total income',
align: "center",
@@ -135,6 +135,13 @@ export default defineComponent({
dataIndex: "monthlyEarnings",
key: "monthlyEarnings",
openType:'all',
},{
title: 'Unpaid amount',
align: "center",
ellipsis: true,
width: 100,
dataIndex: "unpaidEarnings",
key: "unpaidEarnings",
},{
title: 'Invitation Link',
align: "center",
@@ -143,12 +150,12 @@ export default defineComponent({
dataIndex: "link",
key: "link",
},{
title: 'Unpaid amount',
title: 'Updata Time',
align: "center",
ellipsis: true,
width: 100,
dataIndex: "unpaidEarnings",
key: "unpaidEarnings",
width: 200,
dataIndex: "updateTime",
key: "updateTime",
},
{
title: 'Operations',
@@ -263,7 +270,7 @@ export default defineComponent({
};
Https.axiosPost(Https.httpUrls.affiliateList, data).then(
(rv: any) => {
this.collectionList = rv.records;
this.collectionList = rv.content;
this.total=rv.total
}
);

View File

@@ -15,6 +15,16 @@
:destroyOnClose="true"
:zIndex="9999"
>
<div class="generalModel_btn" v-if="type == 'Modify'">
<div class="generalModel_closeIcon" @click.stop="cancelDsign()">
<!-- <i class="fi fi-rr-cross-small"></i> -->
<svg width="46" height="46" viewBox="0 0 46 46" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="23" cy="23" r="23" fill="white" fill-opacity="0.3"/>
<rect x="32.5063" y="12" width="3" height="29" rx="1.5" transform="rotate(45 32.5063 12)" fill="white"/>
<rect x="34.6274" y="32.5059" width="3" height="29" rx="1.5" transform="rotate(135 34.6274 32.5059)" fill="white"/>
</svg>
</div>
</div>
<div class="login_page">
<div class="page_content">
<!-- 账号密码和邮箱登录 start-->
@@ -27,7 +37,8 @@
'login_active',
]"
>
Bind Email
<span v-if="type == 'Modify'">Modify Email</span>
<span v-else>Bind Email</span>
</div>
</div>
<!-- 账号密码登录 start -->
@@ -84,7 +95,8 @@
:state="emailStap"
@click="submitPerLogin()"
>
Bind Email
<span v-if="type == 'Modify'">Modify Email</span>
<span v-else>Bind Email</span>
</div>
</div>
<!-- 账号密码登录 end -->
@@ -114,6 +126,7 @@ export default defineComponent({
components: {
VerificationCodeInput,
},
props:['type'],
setup(){
let timer:any = 0;
const {locale} = useI18n()

View File

@@ -27,7 +27,7 @@
</div>
<div class="renewContent">
<div class="generalModelTitle">
Select The Best Plan For Your Needs
{{ $t('Renew.title') }}
</div>
<div class="renew_detail">
<div class="name generalModelTitle">{{ current.title }}</div>
@@ -39,16 +39,16 @@
<div class="type" v-if="current.typeList.length > 1">
<label>
<input name="pric" type="radio" value="monthly" v-model="current.type" @change="setPricType('monthly')">
Monthly
{{ $t('Renew.Monthly') }}
</label>
<label>
<input name="pric" type="radio" value="year" v-model="current.type" @change="setPricType('year')">
Yearly
{{ $t('Renew.Yearly') }}
</label>
</div>
<div class="info">{{ current.info }}</div>
</div>
<div class="gallery_btn gallery_btn_radius" @click="payment">Subscribe Now</div>
<div class="gallery_btn gallery_btn_radius" @click="payment">{{ $t('Renew.SubscribeNow') }}</div>
</div>
<div
class="login_footer_item_text"
@@ -76,6 +76,7 @@ import { defineComponent,ref,reactive,toRefs ,onMounted} from "vue";
import { message } from "ant-design-vue";
import payMethod from "@/component/Pay/payMethod.vue";
import { useStore } from "vuex";
import { useI18n } from "vue-i18n";
const md5 = require("md5");
export default defineComponent({
components: {
@@ -83,6 +84,7 @@ export default defineComponent({
},
setup(){
const store = useStore();
const {t} = useI18n()
let renew = reactive({
renewModel:false,
renewModelMask:true,
@@ -90,14 +92,14 @@ export default defineComponent({
})
let renewData = reactive({
personage:{
title:'Personal version',
title:t('Renew.PersonalVersion'),
price:{
monthly:'500',
year:'5,000',
},
unit:{
monthly:'HKD / Month',
year:'HKD / Year',
monthly:t('Renew.HKDMonth'),
year:t('Renew.HKDYear'),
},
type:'monthly',
typeList:['monthly','year'],

View File

@@ -27,10 +27,10 @@
</div>
<div class="payMethodContent">
<div class="generalModelTitle">
Purchase points
{{ $t('upgradePlan.PurchasePoints') }}
</div>
<div class="generalModelInfo">
select a payment method
{{ $t('upgradePlan.paymentmethod') }}
</div>
<div class="payMethod_list">
<label class="payMethod_item">
@@ -66,8 +66,8 @@
</label>
</div>
<div class="payMethod_payAffirm_btn">
<div class="gallery_btn white" @click="cancelDsign">Cancel</div>
<div class="gallery_btn" @click="payAffirm">Payment</div>
<div class="gallery_btn white" @click="cancelDsign">{{ $t('upgradePlan.Cancel') }}</div>
<div class="gallery_btn" @click="payAffirm">{{ $t('upgradePlan.Payment') }}</div>
</div>
</div>

View File

@@ -1,21 +1,17 @@
<template>
<div class="signUp" v-if="signUp">
<div class="signUp">
<div class="selectSignUp" v-show="!isSelectSignUp">
<div class="back" @click="close">
&lt; BACK
</div>
<div class="title">Our Advantages</div>
<div class="introduce"><span @click="()=>isSelectSignUp=true">LEARN MORE ALL OUR PRODUCT FEATURES</span></div>
<div class="gallery_list product_list">
<div class="gallery_item" v-for="item in productList" :key="item">
<div class="product_signUp_box">
<div class="title">{{ item.title }}</div>
<div class="info" v-if="item.title != '------------------'">{{ item.info }}</div>
<div class="info" v-else>-----</div>
<div class="info">{{ item.info }}</div>
<div class="detail">{{ item.detail }}</div>
<div class="highlight" v-if="item.highlight">{{ item.highlight }}</div>
<div class="gallery_btn gallery_btn_radius" v-if="item.title != '------------------'" :class="{active:item.title == '------------------'}" @click="createAccount">Create account</div>
<div class="gallery_btn gallery_btn_radius" v-else :class="{active:item.title == '------------------'}" @click="createAccount">Contact us</div>
<div class="gallery_btn gallery_btn_radius" v-if="item.info != '/'" @click="createAccount">Create account</div>
<a class="gallery_btn gallery_btn_radius" v-else href="mailto:info@code-create.com.hk">Contact us</a>
</div>
<ul class="product_detail">
<li v-for="detailItem in item.detailList">{{ detailItem }}</li>
@@ -35,6 +31,7 @@
</div>
</div>
<div class="gallery_btn" style="width: 20rem;" @click="()=>isSelectSignUp=false">Create account</div>
<!-- <div class="gallery_btn" v-else style="width: 20rem;" @click="()=>isSelectSignUp=false">Contact us</div> -->
</div>
<registerModel ref="registerModel"></registerModel>
</div>
@@ -54,7 +51,6 @@
registerModel:null
})
let data = reactive({
signUp:false,
isSelectSignUp:false,
productList:[
{
@@ -70,59 +66,33 @@
'Support monthly/annual payment options',
'Suitable for individual creators and freelance designers to use'
]
},
{
title:"------------------",
info:"--- / Year",
detail:"---------------------------------------------",
// highlight:"---------------",
},{
title:"Education Edition",
info:"/",
detail:"Multi user management system for universities",
highlight:"",
detailList:[
'---------------------------------------',
'---------------------------------------',
'---------------------------------------',
'---------------------------------------',
'---------------------------------------',
'Multi user management system for universities',
'Credit limits are shared across the entire school',
'AI assisted design teaching function',
'Support sketch creativity and design inspiration teaching',
'Basic 3D design functions',
]
},{
title:"------------------",
info:"--- / Year",
detail:"---------------------------------------------",
// highlight:"---------------",
title:"Enterprise Edition",
info:"/",
detail:"Enterprise level multi person collaboration system",
highlight:"",
detailList:[
'---------------------------------------',
'---------------------------------------',
'---------------------------------------',
'---------------------------------------',
'---------------------------------------',
'Enterprise level multi person collaboration system',
'Internal Credit Sharing within Enterprises',
'Brand DNA management system, customizable brand Exclusive design preferences',
'Cloud based design generation and management',
'Complete 3D design function, supporting high-definition printing output, professional plate making, and 3D rendering of renderings',
'Enterprise level data security assurance',
'Suitable for fashion design teams and brands to use',
]
},
// {
// title:"Education Edition",
// info:"XXX / Year",
// detail:"Multi user management system for universities",
// highlight:"Free 5-day trial",
// detailList:[
// 'Multi user management system for universities',
// 'Credit limits are shared across the entire school',
// 'AI assisted design teaching function',
// 'Support sketch creativity and design inspiration teaching',
// 'Basic 3D design functions',
// ]
// },{
// title:"Enterprise Edition",
// info:"XXX / Year",
// detail:"Enterprise level multi person collaboration system",
// highlight:"Free 5-day trial",
// detailList:[
// 'Enterprise level multi person collaboration system',
// 'Internal Credit Sharing within Enterprises',
// 'Brand DNA management system, customizable brand Exclusive design preferences',
// 'Cloud based design generation and management',
// 'Complete 3D design function, supporting high-definition printing output, professional plate making, and 3D rendering of renderings',
// 'Enterprise level data security assurance',
// 'Suitable for fashion design teams and brands to use',
// ]
// },
],
introductList:[
{
@@ -152,12 +122,7 @@
},
]
})
const init = ()=>{
data.signUp = true
}
const close = ()=>{
data.signUp = false
emit('close')
}
const createAccount = ()=>{
if(window.innerWidth < 768){
@@ -171,7 +136,6 @@
return {
...toRefs(dom),
...toRefs(data),
init,
close,
createAccount,
}

View File

@@ -19,6 +19,7 @@ export default {
SentTo:'发送',
Resend:'重发',
Credits:'积分',
SubscribeNow:'立即订阅',
TaskList:'任务列表',
ViewOrders:'查询订单',
jsContent1:'邮箱格式不正确',
@@ -105,6 +106,8 @@ export default {
payment:'选择付款方式',
Cancel:'取消',
Payment:'付款',
PurchasePoints:'购买',
paymentmethod:'请选择付款方式',
policy1:'我承认我已阅读并同意',
policy2:'条款和条件',
policy3:'(包括服务范围)及',
@@ -598,7 +601,7 @@ export default {
//account首页
myInfor:'我的信息',
bindWeChat:'绑定',
cancel:'订阅',
cancel:'取消订阅',
//编辑个人信息页
userName:'用户名',
@@ -619,6 +622,36 @@ export default {
hisWorks:'他的作品',
works:'作品',
},
frontPage:{
BindWechat:'绑定微信',
Unbound:'未绑定',
BindNow:'绑定',
Unbind:'取消绑定',
BindGmail:'绑定谷歌',
ModifyEmail:'修改邮箱',
Modify:'修改',
jsContent1:'取消绑定成功',
jsContent2:'当前网络无法加载谷歌',
},
Renew:{
title:'根据您的需求选择最佳计划',
Monthly:'月',
Yearly:'年',
SubscribeNow:'立即订阅',
PersonalVersion:'个人版',
HKDMonth:'HKD / 月',
HKDYear:'HKD / 年',
},
cancelRenewal:{
cancelling:'您取消AiDA的原因是什么',
subscription:'您即将取消订阅',
looseDate:'你将失去所有功能',
looseCustomizations:'你将丢失你的设置和自定义',
DonWorry:'别担心!您在 AiDA 中的数据是安全的.',
Continue:'继续续订',
cancel:'是的,取消',
subscriptionRenewal:'没有自动续订的订阅计划.',
},
guide:{
guide1:"在<strong>工作空间</strong>中,您可以个性化您的设计设置,包括选择适用于男装或女装的设计,以及选择用于创作的人体模型。",
guide2:"选择您要设计的服装性别。",

View File

@@ -19,6 +19,7 @@ export default {
SentTo:'Sent to',
Resend:'Resend',
Credits:'Credits',
SubscribeNow:'Subscribe now',
TaskList:'Task List',
ViewOrders:'View Orders',
jsContent1:'The email format is incorrect',
@@ -105,6 +106,8 @@ export default {
payment:'Select payment method',
Cancel:'Cancel',
Payment:'Payment',
PurchasePoints:'Purchase points',
paymentmethod:'select a payment method',
policy1:'I acknowledge that I have read, understand, and agree with the ',
policy2:'Terms and Conditions',
policy3:' (including the Scope of service) and the ',
@@ -618,6 +621,36 @@ export default {
hisWorks:'His works',
works:'Works',
},
frontPage:{
BindWechat:'Bind Wechat',
Unbound:'Unbound',
BindNow:'Bind Now',
Unbind:'Unbind',
BindGmail:'Bind Gmail',
ModifyEmail:'Modify Email',
Modify:'Modify',
jsContent1:'Successful discharge',
jsContent2:'The current network cannot load Google',
},
Renew:{
title:'Select The Best Plan For Your Needs',
Monthly:'Monthly',
Yearly:'Yearly',
SubscribeNow:'Subscribe Now',
PersonalVersion:'Personal version',
HKDMonth:'HKD / Month',
HKDYear:'HKD / Year',
},
cancelRenewal:{
cancelling:'What is your reason for cancelling AiDA?',
subscription:'Youre about to cancel your subscription',
looseDate:'You will loose all your date',
looseCustomizations:'You will loose your settings and customizations',
DonWorry:'Dont worry! The data you have in AiDA will be safe.',
Continue:'Continue to renew',
cancel:'Yescancel it',
subscriptionRenewal:'There are no subscription plans with automatic renewal.',
},
createSlogan:{
title:'Create Slogan',
Color:'Color',

View File

@@ -23,6 +23,12 @@ const routes: Array<RouteRecordRaw> = [
meta:{enter:'all',},
component: _import('LoginPage')
},
{
path: '/register',
name: 'register',
meta:{enter:'all',},
component: _import('Register')
},
// {
// path: '/register',
// name: 'register',

View File

@@ -92,7 +92,7 @@
<!-- <i @click="Assignment" class="fi fi-rr-gift" title="Assignment"></i> -->
<i @click="UpgradePlan" title="Purchase" class="fi fi-rr-shop"></i>
</div>
<div v-if="userDetail.systemUser == 0 || userDetail.systemUser == 3" class="gallery_btn" style="margin-left: 3rem;" @click="subscribe">Subscribe now</div>
<div v-if="userDetail.systemUser == 0 || userDetail.systemUser != 3" class="gallery_btn" style="margin-left: 3rem;" @click="subscribe">{{$t('Header.SubscribeNow')}}</div>
<div v-else style="width: 30rem;"></div>
</div>
<navRouter :routerList="navRouterList"></navRouter>

View File

@@ -1,5 +1,5 @@
<template>
<div class="homeRecommend_max" ref="homeRecommendMax">
<div class="homeRecommend_max">
<header class="homeRecommend_heade">
<div class="homeRecommend_right_content">
<div class="homeRecommend_user_content">
@@ -8,26 +8,9 @@
@click="turnToNewPage('https://www.aidlab.hk/en/')"
src="@/assets/images/loginPage/aida_logo.png"
/>
<div
class="login_footer_item_text"
@click="turnToWindow(
'https://code-create.com.hk/aida-terms-and-conditions/'
)"
>
Terms&Conditions
</div>
<div
class="login_footer_item_text"
@click="turnToWindow(
'https://code-create.com.hk/aida-subscription-agreement/'
)"
>
Privacy Policy
</div>
</div>
</div>
<div class="homeRecommend_right">
<a class="gallery_btn" v-if="userDetail.systemUser == 0" href="https://code-create.com.hk/aida/" target="_blank">Upgrade to an official user</a>
<div class="gallery_btn" v-if="userDetail.systemUser == 1 && !isMoblie" @click="goHome">Home</div>
<div class="gallery_btn white" v-if="userDetail.systemUser != -1" @click="logout">log off</div>
</div>
@@ -36,7 +19,6 @@
<div class="gallery_btn white" @click="setRegister">Sign up</div>
</div>
</header>
<signUp ref="signUp" @close="signUpClose"></signUp>
<div class="homeRecommend_content_body">
<div class="homeRecommend_content_body_recommend">
<img src="@/assets/images/homePage/home-bg.png">
@@ -45,12 +27,6 @@
<h1>AiDA</h1>
<h3>bloom your creativity</h3>
</div>
<div class="content_body_recommend_center_btn">
<div @click="setRegister" class="gallery_btn white" style="border: none; margin-right: 2rem;" >SUBSCRIBE NOW</div>
<div @click="setRegister" class="gallery_btn white" style="border: none;" >START TRIAL</div>
<!-- <a class="gallery_btn white" style="border: none;" href="https://code-create.com.hk/aida/" target="_blank">SUBSCRIBE NOW</a>
<a class="gallery_btn white" style="border: none;" href="https://code-create.com.hk/aida-trial/" target="_blank">START TRIAL</a> -->
</div>
</div>
</div>
<Works :isScroll="false"></Works>
@@ -77,21 +53,17 @@ import { useI18n } from "vue-i18n";
import { useRouter } from 'vue-router';
import { gsap, TweenMax } from "gsap";
import { ScrollTrigger } from "gsap/ScrollTrigger";
import signUp from '@/component/mainPage/signUp/index.vue'
export default defineComponent({
components: {
VerificationCodeInput,
Habit,
Works,
signUp,
},
setup(){
const store = useStore();
const router = useRouter();
let registerModel = ref()
let data = reactive({
homeRecommendMax:null,
signUp:null
})
let isMoblie = ref(false)
let userDetail = computed(()=>{
@@ -100,13 +72,6 @@ export default defineComponent({
let setLogin = ()=>{
router.push("/login");
}
let setRegister = () =>{
data.signUp.init()
data.homeRecommendMax.classList.add('openSignUp')
}
let signUpClose = ()=>{
data.homeRecommendMax.classList.remove('openSignUp')
}
let setAdminUp = ()=>{
let scrollDom = document.querySelector('.homeRecommend_content_body')
scrollDom.scrollTo({
@@ -140,6 +105,9 @@ export default defineComponent({
},500)
}
const setRegister = ()=>{
router.push('/register');
}
onMounted(()=>{
window.addEventListener('resize',updataIsMoblie)
})
@@ -151,12 +119,11 @@ export default defineComponent({
userDetail,
setLogin,
registerModel,
setRegister,
signUpClose,
setAdminUp,
logout,
goHome,
isMoblie,
setRegister,
}
},
data() {
@@ -222,21 +189,6 @@ export default defineComponent({
.homeRecommend_content_body{
flex: 1;
}
&.openSignUp{
.homeRecommend_heade{
position: relative;
background: #fff !important;
.login_footer_item_text{
display: block;
}
}
.homeRecommend_content_body{
display: none;
}
.homeRecommend_content_adminTop{
display: none;
}
}
}
.homeRecommend_heade {
display: flex;
@@ -354,11 +306,7 @@ export default defineComponent({
font-size: 6rem;
}
}
.content_body_recommend_center_btn{
a:nth-child(1){
margin-right: 3rem;
}
}
}
}
}

View File

@@ -115,7 +115,7 @@
)"
@dragstart="dragstart($event, index)"
@dragover.prevent
@drop="dragDrop($event, index)">
@drop="dragDrop($event, index,likeDesignCollectionList)">
<div class="content_img_flex">
<img class="content_img" :src="design.designOutfitUrl"
:key="design.designOutfitUrl" />
@@ -133,7 +133,7 @@
</div>
</div>
<!-- </draggable> -->
<div class="content_img_block" :style="collStyle" v-for="(
<div class="content_img_block" :style="collStyle" draggable v-for="(
design, index
) in designCollectionList" :key="design?.designItemId">
<div class="content_img_flex"
@@ -144,8 +144,10 @@
index,
designCollectionList,
'dislike'
)
">
)"
@dragstart="dragstart($event, index)"
@dragover.prevent
@drop="dragDrop($event, index,designCollectionList)">
<img class="content_img" :src="design.designOutfitUrl" />
</div>
<div class="icon iconfont icon-jushoucang icon_like" :class="[driver__.driver?index == 0?driver__.index == 32?'Guide_img showEvents':'':'':'']" @click.stop="
@@ -155,6 +157,13 @@
)
">
</div>
<i class="fi fi-rr-trash icon_delete" @click.stop="
deleteDesignCollection(
designCollectionList,
index
)
">
</i>
</div>
</div>
@@ -278,10 +287,8 @@ export default defineComponent({
}
},
activated() {
console.log('Home component activated');
},
deactivated() {
console.log('Home component deactivated');
},
setup(props,{emit}) {
const store = useStore();
@@ -597,9 +604,10 @@ export default defineComponent({
this.dragIdx = index
},
dragDrop (e:any, index:any) {
let _teams = this.likeDesignCollectionList //将hotteams存起来
dragDrop (e:any, index:any,list:any) {
let _teams = list //将hotteams存起来
let _dragitem = _teams[this.dragIdx] //将被拖拽的那条数据存起来
if(!_dragitem)return
_teams.splice(this.dragIdx, 1) //删除被拖拽的那条数据
_teams.splice(index, 0, _dragitem) //将被拖拽的那条数据放到数组中指定的位置
},
@@ -953,7 +961,9 @@ export default defineComponent({
});
return colorBoards;
},
deleteDesignCollection(list:any,index:any){
list.splice(index,1)
},
likeDesignCollection(design: any, index: any) {
let data = {
designItemId: design.designItemId,
@@ -1586,7 +1596,7 @@ export default defineComponent({
vertical-align: top;
flex-shrink: 0;
max-height: 100%;
&:hover .icon_like {
&:hover .icon_like,&:hover .icon_delete {
display: block;
}
@@ -1604,7 +1614,7 @@ export default defineComponent({
}
&.active{
.icon_like{
.icon_like,.icon_delete{
display: block;
}
.content_img_flex {
@@ -1612,12 +1622,14 @@ export default defineComponent({
}
}
.content_img {
max-width: 100%;
max-height: 100%;
// max-width: 100%;
width: 100%;
height: 100%;
// max-height: 100%;
object-fit: contain;
}
.icon_like {
.icon_like,.icon_delete {
font-size: 2.4rem;
top: 1rem;
right: 1rem;
@@ -1625,7 +1637,9 @@ export default defineComponent({
cursor: pointer;
display: none;
}
.icon_delete{
top: 5rem;
}
.icon-jushoucang {
color: #000;
}

View File

@@ -16,7 +16,7 @@
'login_active',
]"
>
Log on to AiDA 3.1
Log on to AiDA 3.0
</div>
</div>
<!-- 账号密码登录 start -->

236
src/views/Register.vue Normal file
View File

@@ -0,0 +1,236 @@
<template>
<div class="homeRecommend_max openSignUp">
<header class="homeRecommend_heade">
<div class="homeRecommend_right_content">
<div class="homeRecommend_user_content">
<img
class="homeRecommend_logo"
@click="turnToNewPage('https://www.aidlab.hk/en/')"
src="@/assets/images/loginPage/aida_logo.png"
/>
<div
class="login_footer_item_text"
@click="turnToWindow(
'https://code-create.com.hk/aida-terms-and-conditions/'
)"
>
Terms&Conditions
</div>
<div
class="login_footer_item_text"
@click="turnToWindow(
'https://code-create.com.hk/aida-subscription-agreement/'
)"
>
Privacy Policy
</div>
</div>
</div>
<div class="homeRecommend_right">
<div class="gallery_btn" v-if="userDetail.systemUser == 1 && !isMoblie" @click="goHome">Home</div>
<div class="gallery_btn white" v-if="userDetail.systemUser != -1" @click="logout">log off</div>
</div>
<div class="homeRecommend_right" v-if="userDetail.systemUser == -1">
<div class="gallery_btn" @click="setLogin">Login</div>
</div>
</header>
<signUp ref="signUp" @close="signUpClose"></signUp>
</div>
</template>
<script >
import { defineComponent, toRefs, reactive, ref , nextTick,computed, onMounted, onBeforeUnmount } from "vue";
import { setCookie, getCookie, WriteCookie,clonAllCookie } from "@/tool/cookie";
import { Https } from "@/tool/https";
import { useStore } from "vuex";
import { useRouter } from 'vue-router';
import signUp from '@/component/mainPage/signUp/index.vue'
export default defineComponent({
components: {
signUp,
},
setup(){
const store = useStore();
const router = useRouter();
let registerModel = ref()
let data = reactive({
homeRecommendMax:null,
signUp:null
})
let isMoblie = ref(false)
let userDetail = computed(()=>{
return store.state.UserHabit.userDetail
})
let setLogin = ()=>{
router.push("/login");
}
let logout = ()=>{
let userInfo = store.state.UserHabit.userDetail;
let data = {
userId: userInfo?.userId,
};
store.commit('createDetail')
if(!data.userId) return
Https.axiosPost(Https.httpUrls.accountLogout, data).then((rv) => {
clonAllCookie();
});
}
let goHome = ()=>{
router.push('/home');
}
let time
let updataIsMoblie = ()=>{
clearTimeout(time)
time = setTimeout(()=>{
if(window.innerWidth < 768){
isMoblie.value = true
}else{
isMoblie.value = false
}
},500)
}
onMounted(()=>{
window.addEventListener('resize',updataIsMoblie)
})
onBeforeUnmount(() => {
window.removeEventListener('resize', updataIsMoblie);
});
return {
...toRefs(data),
userDetail,
setLogin,
registerModel,
logout,
goHome,
isMoblie,
}
},
data() {
return {
};
},
watch: {
// credits.value(newVal,oldVal){
// console.log(String(newVal).length);
// }
},
mounted() {
},
methods: {
turnToNewPage(url) {
window.open(url);
},
turnToWindow(url) {
window.open(url);
},
},
});
</script>
<style lang="less" scoped>
.homeRecommend_max{
position: relative;
display: flex;
height: 100%;
flex-direction: column;
&.openSignUp{
.homeRecommend_heade{
position: relative;
background: #fff !important;
.login_footer_item_text{
display: block;
}
}
.homeRecommend_content_adminTop{
display: none;
}
}
}
.homeRecommend_heade {
display: flex;
justify-content: space-between;
// padding: 0 30px;
padding: 1rem 4rem;
width: 100%;
// height: 7rem;
flex-shrink: 0;
// background: rgba(255, 255, 255, 0.2);
// border-bottom: 0.1rem solid rgba(3, 3, 3, 0.1);
position: absolute;
align-items: center;
z-index: 2;
@media (max-width: 768px) {
z-index: 1000;
}
.homeRecommend_right{
width: 33%;
display: flex;
justify-content: flex-end;
align-items: center;
.gallery_btn{
// color: #000;
// background: #fff;
// border: 2px solid #39215b;
// margin-left: 2rem;
width: 13rem;
text-align: center;
&.gallery_btn:nth-child(1){
margin-right: 3rem;
}
}
}
.homeRecommend_logo {
width: 14.4rem;
height: 3.2rem;
margin-top: 0;
}
.login_footer_item_text{
margin-left: 5rem;
display: none;
}
.homeRecommend_right_content {
top: 0;
left: 0;
display: flex;
width: 40%;
height: 100%;
align-items: center;
overflow: hidden;
.homeRecommend_user_content {
display: flex;
align-items: center;
position: relative;
height: 3.7rem;
&.marLeft2{
margin-left: 2rem;
}
.username {
font-size: 1.8rem;
color: #1a1a1a;
margin: 0 0.8rem;
font-weight: 900;
span{
margin: .7rem;
}
}
.icon-xiala {
font-size: 1.4rem;
cursor: pointer;
transition: .3s all;
}
.icon_rotate {
-moz-transform: rotate(180deg);
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
animation-direction: 0.5s;
}
}
}
}
</style>