217 lines
4.0 KiB
Vue
217 lines
4.0 KiB
Vue
<template>
|
||
<el-dialog
|
||
v-model="dialogVisible"
|
||
title="商务洽谈"
|
||
width="500px"
|
||
:close-on-click-modal="true"
|
||
:close-on-press-escape="true"
|
||
class="business-consultation-dialog"
|
||
:z-index="9999"
|
||
>
|
||
<div class="consultation-content">
|
||
<div class="consultation-info">
|
||
<h4>专属商务顾问</h4>
|
||
<p>扫描下方二维码,添加专属商务顾问微信</p>
|
||
<p class="consultation-benefits">享受以下专属服务:</p>
|
||
<ul class="grid grid-cols-2 gap-x-6 gap-y-2 benefits-list">
|
||
<li>一对一专属服务</li>
|
||
<li>定制化解决方案</li>
|
||
<li>优先技术支持</li>
|
||
<li>专属价格优惠</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="qr-code-container">
|
||
<div class="qr-code-wrapper">
|
||
<img
|
||
src="/qrcode.jpg"
|
||
alt="商务洽谈二维码"
|
||
class="qr-code-image"
|
||
@error="handleQrCodeError"
|
||
/>
|
||
<div v-if="qrCodeError" class="qr-code-placeholder">
|
||
<i class="el-icon-chat-dot-round"></i>
|
||
<span>二维码加载失败</span>
|
||
</div>
|
||
</div>
|
||
<p class="qr-code-tip">请使用微信扫描二维码</p>
|
||
<!-- INSERT_YOUR_CODE -->
|
||
<el-button
|
||
class="mt-6"
|
||
type="primary"
|
||
@click="closeDialog"
|
||
>
|
||
关闭
|
||
</el-button>
|
||
</div>
|
||
</div>
|
||
|
||
</el-dialog>
|
||
</template>
|
||
|
||
<script setup>
|
||
import { ref, watch } from 'vue'
|
||
|
||
// Props
|
||
const props = defineProps({
|
||
visible: {
|
||
type: Boolean,
|
||
default: false
|
||
}
|
||
})
|
||
|
||
// Emits
|
||
const emit = defineEmits(['update:visible'])
|
||
|
||
// 响应式数据
|
||
const dialogVisible = ref(false)
|
||
const qrCodeError = ref(false)
|
||
|
||
// 监听visible属性变化
|
||
watch(() => props.visible, (newVal) => {
|
||
if (newVal !== dialogVisible.value) {
|
||
dialogVisible.value = newVal
|
||
}
|
||
})
|
||
|
||
// 监听对话框状态变化
|
||
watch(dialogVisible, (newVal) => {
|
||
if (newVal !== props.visible) {
|
||
emit('update:visible', newVal)
|
||
}
|
||
})
|
||
|
||
// 处理二维码加载错误
|
||
const handleQrCodeError = () => {
|
||
qrCodeError.value = true
|
||
}
|
||
|
||
// 关闭对话框
|
||
const closeDialog = () => {
|
||
dialogVisible.value = false
|
||
}
|
||
</script>
|
||
|
||
<style scoped>
|
||
.business-consultation-dialog {
|
||
border-radius: 12px;
|
||
}
|
||
|
||
|
||
.consultation-content {
|
||
text-align: center;
|
||
padding: 20px 0;
|
||
}
|
||
|
||
.consultation-info h4 {
|
||
color: #303133;
|
||
margin-bottom: 12px;
|
||
font-size: 18px;
|
||
font-weight: 600;
|
||
}
|
||
|
||
.consultation-info p {
|
||
color: #606266;
|
||
margin-bottom: 8px;
|
||
font-size: 14px;
|
||
line-height: 1.5;
|
||
}
|
||
|
||
.consultation-benefits {
|
||
color: #409eff !important;
|
||
font-weight: 500;
|
||
margin-top: 16px !important;
|
||
}
|
||
|
||
.benefits-list {
|
||
list-style: none;
|
||
padding: 0;
|
||
margin: 12px 0 20px 0;
|
||
text-align: left;
|
||
}
|
||
|
||
.benefits-list li {
|
||
color: #606266;
|
||
font-size: 14px;
|
||
line-height: 1.6;
|
||
margin-bottom: 6px;
|
||
padding-left: 20px;
|
||
position: relative;
|
||
}
|
||
|
||
.benefits-list li::before {
|
||
content: "✓";
|
||
position: absolute;
|
||
left: 0;
|
||
color: #67c23a;
|
||
font-weight: bold;
|
||
}
|
||
|
||
.qr-code-container {
|
||
margin-top: 24px;
|
||
}
|
||
|
||
.qr-code-wrapper {
|
||
position: relative;
|
||
display: inline-block;
|
||
margin-bottom: 12px;
|
||
}
|
||
|
||
.qr-code-image {
|
||
width: 200px;
|
||
border-radius: 8px;
|
||
border: 1px solid #e4e7ed;
|
||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||
}
|
||
|
||
.qr-code-placeholder {
|
||
width: 160px;
|
||
height: 160px;
|
||
border-radius: 8px;
|
||
border: 1px solid #e4e7ed;
|
||
background-color: #f5f7fa;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
justify-content: center;
|
||
color: #909399;
|
||
}
|
||
|
||
.qr-code-placeholder i {
|
||
font-size: 32px;
|
||
margin-bottom: 8px;
|
||
}
|
||
|
||
.qr-code-placeholder span {
|
||
font-size: 12px;
|
||
}
|
||
|
||
.qr-code-tip {
|
||
color: #909399;
|
||
font-size: 12px;
|
||
margin: 0;
|
||
}
|
||
|
||
.dialog-footer {
|
||
text-align: center;
|
||
}
|
||
|
||
/* 响应式设计 */
|
||
@media (max-width: 480px) {
|
||
.business-consultation-dialog {
|
||
width: 90% !important;
|
||
margin: 0 auto;
|
||
}
|
||
|
||
.qr-code-image,
|
||
.qr-code-placeholder {
|
||
width: 120px;
|
||
height: 120px;
|
||
}
|
||
|
||
.consultation-content {
|
||
padding: 16px 0;
|
||
}
|
||
}
|
||
</style>
|