added 新增table的模版引擎

This commit is contained in:
zhaoxiang 2016-11-07 18:53:39 +08:00
parent da9954d2c6
commit 6d9bb7e319
8 changed files with 372 additions and 99 deletions

View File

@ -0,0 +1,139 @@
<?php
namespace app\admin\controller;
/**
* 菜单管理控制器
* @since 2016-11-16
* @author zhaoxiang <zhaoxiang051405@outlook.com>
*/
class Menu extends Base {
public function index(){
$table = [
'tempType' => 'table',
'header' => [
[
'field' => 'name',
'info' => '菜单名称'
],
[
'field' => 'url',
'info' => '菜单URL'
],
[
'field' => 'type',
'info' => '菜单类型'
],
[
'field' => 'level',
'info' => '等级'
],
[
'field' => 'hide',
'info' => '隐藏'
],
[
'field' => 'sort',
'info' => '排序'
],
[
'field' => 'action',
'info' => '操作'
]
],
'topButton' => [
[
'href' => 'Menu/add',
'class'=> 'am-btn-success',
'info'=> '新增',
'icon' => 'plus',
'ajax' => 0,
],
[
'href' => 'Menu/del',
'class'=> 'am-btn-danger del-all',
'info'=> '删除',
'icon' => 'trash',
'ajax' => 1,
]
],
'rightButton' => [
[
'desc' => '编辑',
'href' => 'Menu/edit',
'class'=> 'success',
'param'=> $this->primaryKey,
'icon' => 'check',
'confirm' => 0,
'show' => ''
],
[
'desc' => '删除',
'href' => 'Menu/del',
'class'=> 'danger',
'param'=> $this->primaryKey,
'icon' => 'trash',
'confirm' => 1,
'show' => ''
]
],
'typeRule' => [
'name' => [
[
'module' => 'a',
'rule' => [
'info' => '',
'href' => 'Menu/add',
'param'=> $this->primaryKey,
]
]
],
'hide' => [
'module' => 'label',
'rule' => [
[
'info' => '显示',
'class' => 'success',
'show' => ['hide', 1]
],
[
'info' => '隐藏',
'class' => 'warning',
'show' => ['hide', 0]
]
]
],
'type' => [
'module' => 'label',
'rule' => [
[
'info' => '方法类功能',
'class' => 'secondary',
'show' => ['type', 0]
],
[
'info' => '模块类功能',
'class' => 'primary',
'show' => ['type', 1]
]
]
]
],
'data' => []
];
$this->result($table,200);
}
public function add(){
}
public function edit(){
}
public function del(){
}
}

View File

@ -0,0 +1,23 @@
<?php
/**
*
* @since 2016-02-18
* @author zhaoxiang <zhaoxiang051405@outlook.com>
*/
namespace app\admin\model;
use think\Model;
class Menu extends Model {
protected $type = [
'fid' => 'integer',
'type' => 'integer',
'sort' => 'integer',
'hide' => 'integer',
'recommend' => 'integer',
'level' => 'integer',
];
}

View File

@ -1,9 +1,45 @@
{extend name="public/base" /}
{block name="main"}
{block name="content"}
<div class="box">
<div class="box-body">
<div class="btn-group margin-bottom">
<button type="button" class="btn btn-success"><i class="glyphicon glyphicon-plus"></i> 新增</button>
<button type="button" class="btn btn-danger"><i class="glyphicon glyphicon-trash"></i> 删除</button>
</div>
<table class="table table-bordered">
<tbody>
<tr>
<th style="width: 10px">
<input type="checkbox">
</th>
<th>Task</th>
<th>Progress</th>
<th>Label</th>
<th>button</th>
</tr>
<tr>
<td>
<input type="checkbox">
</td>
<td>Update software</td>
<td>
<div class="progress progress-xs">
<div class="progress-bar progress-bar-danger" style="width: 55%"></div>
</div>
</td>
<td>
<span class="badge bg-red">55%</span>
</td>
<td>
<button type="button" class="btn btn-primary"><i class="glyphicon glyphicon-pencil"></i> 编辑</button>
<button type="button" class="btn btn-danger"><i class="glyphicon glyphicon-trash"></i> 删除</button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
{/block}
{block name="myScript"}
<script>
</script>
{/block}

View File

