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

This commit is contained in:
李志鹏
2026-05-04 14:08:18 +08:00
11 changed files with 83 additions and 35 deletions

View File

@@ -1831,5 +1831,27 @@ export default {
stopSellingTitle: "停用卖家账户",
stopSellingTip: "永久停用您的卖家账户。所有商品列表和发票记录将被删除。您以后可以重新注册为卖家,但您的先前销售数据无法恢复。",
deactivate: "停用卖家账户",
newListing: "新建商品",
draftMessage: '商品已保存为草稿。您可以继续编辑,或稍后在“我的商品”中发布。',
publishMessage: '商品现已上架。买家可以浏览并购买您的设计。',
ActiveListings: '已发布商品',
Drafts: '草稿',
Cancel: '取消',
Delete: '删除',
DeleteConfirm: '确认删除吗?',
DeleteDesc: '删除后,商品将无法恢复。',
Edit: '编辑',
Draft: '草稿',
Publish: '发布',
sketchesSelected: '已选择的线稿图',
Next: '下一步',
All: '全部',
SeriesDesign: '系列设计',
SingleDesign: '单设计商品',
sketchs: '线稿图',
MyListings: '我的商品',
MyListingsInfo: '已发布商品和未发布库存',
SelectCollection: '选择商品',
SelectSketch: '选择线稿图',
}
}

View File

@@ -1885,5 +1885,27 @@ export default {
stopSellingTitle: "Deactivate seller account",
stopSellingTip: "Permanently deactivate your seller account. All listings and invoice records will be deleted. You may re-register as a seller in the future, but your previous sales data cannot be recovered.",
deactivate: "Deactivate",
newListing: "New Listing",
draftMessage: 'Product moved to drafts and stats reset.',
publishMessage: 'Item is now live on the Marketplace.',
ActiveListings: 'Active Listings',
Drafts: 'Drafts',
Cancel: 'Cancel',
Delete: 'Delete',
DeleteConfirm: 'Delete this listing?',
DeleteDesc: 'Your listing and its details will be permanently removed.',
Edit: 'Edit',
Draft: 'Draft',
Publish: 'Publish',
sketchesSelected: 'Sketches selected',
Next: 'Next',
All: 'All',
SeriesDesign: 'Series Design',
SingleDesign: 'Single Design',
sketchs: 'sketches',
MyListings: 'My Listings',
MyListingsInfo: 'Active listings and unpublished inventory',
SelectCollection: 'Select Collection',
SelectSketch: 'Select Sketch',
}
}

View File

