Merge branch 'dev_vite' of http://18.167.251.121:10003/aidlab/aida_front into dev_vite

This commit is contained in:
李志鹏
2026-06-01 13:55:42 +08:00
6 changed files with 141 additions and 126 deletions

View File

@@ -1734,7 +1734,7 @@ export default {
step3Info: '详情信息已从AiDA自动填充请检查并补充任何缺失的信息。',
step4Title: '上架发布',
step4Info: '发布后,你的设计将立即在市场上线。',
showAgain: '不再提示',
showAgain: '7天内不再提示',
GetStarted: '开始体验',
},
SellerListEdit: {

View File

@@ -1785,7 +1785,7 @@ export default {
step3Info: 'Details are pre-filled from AiDA. Review and complete any missing information.',
step4Title: 'Listing Live',
step4Info: 'Publish and your design goes live on the marketplace.',
showAgain: 'Dont show me again',
showAgain: 'Dont show this again for 7 days',
GetStarted: 'Get Started',
},
SellerListEdit:{

View File

@@ -594,13 +594,18 @@
if (!validatePublishRequired()) return
await handleSaveForm(status)
// 从 sessionStorage 获取参数
const paramsStr = sessionStorage.getItem('listingEditParams')
const params = paramsStr ? JSON.parse(paramsStr) : {}
if (status === "draft") {
ROUTER.push({
name: "Status",
params: { status: "draft" },
state: {
type: history.state?.type,
collectionId: history.state?.collectionId
type: params.type,
collectionId: params.collectionId
}
})
} else if (status === "publish") {
@@ -608,8 +613,8 @@
name: "Status",
params: { status: "publish" },
state: {
type: history.state?.type,
collectionId: history.state?.collectionId
type: params.type,
collectionId: params.collectionId
}
})
}
@@ -642,12 +647,15 @@
}
onMounted(() => {
const data = history.state
// 从 sessionStorage 获取参数
const paramsStr = sessionStorage.getItem('listingEditParams')
const data = paramsStr ? JSON.parse(paramsStr) : {}
if (data?.type === "edit") {
itemId.value = history.state?.id
itemId.value = data?.id
handleGetDetailById()
} else {
const designItemIds = history.state?.designItemIds || []
const designItemIds = data?.designItemIds || []
if (!designItemIds.length) return
@@ -659,6 +667,7 @@
// console.log("list", list.length, list)
handleFetchItemDetial(list)
}
})
</script>

View File

