LtyhShop/pc/components/merchantNews.vue
2025-04-09 14:59:26 +08:00

141 lines
4.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--商户头像 资质 星级等-->
<script setup lang="ts">
import { toRefs } from 'vue'
const props = defineProps({
//商户信息
merchantInfo: {
type: Object,
default: null,
},
//商户id
merId: {
type: Number,
default: 0,
},
//使用的来源,productDetail:商品页面使用
fromType: {
type: String,
default: '',
},
})
const { merchantInfo,merId,fromType } = toRefs(props)
const useMerchants = useMerchant()
//关注
const emit = defineEmits(['handleSubmitSuccess'])
const handleFollow = () =>{
if(merchantInfo.value.isCollect){
//取消关注
useMerchants.onUnfollowMerchant(merId?.value).then(() => {
emit('handleSubmitSuccess')
})
}else{
// 关注
useMerchants.onfollowMerchant(merId?.value).then(() => {
emit('handleSubmitSuccess')
})
}
}
// 跳入页面
import { linkNavigateTo } from '~/utils/util'
import useOrder from "~/composables/useOrder";
const handleGoPage = () => {
linkNavigateTo(`/merchant/merchant_home`, { merId: merId.value })
}
//营业执照
const { bool: dialogVisible, DialogOpen, DialogClose } = useDialog()
//联系客服
const { chatConfig } = useOrder()
const handleChat = async () => {
let chatConfigData = {
serviceLink:merchantInfo?.value.serviceLink,
servicePhone:merchantInfo?.value.servicePhone,
serviceType:merchantInfo?.value.serviceType
}
await chatConfig(chatConfigData)
}
</script>
<template>
<div>
<div class="w-210px b-rd-12px bg-#FFFFFF overflow-hidden flex-col px-20px py-20px merchantNews">
<el-image @click="handleGoPage" class="w-60px h-60px b-rd-50%" :class="fromType ==='productDetail'?'cursors':''" :src="merchantInfo.avatar" lazy style="margin: 0 auto"></el-image>
<div @click="handleGoPage" class="flex-center w-170px mt-16px mb-20px" :class="fromType ==='productDetail'?'cursors':''">
<div v-if="merchantInfo.isSelf" class="text-12px bg-color text-#fff b-rd-2px py-2px mr-6px px-4px lh-12px min-w-33px">自营</div>
<div class="fontColor333 text-14px">{{ merchantInfo.name }}</div>
</div>
<div v-if="fromType !=='productDetail'" @click="DialogOpen()" class="text-12px text-#999 mb-15px cursors">资质证照:<img src="@/assets/images/zhizhao.png"></div>
<div class="text-12px text-#999 flex-y-center">店铺星级<el-rate size="small" v-model="merchantInfo.starLevel" disabled /></div>
<el-divider border-style="dashed" />
<div class="acea-row">
<div v-if="fromType ==='productDetail'" class="cursors w-79px h-30px lh-29px borderSol text-12px text-#333 text-center b-rd-15px mr-10px" @click="handleGoPage">进店逛逛</div>
<div v-else @click="handleChat" class="cursors w-79px h-30px lh-29px borderSol text-12px text-#333 text-center b-rd-15px mr-10px">联系客服</div>
<div @click="handleFollow" :class="merchantInfo.isCollect?'borderSol text-#333':'borderSolE9 font-color'" class="w-79px h-30px lh-29px text-12px text-center b-rd-15px cursors">{{merchantInfo.isCollect?'已关注':'关注店铺'}}</div>
</div>
</div>
<el-dialog
class="merchantNewsDialog"
v-model="dialogVisible"
:append-to-body="true"
:show-close="false"
center
align-center
width="532px"
title="资质证照"
>
<span class="closeBtn iconfont icon-danchuangguanbi" @click="DialogClose()"></span>
<div class="">
<el-carousel :interval="5000" height="340px" arrow="always" class="w-100% m-auto">
<el-carousel-item v-for="item in JSON.parse(merchantInfo.qualificationPicture)" :key="item" class="w-340px h-340px el-image">
<el-image :src="item" class="w-340px h-340px el-image b-rd-12px" fit="fill" />
</el-carousel-item>
</el-carousel>
</div>
</el-dialog>
</div>
</template>
<style>
.merchantNews{
:deep(.el-dialog__header){
padding: 30px 0 !important;
}
}
</style>
<style scoped lang="scss">
//星级
:deep(.el-rate){
height:auto !important;
--el-rate-icon-margin: 0 !important;
--el-rate-fill-color:#E93323 !important;
--el-rate-icon-size: 12px !important;
}
.merchantNewsDialog{
.el-carousel__item{
width: 340px !important;
left: 71px !important;
}
}
.closeBtn {
color: #fff;
position: absolute;
top: -33px;
right: -33px;
text-align: center;
font-size: 24px;
cursor: pointer;
}
.merchantNews{
:deep(.el-divider--horizontal){
margin: 15px 0 15px 0 !important;
}
}
</style>