合并代码

This commit is contained in:
szz
2025-08-05 15:25:28 +08:00
parent 13a5668a9f
commit 0ec9fab7ff
3 changed files with 6 additions and 183 deletions

View File

@@ -7,7 +7,6 @@
<h2>{{ agentInfo?.real_name }} - {{ agentInfo?.city_name }}{{ agentInfo?.district_name }}代理</h2>
<p>手机号{{ agentInfo?.phone }}</p>
</div>
<!-- <el-button type="danger" @click="handleLogout">退出登录</el-button> -->
<el-button
style="background-color: #409EFF; border-color: #409EFF; color: white; width: 84px;height: 32px;"
@click="handleLogout"
@@ -19,7 +18,7 @@
<!-- 统计卡片 -->
<div class="stats-grid">
<!-- 第一行 "招募商户" "总佣金" 水平排列 -->
<!-- 保留 "招募商户" "总佣金" -->
<div class="stats-row">
<div class="stat-card">
<div class="stat-icon merchant">
@@ -43,47 +42,6 @@
</div>
</div>
</div>
<!-- 第二行"已使用二维码" 单独一行 -->
<div class="stat-card single-stat">
<div class="stat-icon code">
<el-icon><Document /></el-icon>
</div>
<div class="stat-content">
<div class="stat-number">{{ stats.used_codes || 0 }}</div>
<div class="stat-label">已使用二维码</div>
<div class="stat-sub">有效{{ stats.active_codes || 0 }}</div>
</div>
</div>
</div>
<!-- 功能区域 -->
<div class="function-area">
<!-- 生成邀请码 -->
<div class="function-card">
<div class="card-header">
<h3>生成注册二维码</h3>
<el-button type="primary" @click="generateInviteCode" :loading="generating">
生成新的邀请二维码
</el-button>
</div>
<div v-if="currentInviteCode" class="invite-code-section">
<div class="qr-code-container">
<img :src="currentInviteCode.qr_code" alt="邀请二维码" class="qr-code" />
<div class="qr-actions">
<el-button type="success" size="small" @click="saveQRCode">
保存到手机
</el-button>
</div>
</div>
<div class="code-info">
<p><strong>过期时间</strong>{{ formatDate(currentInviteCode.expires_at) }}</p>
<p class="code-tip">商户扫描此二维码可直接进入注册页面</p>
</div>
</div>
</div>
</div>
<!-- 标签页 -->
@@ -224,7 +182,7 @@
import { ref, reactive, onMounted } from 'vue'
import { useRouter } from 'vue-router'
import { ElMessage, ElMessageBox } from 'element-plus'
import { User, Money, Document } from '@element-plus/icons-vue'
import { User, Money } from '@element-plus/icons-vue'
import api from '@/utils/api'
const router = useRouter()
@@ -233,8 +191,6 @@ const router = useRouter()
const agentInfo = ref(null)
const stats = ref({})
const activeTab = ref('merchants')
const generating = ref(false)
const currentInviteCode = ref(null)
// 商户数据
const merchants = ref([])
@@ -313,58 +269,6 @@ const loadCommissions = async () => {
}
}
const generateInviteCode = async () => {
if (!agentInfo.value) return
generating.value = true
try {
const { data } = await api.post('/agents/generate-invite-code', {
agent_id: agentInfo.value.id
})
currentInviteCode.value = data.data
ElMessage.success('二维码生成成功')
// 刷新统计信息
loadStats()
} catch (error) {
if (error.response?.data?.message) {
ElMessage.error(error.response.data.message)
} else {
ElMessage.error('生成二维码失败')
}
} finally {
generating.value = false
}
}
/**
* 保存二维码图片到设备
*/
const saveQRCode = () => {
if (!currentInviteCode.value?.qr_code) {
ElMessage.error('没有可保存的二维码')
return
}
try {
// 创建一个临时的a标签用于下载
const link = document.createElement('a')
link.href = currentInviteCode.value.qr_code
link.download = `注册二维码_${new Date().toISOString().slice(0, 10)}.png`
// 触发下载
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
ElMessage.success('二维码已保存到设备')
} catch (error) {
console.error('保存二维码失败:', error)
ElMessage.error('保存二维码失败')
}
}
const handleLogout = async () => {
try {
await ElMessageBox.confirm('确定要退出登录吗?', '确认退出', {
@@ -416,10 +320,6 @@ const getCommissionStatusText = (status) => {
return texts[status] || status
}
const formatDate = (date) => {
return new Date(date).toLocaleDateString('zh-CN')
}
const formatDateTime = (date) => {
return new Date(date).toLocaleString('zh-CN')
}
@@ -474,12 +374,11 @@ onMounted(() => {
.stats-row {
display: flex;
gap: 12px;
margin-bottom: 12px; /* 与下方 "已使用二维码" 卡片间距 */
}
/* 统计卡片通用样式 */
.stat-card {
flex: 1; /* 自动平分空间 */
flex: 1;
background: white;
border-radius: 8px;
padding: 16px;
@@ -490,11 +389,6 @@ onMounted(() => {
box-sizing: border-box;
}
/* "已使用二维码" 单独一行 */
.stat-card.single-stat {
width: 100%; /* 占满整行 */
}
/* 图标样式 */
.stat-icon {
width: 40px;
@@ -514,9 +408,6 @@ onMounted(() => {
.stat-icon.commission {
background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
}
.stat-icon.code {
background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
}
/* 文字样式 */
.stat-number {
@@ -535,72 +426,6 @@ onMounted(() => {
color: #909399;
}
.function-area {
padding: 0 24px 24px;
}
.function-card {
background: white;
border-radius: 8px;
padding: 24px;
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
width: 343px;
}
.card-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 24px;
}
.card-header h3 {
margin: 0;
font-size: 16px;
color: #303133;
}
.invite-code-section {
display: flex;
gap: 24px;
align-items: center;
}
.qr-code-container {
flex-shrink: 0;
display: flex;
flex-direction: column;
align-items: center;
gap: 12px;
}
.qr-code {
width: 150px;
height: 150px;
border: 1px solid #e4e7ed;
border-radius: 8px;
}
.qr-actions {
display: flex;
justify-content: center;
}
.code-info {
flex: 1;
}
.code-info p {
margin: 0 0 8px 0;
font-size: 14px;
color: #606266;
}
.code-tip {
color: #909399 !important;
font-size: 12px !important;
}
.main-tabs {
padding: 0 24px;
}
@@ -625,7 +450,7 @@ onMounted(() => {
}
:deep(.el-tabs__content) {
background: white;
background: #a9deffae;
border-radius: 8px;
padding: 24px;
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);

View File

@@ -8,9 +8,7 @@
<!-- 客服二维码图片 -->
<div class="customer-service-container">
<img src="/imgs/mainpage/客服码.jpg" alt="客服码" class="customer-service-img">
<div class="customer-service-text">扫码联系客服长按识别</div>
<img src="/imgs/mainpage/提示.png" alt="提示" class="customer-service-img">
<div class="customer-service-text">点击关于我们查看客服详情</div>
<div class="customer-service-text">扫码联系客服长按识别</div>
</div>
</div>
</template>

View File

@@ -635,7 +635,7 @@ export default {
} else if (amount <= 15000) {
return '分成3笔随机金额'
} else {
return '随机分拆每笔100-10000元'
return '随机分拆每笔1000-8000元'
}
},