You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

141 lines
4.4 KiB

6 months ago
<!--商户头像 资质 星级等-->
<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>