diff --git a/src/assets/images/award/arrow_down.svg b/src/assets/images/award/arrow_down.svg new file mode 100644 index 00000000..e01d4073 --- /dev/null +++ b/src/assets/images/award/arrow_down.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/award/form_bg.png b/src/assets/images/award/form_bg.png new file mode 100644 index 00000000..f13d7359 Binary files /dev/null and b/src/assets/images/award/form_bg.png differ diff --git a/src/component/Administrator/SE/allUser/index.vue b/src/component/Administrator/SE/allUser/index.vue index aa5be500..4e3c7489 100644 --- a/src/component/Administrator/SE/allUser/index.vue +++ b/src/component/Administrator/SE/allUser/index.vue @@ -1,600 +1,778 @@ - - + .admin_page .admin_table_search .admin_state { + display: flex; + width: 70%; + flex-wrap: wrap; + align-content: flex-start; + } + .admin_page .admin_table_search .admin_search { + display: flex; + flex-wrap: wrap; + width: 30%; + > .admin_search_item { + height: 4rem; + font-size: 1.6rem; + } + } + .plan_list { + margin-top: 1rem; + display: flex; + // flex-wrap: wrap; + padding-left: 2.8rem; + column-gap: 0.6rem; + margin-bottom: 2rem; + .plan_item { + height: 4rem; + width: auto; + min-width: 10rem; + display: flex; + align-items: center; + justify-content: center; + // font-size: 1.8rem; + + font-weight: 600; + border-radius: 1.3rem; + color: #fff; + cursor: pointer; + border: 1.8px solid #000; + background-color: #000; + padding: 0 1rem 0 2rem; + + &:hover { + color: #000; + background-color: #fff; + } + + &.active { + background: #ffffff; + color: #000000; + } + + &.disabled { + opacity: 0.5; + cursor: not-allowed; + background-color: #d9d9d9; + border-color: #d9d9d9; + color: #999; + + &:hover { + background-color: #d9d9d9; + color: #999; + } + } + } + + .plan_item { + column-gap: 0.6rem; + } + + .plan_more_icon { + font-size: 1.6rem; + cursor: pointer; + } + } + .subscription-plan-cell { + display: flex; + align-items: center; + justify-content: center; + } + .rename-plan-form { + padding: 2rem 0; + .admin_state_item { + display: flex; + align-items: center; + > span { + width: 10rem; + margin-right: 1rem; + } + } + } + .all-user { + .admin_table_content { + :deep(.ant-table-wrapper) { + overflow: hidden; + } + } + } + + \ No newline at end of file diff --git a/src/component/Detail/canvas/index.vue b/src/component/Detail/canvas/index.vue index ad98a5a6..5f36037b 100644 --- a/src/component/Detail/canvas/index.vue +++ b/src/component/Detail/canvas/index.vue @@ -287,12 +287,27 @@ export default defineComponent({ const saveCanvas = async (canvasData:any)=>{ const index = detailData.designDetail.clothes.findIndex(item => item.id === canvasData.id); await new Promise((resolve, reject) => { - let canvasJSON = JSON.parse(canvasData.canvasJSON) - if(!canvasJSON)return resolve() - // canvasData.canvas.objects.forEach((objectsItem:any) => { - // if(objectsItem.type == 'image')objectsItem.minioUrl = getMinioUrl(objectsItem.src) - // }); - let blob = new Blob([JSON.stringify(canvasJSON)], { type: "application/json" }); + if(!detailDom?.editCanvas)return resolve() + let canvasJSON = detailDom?.editCanvas?.getJSON() + let canvasData = JSON.parse(canvasJSON) + if(!canvasData)return resolve() + function deepProcessObjects(data:any, callback:any) { + if (!Array.isArray(data)) return data; + return data.map(item => { + callback(item) + const processedItem = {...item}; + if (processedItem.objects && + Array.isArray(processedItem.objects) && + processedItem.objects.length > 0) { + processedItem.objects = deepProcessObjects(processedItem.objects, callback); + } + return processedItem; + }); + } + canvasData.canvas.objects = deepProcessObjects(canvasData.canvas.objects,(item:any)=>{ + if(item.type == 'image')item.minioUrl = getMinioUrl(item.src) + }) + let blob = new Blob([JSON.stringify(canvasData)], { type: "application/json" }); let formData = new FormData(); formData.append("file", blob, "data.json"); formData.append("designItemDetailId", detailData.selectDetail.id); diff --git a/src/component/HomePage/Generate.vue b/src/component/HomePage/Generate.vue index db010f26..245cb13b 100644 --- a/src/component/HomePage/Generate.vue +++ b/src/component/HomePage/Generate.vue @@ -925,7 +925,9 @@ export default defineComponent({ }, onCancel() {} }) - } + }else{ + this.fileList = this.fileList.filter((item: any) => item.imgUrl) + } }) }, setGenerate(dataList: any) { diff --git a/src/component/LoginPage/login/personal.vue b/src/component/LoginPage/login/personal.vue index 17276121..a597ba09 100644 --- a/src/component/LoginPage/login/personal.vue +++ b/src/component/LoginPage/login/personal.vue @@ -854,6 +854,10 @@ export default defineComponent({ font-size: 2.2rem; font-weight: bold; color: #030303; + @media (max-width: 767px) { + font-size: 1.2rem; + margin-left: .5rem; + } } .email_last_step_block_icon { cursor: pointer; diff --git a/src/component/LoginPage/verificationCodeInput.vue b/src/component/LoginPage/verificationCodeInput.vue index 4b113036..d539c546 100644 --- a/src/component/LoginPage/verificationCodeInput.vue +++ b/src/component/LoginPage/verificationCodeInput.vue @@ -161,6 +161,13 @@ font-size: 2.4rem; line-height: 8.7rem; outline: none; + @media (max-width: 767px) { + border-radius: .7rem; + width: 3.5rem; + height: 3.5rem; + font-size: 1.8rem; + line-height: 3.5rem; + } } input:last-of-type { margin-right: 0; diff --git a/src/component/home/design/tools.vue b/src/component/home/design/tools.vue index 7c77be77..69722c19 100644 --- a/src/component/home/design/tools.vue +++ b/src/component/home/design/tools.vue @@ -335,9 +335,22 @@ export default defineComponent({ let canvasData = JSON.parse(canvasJSON) if(!canvasData)return - canvasData.canvas.objects.forEach((objectsItem:any) => { - if(objectsItem.type == 'image')objectsItem.minioUrl = getMinioUrl(objectsItem.src) - }); + function deepProcessObjects(data:any, callback:any) { + if (!Array.isArray(data)) return data; + return data.map(item => { + callback(item) + const processedItem = {...item}; + if (processedItem.objects && + Array.isArray(processedItem.objects) && + processedItem.objects.length > 0) { + processedItem.objects = deepProcessObjects(processedItem.objects, callback); + } + return processedItem; + }); + } + canvasData.canvas.objects = deepProcessObjects(canvasData.canvas.objects,(item:any)=>{ + if(item.type == 'image')item.minioUrl = getMinioUrl(item.src) + }) let blob = new Blob([JSON.stringify(canvasData)], { type: "application/json" }); let formData = new FormData(); formData.append("file", blob, "data.json"); diff --git a/src/component/home/tools/deReconstruction/index.vue b/src/component/home/tools/deReconstruction/index.vue index e6d7c772..2c8577f2 100644 --- a/src/component/home/tools/deReconstruction/index.vue +++ b/src/component/home/tools/deReconstruction/index.vue @@ -206,11 +206,22 @@ export default defineComponent({ if(!canvasJSON)return if(!store.state.Workspace.probjects?.id)return let canvasData = JSON.parse(canvasJSON) - console.log(canvasData) - canvasData.canvas.objects.forEach((objectsItem:any) => { - if(objectsItem.type == 'image')objectsItem.minioUrl = getMinioUrl(objectsItem.src) - - }); + function deepProcessObjects(data:any, callback:any) { + if (!Array.isArray(data)) return data; + return data.map(item => { + callback(item) + const processedItem = {...item}; + if (processedItem.objects && + Array.isArray(processedItem.objects) && + processedItem.objects.length > 0) { + processedItem.objects = deepProcessObjects(processedItem.objects, callback); + } + return processedItem; + }); + } + canvasData.canvas.objects = deepProcessObjects(canvasData.canvas.objects,(item:any)=>{ + if(item.type == 'image')item.minioUrl = getMinioUrl(item.src) + }) let blob = new Blob([JSON.stringify(canvasData)], { type: "application/json" }); let formData = new FormData(); formData.append("file", blob, "data.json"); diff --git a/src/component/mainPage/signUp/registerModel.vue b/src/component/mainPage/signUp/registerModel.vue index 210742fd..9b3d52ed 100644 --- a/src/component/mainPage/signUp/registerModel.vue +++ b/src/component/mainPage/signUp/registerModel.vue @@ -79,7 +79,7 @@ Forgot password? --> -
+
@@ -144,12 +144,13 @@ @click="changePasswordType()" >
- {{ userI18n[selectUserI18n].inputPasswordTip }} - + * { @@ -1015,6 +1017,9 @@ export default defineComponent({ // margin-top: 4rem; .email_last_step_bottom { padding: 0 40px; + @media (max-width: 767px) { + padding: 0 2rem; + } } .email_last_step_block { padding: 10px; @@ -1028,6 +1033,10 @@ export default defineComponent({ font-size: 2.2rem; font-weight: bold; color: #030303; + @media (max-width: 767px) { + font-size: 1.2rem; + margin-left: .5rem; + } } .email_last_step_block_icon { cursor: pointer; @@ -1229,6 +1238,9 @@ export default defineComponent({ font-weight: bold; color: #000; cursor: pointer; + @media (max-width: 767px) { + font-size: 1rem; + } } .email_last_step_des { @@ -1237,16 +1249,25 @@ export default defineComponent({ justify-content: space-between; margin-top: 4rem; margin-bottom: 2rem; - + @media (max-width: 767px) { + margin-top: 2rem; + margin-bottom: 1rem; + } .sent_email_content { font-size: 1.8rem; font-weight: bold; color: #a5b0c2; + @media (max-width: 767px) { + font-size: 1.2rem; + } } .email_tip_content { font-size: 1.4rem; color: #030303; + @media (max-width: 767px) { + font-size: 1.2rem; + } } } } diff --git a/src/component/toolsPage/index.vue b/src/component/toolsPage/index.vue index 8b3e72ed..84828edb 100644 --- a/src/component/toolsPage/index.vue +++ b/src/component/toolsPage/index.vue @@ -165,9 +165,22 @@ export default defineComponent({ time = setTimeout(()=>{ let canvasData = JSON.parse(canvasJSON) if(!canvasData)return - canvasData.canvas.objects.forEach((objectsItem:any) => { - if(objectsItem.type == 'image')objectsItem.minioUrl = getMinioUrl(objectsItem.src) - }); + function deepProcessObjects(data:any, callback:any) { + if (!Array.isArray(data)) return data; + return data.map(item => { + callback(item) + const processedItem = {...item}; + if (processedItem.objects && + Array.isArray(processedItem.objects) && + processedItem.objects.length > 0) { + processedItem.objects = deepProcessObjects(processedItem.objects, callback); + } + return processedItem; + }); + } + canvasData.canvas.objects = deepProcessObjects(canvasData.canvas.objects,(item:any)=>{ + if(item.type == 'image')item.minioUrl = getMinioUrl(item.src) + }) let blob = new Blob([JSON.stringify(canvasData)], { type: "application/json" }); let formData = new FormData(); formData.append("file", blob, "data.json"); diff --git a/src/tool/https.js b/src/tool/https.js index 77eda601..ce1f5b79 100644 --- a/src/tool/https.js +++ b/src/tool/https.js @@ -2,133 +2,150 @@ import axios from 'axios' // import qs from 'qs' // import message from '@/components/public/message/src' import router from '@/router/index' -import {getCookie,clonAllCookie} from '@/tool/cookie' +import { getCookie, clonAllCookie } from '@/tool/cookie' // import cookie from '@/tools/cookie.js' -axios.defaults.timeout = 60000; //响应时间 +axios.defaults.timeout = 60000 //响应时间 // axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'; //配置请求头 -axios.defaults.headers.post["Content-Type"] = "application/json"; +axios.defaults.headers.post['Content-Type'] = 'application/json' - -axios.defaults.headers.post['lang'] = 'en'; //配置语言请求头 -axios.defaults.withCredentials = true; //跨域携带cookie -import { message } from 'ant-design-vue'; -import store from '@/store'; +axios.defaults.headers.post['lang'] = 'en' //配置语言请求头 +axios.defaults.withCredentials = true //跨域携带cookie +import { message } from 'ant-design-vue' +import store from '@/store' // if(import.meta.env.VITE_USER_NODE_ENV == "development"){ // axios.defaults.baseURL = ""; //配置接口地址 // }else{ // axios.defaults.baseURL = import.meta.env.VITE_APP_BASE_URL; //配置接口地址 // } -// let httpIp +// let httpIp // if(import.meta.env.VITE_USER_NODE_ENV == 'development'){ // httpIp = 'http://192.168.1.12:10086' // }else{ // httpIp = '' // } -let httpIp = import.meta.env.VITE_USER_NODE_ENV == 'development' ? "" : ""; +let httpIp = import.meta.env.VITE_USER_NODE_ENV == 'development' ? '' : '' // let httpIp = import.meta.env.VITE_USER_NODE_ENV == 'development' ? "https://192.168.1.8:10086" : ""; -axios.defaults.baseURL = httpIp; //配置接口地址 +axios.defaults.baseURL = httpIp //配置接口地址 // console.log(axios.defaults.baseURL); -axios.defaults.baseURL = import.meta.env.VITE_APP_BASE_URL; //配置接口地址 +axios.defaults.baseURL = import.meta.env.VITE_APP_BASE_URL //配置接口地址 console.log(import.meta.env.VITE_APP_BASE_URL) // 创建取消令牌 -const CancelToken = axios.CancelToken; -const source = CancelToken.source(); +const CancelToken = axios.CancelToken +const source = CancelToken.source() // console.log(import.meta.env.VITE_APP_BASE_URL); let isLoginTime = false //POST传参序列化(添加请求拦截器) -axios.interceptors.request.use((config) => { - //在发送请求之前做某件事 +axios.interceptors.request.use( + config => { + //在发送请求之前做某件事 - - - // config.cancelToken = source.token - if(config.method === 'post' || config.method === 'put' || config.method === 'delete'){ - // config.data = qs.stringify(config.data); - // config.data = JSON.stringify(config.data); - } - // config.headers.Authorization = 'Bearer-eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiIyIiwic3ViIjoie1wiaWRcIjoyLFwidXNlcm5hbWVcIjpcImxpcnNcIn0iLCJpYXQiOjE2NjU3NDEwODcsImlzcyI6IkRXSiIsImF1dGhvcml0aWVzIjoiW10iLCJleHAiOjE2NzQzODEwODd9.ShM9R_NNFD7oo1OvxrEgg7PFeWinOuAKkuInUCMQupp66s64Hhv8tN0Wwr83nIN4rHPqtn95wmd4msWcvaFYJA'; - config.headers.Authorization = getCookie('token'); - return config; -},(error) =>{ - return Promise.reject(error); -}); -const binaryToUrl = (binary,type = 'application/json',res)=>{ - let blob = new Blob([binary], {'content-type':type}); - let url = URL.createObjectURL(blob); + // config.cancelToken = source.token + if ( + config.method === 'post' || + config.method === 'put' || + config.method === 'delete' + ) { + // config.data = qs.stringify(config.data); + // config.data = JSON.stringify(config.data); + } + // config.headers.Authorization = 'Bearer-eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiIyIiwic3ViIjoie1wiaWRcIjoyLFwidXNlcm5hbWVcIjpcImxpcnNcIn0iLCJpYXQiOjE2NjU3NDEwODcsImlzcyI6IkRXSiIsImF1dGhvcml0aWVzIjoiW10iLCJleHAiOjE2NzQzODEwODd9.ShM9R_NNFD7oo1OvxrEgg7PFeWinOuAKkuInUCMQupp66s64Hhv8tN0Wwr83nIN4rHPqtn95wmd4msWcvaFYJA'; + config.headers.Authorization = getCookie('token') + return config + }, + error => { + return Promise.reject(error) + } +) +const binaryToUrl = (binary, type = 'application/json', res) => { + let blob = new Blob([binary], { 'content-type': type }) + let url = URL.createObjectURL(blob) return url } //返回状态判断(添加响应拦截器) -axios.interceptors.response.use((res) =>{ - // if(res.data.data == null){ - // message.warning(res.data.errMsg) - // return Promise.reject(res.data); - // }else - if(res?.config?.env?.binary){ - let url = binaryToUrl(res.data,res.config.env.binaryType,res) - return Promise.resolve({url,data:res.data}) - } - if (res?.data) { - if (res?.data?.errCode === 0) { - // message.error(res?.data?.errMsg) - return Promise.resolve(res?.data?.data); - } else if(res?.data?.errCode === 1){ - message.warning(res?.data?.errMsg) - return Promise.reject(res?.data); - } else if(res?.data?.errCode === 2){ - return Promise.reject(res?.data); - }else if(res?.data?.errCode === -1){ - message.error(res?.data?.errMsg) - return Promise.reject(res?.data); - } +axios.interceptors.response.use( + res => { + // 允许透传完整响应:请求时传 config.fullData = true - } else { - if (res?.data?.errCode === 0) { - message.warning(res?.data?.errMsg) - return Promise.reject(res?.data); - } else if(res?.data?.errCode === 1){ - message.warning(res?.data?.errMsg) - return Promise.reject(res?.data); - } else if(res?.data?.errCode === 2){ - return Promise.reject(res?.data); - }else if(res?.data?.errCode === -1){ - message.error(res?.data?.errMsg) - return Promise.reject(res?.data); + // if(res.data.data == null){ + // message.warning(res.data.errMsg) + // return Promise.reject(res.data); + // }else + if (res?.config?.env?.binary) { + let url = binaryToUrl(res.data, res.config.env.binaryType, res) + return Promise.resolve({ url, data: res.data }) } - } -}, function(error) { - if(error?.response?.status === 401 && router.currentRoute._value.name != 'setIdentification'){//如果是记录浏览器页面就不跳转login - clonAllCookie() - if(!isLoginTime){ - isLoginTime = true - 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 (res?.data) { + if (res?.data?.errCode === 0) { + // message.error(res?.data?.errMsg) + if (res?.config?.fullData) { + return Promise.resolve(res.data) } + return Promise.resolve(res?.data?.data) + } else if (res?.data?.errCode === 1) { + message.warning(res?.data?.errMsg) + return Promise.reject(res?.data) + } else if (res?.data?.errCode === 2) { + return Promise.reject(res?.data) + } else if (res?.data?.errCode === -1) { + message.error(res?.data?.errMsg) + return Promise.reject(res?.data) } - if(!sSystemUser){ - router.replace('/') + } else { + if (res?.data?.errCode === 0) { + message.warning(res?.data?.errMsg) + return Promise.reject(res?.data) + } else if (res?.data?.errCode === 1) { + message.warning(res?.data?.errMsg) + return Promise.reject(res?.data) + } else if (res?.data?.errCode === 2) { + return Promise.reject(res?.data) + } else if (res?.data?.errCode === -1) { + message.error(res?.data?.errMsg) + return Promise.reject(res?.data) } - message.warning('Please login and try again~') - store.commit('createDetail') - store.commit('createProbject') - store.commit('createProjectPath') - setTimeout(()=>[ - isLoginTime = false - ],2000) } - // source.cancel('取消后续接口调用'); - return Promise.reject() - } - let data_new = error?.response?.data - // message.error(data_new?.errMsg || 'Error: server exception') - return Promise.reject(data_new); -}); + }, + function (error) { + if ( + error?.response?.status === 401 && + router.currentRoute._value.name != 'setIdentification' + ) { + //如果是记录浏览器页面就不跳转login + clonAllCookie() + if (!isLoginTime) { + isLoginTime = true + 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~') + store.commit('createDetail') + store.commit('createProbject') + store.commit('createProjectPath') + setTimeout(() => [(isLoginTime = false)], 2000) + } + // source.cancel('取消后续接口调用'); + return Promise.reject() + } + let data_new = error?.response?.data + // message.error(data_new?.errMsg || 'Error: server exception') + return Promise.reject(data_new) + } +) export const Https = { httpUrls: { interfaceUrl: '', @@ -447,9 +464,16 @@ export const Https = { segAnything: `/api/python/segAnything`, //分割Anything // award页面 - uploadPDF: '/api/global-award/uploads/pdf', // 上传pdf - uploadVideo: '/api/global-award/uploads/video', // 上传video - + checkEmail: '/api/global-award/checkEmail', // 检查邮箱是否存在 + checkOTP: '/api/global-award/checkCode', // 检查验证码是否正确 + initPdfUpload: '/api/global-award/uploads/pdf/init', // 初始化pdf上传 + initVideoUpload: '/api/global-award/uploads/video/init', // 初始化video上传 + uploadPDF: '/api/global-award/uploads/pdf/chunk', // 上传pdf + uploadVideo: '/api/global-award/uploads/video/chunk', // 上传video + uploadPDFComplete: '/api/global-award/uploads/pdf/complete', // 上传pdf完成 + uploadVideoComplete: '/api/global-award/uploads/video/complete', // 上传video完成 + submitForm: '/api/global-award/contestants/save', // 提交表单 + getContestantByID: '/api/global-award/contestants/' // 获取表单 }, axiosGet(url, config) { diff --git a/src/views/AwardPage/apply.vue b/src/views/AwardPage/apply.vue index 36a7998d..0a57f9ad 100644 --- a/src/views/AwardPage/apply.vue +++ b/src/views/AwardPage/apply.vue @@ -5,12 +5,19 @@ BLOOM YOUR CREATIVITY • AiDA GLOBAL FASHION AWARD 2026
Application Form
-
+
Email Verification
AiDA Users Only
-
+ +
- + + + +
@@ -84,13 +106,13 @@ @@ -307,16 +329,22 @@ + diff --git a/src/views/AwardPage/container.vue b/src/views/AwardPage/container.vue index ff13a62f..e7ecd781 100644 --- a/src/views/AwardPage/container.vue +++ b/src/views/AwardPage/container.vue @@ -7,8 +7,11 @@ class="logo" />
-
-
Submit your Application
+
+
{{ btnText }}