Skip to content

Commit b47aaff

Browse files
authored
Merge pull request #4 from liaodeity/8.x
8.x
2 parents cf247f9 + 16c218e commit b47aaff

File tree

12 files changed

+142
-87
lines changed

12 files changed

+142
-87
lines changed

app/Http/Controllers/Admin/MenuController.php

Lines changed: 47 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ public function index (Request $request)
6565
//进行了搜索,不进行上下级显示
6666
$list[ $key ]['pid'] = 0;
6767
}
68-
$list[$key]['status'] = MenuStatusEnum::toHtml ($item->status);
69-
$list[$key]['type'] = MenuTypeEnum::toHtml ($item->type);
68+
$list[ $key ]['status'] = MenuStatusEnum::toHtml ($item->status);
69+
$list[ $key ]['type'] = MenuTypeEnum::toHtml ($item->type);
7070
$list[ $key ]['_view_auth'] = true;
7171
$list[ $key ]['_edit_url'] = url ('admin/menu/' . $item->id . '/edit');
7272
}
@@ -92,7 +92,16 @@ public function index (Request $request)
9292
*/
9393
public function create ()
9494
{
95-
//
95+
if (!check_admin_auth ($this->module_name . '_' . __FUNCTION__)) {
96+
return auth_error_return ();
97+
}
98+
$menu = $this->repository->makeModel ();
99+
$_method = 'POST';
100+
$menus = Menu::orderBy ('sort', 'asc')->get ();
101+
$menus = $menus->toArray ();
102+
$menuPidList = list_to_tree ($menus);
103+
104+
return view ('admin.' . $this->module_name . '.add', compact ('menu', '_method', 'menuPidList'));
96105
}
97106

98107
/**
@@ -103,7 +112,33 @@ public function create ()
103112
*/
104113
public function store (Request $request)
105114
{
106-
//
115+
$request->validate ([
116+
'Menu.title' => 'required',
117+
'Menu.status' => 'required',
118+
], [], [
119+
'Menu.title' => '菜单名称',
120+
'Menu.status' => '状态',
121+
]);
122+
if (!check_admin_auth ($this->module_name . ' edit')) {
123+
return auth_error_return ();
124+
}
125+
$input = $request->input ('Menu');
126+
$input = $this->formatRequestInput (__FUNCTION__, $input);
127+
try {
128+
$input['type'] = MenuTypeEnum::MENU;
129+
$input['uuid'] = get_uuid ();
130+
$menu = $this->repository->create ($input);
131+
if ($menu) {
132+
Log::createLog (Log::EDIT_TYPE, '添加菜单', $menu->toArray (), $menu->id, Menu::class);
133+
134+
return ajax_success_result ('添加成功');
135+
} else {
136+
return ajax_success_result ('添加失败');
137+
}
138+
139+
} catch (BusinessException $e) {
140+
return ajax_error_result ($e->getMessage ());
141+
}
107142
}
108143

109144
/**
@@ -132,9 +167,12 @@ public function edit (Menu $menu)
132167
if (!check_admin_auth ($this->module_name . '_' . __FUNCTION__)) {
133168
return auth_error_return ();
134169
}
135-
$_method = 'PUT';
170+
$_method = 'PUT';
171+
$menus = Menu::orderBy ('sort', 'asc')->get ();
172+
$menus = $menus->toArray ();
173+
$menuPidList = list_to_tree ($menus);
136174

137-
return view ('admin.' . $this->module_name . '.add', compact ('menu', '_method'));
175+
return view ('admin.' . $this->module_name . '.add', compact ('menu', '_method', 'menuPidList'));
138176
}
139177

140178
/**
@@ -175,6 +213,9 @@ public function update (Request $request, Menu $menu)
175213

176214
private function formatRequestInput (string $__FUNCTION__, $input)
177215
{
216+
if(isset($input['pid']) && empty($input['pid'])){
217+
$input['pid'] = 0;
218+
}
178219
return $input;
179220
}
180221

app/Models/Article.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
class Article extends Model
1919
{
2020
use DateTimeFormat;
21-
protected $fillable = ['category_id','user_id','username','title','is_relevant','subhead','smalltitle','keyword','copy_from','from_link','link_url','description','content','tags','template','attach','attach_image','attach_thumb','istop','status','recommend','display_order','view_count','created_at','updated_at'];
21+
protected $fillable = ['category_id','user_id','username','title','is_relevant','subhead','smalltitle','keyword','copy_from','from_link','link_url','description','content','tags','template','attach','attach_image','attach_thumb','istop','status','recommend','display_order','view_count'];
2222
protected $dates = ['created_at'];
2323
public function statusItem ($ind = 'all', $html = false)
2424
{

app/Models/Attachment.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
class Attachment extends Model
1919
{
2020
use DateTimeFormat;
21-
protected $fillable = ['company_id', 'user_id', 'name', 'path', 'file_md5', 'file_sha1', 'status', 'created_at', 'updated_at'];
21+
protected $fillable = [ 'user_id', 'name', 'path', 'file_md5', 'file_sha1', 'status'];
2222

2323
/**
2424
* 保存附件信息,根据SHA和MD5判断是否重复,重复标记记录status=-1,

app/Models/Log.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class Log extends Model
2727
const INFO_TYPE = 6;
2828
const ERROR_TYPE = 7;
2929
const TO_DO_TYPE = 8;
30-
protected $fillable = ['content', 'created_at', 'source_id', 'source_type', 'title', 'type', 'updated_at', 'user_id'];
30+
protected $fillable = ['content', 'source_id', 'source_type', 'title', 'type', 'user_id'];
3131

3232
public function typeItem ($ind = 'all', $html = false)
3333
{

app/Models/LogRead.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
class LogRead extends Model
1919
{
2020
use DateTimeFormat;
21-
protected $fillable = ['id', 'log_id', 'user_id', 'is_read', 'read_at', 'created_at', 'updated_at'];
21+
protected $fillable = ['log_id', 'user_id', 'is_read', 'read_at'];
2222

2323
public function user ()
2424
{

app/Models/Menu.php

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
| Author: 廖春贵 < liaodeity@gmail.com >
1111
|-----------------------------------------------------------------------------------------------------------
1212
*/
13+
1314
namespace App\Models;
1415

