generated from panliang/owl-admin-starter
oarty_cate_user_rank
parent
a7c6260e78
commit
0c6ddaf1c5
|
|
@ -7,11 +7,13 @@ use App\Admin\Services\ArticleService;
|
||||||
use App\Admin\Services\PartyCateService;
|
use App\Admin\Services\PartyCateService;
|
||||||
use App\Admin\Services\PartyUserService;
|
use App\Admin\Services\PartyUserService;
|
||||||
use App\Admin\Services\UserScoreService;
|
use App\Admin\Services\UserScoreService;
|
||||||
|
use App\Admin\Services\UserRankService;
|
||||||
use App\Enums\CheckStatus;
|
use App\Enums\CheckStatus;
|
||||||
use App\Models\Article;
|
use App\Models\Article;
|
||||||
use App\Models\Keyword;
|
use App\Models\Keyword;
|
||||||
use App\Models\PartyCate;
|
use App\Models\PartyCate;
|
||||||
use App\Models\PartyUser;
|
use App\Models\PartyUser;
|
||||||
|
use App\Models\CateRank;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
use Slowlyo\OwlAdmin\Admin;
|
use Slowlyo\OwlAdmin\Admin;
|
||||||
|
|
@ -28,6 +30,8 @@ class PartyCateController extends AdminController
|
||||||
|
|
||||||
protected $userOptions;
|
protected $userOptions;
|
||||||
|
|
||||||
|
protected $snOptions;
|
||||||
|
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
$user = Admin::user();
|
$user = Admin::user();
|
||||||
|
|
@ -84,6 +88,7 @@ class PartyCateController extends AdminController
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
amisMake()->LinkAction()->label('审核评定')->level('link')->link('/party-cate/${'.$primary.'}/score'),
|
amisMake()->LinkAction()->label('审核评定')->level('link')->link('/party-cate/${'.$primary.'}/score'),
|
||||||
|
amisMake()->LinkAction()->label('排名')->level('link')->link('/party-cate/${'.$primary.'}/rank'),
|
||||||
$this->rowShowButton(),
|
$this->rowShowButton(),
|
||||||
$this->rowEditButton(true),
|
$this->rowEditButton(true),
|
||||||
$this->rowDeleteButton(),
|
$this->rowDeleteButton(),
|
||||||
|
|
@ -168,7 +173,7 @@ class PartyCateController extends AdminController
|
||||||
]),
|
]),
|
||||||
]);
|
]);
|
||||||
return $userController->baseList($crud)->title(
|
return $userController->baseList($crud)->title(
|
||||||
amisMake()->LinkAction()->body($cate->name)->onEvent(['click' => ['actions' => ['actionType' => 'goBack']]])
|
amisMake()->LinkAction()->body($cate->name)->onEvent(['click' => ['actions' => [['actionType' => 'goBack']]]])
|
||||||
)->subTitle('党员管理');
|
)->subTitle('党员管理');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -270,10 +275,94 @@ class PartyCateController extends AdminController
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return $this->baseList($crud)->title(
|
return $this->baseList($crud)->title(
|
||||||
amisMake()->LinkAction()->body($cate->name)->onEvent(['click' => ['actions' => ['actionType' => 'goBack']]])
|
amisMake()->LinkAction()->body($cate->name)->onEvent(['click' => ['actions' => [['actionType' => 'goBack']]]])
|
||||||
)->subTitle('审核评定');
|
)->subTitle('审核评定');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function rankList($cid)
|
||||||
|
{
|
||||||
|
$service = UserRankService::make();
|
||||||
|
$cate = PartyCate::find($cid);
|
||||||
|
request()->offsetSet('cate_id', $cid);
|
||||||
|
$options = $this->getSnOptions();
|
||||||
|
if ($this->actionOfGetData()) {
|
||||||
|
if (!request()->has('sn') && count($options) > 0) {
|
||||||
|
request()->offsetSet('sn', $options[0]);
|
||||||
|
}
|
||||||
|
return $this->response()->success($service->list());
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->actionOfExport()) {
|
||||||
|
$sn = request('sn', data_get($this->getSnOptions(), 0));
|
||||||
|
if (!$sn) {
|
||||||
|
return $this->response()->fail('请选择期数');
|
||||||
|
}
|
||||||
|
// 默认在 storage/app/ 下
|
||||||
|
$path = __('user_rank.user_cate_rank') . '-' . $sn . '.xlsx';
|
||||||
|
|
||||||
|
// 此处使用 laravel-excel 导出,可自行修改
|
||||||
|
(new \App\Exports\UserRank)->store($path, 'local');
|
||||||
|
|
||||||
|
return $this->response()->success(compact('path'));
|
||||||
|
}
|
||||||
|
$event = fn($script) => ['click' => ['actions' => [['actionType' => 'custom', 'script' => $script]]]];
|
||||||
|
$downloadPath = '/' . admin_url('_download_export', true);
|
||||||
|
$exportPath = $this->getExportPath();
|
||||||
|
$doAction = <<<JS
|
||||||
|
doAction([
|
||||||
|
{ actionType: "ajax", args: { api: { url: url.toString(), method: "get" } } },
|
||||||
|
{
|
||||||
|
actionType: "custom",
|
||||||
|
expression: "\${event.data.responseResult.responseStatus === 0}",
|
||||||
|
script: "window.open('{$downloadPath}?path='+event.data.responseResult.responseData.path)"
|
||||||
|
}
|
||||||
|
])
|
||||||
|
JS;
|
||||||
|
$exportAction = amisMake()->VanillaAction()
|
||||||
|
->label(__('admin.export.title'))
|
||||||
|
->set('icon', 'fa-solid fa-download')
|
||||||
|
->align('right')
|
||||||
|
->onEvent($event(
|
||||||
|
<<<JS
|
||||||
|
let url = new URL("{$exportPath}", window.location.origin)
|
||||||
|
let param = window.location.href.split('?')[1]
|
||||||
|
if (param) {
|
||||||
|
url = url + '&' + param
|
||||||
|
}
|
||||||
|
{$doAction}
|
||||||
|
JS
|
||||||
|
));
|
||||||
|
$crud = $this->baseCRUD()
|
||||||
|
->filterTogglable(false)
|
||||||
|
->columnsTogglable(false)
|
||||||
|
->loadDataOnce(true)
|
||||||
|
->footerToolbar([])
|
||||||
|
->headerToolbar([
|
||||||
|
$exportAction
|
||||||
|
])
|
||||||
|
->filter($this->baseFilter()->actions()->body([
|
||||||
|
amisMake()->SelectControl()->name('sn')->label(__('user_rank.sn'))->options($options)->value(count($options) > 0 ? $options[0] : '')->size('md'),
|
||||||
|
amisMake()->Component()->setType('submit')->label(__('admin.search'))->level('primary'),
|
||||||
|
]))
|
||||||
|
->columns([
|
||||||
|
amisMake()->TableColumn()->name('user.name')->label(__('user_rank.user_id')),
|
||||||
|
amisMake()->TableColumn()->name('sort')->label(__('user_rank.sort'))->set('type', 'tpl')->tpl('${(start - 1) * size + index + 1}'),
|
||||||
|
amisMake()->TableColumn()->name('score')->label(__('user_rank.score')),
|
||||||
|
]);
|
||||||
|
return $this->baseList($crud)->title(
|
||||||
|
amisMake()->LinkAction()->body($cate->name)->onEvent(['click' => ['actions' => [['actionType' => 'goBack']]]])
|
||||||
|
)->subTitle(__('user_rank.user_cate_rank'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSnOptions()
|
||||||
|
{
|
||||||
|
if (!$this->snOptions) {
|
||||||
|
$this->snOptions = CateRank::select('sn')->groupBy('sn')->orderBy('sn', 'desc')->pluck('sn');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->snOptions;
|
||||||
|
}
|
||||||
|
|
||||||
public function getUserOptions()
|
public function getUserOptions()
|
||||||
{
|
{
|
||||||
if (!$this->userOptions) {
|
if (!$this->userOptions) {
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,6 @@ class UserRankController extends AdminController
|
||||||
$crud = $this->baseCRUD()
|
$crud = $this->baseCRUD()
|
||||||
->filterTogglable(false)
|
->filterTogglable(false)
|
||||||
->columnsTogglable(false)
|
->columnsTogglable(false)
|
||||||
->loadDataOnce(true)
|
|
||||||
->footerToolbar([])
|
->footerToolbar([])
|
||||||
->headerToolbar([
|
->headerToolbar([
|
||||||
$this->exportAction(),
|
$this->exportAction(),
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,7 @@ Route::group([
|
||||||
$router->get('party-cate/{id}/article', [\App\Admin\Controllers\PartyCateController::class, 'articleUpdate']);
|
$router->get('party-cate/{id}/article', [\App\Admin\Controllers\PartyCateController::class, 'articleUpdate']);
|
||||||
$router->post('party-cate/{id}/article', [\App\Admin\Controllers\PartyCateController::class, 'articleUpdate']);
|
$router->post('party-cate/{id}/article', [\App\Admin\Controllers\PartyCateController::class, 'articleUpdate']);
|
||||||
$router->get('party-cate/{id}/score', [\App\Admin\Controllers\PartyCateController::class, 'scoreIndex']);
|
$router->get('party-cate/{id}/score', [\App\Admin\Controllers\PartyCateController::class, 'scoreIndex']);
|
||||||
|
$router->get('party-cate/{id}/rank', [\App\Admin\Controllers\PartyCateController::class, 'rankList']);
|
||||||
// 党员
|
// 党员
|
||||||
$router->resource('party-user', \App\Admin\Controllers\PartyUserController::class)->names('admin.party_user');
|
$router->resource('party-user', \App\Admin\Controllers\PartyUserController::class)->names('admin.party_user');
|
||||||
// 评议审核
|
// 评议审核
|
||||||
|
|
|
||||||
|
|
@ -14,14 +14,14 @@ class CateRank extends Command
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $signature = 'app:cate-rank';
|
protected $signature = 'app:cate-rank {--quarter=1}';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The console command description.
|
* The console command description.
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $description = '生成上一季度的党支部排名';
|
protected $description = '生成党支部排名记录, quarter: 上一季度';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute the console command.
|
* Execute the console command.
|
||||||
|
|
@ -29,7 +29,7 @@ class CateRank extends Command
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
$now = now();
|
$now = now();
|
||||||
$time = $now->copy()->subQuarter();
|
$time = $now->copy()->subQuarters($this->option('quarter'));
|
||||||
$start = $time->copy()->startOfQuarter();
|
$start = $time->copy()->startOfQuarter();
|
||||||
$end = $time->copy()->endOfQuarter();
|
$end = $time->copy()->endOfQuarter();
|
||||||
$sn = $time->year . '-' . $time->quarter;
|
$sn = $time->year . '-' . $time->quarter;
|
||||||
|
|
|
||||||
|
|
@ -14,14 +14,14 @@ class UserRank extends Command
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $signature = 'app:user-rank';
|
protected $signature = 'app:user-rank {--quarter=1}';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The console command description.
|
* The console command description.
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $description = '生成上一季度的党支部排名';
|
protected $description = '生成党员排名记录, quarter: 上一季度';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute the console command.
|
* Execute the console command.
|
||||||
|
|
@ -29,7 +29,7 @@ class UserRank extends Command
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
$now = now();
|
$now = now();
|
||||||
$time = $now->copy()->subQuarter();
|
$time = $now->copy()->subQuarters($this->option('quarter'));
|
||||||
$start = $time->copy()->startOfQuarter();
|
$start = $time->copy()->startOfQuarter();
|
||||||
$end = $time->copy()->endOfQuarter();
|
$end = $time->copy()->endOfQuarter();
|
||||||
$sn = $time->year . '-' . $time->quarter;
|
$sn = $time->year . '-' . $time->quarter;
|
||||||
|
|
|
||||||
|
|
@ -23,4 +23,9 @@ class UserRankFilter extends ModelFilter
|
||||||
{
|
{
|
||||||
$this->where('sn', $sn);
|
$this->where('sn', $sn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function cate($id)
|
||||||
|
{
|
||||||
|
$this->where('cate_id', $id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ return [
|
||||||
'updated_at' => '更新时间',
|
'updated_at' => '更新时间',
|
||||||
'user_rank' => '个人排名',
|
'user_rank' => '个人排名',
|
||||||
'cate_rank' => '支部排名',
|
'cate_rank' => '支部排名',
|
||||||
|
'user_cate_rank' => '支部内部排名',
|
||||||
|
|
||||||
'sn' => '期数',
|
'sn' => '期数',
|
||||||
'user_id' => '党员',
|
'user_id' => '党员',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue