Commit 1d5d5949 by lizhilin

上传

parents
File added
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
[*.{yml,yaml}]
indent_size = 2
[docker-compose.yml]
indent_size = 4
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
MEMCACHED_HOST=127.0.0.1
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_HOST=
PUSHER_PORT=443
PUSHER_SCHEME=https
PUSHER_APP_CLUSTER=mt1
VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
VITE_PUSHER_HOST="${PUSHER_HOST}"
VITE_PUSHER_PORT="${PUSHER_PORT}"
VITE_PUSHER_SCHEME="${PUSHER_SCHEME}"
VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
* text=auto
*.blade.php diff=html
*.css diff=css
*.html diff=html
*.md diff=markdown
*.php diff=php
/.github export-ignore
CHANGELOG.md export-ignore
.styleci.yml export-ignore
/node_modules
/public/build
/public/hot
/public/storage
/public
/storage/*.key
/vendor
.env
.env.backup
.env.production
.phpunit.result.cache
Homestead.json
Homestead.yaml
auth.json
npm-debug.log
yarn-error.log
/.fleet
/.idea
/.vscode
<p align="center"><a href="https://laravel.com" target="_blank"><img src="https://raw.githubusercontent.com/laravel/art/master/logo-lockup/5%20SVG/2%20CMYK/1%20Full%20Color/laravel-logolockup-cmyk-red.svg" width="400" alt="Laravel Logo"></a></p>
<p align="center">
<a href="https://github.com/laravel/framework/actions"><img src="https://github.com/laravel/framework/workflows/tests/badge.svg" alt="Build Status"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/dt/laravel/framework" alt="Total Downloads"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/v/laravel/framework" alt="Latest Stable Version"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/l/laravel/framework" alt="License"></a>
</p>
## About Laravel
Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:
- [Simple, fast routing engine](https://laravel.com/docs/routing).
- [Powerful dependency injection container](https://laravel.com/docs/container).
- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage.
- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent).
- Database agnostic [schema migrations](https://laravel.com/docs/migrations).
- [Robust background job processing](https://laravel.com/docs/queues).
- [Real-time event broadcasting](https://laravel.com/docs/broadcasting).
Laravel is accessible, powerful, and provides tools required for large, robust applications.
## Learning Laravel
Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework.
You may also try the [Laravel Bootcamp](https://bootcamp.laravel.com), where you will be guided through building a modern Laravel application from scratch.
If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.
## Laravel Sponsors
We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell).
### Premium Partners
- **[Vehikl](https://vehikl.com/)**
- **[Tighten Co.](https://tighten.co)**
- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)**
- **[64 Robots](https://64robots.com)**
- **[Cubet Techno Labs](https://cubettech.com)**
- **[Cyber-Duck](https://cyber-duck.co.uk)**
- **[Many](https://www.many.co.uk)**
- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)**
- **[DevSquad](https://devsquad.com)**
- **[Curotec](https://www.curotec.com/services/technologies/laravel/)**
- **[OP.GG](https://op.gg)**
- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)**
- **[Lendio](https://lendio.com)**
## Contributing
Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions).
## Code of Conduct
In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct).
## Security Vulnerabilities
If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed.
## License
The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).
<?php
namespace App\Admin\Actions;
use Dcat\Admin\Actions\Action;
use Dcat\Admin\Actions\Response;
use Illuminate\Support\Facades\Storage;
/**
* 下载导入模板
* Class DownloadTemplate
*
* @package App\Admin\Actions
*/
class DownloadTemplateExcel extends Action
{
/**
* @return string
*/
protected $title = '<button class="btn btn-primary"><i class="feather icon-download"></i> 下载导入模板</button>';
/**
* Handle the action request.
*
* @return Response
*/
public function handle()
{
$file_name = '';
switch ($this->getKey()) {
case 'good':
$file_name = '商品资源库导入模版';
break;
}
return $this->response()->download('/excelTemplate/' . $file_name . '.xlsx');
}
public function parameters()
{
return [
'mode' => '',
];
}
}
<?php
namespace App\Admin\Actions;
use App\Command\Log;
use Dcat\Admin\Actions\Action;
use Dcat\Admin\Actions\Response;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
/**
* 导出商品
*
* @package App\Admin\Actions
*/
class GoodsExcel extends Action
{
protected $request_param = [];
protected $request_filename = '';
protected $title = '';
/**
* 接收参数
*/
public function __construct($param = [], $filename = '', $title = '')
{
$this->request_param = $param;
$this->request_filename = $filename;
parent::__construct($title);
$this->title = $title;
}
//protected $title = '<button class="btn btn-primary"><i class="feather icon-download"></i> 下载模板</button>';
/**
* 按钮文本
*
* @return string|void
*/
public function title()
{
return '<button class="btn btn-primary"><i class="feather icon-download"></i> ' . $this->title . '</button>';
}
/**
* Handle the action request.
*
* @return Response
*/
public function handle(Request $request)
{
$param = $request->get('param');
$filename = $request->get('filename');
//调用导出接口
return $this->response()->download('/goods-export?filename=' . $filename . '&param=' . json_encode($param) . '&_export_=1');
}
public function parameters()
{
return [
'mode' => '',
'param' => $this->request_param,
'filename' => $this->request_filename,
'title' => $this->title,
];
}
}
<?php
namespace App\Admin\Actions;
use Dcat\Admin\Actions\Response;
use App\Admin\Forms\MerchantStoreForms;
use App\Models\Good;
use Dcat\Admin\Grid\RowAction;
use Dcat\Admin\Traits\HasPermissions;
use Illuminate\Contracts\Auth\Authenticatable;
//use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
use Dcat\Admin\Widgets\Modal;
use App\Models\GoodSku;
use App\Models\MerchantGoodSku;
class MerchantStore extends RowAction
{
protected $type = 0;
protected $title = '';
protected $goods_id = 0;
/**
* 接收参数
* @type 1:增加库存 2:减少库存
*/
public function __construct($type = 0, $title = '', $goods_id = 0)
{
$this->type = $type;
$this->goods_id = $goods_id;
parent::__construct($title);
$this->title = $title;
}
/**
* @return string
*/
//protected $title = '<i class="feather icon-stop-circle"> 增加库存 </i>';
/**
* 按钮文本
*
* @return string|void
*/
public function title()
{
return '<i class="feather icon-stop-circle"></i> ' . $this->title . $this->type . '';
}
/**
* Handle the action request.
*
* @param Request $request
*
* @return Response
*/
public function handle(Request $request)
{
$id = $this->getKey() ?? 0;
$type = $request->get('type');
return $this->response()->success('成功')->refresh();
}
/**
* 渲染模态框.
* @return Modal
*/
public function render()
{
$mgs_id = $this->getKey() ?? 0;
$goodObj = Good::where("id", $this->goods_id)->first();
//获取商品规格信息
if ($this->type == 1) {
$dataList = GoodSku::where("goods_id", $this->goods_id)->get();
} else {
$dataList = MerchantGoodSku::where("mgs_id", $mgs_id)->get();
foreach ($dataList as $kk => $vv) {
$skuObj = GoodSku::find($vv['attr_id']);
$dataList[$kk]['attr_val'] = $skuObj->attr_val;
}
}
$dataArr = $dataList ? $dataList->toArray() : [];
$html = '';
foreach ($dataArr as $kk => $vv) {
$html .= '<tr>';
if ($this->type == 2) {
$html .= '<input type="hidden" name="sskuid[]" value="' . $vv['id'] . '">';
}
$html .= '<input type="hidden" name="goods_id" value="' . $this->goods_id . '">';
$html .= '<input type="hidden" name="mgs_id" value="' . $mgs_id . '">';
$html .= '<input type="hidden" name="typeid" value="' . $this->type . '">';
$html .= '<td style="text-align:center;vertical-align: middle;">' . $goodObj->goods_name . '<input type="hidden" name="attr_id[]" value="' . $vv['id'] . '"></td>';
$html .= '<td style="text-align:center;vertical-align: middle;">' . $vv['attr_val'] . '</td>';
$html .= '<td ><input type="text" name="stock[]" value="" class="form-control field_remark _normal_" placeholder=""></td>';
$html .= '<td style="text-align:center;vertical-align: middle;">' . $vv['stock'] . '</td>';
$html .= '</tr>';
}
// 这里直接创建一个modal框 model的内容由工具表单提供,这里也需要创建一个工具表单才行
return Modal::make()
->lg()
->title($this->title)
->button("$this->title")
// ->body('<form action="' . $actionUrl . '" method="post" class="form-horizontal" accept-charset="UTF-8" pjax-container="1" >
// <div class="row">
// <div class="col-md-12">
// <table class="table">
// <thead>
// <tr>
// <th width="20%" style="text-align:center;">商品名称</th>
// <th width="20%" style="text-align:center;">商品规格</th>
// <th width="20%" style="text-align:center;">增加库存</th>
// <th width="20%" style="text-align:center;">剩余库存</th>
// </tr>
// </thead>
// <tbody>
// <!-- 表格数据 -->
// <!--<tr>
// <td style="text-align:center;vertical-align: middle;">数据1</td>
// <td style="text-align:center;vertical-align: middle;">蓝色、大号</td>
// <td ><input type="text" name="remark" value="" class="form-control field_remark _normal_" placeholder=""></td>
// <td style="text-align:center;vertical-align: middle;">123</td>
// </tr>-->
// ' . $html . '
// <!-- 更多行数据 -->
// </tbody>
// </table>
// </div>
// <div class="col-md-8"><button type="submit" class="btn btn-primary pull-right"><i class="feather icon-save"></i> 提交</button></div>
// </div>
// </form>
// ');
->body(MerchantStoreForms::make(['id' => $this->type]))
->onShown(
<<<js
$("#storeTitle").html('{$this->title}');
$("#tabletr").html('"+ $html +"');
js
);
//->button("<button class='btn btn-sm btn-primary'>$this->title</button>"); // 这个button就是对应上面的按钮
}
/**
* @return string|array|void
*/
public function confirm()
{
// return ['Confirm?', 'contents'];
}
/**
* @param Model|Authenticatable|HasPermissions|null $user
*
* @return bool
*/
protected function authorize($user): bool
{
return true;
}
/**
* @return array
*/
protected function parameters()
{
return [];
}
}
<?php
namespace App\Admin\Controllers;
use App\Admin\Repositories\Article;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use App\Models\Category;
use Dcat\Admin\Http\Controllers\AdminController;
use Dcat\Admin\Widgets\Modal;
use Dcat\Admin\Widgets\Card;
class ArticleController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(Article::with(['cat']), function (Grid $grid) {
$grid->model()->orderBy('created_at', 'DESC');
$grid->column('id')->sortable();
$grid->column('title');
$grid->column('cat.title', '分类名称');
$grid->column('content')->if(function ($column) {
return $column->getValue();
})->display('点击查看')->modal(function ($modal) {
//设置弹窗标题
$modal->title('文章内容');
$card = new Card(null, $this->content);
return "<div style='padding:10px 10px 0;width:100%;'>$card</div>";
})->else(function ($column) {
return '';
});
// $grid->column('created_at');
// $grid->column('updated_at')->sortable();
$grid->disableViewButton();
$grid->disableRowSelector();
$grid->filter(function (Grid\Filter $filter) {
// 更改为 panel 布局
$filter->panel();
$filter->like('title')->width(3);
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new Article(), function (Show $show) {
$show->field('id');
$show->field('title');
$show->field('cat_id');
$show->field('content');
$show->field('created_at');
$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new Article(), function (Form $form) {
$form->display('id');
$form->text('title');
$form->select('cat_id', '商品分类')
->options(Category::selectOptions())
->saving(function ($v) {
return $v ?? 0;
});
$form->image('cover', '封面')
->url('upload/user')
->autoUpload();
$form->editor('content');
$form->disableCreatingCheck();
$form->disableEditingCheck();
$form->disableViewCheck();
$form->disableDeleteButton();
$form->disableViewButton();
});
}
}
<?php
namespace App\Admin\Controllers;
use Dcat\Admin\Http\Controllers\AuthController as BaseAuthController;
class AuthController extends BaseAuthController
{
protected $view = 'admin.login';
}
<?php
namespace App\Admin\Controllers;
use App\Models\Carousel;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
class CarouselController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(new Carousel(), function (Grid $grid) {
$grid->addTableClass(['table-text-left']);
$grid->model()->orderBy('created_at', 'DESC');
$grid->column('id')->sortable()->width('10%');
$grid->column('title')->width('30%');
$grid->column('imgUrl')->image('', 100, 100)->width('20%');
$grid->column('status')->switch();
$grid->disableViewButton();
$grid->disableEditButton();
$grid->enableDialogCreate();
$grid->showQuickEditButton();
//$grid->disableFilterButton();
$grid->filter(function (Grid\Filter $filter) {
// 更改为 panel 布局
$filter->panel();
$filter->like('title')->width(3);
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new Carousel(), function (Show $show) {
$show->field('id');
$show->field('title');
$show->field('imgUrl');
$show->field('status');
$show->field('created_at');
$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new Carousel(), function (Form $form) {
$form->text('title');
$form->image('imgUrl')
->accept('jpg,jpeg,png')
->maxSize(4096)
->url('upload/carousel')
->help('仅支持jpg、jpeg、png格式图片上传(商城页 750px*340px、首页 750px*750px、文章页 750px*750px)')
->autoUpload();
$form->switch('status')->default(1);
});
}
}
<?php
namespace App\Admin\Controllers;
use App\Models\Category;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Layout\Content;
use Dcat\Admin\Layout\Row;
use Dcat\Admin\Tree;
use Dcat\Admin\Http\Controllers\AdminController;
class CategoryController extends AdminController
{
public function index(Content $content)
{
return $content->header('分类')
->description('列表')
->body(function (Row $row) {
$tree = new Tree(new Category());
$tree->branch(function ($branch) {
return "{$branch['title']}";
});
$row->column(12, $tree);
$tree->disableCreateButton();
});
return $content;
}
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(new Category(), function (Grid $grid) {
$grid->column('id')->sortable();
$grid->column('parent_id');
$grid->column('title');
$grid->column('icon');
$grid->column('order');
$grid->column('show');
$grid->column('created_at');
$grid->column('updated_at')->sortable();
$grid->filter(function (Grid\Filter $filter) {
$filter->equal('id');
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new Category(), function (Show $show) {
$show->field('id');
$show->field('parent_id');
$show->field('title');
$show->field('icon');
$show->field('order');
$show->field('show');
$show->field('created_at');
$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new Category(), function (Form $form) {
$form->display('id');
$form->select('parent_id')
->options(Category::selectOptions())
->saving(function ($v) {
return $v ?? 0;
});
$form->text('title');
$form->image('icon', '分类图标')
->accept('jpg,jpeg,png')
->maxSize(4096)
->url('upload/category')
->help('仅支持jpg、jpeg、png格式图片上传(750px * 420px)')
->autoUpload();
$form->text('order')->help('越小越靠前');
$form->switch('show', '状态')->default(1);
// $form->display('created_at');
// $form->display('updated_at');
});
}
}
<?php
namespace App\Admin\Controllers;
use App\Models\CheckNumber;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
use Illuminate\Support\Str;
use Dcat\Admin\Widgets\Modal;
use App\Admin\Forms\GenerateUserCode;
class CheckNumberController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(new CheckNumber(), function (Grid $grid) {
$grid->tools(function (Grid\Tools $tools) {
$tools->append(Modal::make()
// 大号弹窗
->lg()
// 弹窗标题
->title('新增')
// 按钮
->button('<button class="btn btn-primary"> 新增</button>')
// 弹窗内容
->body(GenerateUserCode::make()->payload(['className' => CheckNumber::class])));
//->body(ImportExcel::make()->payload(['className' => CheckNumber::class])));
});
$grid->model()->orderBy('id', 'DESC');
$grid->column('id')->sortable();
$grid->column('code', '审核编号');
$grid->column('status', '使用状态')->display(function ($val) {
return $val == 0 ? '未使用' : '已使用';
});;
$grid->column('created_at');
//$randomNumber = $this->generateRandomString(6);
$grid->disableFilterButton();
$grid->disableViewButton();
$grid->disableEditButton();
$grid->disableCreateButton();
$grid->enableDialogCreate();
$grid->filter(function (Grid\Filter $filter) {
$filter->equal('id');
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new CheckNumber(), function (Show $show) {
$show->field('id');
$show->field('code');
$show->field('status')->display(function ($val) {
return $val == 0 ? '未使用' : '已使用';
});
$show->field('created_at');
$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new CheckNumber(), function (Form $form) {
$form->display('id');
$form->text('number', '生成数量');
//$form->text('status');
$form->display('created_at');
$form->display('updated_at');
});
}
}
<?php
namespace App\Admin\Controllers;
use App\Models\City;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
use Illuminate\Http\Request;
class CityController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(new City(), function (Grid $grid) {
$grid->column('id')->sortable();
$grid->column('created_at');
$grid->column('updated_at')->sortable();
$grid->filter(function (Grid\Filter $filter) {
$filter->equal('id');
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new City(), function (Show $show) {
$show->field('id');
$show->field('created_at');
$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new City(), function (Form $form) {
$form->display('id');
$form->display('created_at');
$form->display('updated_at');
});
}
public function getList(Request $request)
{
$provinceId = $request->get('q');
return City::where('parent_id', $provinceId)->get(['city_id as id', 'name as text']);
}
}
<?php
namespace App\Admin\Controllers;
use App\Models\Comment;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
class CommentController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(Comment::with(['goods']), function (Grid $grid) {
$grid->model()->orderBy('created_at', 'DESC');
$grid->column('id')->sortable();
$grid->column('goods.goods_name', '商品标题');
$grid->column('avatar', '用户头像')->image('', 100, 100);
$grid->column('nickname', '用户昵称');
$grid->column('phone', '用户手机');
$grid->column('content', '评价内容')->limit(20);
$grid->column('addtime', '评价时间');
// $grid->column('updated_at')->sortable();
$grid->disableViewButton();
$grid->disableEditButton();
$grid->filter(function (Grid\Filter $filter) {
// 更改为 panel 布局
$filter->panel();
$filter->like('goods.goods_name', '商品标题')->width(3);
$filter->like('phone', '用户手机')->width(3);
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new Comment(), function (Show $show) {
$show->field('id');
$show->field('title');
$show->field('nickname');
$show->field('avatar');
$show->field('phone');
$show->field('content');
$show->field('created_at');
$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new Comment(), function (Form $form) {
$form->display('id');
$form->number('goods_id', "商品编号")->help('商品列表序号ID');
$form->datetime('addtime', '评价时间')
->format('YYYY-MM-DD HH:mm:ss');
$form->text('nickname');
$form->text('phone');
$form->number('star', '满意度')->min(1)->max(5)->default(5);
$form->textarea('content');
$form->image('avatar', '头像')
->url('upload/user')
->autoUpload();
$form->disableCreatingCheck();
$form->disableEditingCheck();
$form->disableViewCheck();
$form->disableDeleteButton();
$form->disableViewButton();
});
}
}
<?php
namespace App\Admin\Controllers;
use App\Models\CommentTpl;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
class CommentTplController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(new CommentTpl(), function (Grid $grid) {
$grid->column('id')->sortable();
$grid->column('title')->width(100);
$grid->column('content')->limit(100);
// $grid->column('created_at');
// $grid->column('updated_at')->sortable();
$grid->disableViewButton();
$grid->filter(function (Grid\Filter $filter) {
// 更改为 panel 布局
$filter->panel();
$filter->like('title');
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new CommentTpl(), function (Show $show) {
$show->field('id');
$show->field('title');
$show->field('content');
$show->field('created_at');
$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new CommentTpl(), function (Form $form) {
$form->display('id');
$form->text('title');
$form->textarea('content');
$form->disableCreatingCheck();
$form->disableEditingCheck();
$form->disableViewCheck();
$form->disableDeleteButton();
$form->disableViewButton();
});
}
}
<?php
namespace App\Admin\Controllers;
use App\Admin\Metrics\Examples;
use App\Http\Controllers\Controller;
use Dcat\Admin\Http\Controllers\Dashboard;
use Dcat\Admin\Layout\Column;
use Dcat\Admin\Layout\Content;
use Dcat\Admin\Layout\Row;
class HomeController extends Controller
{
public function index(Content $content)
{
return $content
->header('Dashboard')
->description('Description...')
->body(function (Row $row) {
$row->column(12, function (Column $column) {
$column->row(function (Row $row) {
$row->column(6, new Examples\NewUsers());
$row->column(6, new Examples\GoodsTotal());
$row->column(12, new Examples\Product());
});
});
// $row->column(12, function (Column $column) {
// $column->row(function (Row $row) {
// //$row->column(12, new Examples\Product());
// });
// // $column->row(new Examples\Sessions());
// // $column->row(new Examples\ProductOrders());
// });
// $row->column(12,'欢迎登录');
});
}
}
<?php
namespace App\Admin\Controllers;
use App\Models\Income;
use App\Models\User;
use App\Models\Merchant;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
class IncomeController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(new Income(), function (Grid $grid) {
$grid->column('id')->sortable();
//$grid->column('merchant.name', '商户名称');
$grid->column('user_type', '提现类型')->using(Income::USER_TYPE, '');
$grid->column('um_id', '提现人员')->display(function ($vel) {
if ($this->user_type == 1) {
return User::find($vel)->name ?? '';
}
return Merchant::find($vel)->name ?? '';
});
$grid->column('phone', '手机号');
$grid->column('amount');
$grid->column('status');
$grid->column('created_at', '提现时间');
//$grid->column('updated_at')->sortable();
$grid->disableCreateButton();
$grid->disableActions();
$grid->disableRowSelector();
$grid->filter(function (Grid\Filter $filter) {
// 更改为 panel 布局
$filter->panel();
$filter->like('phone', '手机号')->width(4);
$filter->between('created_at', '提现时间')->datetime()->width(4);
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new Income(), function (Show $show) {
$show->field('id');
$show->field('user_id');
$show->field('amount');
$show->field('status');
$show->field('created_at');
$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new Income(), function (Form $form) {
$form->display('id');
$form->text('user_id');
$form->text('amount');
$form->text('status');
$form->display('created_at');
$form->display('updated_at');
});
}
}
<?php
namespace App\Admin\Controllers;
use App\Models\Kefu;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
class KefuController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(new Kefu(), function (Grid $grid) {
$grid->column('id');
$grid->column('title', '平台客服名称');
$grid->column('contact', '联系方式');
$grid->column('is_type', '拨打/复制')->display(function ($val) {
return $val == 1 ? '复制' : '拨打';
});
$grid->disableFilterButton();
$grid->disableViewButton();
$grid->disableEditButton();
$grid->enableDialogCreate();
$grid->showQuickEditButton();
$grid->filter(function (Grid\Filter $filter) {
$filter->equal('id');
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new Kefu(), function (Show $show) {
$show->field('id');
$show->field('created_at');
$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new Kefu(), function (Form $form) {
$form->display('id');
$form->text('title', '平台客服名称');
$form->text('contact', '联系方式');
$form->select('is_type', '拨打/复制')->options([2 => '拨打', 1 => '复制']);
// $form->display('created_at');
// $form->display('updated_at');
});
}
}
<?php
namespace App\Admin\Controllers;
use App\Models\Merchant;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use App\Models\City;
use Illuminate\Http\Request;
use Dcat\Admin\Http\Controllers\AdminController;
use Illuminate\Support\Facades\DB;
use App\Admin\Renderable\StoreList;
class MerchantController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(new Merchant(), function (Grid $grid) {
$grid->column('id')->sortable();
$grid->column('name');
$grid->column('cityinfo', '所在省市')->display(function ($val) {
$proObj = City::where("city_id", $this->province_id)->first();
$cityObj = City::where("city_id", $this->city_id)->first();
$proname = $proObj->name ?? '';
$cityname = $cityObj->name ?? '';
return $proname . " " . $cityname;
});
$grid->column('store', '门店信息')->expand(function (Grid\Displayers\Expand $expand) {
$expand->button('查看');
return StoreList::make(['merchant_id' => $this->id]);
})->width(100);
$grid->column('contacts', '联系人');
$grid->column('phone');
$grid->column('account', '登录账号');
$grid->column('buycode', '直购码');
// $grid->column('created_at');
// $grid->column('updated_at')->sortable();
$grid->disableViewButton();
$grid->filter(function (Grid\Filter $filter) {
// 更改为 panel 布局
$filter->panel();
$filter->like('name')->width(3);
$filter->like('contacts', '联系人')->width(3);
$filter->like('phone')->width(3);
$filter->like('buycode')->width(3);
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new Merchant(), function (Show $show) {
$show->field('id');
$show->field('name');
$show->field('contacter');
$show->field('phone');
$show->field('created_at');
$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
$form = Form::make(Merchant::with(['store_desc']), function (Form $form) {
$form->display('id');
$form->text('name')->required();
$form->text('contacts', '联系人');
$form->text('phone');
$form->text('account');
$form->text('pwd')->help('字母数字组合,长度大于5个字符');
$form->select('province_id', '省份')->options(City::where('parent_id', 0)->get()->pluck('name', 'city_id'))->rules('required')->load('city_id', '/city');
// 城市
$form->select('city_id', '城市');
$form->hasMany('store_desc', '添加门店', function (\Dcat\Admin\Widgets\Form $forms) {
$forms->text('title', '门店名称')->required();
$forms->text('lat_lng', '经纬度')->help('<a href="https://lbs.amap.com/tools/picker" target="_blank">点击获取高德地图坐标</a>');
$forms->text('address', '详细地址');
$forms->text('distance', '配送范围(Km)');
$forms->image('business_license', '营业执照')
->accept('jpg,jpeg,png')
->maxSize(4096)
->url('upload/merchant')
->help('仅支持jpg、jpeg、png格式图片上传')
->autoUpload();
});
$form->disableCreatingCheck();
$form->disableEditingCheck();
$form->disableViewCheck();
$form->disableDeleteButton();
$form->disableViewButton();
});
//副表保存规格
$form->saved(
function (Form $form, $result) {
$merchant_id = $form->getKey();
$account = $form->model()->account;
$pwd = $form->model()->pwd ?? '123456';
//生成商城后台账号
$admin_users = DB::table('store_admin_users')->where("username", $account)->first();
$time = time();
if (!$admin_users) {
$storeAdmin_id = DB::table('store_admin_users')->insertGetId(
['username' => $account, 'password' => bcrypt($pwd), 'name' => $account, 'created_at' => date('Y-m-d H:i:s', $time), 'updated_at' => date('Y-m-d H:i:s', $time)]
);
DB::table('store_admin_role_users')->insert([
'role_id' => 1,
'user_id' => $storeAdmin_id,
'created_at' => date('Y-m-d H:i:s', $time),
'updated_at' => date('Y-m-d H:i:s', $time)
]);
} else {
$storeAdmin_id = $admin_users->id;
if ($pwd != '123456') { //更新密码
$admin_users->password = bcrypt($pwd);
$admin_users->save();
}
}
//首次写入直购码
$merObj = Merchant::where("id", $merchant_id)->first();
if (!$merObj->buycode) {
$flag = 0;
$code = '';
do {
$code = mt_rand(1000, 9999);
$exist = Merchant::where("buycode", $code)->count();
if (!$exist) {
$flag = 1;
}
} while ($flag < 1);
//保存直购码
$merObj->buycode = $code;
$merObj->save();
}
}
);
return $form;
}
}
<?php
namespace App\Admin\Controllers;
use App\Models\MerchantStore;
use App\Models\Merchant;
use App\Models\Good;
use App\Models\MerchantGoodSku;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use App\Models\City;
use App\Models\Store;
use Illuminate\Support\Facades\DB;
use Dcat\Admin\Http\Controllers\AdminController;
use App\Admin\Actions\MerchantStore as MerchantStoreActions;
use Dcat\Admin\Admin;
use Dcat\Admin\Layout\Content;
use Illuminate\Http\Request;
use App\Admin\Renderable\MerchantStoreSkuList;
class MerchantGoodsStoreController extends AdminController
{
// public function index(Content $content)
// {
// echo 11;
// die;
// }
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(MerchantStore::with(['goods', 'merchant']), function (Grid $grid) {
$grid->column('id')->sortable();
$grid->column('goods_sn', '商品编号');
$grid->column('goods.goods_name', '商品名称');
$grid->column('goods.cover_img', '商品图片')->image('', 100, 100);
$grid->column('attr', '商品规格')->expand(function (Grid\Displayers\Expand $expand) {
$expand->button('查看');
return MerchantStoreSkuList::make(['mgs_id' => $this->id]);
})->width(100);
$grid->column('store', '库存')->display(function ($val) {
return MerchantGoodSku::where(['mgs_id' => $this->id])->sum('stock');
});
$grid->column('merchant.name', '商家名称');
$grid->column('merchant.contacts', '联系人');
//$grid->column('created_at');
//$grid->column('updated_at')->sortable();
$grid->disableViewButton();
$grid->disableCreateButton();
$grid->filter(function (Grid\Filter $filter) {
// 更改为 panel 布局
$filter->panel();
$filter->like('goods.goods_name', '商品名称')->width(3);
$filter->like('merchant.name', '商家名称')->width(3);
$filter->like('merchant.contacts', '联系人')->width(3);
});
$grid->actions(function (Grid\Displayers\Actions $actions) {
//当前status
$status = $actions->row->status;
if ($status == 0) {
$actions->append(new MerchantStoreActions(1, '增加库存', $actions->row->goods_id));
$actions->append(new MerchantStoreActions(2, '减少库存', $actions->row->goods_id));
}
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new MerchantStore(), function (Show $show) {
$show->field('id');
$show->field('name');
$show->field('contacter');
$show->field('phone');
$show->field('created_at');
$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
$form = Form::make(new MerchantStore(), function (Form $form) {
$form->display('id');
$form->select('merchant_id', '商家名称')->options(Merchant::whereNull('deleted_at')->get()->pluck('name', 'id'))->rules('required'); //->load('merchat_id', '/get-merchat-list');
$form->select('goods_id', '添加商品')->options((new Good())->limit(100)->get()->pluck('goods_name', 'id'))->rules('required'); //->load('merchat_id', '/get-merchat-list');
// // 城市
// $form->select('city_id', '城市');
// $form->hasMany('store_desc', '添加门店', function (\Dcat\Admin\Widgets\Form $forms) {
// $forms->text('title', '门店名称')->required();
// $forms->text('lat_lng', '经纬度')->help('<a href="https://lbs.amap.com/tools/picker" target="_blank">点击获取高德地图坐标</a>');
// $forms->text('address', '详细地址');
// $forms->text('distance', '配送范围(Km)');
// $forms->image('business_license', '营业执照')
// ->accept('jpg,jpeg,png')
// ->maxSize(4096)
// ->url('upload/merchant')
// ->help('仅支持jpg、jpeg、png格式图片上传')
// ->autoUpload();
// });
$form->disableCreatingCheck();
$form->disableEditingCheck();
$form->disableViewCheck();
$form->disableDeleteButton();
$form->disableViewButton();
});
$form->saved(
function (Form $form, $result) {
$merchant_gid = $form->getKey();
$msObj = MerchantStore::find($merchant_gid);
if ($msObj) {
$goods_id = $msObj->goods_id;
$merchant_id = $msObj->merchant_id;
$goodsObj = Good::where("id", $goods_id)->first();
$merchatObj = Merchant::where("id", $merchant_id)->first();
$params = [
'goods_sn' => $goodsObj->goods_sn,
'goods_name' => $goodsObj->goods_name,
'merchant_name' => $merchatObj->name,
'contacts' => $merchatObj->contacts,
];
DB::table('merchat_goods_store')->where("id", $merchant_gid)->update($params);
}
}
);
return $form;
}
public function getList(Request $request)
{
$mId = $request->get('q');
return Store::where('merchant_id', $mId)->get(['id', 'title as text']);
}
}
<?php
namespace App\Admin\Controllers;
use App\Models\MerchantStoreSkuLog;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
class MerchantStoreSkuLogController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(MerchantStoreSkuLog::with(['goods', 'attr', 'mergs']), function (Grid $grid) {
$grid->model()->orderBy('id', 'DESC');
$grid->column('id')->sortable();
$grid->column('goods.goods_sn', '商品编号');
$grid->column('goods.cover_img', '商品图片')->image('', 100, 100);
$grid->column('goods.goods_name', '商品名称');
$grid->column('attr.attr_val', '商品规格');
$grid->column('change', '增减库存');
$grid->column('mergs.merchant_name', '商家名称');
$grid->column('mergs.contacts', '联系人');
$grid->column('created_at', '增减日期');
$grid->filter(function (Grid\Filter $filter) {
$filter->panel();
$filter->like('goods.goods_name', '商品名称')->width(3);
$filter->like('mergs.merchant_name', '商家名称')->width(3);
$filter->like('mergs.contacts', '联系人')->width(3);
$filter->between('created_at', '增减时间')->datetime()->width(6);
});
$grid->disableCreateButton();
//$grid->disableRefreshButton();
$grid->disableViewButton();
$grid->disableEditButton();
$grid->disableRowSelector();
$grid->disableDeleteButton();
$grid->disableActions();
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new MerchantStoreSkuLog(), function (Show $show) {
$show->field('id');
$show->field('goods_sn');
$show->field('attr_name');
$show->field('change');
$show->field('created_at');
$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new MerchantStoreSkuLog(), function (Form $form) {
$form->display('id');
$form->text('goods_sn');
$form->text('attr_name');
$form->text('change');
$form->display('created_at');
$form->display('updated_at');
});
}
}
<?php
namespace App\Admin\Controllers;
use App\Admin\Renderable\OrderGoodsList;
use App\Models\OrderGoods;
use App\Models\OrderInfo;
use App\Models\City;
use App\Models\Store;
use App\Models\SystemCity;
use App\Models\UserAddress;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
use App\Admin\Forms\VerifierCodeForm;
class OrderInfoController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(OrderInfo::with(['user', 'merchant']), function (Grid $grid) {
$grid->model()->orderBy('created_at', 'DESC');
$grid->column('id')->sortable();
$grid->column('order_sn', '订单号');
$grid->column('mobile', '手机号');
$grid->column('goods', '商品信息')->expand(function (Grid\Displayers\Expand $expand) {
$expand->button('查看');
return OrderGoodsList::make(['order_id' => $this->id]);
})->width(100);
$grid->column('goods_amount', '订单总金额');
$grid->column('merchant.name', '所属商家');
$grid->column('merchant.province_id', '所在省市')->display(function ($val) {
$proObj = City::where("city_id", $val)->first();
$cityObj = City::where("city_id", $this->merchant->city_id)->first();
$proname = $proObj->name ?? '';
$cityname = $cityObj->name ?? '';
return $proname . " " . $cityname;
});
$grid->column('store_id', '快递代收点')->display(function ($val) {
$res = null;
if ($val) {
$obj = Store::where('id', $val)->first();
$res = $obj->address;
}
return $res;
});
$grid->column('address_id', '送货上门')->display(function ($val) {
$res = '';
if ($val) {
$obj = UserAddress::where('id', $val)->first();
$res = $obj->area;
}
return $res;
});
$grid->column('created_at', '下单时间');
$grid->column('order_status', '订单状态')->display(function ($val) {
$options = OrderInfo::STATUS_OPTIONS;
return $options[$val];
})->if(function ($column) {
return $column->getValue() == 1;
})->display('点击生成核销码')->modal(function (Grid\Displayers\Modal $modal) {
// 标题
$modal->title('生成核销码');
// 自定义图标
$modal->icon('feather icon-edit');
// 传递当前行字段值
return VerifierCodeForm::make()->payload(['id' => $this->id]);
});
$grid->column('verification_code', '核销码')->limit(10);
$grid->column('verifier', '核销员');
$grid->column('verification_at', '核销时间');
//$grid->column('updated_at')->sortable();
//$grid->disableActions();
$grid->disableCreateButton();
$grid->disableViewButton();
$grid->filter(function (Grid\Filter $filter) {
// 更改为 panel 布局
$filter->panel();
$filter->equal('order_sn', '订单号')->width(4);
$filter->like('phone', '手机号')->width(4);
$filter->between('created_at', '创建时间')->datetime()->width(4);
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new OrderInfo(), function (Show $show) {
$show->field('id');
$show->field('order_sn', '订单号');
$show->field('verification_code', '核销码');
// $show->field('order_status')->display(function ($val) {
// $options = OrderInfo::STATUS_OPTIONS;
// return $options[$val];
// });
$show->field('created_at', '下单时间');
//$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new OrderInfo(), function (Form $form) {
//$form->display('id');
$form->display('order_sn');
$form->text('remark', '备注(后台用)');
//订单状态 -1:全部 0:待付款 1:待到货 2:待领取 3: 待评价 4:已完成 7:已取消 8:已退款
$options = [
1 => '待到货',
2 => '待领取',
3 => '待评价',
4 => '已完成',
7 => '已取消',
];
$form->select('order_status', '订单状态')->options($options);
// $form->switch('pay_status')->default(0);
// $form->switch('shipping_status', '发货状态')->default(0);
// $form->datetime('shipping_time', '发货时间');
// $form->text('shipping_name', '物流公司');
// $form->text('shipping_code', '物流单号');
// $form->text('order_amount', '订单应付款');
// $form->display('created_at');
// $form->display('updated_at');
$form->disableEditingCheck();
$form->disableViewCheck();
$form->disableDeleteButton();
$form->disableViewButton();
});
}
}
<?php
namespace App\Admin\Controllers;
use App\Admin\Forms\EditPermission;
use App\Admin\Forms\updatePassword;
use Dcat\Admin\Grid\RowAction;
use App\Models\User;
use App\Models\UserPermission;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Illuminate\Http\Request;
use Dcat\Admin\Http\Controllers\AdminController;
class ShareController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
$uid = request()->get('id');
return Grid::make(User::with(['shuser']), function (Grid $grid) use ($uid) {
$grid->addTableClass(['table-text-center']);
$grid->model()->where('id', $uid)->orderBy('created_at', 'DESC');
//$grid->column('id')->sortable();
$grid->column('name', '昵称');
$grid->column('phone', '手机号');
$grid->column('created_at', '注册时间')->display(function ($val) {
return date("Y-m-d H:i:s", strtotime($this->created_at));
});
$grid->disableCreateButton();
$grid->disableViewButton();
$grid->disableDeleteButton();
$grid->enableDialogCreate();
$grid->disableEditButton();
$grid->disableActions();
$grid->disableRowSelector();
//$grid->simplePaginate();
$grid->filter(function (Grid\Filter $filter) {
// 更改为 panel 布局
$filter->panel();
$filter->like('name', '昵称')->width(3);
$filter->like('phone', '用户手机号')->width(3);
$filter->equal('sp_type', '直推/间推')->select(['1' => '直推', '2' => '间推'])->width(3);
//$filter->between('created_at', '注册时间')->datetime()->width(4);
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new User(), function (Show $show) {
$show->field('id');
$show->field('name');
$show->field('avatar');
$show->field('openid');
$show->field('phone');
$show->field('status');
$show->field('role');
$show->field('department');
$show->field('email');
$show->field('email_verified_at');
$show->field('password');
$show->field('remember_token');
$show->field('created_at');
$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new User(), function (Form $form) {
$form->text('name', '昵称');
$form->switch('status', '状态')->default(1);
// $form->image('avatar', '头像')
// ->url('upload/user-avatar')
// ->deleteUrl('upload/delete-public-cos-file')
// ->autoUpload();
// if ($form->isCreating()) {
// $form->mobile('phone', '手机号')->rules('required|unique:users,phone', ['required' => '手机号码不可为空', 'unique' => '此手机号码已存在,请重新填写']);
// $form->text('password', '密码');
// }
// if ($form->isCreating()) {
// $form->saving(function (Form $form) {
// $form->password = bcrypt($form->password);
// });
// }
});
}
}
<?php
namespace App\Admin\Controllers;
use App\Models\StoreAdminUsers;
use App\Models\Merchant;
use App\Models\Good;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Illuminate\Support\Facades\Hash;
use Dcat\Admin\Http\Controllers\AdminController;
use Illuminate\Support\Facades\DB;
class StoreAdminUsersController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(StoreAdminUsers::with(['merchant', 'store']), function (Grid $grid) {
$grid->model()->where('role_id', 2); //2: 核销员
$grid->column('id')->sortable();
$grid->column('name', '姓名');
$grid->column('username', '登录账号');
$grid->column('merchant.name', '所属商家');
$grid->column('store.title', '所属门店');
// $grid->column('created_at');
// $grid->column('updated_at')->sortable();
$grid->disableViewButton();
$grid->filter(function (Grid\Filter $filter) {
// 更改为 panel 布局
$filter->panel();
$filter->like('name', '姓名')->width(3);
$filter->like('username', '登录账号')->width(3);
$filter->like('merchant.name', '所属商家')->width(3);
$filter->like('store.title', '所属门店')->width(3);
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
// return Show::make($id, new Verifier(), function (Show $show) {
// $show->field('id');
// $show->field('merchant_id');
// $show->field('store_id');
// $show->field('created_at');
// $show->field('updated_at');
// });
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
$form = Form::make(new StoreAdminUsers(), function (Form $form) {
$form->display('id');
//$form->ignore(['merchant_id', 'store_id']); // 忽略password字段
$form->text('name')->required();
$form->text('username');
if ($form->isCreating()) {
$form->password('password', '密码')->saving(function ($password) {
return bcrypt($password);
})->help('字母数字组合,长度大于5个字符');
} else {
// $form->password('password', '密码')->customFormat(function ($v) {
// return $v;
// })
// ->help('密码为空则不修改');
}
$form->hidden('role_id')->default(2);
// 如果是创建模式,执行相关操作
$form->select('merchant_id', '商家名称')
->options(Merchant::whereNull('deleted_at')->get()->pluck('name', 'id'))
//->rules('required')
->load('store_id', '/get-store-list')
->saving(function (Form $form, $data) {
// 当编辑记录时,设置选中的父分类和子分类
if ($form->isEditing()) {
$form->html('<script>
$(document).ready(function() {
$("#merchant_id").val(' . $data->merchant_id . '); // 设置父分类的选中值
$("#store_id").trigger("change"); // 触发事件加载子级选项
});
</script>');
}
});
$form->select('store_id', '门店名称');
$form->disableCreatingCheck();
$form->disableEditingCheck();
$form->disableViewCheck();
$form->disableDeleteButton();
$form->disableViewButton();
});
// 判断是否处于创建模式
if ($form->isCreating()) {
}
// 判断是否处于编辑模式
if ($form->isEditing()) {
// 如果是编辑模式,执行相关操作
$form->select('merchant_id', '显示名称')
->options([
1 => '选项1',
2 => '选项2',
3 => '选项3',
])
->value(function () {
// 获取模型对
return 1;
});
}
//副表保存规格
// $form->saved(
// function (Form $form, $result) {
// $store_admin_users_id = $form->getKey();
// $merchant_id = $form->model()->merchant_id;
// $store_id = $form->model()->store_id;
// //更新信息
// $verifier = DB::table('verifier')->where("store_admin_users_id", $store_admin_users_id)->first();
// $time = time();
// if (!$verifier) {
// $v_id = DB::table('verifier')->insertGetId(
// ['store_admin_users_id' => $store_admin_users_id, 'merchant_id' => $merchant_id, 'store_id' => $store_id, 'created_at' => date('Y-m-d H:i:s', $time), 'updated_at' => date('Y-m-d H:i:s', $time)]
// );
// } else {
// $verifier->merchant_id = $merchant_id;
// $verifier->store_id = $store_id;
// $verifier->save();
// }
// }
// );
return $form;
}
}
<?php
namespace App\Admin\Controllers;
use App\Models\SystemSetting;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
class SystemSettingController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(new SystemSetting(), function (Grid $grid) {
$grid->column('id')->sortable();
$grid->column('title');
$grid->column('cover')->image('', 100, 100);
$grid->column('is_show', '状态')->switch();
$grid->column('created_at');
//$grid->column('updated_at')->sortable();
$grid->disableViewButton();
$grid->filter(function (Grid\Filter $filter) {
$filter->like('title');
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new SystemSetting(), function (Show $show) {
$show->field('id');
$show->field('title');
$show->field('cover');
$show->field('content');
$show->field('created_at');
$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new SystemSetting(), function (Form $form) {
//$form->display('id');
$form->image('bj_invite', '邀请页背景图')
->accept('jpg,jpeg,png')
->maxSize(4096)
->url('upload/category')
->help('仅支持jpg、jpeg、png格式图片上传(750px * 420px)')
->autoUpload();
$form->editor('cp_brief', '公司介绍');
//$form->display('created_at');
//$form->display('updated_at');
$form->disableCreatingCheck();
$form->disableEditingCheck();
$form->disableViewCheck();
$form->disableDeleteButton();
$form->disableViewButton();
});
}
}
<?php
namespace App\Admin\Controllers;
use Dcat\Admin\Traits\HasUploadedFile;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Intervention\Image\Facades\Image;
class UploadController
{
use HasUploadedFile;
public function merchantUpload()
{
$disk = $this->disk();
// 判断是否是删除文件请求
if ($this->isDeleteRequest()) {
// 删除文件并响应
return $this->deleteFileAndResponse();
}
// 获取上传的文件
$file = $this->file();
//获取文件扩展名
$ext = $file->getClientOriginalExtension();
$img = Image::make($file->getRealPath())
->resize(640, null, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
})->encode($ext, 90);
$dir = '/merchant/' . date("Ymd");
$newName = md5(uniqid()) . '.' . $ext;
$path = "{$dir}/$newName";
$result = $disk->put($path, $img);
return $result
? $this->responseUploaded($path, $disk->url($path))
: $this->responseErrorMessage('文件上传失败');
}
public function userUpload()
{
$disk = $this->disk();
// 判断是否是删除文件请求
if ($this->isDeleteRequest()) {
// 删除文件并响应
return $this->deleteFileAndResponse();
}
// 获取上传的文件
$file = $this->file();
//获取文件扩展名
$ext = $file->getClientOriginalExtension();
$img = Image::make($file->getRealPath())
->resize(640, null, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
})->encode($ext, 90);
$dir = '/user';
$newName = md5(uniqid()) . '.' . $ext;
$path = "{$dir}/$newName";
$result = $disk->put($path, $img);
return $result
? $this->responseUploaded($path, $disk->url($path))
: $this->responseErrorMessage('文件上传失败');
}
public function goodsUpload()
{
$disk = $this->disk();
// 判断是否是删除文件请求
if ($this->isDeleteRequest()) {
// 删除文件并响应
return $this->deleteFileAndResponse();
}
// 获取上传的文件
$file = $this->file();
//获取文件扩展名
$ext = $file->getClientOriginalExtension();
$img = Image::make($file->getRealPath())
->resize(640, null, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
})->encode($ext, 90);
$dir = '/goods/' . date("Ymd");
$newName = md5(uniqid()) . '.' . $ext;
$path = "{$dir}/$newName";
$result = $disk->put($path, $img);
return $result
? $this->responseUploaded($path, $disk->url($path))
: $this->responseErrorMessage('文件上传失败');
}
//商品规格图
public function uploadSkuImage(Request $request)
{
if ($request->hasFile('file')) {
$file = $request->file('file');
//$disk = Storage::disk('cosv5');
// $ext = $file->getClientOriginalExtension();
$disk = $this->disk();
// $url = 'sku';
// $res = $disk->put($url, $file);
//获取文件扩展名
$ext = $file->getClientOriginalExtension();
$img = Image::make($file->getRealPath())
->resize(640, null, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
})->encode($ext, 90);
$dir = '/goods/' . date("Ymd");
$newName = md5(uniqid()) . '.' . $ext;
$path = "{$dir}/$newName";
$result = $disk->put($path, $img);
$url = $result ? $path : '';
// 返回格式
return ['url' => env('IMAGE_URL') . $url];
}
return [];
}
public function carouselUpload()
{
$disk = $this->disk();
// 判断是否是删除文件请求
if ($this->isDeleteRequest()) {
// 删除文件并响应
return $this->deleteFileAndResponse();
}
// 获取上传的文件
$file = $this->file();
//获取文件扩展名
$ext = $file->getClientOriginalExtension();
$img = Image::make($file->getRealPath())
->resize(640, null, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
})->encode($ext, 90);
$dir = '/carousel';
$newName = md5(uniqid()) . '.' . $ext;
$path = "{$dir}/$newName";
$result = $disk->put($path, $img);
return $result
? $this->responseUploaded($path, $disk->url($path))
: $this->responseErrorMessage('文件上传失败');
}
public function articlelUpload()
{
$disk = $this->disk();
// 判断是否是删除文件请求
if ($this->isDeleteRequest()) {
// 删除文件并响应
return $this->deleteFileAndResponse();
}
// 获取上传的文件
$file = $this->file();
//获取文件扩展名
$ext = $file->getClientOriginalExtension();
$img = Image::make($file->getRealPath())
->resize(640, null, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
})->encode($ext, 90);
$dir = '/article';
$newName = md5(uniqid()) . '.' . $ext;
$path = "{$dir}/$newName";
$result = $disk->put($path, $img);
return $result
? $this->responseUploaded($path, $disk->url($path))
: $this->responseErrorMessage('文件上传失败');
}
}
<?php
namespace App\Admin\Controllers;
use App\Models\UserBuycodeCheck;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
class UserBuycodeCheckController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(UserBuycodeCheck::with(['user']), function (Grid $grid) {
$grid->column('id')->sortable();
$grid->column('user.avatar', '用户头像')->image('', 100, 100);
$grid->column('user.nickname', '用户昵称');
$grid->column('user.phone', '手机号');
$grid->column('before_code');
$grid->column('after_code');
$grid->column('status');
// $grid->column('created_at');
// $grid->column('updated_at')->sortable();
$grid->filter(function (Grid\Filter $filter) {
// 更改为 panel 布局
$filter->panel();
$filter->equal('user.nickname', '用户昵称')->width(4);
$filter->like('user.phone', '手机号')->width(4);
$filter->equal('status', '审核状态')->select(['0' => '待审核', '1' => '已通过', '2' => '已驳回'])->width(3);
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new UserBuycodeCheck(), function (Show $show) {
$show->field('id');
$show->field('before_code');
$show->field('after_code');
$show->field('status');
$show->field('created_at');
$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new UserBuycodeCheck(), function (Form $form) {
$form->display('id');
$form->text('before_code');
$form->text('after_code');
$form->text('status');
$form->display('created_at');
$form->display('updated_at');
});
}
}
<?php
namespace App\Admin\Controllers;
use App\Admin\Forms\EditPermission;
use App\Admin\Forms\updatePassword;
use App\Models\User;
use App\Models\UserPermission;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
use App\Admin\Forms\UserCheckForm;
class UserCheckController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(new User(), function (Grid $grid) {
$grid->addTableClass(['table-text-center']);
$grid->model()->where(['status' => 0])->orderBy('created_at', 'DESC');
$grid->column('id')->sortable();
$grid->column('avatar', '头像')->image('', 50, 50);
$grid->column('company', '公司名称');
$grid->column('phone', '手机号');
$grid->column('status')
->display('点击审核')->modal(function (Grid\Displayers\Modal $modal) {
// 标题
$modal->title('点击审核');
// 自定义图标
$modal->icon('feather icon-edit');
// 传递当前行字段值
return UserCheckForm::make()->payload(['id' => $this->id]);
});
$grid->column('created_at', '注册时间')->display(function ($val) {
return date("Y-m-d H:i:s", strtotime($this->created_at));
});
$grid->disableActions();
$grid->disableCreateButton();
$grid->filter(function (Grid\Filter $filter) {
// 更改为 panel 布局
$filter->panel();
$filter->like('phone')->width(3);
$filter->like('company')->width(3);
$filter->between('created_at', '创建时间')->datetime()->width(6);
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new User(), function (Show $show) {
$show->field('id');
$show->field('name');
$show->field('avatar');
$show->field('openid');
$show->field('phone');
$show->field('status');
$show->field('role');
$show->field('department');
$show->field('email');
$show->field('email_verified_at');
$show->field('password');
$show->field('remember_token');
$show->field('created_at');
$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new User(), function (Form $form) {
$form->text('name', '昵称');
$form->text('company', '公司名称');
$form->text('score', '积分');
// $form->image('avatar', '头像')
// ->url('upload/user-avatar')
// ->deleteUrl('upload/delete-public-cos-file')
// ->autoUpload();
// if ($form->isCreating()) {
// $form->mobile('phone', '手机号')->rules('required|unique:users,phone', ['required' => '手机号码不可为空', 'unique' => '此手机号码已存在,请重新填写']);
// $form->text('password', '密码');
// }
// if ($form->isCreating()) {
// $form->saving(function (Form $form) {
// $form->password = bcrypt($form->password);
// });
// }
});
}
}
<?php
namespace App\Admin\Controllers;
use App\Models\UserCollect;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
class UserCollectController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(new UserCollect(), function (Grid $grid) {
$grid->column('id')->sortable();
$grid->column('created_at');
$grid->column('updated_at')->sortable();
$grid->filter(function (Grid\Filter $filter) {
$filter->equal('id');
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new UserCollect(), function (Show $show) {
$show->field('id');
$show->field('created_at');
$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new UserCollect(), function (Form $form) {
$form->display('id');
$form->display('created_at');
$form->display('updated_at');
});
}
}
<?php
namespace App\Admin\Controllers;
use App\Admin\Forms\EditPermission;
use App\Admin\Forms\updatePassword;
use Dcat\Admin\Grid\RowAction;
use App\Models\User;
use App\Models\UserPermission;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
class UserController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(User::with(['shuser']), function (Grid $grid) {
$grid->addTableClass(['table-text-center']);
$grid->model()->orderBy('created_at', 'DESC');
$grid->column('id')->sortable();
$grid->column('avatar', '头像')->image('', 50, 50);
$grid->column('name', '昵称');
$grid->column('phone', '手机号');
$grid->column('balance', '总金额');
$grid->column('shuser.name', '所属上级');
$grid->column('buycode', '直购码');
//$grid->column('status', '状态')->switch('', true);
$grid->column('created_at', '注册时间')->display(function ($val) {
return date("Y-m-d H:i:s", strtotime($this->created_at));
});
$grid->disableCreateButton();
$grid->disableViewButton();
$grid->disableDeleteButton();
$grid->enableDialogCreate();
$grid->disableEditButton();
$grid->showQuickEditButton();
//$grid->simplePaginate();
$grid->actions(function (Grid\Displayers\Actions $actions) {
// 添加一个按钮,并设置其属性
$actions->append('<a href="/user-share?id=' . $this->id . '" alt="查看下级" target="_blank">查看详情</a>');
// 或者使用 RowAction 来添加按钮
//$actions->append(RowAction::make('自定义按钮')->route('custom.route'));
});
$grid->filter(function (Grid\Filter $filter) {
// 更改为 panel 布局
$filter->panel();
$filter->like('name')->width(3);
$filter->like('phone')->width(3);
$filter->like('buycode', '直购码')->width(3);
$filter->like('buycode', '所属上级')->width(3);
//$filter->equal('role', '身份')->select(['1' => '用户', '2' => '代理商'])->width(3);
$filter->between('created_at', '注册时间')->datetime()->width(4);
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new User(), function (Show $show) {
$show->field('id');
$show->field('name');
$show->field('avatar');
$show->field('openid');
$show->field('phone');
$show->field('status');
$show->field('role');
$show->field('department');
$show->field('email');
$show->field('email_verified_at');
$show->field('password');
$show->field('remember_token');
$show->field('created_at');
$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new User(), function (Form $form) {
$form->text('name', '昵称');
$form->switch('status', '状态')->default(1);
// $form->image('avatar', '头像')
// ->url('upload/user-avatar')
// ->deleteUrl('upload/delete-public-cos-file')
// ->autoUpload();
// if ($form->isCreating()) {
// $form->mobile('phone', '手机号')->rules('required|unique:users,phone', ['required' => '手机号码不可为空', 'unique' => '此手机号码已存在,请重新填写']);
// $form->text('password', '密码');
// }
// if ($form->isCreating()) {
// $form->saving(function (Form $form) {
// $form->password = bcrypt($form->password);
// });
// }
});
}
}
<?php
namespace App\Admin\Controllers;
use App\Admin\Repositories\Verifier;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
class VerifierController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(new Verifier(), function (Grid $grid) {
$grid->column('id')->sortable();
$grid->column('merchant_id');
$grid->column('store_id');
$grid->column('created_at');
$grid->column('updated_at')->sortable();
$grid->filter(function (Grid\Filter $filter) {
$filter->equal('id');
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new Verifier(), function (Show $show) {
$show->field('id');
$show->field('merchant_id');
$show->field('store_id');
$show->field('created_at');
$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new Verifier(), function (Form $form) {
$form->display('id');
$form->text('merchant_id');
$form->text('store_id');
$form->display('created_at');
$form->display('updated_at');
});
}
}
<?php
namespace App\Admin\Extensions;
use App\Models\Good as GoodModel;
use App\Models\Category as CategoryModel;
use App\Models\GoodSku as GoodSkuModel;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
class GoodsExport implements FromCollection, WithHeadings
{
private $row;
private $data;
private $headings;
/**
* TaskDataExcelExpoter constructor.
* @param array $param 筛选条件
* @param array $data 数据
* @param array $headings 表头
*/
public function __construct($param = [], $data = [], $headings = [])
{
//表头设定
$headings = [[
'goods_id' => '商品ID',
'goods_name' => '商品名称',
'catname' => '分类',
'sku' => '规格信息',
'product_no' => '型号',
'material' => '材质',
'box_size' => '箱规',
'is_jd' => '是否京东自营',
'supplier' => '供应商联系人',
'su_phone' => '联系方式',
]];
$data = $this->getList($param);
$this->headings = $headings;
$this->data = $data;
}
public function headings(): array
{
return $this->headings;
}
public function collection()
{
return collect($this->data);
}
// 获取导出数据
public function getList($param)
{
$param = json_decode(json_encode($param), true);
$prePage = $param['per_page'] ?? 200;
$start = $param['start'] ?? 0;
$goods_name = $param['search']['goods_name'] ?? '';
$cat_id = $param['search']['cat_id'] ?? 0;
DB::enableQueryLog();
$note_monitor = DB::table('li_goods');
$where = [];
if ($cat_id) {
$where['cat_id'] = $cat_id;
}
if ($goods_name) {
$where['goods_name'] = $goods_name;
}
$note_monitor = $note_monitor->where($where);
// 计算列表总数
$count = $note_monitor->count();
// 获取列表
$data = [];
$list = $note_monitor->orderBy("id", 'desc')->limit($prePage)->offset($start)->get()->toArray();
//$queries = DB::getQueryLog();
foreach ($list as $key => $objVal) {
$tmp = [];
//ID
$tmp['goods_id'] = $objVal->id;
//名称
$tmp['goods_name'] = $objVal->goods_name;
//分类
$catObj = CategoryModel::find($objVal->cat_id);
$tmp['catname'] = $catObj ? $catObj->title : '';
//规格
$skufield = $objVal->sku ? json_decode($objVal->sku, true) : [];
$attrsKey = isset($skufield['attrs']) ? array_keys($skufield['attrs']) : [];
$attrsVal = isset($skufield['attrs']) ? array_values($skufield['attrs']) : [];
$skuData = isset($skufield['sku']) ? $skufield['sku'] : [];
$skuStr = "";
foreach ($skuData as $kk => $vv) {
$attr_sn = isset($vv['attr_sn']) ? $vv['attr_sn'] : '';
if (!$attr_sn) {
continue;
}
$gattr = DB::table("li_goods_sku")->where('goods_id', $objVal->id)->where('attr_sn', $attr_sn)->first();
$skuStr .= " 规格:" . $gattr->attr_val . " 购买数量:" . $vv['numb'] . " 折扣价:" . $vv['price'] . " 采购价:" . $vv['cg_price'] . " 京东价:" . $vv['jd_price'] . " 市场价:" . $vv['market_price'] . " 库存:" . $vv['stock'] . "\n";
}
$tmp['sku'] = $skuStr;
$tmp['product_no'] = $objVal->product_no;
$tmp['material'] = $objVal->material;
$tmp['box_size'] = $objVal->box_size;
$tmp['is_jd'] = ($objVal->is_jd == 1) ? '京东自营' : '非京东自营';
$tmp['supplier'] = $objVal->supplier;
$tmp['su_phone'] = $objVal->su_phone;
array_push($data, $tmp);
}
return $data;
}
}
<?php
namespace App\Admin\Forms;
use App\Models\Performance;
use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
use Dcat\Admin\Widgets\Form;
class EditParameter extends Form implements LazyRenderable
{
use LazyWidget;
/**
* Handle the form request.
*
* @param array $input
*
* @return mixed
*/
public function handle(array $input)
{
$model = Performance::find($this->payload['id']);
$params = [];
for($i=1;$i<=10;$i++){
$params[] = $input['param'.$i];
}
$model->parameter = json_encode($params,JSON_UNESCAPED_UNICODE);
if(!$model->save()){
return $this
->response()
->error('修改参数失败')
->refresh();
}
return $this
->response()
->success('修改参数成功.')
->refresh();
}
/**
* Build a form here.
*/
public function form()
{
$this->text('param1','参数1');
$this->text('param2','参数2');
$this->text('param3','参数3');
$this->text('param4','参数4');
$this->text('param5','参数5');
$this->text('param6','参数6');
$this->text('param7','参数7');
$this->text('param8','参数8');
$this->text('param9','参数9');
$this->text('param10','参数10');
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
$params = Performance::find($this->payload['id'])->parameter;
$params = $params ? json_decode($params) : [];
return [
'param1' => $params[0] ?? '',
'param2' => $params[1] ?? '',
'param3' => $params[2] ?? '',
'param4' => $params[3] ?? '',
'param5' => $params[4] ?? '',
'param6' => $params[5] ?? '',
'param7' => $params[6] ?? '',
'param8' => $params[7] ?? '',
'param9' => $params[8] ?? '',
'param10' => $params[9] ?? '',
];
}
}
<?php
namespace App\Admin\Forms;
use App\Models\User;
use App\Models\UserPermission;
use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
use Dcat\Admin\Widgets\Form;
class EditPermission extends Form implements LazyRenderable
{
use LazyWidget;
/**
* Handle the form request.
*
* @param array $input
*
* @return mixed
*/
public function handle(array $input)
{
$user = User::find($this->payload['id']);
$user->permissions = $input['permissions'];
if(!$user->save()){
return $this
->response()
->error('修改用户权限失败')
->refresh();
}
return $this
->response()
->success('修改用户权限成功.')
->refresh();
}
/**
* Build a form here.
*/
public function form()
{
$this->display('name','姓名');
$this->display('phone','手机');
$this->tree('permissions','权限')
->nodes(UserPermission::all()->toArray())
->treeState(false)
->saveAsJson();
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
$user = User::find($this->payload['id']);
return [
'permissions' => $user->permissions,
'name' => $user->name,
'phone' => $user->phone,
];
}
}
<?php
namespace App\Admin\Forms;
use App\Models\User;
use Dcat\Admin\Widgets\Form;
use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
use Illuminate\Support\Facades\DB;
class GenerateUserCode extends Form implements LazyRenderable
{
use LazyWidget;
/**
* Handle the form request.
*
* @param array $input
*
* @return mixed
*/
public function handle(array $input)
{
$num = (int)$input['num'];
if ($num <= 0 || $num > 20) {
$num = 20;
}
$data = [];
$i = 0;
$dcount = 0;
do {
$rndstr = generateRandomString(6);
$exist = DB::table("li_check_number")->where("code", $rndstr)->count();
if (!$exist) {
array_push($data, $rndstr);
}
$dcount = count($data);
} while ($i <= $num && $dcount != $num);
// for ($i = 0; $i <= $num; $i++) {
// $rndstr = generateRandomString(6);
// $exist = DB::table("li_check_number")->where("code", $rndstr)->count();
// if (!$exist) {
// array_push($data, $rndstr);
// }
// }
if ($data) {
foreach ($data as $code) {
$addtime = date("Y-m-d H:i:s");
DB::table("li_check_number")->insert(['code' => $code, 'created_at' => $addtime]);
}
}
return $this->response()->success('确认成功')->refresh();
}
/**
* Build a form here.
*/
public function form()
{
$this->text('num', '生成数量')->required()->help("生成20个以内随机编号(数字+大小写英文)");
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
// 获取外部传递参数
return [];
}
}
<?php
namespace App\Admin\Forms;
use App\Imports\ImportExcel as uImportExcel;
use App\Jobs\ansyImportExcel;
use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
use Dcat\Admin\Widgets\Form;
class ImportExcel extends Form implements LazyRenderable
{
use LazyWidget;
/**
* Handle the form request.
*
* @param array $input
*
* @return mixed
*/
public function handle(array $input)
{
$file_path = storage_path('app/public' . $input['e_file']);
dispatch(new ansyImportExcel($this->payload['className'],$file_path));
return $this
->response()
->success('导入成功,请稍后刷新页面查看数据.')
->refresh();
}
/**
* Build a form here.
*/
public function form()
{
$this->file('e_file', '数据文件')
->disk('public')
->accept('xls,xlsx')
->uniqueName()
->move('/import')
->autoUpload()
->help('仅支持xls,xlsx格式文件上传')
->required();
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
return [
'name' => 'John Doe',
'email' => 'John.Doe@gmail.com',
];
}
}
<?php
namespace App\Admin\Forms;
use App\Models\GoodSku;
use App\Models\MerchantStore;
use App\Models\MerchantGoodSku;
use Dcat\Admin\Widgets\Form;
use Dcat\Admin\Layout\Row;
use Dcat\Admin\Form\NestedForm;
use Dcat\Admin\Widgets\Table;
use Dcat\Admin\Widgets\Tool;
use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
use Illuminate\Support\Facades\DB;
//
class MerchantStoreForms extends Form implements LazyRenderable
{
use LazyWidget;
protected $modalId = 'show-current-user';
/**
* Handle the form request.
*
* @param array $input
*
* @return mixed
*/
public function handle(array $input)
{
$typeid = (int)$_POST['typeid']; //1:增加 2:编辑
$goods_id = (int)$_POST['goods_id'];
$mgs_id = (int)$_POST['mgs_id'];
$attr_ids = $_POST['attr_id'];
$stocks = $_POST['stock'];
$sskuids = isset($_POST['sskuid']) ? $_POST['sskuid'] : [];
if (!$goods_id || !$mgs_id || !$attr_ids || !$stocks) {
return $this->response()->error('参数错误')->refresh();
}
$logData = [];
if ($typeid == 1) {
foreach ($attr_ids as $kk => $vv) {
$gskuObj = GoodSku::find($vv);
$stockNum = ($gskuObj->stock >= $stocks[$kk] && $stocks[$kk]) ? (int)$stocks[$kk] : 0;
//$tmp['stock'] = $stockNum;
//查下库存记录是否存在
$skuObj = MerchantGoodSku::where(['mgs_id' => $mgs_id, 'goods_id' => $goods_id, 'attr_id' => $vv])->first();
if ($skuObj) {
$skuObj->stock += $stockNum;
$skuObj->save();
} else {
$skuObj = new MerchantGoodSku();
$skuObj->mgs_id = $mgs_id;
$skuObj->goods_id = $goods_id;
$skuObj->attr_id = $vv;
$skuObj->stock = $stockNum;
$skuObj->save();
}
//记录操作日志
$logData[$kk]['mgs_id'] = $mgs_id;
$logData[$kk]['goods_id'] = $goods_id;
$logData[$kk]['attr_id'] = $gskuObj->id;
$logData[$kk]['change'] = $stockNum;
$logData[$kk]['created_at'] = date('Y-m-d H:i:s');
$this->addStoreLog($logData);
}
} else {
if (!$sskuids) {
return $this->response()->error('参数错误')->refresh();
}
foreach ($sskuids as $kk => $vv) {
//商家规格数据
$skuObj = MerchantGoodSku::find($vv);
$store_num = (int)$stocks[$kk]; //减少库存数
$diffnum = $skuObj->stock - $store_num; //减少差值
if ($store_num && $diffnum >= 0) {
$skuObj->stock = $diffnum;
$skuObj->save();
//记录操作日志
$logData[$kk]['mgs_id'] = $mgs_id;
$logData[$kk]['attr_id'] = $skuObj->attr_id;
$logData[$kk]['goods_id'] = $goods_id;
$logData[$kk]['change'] = -$store_num;
$logData[$kk]['created_at'] = date('Y-m-d H:i:s');
$this->addStoreLog($logData);
}
}
}
return $this
->response()
->success('Processed successfully.')
->refresh();
}
private function addStoreLog($data = [])
{
if (!$data) {
return true;
}
DB::table('merchant_store_sku_log')->insert($data);
}
/**
* Build a form here.
*/
public function form()
{
//$this->text('name')->required();
//$this->email('email')->rules('email');
// 异步加载的字段
$this->html('<div class="row">
<div class="col-md-12">
<table class="table">
<thead>
<tr>
<th width="23%" style="text-align:center;">商品名称</th>
<th width="23%" style="text-align:center;">商品规格</th>
<th width="23%" style="text-align:center;" id="storeTitle"></th>
<th width="23%" style="text-align:center;">剩余库存</th>
</tr>
</thead>
<tbody id="tabletr">
<!-- 表格数据 -->
<!--<tr>
<td style="text-align:center;vertical-align: middle;">数据1</td>
<td style="text-align:center;vertical-align: middle;">蓝色、大号</td>
<td ><input type="text" name="remark" value="" class="form-control field_remark _normal_" placeholder=""></td>
<td style="text-align:center;vertical-align: middle;">123</td>
</tr>-->
<!-- 更多行数据 -->
</tbody>
</table>
</div>
</div>', $synchronized = false);
}
public function render2()
{
// // 构建表单
return view('admin.mstore');
//return parent::render();
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
return [
'name' => '6785678567',
'email' => 'John.Doe@gmail.com',
];
}
}
<?php
namespace App\Admin\Forms;
use App\Models\User;
use Dcat\Admin\Widgets\Form;
use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
class UserCheckForm extends Form implements LazyRenderable
{
use LazyWidget;
/**
* Handle the form request.
*
* @param array $input
*
* @return mixed
*/
public function handle(array $input)
{
$status = (int)$input['status'];
$order = User::find($this->payload['id']);
$order->status = $status;
$order->save();
return $this->response()->success('确认成功')->refresh();
}
/**
* Build a form here.
*/
public function form()
{
$this->radio('status', '状态')->options([1 => '通过', 2 => '驳回'])->default(1)->required();
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
// 获取外部传递参数
return [];
}
}
<?php
namespace App\Admin\Forms;
use App\Models\OrderInfo;
use Dcat\Admin\Widgets\Form;
use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
class VerifierCodeForm extends Form implements LazyRenderable
{
use LazyWidget;
/**
* Handle the form request.
*
* @param array $input
*
* @return mixed
*/
public function handle(array $input)
{
$code = trim($input['verification_code']);
$exist = OrderInfo::where('verification_code', $code)->count();
if ($exist) {
return $this->response()->error('该核销码已存在')->refresh();
}
$order = OrderInfo::find($this->payload['id']);
$order->order_status = 2; //待领取状态
$order->verification_code = $code;
$order->verification_at = date("Y-m-d H:i:s");
$order->save();
return $this->response()->success('确认成功')->refresh();
}
/**
* Build a form here.
*/
public function form()
{
$code = date('Ymd') . mt_rand(1000, 9999) . substr(implode("", array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);
$this->text('verification_code', '核销码')->default($code);
//$this->radio('status', '状态')->options([1 => '通过', 2 => '驳回'])->default(1)->required();
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
// 获取外部传递参数
return [];
}
}
<?php
namespace App\Admin\Forms;
use App\Models\PersonalAccessToken;
use App\Models\User;
use App\Models\UserPermission;
use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
use Dcat\Admin\Widgets\Form;
class updatePassword extends Form implements LazyRenderable
{
use LazyWidget;
/**
* Handle the form request.
*
* @param array $input
*
* @return mixed
*/
public function handle(array $input)
{
$user = User::find($this->payload['id']);
$user->password = bcrypt($input['password']);
if(!$user->save()){
return $this
->response()
->error('修改用户密码失败')
->refresh();
}
PersonalAccessToken::where(['tokenable_id'=>$user->id])->delete();
return $this
->response()
->success('修改用户密码成功.')
->refresh();
}
/**
* Build a form here.
*/
public function form()
{
$this->display('name','姓名');
$this->display('phone','手机');
$this->text('password','密码')->required();
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
$user = User::find($this->payload['id']);
return [
'name' => $user->name,
'phone' => $user->phone,
];
}
}
<?php
namespace App\Admin\Metrics\Examples;
use App\Models\Good as GoodModel;
use Dcat\Admin\Widgets\Metrics\Round;
use Dcat\Admin\Widgets\Metrics\Line;
use Illuminate\Http\Request;
class GoodsTotal extends Line
{
/**
* 初始化卡片内容
*/
protected function init()
{
parent::init();
$this->title('已取货总数');
$this->dropdown([
'1' => '今天',
'7' => '最近7天',
'30' => '最近30天',
'365' => '最近一年',
]);
//$this->chartLabels(['Finished', 'Pending', 'Rejected']);
// $this->dropdown([
// '7' => 'Last 7 Days',
// '28' => 'Last 28 Days',
// '30' => 'Last Month',
// '365' => 'Last Year',
// ]);
}
/**
* 处理请求
*
* @param Request $request
*
* @return mixed|void
*/
public function handle(Request $request)
{
switch ($request->get('option')) {
case '365':
$data = GoodModel::getYearData();
// 卡片内容
$this->withContent($data['total']);
// 图表数据
$this->withChart($data['list']);
break;
case '30':
$data = GoodModel::getNumDayData(30);
// 卡片内容
$this->withContent($data['total']);
// 图表数据
$this->withChart($data['list']);
break;
case '7':
$data = GoodModel::getNumDayData(7);
// 卡片内容
$this->withContent($data['total']);
// 图表数据
$this->withChart($data['list']);
break;
default:
$data = GoodModel::getNumDayData(1);
// 卡片内容
$this->withContent($data['total']);
// 图表数据
$this->withChart($data['list']);
}
}
/**
* 设置图表数据.
*
* @param array $data
*
* @return $this
*/
public function withChart(array $data)
{
$series_data = [];
foreach ($data as $v) {
$series_data[] = $v;
}
return $this->chart([
'series' => [
[
'name' => '订单量',
'data' => $series_data,
],
],
'stroke' => [
'curve' => 'smooth'
],
]);
}
/**
* 设置卡片内容.
*
* @param string $content
*
* @return $this
*/
public function withContent($content)
{
return $this->content(
<<<HTML
<div class="d-flex justify-content-between align-items-center mt-1" style="margin-bottom: 2px">
<h2 class="ml-1 font-lg-1">{$content}</h2>
<span class="mb-0 mr-1 text-80">{$this->title}</span>
</div>
HTML
);
}
}
<?php
namespace App\Admin\Metrics\Examples;
use Dcat\Admin\Admin;
use Dcat\Admin\Widgets\Metrics\Donut;
class NewDevices extends Donut
{
protected $labels = ['Desktop', 'Mobile'];
/**
* 初始化卡片内容
*/
protected function init()
{
parent::init();
$color = Admin::color();
$colors = [$color->primary(), $color->alpha('blue2', 0.5)];
$this->title('New Devices');
$this->subTitle('Last 30 days');
$this->chartLabels($this->labels);
// 设置图表颜色
$this->chartColors($colors);
}
/**
* 渲染模板
*
* @return string
*/
public function render()
{
$this->fill();
return parent::render();
}
/**
* 写入数据.
*
* @return void
*/
public function fill()
{
$this->withContent(44.9, 28.6);
// 图表数据
$this->withChart([44.9, 28.6]);
}
/**
* 设置图表数据.
*
* @param array $data
*
* @return $this
*/
public function withChart(array $data)
{
return $this->chart([
'series' => $data
]);
}
/**
* 设置卡片头部内容.
*
* @param mixed $desktop
* @param mixed $mobile
*
* @return $this
*/
protected function withContent($desktop, $mobile)
{
$blue = Admin::color()->alpha('blue2', 0.5);
$style = 'margin-bottom: 8px';
$labelWidth = 120;
return $this->content(
<<<HTML
<div class="d-flex pl-1 pr-1 pt-1" style="{$style}">
<div style="width: {$labelWidth}px">
<i class="fa fa-circle text-primary"></i> {$this->labels[0]}
</div>
<div>{$desktop}</div>
</div>
<div class="d-flex pl-1 pr-1" style="{$style}">
<div style="width: {$labelWidth}px">
<i class="fa fa-circle" style="color: $blue"></i> {$this->labels[1]}
</div>
<div>{$mobile}</div>
</div>
HTML
);
}
}
<?php
namespace App\Admin\Metrics\Examples;
use Dcat\Admin\Widgets\Metrics\Line;
use App\Models\User as UserModel;
use Illuminate\Http\Request;
class NewUsers extends Line
{
/**
* 初始化卡片内容
*
* @return void
*/
protected function init()
{
parent::init();
$this->title('待取货总数');
$this->dropdown([
'1' => '今天',
'7' => '最近7天',
'30' => '最近30天',
'365' => '最近一年',
]);
}
/**
* 处理请求
*
* @param Request $request
*
* @return mixed|void
*/
public function handle(Request $request)
{
switch ($request->get('option')) {
case '365':
$data = UserModel::getYearData();
// 卡片内容
$this->withContent($data['total']);
// 图表数据
$this->withChart($data['list']);
break;
case '30':
$data = UserModel::getNumDayData(30);
// 卡片内容
$this->withContent($data['total']);
// 图表数据
$this->withChart($data['list']);
break;
case '7':
$data = UserModel::getNumDayData(7);
// 卡片内容
$this->withContent($data['total']);
// 图表数据
$this->withChart($data['list']);
break;
default:
$data = UserModel::getNumDayData(1);
// 卡片内容
$this->withContent($data['total']);
// 图表数据
$this->withChart($data['list']);
}
}
/**
* 设置图表数据.
*
* @param array $data
*
* @return $this
*/
public function withChart(array $data)
{
$series_data = [];
foreach ($data as $v) {
$series_data[] = $v;
}
return $this->chart([
'series' => [
[
'name' => $this->title,
'data' => $series_data,
],
],
'stroke' => [
'curve' => 'smooth'
],
]);
}
// public function withChart(array $data)
// {
// return $this->chart([
// 'series' => [
// [
// 'name' => $this->title,
// 'data' => $data,
// ],
// ],
// ]);
// }
/**
* 设置卡片内容.
*
* @param string $content
*
* @return $this
*/
public function withContent($content)
{
return $this->content(
<<<HTML
<div class="d-flex justify-content-between align-items-center mt-1" style="margin-bottom: 2px">
<h2 class="ml-1 font-lg-1">{$content}</h2>
<span class="mb-0 mr-1 text-80">{$this->title}</span>
</div>
HTML
);
}
}
<?php
namespace App\Admin\Metrics\Examples;
use App\Models\OrderInfo as OrderInfoModel;
use Dcat\Admin\Widgets\Metrics\Round;
use Dcat\Admin\Widgets\Metrics\Line;
use Illuminate\Http\Request;
class OrderTotal extends Line
{
/**
* 初始化卡片内容
*/
protected function init()
{
parent::init();
$this->title('订单量');
$this->dropdown([
'1' => '今天',
'7' => '最近7天',
'30' => '最近30天',
'365' => '最近一年',
]);
//$this->chartLabels(['Finished', 'Pending', 'Rejected']);
// $this->dropdown([
// '7' => 'Last 7 Days',
// '28' => 'Last 28 Days',
// '30' => 'Last Month',
// '365' => 'Last Year',
// ]);
}
/**
* 处理请求
*
* @param Request $request
*
* @return mixed|void
*/
public function handle(Request $request)
{
switch ($request->get('option')) {
case '365':
$data = OrderInfoModel::getYearData();
// 卡片内容
$this->withContent($data['total']);
// 图表数据
$this->withChart($data['list']);
break;
case '30':
$data = OrderInfoModel::getNumDayData(30);
// 卡片内容
$this->withContent($data['total']);
// 图表数据
$this->withChart($data['list']);
break;
case '7':
$data = OrderInfoModel::getNumDayData(7);
// 卡片内容
$this->withContent($data['total']);
// 图表数据
$this->withChart($data['list']);
break;
default:
$data = OrderInfoModel::getNumDayData(1);
// 卡片内容
$this->withContent($data['total']);
// 图表数据
$this->withChart($data['list']);
}
}
/**
* 设置图表数据.
*
* @param array $data
*
* @return $this
*/
public function withChart(array $data)
{
$series_data = [];
foreach ($data as $v) {
$series_data[] = $v;
}
return $this->chart([
'series' => [
[
'name' => '订单量',
'data' => $series_data,
],
],
'stroke' => [
'curve' => 'smooth'
],
]);
}
/**
* 设置卡片内容.
*
* @param string $content
*
* @return $this
*/
public function withContent($content)
{
return $this->content(
<<<HTML
<div class="d-flex justify-content-between align-items-center mt-1" style="margin-bottom: 2px">
<h2 class="ml-1 font-lg-1">{$content}</h2>
<span class="mb-0 mr-1 text-80">{$this->title}</span>
</div>
HTML
);
}
}
<?php
namespace App\Admin\Metrics\Examples;
use Dcat\Admin\Widgets\Metrics\Round;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Dcat\Admin\Widgets\Metrics\Line;
class Product extends Line
{
/**
* 初始化卡片内容
*/
protected function init()
{
parent::init();
//$this->title('Product Orders');
//$this->chartLabels(['Finished', 'Pending', 'Rejected']);
// $this->dropdown([
// '7' => 'Last 7 Days',
// '28' => 'Last 28 Days',
// '30' => 'Last Month',
// '365' => 'Last Year',
// ]);
}
/**
* 处理请求
*
* @param Request $request
*
* @return mixed|void
*/
public function handle(Request $request)
{
switch ($request->get('option')) {
case '365':
case '30':
case '28':
case '7':
default:
$list = DB::table('li_goods')->where('is_show', 1)->orderBy('sale', 'desc')->limit(10)->get();
$html = '';
foreach ($list as $kk => $vv) {
$html .= '<tr>';
$html .= '<td style="width:20%;text-align:left;"><img src="' . env('IMAGE_URL') . $vv->cover_img . '" width="100"></td>';
$html .= '<td style="width:36%;text-align:left;">' . $vv->goods_name . '</td>';
$html .= '<td style="width:33%;">销量:' . $vv->sale . '</td>';
$html .= '</tr>';
}
// 卡片内容
$this->withContent(23043, $html);
// 图表数据
//$this->withChart([70, 52, 26]);
// 总数
$this->chartTotal('Total', 344);
}
}
/**
* 设置图表数据.
*
* @param array $data
*
* @return $this
*/
public function withChart(array $data)
{
return $this->chart([
'series' => $data,
]);
}
/**
* 卡片内容.
*
* @param int $finished
* @param int $pending
* @param int $rejected
*
* @return $this
*/
public function withContent($finished, $dataList)
{
return $this->content(
<<<HTML
<div class="col-sm-12 d-flex flex-column flex-wrap text-center">
<table border="0" cellpadding="8" style="width:98%;border-spacing:8px;margin-bottom:15px;">
{$dataList}
</table>
</div>
HTML
);
}
}
<?php
namespace App\Admin\Metrics\Examples;
use Dcat\Admin\Admin;
use Dcat\Admin\Widgets\Metrics\Bar;
use Illuminate\Http\Request;
class Sessions extends Bar
{
/**
* 初始化卡片内容
*/
protected function init()
{
parent::init();
$color = Admin::color();
$dark35 = $color->dark35();
// 卡片内容宽度
$this->contentWidth(5, 7);
// 标题
$this->title('Avg Sessions');
// 设置下拉选项
$this->dropdown([
'7' => 'Last 7 Days',
'28' => 'Last 28 Days',
'30' => 'Last Month',
'365' => 'Last Year',
]);
// 设置图表颜色
$this->chartColors([
$dark35,
$dark35,
$color->primary(),
$dark35,
$dark35,
$dark35
]);
}
/**
* 处理请求
*
* @param Request $request
*
* @return mixed|void
*/
public function handle(Request $request)
{
switch ($request->get('option')) {
case '7':
default:
// 卡片内容
$this->withContent('2.7k', '+5.2%');
// 图表数据
$this->withChart([
[
'name' => 'Sessions',
'data' => [75, 125, 225, 175, 125, 75, 25],
],
]);
}
}
/**
* 设置图表数据.
*
* @param array $data
*
* @return $this
*/
public function withChart(array $data)
{
return $this->chart([
'series' => $data,
]);
}
/**
* 设置卡片内容.
*
* @param string $title
* @param string $value
* @param string $style
*
* @return $this
*/
public function withContent($title, $value, $style = 'success')
{
// 根据选项显示
$label = strtolower(
$this->dropdown[request()->option] ?? 'last 7 days'
);
$minHeight = '183px';
return $this->content(
<<<HTML
<div class="d-flex p-1 flex-column justify-content-between" style="padding-top: 0;width: 100%;height: 100%;min-height: {$minHeight}">
<div class="text-left">
<h1 class="font-lg-2 mt-2 mb-0">{$title}</h1>
<h5 class="font-medium-2" style="margin-top: 10px;">
<span class="text-{$style}">{$value} </span>
<span>vs {$label}</span>
</h5>
</div>
<a href="#" class="btn btn-primary shadow waves-effect waves-light">View Details <i class="feather icon-chevrons-right"></i></a>
</div>
HTML
);
}
}
<?php
namespace App\Admin\Metrics\Examples;
use Dcat\Admin\Widgets\Metrics\RadialBar;
use Illuminate\Http\Request;
class Tickets extends RadialBar
{
/**
* 初始化卡片内容
*/
protected function init()
{
parent::init();
$this->title('Tickets');
$this->height(400);
$this->chartHeight(300);
$this->chartLabels('Completed Tickets');
$this->dropdown([
'7' => 'Last 7 Days',
'28' => 'Last 28 Days',
'30' => 'Last Month',
'365' => 'Last Year',
]);
}
/**
* 处理请求
*
* @param Request $request
*
* @return mixed|void
*/
public function handle(Request $request)
{
switch ($request->get('option')) {
case '365':
case '30':
case '28':
case '7':
default:
// 卡片内容
$this->withContent(162);
// 卡片底部
$this->withFooter(29, 63, '1d');
// 图表数据
$this->withChart(83);
}
}
/**
* 设置图表数据.
*
* @param int $data
*
* @return $this
*/
public function withChart(int $data)
{
return $this->chart([
'series' => [$data],
]);
}
/**
* 卡片内容
*
* @param string $content
*
* @return $this
*/
public function withContent($content)
{
return $this->content(
<<<HTML
<div class="d-flex flex-column flex-wrap text-center">
<h1 class="font-lg-2 mt-2 mb-0">{$content}</h1>
<small>Tickets</small>
</div>
HTML
);
}
/**
* 卡片底部内容.
*
* @param string $new
* @param string $open
* @param string $response
*
* @return $this
*/
public function withFooter($new, $open, $response)
{
return $this->footer(
<<<HTML
<div class="d-flex justify-content-between p-1" style="padding-top: 0!important;">
<div class="text-center">
<p>New Tickets</p>
<span class="font-lg-1">{$new}</span>
</div>
<div class="text-center">
<p>Open Tickets</p>
<span class="font-lg-1">{$open}</span>
</div>
<div class="text-center">
<p>Response Time</p>
<span class="font-lg-1">{$response}</span>
</div>
</div>
HTML
);
}
}
<?php
namespace App\Admin\Metrics\Examples;
use Dcat\Admin\Widgets\Metrics\Card;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
class TotalUsers extends Card
{
/**
* 卡片底部内容.
*
* @var string|Renderable|\Closure
*/
protected $footer;
/**
* 初始化卡片.
*/
protected function init()
{
parent::init();
$this->title('Total Users');
$this->dropdown([
'7' => 'Last 7 Days',
'28' => 'Last 28 Days',
'30' => 'Last Month',
'365' => 'Last Year',
]);
}
/**
* 处理请求.
*
* @param Request $request
*
* @return void
*/
public function handle(Request $request)
{
switch ($request->get('option')) {
case '365':
$this->content(mt_rand(600, 1500));
$this->down(mt_rand(1, 30));
break;
case '30':
$this->content(mt_rand(170, 250));
$this->up(mt_rand(12, 50));
break;
case '28':
$this->content(mt_rand(155, 200));
$this->up(mt_rand(5, 50));
break;
case '7':
default:
$this->content(143);
$this->up(15);
}
}
/**
* @param int $percent
*
* @return $this
*/
public function up($percent)
{
return $this->footer(
"<i class=\"feather icon-trending-up text-success\"></i> {$percent}% Increase"
);
}
/**
* @param int $percent
*
* @return $this
*/
public function down($percent)
{
return $this->footer(
"<i class=\"feather icon-trending-down text-danger\"></i> {$percent}% Decrease"
);
}
/**
* 设置卡片底部内容.
*
* @param string|Renderable|\Closure $footer
*
* @return $this
*/
public function footer($footer)
{
$this->footer = $footer;
return $this;
}
/**
* 渲染卡片内容.
*
* @return string
*/
public function renderContent()
{
$content = parent::renderContent();
return <<<HTML
<div class="d-flex justify-content-between align-items-center mt-1" style="margin-bottom: 2px">
<h2 class="ml-1 font-lg-1">{$content}</h2>
</div>
<div class="ml-1 mt-1 font-weight-bold text-80">
{$this->renderFooter()}
</div>
HTML;
}
/**
* 渲染卡片底部内容.
*
* @return string
*/
public function renderFooter()
{
return $this->toString($this->footer);
}
}
<?php
namespace App\Admin\Renderable;
use App\Models\MerchantGoodSku;
use App\Models\Good as GoodModel;
use App\Models\Category;
use Dcat\Admin\Grid;
use Dcat\Admin\Grid\LazyRenderable;
class MerchantStoreSkuList extends LazyRenderable
{
public function grid(): Grid
{
// 获取外部传递的参数
$mgs_id = $this->payload['mgs_id'] ?? [];
return Grid::make(MerchantGoodSku::with(['attr']), function (Grid $grid) use ($mgs_id) {
$grid->addTableClass(['table-text-center']);
$grid->model()->where('mgs_id', $mgs_id);
$grid->column('attr.attr_val', '规格');
// $grid->column('attr.market_price', '零售价');
// $grid->column('attr.cg_price', '代购价');
$grid->column('stock', '剩余库存');
$grid->disableCreateButton();
$grid->disableRefreshButton();
$grid->disablePagination();
$grid->disableViewButton();
$grid->disableEditButton();
$grid->disableRowSelector();
$grid->disableDeleteButton();
$grid->disableActions();
//屏蔽删除
//$grid->actions(new DeleteService());
});
}
}
<?php
namespace App\Admin\Renderable;
use App\Models\OrderGoods;
use App\Models\Good as GoodModel;
use App\Models\Category;
use Dcat\Admin\Grid;
use Dcat\Admin\Grid\LazyRenderable;
class OrderGoodsList extends LazyRenderable
{
public function grid(): Grid
{
// 获取外部传递的参数
$order_id = $this->payload['order_id'] ?? [];
return Grid::make(new OrderGoods(), function (Grid $grid) use ($order_id) {
$grid->addTableClass(['table-text-center']);
$grid->model()->where('order_id', $order_id);
//$grid->column('goods_img', '图片')->image(env("IMAGE_URL"), 50);
$grid->column('goods_name', '标题')->limit(15)->width(300);
$grid->column('goods_attr', '规格')->limit(10);
$grid->column('goods_number', '数量')->limit(10);
$grid->column('goods_price', '价格')->limit(10);
$grid->column('total', '合计')->display(function ($val) {
$num = $this->goods_number;
$price = $this->goods_price;
return sprintf("%.2f", $price * $num);
});
$grid->disableCreateButton();
$grid->disableRefreshButton();
$grid->disablePagination();
$grid->disableViewButton();
$grid->disableEditButton();
$grid->disableRowSelector();
$grid->disableDeleteButton();
$grid->disableActions();
//屏蔽删除
//$grid->actions(new DeleteService());
});
}
}
<?php
namespace App\Admin\Renderable;
use App\Models\OrderGoods;
use App\Models\Good as GoodModel;
use App\Models\Category;
use App\Models\GoodSku;
use Dcat\Admin\Grid;
use Dcat\Admin\Grid\LazyRenderable;
class RenderGoodSku extends LazyRenderable
{
public function grid(): Grid
{
// 获取外部传递的参数
$gid = $this->payload['goods_id'] ?? [];
return Grid::make(new GoodSku(), function (Grid $grid) use ($gid) {
$grid->model()->where('goods_id', $gid);
//规格 购买数量 折扣价 采购价 京东价 零售价 库存
$grid->addTableClass(['table-text-center']);
$grid->model()->where('goods_id', $gid);
$grid->column('attr_val', '规格');
$grid->column('cg_price', '代购价');
$grid->column('market_price', '零售价');
$grid->column('stock', '库存');
$grid->disableCreateButton();
$grid->disableRefreshButton();
$grid->disablePagination();
$grid->disableViewButton();
$grid->disableEditButton();
$grid->disableRowSelector();
$grid->disableDeleteButton();
$grid->disableActions();
//屏蔽删除
//$grid->actions(new DeleteService());
});
}
}
<?php
namespace App\Admin\Renderable;
use App\Models\Store;
use App\Models\Good as GoodModel;
use App\Models\Category;
use Dcat\Admin\Grid;
use Dcat\Admin\Grid\LazyRenderable;
class StoreList extends LazyRenderable
{
public function grid(): Grid
{
// 获取外部传递的参数
$merchant_id = $this->payload['merchant_id'] ?? [];
return Grid::make(new Store(), function (Grid $grid) use ($merchant_id) {
$grid->addTableClass(['table-text-center']);
$grid->model()->where('merchant_id', $merchant_id);
$grid->column('title', '门店名称');
$grid->column('lat_lng', '经纬度');
$grid->column('address', '详细地址');
$grid->column('distance', '配送范围')->display(function ($val) {
return $val > 0 ? $val . " 公里" : '';
});
$grid->disableCreateButton();
$grid->disableRefreshButton();
$grid->disablePagination();
$grid->disableViewButton();
$grid->disableEditButton();
$grid->disableRowSelector();
$grid->disableDeleteButton();
$grid->disableActions();
//屏蔽删除
//$grid->actions(new DeleteService());
});
}
}
<?php
namespace App\Admin\Repositories;
use App\Models\Article as Model;
use Dcat\Admin\Repositories\EloquentRepository;
class Article extends EloquentRepository
{
/**
* Model.
*
* @var string
*/
protected $eloquentClass = Model::class;
}
<?php
namespace App\Admin\Repositories;
use Dcat\Admin\Repositories\EloquentRepository;
use App\Models\GoodSku as GoodSkuModel;
class GoodSku extends EloquentRepository
{
protected $eloquentClass = GoodSkuModel::class;
}
<?php
namespace App\Admin\Repositories;
use App\Models\Verifier as Model;
use Dcat\Admin\Repositories\EloquentRepository;
class Verifier extends EloquentRepository
{
/**
* Model.
*
* @var string
*/
protected $eloquentClass = Model::class;
}
<?php
use Dcat\Admin\Admin;
use Dcat\Admin\Grid;
use Dcat\Admin\Form;
use Dcat\Admin\Grid\Filter;
use Dcat\Admin\Show;
/**
* Dcat-admin - admin builder based on Laravel.
* @author jqh <https://github.com/jqhph>
*
* Bootstraper for Admin.
*
* Here you can remove builtin form field:
*
* extend custom field:
* Dcat\Admin\Form::extend('php', PHPEditor::class);
* Dcat\Admin\Grid\Column::extend('php', PHPEditor::class);
* Dcat\Admin\Grid\Filter::extend('php', PHPEditor::class);
*
* Or require js and css assets:
* Admin::css('/packages/prettydocs/css/styles.css');
* Admin::js('/packages/prettydocs/js/main.js');
*
*/
<?php
use Illuminate\Routing\Router;
use Illuminate\Support\Facades\Route;
use Dcat\Admin\Admin;
Admin::routes();
Route::group([
'prefix' => config('admin.route.prefix'),
'namespace' => config('admin.route.namespace'),
'middleware' => config('admin.route.middleware'),
], function (Router $router) {
/****************************************************** 图片文件上传组件Start *********************************************************/
$router->match(['put', 'post'], 'upload/user', 'UploadController@userUpload'); //头像图上传
$router->match(['put', 'post'], 'upload/goods', 'UploadController@goodsUpload'); //商品图上传
$router->match(['put', 'post'], 'upload/merchant', 'UploadController@merchantUpload'); //门店图上传
$router->match(['put', 'post'], 'upload/user-avatar', 'UploadController@uploadUserAvatar'); //上传用户头像
$router->match(['put', 'post'], 'upload/carousel', 'UploadController@carouselUpload'); //上传轮播图
$router->match(['put', 'post'], 'upload/article', 'UploadController@articleUpload'); //上传文章图
$router->match(['put', 'post'], 'upload/skuImage', 'UploadController@uploadSkuImage'); //上传商品规格图
//$router->match(['put', 'post'], 'upload/resource-file', 'UploadController@uploadResourceFile'); //上传资源文件
/****************************************************** 图片文件上传组件end *********************************************************/
$router->get('/', 'HomeController@index');
$router->resource('category', 'CategoryController'); //分类管理
$router->resource('article', 'ArticleController'); //文章管理
$router->resource('goods', 'GoodController'); //商品管理
Route::get('goods-export', 'GoodController@export'); //导出
$router->resource('kefu', 'KefuController'); //平台客服
$router->resource('setting', 'SystemSettingController'); //数值设置
$router->resource('orderInfo', 'OrderInfoController'); //订单管理
$router->resource('user', 'UserController'); //用户管理
$router->resource('user-share', 'shareController'); //查看下级
$router->resource('user-check', 'UserCheckController'); //用户审核列表
$router->resource('check-number', 'CheckNumberController'); //审核编号列表
$router->resource('carousel', 'CarouselController'); //轮播图管理
$router->resource('merchant', 'MerchantController'); //商家管理
$router->resource('merchant-store', 'MerchantGoodsStoreController'); //商家库存管理
$router->resource('merchant-store-log', 'MerchantStoreSkuLogController'); //商家库存记录
$router->resource('buycode-check', 'UserBuycodeCheckController'); //直购码审核
$router->resource('verifier', 'StoreAdminUsersController'); //核销员列表
$router->resource('comment', 'CommentController'); //评论列表
$router->resource('comment-tpl', 'CommentTplController'); //评价模板
$router->resource('check-cashout', 'IncomeController'); //提现审核管理
$router->get('city', 'CityController@getList'); //城市选择-联动
$router->get('get-store-list', 'MerchantStoreController@getList'); //门店选择-联动
});
<?php
namespace App\Command;
class Log{
static public function add(string $logKey, mixed $logInfo) :void{
//判断当天的日志文件是否存在
$day = date('Y-m-d');
$logFileName = 'runLog_'.$day.'.log';
$logPath = storage_path("logs/".$logFileName);
file_put_contents($logPath,date('【 H:i:s 】'.$logKey.': ').print_r($logInfo,true),FILE_APPEND);
}
}
<?php
namespace App\Command;
class Tools{
//计算俩地距离
function get_two_point_distance($lat1,$lng1,$lat2,$lng2)
{
$radLat1 = deg2rad($lat1);//deg2rad()函数将角度转换为弧度
$radLat2 = deg2rad($lat2);
$radLng1 = deg2rad($lng1);
$radLng2 = deg2rad($lng2);
$a = $radLat1 - $radLat2;
$b = $radLng1 - $radLng2;
$s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2))) * 6378.137;
return round($s,2);//返回公里数
}
}
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment