mirror of
https://gitee.com/apiadmin/ApiAdmin.git
synced 2025-04-06 03:58:00 +08:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
21cfecc76c
@ -1,5 +1,6 @@
|
||||
<?php
|
||||
namespace app\admin\controller;
|
||||
use think\Validate;
|
||||
|
||||
/**
|
||||
* 菜单管理控制器
|
||||
@ -21,14 +22,26 @@ class Menu extends Base {
|
||||
'field' => 'url',
|
||||
'info' => '菜单URL'
|
||||
],
|
||||
[
|
||||
'field' => 'type',
|
||||
'info' => '菜单类型'
|
||||
],
|
||||
[
|
||||
'field' => 'level',
|
||||
'info' => '等级'
|
||||
],
|
||||
[
|
||||
'field' => 'post',
|
||||
'info' => 'Post'
|
||||
],
|
||||
[
|
||||
'field' => 'get',
|
||||
'info' => 'Get'
|
||||
],
|
||||
[
|
||||
'field' => 'put',
|
||||
'info' => 'Put'
|
||||
],
|
||||
[
|
||||
'field' => 'delete',
|
||||
'info' => 'Delete'
|
||||
],
|
||||
[
|
||||
'field' => 'hide',
|
||||
'info' => '隐藏'
|
||||
@ -81,6 +94,7 @@ class Menu extends Base {
|
||||
'info' => '',
|
||||
'href' => url('Menu/add'),
|
||||
'param'=> [$this->primaryKey],
|
||||
'class' => 'refresh'
|
||||
]
|
||||
],
|
||||
'hide' => [
|
||||
@ -96,21 +110,60 @@ class Menu extends Base {
|
||||
]
|
||||
]
|
||||
],
|
||||
'type' => [
|
||||
'module' => 'label',
|
||||
'post' => [
|
||||
'module' => 'icon',
|
||||
'rule' => [
|
||||
[
|
||||
'info' => '方法类功能',
|
||||
'class' => 'label label-info'
|
||||
'info' => '',
|
||||
'class' => 'fa fa-close'
|
||||
],
|
||||
[
|
||||
'info' => '模块类功能',
|
||||
'class' => 'label label-primary'
|
||||
'info' => '',
|
||||
'class' => 'fa fa-check'
|
||||
]
|
||||
]
|
||||
],
|
||||
'get' => [
|
||||
'module' => 'icon',
|
||||
'rule' => [
|
||||
[
|
||||
'info' => '',
|
||||
'class' => 'fa fa-close'
|
||||
],
|
||||
[
|
||||
'info' => '',
|
||||
'class' => 'fa fa-check'
|
||||
]
|
||||
]
|
||||
],
|
||||
'put' => [
|
||||
'module' => 'icon',
|
||||
'rule' => [
|
||||
[
|
||||
'info' => '',
|
||||
'class' => 'fa fa-close'
|
||||
],
|
||||
[
|
||||
'info' => '',
|
||||
'class' => 'fa fa-check'
|
||||
]
|
||||
]
|
||||
],
|
||||
'delete' => [
|
||||
'module' => 'icon',
|
||||
'rule' => [
|
||||
[
|
||||
'info' => '',
|
||||
'class' => 'fa fa-close'
|
||||
],
|
||||
[
|
||||
'info' => '',
|
||||
'class' => 'fa fa-check'
|
||||
]
|
||||
]
|
||||
]
|
||||
],
|
||||
'data' => $data //这个数据应该是从数据库中查出来
|
||||
'data' => $data
|
||||
];
|
||||
$this->result($table, ReturnCode::GET_TEMPLATE_SUCCESS);
|
||||
}
|
||||
@ -122,7 +175,7 @@ class Menu extends Base {
|
||||
[
|
||||
'name' => 'require',
|
||||
],[
|
||||
'name.require' => '名称必须',
|
||||
'name.require' => '菜单名称不能为空',
|
||||
]
|
||||
)->save($this->request->post());
|
||||
if(false === $result){
|
||||
@ -132,6 +185,7 @@ class Menu extends Base {
|
||||
}
|
||||
}else{
|
||||
$data = \app\admin\model\Menu::where([])->column('name',$this->primaryKey);
|
||||
$defaultFather = $this->request->get($this->primaryKey);
|
||||
$form = [
|
||||
'tempType' => 'add',
|
||||
'formAttr' => [
|
||||
@ -156,7 +210,7 @@ class Menu extends Base {
|
||||
'info' => '父级菜单:',
|
||||
'attr' => [
|
||||
'name' => 'fid',
|
||||
'value' => '',
|
||||
'value' => $defaultFather,
|
||||
'options' => $data
|
||||
]
|
||||
],
|
||||
@ -174,15 +228,29 @@ class Menu extends Base {
|
||||
]
|
||||
],
|
||||
[
|
||||
'module' => 'radio',
|
||||
'module' => 'checkbox',
|
||||
'description' => '',
|
||||
'info' => '菜单类型:',
|
||||
'info' => '访客权限:',
|
||||
'attr' => [
|
||||
'name' => 'type',
|
||||
'value' => '',
|
||||
'options' => [
|
||||
'模块类功能',
|
||||
'方法类功能'
|
||||
[
|
||||
'name' => 'auth[get]',
|
||||
'desc' => 'GET',
|
||||
'value' => ''
|
||||
],
|
||||
[
|
||||
'name' => 'auth[put]',
|
||||
'desc' => 'PUT',
|
||||
'value' => ''
|
||||
],
|
||||
[
|
||||
'name' => 'auth[post]',
|
||||
'desc' => 'POST',
|
||||
'value' => ''
|
||||
],
|
||||
[
|
||||
'name' => 'auth[delete]',
|
||||
'desc' => 'DELETE',
|
||||
'value' => ''
|
||||
]
|
||||
]
|
||||
],
|
||||
@ -199,19 +267,6 @@ class Menu extends Base {
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
'module' => 'radio',
|
||||
'description' => '',
|
||||
'info' => '是否推荐:「该配置只对模块类功能生效」',
|
||||
'attr' => [
|
||||
'name' => 'recommend',
|
||||
'value' => '',
|
||||
'options' => [
|
||||
'普通模块',
|
||||
'推荐模块'
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
'module' => 'text',
|
||||
'description' => '',
|
||||
@ -250,17 +305,17 @@ class Menu extends Base {
|
||||
|
||||
public function edit(){
|
||||
if( $this->request->isPut() ){
|
||||
$menuModel = new \app\admin\model\Menu();
|
||||
$result = $menuModel->allowField(true)->validate(
|
||||
[
|
||||
'name' => 'require',
|
||||
],[
|
||||
'name.require' => '名称必须',
|
||||
]
|
||||
)->update($this->request->put());
|
||||
if(false === $result){
|
||||
$this->error($menuModel->getError());
|
||||
$data = $this->request->put();
|
||||
$validate = new Validate([
|
||||
'name' => 'require',
|
||||
],[
|
||||
'name.require' => '菜单名称不能为空',
|
||||
]);
|
||||
if(!$validate->check($data)){
|
||||
$this->error($validate->getError());
|
||||
}else{
|
||||
$menuModel = new \app\admin\model\Menu();
|
||||
$menuModel->allowField(true)->update($data);
|
||||
$this->success('操作成功!', url('Menu/index'));
|
||||
}
|
||||
}else{
|
||||
@ -269,8 +324,8 @@ class Menu extends Base {
|
||||
$form = [
|
||||
'tempType' => 'edit',
|
||||
'formAttr' => [
|
||||
'target' => url('Menu/add'),
|
||||
'formId' => 'add-menu-form',
|
||||
'target' => url('Menu/edit'),
|
||||
'formId' => 'edit-menu-form',
|
||||
'backUrl' => url('Menu/index'),
|
||||
],
|
||||
'formList' => [
|
||||
@ -284,6 +339,16 @@ class Menu extends Base {
|
||||
'placeholder' => ''
|
||||
]
|
||||
],
|
||||
[
|
||||
'module' => 'hidden',
|
||||
'description' => '',
|
||||
'info' => '',
|
||||
'attr' => [
|
||||
'name' => 'id',
|
||||
'value' => $detail['id'],
|
||||
'placeholder' => ''
|
||||
]
|
||||
],
|
||||
[
|
||||
'module' => 'select',
|
||||
'description' => '',
|
||||
@ -308,15 +373,29 @@ class Menu extends Base {
|
||||
]
|
||||
],
|
||||
[
|
||||
'module' => 'radio',
|
||||
'module' => 'checkbox',
|
||||
'description' => '',
|
||||
'info' => '菜单类型:',
|
||||
'info' => '访客权限:',
|
||||
'attr' => [
|
||||
'name' => 'type',
|
||||
'value' => $detail['type'],
|
||||
'options' => [
|
||||
'模块类功能',
|
||||
'方法类功能'
|
||||
[
|
||||
'name' => 'auth[get]',
|
||||
'desc' => 'GET',
|
||||
'value' => ''
|
||||
],
|
||||
[
|
||||
'name' => 'auth[put]',
|
||||
'desc' => 'PUT',
|
||||
'value' => ''
|
||||
],
|
||||
[
|
||||
'name' => 'auth[post]',
|
||||
'desc' => 'POST',
|
||||
'value' => ''
|
||||
],
|
||||
[
|
||||
'name' => 'auth[delete]',
|
||||
'desc' => 'DELETE',
|
||||
'value' => ''
|
||||
]
|
||||
]
|
||||
],
|
||||
@ -333,19 +412,6 @@ class Menu extends Base {
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
'module' => 'radio',
|
||||
'description' => '',
|
||||
'info' => '是否推荐:「该配置只对模块类功能生效」',
|
||||
'attr' => [
|
||||
'name' => 'recommend',
|
||||
'value' => $detail['recommend'],
|
||||
'options' => [
|
||||
'普通模块',
|
||||
'推荐模块'
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
'module' => 'text',
|
||||
'description' => '',
|
||||
@ -383,7 +449,18 @@ class Menu extends Base {
|
||||
}
|
||||
|
||||
public function del(){
|
||||
$this->error('失败');
|
||||
if( $this->request->isDelete() ){
|
||||
$key = $this->request->delete($this->primaryKey);
|
||||
$childNum = \app\admin\model\Menu::where(['fid' => $key])->count();
|
||||
if( $childNum ){
|
||||
$this->error('当前菜单存在子菜单,删除失败!');
|
||||
}
|
||||
$delNum = \app\admin\model\Menu::destroy($key);
|
||||
if( $delNum ){
|
||||
$this->success('操作成功!', url('Menu/index'));
|
||||
}
|
||||
}
|
||||
$this->error('操作失败!');
|
||||
}
|
||||
|
||||
}
|
@ -30,7 +30,8 @@
|
||||
* @param msg
|
||||
* @param wait 等待时间(毫秒)
|
||||
*/
|
||||
$.alertMsg = function( msg, wait = 2800 ){
|
||||
$.alertMsg = function( msg, wait ){
|
||||
wait = wait ? wait : 2800;
|
||||
var dialog = bootbox.dialog({
|
||||
message: '<p class="text-center">'+msg+'</p>',
|
||||
closeButton: false
|
||||
@ -45,7 +46,8 @@
|
||||
* @param url
|
||||
* @param urlData
|
||||
*/
|
||||
$.refresh = function ( url, urlData = '' ) {
|
||||
$.refresh = function ( url, urlData ) {
|
||||
urlData = urlData ? urlData : '';
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: url,
|
||||
@ -98,7 +100,7 @@
|
||||
};
|
||||
|
||||
/**
|
||||
* Ajax Post 表单提交(增)
|
||||
* Ajax Post 表单提交(增) *
|
||||
*/
|
||||
bodyDom.on('click', '.ajax-post', function() {
|
||||
var message,query,form,target;
|
||||
@ -139,7 +141,7 @@
|
||||
});
|
||||
|
||||
/**
|
||||
* Ajax Put 表单提交(改)
|
||||
* Ajax Put 表单提交(改) *
|
||||
*/
|
||||
bodyDom.on('click', '.ajax-put', function() {
|
||||
var message,query,form,target;
|
||||
@ -162,18 +164,11 @@
|
||||
$.alertMsg(message);
|
||||
setTimeout(function() {
|
||||
if (data.url) {
|
||||
location.href = data.url;
|
||||
} else {
|
||||
location.reload();
|
||||
$.refresh(data.url);
|
||||
}
|
||||
}, wait);
|
||||
} else {
|
||||
$.alertMsg(data.msg);
|
||||
setTimeout(function() {
|
||||
if (data.url) {
|
||||
location.href = data.url;
|
||||
}
|
||||
}, wait);
|
||||
}
|
||||
});
|
||||
return false;
|
||||
|
@ -8,7 +8,7 @@
|
||||
* @returns {string}
|
||||
*/
|
||||
$.buildAddForm = function ( formObj ) {
|
||||
return buildForm(formObj, 'box-success');
|
||||
return buildForm(formObj, 'box-success', 'ajax-post');
|
||||
};
|
||||
|
||||
/**
|
||||
@ -17,16 +17,17 @@
|
||||
* @returns {string}
|
||||
*/
|
||||
$.buildEditForm = function ( formObj ) {
|
||||
return buildForm(formObj, 'box-warning');
|
||||
return buildForm(formObj, 'box-warning', 'ajax-put');
|
||||
};
|
||||
|
||||
/**
|
||||
* 根据规则创建表单
|
||||
* @param formObj 表单数据对象
|
||||
* @param boxType box样式
|
||||
* @param method 数据提交方式
|
||||
* @returns {string}
|
||||
*/
|
||||
function buildForm( formObj, boxType ) {
|
||||
function buildForm( formObj, boxType, method ) {
|
||||
var formHtml = '<div class="box '+ boxType +'" id="formBox"><div class="box-body">';
|
||||
formHtml += '<div class="box-header with-border"><h3 class="box-title">新增菜单</h3></div>';
|
||||
formHtml += '<form id="'+ formObj.formAttr.formId +'" action="'+ formObj.formAttr.target +'"><div class="box-body">';
|
||||
@ -41,14 +42,41 @@
|
||||
case 'radio':
|
||||
formHtml += buildRadio(value);
|
||||
break;
|
||||
case 'hidden':
|
||||
formHtml += buildHidden(value);
|
||||
break;
|
||||
case 'checkbox':
|
||||
formHtml += buildCheckbox(value);
|
||||
break;
|
||||
}
|
||||
});
|
||||
formHtml += '</div><div class="box-footer">';
|
||||
formHtml += '<button type="submit" target-form="'+ formObj.formAttr.formId +'" class="btn btn-primary ajax-post">确认提交</button>';
|
||||
formHtml += '<button type="submit" target-form="'+ formObj.formAttr.formId +'" class="btn btn-primary '+ method +'">确认提交</button>';
|
||||
formHtml += ' <a class="btn btn-default refresh" url="'+ formObj.formAttr.backUrl +'" >放弃返回</a></div></form></div></div>';
|
||||
return formHtml;
|
||||
}
|
||||
|
||||
function buildCheckbox( checkboxObj ) {
|
||||
var formHtml = '<div>';
|
||||
formHtml += '<div class="col-xs-8 form-group"><label>'+ checkboxObj.info +'</label>';
|
||||
formHtml += '<div class="input-group radio">';
|
||||
if( checkboxObj.attr ){
|
||||
$.each(checkboxObj.attr, function (index, value) {
|
||||
if( value.value ){
|
||||
formHtml += '<input type="checkbox" checked name="'+ value.name +'"> '+ value.desc +' ';
|
||||
}else{
|
||||
formHtml += '<input type="checkbox" name="'+ value.name +'"> '+ value.desc +' ';
|
||||
}
|
||||
});
|
||||
}
|
||||
formHtml += '</div>';
|
||||
if( checkboxObj.description ){
|
||||
formHtml += ' <div class="col-xs-4 form-group" style="margin-top: 30px"><span class="label label-info">'+ checkboxObj.description +'</span></div>';
|
||||
}
|
||||
formHtml += '</div></div>';
|
||||
return formHtml;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建文本框
|
||||
* @param inputObj
|
||||
@ -96,6 +124,15 @@
|
||||
formHtml += '</div></div>';
|
||||
return formHtml;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建隐藏表单
|
||||
* @param hiddenObj
|
||||
* @returns {string}
|
||||
*/
|
||||
function buildHidden( hiddenObj ) {
|
||||
return '<input type="hidden" class="form-control" value="'+ hiddenObj.attr.value +'" name="'+ hiddenObj.attr.name +'">';
|
||||
}
|
||||
|
||||
function buildTextarea( textareaObj ) {
|
||||
|
||||
|
@ -81,7 +81,7 @@
|
||||
}else{
|
||||
if( tableObj.typeRule[fieldName] ){
|
||||
var rule = tableObj.typeRule[fieldName];
|
||||
var styleList ,detailInfo;
|
||||
var styleList ,detailInfo, classAttr = '';
|
||||
switch (rule.module){
|
||||
case 'label':
|
||||
if( rule.rule[dataValue[fieldName]] ){
|
||||
@ -96,11 +96,22 @@
|
||||
styleList = rule.rule;
|
||||
detailInfo = prepareInfo( styleList, dataValue, fieldName);
|
||||
paramStr = prepareParamStr( styleList, dataValue );
|
||||
dataListHtml += '<td><a url="'+styleList['href']+'" data="'+paramStr+'">' + detailInfo + '</a></td>';
|
||||
if( styleList['class'] ){
|
||||
classAttr = 'class="'+ styleList['class'] +'"';
|
||||
}
|
||||
dataListHtml += '<td><a '+ classAttr +' url="'+styleList['href']+'" data="'+paramStr+'">' + detailInfo + '</a></td>';
|
||||
break;
|
||||
case 'date':
|
||||
dataListHtml += '<td>' + $.formatDate(dataValue[fieldName]) + '</td>';
|
||||
break;
|
||||
case 'icon':
|
||||
if( rule.rule[dataValue[fieldName]] ){
|
||||
styleList = rule.rule[dataValue[fieldName]];
|
||||
dataListHtml += '<td><i class="'+styleList['class']+'"></i></td>';
|
||||
}else{
|
||||
dataListHtml += '<td style="color:red;">' + dataValue[fieldName] + '</td>';
|
||||
}
|
||||
break;
|
||||
}
|
||||
}else{
|
||||
dataListHtml += '<td>' + dataValue[fieldName] + '</td>';
|
||||
|
Loading…
x
Reference in New Issue
Block a user