1063 行
65 KiB
HTML
1063 行
65 KiB
HTML
{include file="/shopro/common/script" /}
|
||
|
||
<style>
|
||
.agent-detail {
|
||
background: #fff;
|
||
height: 100vh;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.agent-detail .panel-block {
|
||
height: 100%;
|
||
}
|
||
|
||
.agent-detail .detail-header-bar {
|
||
padding: 12px 16px;
|
||
margin-bottom: 16px;
|
||
background: #fff;
|
||
border-radius: 6px;
|
||
border: 1px solid var(--sa-border);
|
||
}
|
||
|
||
.agent-detail .detail-title-text {
|
||
font-size: 15px;
|
||
font-weight: 600;
|
||
margin-left: 12px;
|
||
color: var(--sa-title);
|
||
}
|
||
|
||
.agent-detail .agent-detail-scrollbar>.el-scrollbar__wrap {
|
||
overflow-x: hidden;
|
||
}
|
||
|
||
.agent-detail .agent-detail-scrollbar>.el-scrollbar__bar.is-horizontal {
|
||
display: none;
|
||
}
|
||
|
||
.agent-detail .agent-content {
|
||
min-height: 450px;
|
||
height: auto;
|
||
line-height: 1;
|
||
padding: 20px;
|
||
background: var(--sa-table-header-bg);
|
||
border-radius: 8px;
|
||
margin: 0 0 20px;
|
||
}
|
||
|
||
.agent-detail .user-content .refresh {
|
||
line-height: 16px;
|
||
font-size: 12px;
|
||
font-weight: 400;
|
||
color: var(--sa-font);
|
||
cursor: pointer;
|
||
}
|
||
|
||
.agent-detail .user-content .refresh .el-icon {
|
||
font-size: 16px;
|
||
margin-right: 4px;
|
||
}
|
||
|
||
.agent-detail .user-content .nickname {
|
||
line-height: 22px;
|
||
font-size: 16px;
|
||
font-weight: 500;
|
||
color: var(--sa-subtitle);
|
||
}
|
||
|
||
.agent-detail .user-content .status {
|
||
font-size: 12px;
|
||
font-weight: 400;
|
||
color: #999999;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.agent-content .el-form-item--small {
|
||
margin-bottom: 8px;
|
||
}
|
||
|
||
.agent-detail .user-content .commission-item {
|
||
width: 30%;
|
||
line-height: 18px;
|
||
font-size: 14px;
|
||
font-weight: 500;
|
||
}
|
||
|
||
.agent-detail .user-content .commission-item .title {
|
||
height: 24px;
|
||
line-height: 24px;
|
||
font-size: 12px;
|
||
font-weight: 400;
|
||
margin-bottom: 4px;
|
||
}
|
||
|
||
.agent-detail .apply-content .sa-image {
|
||
width: 140px;
|
||
height: 90px;
|
||
}
|
||
|
||
.agent-detail .dashboard-content {
|
||
height: fit-content;
|
||
}
|
||
|
||
.agent-detail .dashboard-content .title {
|
||
height: 18px;
|
||
line-height: 18px;
|
||
font-size: 14px;
|
||
font-weight: 500;
|
||
color: var(--sa-title);
|
||
margin-bottom: 16px;
|
||
}
|
||
|
||
.agent-detail .dashboard-content>.el-col {
|
||
border-bottom: 1px dashed var(--sa-border);
|
||
margin-bottom: 16px;
|
||
padding-bottom: 8px;
|
||
}
|
||
|
||
.agent-detail .dashboard-content>.el-col:last-of-type {
|
||
border-bottom: none;
|
||
margin-bottom: 0;
|
||
padding-bottom: 0;
|
||
}
|
||
|
||
.agent-detail .dashboard-content .item {
|
||
margin-bottom: 16px;
|
||
}
|
||
|
||
.agent-detail .dashboard-content .left {
|
||
line-height: 16px;
|
||
font-size: 12px;
|
||
font-weight: 400;
|
||
color: var(--sa-subfont);
|
||
margin-bottom: 8px;
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
|
||
.agent-detail .dashboard-content .item {
|
||
line-height: 22px;
|
||
font-size: 18px;
|
||
font-weight: 500;
|
||
color: var(--sa-font);
|
||
}
|
||
|
||
.agent-detail .dashboard-content .unit {
|
||
font-size: 12px;
|
||
font-weight: 400;
|
||
color: var(--sa-font);
|
||
margin-left: 4px;
|
||
}
|
||
|
||
.agent-detail .rewards-item {
|
||
margin-right: 8px;
|
||
|
||
}
|
||
|
||
.agent-detail .rewards-item:last-of-type {
|
||
margin-right: 0;
|
||
}
|
||
|
||
/* 运营官全景看板样式 */
|
||
.agent-detail .op-dashboard {
|
||
background: #fff;
|
||
border: 1px solid var(--sa-border);
|
||
border-radius: 8px;
|
||
padding: 18px 20px;
|
||
margin-bottom: 20px;
|
||
}
|
||
.agent-detail .op-section-title {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
font-size: 14px;
|
||
font-weight: 600;
|
||
color: var(--sa-title);
|
||
margin: 16px 0 12px;
|
||
padding-bottom: 8px;
|
||
border-bottom: 1px dashed var(--sa-border);
|
||
}
|
||
.agent-detail .op-section-title:first-of-type {
|
||
margin-top: 4px;
|
||
}
|
||
.agent-detail .op-radar-card {
|
||
background: linear-gradient(135deg, #f8fafc 0%, #edf2f7 100%);
|
||
border: 1px solid #e2e8f0;
|
||
border-radius: 8px;
|
||
padding: 14px 18px;
|
||
margin-bottom: 18px;
|
||
}
|
||
.agent-detail .op-radar-header {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
margin-bottom: 12px;
|
||
}
|
||
.agent-detail .op-radar-title {
|
||
font-size: 14px;
|
||
font-weight: 600;
|
||
color: #2d3748;
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 8px;
|
||
}
|
||
.agent-detail .op-radar-body {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
gap: 12px;
|
||
}
|
||
.agent-detail .op-radar-metric {
|
||
background: #fff;
|
||
border: 1px solid #e2e8f0;
|
||
border-radius: 6px;
|
||
padding: 10px 14px;
|
||
flex: 1;
|
||
min-width: 180px;
|
||
box-shadow: 0 1px 3px rgba(0,0,0,0.02);
|
||
}
|
||
.agent-detail .op-radar-metric .m-label {
|
||
font-size: 12px;
|
||
color: #718096;
|
||
margin-bottom: 6px;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
}
|
||
.agent-detail .op-radar-metric .m-val {
|
||
font-size: 16px;
|
||
font-weight: 600;
|
||
color: #1a202c;
|
||
}
|
||
|
||
.agent-detail .op-grid-box {
|
||
background: #fbfcfe;
|
||
border: 1px solid #edf2f7;
|
||
border-radius: 6px;
|
||
padding: 12px 14px;
|
||
min-height: 120px;
|
||
box-sizing: border-box;
|
||
margin-bottom: 12px;
|
||
transition: all 0.2s ease;
|
||
}
|
||
.agent-detail .op-grid-box:hover {
|
||
border-color: #cbd5e0;
|
||
box-shadow: 0 2px 8px rgba(0,0,0,0.05);
|
||
}
|
||
.agent-detail .op-grid-box .box-title {
|
||
font-size: 13px;
|
||
font-weight: 600;
|
||
color: #334155;
|
||
margin-bottom: 10px;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
}
|
||
.agent-detail .op-stat-row {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
font-size: 13px;
|
||
line-height: 24px;
|
||
}
|
||
.agent-detail .op-stat-row .stat-label {
|
||
color: #64748b;
|
||
font-size: 12px;
|
||
}
|
||
.agent-detail .op-stat-row .stat-val {
|
||
font-weight: 600;
|
||
color: #1e293b;
|
||
}
|
||
.agent-detail .op-stat-row .stat-val.primary { color: #3b82f6; }
|
||
.agent-detail .op-stat-row .stat-val.success { color: #10b981; }
|
||
.agent-detail .op-stat-row .stat-val.warning { color: #f59e0b; }
|
||
.agent-detail .op-stat-row .stat-val.danger { color: #ef4444; }
|
||
.agent-detail .op-stat-row .stat-val.purple { color: #8b5cf6; }
|
||
.agent-detail .op-stat-row .stat-val.cyan { color: #06b6d4; }
|
||
</style>
|
||
|
||
<div id="detail" class="agent-detail panel panel-default panel-intro" v-cloak>
|
||
<el-container class="panel-block">
|
||
<el-main>
|
||
<el-scrollbar class="agent-detail-scrollbar" height="100%">
|
||
<div class="detail-header-bar sa-flex sa-row-between">
|
||
<div class="sa-flex">
|
||
<el-button icon="Back" size="small" @click="onBack">返回</el-button>
|
||
<span class="detail-title-text">
|
||
分销商详情
|
||
<template v-if="state.data.user">
|
||
- {{ state.data.user.nickname || state.data.user_id }}
|
||
</template>
|
||
<template v-else-if="state.id">
|
||
#{{ state.id }}
|
||
</template>
|
||
</span>
|
||
</div>
|
||
<div class="sa-flex">
|
||
<el-button icon="RefreshRight" size="small" circle @click="getDetail" title="刷新"></el-button>
|
||
</div>
|
||
</div>
|
||
<el-row :gutter="20">
|
||
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
|
||
<div class="user-content agent-content">
|
||
<div class="title sa-flex sa-row-between">
|
||
<span>分销商信息</span>
|
||
<span class="refresh sa-flex" @click="getDetail">
|
||
<el-icon>
|
||
<refresh-right />
|
||
</el-icon>
|
||
刷新
|
||
</span>
|
||
</div>
|
||
<div v-if="state.data.user" class="sa-flex sa-row-center">
|
||
<sa-image :url="state.data.user.avatar" size="80" radius="40">
|
||
</sa-image>
|
||
</div>
|
||
<div class="nickname sa-flex sa-row-center mt-1">
|
||
{{
|
||
state.data.user
|
||
? state.data.user.nickname
|
||
: state.data.user_id
|
||
}}
|
||
</div>
|
||
<el-form size="small" label-position="right" label-width="116px" style="margin-top: 12px;">
|
||
<div style="font-weight: 600; font-size: 13px; color: var(--sa-title); margin: 8px 0 12px; padding-bottom: 4px; border-bottom: 1px solid var(--sa-border);">
|
||
基础分销信息
|
||
</div>
|
||
<el-form-item label="分销商状态:">
|
||
<el-dropdown popper-class="agent-popover" trigger="click" @command="onChangeStatus">
|
||
<span class="status" :style="{
|
||
color: statusStyle[state.data.status]?.color,
|
||
}">
|
||
{{ state.data.status_text }}
|
||
<el-icon>
|
||
<arrow-down />
|
||
</el-icon>
|
||
</span>
|
||
<template #dropdown>
|
||
{if $auth->check('shopro/commission/agent/edit')}
|
||
<el-dropdown-menu>
|
||
<el-dropdown-item class="status" :style="{
|
||
color: value.color,
|
||
}" v-for="(value, key) in statusStyle" :key="key" :command="key">{{ value.label }}
|
||
</el-dropdown-item>
|
||
</el-dropdown-menu>
|
||
{/if}
|
||
</template>
|
||
</el-dropdown>
|
||
</el-form-item>
|
||
<el-form-item label="分销等级:">
|
||
<template v-if="state.data.level_info">
|
||
<div>{{ state.data.level_info.name }}</div>
|
||
<div class="ml-1" style="color: var(--sa-subfont);">(等级{{ state.data.level_info.level }})</div>
|
||
</template>
|
||
<template v-if="!state.data.level_info">
|
||
{{ state.data.level }}
|
||
</template>
|
||
{if $auth->check('shopro/commission/agent/edit')}
|
||
<el-button class="ml-2" type="primary" link @click="onChangeLevel">更换</el-button>
|
||
{/if}
|
||
</el-form-item>
|
||
<el-form-item v-if="state.data.level_status > 0" label="待升级等级:">
|
||
<div v-if="state.data.level_status_info">
|
||
{{ state.data.level_status_info.name }}
|
||
</div>
|
||
<div>(等级{{ state.data.level_status || '-' }})</div>
|
||
{if $auth->check('shopro/commission/agent/edit')}
|
||
<el-button class="ml-2" type="primary" link
|
||
@click="onEdit({level_status: state.data.level_status})">同意</el-button>
|
||
<el-button type="danger" link @click="onEdit({level_status: 0})">拒绝</el-button>
|
||
{/if}
|
||
</el-form-item>
|
||
<el-form-item label="上级分销商:">
|
||
<sa-user-profile type="agent" :user="state.data.user?.parent_user"
|
||
:id="state.data.user?.parent_user_id" :isavatar="false"></sa-user-profile>
|
||
<el-button class="ml-2" type="primary" link @click="onChangeParentUser">更换
|
||
</el-button>
|
||
</el-form-item>
|
||
<el-form-item v-if="state.data.partner_mode" label="佣金规则:">
|
||
<div class="tip" style="color: var(--sa-subfont); line-height: 1.4;">
|
||
已切换为收益中心固定金额规则,旧百分比不再生效。
|
||
</div>
|
||
</el-form-item>
|
||
<el-form-item v-else label="佣金比例:">
|
||
<div class="commission-item">
|
||
<div class="title">一级(自购)</div>
|
||
<div>
|
||
{{
|
||
state.data.level_info
|
||
? state.data.level_info.commission_rules.commission_1
|
||
: '0.00'
|
||
}}%
|
||
</div>
|
||
</div>
|
||
<div class="commission-item">
|
||
<div class="title">二级</div>
|
||
<div>
|
||
{{
|
||
state.data.level_info
|
||
? state.data.level_info.commission_rules.commission_2
|
||
: '0.00'
|
||
}}%
|
||
</div>
|
||
</div>
|
||
<div class="commission-item">
|
||
<div class="title">三级</div>
|
||
<div>
|
||
{{
|
||
state.data.level_info
|
||
? state.data.level_info.commission_rules.commission_3
|
||
: '0.00'
|
||
}}%
|
||
</div>
|
||
</div>
|
||
</el-form-item>
|
||
<el-form-item label="允许自动升级:">
|
||
{if $auth->check('shopro/commission/agent/edit')}
|
||
<el-switch v-model="state.data.upgrade_lock" :active-value="0" :inactive-value="1"
|
||
@change="state.data.user_id?onEdit({upgrade_lock: state.data.upgrade_lock}): ''">
|
||
</el-switch>
|
||
{/if}
|
||
</el-form-item>
|
||
<el-form-item label="直推奖(推三返一):">
|
||
<div>第 {{ state.data.direct_order_seq || 0 }} 单,{{ state.data.next_push3_text || '' }}</div>
|
||
</el-form-item>
|
||
<el-form-item label="累计推荐提成:">
|
||
<div>{{ state.data.push3_cash_income || '0.00' }} 元</div>
|
||
</el-form-item>
|
||
|
||
<div style="font-weight: 600; font-size: 13px; color: var(--sa-title); margin: 16px 0 10px; padding-bottom: 4px; border-bottom: 1px solid var(--sa-border);" class="sa-flex sa-row-between">
|
||
<span>角色身份与进阶权益</span>
|
||
{if $auth->check('shopro/commission/agent/edit')}
|
||
<el-button type="primary" size="small" link @click="onOpenIdentity">开通 / 调整身份</el-button>
|
||
{/if}
|
||
</div>
|
||
|
||
<template v-if="state.data.is_advanced">
|
||
<el-form-item label="身份标签:">
|
||
<el-tag type="warning" effect="dark" size="small">{{ state.data.identity_text }}</el-tag>
|
||
</el-form-item>
|
||
<el-form-item :label="(state.data.custom_role_names?.maker || '创客') + '等级:'">
|
||
<el-tag size="small" :type="Number(state.data.level) >= 2 ? 'primary' : 'info'">
|
||
{{ Number(state.data.level) >= 2 ? (state.data.maker_level_name || (state.data.custom_role_names?.maker || '创客') + 'V' + (Number(state.data.level) - 1)) : '未升级' + (state.data.custom_role_names?.maker || '创客') }}
|
||
</el-tag>
|
||
</el-form-item>
|
||
<el-form-item :label="(state.data.custom_role_names?.venue || '酒道馆') + ':'">
|
||
<el-tag size="small" :type="state.data.is_venue ? 'success' : 'info'">
|
||
{{ state.data.is_venue ? '已开通' : '未开通' }}
|
||
</el-tag>
|
||
</el-form-item>
|
||
<el-form-item :label="(state.data.custom_role_names?.county || '区县代理') + ':'">
|
||
<el-tag size="small" :type="state.data.is_county ? 'warning' : 'info'">
|
||
{{ state.data.is_county ? '已开通' + (state.data.county_code ? ' (' + state.data.county_code + ')' : '') : '未开通' }}
|
||
</el-tag>
|
||
</el-form-item>
|
||
<el-form-item :label="(state.data.custom_role_names?.partner || '合伙人') + ':'">
|
||
<el-tag size="small" :type="state.data.is_partner ? 'danger' : 'info'">
|
||
{{ state.data.is_partner ? '已授予' + (state.data.custom_role_names?.partner || '合伙人') : '未开通' }}
|
||
</el-tag>
|
||
</el-form-item>
|
||
<el-form-item label="30天自购考核:">
|
||
<span v-if="state.data.active_30d" style="color: #52c41a; font-weight: 500;">
|
||
🟢 正常领取
|
||
</span>
|
||
<span v-else style="color: #f56c6c; font-weight: 500;">
|
||
🔴 {{ state.data.active_status_text || '已超期暂停' }}
|
||
</span>
|
||
</el-form-item>
|
||
<el-form-item label="最近自购时间:">
|
||
{{ state.data.last_self_order_text || '从未下单' }}
|
||
</el-form-item>
|
||
<el-form-item label="进阶团队分润:">
|
||
<strong>{{ state.data.partner_exclusive_cash || '0.00' }}</strong> 元
|
||
</el-form-item>
|
||
<el-form-item label="每日获得dmepa:">
|
||
{{ state.data.madow || 0 }} 枚(约合 ¥{{ state.data.madow_value || '0.00' }})
|
||
</el-form-item>
|
||
<el-form-item label="消费补贴兑换券:">
|
||
总额 {{ state.data.voucher_total || 0 }} 个 / 已释放 {{ state.data.voucher_released || 0 }} 个 /
|
||
已使用 {{ state.data.voucher_used || 0 }} 个 / 可用 {{ state.data.voucher_available || 0 }} 个
|
||
</el-form-item>
|
||
</template>
|
||
|
||
<template v-else>
|
||
<el-form-item label="当前身份:">
|
||
<el-tag type="info" effect="plain" size="small">{{ state.data.identity_text || ('基础会员 · ' + (state.data.custom_role_names?.taster || '品酒师')) }}</el-tag>
|
||
</el-form-item>
|
||
<div style="font-size: 12px; color: var(--sa-subfont); line-height: 1.6; background: #f8fafc; border: 1px dashed var(--sa-border); border-radius: 4px; padding: 8px 12px; margin: 4px 0 10px;">
|
||
💡 <strong>进阶角色体系说明</strong>:系统拥有{{ state.data.custom_role_names?.maker || '创客' }}(V1~V6)、{{ state.data.custom_role_names?.venue || '酒道馆' }}、{{ state.data.custom_role_names?.county || '区县代理' }}、{{ state.data.custom_role_names?.partner || '合伙人' }}等独立进阶角色,享有团队分润与平台日结分红。当前会员为基础会员,享有推三返一,<strong>免自购考核</strong>。
|
||
</div>
|
||
<el-form-item label="自购考核要求:">
|
||
<el-tag size="small" type="info">免自购考核 (基础会员/{{ state.data.custom_role_names?.taster || '品酒师' }})</el-tag>
|
||
</el-form-item>
|
||
<el-form-item label="进阶权益:">
|
||
<span style="color: var(--sa-subfont);">升级{{ state.data.custom_role_names?.maker || '创客' }}或开通{{ (state.data.custom_role_names?.venue || '馆').substr(0, 1) }}/{{ (state.data.custom_role_names?.county || '县').substr(0, 1) }}/{{ (state.data.custom_role_names?.partner || '合伙').substr(0, 2) }}后即可享有团队奖、级差奖与dmepa分红</span>
|
||
</el-form-item>
|
||
</template>
|
||
|
||
<div style="font-weight: 600; font-size: 13px; color: var(--sa-title); margin: 16px 0 10px; padding-bottom: 4px; border-bottom: 1px solid var(--sa-border);">
|
||
收益中心资产汇总
|
||
</div>
|
||
<el-form-item label="收益中心累计现金:">
|
||
<span style="font-size: 16px; font-weight: 600; color: #f56c6c;">
|
||
{{ state.data.total_income || state.data.income_total_cash || '0.00' }}
|
||
</span>
|
||
<span class="ml-1" style="font-size: 12px; color: var(--sa-subfont);">元</span>
|
||
<el-tag size="small" type="success" style="margin-left: 8px;">直入钱包余额</el-tag>
|
||
</el-form-item>
|
||
<el-form-item>
|
||
<el-button type="primary" link
|
||
@click="Fast.api.open('shopro/partner/reward/index?user_id='+state.data.user_id, 'TA的收益流水')">
|
||
TA 的收益流水
|
||
</el-button>
|
||
{if $auth->check('shopro/partner/reward/reissue')}
|
||
<el-button type="primary" link
|
||
@click="Fast.api.open('shopro/partner/reward/index?user_id='+state.data.user_id+'&reissue=1', '手工补发')">
|
||
手工补发 / 扣回
|
||
</el-button>
|
||
{/if}
|
||
</el-form-item>
|
||
</el-form>
|
||
</div>
|
||
</el-col>
|
||
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
|
||
<div class="apply-content agent-content">
|
||
<el-form size="small" label-position="right" label-width="76px">
|
||
<div class="title sa-flex sa-row-between mb-4">
|
||
<span>申请信息</span>
|
||
<div>
|
||
{if $auth->check('shopro/commission/agent/edit')}
|
||
<el-button v-if="!applyInfo.flag" type="primary" link
|
||
@click="applyInfo.flag = true">编辑</el-button>
|
||
<div v-if="applyInfo.flag" class="sa-flex">
|
||
<el-button type="danger" link @click="onCancelApplyInfo">
|
||
取消
|
||
</el-button>
|
||
<el-button type="primary" link @click="onSaveApplyInfo">保存
|
||
</el-button>
|
||
</div>
|
||
{/if}
|
||
</div>
|
||
</div>
|
||
<template v-for="(item, index) in applyInfo.data" :key="item">
|
||
<el-form-item :label="`${item.name}:`">
|
||
<div class="sa-flex sa-col-top">
|
||
<template v-if="item.type == 'text' || item.type == 'number'">
|
||
<el-input v-if="applyInfo.flag" class="sa-w-140" v-model="item.value">
|
||
</el-input>
|
||
<template v-if="!applyInfo.flag">
|
||
{{ item.value }}
|
||
</template>
|
||
</template>
|
||
<sa-image v-if="item.type == 'image'" :url="item.value"></sa-image>
|
||
<el-button v-if="applyInfo.flag" class="ml-2" type="danger" link
|
||
size="small" @click="onDeleteApplyInfo(index)">
|
||
删除
|
||
</el-button>
|
||
</div>
|
||
</el-form-item>
|
||
</template>
|
||
</el-form>
|
||
</div>
|
||
</el-col>
|
||
<el-col class="sa-col-24" :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||
<div class="dashboard-content agent-content op-dashboard" v-if="state.data && state.data.operational_stats">
|
||
<!-- 模块一:🎯 晋升考核与升级差距雷达 (Upgrade Radar) -->
|
||
<div class="op-radar-card" v-if="state.data.operational_stats.upgrade_radar">
|
||
<div class="op-radar-header">
|
||
<div class="op-radar-title">
|
||
<span style="font-size: 16px;">🎯</span>
|
||
<span>晋升考核与升级差距雷达</span>
|
||
<el-tag size="small" effect="plain" type="info">
|
||
当前:{{ state.data.operational_stats.upgrade_radar.current_level_name }}
|
||
</el-tag>
|
||
<el-tag size="small" type="primary" effect="dark" v-if="state.data.operational_stats.upgrade_radar.next_level > 0">
|
||
目标:{{ state.data.operational_stats.upgrade_radar.next_level_name }}
|
||
</el-tag>
|
||
<el-tag size="small" type="success" effect="dark" v-else>
|
||
已达顶级
|
||
</el-tag>
|
||
</div>
|
||
<div>
|
||
<el-tag v-if="state.data.operational_stats.upgrade_radar.upgrade_lock" type="danger" size="small">
|
||
已锁定升级
|
||
</el-tag>
|
||
<el-tag v-else-if="state.data.operational_stats.upgrade_radar.all_reached" type="success" size="small">
|
||
✓ 晋升条件全部达成
|
||
</el-tag>
|
||
<el-tag v-else-if="state.data.operational_stats.upgrade_radar.next_level > 0" type="warning" size="small">
|
||
考核晋升中
|
||
</el-tag>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="op-radar-body" v-if="state.data.operational_stats.upgrade_radar.next_level > 0">
|
||
<!-- 直推实名/有效品酒师考核 -->
|
||
<div class="op-radar-metric" v-if="state.data.operational_stats.upgrade_radar.target_direct_agents > 0">
|
||
<div class="m-label">
|
||
<span>
|
||
直推有效品酒师
|
||
<el-popover placement="top" trigger="hover" content="需直推用户完成首单自购(child_order_count_0 ≥ 1)激活为有效品酒师">
|
||
<template #reference>
|
||
<span style="cursor: pointer; color: #94a3b8; font-size: 11px;">ℹ️ 说明</span>
|
||
</template>
|
||
</el-popover>
|
||
</span>
|
||
<el-tag size="small" :type="state.data.operational_stats.upgrade_radar.direct_agent_reached ? 'success' : 'danger'">
|
||
{{ state.data.operational_stats.upgrade_radar.direct_agent_reached ? '已达标' : '缺 ' + state.data.operational_stats.upgrade_radar.direct_agent_gap + ' 人' }}
|
||
</el-tag>
|
||
</div>
|
||
<div class="m-val">
|
||
{{ state.data.operational_stats.upgrade_radar.current_direct_agents }}
|
||
<span style="font-size: 12px; color: #94a3b8; font-weight: normal;"> / {{ state.data.operational_stats.upgrade_radar.target_direct_agents }} 人</span>
|
||
</div>
|
||
<el-progress :percentage="state.data.operational_stats.upgrade_radar.direct_agent_percent"
|
||
:status="state.data.operational_stats.upgrade_radar.direct_agent_reached ? 'success' : 'warning'"
|
||
:stroke-width="6" style="margin-top: 6px;"></el-progress>
|
||
</div>
|
||
<div class="op-radar-metric" v-else>
|
||
<div class="m-label">
|
||
<span>有效直推人数指标</span>
|
||
<el-tag size="small" :type="state.data.operational_stats.upgrade_radar.direct_user_reached ? 'success' : 'danger'">
|
||
{{ state.data.operational_stats.upgrade_radar.direct_user_reached ? '已达标' : '缺 ' + state.data.operational_stats.upgrade_radar.direct_user_gap + ' 人' }}
|
||
</el-tag>
|
||
</div>
|
||
<div class="m-val">
|
||
{{ state.data.operational_stats.upgrade_radar.current_direct_users }}
|
||
<span style="font-size: 12px; color: #94a3b8; font-weight: normal;"> / {{ state.data.operational_stats.upgrade_radar.target_direct_users }} 人</span>
|
||
</div>
|
||
<el-progress :percentage="state.data.operational_stats.upgrade_radar.direct_user_percent"
|
||
:status="state.data.operational_stats.upgrade_radar.direct_user_reached ? 'success' : 'warning'"
|
||
:stroke-width="6" style="margin-top: 6px;"></el-progress>
|
||
</div>
|
||
|
||
<!-- 团队有效订单考核 -->
|
||
<div class="op-radar-metric">
|
||
<div class="m-label">
|
||
<span>团队有效订单指标</span>
|
||
<el-tag size="small" :type="state.data.operational_stats.upgrade_radar.team_order_reached ? 'success' : 'danger'">
|
||
{{ state.data.operational_stats.upgrade_radar.team_order_reached ? '已达标' : '缺 ' + state.data.operational_stats.upgrade_radar.team_order_gap + ' 单' }}
|
||
</el-tag>
|
||
</div>
|
||
<div class="m-val">
|
||
{{ state.data.operational_stats.upgrade_radar.current_team_orders }}
|
||
<span style="font-size: 12px; color: #94a3b8; font-weight: normal;"> / {{ state.data.operational_stats.upgrade_radar.target_team_orders }} 单</span>
|
||
</div>
|
||
<el-progress :percentage="state.data.operational_stats.upgrade_radar.team_order_percent"
|
||
:status="state.data.operational_stats.upgrade_radar.team_order_reached ? 'success' : 'warning'"
|
||
:stroke-width="6" style="margin-top: 6px;"></el-progress>
|
||
</div>
|
||
|
||
<!-- 个人自购门槛 -->
|
||
<div class="op-radar-metric">
|
||
<div class="m-label">
|
||
<span>个人自购资格门槛</span>
|
||
<el-tag size="small" :type="state.data.operational_stats.upgrade_radar.self_paid_reached ? 'success' : 'danger'">
|
||
{{ state.data.operational_stats.upgrade_radar.self_paid_reached ? '已满足' : '未购买' }}
|
||
</el-tag>
|
||
</div>
|
||
<div class="m-val" style="font-size: 14px; margin-top: 4px;">
|
||
<span v-if="state.data.operational_stats.upgrade_radar.self_paid_reached" style="color: #10b981; font-weight: 600;">✓ 具备业务升级资格</span>
|
||
<span v-else style="color: #ef4444; font-weight: 600;">✕ 需完成首单自购(≥1398元)</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div v-else style="padding: 10px 0; color: #10b981; font-weight: 500; font-size: 13px;">
|
||
★ 该账号已达到平台顶峰合伙人级别,尊享平台级加权均分红与管理奖励!
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 模块二:👥 团队角色拓扑看板 (Roles & Team) -->
|
||
<div class="op-section-title">
|
||
<div class="sa-flex">
|
||
<span style="font-size: 16px; margin-right: 6px;">👥</span>
|
||
<span>团队角色与组织拓扑看板</span>
|
||
</div>
|
||
<div class="sa-flex">
|
||
{if $auth->check('shopro/commission/agent/team')}
|
||
<el-button type="primary" link @click="onTeam">查看层级拓扑树</el-button>
|
||
{/if}
|
||
</div>
|
||
</div>
|
||
<el-row :gutter="12">
|
||
<!-- 直推人员池 -->
|
||
<el-col :xs="24" :sm="8" :md="8" :lg="8" :xl="8">
|
||
<div class="op-grid-box">
|
||
<div class="box-title">
|
||
<span>直推成员池 (Direct)</span>
|
||
<el-tag size="small" type="primary">{{ state.data.operational_stats.roles.direct_total }} 人</el-tag>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">已首购有效用户:</span>
|
||
<span class="stat-val success">{{ state.data.operational_stats.roles.direct_paid }} 人</span>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">未购买注册粉丝:</span>
|
||
<span class="stat-val">{{ state.data.operational_stats.roles.direct_unpaid }} 人</span>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">直推创客领袖:</span>
|
||
<span class="stat-val primary">{{ state.data.operational_stats.roles.direct_maker }} 人</span>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
|
||
<!-- 核心业务骨干 -->
|
||
<el-col :xs="24" :sm="8" :md="8" :lg="8" :xl="8">
|
||
<div class="op-grid-box">
|
||
<div class="box-title">
|
||
<span>核心业务骨干 (Backbone)</span>
|
||
<el-popover placement="top" trigger="hover" width="220">
|
||
<div style="font-size: 12px; line-height: 20px;">
|
||
<div style="font-weight: 600; margin-bottom: 4px;">创客各级分布:</div>
|
||
<div>V1创客: {{ state.data.operational_stats.roles.team_maker_distribution.v1 || 0 }} 人</div>
|
||
<div>V2创客: {{ state.data.operational_stats.roles.team_maker_distribution.v2 || 0 }} 人</div>
|
||
<div>V3创客: {{ state.data.operational_stats.roles.team_maker_distribution.v3 || 0 }} 人</div>
|
||
<div>V4创客: {{ state.data.operational_stats.roles.team_maker_distribution.v4 || 0 }} 人</div>
|
||
<div>V5创客: {{ state.data.operational_stats.roles.team_maker_distribution.v5 || 0 }} 人</div>
|
||
<div>V6创客: {{ state.data.operational_stats.roles.team_maker_distribution.v6 || 0 }} 人</div>
|
||
</div>
|
||
<template #reference>
|
||
<span style="cursor: pointer; color: #94a3b8; font-size: 13px;">ℹ️ 分布详情</span>
|
||
</template>
|
||
</el-popover>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">创客合伙人 (V1-V6):</span>
|
||
<span class="stat-val purple">{{ state.data.operational_stats.roles.team_maker }} 人</span>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">酒道馆签约馆长:</span>
|
||
<span class="stat-val warning">{{ state.data.operational_stats.roles.team_venue }} 个</span>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">区县代理办事处:</span>
|
||
<span class="stat-val danger">{{ state.data.operational_stats.roles.team_county }} 个</span>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
|
||
<!-- 团队总网络规模 -->
|
||
<el-col :xs="24" :sm="8" :md="8" :lg="8" :xl="8">
|
||
<div class="op-grid-box">
|
||
<div class="box-title">
|
||
<span>全网团队规模 (Network)</span>
|
||
<el-tag size="small" type="success">{{ state.data.operational_stats.roles.team_total }} 人</el-tag>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">全网已出单活跃人数:</span>
|
||
<span class="stat-val success">{{ state.data.operational_stats.roles.team_paid }} 人</span>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">全网激活转化率:</span>
|
||
<span class="stat-val">{{ state.data.operational_stats.roles.team_conversion_rate }}%</span>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">二级直属团队人数:</span>
|
||
<span class="stat-val">{{ state.data.child_user_count_2 || 0 }} 人</span>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
|
||
<!-- 模块三:📦 业务业绩与订单流向看板 (Orders & GMV) -->
|
||
<div class="op-section-title">
|
||
<div class="sa-flex">
|
||
<span style="font-size: 16px; margin-right: 6px;">📦</span>
|
||
<span>业务业绩与订单流向看板</span>
|
||
</div>
|
||
</div>
|
||
<el-row :gutter="12">
|
||
<!-- 自购订单 -->
|
||
<el-col :xs="12" :sm="6" :md="6" :lg="6" :xl="6">
|
||
<div class="op-grid-box">
|
||
<div class="box-title">个人自购业绩</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">自购成交额:</span>
|
||
<span class="stat-val success">¥{{ state.data.operational_stats.orders.self_money }}</span>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">自购订单数:</span>
|
||
<span class="stat-val">{{ state.data.operational_stats.orders.self_count }} 单</span>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
|
||
<!-- 直推订单 (一级) -->
|
||
<el-col :xs="12" :sm="6" :md="6" :lg="6" :xl="6">
|
||
<div class="op-grid-box">
|
||
<div class="box-title">直推客户业绩 (一级)</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">直推成交额:</span>
|
||
<span class="stat-val primary">¥{{ state.data.operational_stats.orders.direct_money }}</span>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">直推订单数:</span>
|
||
<span class="stat-val">{{ state.data.operational_stats.orders.direct_count }} 单</span>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
|
||
<!-- 间推订单 (二级) -->
|
||
<el-col :xs="12" :sm="6" :md="6" :lg="6" :xl="6">
|
||
<div class="op-grid-box">
|
||
<div class="box-title">次级裂变业绩 (二级)</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">间推成交额:</span>
|
||
<span class="stat-val cyan">¥{{ state.data.operational_stats.orders.indirect_money }}</span>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">间推订单数:</span>
|
||
<span class="stat-val">{{ state.data.operational_stats.orders.indirect_count }} 单</span>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
|
||
<!-- 全团队业绩汇总 -->
|
||
<el-col :xs="12" :sm="6" :md="6" :lg="6" :xl="6">
|
||
<div class="op-grid-box">
|
||
<div class="box-title">全网团队总流水 (GMV)</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">全网成交总额:</span>
|
||
<span class="stat-val danger">¥{{ state.data.operational_stats.orders.team_money }}</span>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">全网出单总数:</span>
|
||
<span class="stat-val">{{ state.data.operational_stats.orders.team_count }} 单</span>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
|
||
<!-- 模块四:💰 收益中心分成与资产闭环 (Rewards & Scheme B Balance) -->
|
||
<div class="op-section-title">
|
||
<div class="sa-flex">
|
||
<span style="font-size: 16px; margin-right: 6px;">💰</span>
|
||
<span>收益中心分成明细与资产闭环 (方案B一体化大余额)</span>
|
||
</div>
|
||
</div>
|
||
<el-row :gutter="12">
|
||
<!-- 方案B核心钱包可用余额 -->
|
||
<el-col :xs="24" :sm="6" :md="6" :lg="6" :xl="6">
|
||
<div class="op-grid-box" style="background: #f0fdf4; border: 1px solid #bbf7d0;">
|
||
<div class="box-title" style="color: #166534;">
|
||
<span>钱包可用余额 (money)</span>
|
||
<el-tag size="small" type="success" effect="dark">可提现</el-tag>
|
||
</div>
|
||
<div style="font-size: 22px; font-weight: 700; color: #15803d; margin: 8px 0;">
|
||
¥{{ state.data.operational_stats.assets.wallet_money || '0.00' }}
|
||
</div>
|
||
<div style="font-size: 11px; color: #16a34a; line-height: 18px;">
|
||
✓ 收益入账此钱包,提现扣除此余额
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
|
||
<!-- 专项业务奖励细项 -->
|
||
<el-col :xs="24" :sm="6" :md="6" :lg="6" :xl="6">
|
||
<div class="op-grid-box">
|
||
<div class="box-title">
|
||
<span>业务奖励构成细项</span>
|
||
<span style="font-size: 12px; color: #64748b;">累计: ¥{{ state.data.operational_stats.assets.total_income }}</span>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">推三返一收益:</span>
|
||
<span class="stat-val primary">¥{{ state.data.operational_stats.rewards.push3 }}</span>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">创客极差/平级/超越:</span>
|
||
<span class="stat-val purple">¥{{ state.data.operational_stats.rewards.maker_total }}</span>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">馆/县团队管理奖:</span>
|
||
<span class="stat-val warning">¥{{ state.data.operational_stats.rewards.team_split }}</span>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">平台日结均分池:</span>
|
||
<span class="stat-val success">¥{{ state.data.operational_stats.rewards.share_pool }}</span>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
|
||
<!-- DMEPA数字资产 -->
|
||
<el-col :xs="24" :sm="6" :md="6" :lg="6" :xl="6">
|
||
<div class="op-grid-box">
|
||
<div class="box-title">
|
||
<span>DMEPA 专属数字资产</span>
|
||
<el-tag size="small" type="warning">生态资产</el-tag>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">DMEPA 持仓数量:</span>
|
||
<span class="stat-val purple">{{ state.data.operational_stats.assets.dmepa_madow }} 枚</span>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">实时市值折算:</span>
|
||
<span class="stat-val">¥{{ state.data.operational_stats.assets.dmepa_value }}</span>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">历史未转佣金:</span>
|
||
<span class="stat-val warning">¥{{ state.data.operational_stats.assets.untransfer_commission }}</span>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
|
||
<!-- 365天消费补贴券 -->
|
||
<el-col :xs="24" :sm="6" :md="6" :lg="6" :xl="6">
|
||
<div class="op-grid-box">
|
||
<div class="box-title">
|
||
<span>365天消费补贴券</span>
|
||
<el-tag size="small" type="info">逐日释放</el-tag>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">当前可用补贴券:</span>
|
||
<span class="stat-val success">{{ state.data.operational_stats.assets.voucher_available }} 个</span>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">累计释放补贴券:</span>
|
||
<span class="stat-val">{{ state.data.operational_stats.assets.voucher_released }} 个</span>
|
||
</div>
|
||
<div class="op-stat-row">
|
||
<span class="stat-label">补贴券总额度:</span>
|
||
<span class="stat-val">{{ state.data.operational_stats.assets.voucher_total }} 个</span>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
<el-tabs class="sa-tabs" v-model="log.tabActive" @tab-change="onChangeTab">
|
||
<el-tab-pane label="分销动态" name="log"></el-tab-pane>
|
||
<el-tab-pane label="分销订单" name="order"></el-tab-pane>
|
||
<el-tab-pane label="历史分销佣金" name="reward"></el-tab-pane>
|
||
</el-tab-pane>
|
||
</el-tabs>
|
||
<el-table v-if="log.tabActive=='log'" class="sa-table" :data="log.data" stripe>
|
||
<el-table-column prop="id" label="ID" min-width="90"></el-table-column>
|
||
<el-table-column label="分销商" min-width="160">
|
||
<template #default="scope">
|
||
<sa-user-profile :user="scope.row.agent" :id="scope.row.agent_id"></sa-user-profile>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="remark" label="内容" min-width="300"></el-table-column>
|
||
<el-table-column label="操作人" min-width="160">
|
||
<template #default="scope">
|
||
<sa-user-profile type="oper" :user="scope.row.oper" :id="scope.row.oper_id">
|
||
</sa-user-profile>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="createtime" label="动态时间" width="172"></el-table-column>
|
||
</el-table>
|
||
<el-table v-if="log.tabActive=='order'" class="sa-table" :data="log.data" stripe>
|
||
<el-table-column prop="id" label="ID" min-width="90"></el-table-column>
|
||
<el-table-column label="订单号" min-width="260">
|
||
<template #default="scope">
|
||
{{ scope.row.order?.order_sn || scope.row.order_id }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="下单用户" min-width="160">
|
||
<template #default="scope">
|
||
<sa-user-profile :user="scope.row.buyer" :id="scope.row.buyer_id"></sa-user-profile>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="分佣状态" min-width="100">
|
||
<template #default="scope">
|
||
<span :class="`sa-color--${log.status[scope.row.commission_reward_status]}`">
|
||
{{ scope.row.commission_reward_status_text }}
|
||
</span>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="商品结算金额" min-width="160">
|
||
<template #default="scope"> {{ scope.row.amount }}元 </template>
|
||
</el-table-column>
|
||
<el-table-column label="分销总金额/到账金额" min-width="160">
|
||
<template #default="scope">
|
||
{{ countCommission(scope.row.rewards) }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="佣金详情" min-width="200" align="center">
|
||
<template #default="scope">
|
||
<div class="sa-flex sa-row-center">
|
||
<div class="rewards-item sa-flex sa-flex-col" v-for="rewards in scope.row.rewards"
|
||
:key="rewards">
|
||
<template v-if="rewards.agent">
|
||
<sa-image :url="rewards.agent.avatar" size="32" radius="16"></sa-image>
|
||
</template>
|
||
<template v-if="!rewards.agent">
|
||
{{ rewards.agent_id }}
|
||
</template>
|
||
<div class="commission sa-m-t-6">{{ rewards.commission }}元</div>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="commission_time" label="加入时间" width="172"></el-table-column>
|
||
</el-table>
|
||
<el-table v-if="log.tabActive=='reward'" class="sa-table" :data="log.data" stripe>
|
||
<el-table-column prop="id" label="ID" min-width="90"></el-table-column>
|
||
<el-table-column label="订单号" min-width="260">
|
||
<template #default="scope">
|
||
{{ scope.row.order?.order_sn || scope.row.order_id }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="下单用户" min-width="160">
|
||
<template #default="scope">
|
||
<sa-user-profile :user="scope.row.buyer" :id="scope.row.buyer_id"></sa-user-profile>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="分销用户" min-width="160">
|
||
<template #default="scope">
|
||
<sa-user-profile :user="scope.row.agent" :id="scope.row.agent_id"></sa-user-profile>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="分销金额" min-width="160">
|
||
<template #default="scope"> {{ scope.row.commission }}元 </template>
|
||
</el-table-column>
|
||
<el-table-column label="入账状态" min-width="80">
|
||
<template #default="scope">
|
||
<span :class="`sa-color--${log.status[scope.row.status]}`">
|
||
{{ scope.row.status_text }}
|
||
</span>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="type_text" label="入账方式" min-width="80"></el-table-column>
|
||
<el-table-column prop="commission_time" label="分佣时间" width="172"></el-table-column>
|
||
</el-table>
|
||
<el-footer class="sa-footer sa-flex sa-row-right">
|
||
<sa-pagination v-model="pagination" @pagination-change="getLog"></sa-pagination>
|
||
</el-footer>
|
||
</el-scrollbar>
|
||
</el-main>
|
||
</el-container>
|
||
<el-dialog v-model="identity.visible" title="开通 / 调整身份" width="520px" destroy-on-close>
|
||
<el-form label-width="100px">
|
||
<el-form-item label="用户">{{ identity.form.nickname || state.data.user_id }}</el-form-item>
|
||
<el-form-item label="当前身份">{{ identity.form.before_text || '-' }}</el-form-item>
|
||
<el-form-item label="创客等级" required>
|
||
<el-select v-model="identity.form.level" style="width:100%">
|
||
<el-option v-for="item in identity.levels" :key="item.level" :label="item.name"
|
||
:value="item.level"></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="酒道馆">
|
||
<el-switch v-model="identity.form.is_venue" :active-value="1" :inactive-value="0"></el-switch>
|
||
</el-form-item>
|
||
<el-form-item label="区县代理">
|
||
<el-switch v-model="identity.form.is_county" :active-value="1" :inactive-value="0"></el-switch>
|
||
</el-form-item>
|
||
<el-form-item v-if="identity.form.is_county" label="区县" required>
|
||
<el-cascader v-model="identity.form.area_arr" :options="identity.areaSelect" :props="{
|
||
value: 'id', label: 'name', children: 'children', checkStrictly: true, emitPath: true
|
||
}" clearable filterable style="width:100%" @change="onIdentityAreaChange"></el-cascader>
|
||
</el-form-item>
|
||
<el-form-item label="升级锁定">
|
||
<el-switch v-model="identity.form.upgrade_lock" :active-value="1" :inactive-value="0"></el-switch>
|
||
</el-form-item>
|
||
<el-form-item label="备注">
|
||
<el-input v-model="identity.form.remark" type="textarea"></el-input>
|
||
</el-form-item>
|
||
</el-form>
|
||
<template #footer>
|
||
<el-button @click="identity.visible=false">取消</el-button>
|
||
<el-button type="primary" :loading="identity.loading" @click="onSubmitIdentity">确定</el-button>
|
||
</template>
|
||
</el-dialog>
|
||
</div> |