Merge branch 'main' of ssh://18.167.251.121:10002/aidlab/Aida_Purchaser_Front
This commit is contained in:
@@ -116,7 +116,7 @@ defineExpose({})
|
||||
<div class="img-list">
|
||||
<div class="left">
|
||||
<div class="title">{{ $t('digitalDetail.Sketch') }}</div>
|
||||
<div class="box sketch">
|
||||
<div class="box sketch" :class="{'active': sketchList.length == 1}">
|
||||
<div class="imgBox">
|
||||
<img :src="item?.imgUrl" v-for="item in sketchList" :key="item" alt="">
|
||||
</div>
|
||||
@@ -137,7 +137,7 @@ defineExpose({})
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="bottom" v-if="editorialVisualList.length > 0">
|
||||
<div class="box editorialVisual">
|
||||
<div class="title">{{ $t('digitalDetail.EditorialVisual') }}</div>
|
||||
<div class="imgBox">
|
||||
@@ -254,14 +254,27 @@ defineExpose({})
|
||||
&.sketch{
|
||||
.imgBox{
|
||||
flex-direction: column;
|
||||
gap: 2rem;
|
||||
gap: 4rem;
|
||||
padding: 5rem 0;
|
||||
img{
|
||||
height: 20.4rem;
|
||||
height: 26.4rem;
|
||||
object-fit: contain;
|
||||
width: auto;
|
||||
margin: auto;
|
||||
}
|
||||
}
|
||||
&.active{
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
aspect-ratio: 9 / 16;
|
||||
img{
|
||||
height: auto;
|
||||
width: 20.1rem;
|
||||
aspect-ratio: 9 / 16;
|
||||
}
|
||||
}
|
||||
}
|
||||
&.illustration{
|
||||
display: flex;
|
||||
|
||||
@@ -114,6 +114,7 @@ const {} = toRefs(data);
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-top: -1px;
|
||||
.list{
|
||||
width: 100%;
|
||||
flex: 1;
|
||||
|
||||
@@ -74,7 +74,7 @@ onUnmounted(()=>{
|
||||
defineExpose({})
|
||||
</script>
|
||||
<template>
|
||||
<div class="digitalItem" ref="digitalItemRef">
|
||||
<div class="digitalItem" :class="{'active': commodityListRef?.commodityList?.length > 0}" ref="digitalItemRef">
|
||||
<div class="header-img">
|
||||
<img src="@/assets/images/digitalItem/digital_item_banner.png" alt="">
|
||||
<div class="text">
|
||||
@@ -130,9 +130,12 @@ defineExpose({})
|
||||
<style lang="less" scoped>
|
||||
.digitalItem{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
height: auto;
|
||||
position: relative;
|
||||
overflow-y: auto;
|
||||
&.active{
|
||||
height: 100%;
|
||||
}
|
||||
.header-img{
|
||||
width: 100%;
|
||||
position: relative;
|
||||
@@ -158,7 +161,7 @@ defineExpose({})
|
||||
color: #585858;
|
||||
font-size: 1.6rem;
|
||||
line-height: 140%;
|
||||
margin-top: 1.2rem;
|
||||
margin-top: 2.4rem;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ defineExpose({})
|
||||
</div>
|
||||
<div class="categories">{{ $t('digitalItem.MerchantInfo.Gender') }}</div>
|
||||
<div class="line"></div>
|
||||
<div class="multiple">{{ gender }}
|
||||
<div class="multiple">
|
||||
<checked-gender :list="genderList" @change="handleChange" v-model:selected="gender" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
8
src/views/home/UrlList.js
Normal file
8
src/views/home/UrlList.js
Normal file
@@ -0,0 +1,8 @@
|
||||
export const UrlList = {
|
||||
aida: 'https://www.aida.com.hk/',
|
||||
codeCreate: 'https://www.code-create.com/',
|
||||
|
||||
}
|
||||
export const openView = (url) => {
|
||||
window.open(url, '_blank')
|
||||
}
|
||||
@@ -5,14 +5,14 @@
|
||||
<div class="aida-logo"><img src="@/assets/images/logos/aida.png" /></div>
|
||||
<div class="title">{{ $t('Home.AidaTitle') }}</div>
|
||||
<div class="tip">{{ $t('Home.AidaTip') }}</div>
|
||||
<button custom @click="openAida">{{ $t('Home.TryNow') }}</button>
|
||||
<button custom @click="openView(UrlList.aida)">{{ $t('Home.TryNow') }}</button>
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { computed, ref } from 'vue'
|
||||
import { openAida } from '@/utils/tools'
|
||||
import { UrlList, openView } from './UrlList'
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
|
||||
@@ -3,13 +3,21 @@
|
||||
<div class="content">
|
||||
<div class="mate">
|
||||
<div class="logos">
|
||||
<img src="@/assets/images/logos/code-create-black.png" />
|
||||
<img
|
||||
src="@/assets/images/logos/code-create-black.png"
|
||||
@click="openView(UrlList.codeCreate)"
|
||||
/>
|
||||
<img src="@/assets/images/logos/stylish-parade-black.png" />
|
||||
<img src="@/assets/images/logos/aida-black.png" />
|
||||
<img
|
||||
src="@/assets/images/logos/aida-black.png"
|
||||
@click="openView(UrlList.aida)"
|
||||
/>
|
||||
</div>
|
||||
<div class="tip">{{ $t('Home.FooterTip') }}</div>
|
||||
<div class="link">
|
||||
<span class="text" @click="openAida">{{ $t('Home.FooterAidaTip') }}</span>
|
||||
<span class="text" @click="openView(UrlList.aida)">{{
|
||||
$t('Home.FooterAidaTip')
|
||||
}}</span>
|
||||
<span class="icon"><svg-icon name="arrow_right" size="12" /></span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -35,25 +43,16 @@
|
||||
<div class="item">{{ $t('Home.JoinWithUs') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
<div class="left">© Code-Create 2026</div>
|
||||
<div class="right">
|
||||
<img src="@/assets/images/icons/xiaohongshu.png" />
|
||||
<img src="@/assets/images/icons/linkedin.png" />
|
||||
<img src="@/assets/images/icons/instagram.png" />
|
||||
<img src="@/assets/images/icons/facebook.png" />
|
||||
<img src="@/assets/images/icons/douyin.png" />
|
||||
<img src="@/assets/images/icons/wechat.png" />
|
||||
</div>
|
||||
</div>
|
||||
<HomeFooter class="footer" isHome />
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { computed, ref } from 'vue'
|
||||
import { openAida } from '@/utils/tools'
|
||||
import { useRouter } from 'vue-router'
|
||||
const router = useRouter()
|
||||
import HomeFooter from '@/components/Footer.vue'
|
||||
import { UrlList, openView } from './UrlList'
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
@@ -135,24 +134,8 @@
|
||||
}
|
||||
}
|
||||
> .footer {
|
||||
padding: 0 8rem;
|
||||
height: 7rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
> .left {
|
||||
font-family: KaiseiOpti-Regular;
|
||||
font-size: 1.2rem;
|
||||
color: #585858;
|
||||
}
|
||||
> .right {
|
||||
display: flex;
|
||||
> img {
|
||||
width: 2rem;
|
||||
height: 2rem;
|
||||
margin-left: 1.6rem;
|
||||
}
|
||||
}
|
||||
border: none;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<div class="pay">
|
||||
<div class="content">
|
||||
<payment :ids="ids" />
|
||||
<sc-list title="Order Summary" is-view is-mini :list="list" />
|
||||
<sc-list :title="$t('Pay.OrderSummary')" is-view is-mini :list="list" />
|
||||
</div>
|
||||
<my-footer />
|
||||
</div>
|
||||
|
||||
@@ -2,57 +2,47 @@
|
||||
<div class="payment">
|
||||
<div class="header" @click="onBack">
|
||||
<span class="icon"><svg-icon name="back" size="30" /></span>
|
||||
<span class="text">Payment Details</span>
|
||||
<span class="text">{{ $t('Pay.PaymentDetails') }}</span>
|
||||
</div>
|
||||
<!-- 未支付 -->
|
||||
<template v-if="paymentStatus !== ORDER_STATUS.SUCCESS">
|
||||
<div class="paylist">
|
||||
<div class="item">
|
||||
<img src="@/assets/images/pay/stripe.png" alt="" />
|
||||
<span>Credit / Debit Card</span>
|
||||
<span>{{ $t('Pay.CreditDebitCard') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="agreement">
|
||||
<el-checkbox v-model="agreement">
|
||||
<div class="text">
|
||||
I agree to the <span>Terms & Conditions</span> and
|
||||
<span>Privacy Policy</span>. All digital item sales are final and
|
||||
non-refundable.
|
||||
</div></el-checkbox
|
||||
>
|
||||
<div class="text" v-html="$t('Pay.AgreementText')"></div
|
||||
></el-checkbox>
|
||||
</div>
|
||||
<div class="title">
|
||||
<span class="icon"><svg-icon name="card" size="20" /></span>
|
||||
<span class="text">Pay with Stripe</span>
|
||||
<span class="text">{{ $t('Pay.PayWithStripe') }}</span>
|
||||
</div>
|
||||
<template v-if="!query.paymentId">
|
||||
<div class="tip">
|
||||
You'll be redirected to a Stripe popup to log in and confirm. No card details
|
||||
are shared with Stylish Parade — Stripe handles all payment security.
|
||||
</div>
|
||||
<div class="tip">{{ $t('Pay.PayTip1') }}</div>
|
||||
<div class="buttons">
|
||||
<button custom="black" @click="onPayWith">
|
||||
<span class="text">Pay with</span>
|
||||
<span class="text">{{ $t('Pay.PayWith') }}</span>
|
||||
<span class="icon pay"><svg-icon name="pay-stripe" /></span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="buttons">
|
||||
<span class="text" @click="onBack">Cancel</span>
|
||||
<span class="text" @click="onBack">{{ $t('Pay.Cancel') }}</span>
|
||||
</div>
|
||||
</template>
|
||||
<!-- 已支付,等待确认 -->
|
||||
<template v-if="query.paymentId">
|
||||
<div class="tip">
|
||||
Please keep the window open until the payment is completed. If you are to open
|
||||
the payment window, please check your browser settings to see if pop-ups are
|
||||
being blocked. Points may be delayed after successful payment. Please wait 1-3
|
||||
minutes and click the credits refresh button.
|
||||
<div class="tip">{{ $t('Pay.PayTip2') }}</div>
|
||||
<div class="buttons">
|
||||
<button custom="black" @click="getOrderStatus">
|
||||
{{ $t('Pay.IHaveCompletedPayment') }}
|
||||
</button>
|
||||
</div>
|
||||
<div class="buttons">
|
||||
<button custom="black" @click="getOrderStatus">I Have Completed payment</button>
|
||||
</div>
|
||||
<div class="buttons">
|
||||
<span class="text" @click="onBack">Back</span>
|
||||
<span class="text" @click="onBack">{{ $t('Pay.Back') }}</span>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
@@ -60,11 +50,8 @@
|
||||
<template v-if="paymentStatus === ORDER_STATUS.SUCCESS">
|
||||
<div class="success">
|
||||
<img src="@/assets/images/pay/success.png" alt="" />
|
||||
<div class="title">Purchase Successful!</div>
|
||||
<div class="tip">
|
||||
Your digital items are now available and have been saved in Personal Center → My
|
||||
Wardrobe.
|
||||
</div>
|
||||
<div class="title">{{ $t('Pay.PurchaseSuccessful') }}</div>
|
||||
<div class="tip">{{ $t('Pay.PurchaseSuccessfulTip') }}</div>
|
||||
</div>
|
||||
|
||||
<div class="progres" v-if="downloadInfo.status !== DOWNLOAD_STATUS.null">
|
||||
@@ -81,14 +68,16 @@
|
||||
</el-progress>
|
||||
</div>
|
||||
<div class="buttons">
|
||||
<button custom="black" @click="handleDownloadAllAssets">download all Assets</button>
|
||||
<button custom="black" @click="handleDownloadAllAssets">
|
||||
{{ $t('Pay.DownloadAllAssets') }}
|
||||
</button>
|
||||
<button custom="black-box">
|
||||
<span class="icon"><svg-icon name="order-file" size="18" /></span>
|
||||
<span class="text">Export Invoice</span>
|
||||
<span class="text">{{ $t('Pay.ExportInvoice') }}</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="buttons">
|
||||
<span class="text" @click="onBack">Continue Shopping</span>
|
||||
<span class="text" @click="onBack">{{ $t('Pay.ContinueShopping') }}</span>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
@@ -195,6 +184,9 @@
|
||||
}
|
||||
})
|
||||
const handleDownloadAllAssets = () => {
|
||||
if (downloadInfo.value.status === DOWNLOAD_STATUS.dowloading) {
|
||||
return
|
||||
}
|
||||
const ids = props.ids as string[]
|
||||
downloadInfo.value.status = DOWNLOAD_STATUS.dowloading
|
||||
downloadInfo.value.progress = 0
|
||||
|
||||
@@ -42,7 +42,7 @@ defineExpose({})
|
||||
const {} = toRefs(data);
|
||||
</script>
|
||||
<template>
|
||||
<el-drawer v-model="isShoppingShow" width="50rem" class="addShoppingDrawer" :close-on-click-modal="false" title="I am the title" :with-header="false">
|
||||
<el-drawer v-model="isShoppingShow" width="50rem" class="addShoppingDrawer" :close-on-click-modal="true" title="I am the title" :with-header="false">
|
||||
<div class="addShoppingInfo">
|
||||
<div class="header">
|
||||
<div class="title">{{ $t('addShoppingCart.title') }}</div>
|
||||
@@ -74,7 +74,7 @@ const {} = toRefs(data);
|
||||
</div>
|
||||
<div class="statement">
|
||||
<div class="icon">
|
||||
<SvgIcon name="statement" size="16.6" />
|
||||
<SvgIcon name="statement" size="20" />
|
||||
</div>
|
||||
{{ $t('addShoppingCart.statement') }}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user