@ -34,7 +34,7 @@
<span class="logo-lg">7d-vision</span>
</a>
<nav class="navbar navbar-static-top">
<a href="#" class="sidebar-toggle" data-toggle="offcanvas" role="button">
<a href="javascript:void(0);" class="sidebar-toggle" data-toggle="offcanvas" role="button">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
@ -44,7 +44,7 @@
<ul class="nav navbar-nav">
<!-- Messages: style can be found in dropdown.less-->
<li class="dropdown messages-menu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<a href="javascript:void(0);" class="dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-envelope-o"></i>
<span class="label label-success">4</span>
</a>
@ -54,7 +54,7 @@
<!-- inner menu: contains the actual data -->
<ul class="menu">
<li><!-- start message -->
<a href="#">
<a href="javascript:void(0);">
<div class="pull-left">
<img src="__IMG__/logo.jpg" class="img-circle" alt="User Image">
</div>
@ -67,9 +67,9 @@
</li>
<!-- end message -->
<li>
<a href="#">
<a href="javascript:void(0);">
<div class="pull-left">
<img src="__IMG__/user3-128x128.jpg" class="img-circle" alt="User Image">
<img src="__IMG__/logo.jpg" class="img-circle" alt="User Image">
</div>
<h4>
AdminLTE Design Team
@ -79,9 +79,9 @@
</a>
</li>
<li>
<a href="#">
<a href="javascript:void(0);">
<div class="pull-left">
<img src="__IMG__/user4-128x128.jpg" class="img-circle" alt="User Image">
<img src="__IMG__/logo.jpg" class="img-circle" alt="User Image">
</div>
<h4>
Developers
@ -91,9 +91,9 @@
</a>
</li>
<li>
<a href="#">
<a href="javascript:void(0);">
<div class="pull-left">
<img src="__IMG__/user3-128x128.jpg" class="img-circle" alt="User Image">
<img src="__IMG__/logo.jpg" class="img-circle" alt="User Image">
</div>
<h4>
Sales Department
@ -103,9 +103,9 @@
</a>
</li>
<li>
<a href="#">
<a href="javascript:void(0);">
<div class="pull-left">
<img src="__IMG__/user4-128x128.jpg" class="img-circle" alt="User Image">
<img src="__IMG__/logo.jpg" class="img-circle" alt="User Image">
</div>
<h4>
Reviewers
@ -116,12 +116,12 @@
</li>
</ul>
</li>
<li class="footer"><a href="#">See All Messages</a></li>
<li class="footer"><a href="javascript:void(0);">See All Messages</a></li>
</ul>
</li>
<!-- Notifications: style can be found in dropdown.less -->
<li class="dropdown notifications-menu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<a href="javascript:void(0);" class="dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-bell-o"></i>
<span class="label label-warning">10</span>
</a>
@ -131,39 +131,39 @@
<!-- inner menu: contains the actual data -->
<ul class="menu">
<li>
<a href="#">
<a href="javascript:void(0);">
<i class="fa fa-users text-aqua"></i> 5 new members joined today
</a>
</li>
<li>
<a href="#">
<a href="javascript:void(0);">
<i class="fa fa-warning text-yellow"></i> Very long description here that may not fit into the
page and may cause design problems
</a>
</li>
<li>
<a href="#">
<a href="javascript:void(0);">
<i class="fa fa-users text-red"></i> 5 new members joined
</a>
</li>
<li>
<a href="#">
<a href="javascript:void(0);">
<i class="fa fa-shopping-cart text-green"></i> 25 sales made
</a>
</li>
<li>
<a href="#">
<a href="javascript:void(0);">
<i class="fa fa-user text-red"></i> You changed your username
</a>
</li>
</ul>
</li>
<li class="footer"><a href="#">View all</a></li>
<li class="footer"><a href="javascript:void(0);">View all</a></li>
</ul>
</li>
<!-- Tasks: style can be found in dropdown.less -->
<li class="dropdown tasks-menu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<a href="javascript:void(0);" class="dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-flag-o"></i>
<span class="label label-danger">9</span>
</a>
@ -173,7 +173,7 @@
<!-- inner menu: contains the actual data -->
<ul class="menu">
<li><!-- Task item -->
<a href="#">
<a href="javascript:void(0);">
<h3>
Design some buttons
<small class="pull-right">20%</small>
@ -187,7 +187,7 @@
</li>
<!-- end task item -->
<li><!-- Task item -->
<a href="#">
<a href="javascript:void(0);">
<h3>
Create a nice theme
<small class="pull-right">40%</small>
@ -201,7 +201,7 @@
</li>
<!-- end task item -->
<li><!-- Task item -->
<a href="#">
<a href="javascript:void(0);">
<h3>
Some task I need to do
<small class="pull-right">60%</small>
@ -215,7 +215,7 @@
</li>
<!-- end task item -->
<li><!-- Task item -->
<a href="#">
<a href="javascript:void(0);">
<h3>
Make beautiful transitions
<small class="pull-right">80%</small>
@ -231,13 +231,13 @@
</ul>
</li>
<li class="footer">
<a href="#">View all tasks</a>
<a href="javascript:void(0);">View all tasks</a>
</li>
</ul>
</li>
<!-- User Account: style can be found in dropdown.less -->
<li class="dropdown user user-menu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<a href="javascript:void(0);" class="dropdown-toggle" data-toggle="dropdown">
<img src="__IMG__/logo.jpg" class="user-image" alt="User Image">
<span class="hidden-xs">Alexander Pierce</span>
</a>
@ -255,13 +255,13 @@
<li class="user-body">
<div class="row">
<div class="col-xs-4 text-center">
<a href="#">Followers</a>
<a href="javascript:void(0);">Followers</a>
</div>
<div class="col-xs-4 text-center">
<a href="#">Sales</a>
<a href="javascript:void(0);">Sales</a>
</div>
<div class="col-xs-4 text-center">
<a href="#">Friends</a>
<a href="javascript:void(0);">Friends</a>
</div>
</div>
<!-- /.row -->
@ -269,24 +269,24 @@
<!-- Menu Footer-->
<li class="user-footer">
<div class="pull-left">
<a href="#" class="btn btn-default btn-flat">Profile</a>
<a href="javascript:void(0);" class="btn btn-default btn-flat">Profile</a>
</div>
<div class="pull-right">
<a href="#" class="btn btn-default btn-flat">Sign out</a>
<a href="javascript:void(0);" class="btn btn-default btn-flat">Sign out</a>
</div>
</li>
</ul>
</li>
<!-- Control Sidebar Toggle Button -->
<li>
<a href="#" data-toggle="control-sidebar"><i class="fa fa-gears"></i></a>
<a href="javascript:void(0);" data-toggle="control-sidebar"><i class="fa fa-gears"></i></a>
</li>
</ul>
</div>
</nav>
</header>
<!-- 左侧导航栏 -->
<aside class="main-sidebar">
<aside class="main-sidebar" id="main-sidebar">
<section class="sidebar">
<!--管理员信息-->
<div class="user-panel">
@ -295,7 +295,7 @@
</div>
<div class="pull-left info">
<p>系统管理员</p>
<a href="#"><i class="fa fa-circle text-success"></i> Online</a>
<a href="javascript:void(0);"><i class="fa fa-circle text-success"></i> Online</a>
</div>
</div>
<!--搜索表单-->
@ -310,44 +310,44 @@
<ul class="sidebar-menu">
<li class="header">主菜单</li>
<li class="treeview">
<a href="#">
<a href="javascript:void(0);">
<i class="fa fa-cogs"></i> <span>系统维护</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<li class="active"><a href="#"><i class="fa fa-circle-o"></i> 菜单管理</a></li>
<li><a href="#"><i class="fa fa-circle-o"></i> 用户管理</a></li>
<li><a href="#"><i class="fa fa-circle-o"></i> 权限管理</a></li>
<li><a href="#"><i class="fa fa-circle-o"></i> 操作日志</a></li>
<li class="active"><a href="javascript:refresh('{:url(\'Menu/index\')}');" ><i class="fa fa-circle-o"></i> 菜单管理</a></li>
<li><a href="javascript:void(0);"><i class="fa fa-circle-o"></i> 用户管理</a></li>
<li><a href="javascript:void(0);"><i class="fa fa-circle-o"></i> 权限管理</a></li>
<li><a href="javascript:void(0);"><i class="fa fa-circle-o"></i> 操作日志</a></li>
</ul>
</li>
<li class="treeview">
<a href="#">
<a href="javascript:void(0);">
<i class="fa fa-dashboard"></i> <span>网站内容管理</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<li><a href="#"><i class="fa fa-circle-o"></i> 新闻发布</a></li>
<li><a href="#"><i class="fa fa-circle-o"></i> 软件说明</a></li>
<li><a href="javascript:void(0);"><i class="fa fa-circle-o"></i> 新闻发布</a></li>
<li><a href="javascript:void(0);"><i class="fa fa-circle-o"></i> 软件说明</a></li>
</ul>
</li>
<li class="treeview">
<a href="#">
<a href="javascript:void(0);">
<i class="fa fa-diamond"></i> <span>订单管理</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<li><a href="#"><i class="fa fa-circle-o"></i> 订单列表</a></li>
<li><a href="javascript:void(0);"><i class="fa fa-circle-o"></i> 订单列表</a></li>
</ul>
</li>
<li class="treeview">
<a href="#">
<a href="javascript:void(0);">
<i class="fa fa-comments"></i> <span>反馈管理</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
@ -371,16 +371,16 @@
<div class="content-wrapper">
<!-- 头部(面包屑导航) -->
<section class="content-header">
<section class="content-header" id="content-header">
<h1>{$title}</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-dashboard"></i> Home</a></li>
<li><a href="#">Examples</a></li>
<li><a href="javascript:void(0);"><i class="fa fa-dashboard"></i> Home</a></li>
<li><a href="javascript:void(0);">Examples</a></li>
<li class="active">404 error</li>
</ol>
</section>
<section class="content">
{block name="main"}{/block}
<section class="content" id="content">
{block name="content"}{/block}
</section>
</div>
@ -593,6 +593,7 @@
<script src="__JS__/app.min.js"></script>
<!-- AdminLTE for demo purposes -->
<script src="__JS__/demo.js"></script>
<script src="__PLUGIN__/vue/vue.min.js"></script>
<script src="__JS__/template.js"></script>
{block name="myScript"}{/block}
</body>

View File

@ -9,9 +9,6 @@
// | Author: 流年 <liu21st@gmail.com>
// +----------------------------------------------------------------------
// 应用公共文件
/**
* CURL post数据
* @param $url
@ -42,4 +39,58 @@ function curlPost( $url, $data, $urlParam = [], $header = [] ){
$return = curl_exec($ch);
curl_close($ch);
return $return;
}
/**
* 把返回的数据集转换成Tree
* @param $list
* @param string $pk
* @param string $pid
* @param string $child
* @param string $root
* @return array
*/
function listToTree($list, $pk='id', $pid = 'fid', $child = '_child', $root = '0') {
$tree = [];
if(is_array($list)) {
$refer = [];
foreach ($list as $key => $data) {
$refer[$data[$pk]] = &$list[$key];
}
foreach ($list as $key => $data) {
$parentId = $data[$pid];
if ($root == $parentId) {
$tree[] = &$list[$key];
}else{
if (isset($refer[$parentId])) {
$parent = &$refer[$parentId];
$parent[$child][] = &$list[$key];
}
}
}
}
return $tree;
}
function formatTree($list, $lv = 0, $title = 'name'){
$formatTree = [];
foreach($list as $key => $val){
$title_prefix = '';
for( $i=0;$i<$lv;$i++ ){
$title_prefix .= "|---";
}
$val['lv'] = $lv;
$val['namePrefix'] = $lv == 0 ? '' : $title_prefix;
$val['showName'] = $lv == 0 ? $val[$title] : $title_prefix.$val[$title];
if(!array_key_exists('_child', $val)){
array_push($formatTree, $val);
}else{
$child = $val['_child'];
unset($val['_child']);
array_push($formatTree, $val);
$middle = formatTree($child, $lv+1, $title); //进行下一层递归
$formatTree = array_merge($formatTree, $middle);
}
}
return $formatTree;
}

