From d6a07e7fc75dc6065c35428d8b35db967076d1ac Mon Sep 17 00:00:00 2001 From: zhangyahui Date: Wed, 29 Apr 2026 15:21:50 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=9D=A2=E5=8C=85=E5=B1=91=E5=AF=BC?= =?UTF-8?q?=E8=88=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/index.ts | 90 ++++++++- .../SellerDashboard/BecomeSeller/index.vue | 5 +- .../MyListings/EditDetail/Status.vue | 8 - .../MyListings/EditDetail/index.vue | 7 - .../MyListings/createSelect/index.vue | 11 +- .../MyListings/createSelectItem/index.vue | 11 +- .../SellerDashboard/MyListings/main/index.vue | 7 +- src/views/SellerDashboard/seller-header.vue | 179 +++++++++++++++--- 8 files changed, 238 insertions(+), 80 deletions(-) diff --git a/src/router/index.ts b/src/router/index.ts index 01bf2611..00087983 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -1,8 +1,37 @@ import { createRouter, createWebHistory, RouteRecordRaw, createWebHashHistory } from "vue-router" +import type { RouteLocationNormalizedLoaded, RouteLocationRaw } from "vue-router" import store from "@/store" import { Https } from "@/tool/https" import { getCookie, setCookie } from "@/tool/cookie" +type SellerRouteMetaValue = T | ((route: RouteLocationNormalizedLoaded) => T) +type SellerBreadcrumbItem = { + title?: SellerRouteMetaValue + titleKey?: SellerRouteMetaValue + to?: SellerRouteMetaValue +} + +const myListingsBreadcrumb: SellerBreadcrumbItem = { + title: "My Listings", + to: { name: "myListingsIndex" } +} +const selectCollectionBreadcrumb: SellerBreadcrumbItem = { + title: "Select Collection", + to: { name: "myListingsSelect" } +} +const selectSketchBreadcrumb: SellerBreadcrumbItem = { + title: "Select Sketch" +} +const editListingBreadcrumb: SellerBreadcrumbItem = { + title: "Edit Listing Details" +} +const statusBreadcrumb: SellerBreadcrumbItem = { + titleKey: (route) => + route.params.status === "publish" + ? "SellerListEdit.listingLive" + : "SellerListEdit.draftSaved" +} + const routes: Array = [ { path: "/", @@ -167,7 +196,11 @@ const routes: Array = [ { path: "becomeSeller", name: "becomeSeller", - meta: { enter: "all" }, + meta: { + enter: "all", + sellerHeaderTitle: "Apply to Become a Seller", + sellerHeaderTip: "Join the Stylish Parade and start selling your design work" + }, component: () => import("@/views/SellerDashboard/BecomeSeller/index.vue") }, { @@ -185,7 +218,7 @@ const routes: Array = [ { path: "myListings", name: "myListings", - meta: { enter: "all" }, + meta: { enter: "all", sellerBreadcrumb: myListingsBreadcrumb }, children: [ { path: "", @@ -196,35 +229,74 @@ const routes: Array = [ { path: "index", name: "myListingsIndex", - meta: { enter: "all" }, + meta: { + enter: "all", + sellerHeaderTitle: "My Listings", + sellerHeaderTip: "Active listings and unpublished inventory.", + sellerBreadcrumbs: [myListingsBreadcrumb] + }, component: () => import("@/views/SellerDashboard/MyListings/main/index.vue") }, { path: "select", name: "myListingsSelect", - meta: { enter: "all" }, + meta: { + enter: "all", + sellerHeaderTitle: "Select Collection", + sellerBreadcrumbs: [ + myListingsBreadcrumb, + selectCollectionBreadcrumb + ] + }, component: () => import("@/views/SellerDashboard/MyListings/createSelect/index.vue") }, { path: "select/:collectionId", name: "myListingsSelectItem", - meta: { enter: "all" }, + meta: { + enter: "all", + sellerHeaderTitle: "Select Collection", + sellerBreadcrumbs: [ + myListingsBreadcrumb, + selectCollectionBreadcrumb, + selectSketchBreadcrumb + ] + }, component: () => import("@/views/SellerDashboard/MyListings/createSelectItem/index.vue") }, { path: "edit", name: "EditDetail", - meta: { enter: "all" }, + meta: { + enter: "all", + sellerHeaderTitle: "Edit Listing Details", + sellerBreadcrumbs: [ + myListingsBreadcrumb, + selectCollectionBreadcrumb, + selectSketchBreadcrumb, + editListingBreadcrumb + ] + }, component: () => import("@/views/SellerDashboard/MyListings/EditDetail/index.vue") }, { - path:'edit/status/:status', - name:'Status', - meta:{enter:'all'}, + path: "edit/status/:status", + name: "Status", + meta: { + enter: "all", + sellerHeaderTitle: "Edit Listing Details", + sellerBreadcrumbs: [ + myListingsBreadcrumb, + selectCollectionBreadcrumb, + selectSketchBreadcrumb, + editListingBreadcrumb, + statusBreadcrumb + ] + }, component: () => import("@/views/SellerDashboard/MyListings/EditDetail/Status.vue") } diff --git a/src/views/SellerDashboard/BecomeSeller/index.vue b/src/views/SellerDashboard/BecomeSeller/index.vue index d651beb0..926653a3 100644 --- a/src/views/SellerDashboard/BecomeSeller/index.vue +++ b/src/views/SellerDashboard/BecomeSeller/index.vue @@ -1,9 +1,6 @@