Files
Aida_Purchaser_Front/src/views/brandDetail/index.vue

108 lines
2.4 KiB
Vue
Raw Normal View History

2026-05-11 16:16:59 +08:00
<script setup lang="ts">
import { ref, onMounted, onUnmounted, reactive, toRefs } from "vue";
import CommodityList from "./commodity-list.vue";
import MerchantInfo from "./merchant-info.vue";
2026-05-21 11:25:11 +08:00
import { useRouter, useRoute } from "vue-router";
2026-05-11 16:16:59 +08:00
import myEvent from '@/utils/myEvent'
2026-05-21 14:36:29 +08:00
import { ElMessage } from 'element-plus'
2026-05-21 11:25:11 +08:00
import { getDesignerDetail } from '@/api/brand'
2026-05-21 14:36:29 +08:00
import { AddShoppingCart } from '@/api/shoppingCart'
2026-05-22 13:04:33 +08:00
import brandDetailBg from '@/assets/images/brand/brandDetailBg.png'
2026-05-21 11:25:11 +08:00
2026-05-11 16:16:59 +08:00
//const props = defineProps({
//})
//const emit = defineEmits([
//])
const router = useRouter()
2026-05-21 11:25:11 +08:00
const route = useRoute()
const designerDetail = ref({
avatar: '',
brandBanner: '',
description: '',
email: '',
mobile: '',
ownerName: '',
shopName: '',
socialLinks: '[]',
2026-05-11 16:16:59 +08:00
})
2026-05-21 11:25:11 +08:00
2026-05-11 16:16:59 +08:00
const addShopping = (item) => {
2026-05-21 14:36:29 +08:00
if(!item.price) return ElMessage.warning('Please log in first.')
AddShoppingCart({listingIds:[item.id]}).then((res)=>{
item.shopName = designerDetail.value.shopName
myEvent.emit('addShopping', item)
})
2026-05-11 16:16:59 +08:00
}
const openDetail = (item) => {
2026-05-21 14:36:29 +08:00
router.push({name: 'digitalItemDetail', params: {id: item.id}})
2026-05-11 16:16:59 +08:00
}
2026-05-21 11:25:11 +08:00
const getDetail = ()=>{
let data = {
sellerId: route.params.id,
}
getDesignerDetail(data,true).then((res)=>{
designerDetail.value = res
})
}
2026-05-11 16:16:59 +08:00
onMounted(()=>{
2026-05-21 11:25:11 +08:00
getDetail()
2026-05-11 16:16:59 +08:00
})
onUnmounted(()=>{
})
defineExpose({})
</script>
<template>
<div class="brand">
<div class="header-img">
2026-05-22 13:04:33 +08:00
<img :src="designerDetail.brandBanner || brandDetailBg" alt="">
2026-05-11 16:16:59 +08:00
</div>
<div class="content">
<div class="merchant-info">
2026-05-21 11:25:11 +08:00
<MerchantInfo :designerDetail="designerDetail"></MerchantInfo>
2026-05-11 16:16:59 +08:00
</div>
<div class="commodity-list">
2026-05-21 14:36:29 +08:00
<CommodityList :id="route.params.id" @addShopping="addShopping" @openDetail="openDetail"></CommodityList>
2026-05-11 16:16:59 +08:00
</div>
</div>
<Footer></Footer>
</div>
</template>
<style lang="less" scoped>
.brand{
width: 100%;
height: 100%;
position: relative;
overflow-y: auto;
.header-img{
width: 100%;
>img{
width: 100%;
}
}
.content{
display: flex;
height: auto;
2026-05-21 14:36:29 +08:00
// align-items: flex-start;
2026-05-11 16:16:59 +08:00
.merchant-info{
width: 40rem;
padding-left: 12.7rem;
padding-right: 2.7rem;
height: var(--app-view-height);
overflow-y: auto;
position: sticky;
top: 0;
&::-webkit-scrollbar{
width: 0;
height: 0;
}
}
.commodity-list{
flex: 1;
border-left: 0.5px solid #585858;
border-right: 0.5px solid #585858;
margin-right: 9rem;
}
}
}
</style>