1516
use App\Traits\DateTimeFormat;
@@ -18,18 +19,10 @@
1819
class Menu extends Model
1920
{
2021
use DateTimeFormat;
21-
protected $fillable = ['pid', 'type', 'title', 'auth_name', 'href', 'icon', 'target', 'is_shortcut', 'status', 'created_at', 'updated_at'];
22+
protected $fillable = ['pid', 'uuid', 'type', 'title', 'auth_name', 'href', 'icon', 'target', 'is_shortcut', 'status', 'sort'];
2223

23-
public function moduleItem ($ind = 'all', $html = false)
24-
{
25-
return [];
26-
}
27-
public function statusItem ($ind = 'all', $html = false)
28-
{
29-
return [];
30-
}
31-
public function typeItem ($ind = 'all', $html = false)
24+
public function pidMenu ()
3225
{
33-
return [];
26+
return $this->belongsTo (Menu::class, 'pid');
3427
}
3528
}

app/Models/WebMenu.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
class WebMenu extends Model
1919
{
2020
use DateTimeFormat;
21-
protected $fillable = ['id','pid','link_label','title','href','target','category_id','page_id','status','sort','user_id','created_at','updated_at','keyword','description'];
21+
protected $fillable = ['pid','link_label','title','href','target','category_id','page_id','status','sort','user_id','keyword','description'];
2222

2323
public function statusItem ($ind = 'all', $html = false)
2424
{

database/migrations/2020_03_19_141733_create_menus.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public function up()
1515
{
1616
Schema::create('menus', function (Blueprint $table) {
1717
$table->id();
18-
$table->unsignedBigInteger ('pid');
18+
$table->unsignedBigInteger ('pid')->default (0);
1919
$table->uuid ('uuid')->unique ()->comment ('菜单唯一性');
2020
$table->tinyInteger ('type')->default (0)->comment ('类型【1=菜单、2=按钮】');
2121
$table->string ('cate_module', 20)->default ('')->comment ('分类模型');

readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
- 演示说明:理性演示,误删除基础数据,可自行添加数据,自行删除(数据库会不定时重置抹除数据)
3737

3838
### 项目仓库说明
39-
如果因网络原因无法下载,可通过`国内Gitee`版本下载,会定时同步到`Gitee`
39+
如果因网络原因无法下载,可通过`国内Gitee`版本下载,一旦有新的发行版将同步到`Gitee`
4040

4141
- GitHub:[https://github.com/liaodeity/laravel-admin-cms](https://github.com/liaodeity/laravel-admin-cms)
4242

resources/views/admin/menu/add.blade.php

Lines changed: 58 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,33 @@
1111
@csrf
1212
<input type="hidden" name="id" value="{{$menu->id ?? ''}}">
1313
<div class="layui-form-item">
14-
<label class="layui-form-label">父ID <span class="color-red"></span></label>
15-
<div class="layui-input-block">
16-
<input type="text" name="Menu[pid]" value="{{$menu->pid ?? ''}}" maxlength="36" autocomplete="off"
17-
placeholder=""
18-
class="layui-input">
14+
<label class="layui-form-label">上级菜单 <span class="color-red"></span></label>
15+
<div class="layui-input-block ">
16+
<select name="Menu[pid]" lay-filter="survey_id" class=" width-120">
17+
<option value=""></option>
18+
@foreach($menuPidList as $ind => $item)
19+
<option data-name="{{$item->auth_name ?? ''}}" value="{{$item->id}}"
20+
@if(isset($menu->pid) && $menu->pid == $item->id) selected @endif>|--{{$item->title}}</option>
21+
@if(isset($item->_child))
22+
@foreach($item->_child as $child)
23+
<option data-name="{{$child->auth_name ?? ''}}" value="{{$child->id}}"
24+
@if(isset($menu->pid) && $menu->pid == $child->id) selected @endif>&nbsp;&nbsp;&nbsp;&nbsp;|--{{$child->title}}</option>
25+
@if(isset($child->_child))
26+
@foreach($child->_child as $child2)
27+
<option data-name="{{$child2->auth_name ?? ''}}" value="{{$child2->id}}"
28+
@if(isset($menu->pid) && $menu->pid == $child2->id) selected @endif>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|--{{$child2->title}}</option>
29+
@endforeach
30+
@endif
31+
@endforeach
32+
@endif
33+
@endforeach
34+
</select>
1935
</div>
2036
</div>
2137
<div class="layui-form-item">
22-
<label class="layui-form-label">菜单标识名称 <span class="color-red"></span></label>
38+
<label class="layui-form-label">菜单名称 <span class="color-red">*</span></label>
2339
<div class="layui-input-block">
24-
<input type="text" name="Menu[cate_module]" value="{{$menu->cate_module ?? ''}}" maxlength="100" autocomplete="off"
40+
<input type="text" name="Menu[title]" value="{{$menu->title ?? ''}}" maxlength="50" autocomplete="off"
2541
placeholder=""
2642
class="layui-input">
2743
</div>
@@ -33,23 +49,6 @@ class="layui-input">
3349
maxlength="255">{{$menu->auth_name ?? ''}}</textarea>
3450
</div>
3551
</div>
36-
<div class="layui-form-item">
37-
<label class="layui-form-label">类型 <span class="color-red"></span></label>
38-
<div class="layui-input-block">
39-
@foreach(\App\Enums\MenuTypeEnum::attrs () as $ind=>$val)
40-
<input type="radio" name="Menu[type]" value="{{$ind}}" title="{{$val}}"
41-
@if(isset($menu->type) && $menu->type==$ind ) checked @endif >
42-
@endforeach
43-
</div>
44-
</div>
45-
<div class="layui-form-item">
46-
<label class="layui-form-label">排序 <span class="color-red"></span></label>
47-
<div class="layui-input-block">
48-
<input type="text" name="Menu[sort]" value="{{$menu->sort ?? ''}}" maxlength="" autocomplete="off"
49-
placeholder=""
50-
class="layui-input">
51-
</div>
52-
</div>
5352
<div class="layui-form-item">
5453
<label class="layui-form-label">路由地址 <span class="color-red"></span></label>
5554
<div class="layui-input-block">
@@ -58,14 +57,6 @@ class="layui-input">
5857
class="layui-input">
5958
</div>
6059
</div>
61-
<div class="layui-form-item">
62-
<label class="layui-form-label">菜单名称 <span class="color-red"></span></label>
63-
<div class="layui-input-block">
64-
<input type="text" name="Menu[title]" value="{{$menu->title ?? ''}}" maxlength="50" autocomplete="off"
65-
placeholder=""
66-
class="layui-input">
67-
</div>
68-
</div>
6960
<div class="layui-form-item">
7061
<label class="layui-form-label">图标 <span class="color-red"></span></label>
7162
<div class="layui-input-block">
@@ -92,7 +83,7 @@ class="layui-input">
9283
</div>
9384
</div>
9485
<div class="layui-form-item">
95-
<label class="layui-form-label">状态 <span class="color-red"></span></label>
86+
<label class="layui-form-label">状态 <span class="color-red">*</span></label>
9687
<div class="layui-input-block">
9788
@foreach(\App\Enums\MenuStatusEnum::attrs () as $ind=>$val)
9889
<input type="radio" name="Menu[status]" value="{{$ind}}" title="{{$val}}"
@@ -137,24 +128,45 @@ class="layui-input">
137128
} else {
138129
_url = '/admin/' + MODULE_NAME;
139130
}
140-
axios.post(_url, $(data.form).serialize()).then((response) => {
141-
var data = response.data;
142-
if (data.code === 0) {
143-
layer.msg(data.message, {icon: 6, time: SUCCESS_TIME, shade: 0.2});
144-
setTimeout(function () {
145-
var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
146-
parent.$('button[lay-filter="data-search-btn"]').click();//刷新列表
147-
parent.layer.close(index); //再执行关闭
148-
149-
}, SUCCESS_TIME)
150-
} else {
151-
layer.msg(data.message, {
131+
$.ajax({
132+
type: 'POST',
133+
url: _url,
134+
data: data.field,
135+
dataType: 'json',
136+
beforeSend: function () {
137+
$("#button[lay-filter='create']").removeClass('disabled').prop('disabled', false);
138+
loading = layer.load(2)
139+
},
140+
complete: function () {
141+
$("#button[lay-filter='create']").removeClass('disabled').prop('disabled', false);
142+
layer.close(loading)
143+
},
144+
error: function () {
145+
layer.msg(AJAX_ERROR_TIP, {
152146
icon: 2,
153147
time: FAIL_TIME,
154148
shade: 0.3
155149
});
150+
},
151+
success: function (data) {
152+
if (data.code === 0) {
153+
layer.msg(data.message, {icon: 6, time: SUCCESS_TIME, shade: 0.2});
154+
setTimeout(function () {
155+
var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
156+
parent.$('button[lay-filter="data-search-btn"]').click();//刷新列表
157+
parent.layer.close(index); //再执行关闭
158+
159+
}, SUCCESS_TIME)
160+
} else {
161+
layer.msg(data.message, {
162+
icon: 2,
163+
time: FAIL_TIME,
164+
shade: 0.3
165+
});
166+
}
167+
156168
}
157-
});
169+
})
158170
159171
return false;
160172
});

resources/views/admin/menu/index.blade.php

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,6 @@
3030
<input type="text" name="href" autocomplete="off" class="layui-input">
3131
</div>
3232
</div>
33-
<div class="layui-inline">
34-
<label class="layui-form-label">类型</label>
35-
<div class="layui-input-inline">
36-
<select name="type" lay-filter="type">
37-
<option value=""></option>
38-
@foreach(\App\Enums\MenuTypeEnum::attrs () as $ind=>$val)
39-
<option value="{{$ind}}">{{$val}}</option>
40-
@endforeach
41-
</select>
42-
</div>
43-
</div>
4433
<div class="layui-inline">
4534
<label class="layui-form-label">状态</label>
4635
<div class="layui-input-inline">
@@ -68,9 +57,14 @@ class="layui-icon"></i>{{__('message.buttons.search')}}
6857
</div>
6958
</div>
7059
</div>
71-
72-
7360
</div>
61+
<script type="text/html" id="toolbarFilter">
62+
<div class="layui-btn-container">
63+
@if( check_admin_auth ($MODULE_NAME.'_create'))
64+
<button class="layui-btn layui-btn-sm data-add-btn" lay-event="add">{{__ ('message.buttons.create')}}</button>
65+
@endif
66+
</div>
67+
</script>
7468
<script type="text/html" id="toolbarDemo">
7569
<div class="layui-btn-container">
7670
<a href="{{url('admin/menu/create')}}" class="layui-btn layui-btn-sm data-add-btn"
@@ -134,7 +128,6 @@ class="layui-icon"></i>{{__('message.buttons.search')}}
134128
{field: 'auth_name', title: '权限标识'},
135129
{field: 'href', title: '路由地址'},
136130
{field: 'sort', width: 80, align: 'center', title: '排序号'},
137-
{field: 'type', width: 80, align: 'center', title: '类型'},
138131
{field: 'status', width: 80, align: 'center', title: '状态'},
139132
{templet: '#operateTableBar', width: 120, align: 'center', title: '操作'}
140133
]],
@@ -167,7 +160,23 @@ class="layui-icon"></i>{{__('message.buttons.search')}}
167160
$('#btn-fold').click(function () {
168161
treetable.foldAll('#currentTableFilter');
169162
});
170-
163+
table.on('toolbar(currentTableFilter)', function (obj) {
164+
var data = form.val("data-search-filter");
165+
var searchParams = JSON.stringify(data);
166+
switch (obj.event) {
167+
case 'add':
168+
var index = layer.open({
169+
title: '',
170+
type: 2,
171+
shade: 0.2,
172+
maxmin: false,
173+
shadeClose: false,
174+
area: ['60%', '65%'],
175+
content: '/admin/' + MODULE_NAME + '/create',
176+
});
177+
break;
178+
}
179+
});
171180
//监听工具条
172181
table.on('tool(currentTableFilter)', function (obj) {
173182
var data = obj.data;

0 commit comments

Comments
 (0)