116 lines
4.4 KiB
PHP
116 lines
4.4 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Actions\Coupon;
|
|
|
|
use App\Admin\Imports\SettleCouponImport;
|
|
use Encore\Admin\Actions\Action;
|
|
use Encore\Admin\Admin;
|
|
use Illuminate\Http\Request;
|
|
use Maatwebsite\Excel\Facades\Excel;
|
|
|
|
class SettleCoupon extends Action
|
|
{
|
|
public $name = '结算数据';
|
|
|
|
protected $selector = '.check-coupon';
|
|
|
|
public function handle(Request $request): \Encore\Admin\Actions\Response
|
|
{
|
|
try {
|
|
Excel::import(new SettleCouponImport(), request()->file('file'));
|
|
} catch (\Exception $exception) {
|
|
return $this->response()->swal()->error($exception->getMessage());
|
|
}
|
|
|
|
return $this->response()->swal()->success('上传成功')->refresh();
|
|
}
|
|
|
|
public function form()
|
|
{
|
|
$this->file('file', '请选择文件')
|
|
->options([
|
|
'showPreview' => false,
|
|
'allowedFileExtensions' => ['xlsx', 'xls', 'csv'],
|
|
'showUpload' => true,
|
|
])
|
|
->required();
|
|
|
|
}
|
|
|
|
public function html(): string
|
|
{
|
|
return <<<HTML
|
|
<a class="btn btn-sm btn-default import-action check-coupon">导入已结算数据</a>
|
|
HTML;
|
|
}
|
|
|
|
/**
|
|
* 上传等待
|
|
*
|
|
* @return string
|
|
*/
|
|
public function handleActionPromise(): string
|
|
{
|
|
$resolve = <<<SCRIPT
|
|
var actionResolverss = function (data) {
|
|
$('.modal-footer').show()
|
|
$('.tips').remove()
|
|
var response = data[0];
|
|
var target = data[1];
|
|
|
|
if (typeof response !== 'object') {
|
|
return $.admin.swal({type: 'error', title: 'Oops!'});
|
|
}
|
|
|
|
var then = function (then) {
|
|
if (then.action == 'refresh') {
|
|
$.admin.reload();
|
|
}
|
|
|
|
if (then.action == 'download') {
|
|
window.open(then.value, '_blank');
|
|
}
|
|
|
|
if (then.action == 'redirect') {
|
|
$.admin.redirect(then.value);
|
|
}
|
|
};
|
|
|
|
if (typeof response.html === 'string') {
|
|
target.html(response.html);
|
|
}
|
|
|
|
if (typeof response.swal === 'object') {
|
|
$.admin.swal(response.swal);
|
|
}
|
|
|
|
if (typeof response.toastr === 'object') {
|
|
$.admin.toastr[response.toastr.type](response.toastr.content, '', response.toastr.options);
|
|
}
|
|
|
|
if (response.then) {
|
|
then(response.then);
|
|
}
|
|
};
|
|
|
|
var actionCatcherss = function (request) {
|
|
$('.modal-footer').show()
|
|
$('.tips').remove()
|
|
|
|
if (request && typeof request.responseJSON === 'object') {
|
|
$.admin.toastr.error(request.responseJSON.message, '', {positionClass:"toast-bottom-center", timeOut: 10000}).css("width","500px")
|
|
}
|
|
};
|
|
SCRIPT;
|
|
|
|
Admin::script($resolve);
|
|
|
|
return <<<SCRIPT
|
|
$('.modal-footer').hide()
|
|
let html = `<div class='tips' style='color: red;font-size: 18px;'>导入时间取决于数据量,请耐心等待结果不要关闭窗口!<img src="data:image/gif;base64,R0lGODlhEAAQAPQAAP///1VVVfr6+np6eqysrFhYWG5ubuPj48TExGNjY6Ojo5iYmOzs7Lq6utjY2ISEhI6OjgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAAFUCAgjmRpnqUwFGwhKoRgqq2YFMaRGjWA8AbZiIBbjQQ8AmmFUJEQhQGJhaKOrCksgEla+KIkYvC6SJKQOISoNSYdeIk1ayA8ExTyeR3F749CACH5BAkKAAAALAAAAAAQABAAAAVoICCKR9KMaCoaxeCoqEAkRX3AwMHWxQIIjJSAZWgUEgzBwCBAEQpMwIDwY1FHgwJCtOW2UDWYIDyqNVVkUbYr6CK+o2eUMKgWrqKhj0FrEM8jQQALPFA3MAc8CQSAMA5ZBjgqDQmHIyEAIfkECQoAAAAsAAAAABAAEAAABWAgII4j85Ao2hRIKgrEUBQJLaSHMe8zgQo6Q8sxS7RIhILhBkgumCTZsXkACBC+0cwF2GoLLoFXREDcDlkAojBICRaFLDCOQtQKjmsQSubtDFU/NXcDBHwkaw1cKQ8MiyEAIfkECQoAAAAsAAAAABAAEAAABVIgII5kaZ6AIJQCMRTFQKiDQx4GrBfGa4uCnAEhQuRgPwCBtwK+kCNFgjh6QlFYgGO7baJ2CxIioSDpwqNggWCGDVVGphly3BkOpXDrKfNm/4AhACH5BAkKAAAALAAAAAAQABAAAAVgICCOZGmeqEAMRTEQwskYbV0Yx7kYSIzQhtgoBxCKBDQCIOcoLBimRiFhSABYU5gIgW01pLUBYkRItAYAqrlhYiwKjiWAcDMWY8QjsCf4DewiBzQ2N1AmKlgvgCiMjSQhACH5BAkKAAAALAAAAAAQABAAAAVfICCOZGmeqEgUxUAIpkA0AMKyxkEiSZEIsJqhYAg+boUFSTAkiBiNHks3sg1ILAfBiS10gyqCg0UaFBCkwy3RYKiIYMAC+RAxiQgYsJdAjw5DN2gILzEEZgVcKYuMJiEAOwAAAAAAAAAAAA=="><\/div>`
|
|
$('.modal-header').append(html)
|
|
process.then(actionResolverss).catch(actionCatcherss);
|
|
SCRIPT;
|
|
}
|
|
}
|