123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601 |
- {include file="/shopro/common/script" /}
- <style>
- .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 {
- height: 450px;
- 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;
- }
- </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%">
- <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="76px">
- <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>(等级{{ 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 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>
- </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">
- <el-row class="dashboard-content agent-content">
- <el-col :span="24">
- <div class="title sa-flex">
- <span>团队统计</span>
- {if $auth->check('shopro/commission/agent/team')}
- <el-button class="ml-2" type="primary" link @click="onTeam">查看团队</el-button>
- {/if}
- </div>
- <el-row>
- <el-col class="item" :xs="12" :sm="8" :md="8" :lg="8" :xl="8">
- <div class="left">团队人数:</div>
- <div class="right">
- {{ state.data.child_user_count_all }}
- <span class="unit">人</span>
- </div>
- </el-col>
- <el-col class="item" :xs="12" :sm="8" :md="8" :lg="8" :xl="8">
- <div class="left">一级团队人数:</div>
- <div class="right">
- {{ state.data.child_user_count_1 }}
- <span class="unit">人</span>
- </div>
- </el-col>
- <el-col class="item" :xs="12" :sm="8" :md="8" :lg="8" :xl="8">
- <div class="left">二级团队人数:</div>
- <div class="right">
- {{ state.data.child_user_count_2 }}
- <span class="unit">人</span>
- </div>
- </el-col>
- <el-col class="item" :xs="12" :sm="8" :md="8" :lg="8" :xl="8">
- <div class="left">
- 团队分销商人数:
- <el-popover placement="top" trigger="hover">
- <div v-for="(value, key) in state.data.child_agent_level_all"
- :key="key">
- 等级{{ key }}:{{ value }}人
- </div>
- <template #reference>
- <div class="sa-flex">
- <el-icon v-if="state.data.child_agent_count_all"
- class="warning">
- <Warning />
- </el-icon>
- </div>
- </template>
- </el-popover>
- </div>
- <div class="right">
- {{ state.data.child_agent_count_all }}
- <span class="unit">人</span>
- </div>
- </el-col>
- <el-col class="item" :xs="12" :sm="8" :md="8" :lg="8" :xl="8">
- <div class="left">
- 一级分销商人数:
- <el-popover placement="top" trigger="hover">
- <div v-for="(value, key) in state.data.child_agent_level_1" :key="key">
- 等级{{ key }}:{{ value }}人
- </div>
- <template #reference>
- <div class="sa-flex">
- <el-icon v-if="state.data.child_agent_count_1" class="warning">
- <Warning />
- </el-icon>
- </div>
- </template>
- </el-popover>
- </div>
- <div class="right">
- {{ state.data.child_agent_count_1 }}
- <span class="unit">人</span>
- </div>
- </el-col>
- <el-col class="item" :xs="12" :sm="8" :md="8" :lg="8" :xl="8">
- <div class="left">二级分销商人数:</div>
- <div class="right">
- {{ state.data.child_agent_count_2 }}
- <span class="unit">人</span>
- </div>
- </el-col>
- </el-row>
- </el-col>
- <el-col :span="24">
- <div class="title sa-flex">
- <span>业绩统计</span>
- </div>
- <el-row>
- <el-col class="item" :xs="12" :sm="6" :md="6" :lg="6" :xl="6">
- <div class="left">团队分销总金额:</div>
- <div class="right">
- {{ state.data.child_order_money_all }}
- <span class="unit">元</span>
- </div>
- </el-col>
- <el-col class="item" :xs="12" :sm="6" :md="6" :lg="6" :xl="6">
- <div class="left">一级分销总金额:</div>
- <div class="right">
- {{ state.data.child_order_money_1 }}
- <span class="unit">元</span>
- </div>
- </el-col>
- <el-col class="item" :xs="12" :sm="6" :md="6" :lg="6" :xl="6">
- <div class="left">二级分销总金额:</div>
- <div class="right">
- {{ state.data.child_order_money_2 }}
- <span class="unit">元</span>
- </div>
- </el-col>
- <el-col class="item" :xs="12" :sm="6" :md="6" :lg="6" :xl="6">
- <div class="left">
- 自购分销总金额:
- <el-popover popper-class="sa-popper" placement="top" trigger="hover"
- content="分销商自购分销商品金额统计">
- <template #reference>
- <div class="sa-flex">
- <el-icon class="warning">
- <Warning />
- </el-icon>
- </div>
- </template>
- </el-popover>
- </div>
- <div class="right">
- {{ state.data.child_order_money_0 }}
- <span class="unit">元</span>
- </div>
- </el-col>
- <el-col class="item" :xs="12" :sm="6" :md="6" :lg="6" :xl="6">
- <div class="left">团队分销订单:</div>
- <div class="right">
- {{ state.data.child_order_count_all }}
- <span class="unit">单</span>
- </div>
- </el-col>
- <el-col class="item" :xs="12" :sm="6" :md="6" :lg="6" :xl="6">
- <div class="left">一级分销订单:</div>
- <div class="right">
- {{ state.data.child_order_count_1 }}
- <span class="unit">单</span>
- </div>
- </el-col>
- <el-col class="item" :xs="12" :sm="6" :md="6" :lg="6" :xl="6">
- <div class="left">二级分销订单:</div>
- <div class="right">
- {{ state.data.child_order_count_2 }}
- <span class="unit">单</span>
- </div>
- </el-col>
- <el-col class="item" :xs="12" :sm="6" :md="6" :lg="6" :xl="6">
- <div class="left">
- 自购分销订单:
- <el-popover popper-class="sa-popper" placement="top" trigger="hover"
- content="分销商自购分销订单数量统计">
- <template #reference>
- <div class="sa-flex">
- <el-icon class="warning">
- <Warning />
- </el-icon>
- </div>
- </template>
- </el-popover>
- </div>
- <div class="right">
- {{ state.data.child_order_count_0 }}
- <span class="unit">单</span>
- </div>
- </el-col>
- </el-row>
- </el-col>
- <el-col :span="24">
- <div class="title sa-flex">
- <span>资产信息</span>
- </div>
- <el-row>
- <el-col class="item" :xs="12" :sm="8" :md="8" :lg="8" :xl="8">
- <div class="left">累计佣金:</div>
- <div class="right">
- {{ state.data.total_income }}
- <span class="unit">元</span>
- </div>
- </el-col>
- <el-col class="item" :xs="12" :sm="8" :md="8" :lg="8" :xl="8">
- <div class="left">待入账佣金:</div>
- <div class="right">
- {{ state.data.pending_reward }}
- <span class="unit">元</span>
- </div>
- </el-col>
- <el-col class="item" :xs="12" :sm="8" :md="8" :lg="8" :xl="8">
- <div class="left">消费金额:</div>
- <div class="right">
- {{ state.data.user?.total_consume || 0 }}
- <span class="unit">元</span>
- </div>
- </el-col>
- </el-row>
- </el-col>
- </el-row>
- </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>
- </div>
|