eventsPage
This commit is contained in:
2
.env.dev
2
.env.dev
@@ -6,6 +6,6 @@ NODE_ENV = 'development'
|
||||
VUE_APP_BASE_URL = 'https://develop.api.aida.com.hk'
|
||||
VUE_APP_BASE_URL = 'https://api.aida.com.hk'
|
||||
# 佩佩
|
||||
# VUE_APP_BASE_URL = 'http://192.168.1.7:5567'
|
||||
VUE_APP_BASE_URL = 'http://192.168.1.7:5567'
|
||||
# 海波
|
||||
# VUE_APP_BASE_URL = 'http://192.168.1.9:5567'
|
||||
|
||||
@@ -2,26 +2,116 @@
|
||||
"eventsList": [
|
||||
{
|
||||
"id": 1,
|
||||
"title": "Culture x AI - KAN TAI KEUNG X AIDLAB X HONG KONG FASHION DESIGNERS SHOW",
|
||||
"time": "17 Jul 2024",
|
||||
"imgUrl": "https://www.aidlab.hk/uploads/n_image2_1715056842.png"
|
||||
},{
|
||||
"id": 2,
|
||||
"title": "Source Fashion 2024",
|
||||
"time": "14 Jul 2024",
|
||||
"imgUrl": "https://www.aidlab.hk/uploads/n_image2_1715053576.png"
|
||||
"title": "Open Call for International Young Fashion Talent",
|
||||
"time": "31 Aug 2024",
|
||||
"imgUrl": "https://www.aidlab.hk/uploads/n_image2_1718856817.png"
|
||||
}
|
||||
],
|
||||
"eventsItem":[
|
||||
{
|
||||
"id":1,
|
||||
"title":"Culture x AI - KAN TAI KEUNG X AIDLAB X HONG KONG FASHION DESIGNERS SHOW",
|
||||
"imgUrl": "https://www.aidlab.hk/uploads/n_image2_1715056842.png",
|
||||
"title":"Open Call for International Young Fashion Talent",
|
||||
"imgUrl": "https://www.aidlab.hk/uploads/n_image2_1718856817.png",
|
||||
"textList":[
|
||||
{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":"Stay tuned for the updates~"
|
||||
"display":"block",
|
||||
"text":"<em>Culture X AI 2024-2025: Culture and Future Mode</em> is calling for young international fashion talent to join us on our innovative exploration to create collections with Artificial Intelligence based interactive Fashion Assistant (AiDA). The final collections will be showcased in the Hong Kong Palace Museum."
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"display":"block",
|
||||
"text":"10 selected young fashion talent will be mentored by the AiDA development team to learn and explore the possibilities of AiDA. Each selected young fashion talent will create a 4-outfit collection themed “Culture” with AiDA. They will receive full technical support and subsidies for the associated production fee. Selected International/ Mainland young talent will also be able to attend the <em>Culture X AI Internation Fashion Show</em> in Hong Kong that is scheduled on 11 March 2025.<br><br>"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"button":[
|
||||
{
|
||||
"display":"block",
|
||||
"text":"Register Now",
|
||||
"https":"/api/account/activity",
|
||||
"mehod":"get",
|
||||
"success":"registration success"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"display":"block",
|
||||
"text":"<b>Important Dates*</b>"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"display":"flex",
|
||||
"text":"<li>31 August 2024, 23:59 (GMT+8)</li><li>Deadline for the open call</li>"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"display":"flex",
|
||||
"text":"<li>8 October 2024 (tentative)</li><li>Announcement of result</li>"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"display":"flex",
|
||||
"text":"<li>Mid-October 2024 (details to be announced)</li><li>Online briefing session for selected young talent</li>"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"display":"flex",
|
||||
"text":"<li>Mid-October 2024 to March 2025</li><li>AiDA Mentorship</li>"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"display":"flex",
|
||||
"text":"<li>11 March 2025</li><li><em>Culture X AI International Fashion Show</em> at the Hong Kong Palace Museum</li>"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"display":"flex",
|
||||
"text":"<li>31 August 2024, 23:59 (GMT+8)</li><li>Deadline for the open call</li>"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"display":"block",
|
||||
"text":"*The schedule may subject to change without prior notice<br><br>"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"display":"block",
|
||||
"text":"The “Call for International Young Fashion Talent” is now open for registration and submission. The deadline for submission is 31 August 2024 at 23:59 (GMT +8). Interested individuals can read through the <a href='https://drive.google.com/file/d/1heapYbB37PavjFBJT-i07j8f4bOKEm7P/view?usp=drive_link'>Application Guideline</a> and <a href='https://drive.google.com/file/d/1FJs_Xi9bwQaUPaQQY8kfbko037iovbZ3/view'>Terms & Condition </a> and complete the registration <a href='https://judgify.me/culturexaiYT'>here</a>."
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"display":"block",
|
||||
"text":"Find out more about <em>Culure X AI 2024-2025: Culture and Future Mode</em> at <a href='https://www.culturexai.com'>https://www.culturexai.com</a>"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"display":"block",
|
||||
"text":"For enquiries, please contact us at <a href='mailto:culturexai@aidlab.hk?subject=Enquiry%20on%20Open%20Call%20for%20International%20Young%20Fashion%20Talents'>culturexai@aidlab.hk</a>"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="eventsDetail_page">
|
||||
<div class="eventsDetail_page" :class="{active:isScroll}">
|
||||
<div class="eventsDetail_title ">
|
||||
<div class="modal_title_text" @click="setBack">
|
||||
<i class="fi fi-sr-left"></i>
|
||||
@@ -15,26 +15,15 @@
|
||||
<div>{{ eventsDetail.title }}</div>
|
||||
</div>
|
||||
<div class="modal_title_text" v-for="item in eventsDetail.textList">
|
||||
<div class="modal_title_text_intro" v-for="introItem in item.paragraph">
|
||||
{{ introItem.text }}
|
||||
<a v-if="introItem.link" :href="introItem.link">{{ introItem.link }}</a>
|
||||
{{ introItem?.residue }}
|
||||
<div class="eventsDetail_content_right_btn_box">
|
||||
<div class="eventsDetail_content_right_btn" v-for="buttonItem,buttonIndex in item?.button" @click="openButton(buttonItem,buttonIndex)">
|
||||
<div v-show="!loadingShow[buttonIndex]" class="started_btn">{{ buttonItem.text }}</div>
|
||||
<div v-show="loadingShow[buttonIndex]" class="started_btn"><i class="fi fi-br-loading"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal_title_text_intro" v-for="introItem in item?.paragraph" :class="{active:introItem.display == 'flex'}" v-detailText="introItem.text">
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="modal_title_text">
|
||||
<div class="modal_title_text_intro">Join us to explore the future of fashion!</div>
|
||||
</div>
|
||||
<div class="modal_title_text">
|
||||
<div class="modal_title_text_intro">Event: Source Fashion</div>
|
||||
<div class="modal_title_text_intro">Date: 14-16 July 2024</div>
|
||||
<div class="modal_title_text_intro">Time: 9:30am – 6:00pm (SUN & MON) ; 9:30-4:00pm (TUE)</div>
|
||||
<div class="modal_title_text_intro">Location: Olympia London</div>
|
||||
<div class="modal_title_text_intro">Stand no.: SF-G43</div>
|
||||
<div class="modal_title_text_intro">Website: <a target="_blank" href="https://www.source-fashion.com/">https://www.source-fashion.com/</a></div>
|
||||
</div>
|
||||
<div class="modal_title_text">
|
||||
<div class="modal_title_text_intro">Stay tuned for updates!</div>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -46,11 +35,12 @@ import { defineComponent,h ,toRefs,ref,reactive,onMounted,nextTick,provide,compu
|
||||
// import HeaderComponent from "@/component/HomePage/Header.vue";
|
||||
// import RobotAssist from "@/component/HomePage/RobotAssist.vue";
|
||||
import { Https } from "@/tool/https";
|
||||
import { message, Upload, Modal } from "ant-design-vue";
|
||||
import fullScreenImg from '@/component/HomePage/fullScreenImg.vue'
|
||||
import { useRouter } from 'vue-router';
|
||||
import { useI18n } from "vue-i18n";
|
||||
import generalMenu from "@/component/HomePage/generalMenu.vue";
|
||||
import {eventsItem} from "@/assets/json/events.json";
|
||||
import eventData from "@/assets/json/events.json";
|
||||
import { useStore } from "vuex";
|
||||
export default defineComponent({
|
||||
components: {
|
||||
@@ -77,6 +67,7 @@ export default defineComponent({
|
||||
},
|
||||
isShowMark:false,
|
||||
isNoData:false,//如果数据为空就不加载
|
||||
loadingShow:{},
|
||||
})
|
||||
let systemUser = computed(()=>{
|
||||
return store.state.UserHabit.systemUser
|
||||
@@ -85,9 +76,27 @@ export default defineComponent({
|
||||
}
|
||||
let setBack = ()=>{
|
||||
router.go(-1);
|
||||
}
|
||||
let openButton = (data:any,index:number)=>{
|
||||
if(filter.loadingShow[index]){
|
||||
return
|
||||
}
|
||||
filter.loadingShow[index] = true
|
||||
Https.axiosGet(data.https).then(
|
||||
(rv: any) => {
|
||||
if(rv){
|
||||
console.log(rv);
|
||||
|
||||
message.success(data.success)
|
||||
filter.loadingShow[index] = false
|
||||
}
|
||||
}
|
||||
).catch(res=>{
|
||||
filter.loadingShow[index] = false
|
||||
});
|
||||
}
|
||||
onMounted (()=>{
|
||||
eventsItem.forEach((item:any)=>{
|
||||
eventData.eventsItem.forEach((item:any)=>{
|
||||
if(item.id == router.currentRoute.value.query.id){
|
||||
filter.eventsDetail = item;
|
||||
}
|
||||
@@ -98,8 +107,16 @@ export default defineComponent({
|
||||
systemUser,
|
||||
likeFile,
|
||||
setBack,
|
||||
openButton,
|
||||
}
|
||||
},
|
||||
directives:{
|
||||
detailText:{
|
||||
mounted (el,binding) {
|
||||
el.innerHTML = binding.value
|
||||
}
|
||||
}
|
||||
},
|
||||
async mounted(){
|
||||
|
||||
},
|
||||
@@ -111,6 +128,16 @@ export default defineComponent({
|
||||
width: 100%;
|
||||
padding: 0 9rem;
|
||||
padding-top: 5rem;
|
||||
|
||||
&.active{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
.eventsDetail_content{
|
||||
overflow-y: auto;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
@media (max-width: 768px) {
|
||||
padding-top: 0;
|
||||
min-height: auto;
|
||||
@@ -120,27 +147,29 @@ export default defineComponent({
|
||||
display: flex;
|
||||
padding: 2rem 0rem;
|
||||
align-items: center;
|
||||
border-bottom: 1px solid #f0f0f0;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 222;
|
||||
background: #fff;
|
||||
.modal_title_text{
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.modal_title_text:hover .eventsDetail_title_text{
|
||||
text-decoration: underline;
|
||||
}
|
||||
i{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
}
|
||||
.eventsDetail_title:hover .eventsDetail_title_text{
|
||||
text-decoration: underline;
|
||||
}
|
||||
.eventsDetail_content{
|
||||
border-top: 1px solid #f0f0f0;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 8rem;
|
||||
padding-top: 8rem;
|
||||
@media (max-width: 768px) {
|
||||
flex-direction: column;
|
||||
}
|
||||
@@ -155,6 +184,9 @@ export default defineComponent({
|
||||
@media (max-width: 768px) {
|
||||
width: 100%;
|
||||
}
|
||||
.ant-image{
|
||||
height: auto;
|
||||
}
|
||||
.eventsDetail_content_left_img{
|
||||
width: 100%;
|
||||
cursor: zoom-in;
|
||||
@@ -164,9 +196,38 @@ export default defineComponent({
|
||||
.modal_title_text{
|
||||
letter-spacing: .4rem;
|
||||
font-weight: 600;
|
||||
.modal_title_text_intro{
|
||||
display: block;
|
||||
&.active{
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
li{
|
||||
width: 48%;
|
||||
|
||||
}
|
||||
em{
|
||||
// font-family: auto;
|
||||
}
|
||||
a{
|
||||
display: inline;
|
||||
}
|
||||
}
|
||||
.eventsDetail_content_right_btn_box{
|
||||
display: flex;
|
||||
justify-content: space-evenly;
|
||||
.eventsDetail_content_right_btn{
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
.modal_title_text:last-child{
|
||||
border-bottom: 3px solid;
|
||||
}
|
||||
.modal_title_text:last-child::after{
|
||||
content: "";
|
||||
display: block;
|
||||
border-top: 3px solid;
|
||||
height: 6rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -263,7 +263,7 @@ export default defineComponent({
|
||||
this.accountIsLogin(this.userInfo);
|
||||
}
|
||||
this.isHaveBindEmail = this.userInfo?.email ? true : false;
|
||||
if(!isMurmur){
|
||||
if(!this.isMurmur){
|
||||
this.operateClick();
|
||||
document.addEventListener("click", this.operateClick);
|
||||
}
|
||||
|
||||
@@ -466,6 +466,9 @@ export default defineComponent({
|
||||
Https.axiosPost(Https.httpUrls.designWorksRegisterCode, data).then(
|
||||
(rv: any) => {
|
||||
if (rv) {
|
||||
if(rv.systemUser == 4){
|
||||
rv.systemUser = 1
|
||||
}
|
||||
this.createTimer();
|
||||
let isTest = rv.systemUser == 3?true:false
|
||||
let isBeginner = rv.isBeginner == 1?true:false
|
||||
|
||||
12
src/main.ts
12
src/main.ts
@@ -14,6 +14,7 @@ import i18n from './lang/index'
|
||||
import { getBrowserInfo, murmur } from './tool/util'
|
||||
import "../node_modules/@flaticon/flaticon-uicons/css/all/all.css"
|
||||
import { Https } from "@/tool/https";
|
||||
import { useStore } from "vuex";
|
||||
import 'swiper/css';
|
||||
import 'swiper/css/pagination';
|
||||
|
||||
@@ -25,13 +26,12 @@ flexible()
|
||||
|
||||
import { getCookie, setCookie } from "@/tool/cookie";
|
||||
router.beforeEach((to, from, next) => {
|
||||
if(to.name == "login"){
|
||||
if(window.location.search.substring(1) != 'oldHis'){
|
||||
isMurmur()
|
||||
}
|
||||
if(to.name == "login" || to.name == 'SquareWorks'){
|
||||
isMurmur()
|
||||
}
|
||||
next();
|
||||
});
|
||||
|
||||
async function isMurmur() {
|
||||
let murmurStr: any = localStorage.getItem('murmurStr')
|
||||
let id: any = localStorage.getItem('id')
|
||||
@@ -49,6 +49,9 @@ async function isMurmur() {
|
||||
if(data.id){
|
||||
Https.axiosPost(Https.httpUrls.noLoginRequired, data)
|
||||
.then((rv) => {
|
||||
if(rv.systemUser == 4){
|
||||
rv.systemUser = 1
|
||||
}
|
||||
let isTest = rv.systemUser == 3 ? true : false
|
||||
let isBeginner = rv.isBeginner == 1 ? true : false
|
||||
setCookie("isMurmur", true);
|
||||
@@ -57,6 +60,7 @@ async function isMurmur() {
|
||||
setCookie("isBeginner", isBeginner);
|
||||
setCookie("isBeginnerNum", 0);//从第一步开始,机器人开始的话就是从第二部开始
|
||||
setCookie("userInfo", JSON.stringify(rv));
|
||||
useStore().commit("setSystemUser", rv.systemUser)
|
||||
sessionStorage.setItem('isTimeOne', JSON.stringify(false));//是否需要公告 提示 弹窗
|
||||
let randomNum: any = Math.floor(Math.random() * 9000000000000000) + 1000000000000000;
|
||||
sessionStorage.setItem('sessionId', randomNum);
|
||||
|
||||
@@ -90,7 +90,17 @@ axios.interceptors.response.use((res) =>{
|
||||
if(error?.response?.status === 401 && router.currentRoute._value.name != 'setIdentification'){//如果是记录浏览器页面就不跳转login
|
||||
if(!isLoginTime){
|
||||
isLoginTime = true
|
||||
router.replace('/')
|
||||
let isSystemUserRouteList = ['/Square']//如果是这两个页面就无需跳转未登录页
|
||||
let sSystemUser = false
|
||||
for (let index = 0; index < isSystemUserRouteList.length; index++) {
|
||||
if(router.currentRoute.value.path.indexOf(isSystemUserRouteList[index]) > -1){
|
||||
sSystemUser = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if(!sSystemUser){
|
||||
router.replace('/')
|
||||
}
|
||||
message.warning('Please login and try again~')
|
||||
clonAllCookie()
|
||||
store.commit('clearSystemUser')
|
||||
@@ -262,6 +272,8 @@ export const Https = {
|
||||
exportSave:`/api/history/exportSave`,//保存画布
|
||||
exportSearch:`/api/history/exportSearch`,//保存画布
|
||||
|
||||
//活动
|
||||
activity:`/api/account/activity`,
|
||||
|
||||
|
||||
//调查问卷
|
||||
|
||||
@@ -238,7 +238,7 @@ export default defineComponent({
|
||||
this.accountIsLogin(this.userInfo);
|
||||
}
|
||||
this.isHaveBindEmail = this.userInfo?.email ? true : false;
|
||||
if(!isMurmur){
|
||||
if(!this.isMurmur){
|
||||
this.operateClick();
|
||||
document.addEventListener("click", this.operateClick);
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ import { Https } from "@/tool/https";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import generalMenu from "@/component/HomePage/generalMenu.vue";
|
||||
import { useStore } from "vuex";
|
||||
import {eventsList} from "@/assets/json/events.json";
|
||||
import eventData from "@/assets/json/events.json";
|
||||
import { useRouter } from 'vue-router'
|
||||
import { gsap, TweenMax } from "gsap";
|
||||
import { ScrollTrigger } from "gsap/ScrollTrigger";
|
||||
@@ -66,7 +66,7 @@ export default defineComponent({
|
||||
// value: 'myWorks'
|
||||
// },
|
||||
],
|
||||
eventsList:eventsList,
|
||||
eventsList:eventData.eventsList,
|
||||
getListDate:{
|
||||
"getLikePortfolio": 0,
|
||||
"getMyPortfolio": 0,
|
||||
@@ -169,7 +169,6 @@ export default defineComponent({
|
||||
start: "top 90%", // 滚动触发器的起始滚动位置
|
||||
end: '100% 80%', // 滚动触发器的结束滚动位置
|
||||
// markers: true, // 开启标注功能
|
||||
scrub: true,
|
||||
animation:tl1,
|
||||
scroller:dom,//设置指定元素为滚动依据
|
||||
scrub:2,
|
||||
|
||||
@@ -464,6 +464,9 @@ export default defineComponent({
|
||||
Https.axiosPost(Https.httpUrls.accountLogin, data).then(
|
||||
(rv: any) => {
|
||||
if (rv) {
|
||||
if(rv.systemUser == 4){
|
||||
rv.systemUser = 1
|
||||
}
|
||||
this.createTimer();
|
||||
let isTest = rv.systemUser == 3?true:false
|
||||
let isBeginner = rv.isBeginner == 1?true:false
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"useDefineForClassFields": true,
|
||||
"resolveJsonModule": true,//引入json文件
|
||||
"esModuleInterop": true,//引入json文件
|
||||
"sourceMap": true,
|
||||
"allowJs": true, //编译时允许有js
|
||||
"baseUrl": ".",
|
||||
|
||||
Reference in New Issue
Block a user