修改:经销商 - 提成明细查看修改

This commit is contained in:
wuhui_zzw 2024-04-24 18:02:50 +08:00
parent d74b6aee93
commit 65c7244380
4 changed files with 381 additions and 3 deletions

View File

@ -404,7 +404,7 @@ class PluginApplication extends \app\common\services\PluginApplication
],
]
],
'team_dividend_admin_dividend' => [
/*'team_dividend_admin_dividend' => [
'name' => '提成明细',
'url' => 'plugin.team-dividend.admin.team-dividend.get-list',
'url_params' => '',
@ -414,7 +414,6 @@ class PluginApplication extends \app\common\services\PluginApplication
'item' => 'team_dividend_admin_dividend',
'parents' => ['team_dividend'],
'child' => [
'team_dividend_admin_dividend_index' => [
'name' => '浏览列表',
'url' => 'plugin.team-dividend.admin.team-dividend.get-list',
@ -425,7 +424,6 @@ class PluginApplication extends \app\common\services\PluginApplication
'item' => 'team_dividend_admin_dividend_index',
'parents' => ['team_dividend', 'team_dividend_admin_dividend'],
],
'plugin_team_dividend_level_export' => [
'name' => '导出 EXCEL',
'url' => 'plugin.team-dividend.admin.team-dividend.export',
@ -447,7 +445,30 @@ class PluginApplication extends \app\common\services\PluginApplication
'parents' => ['team_dividend', 'team_dividend_admin_dividend'],
],
]
],*/
'team_dividend_admin_dividend_new' => [
'name' => '提成明细',
'url' => 'plugin.team-dividend.admin.team-dividend.group-list',
'url_params' => '',
'permit' => 1,
'menu' => 1,
'icon' => '',
'item' => 'team_dividend_admin_dividend',
'parents' => ['team_dividend'],
'child' => [
'team_dividend_admin_dividend_index_new' => [
'name' => '浏览列表',
'url' => 'plugin.team-dividend.admin.team-dividend.group-list',
'url_params' => '',
'permit' => 1,
'menu' => 0,
'icon' => '',
'item' => 'team_dividend_admin_dividend_index',
'parents' => ['team_dividend', 'team_dividend_admin_dividend'],
],
]
],
'team_dividend_admin_redpack' => [
'name' => '红包奖励记录',
'url' => 'plugin.team-dividend.admin.RedpackLog.index',

View File

@ -8,6 +8,7 @@ use app\common\components\BaseController;
use app\common\helpers\PaginationHelper;
use app\common\models\Order;
use app\common\services\ExportService;
use Illuminate\Support\Facades\DB;
use Yunshop\TeamDividend\Listener\OrderCreatedListener;
use Yunshop\TeamDividend\models\Lose;
use Yunshop\TeamDividend\models\TeamDividendLevelModel;
@ -116,6 +117,63 @@ class TeamDividendController extends BaseController
}
$exportService->export($file_name, $exportData, \Request::query('route'));
}
/**
* Common: 分组内容
* Author: wu-hui
* Time: 2024/04/24 17:17
* @return array|\Illuminate\Http\JsonResponse|string
* @throws \Throwable
*/
public function groupList(){
if(request()->isMethod('post')){
//参数获取
$pageSize = request()->input('page_size',10);
$search = request()->input('search');
// 获取列表信息
$field = [
'id',
'order_sn',
'created_at',
DB::raw('sum(amount) as total_amount')
];
$model = TeamDividendModel::getSearch($search, $field)
->groupBy('order_sn')
->orderBy('id','desc');
$list = $model->paginate($pageSize);
$result = $list ? $list->toArray() : [];
return $this->successJson('success',[
'current_page' => $result['current_page'],
'data' => $result['data'],
'last_page' => $result['last_page'],
]);
}
return view('Yunshop\TeamDividend::admin.group-list')->render();
}
/**
* Common: 分组详情
* Author: wu-hui
* Time: 2024/04/24 17:29
* @return \Illuminate\Http\JsonResponse
*/
public function groupListDetail(){
//参数获取
$pageSize = request()->input('page_size',10);
$search = request()->input('search');
// 获取列表信息
$model = TeamDividendModel::getSearch($search);
$list = $model->paginate($pageSize);
$result = $list ? $list->toArray() : [];
return $this->successJson('success',[
'current_page' => $result['current_page'],
'data' => $result['data'],
'last_page' => $result['last_page'],
]);
}
public function test(){
// date_default_timezone_set("PRC");

View File

@ -470,4 +470,31 @@ class TeamDividendModel extends BaseModel
return $query->orderBy('yz_team_dividend.id', 'desc');
}
/**
* Common: 搜索内容
* Author: wu-hui
* Time: 2024/04/24 17:16
* @param $search
* @param array|string[] $field
* @return mixed
*/
public static function getSearch($search,array $field = ['*']){
// 条件生成
$where = [];
if($search['member_id'] > 0) $where[] = ['member_id','=',$search['member_id']];
if(!empty($search['order_sn'])) $where[] = ['order_sn','=',$search['order_sn']];
if(isset($search['type']) && $search['type'] != '') $where[] = ['type','=',$search['type']];
// 列表获取
return self::uniacid()
->select($field)
->where($where)
->when(isset($search['status']) && $search['status'] != '',function($query) use ($search){
$query->where('status', $search['status']);
})
->with([
'hasOneMember' => function($query){
$query->select(['uid','nickname','realname','avatar']);
}
]);
}
}