@@ -55,26 +55,28 @@ defineExpose({getCreateList})
</script>
<template>
<div class="historyList">
<div class="list">
<div v-for="(item,index) in list" :key="index" class="item" @click="selectCollectionItem(item)">
<div class="imgList">
<div v-if="item.userLikeGroupVO?.groupDetails?.length > 0" v-for="(img,index) in item.userLikeGroupVO?.groupDetails.slice(0, 4)" :key="index" class="img">
<img :src="img.url" alt="">
<div class="listBox">
<div class="list">
<div v-for="(item,index) in list" :key="index" class="item" @click="selectCollectionItem(item)">
<div class="imgList">
<div v-if="item.userLikeGroupVO?.groupDetails?.length > 0" v-for="(img,index) in item.userLikeGroupVO?.groupDetails.slice(0, 4)" :key="index" class="img">
<img :src="img.url" alt="">
</div>
<div v-else class="img null">
<img src="@/assets/images/seller/selectCollectionNullStatus.png" alt="">
</div>
</div>
<div v-else class="img null">
<img src="@/assets/images/seller/selectCollectionNullStatus.png" alt="">
<div class="detail">
<div class="name">{{item.name}}</div>
<div class="bottom">
<div>{{item.userLikeGroupVO?.groupDetails?.length || 0}} {{ $t('Seller.sketchs') }}</div>
<div>{{setPubDate(item.updateTime,t)}}</div>
</div>
</div>
</div>
<div class="detail">
<div class="name">{{item.name}}</div>
<div class="bottom">
<div>{{item.userLikeGroupVO?.groupDetails?.length || 0}} {{ $t('Seller.sketchs') }}</div>
<div>{{setPubDate(item.updateTime,t)}}</div>
<div class="type" :class="item.type">
{{item.process == "SERIES_DESIGN"?"Series":"Single"}}
</div>
</div>
<div class="type" :class="item.type">
{{item.process == "SERIES_DESIGN"?"Series":"Single"}}
</div>
</div>
</div>
<div class="pagination">
@@ -94,105 +96,110 @@ defineExpose({getCreateList})
justify-content: space-between;
align-items: center;
margin-top: 3rem;
> .list{
> .listBox{
height: 100%;
overflow: hidden;
display: grid;
grid-template-columns: repeat(3, 1fr);
row-gap: 2.4rem; /* 垂直间距 3px */
column-gap: 3.2rem; /* 横向间距 2px */
align-content: start;
overflow-y: auto;
&::-webkit-scrollbar{
display: none;
}
> .item{
width: 42.6rem;
height: auto;
// height: 27.6rem;
border: 1.5px solid #C7C7C7;
position: relative;
overflow: hidden;
border-radius: 2rem;
cursor: pointer;
transition: all .3s;
> .imgList{
background-color: #eaeaea;
height: 19.2rem;
padding: 1rem 1.3rem;
display: flex;
gap: .4rem;
justify-content: center;
> .img{
width: 9.7rem;
height: 17.2rem;
border-radius: 1rem;
overflow: hidden;
background-color: #fff;
&.null{
background-color: transparent;
}
> img{
object-fit: contain;
height: 100%;
width: 100%;
}
}
> .list{
display: grid;
grid-template-columns: repeat(3, 1fr);
row-gap: 2.4rem; /* 垂直间距 3px */
column-gap: 3.2rem; /* 横向间距 2px */
align-content: start;
&::-webkit-scrollbar{
display: none;
}
> .detail{
padding: 2rem 2.4rem;
> .name{
font-family: pingfang_heavy;
font-weight: 400;
font-size: 1.797rem;
line-height: 1;
}
> .bottom{
display: flex;
margin-top: .8rem;
justify-content: space-between;
> div{
font-size: 1.2rem;
font-family: pingfang_regular;
font-weight: 400;
font-size: 1.6rem;
line-height: 1;
color: #585858;
}
> div:nth-child(2){
color: #979797;
}
}
}
> .type{
width: 7.6rem;
height: 3rem;
> .item{
width: 42.6rem;
height: auto;
// height: 27.6rem;
border: 1.5px solid #C7C7C7;
position: relative;
overflow: hidden;
border-radius: 2rem;
border: 1px solid #727070;
background: #7E7C7C;
font-weight: 500;
font-size: 1.4rem;
line-height: 150%;
color: #fff;
position: absolute;
top: .5rem;
right: .5rem;
display: flex;
justify-content: center;
align-items: center;
&.Series{
cursor: pointer;
transition: all .3s;
> .imgList{
background-color: #eaeaea;
height: 19.2rem;
padding: 1rem 1.3rem;
display: flex;
gap: .4rem;
justify-content: center;
> .img{
width: 9.7rem;
height: 17.2rem;
border-radius: 1rem;
overflow: hidden;
background-color: #fff;
&.null{
background-color: transparent;
}
> img{
object-fit: contain;
height: 100%;
width: 100%;
}
}
}
> .detail{
padding: 2rem 2.4rem;
> .name{
font-family: pingfang_heavy;
font-weight: 400;
font-size: 1.797rem;
line-height: 1;
}
> .bottom{
display: flex;
margin-top: .8rem;
justify-content: space-between;
> div{
font-size: 1.2rem;
font-family: pingfang_regular;
font-weight: 400;
font-size: 1.6rem;
line-height: 1;
color: #585858;
}
> div:nth-child(2){
color: #979797;
}
}
}
> .type{
width: 7.6rem;
height: 3rem;
border-radius: 2rem;
border: 1px solid #727070;
background: #7E7C7C;
font-weight: 500;
font-size: 1.4rem;
line-height: 150%;
color: #fff;
position: absolute;
top: .5rem;
right: .5rem;
display: flex;
justify-content: center;
align-items: center;
&.Series{
}
&.Single{
background-color: #ffffff;
color: #727070;
}
}
&.Single{
background-color: #ffffff;
color: #727070;
&:hover{
border: 1.5px solid #000;
}
}
&:hover{
border: 1.5px solid #000;
}
}
}
> .pagination{
margin-top: 3rem;
}

View File

@@ -11,7 +11,7 @@ import { useRouter } from "vue-router"
//])
const router = useRouter()
let getCollectionListData = reactive({
process: [],
process: ['SERIES_DESIGN','SINGLE_DESIGN'],
projectName: '',
})
@@ -21,11 +21,7 @@ const handleSearch = () => {
historyListRef.value.getCreateList()
}
const setProcess = (type:any) => {
if(type){
getCollectionListData.process = [type]
}else{
getCollectionListData.process = []
}
getCollectionListData.process = type
historyListRef.value.getCreateList()
}
const selectCollectionItem = (item:any) => {
@@ -44,9 +40,9 @@ defineExpose({})
<div class="content">
<div class="title">
<div class="left">
<div :class="{active:!getCollectionListData.process?.[0]}" @click="setProcess('')">{{$t('Seller.All')}}</div>
<div :class="{active:getCollectionListData.process[0] == 'SERIES_DESIGN'}" @click="setProcess('SERIES_DESIGN')">{{$t('Seller.SeriesDesign')}}</div>
<div :class="{active:getCollectionListData.process[0] == 'SINGLE_DESIGN'}" @click="setProcess('SINGLE_DESIGN')">{{$t('Seller.SingleDesign')}}</div>
<div :class="{active:getCollectionListData.process?.includes('SERIES_DESIGN') && getCollectionListData.process?.includes('SINGLE_DESIGN')}" @click="setProcess(['SERIES_DESIGN','SINGLE_DESIGN'])">{{$t('Seller.All')}}</div>
<div :class="{active:getCollectionListData.process[0] == 'SERIES_DESIGN' && getCollectionListData.process.length == 1}" @click="setProcess(['SERIES_DESIGN'])">{{$t('Seller.SeriesDesign')}}</div>
<div :class="{active:getCollectionListData.process[0] == 'SINGLE_DESIGN' && getCollectionListData.process.length == 1}" @click="setProcess(['SINGLE_DESIGN'])">{{$t('Seller.SingleDesign')}}</div>
</div>
<div class="right">
<div class="search_input flex flex-align-center">

View File

@@ -57,13 +57,16 @@ const chooseItem = (item:any)=>{
const next = ()=>{
if(chooseList.value.length == 0)return
let designItemIds = chooseList.value.map((item:any)=>({designOutfitUrl:item.designOutfitUrl,designItemId:item.designItemId}))
// 使用 sessionStorage 传递参数
sessionStorage.setItem('listingEditParams', JSON.stringify({
designItemIds,
type:'create',
collectionId: route.params.collectionId
}))
router.push({
path:'/home/seller/myListings/edit',
state: {
designItemIds,
type:'create',
collectionId: route.params.collectionId
}
path:'/home/seller/myListings/edit'
})
}