-
-
Open Call for International Young Fashion Talent
-
31 Aug 2024
+
+
+
+
+

+
+
+
名字
+
2024-01-01 12:00:00 关注了你
+
+
+
-
- 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 Culture X AI Internation Fashion Show in Hong Kong that is scheduled on 11 March 2025.
-
网页链接
+
+
+
+

+
+
+
名字
+
2024-01-01 12:00:00 关注了你
+
+
+
-
-
diff --git a/src/component/Detail/DesignDetail.vue b/src/component/Detail/DesignDetail.vue
index fd95db46..cbe6630a 100644
--- a/src/component/Detail/DesignDetail.vue
+++ b/src/component/Detail/DesignDetail.vue
@@ -463,6 +463,8 @@ export default defineComponent({
DesignDetailAlter.terminate()
// this.designItemDetail = {}
this.frontBack = {}
+ let setDesignItem:any = isMoible() ? this.$refs.setDesignItemMobile : this.$refs.setDesignItem
+ setDesignItem.clear()
}
diff --git a/src/component/Detail/setDesignItem.vue b/src/component/Detail/setDesignItem.vue
index 38d76f12..5c6df0e3 100644
--- a/src/component/Detail/setDesignItem.vue
+++ b/src/component/Detail/setDesignItem.vue
@@ -105,8 +105,12 @@ export default defineComponent({
return {
loadingShow:false,//加载中
store: useStore(),
+ setImgSizeTimeout:null
};
},
+ mounted () {
+ window.addEventListener('resize', this.setImgSizeTime);
+ },
methods: {
init(){
let DesignParent = this.$parent
@@ -134,7 +138,14 @@ export default defineComponent({
})
this.setImgSize()
},
+ setImgSizeTime(){
+ clearTimeout(this.setImgSizeTimeout)
+ this.setImgSizeTimeout = setTimeout(()=>{
+ this.setImgSize()
+ },300)
+ },
async setImgSize(){
+ this.frontBack.body = null
let designItemDetail = JSON.parse(JSON.stringify(this.store.state.DesignDetailModule.designItemDetail))
let front = []
let back = []
@@ -218,6 +229,9 @@ export default defineComponent({
}
return num
},
+ clear(){
+ window.removeEventListener('resize', this.setImgSizeTime);
+ },
setpitch(item,index){
this.frontBack.front.forEach((v)=>{
v.designOpenrtionBtn = false
@@ -472,6 +486,7 @@ export default defineComponent({
this.$emit('setDesignCoverage');
this.store.commit("setDesignItemDetail", designItemDetail);
this.setRevocation(designItemDetail,data)
+ this.clear()
}
).catch(res=>{
// this.$parent.loadingShow = false
@@ -506,13 +521,14 @@ export default defineComponent({
height: 100%;
width: 100%;
.designOpenrtion_centent{
- flex: 1;
+ // flex: 1;
+ height: 100%;
display: flex;
flex-direction: column;
align-content: space-around;
flex-wrap: nowrap;
margin: 0 auto;
- overflow: hidden;
+ // overflow: hidden;
justify-content: space-between;
position: relative;
user-select:none;
@@ -525,8 +541,8 @@ export default defineComponent({
width: auto;
height: auto;
position: relative;
- height: 100%;
- overflow: hidden;
+ height: calc(100% - 1.2rem - 4.8rem - 20%);
+ // overflow: hidden;
>img{
z-index: 2;
position: relative;
diff --git a/src/component/Detail/setDesignItemMobile.vue b/src/component/Detail/setDesignItemMobile.vue
index ceca65a7..978ccef0 100644
--- a/src/component/Detail/setDesignItemMobile.vue
+++ b/src/component/Detail/setDesignItemMobile.vue
@@ -100,8 +100,12 @@ export default defineComponent({
return {
loadingShow:false,//加载中
store: useStore(),
+ setImgSizeTimeout:null
};
},
+ mounted () {
+ window.addEventListener('resize', this.setImgSizeTime);
+ },
methods: {
init(){
let DesignParent = this.$parent
@@ -129,7 +133,14 @@ export default defineComponent({
})
this.setImgSize()
},
+ setImgSizeTime(){
+ clearTimeout(this.setImgSizeTimeout)
+ this.setImgSizeTimeout = setTimeout(()=>{
+ this.setImgSize()
+ },300)
+ },
async setImgSize(){
+ this.frontBack.body = null
let designItemDetail = JSON.parse(JSON.stringify(this.store.state.DesignDetailModule.designItemDetail))
let front = []
let back = []
@@ -214,6 +225,9 @@ export default defineComponent({
}
return num
},
+ clear(){
+ window.removeEventListener('resize', this.setImgSizeTime);
+ },
setpitch(item,index){
this.frontBack.front.forEach((v)=>{
v.designOpenrtionBtn = false
@@ -439,6 +453,7 @@ export default defineComponent({
this.$emit('setDesignCoverage');
this.store.commit("setDesignItemDetail", designItemDetail);
this.setRevocation(designItemDetail,data)
+ this.clear()
}
).catch(res=>{
this.$emit('setParentLoadingShow');
@@ -477,13 +492,14 @@ export default defineComponent({
height: 100%;
width: 100%;
.designOpenrtion_centent{
- flex: 1;
+ // flex: 1;
+ height: 100%;
display: flex;
flex-direction: column;
align-content: space-around;
flex-wrap: nowrap;
margin: 0 auto;
- overflow: hidden;
+ // overflow: hidden;
justify-content: space-between;
position: relative;
user-select:none;
@@ -496,8 +512,9 @@ export default defineComponent({
width: auto;
height: auto;
position: relative;
- height: 100%;
- overflow: hidden;
+ // height: 100%;
+ // overflow: hidden;
+ height: calc(100% - 1.2rem - 4.8rem - 20%);
margin: 0 auto;
>img{
z-index: 2;
diff --git a/src/component/HomePage/ExportModel.vue b/src/component/HomePage/ExportModel.vue
index 676b4bff..a8db87c9 100644
--- a/src/component/HomePage/ExportModel.vue
+++ b/src/component/HomePage/ExportModel.vue
@@ -468,8 +468,10 @@ export default defineComponent({
for (const key in allBoardData.value) {
if (item == key) {
//循环渲染顺序
-
- let imgWidth = setImageWidth(key); //这是设置画布等宽
+ let imgWidth //这是设置画布等宽
+ if(item !== 'likeDesignCollectionList' && item !== 'FinalizeImage'){
+ imgWidth = await setImageWidth(key);
+ }
let sketchGroupingItem = [];
if (
item == "moodboardFiles" &&
@@ -478,7 +480,7 @@ export default defineComponent({
continue;
}
for (const [allItemIndex, allItem,] of allBoardData.value[key].entries()) {
- await new Promise((resolve, reject) => {
+ await new Promise(async (resolve, reject) => {
if(!allItem){
resolve()
}
@@ -497,9 +499,11 @@ export default defineComponent({
} else {
let itemCanvasImg = allItem.imgUrl;
if (key == "likeDesignCollectionList") {
+
itemCanvasImg =
allItem.designOutfitUrl;
}
+ if(item == 'likeDesignCollectionList' || item == 'FinalizeImage')imgWidth = await setImageWidth(key,itemCanvasImg);
fabric.Image.fromURL(itemCanvasImg,(img) => {
let scaleWH = imgWidth / img.width; //计算放到画布上缩小倍率
if(key == "sketchboardFiles"){
@@ -513,7 +517,7 @@ export default defineComponent({
position.y = maxHeight;
}
}
- setCanvasImage(img,key,position.x,position.y,allItem)//设置图片
+ setCanvasImage(img,key,position.x,position.y,allItem,imgWidth)//设置图片
position.height = img.height * scaleWH + margin;
if (key == "sketchboardFiles") {
if (sketchGroupingItem.length <3) {
@@ -608,7 +612,7 @@ export default defineComponent({
}
- let setImageWidth = (key)=>{
+ let setImageWidth = async (key,img)=>{
let imgWidth = canvasWH.value.width; //这是设置画布等宽
if (
disposeMoodboardShow &&
@@ -632,14 +636,29 @@ export default defineComponent({
sketchGrouping;
}
if (key == "likeDesignCollectionList" || key == 'FinalizeImage') {
- imgWidth =
- (canvasWH.value.width -
- (likeDesign - 1) * 20) /
- likeDesign;
+ if(img){
+ await new Promise((resolve, reject) => {
+ let imgObj = new Image();
+ imgObj.onload = function () {
+ let height = imgObj.height
+ imgObj.height = canvasWH.value.width / 4 * 1.8
+ let heightScale = imgObj.height / height
+ imgWidth = imgObj.width * heightScale
+ // imgObj.remove()
+ resolve(imgObj.width)
+ }
+ imgObj.src = img;
+ })
+ }
+ // imgWidth =
+
+ // (canvasWH.value.width -
+ // (likeDesign - 1) * 20) /
+ // likeDesign;
}
return imgWidth
}
- let setCanvasImage = (img,key,left,top,data)=>{
+ let setCanvasImage = (img,key,left,top,data,imgWidth)=>{
// data
let imgId = 0
let minioUrl = ''//表示收藏或者generate
@@ -671,7 +690,7 @@ export default defineComponent({
minioUrl = match[2]
// let id =
let proportion = img.height / img.width; //计算图形宽高比例
- let imgWidth = setImageWidth(key)
+ // let imgWidth = setImageWidth(key)
let scaleWH = imgWidth / img.width; //计算放到画布上缩小倍率
img.set({
// width: imgWidth/img.width,
diff --git a/src/component/HomePage/productImg.vue b/src/component/HomePage/productImg.vue
index 03476f7e..9b476a1b 100644
--- a/src/component/HomePage/productImg.vue
+++ b/src/component/HomePage/productImg.vue
@@ -760,7 +760,7 @@ methods: {
height: 14rem;
position: relative;
img{
- width: 100%;
+ height: 100%;
cursor: pointer;
object-fit: contain;
opacity: .5;
@@ -825,7 +825,7 @@ methods: {
// width: 45%;
.productImg_content_item_imgBox{
.content_item_imgBox_itemImg{
- width: 7rem;
+ width: auto;
flex-shrink: 0;
}
}
diff --git a/src/router/index.ts b/src/router/index.ts
index a5877ff6..9e1b5951 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -99,6 +99,10 @@ const routes: Array
= [
component: _import_component('Account/accountFollowFans.vue'),
}
]
+ },{
+ path:'otherUsers',
+ name:'otherUsers',
+ component: _import_component('Account/otherUsers.vue'),
}
]
},
diff --git a/src/store/homeStore/homeStore.ts b/src/store/homeStore/homeStore.ts
index 4e65631e..d545f1d3 100644
--- a/src/store/homeStore/homeStore.ts
+++ b/src/store/homeStore/homeStore.ts
@@ -10,7 +10,6 @@ interface DesignDetail{
templateImgUrl:any,
designId:any,
showSketchList:any,
-
}
const HomeStoreModule : Module = {
@@ -83,8 +82,7 @@ const HomeStoreModule : Module = {
state.templateId= ''
state.templateImgUrl = ''
},
-
-
+
},
diff --git a/src/store/userHabit/userHabit.ts b/src/store/userHabit/userHabit.ts
index b7a56e44..b14a03ef 100644
--- a/src/store/userHabit/userHabit.ts
+++ b/src/store/userHabit/userHabit.ts
@@ -14,6 +14,7 @@ interface UserHabit{
MalePosition:any,
Position:any,
systemUser:any,
+ messageSystem:any,
}
const userHabit : Module = {
@@ -39,7 +40,9 @@ const userHabit : Module = {
systemUser:{
value : -1
},
-
+ messageSystem:{
+ messageNum:4,
+ },
},
mutations:{
res_clothingType(state,data){
@@ -73,6 +76,10 @@ const userHabit : Module = {
clearSystemUser(state){
state.systemUser.value = -1
},
+ setMessageSystem(state,data){
+ state.messageSystem = data
+ },
+
},
actions:{
diff --git a/src/tool/https.js b/src/tool/https.js
index d7c6be83..eed2c4bf 100644
--- a/src/tool/https.js
+++ b/src/tool/https.js
@@ -88,6 +88,7 @@ axios.interceptors.response.use((res) =>{
}
}, function(error) {
if(error?.response?.status === 401 && router.currentRoute._value.name != 'setIdentification'){//如果是记录浏览器页面就不跳转login
+ clonAllCookie()
if(!isLoginTime){
isLoginTime = true
let isSystemUserRouteList = ['/Square']//如果是这两个页面就无需跳转未登录页
@@ -102,7 +103,6 @@ axios.interceptors.response.use((res) =>{
router.replace('/')
}
message.warning('Please login and try again~')
- clonAllCookie()
store.commit('clearSystemUser')
setTimeout(()=>[
isLoginTime = false
diff --git a/src/tool/webSocket.js b/src/tool/webSocket.js
new file mode 100644
index 00000000..84596be7
--- /dev/null
+++ b/src/tool/webSocket.js
@@ -0,0 +1,46 @@
+class MyWs {
+ constructor() {
+ this.ws = null;
+ // this.ws = new WebSocket();
+ }
+ linkWs(url) {
+ if (this.ws && this.ws.readyState == 1) return
+ this.ws = new WebSocket(url)
+ }
+ sendMessage(data) {
+ console.log(this);
+ if (this.ws && this.ws.readyState == 1) {
+ let obj = {
+ cmd: 1,
+ data: {
+ name: '123',
+ }
+ }
+ this.send(obj)
+ obj = {
+ cmd: 4,
+ data: {
+ msg: data,
+ }
+ }
+ this.send(obj)
+ // obj = {
+ // cmd: 6,
+ // data: {
+ // msg: data,
+ // }
+ // }
+ // this.send(obj,this.ws)
+ }
+ }
+ send(obj) {
+ console.log(2323);
+ this.ws.send(JSON.stringify(obj))
+ }
+ close(){
+ if (this.ws && this.ws.readyState == 1) {
+ this.ws.close()
+ }
+ }
+}
+export default new MyWs();
\ No newline at end of file
diff --git a/src/views/HomeMain.vue b/src/views/HomeMain.vue
index 4a4698b9..d933bafd 100644
--- a/src/views/HomeMain.vue
+++ b/src/views/HomeMain.vue
@@ -49,7 +49,7 @@
@@ -169,6 +169,7 @@ import showViewVideo from "@/tool/mount";
import { useI18n } from "vue-i18n";
import { gsap, TweenMax,TweenLite } from "gsap";
import { ScrollTrigger } from "gsap/ScrollTrigger";
+import MyWs from "@/tool/webSocket";
export default defineComponent({
components: {
VerificationCodeInput,
@@ -181,9 +182,18 @@ export default defineComponent({
navRouter,
},
setup(){
+ let url = '127.0.0.1:3000'
+ MyWs.linkWs("ws://"+url)
+ console.log();
+ setTimeout(() => {
+ MyWs.sendMessage('aaaa')
+ }, 3000);
const store = useStore();
const {t} = useI18n()
const {locale} = useI18n()
+ MyWs.ws.onmessage = (data)=>{
+ console.log(JSON.parse(data.data),232);
+ }
let isTest = ref()
let isMurmur = ref()
let credits = computed(()=>{
@@ -215,6 +225,10 @@ export default defineComponent({
name:t('Header.EVENTS')
},
]
+ let messageNum = computed(()=>{
+ return store.state.UserHabit.messageSystem.messageNum
+ })
+ store.commit('setMessageSystem',{messageNum:22})
return {
store,
t,
@@ -226,6 +240,7 @@ export default defineComponent({
getLangIsShowMark,
AdministratorUserIdList,
navRouterList,
+ messageNum,
}
},
data() {
diff --git a/src/views/HomeView/Works.vue b/src/views/HomeView/Works.vue
index a0f8c25f..74d00c03 100644
--- a/src/views/HomeView/Works.vue
+++ b/src/views/HomeView/Works.vue
@@ -1,9 +1,9 @@
-
+
-
+
{{ item.name }}
@@ -53,8 +53,16 @@ export default defineComponent({
type:Boolean,
default:true,
},
+ otherUsers:{
+ type:Boolean,
+ default:false,
+ },
+ userId:{
+ type:String,
+ default:'-1',
+ },
},
- setup() {
+ setup(prop) {
let filter:any = reactive({
worksSelect: 'all',
isNull:true,
@@ -153,6 +161,9 @@ export default defineComponent({
let data = filter.getListDate
if(filter.isShowMark && !filter.isNoData)return
filter.isShowMark = true
+ // if(prop.otherUsers){
+ // console.log(prop.userId);
+ // }
Https.axiosPost(Https.httpUrls.getPorfolio, data)
.then((rv) => {
if(data.page == 1 && rv.content.length == 0){
@@ -198,7 +209,7 @@ export default defineComponent({
fall.value.deleteItem(value);
}
- onMounted (()=>{
+ let setPorfolioDom = ()=>{
filter.isShowMark = false
filter.isNoData = false
getPorfolio()
@@ -214,6 +225,11 @@ export default defineComponent({
},
// { root:worksPage }
).observe(imgParent);
+ }
+ onMounted (()=>{
+ nextTick(()=>{
+ setPorfolioDom()
+ })
})
return {
...toRefs(filter),
@@ -310,6 +326,9 @@ export default defineComponent({
width: 100%;
}
}
+ &.otherUsersActive{
+ padding: 0;
+ }
}
\ No newline at end of file