View File

@ -0,0 +1,272 @@
@extends('layouts.base')
<style>
.user{
display: inline-flex;
flex-direction: row;
flex-wrap: nowrap;
align-items: center;
justify-content: flex-start;
overflow: hidden;
height: 80px;
}
.user .user-avatar{
height: 50px;
width: 50px;
margin-right: 5px;
border-radius: 50%;
overflow: hidden;
}
.user .user-avatar .avatar-image{
width: 100% !important;
height: 100% !important;
}
.user .user-info{
height: 50px;
text-align: left;
}
.user .user-info .user-nickname{
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.user .user-info .user-status{
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.label{
font-size: 15px!important;
}
.el-pagination{
margin-top: 15px!important;
}
.distance{
color: #f56c6c!important;
}
</style>
@section('content')
<div class="w1200 m0a" id="mainContent">
{{--列表信息--}}
<div class="panel panel-default">
<div class="panel-body">
{{--搜索--}}
<el-form :inline="true" :model="search_info">
<el-form-item label="订单号">
<el-input v-model="search_info.order_sn" placeholder="请输入订单号"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="clickSearch('_list')">查询</el-button>
</el-form-item>
</el-form>
{{--表格--}}
<el-table :data="list" style="width: 100%">
<el-table-column align="center" prop="id" label="ID" width="80"></el-table-column>
<el-table-column align="center" prop="order_sn" label="订单号"></el-table-column>
<el-table-column align="center" prop="total_amount" label="总佣金"></el-table-column>
<el-table-column align="center" prop="created_at" label="下单时间"></el-table-column>
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<el-button type="info" @click="seeInfo(scope.row.order_sn)">查看明细</el-button>
</template>
</el-table-column>
</el-table>
{{--分页--}}
<el-pagination
v-if="total_page > 1"
background
layout="prev, pager, next"
:page-count="total_page"
:current-page="page"
@current-change="changePage($event, '_list')">
</el-pagination>
</div>
</div>
{{--明细弹框--}}
<el-dialog title="查看明细" :visible.sync="see_details" @close="seeDetailsPopupClose" width="1200px">
<template>
<!--搜索-->
<el-form :inline="true" :model="see_search_list">
<el-form-item label="分红类型">
{{--分红类型0=分红佣金1=平级奖2=感恩奖励3=额外分红4=生态建设5=生态贡献(生态建设平级奖)6=生态服务7=分月返佣8=立即返佣--}}
<el-select v-model="see_search_list.type" placeholder="全部">
{{--<el-option label="分红佣金" value="0"></el-option>--}}
<el-option label="平级奖" value="1"></el-option>
<el-option label="分月返佣" value="7"></el-option>
<el-option label="立即返佣" value="8"></el-option>
</el-select>
</el-form-item>
<el-form-item label="用户ID" placeholder="请输入需要查询的季度">
<el-input v-model="see_search_list.member_id"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="clickSearch('details')">查询</el-button>
</el-form-item>
</el-form>
<!--表单-->
<el-table :data="see_list" style="width: 100%">
<el-table-column align="center" prop="id" label="ID" width="80"></el-table-column>
<el-table-column align="center" prop="member" label="经销商信息" width="230">
<template slot-scope="scope">
<div class="user">
<div class="user-avatar">
<img class="avatar-image" :src="scope.row.has_one_member.avatar_image || ''" />
</div>
<div class="user-info">
<div class="user-nickname">昵称:[[scope.row.has_one_member.nickname || '']]</div>
<div class="user-status">ID[[scope.row.has_one_member.uid || '']]</div>
</div>
</div>
</template>
</el-table-column>
<el-table-column align="center" prop="member" label="经销商信息" width="230">
<template slot="header" slot-scope="scope">
经销商等级<br />
分红类型 - 分红比例
</template>
<template slot-scope="scope">
[[ scope.row.type_name ]]<br />
[[ scope.row.level_name ]]
<span v-if="scope.row.type != 7 && scope.row.type != 8">- 比例[[ scope.row.dividend_rate ]]%</span>
</template>
</el-table-column>
<el-table-column align="center" prop="order_amount" label="订单金额" width="120"></el-table-column>
<el-table-column align="center" prop="dividend_amount" label="提成金额" width="120"></el-table-column>
<el-table-column align="center" prop="amount" label="结算金额" width="120"></el-table-column>
<el-table-column align="center" prop="status_name" label="状态" width="120"></el-table-column>
</el-table>
<!--分页-->
<el-pagination
v-if="see_total_page > 1"
background
layout="prev, pager, next"
:page-count="see_total_page"
:current-page="see_page"
@current-change="changePage($event, 'details')"
></el-pagination>
</template>
</el-dialog>
</div>
<script type="text/javascript">
new Vue({
el: '#mainContent',
delimiters: ['[[', ']]'],
name: 'team-dividend',
data() {
return {
// 基础列表
page: 1,
total_page: 1,
list: [],
search_info: {
order_sn: '',
},
// 查看明细
see_details: false,
see_page: 1,
see_total_page: 1,
see_list: [],
see_search_list: {
order_sn: "",
type: '',
member_id: '',
}
}
},
watch:{},
mounted () {
this.getData();
},
methods: {
// 基础信息 - 获取数据
getData(){
let _this = this;
let loading = _this.showLoading();
// 请求获取数据
$.ajax({
url: "{!! yzWebUrl('plugin.team-dividend.admin.TeamDividend.groupList') !!}",
type: "post",
data: {
page: _this.page,
search: _this.search_info,
},
success: function(result) {
let data = result.data;
if(parseInt(result.result) === 1){
// 处理数据
_this.list = data.data;
_this.total_page = data.last_page;
}
loading.close();
}
});
},
// 基础信息 - 查看明细
seeInfo(order_sn){
this.see_page = 1;
this.see_search_list.order_sn = order_sn;
this.getList();
},
// 查看明细 - 获取列表
getList(){
let _this = this;
let loading = _this.showLoading();
$.ajax({
url: "{!! yzWebUrl('plugin.team-dividend.admin.TeamDividend.groupListDetail') !!}",
type: "post",
data: {
page: _this.see_page,
search: _this.see_search_list
},
success: function(result) {
loading.close(0);
let data = result.data;
if(parseInt(result.result) === 1){
// 处理数据
_this.see_list = data.data;
_this.see_total_page = data.last_page;
_this.see_details = true;
}
}
});
},
// 查看明细 - 关闭弹框
seeDetailsPopupClose(){
this.see_details = false;
this.see_search_list = {};
},
// 数据分页
changePage(val, type){
if(type == '_list'){
this.page = val;
this.getData();
}else if(type == 'details'){
this.see_page = val;
this.getList();
}
},
// 相关搜索
clickSearch(type){
if(type == '_list'){
this.page = 1;
this.getData();
}else if(type == 'details'){
this.see_page = 1;
this.getList();
}
},
// 显示加载动画
showLoading(){
return this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
},
},
})
</script>
@endsection