bugfix: 名称错误

This commit is contained in:
2026-03-10 13:38:56 +08:00
parent 4daad8cb2f
commit 32001dffc3
3 changed files with 504 additions and 511 deletions

View File

@@ -17,9 +17,9 @@ export default {
step2Desc: 'Applicants must create their\ndesigns exclusively using the\nAiDA platform. ', step2Desc: 'Applicants must create their\ndesigns exclusively using the\nAiDA platform. ',
step2ListTitle: 'Your work should clearly demonstrate:', step2ListTitle: 'Your work should clearly demonstrate:',
step2List: [ step2List: [
'· How AiDA is used as a creative tool', 'How AiDA is used as a creative tool',
'· Your design concept and creative direction', 'Your design concept and creative direction',
'· The intergration of AI and human creativity' 'The intergration of AI and human creativity'
], ],
step3Title: 'Step 3. Prepare Your Submission', step3Title: 'Step 3. Prepare Your Submission',
processVideo: 'Process Video', processVideo: 'Process Video',
@@ -48,7 +48,7 @@ export default {
'The 20 finalists will be required to\nsubmit physical garments for final\nevaluation', 'The 20 finalists will be required to\nsubmit physical garments for final\nevaluation',
finalistPieces: 'Number of pieces: 1 full outfit', finalistPieces: 'Number of pieces: 1 full outfit',
finalistBasedOn: 'Garments must be produced\nbased on the submitted\nAiDA-generated designs', finalistBasedOn: 'Garments must be produced\nbased on the submitted\nAiDA-generated designs',
finalistShipping: 'Shipping instructions will be provided by\nCode-create', finalistShipping: 'Shipping instructions will be provided by\nCode-Create',
bloomYourCreativity: 'Bloom Your Creativity', bloomYourCreativity: 'Bloom Your Creativity',
themeOf2026: 'Theme of 2026', themeOf2026: 'Theme of 2026',
bloomText: { bloomText: {
@@ -58,7 +58,7 @@ export default {
regular2: 'is an ', regular2: 'is an ',
bold2: 'international design competition ', bold2: 'international design competition ',
regular3: 'hosted by ', regular3: 'hosted by ',
bold3: 'Code-create ', bold3: 'Code-Create ',
regular4: ', a globally leading\n', regular4: ', a globally leading\n',
bold4: 'AI fashion solutions provider,', bold4: 'AI fashion solutions provider,',
regular5: regular5:
@@ -78,7 +78,7 @@ export default {
panelOfJudges: 'Panel of Judges', panelOfJudges: 'Panel of Judges',
expertise: 'Expertise', expertise: 'Expertise',
judgesHat: { judgesHat: {
jae: 'Code-create\nKorea Branch Director\nBesfxxk creative director', jae: 'Code-Create\nKorea Branch Director\nBesfxxk creative director',
diego: 'Co-founder & Chief Father\nOfficer of OnTheList\n(Hong Kong)', diego: 'Co-founder & Chief Father\nOfficer of OnTheList\n(Hong Kong)',
gregory: 'Senior Designer at\nGabriela Heasrst (Italy)', gregory: 'Senior Designer at\nGabriela Heasrst (Italy)',
vincenzo: 'Cheif Editor of SCMP Style\n(Hong Kong)', vincenzo: 'Cheif Editor of SCMP Style\n(Hong Kong)',

View File

@@ -43,7 +43,7 @@ export default {
step4Desc: '入围的20名决赛选手需提交实体服装以供最终评审。', step4Desc: '入围的20名决赛选手需提交实体服装以供最终评审。',
finalistPieces: '件数1件套装', finalistPieces: '件数1件套装',
finalistBasedOn: '服装要求必须根据提交的AiDA生成设计制作', finalistBasedOn: '服装要求必须根据提交的AiDA生成设计制作',
finalistShipping: '运输说明:\n将由Code-create提供', finalistShipping: '运输说明:\n将由Code-Create提供',
bloomYourCreativity: '绽放你的创造力', bloomYourCreativity: '绽放你的创造力',
themeOf2026: '赛事主题', themeOf2026: '赛事主题',
bloomText: { bloomText: {
@@ -51,7 +51,7 @@ export default {
regular1: '', regular1: '',
bold1: 'AiDA全球设计奖2026', bold1: 'AiDA全球设计奖2026',
regular2: '是由全球领先的AI时尚解决方案提供商', regular2: '是由全球领先的AI时尚解决方案提供商',
bold2: ' Code-create ', bold2: ' Code-Create ',
regular3: '主办的', regular3: '主办的',
bold3: '国际设计竞赛,\n', bold3: '国际设计竞赛,\n',
regular4: regular4:

View File

@@ -1,53 +1,35 @@
<template> <template>
<div <div class="apply-container flex flex-col" id="apply" ref="applyRef">
class="apply-container flex flex-col" <div class="title animation-element" ref="applyTitleRef">
id="apply"
ref="applyRef"
>
<div
class="title animation-element"
ref="applyTitleRef"
>
{{ $t('AwardsPage.howToApply') }} {{ $t('AwardsPage.howToApply') }}
</div> </div>
<div <div class="sub-title animation-element" ref="applySubTitleRef">
class="sub-title animation-element"
ref="applySubTitleRef"
>
{{ $t('AwardsPage.stepByStep') }} {{ $t('AwardsPage.stepByStep') }}
</div> </div>
<div <div class="requirments-list flex flex-col" ref="reqListRef">
class="requirments-list flex flex-col"
ref="reqListRef"
>
<div class="top flex"> <div class="top flex">
<div <div
class="item-box animation-element" class="item-box animation-element"
v-for="(item, index) in leftRequirment" v-for="(item, index) in leftRequirment"
:key="item.type" :key="item.type"
:ref="el => { if(el) itemRefs[index] = el }" :ref="
(el) => {
if (el) itemRefs[index] = el
}
"
:style="{ background: item.background || '#fff' }" :style="{ background: item.background || '#fff' }"
> >
<div class="item-header flex flex-center"> <div class="item-header flex flex-center">
<div class="item-title">{{ $t(item.type) }}</div> <div class="item-title">{{ $t(item.type) }}</div>
</div> </div>
<div class="context-container flex flex-center"> <div class="context-container flex flex-center">
<div <div class="context" v-for="el in item.desc">
class="context"
v-for="el in item.desc"
>
{{ $t(el) }} {{ $t(el) }}
</div> </div>
<div <div class="list" v-if="item.listTitle">
class="list"
v-if="item.listTitle"
>
<div class="list-title">{{ $t(item.listTitle) }}</div> <div class="list-title">{{ $t(item.listTitle) }}</div>
<ul class="list-items"> <ul class="list-items">
<li <li class="list-item" v-for="el in item.list">
class="list-item"
v-for="el in item.list"
>
{{ $t(el) }} {{ $t(el) }}
</li> </li>
</ul> </ul>
@@ -96,9 +78,7 @@
<div class="point"></div> <div class="point"></div>
<div>{{ $t('AwardsPage.designPortfolio') }}</div> <div>{{ $t('AwardsPage.designPortfolio') }}</div>
</div> </div>
<div <div class="desc-wrapper flex-1 flex flex-col space-between">
class="desc-wrapper flex-1 flex flex-col space-between"
>
<ul class="desc-lists"> <ul class="desc-lists">
<div class="desc-lists-title"> <div class="desc-lists-title">
<p> <p>
@@ -156,13 +136,13 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { nextTick, onBeforeUnmount, onMounted, ref } from 'vue' import { nextTick, onBeforeUnmount, onMounted, ref } from 'vue'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { gsap } from 'gsap' import { gsap } from 'gsap'
const { t } = useI18n() const { t } = useI18n()
const leftRequirment = ref([ const leftRequirment = ref([
{ {
type: 'AwardsPage.step1Title', type: 'AwardsPage.step1Title',
desc: ['AwardsPage.step1Desc'] desc: ['AwardsPage.step1Desc']
@@ -171,33 +151,27 @@
type: 'AwardsPage.step2Title', type: 'AwardsPage.step2Title',
desc: ['AwardsPage.step2Desc'], desc: ['AwardsPage.step2Desc'],
listTitle: 'AwardsPage.step2ListTitle', listTitle: 'AwardsPage.step2ListTitle',
list: [ list: ['AwardsPage.step2List[0]', 'AwardsPage.step2List[1]', 'AwardsPage.step2List[2]'],
'AwardsPage.step2List[0]',
'AwardsPage.step2List[1]',
'AwardsPage.step2List[2]'
],
background: '#F9F9F9' background: '#F9F9F9'
} }
]) ])
const applyRef = ref() const applyRef = ref()
const applyTitleRef = ref() const applyTitleRef = ref()
const applySubTitleRef = ref() const applySubTitleRef = ref()
const reqListRef = ref() const reqListRef = ref()
const itemRefs = ref<HTMLElement[]>([]) const itemRefs = ref<HTMLElement[]>([])
const step3Ref = ref() const step3Ref = ref()
const step4Ref = ref() const step4Ref = ref()
const hasPlayedAnim = ref(false) const hasPlayedAnim = ref(false)
let timeline: gsap.core.Timeline | null = null let timeline: gsap.core.Timeline | null = null
let observer: IntersectionObserver | null = null let observer: IntersectionObserver | null = null
const setupApplyInitialState = () => { const setupApplyInitialState = () => {
// 设置标题和副标题的初始状态 // 设置标题和副标题的初始状态
const titleEls = [applyTitleRef.value, applySubTitleRef.value].filter( const titleEls = [applyTitleRef.value, applySubTitleRef.value].filter(Boolean) as HTMLElement[]
Boolean
) as HTMLElement[]
if (titleEls.length) { if (titleEls.length) {
gsap.set(titleEls, { gsap.set(titleEls, {
opacity: 0, opacity: 0,
@@ -224,9 +198,9 @@
y: 50 y: 50
}) })
} }
} }
const initAnimations = () => { const initAnimations = () => {
if (hasPlayedAnim.value) return if (hasPlayedAnim.value) return
timeline = gsap.timeline({ timeline = gsap.timeline({
@@ -254,18 +228,22 @@
} }
if (allStepElements.length > 0) { if (allStepElements.length > 0) {
timeline.to(allStepElements, { timeline.to(
allStepElements,
{
opacity: 1, opacity: 1,
y: 0, y: 0,
duration: 0.6, duration: 0.6,
stagger: 0.2 stagger: 0.2
}, '>') },
'>'
)
} }
hasPlayedAnim.value = true hasPlayedAnim.value = true
} }
onMounted(() => { onMounted(() => {
nextTick(() => { nextTick(() => {
setupApplyInitialState() setupApplyInitialState()
observer = new IntersectionObserver( observer = new IntersectionObserver(
@@ -288,9 +266,9 @@
observer.observe(applyRef.value) observer.observe(applyRef.value)
} }
}) })
}) })
onBeforeUnmount(() => { onBeforeUnmount(() => {
// Cleanup animation timeline // Cleanup animation timeline
if (timeline) { if (timeline) {
timeline.kill() timeline.kill()
@@ -299,22 +277,22 @@
if (observer) { if (observer) {
observer.disconnect() observer.disconnect()
} }
}) })
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
p { p {
margin: 0; margin: 0;
padding: 0; padding: 0;
} }
ul { ul {
margin: 0; margin: 0;
padding: 0; padding: 0;
} }
.animation-element{ .animation-element {
will-change: opacity transform; will-change: opacity transform;
} }
.apply-container { .apply-container {
flex: 1; flex: 1;
height: 143.3rem; height: 143.3rem;
background: url('@/assets/images/award/apply_bg.png') no-repeat; background: url('@/assets/images/award/apply_bg.png') no-repeat;
@@ -377,6 +355,28 @@
font-weight: 400; font-weight: 400;
font-size: 2.4rem; font-size: 2.4rem;
line-height: 3rem; line-height: 3rem;
.list-items {
list-style: none;
li {
list-style: none;
display: flex;
align-items: flex-start;
gap: 1rem;
padding: 0;
margin: 0.4rem 0;
&::before {
content: '';
/* 固定为 1rem 方块 */
width: 0.5rem;
height: 0.5rem;
background-color: #585858;
flex: 0 0 0.5rem;
border-radius: 0;
/* 让方块垂直居中于第一行文字:(line-height - square)/2 */
margin-top: calc((var(--desc-line-height, 3rem) - 1rem) / 2);
}
}
}
} }
} }
.context { .context {
@@ -415,12 +415,7 @@
padding: 4rem; padding: 4rem;
border-radius: 0.8rem; border-radius: 0.8rem;
column-gap: 6.4rem; column-gap: 6.4rem;
background: linear-gradient( background: linear-gradient(180deg, #ffe8e8 0%, #feefef 25%, #f9f9f9 100%);
180deg,
#ffe8e8 0%,
#feefef 25%,
#f9f9f9 100%
);
flex: 1; flex: 1;
.content-left { .content-left {
flex: 1; flex: 1;
@@ -483,9 +478,7 @@
flex: 0 0 0.5rem; flex: 0 0 0.5rem;
border-radius: 0; border-radius: 0;
/* 让方块垂直居中于第一行文字:(line-height - square)/2 */ /* 让方块垂直居中于第一行文字:(line-height - square)/2 */
margin-top: calc( margin-top: calc((var(--desc-line-height, 3rem) - 1rem) / 2);
(var(--desc-line-height, 3rem) - 1rem) / 2
);
} }
} }
} }
@@ -525,5 +518,5 @@
} }
} }
} }
} }
</style> </style>