View File

@ -24,6 +24,10 @@
return Y+M+D+h+m+s;
};
/**
* 消息弹框
* @param msg
*/
$.alertMsg = function( msg ){
var dialog = bootbox.dialog({
message: '<p class="text-center">'+msg+'</p>',
@ -34,50 +38,9 @@
}, 3000);
};
$.buildDom = function ( jsonStr ) {
};
var emptyList = function() {
};
var easyList = function( listObj ) {
};
var topButton = function( topObj ) {
};
var rightButton = function( rightObj ) {
};
var easyForm = function( formObj ) {
};
var input = function( inputObj ) {
};
var select = function( selectObj ) {
};
var button = function( buttonObj ) {
};
/**
* 面包屑
* Ajax Post 表单提交
*/
var breadcrumb = function( ) {
};
//ajax post submit请求
$('body').on('click', '.ajax-post', function() {
var message,query,form,target;
var target_form = $(this).attr('target-form');
@ -114,4 +77,23 @@
}
return false;
});
})(jQuery);
function refresh( url ) {
var $ = jQuery;
$.ajax({
type: "GET",
url: url,
success: function(data){
if( data.code == 200 ){
if( data.data.tempType == 'table' ){
$.getScript('/static/js/template/table.js');
}
}else{
$.alertMsg('请求失败!')
}
}
});
}

View File

@ -0,0 +1,4 @@
/**
* Created by 7d-vision on 2016/11/7.
*/
(function ($) {})(jQuery);

View File

@ -0,0 +1,37 @@
/**
* Created by 7d-vision on 2016/11/7.
*/
(function ($) {
$.buildTable = function ( tableObj ) {
var tableHtml = '<div class="box"><div class="box-body">';
if( tableObj.topButton ){
tableHtml += buildTopButton( tableObj );
}
if( tableObj.header ){
tableHtml += buildHeader( tableObj );
}
if( tableObj.data ){
tableHtml += buildDataList( tableObj );
}else{
tableHtml += buildEmptyTable();
}
tableHtml += '</div></div>';
return tableHtml;
};
function buildHeader( tableObj ) {
}
function buildTopButton( tableObj ) {
}
function buildDataList( tableObj ) {
}
function buildEmptyTable() {
}
})(jQuery);