@@ -13,15 +13,15 @@ type SellerBreadcrumbItem = {
type SellerBreadcrumbList = SellerRouteMetaValue<SellerBreadcrumbItem[]>
const myListingsBreadcrumb: SellerBreadcrumbItem = {
title: "My Listings",
title: "Seller.MyListings",
to: { name: "myListingsIndex" }
}
const selectCollectionBreadcrumb: SellerBreadcrumbItem = {
title: "Select Collection",
title: "Seller.SelectCollection",
to: { name: "myListingsSelect" }
}
const selectSketchBreadcrumb: SellerBreadcrumbItem = {
title: "Select Sketch",
title: "Seller.SelectSketch",
to: (route) => {
const collectionId =
route.params.collectionId ||
@@ -257,8 +257,8 @@ const routes: Array<RouteRecordRaw> = [
name: "myListingsIndex",
meta: {
enter: "all",
sellerHeaderTitle: "My Listings",
sellerHeaderTip: "Active listings and unpublished inventory.",
sellerHeaderTitle: "Seller.MyListings",
sellerHeaderTip: "Seller.MyListingsInfo",
sellerBreadcrumbs: [myListingsBreadcrumb]
},
component: () =>
@@ -269,7 +269,7 @@ const routes: Array<RouteRecordRaw> = [
name: "myListingsSelect",
meta: {
enter: "all",
sellerHeaderTitle: "Select Collection",
sellerHeaderTitle: "Seller.SelectCollection",
sellerBreadcrumbs: [
myListingsBreadcrumb,
selectCollectionBreadcrumb
@@ -284,7 +284,7 @@ const routes: Array<RouteRecordRaw> = [
meta: {
enter: "all",
cache: true,
sellerHeaderTitle: "Select Collection",
sellerHeaderTitle: "Seller.SelectCollection",
sellerBreadcrumbs: [
myListingsBreadcrumb,
selectCollectionBreadcrumb,

View File

@@ -68,7 +68,7 @@ defineExpose({getCreateList})
<div class="detail">
<div class="name">{{item.name}}</div>
<div class="bottom">
<div>{{item.userLikeGroupVO?.groupDetails?.length || 0}} sketchs</div>
<div>{{item.userLikeGroupVO?.groupDetails?.length || 0}} {{ $t('Seller.sketchs') }}</div>
<div>{{setPubDate(item.updateTime,t)}}</div>
</div>
</div>

View File

@@ -44,9 +44,9 @@ defineExpose({})
<div class="content">
<div class="title">
<div class="left">
<div :class="{active:!getCollectionListData.process?.[0]}" @click="setProcess('')">All</div>
<div :class="{active:getCollectionListData.process[0] == 'SERIES_DESIGN'}" @click="setProcess('SERIES_DESIGN')">Series Design</div>
<div :class="{active:getCollectionListData.process[0] == 'SINGLE_DESIGN'}" @click="setProcess('SINGLE_DESIGN')">Single Design</div>
<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>
<div class="right">
<div class="search_input flex flex-align-center">

View File

@@ -6,11 +6,13 @@ import selectMenu from '@/component/modules/selectMenu.vue'
import { Https } from '@/tool/https'
import { useRoute } from 'vue-router'
import { useStore } from 'vuex'
import { useI18n } from 'vue-i18n'
// 定义组件名称
defineOptions({
name: 'myListingsSelectItem'
})
const { t } = useI18n()
//const props = defineProps({
//})
//const emit = defineEmits([
@@ -22,15 +24,15 @@ const route = useRoute()
const domSize = ref('Small')
const domSizeList = ref([
{
label:'Small',
label:t('Header.Small'),
value:'Small',
},
{
label:'Medium',
label:t('Header.Medium'),
value:'Medium',
},
{
label:'Large',
label:t('Header.Large'),
value:'Large',
},
])
@@ -158,10 +160,10 @@ const {} = toRefs(data);
<template #right>
<div class="header-right">
<div class="chooseNum">
{{ chooseList.length }} sketches selected
{{ chooseList.length }} {{ t('Seller.sketchesSelected') }}
</div>
<div class="button" @click="next">
<span>Next</span>
<span>{{ $t('Seller.Next') }}</span>
<div class="icon">
<i class="fi fi-rr-arrow-small-right"></i>
</div>
@@ -173,7 +175,7 @@ const {} = toRefs(data);
<div class="title">
<div class="left">
<i class="fi fi-rs-comments"></i>
<span>Active Listings</span>
<span>{{ $t('Seller.ActiveListings') }}</span>
</div>
<div class="right">
<div class="generalModel_state">

View File

@@ -7,11 +7,13 @@ import deleteDrafts from './deleteDrafts.vue'
import { Https } from '@/tool/https'
import { message } from 'ant-design-vue'
import { useRouter } from 'vue-router'
import { useI18n } from 'vue-i18n'
//const props = defineProps({
//})
//const emit = defineEmits([
//])
const { t:$t } = useI18n()
let data = reactive({
showDrafts: false,
})
@@ -50,15 +52,15 @@ const config = ref({
const domSize = ref('Small')
const domSizeList = ref([
{
label:'Small',
label:$t('Header.Small'),
value:'Small',
},
{
label:'Medium',
label:$t('Header.Medium'),
value:'Medium',
},
{
label:'Large',
label:$t('Header.Large'),
value:'Large',
},
])
@@ -155,7 +157,7 @@ const draftListing = async (item: any)=>{
list2.value.unshift(item)
list.value = list.value.filter((v: any)=>v.id != item.id)
})
message.success('Product moved to drafts and stats reset.')
message.success(t('Seller.draftMessage'))
}
const publishListing = async (item: any)=>{
@@ -163,7 +165,7 @@ const publishListing = async (item: any)=>{
list.value.unshift(item)
list2.value = list2.value.filter((v: any)=>v.id != item.id)
})
message.success('Item is now live on the Marketplace.')
message.success(t('Seller.publishMessage'))
}
const editListing = (item: any)=>{
@@ -237,7 +239,7 @@ const { showDrafts } = toRefs(data);
<div class="title">
<div class="left">
<i class="fi fi-rs-comments"></i>
<span>Active Listings</span>
<span>{{ $t('Seller.ActiveListings') }}</span>
</div>
<div class="right">
<div class="generalModel_state">
@@ -302,7 +304,7 @@ const { showDrafts } = toRefs(data);
<div class="title">
<div class="left">
<i class="fi fi-rs-comments"></i>
<span>Drafts</span>
<span>{{ $t('Seller.Drafts') }}</span>
</div>
</div>
<VueDraggable

View File

@@ -36,15 +36,15 @@ const {} = toRefs(data);
<div class="maskBtn">
<div @click="$emit('editListing',item)">
<svgIcon name="seller-edit" :size="domSize == 'Small'?32:domSize == 'Medium'?40:48" />
<div>Edit</div>
<div>{{ $t('Seller.Edit') }}</div>
</div>
<div v-if="type == 'listings'" @click="$emit('draftListing',item)">
<svgIcon name="seller-draft" :size="domSize == 'Small'?32:domSize == 'Medium'?40:48" />
<div>Draft</div>
<div>{{ $t('Seller.Draft') }}</div>
</div>
<div v-else-if="type == 'drafts'" @click="$emit('publishListing',item)">
<svgIcon name="seller-share" :size="domSize == 'Small'?32:domSize == 'Medium'?40:48" />
<div>Publish</div>
<div>{{ $t('Seller.Publish') }}</div>
</div>
</div>
</div>

View File

@@ -75,8 +75,8 @@ const { showAgain } = toRefs(data);
<i class="fi fi-rr-trash"></i>
</div>
<div class="titleText">
<h1>Delete this listing?</h1>
<p>Your listing and its details will be permanently removed.</p>
<h1>{{ $t('Seller.DeleteConfirm') }}</h1>
<p>{{ $t('Seller.DeleteDesc') }}</p>
</div>
</div>
<div class="deleteContent">
@@ -85,12 +85,12 @@ const { showAgain } = toRefs(data);
</div>
<div class="detail">
<div class="name">{{ item?.title }}</div>
<div class="price">HK${{ item?.price }} · Draft</div>
<div class="price">HK${{ item?.price }} · {{ $t('Seller.Drafts') }}</div>
</div>
</div>
<div class="btnBox">
<div class="btn" @click.stop="cleardata()">Cancel</div>
<div class="btn" @click.stop="deleteDrafts()">Delete</div>
<div class="btn" @click.stop="cleardata()">{{ $t('Seller.Cancel') }}</div>
<div class="btn" @click.stop="deleteDrafts()">{{ $t('Seller.Delete') }}</div>
</div>
</a-modal>
</div>

View File

@@ -44,7 +44,7 @@ const {} = toRefs(data);
<seller-header>
<template #right>
<div class="button" @click="newListing">
<span>New Listing</span>
<span>{{ $t('Seller.newListing') }}</span>
<div class="icon">
<i class="fi fi-br-plus"></i>
</div>

View File

@@ -15,7 +15,7 @@
clickable: i < breadcrumbList.length - 1
}"
@click="onBreadcrumbClick(v, i)"
>{{ v.title }}</span
>{{ $t(v.title) }}</span
>
<span class="icon" v-show="i < breadcrumbList.length - 1">
<svg-icon name="seller-arrow_right_solid" size="10" />
@@ -109,7 +109,7 @@
const resolveTitle = (title?: RouteMetaValue<string>, titleKey?: RouteMetaValue<string>) => {
const key = resolveMetaValue(titleKey)
return key ? t(key) : resolveMetaValue(title) || ""
return title ? t(title) || "" : ""
}
const autoBreadcrumbs = computed(() => {