继续重构模块列表前端样式
This commit is contained in:
@@ -25,13 +25,25 @@ class CategoryController extends DefaultController
|
||||
|
||||
$cols = $header['cols'];
|
||||
|
||||
$cols['sequence_sn']['hide'] = true;
|
||||
$cols['name']['hide'] = true;
|
||||
|
||||
$cols['actions']['options'] = [[
|
||||
'name' => '编辑',
|
||||
'action' => 'edit',
|
||||
'display' => $this->access['edit'],
|
||||
]];
|
||||
|
||||
unset($cols['checkbox']);
|
||||
|
||||
$header['buttons'] = [
|
||||
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
|
||||
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
|
||||
];
|
||||
|
||||
$header['cols'] = $cols;
|
||||
$header['tabs'] = ProductCategory::$tabs;
|
||||
|
||||
$search = $header['search_form'];
|
||||
$query = $search['query'];
|
||||
|
||||
@@ -51,20 +63,9 @@ class CategoryController extends DefaultController
|
||||
$model->select($header['select']);
|
||||
|
||||
$rows = $model->get()->toNested();
|
||||
$items = Grid::dataFilters($rows, $header);
|
||||
return $this->json($items, true);
|
||||
return Grid::dataFilters($rows, $header);
|
||||
}
|
||||
|
||||
$header['buttons'] = [
|
||||
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
|
||||
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
|
||||
];
|
||||
|
||||
$header['cols'] = $cols;
|
||||
$header['tabs'] = ProductCategory::$tabs;
|
||||
$header['bys'] = ProductCategory::$bys;
|
||||
$header['js'] = Grid::js($header);
|
||||
|
||||
return $this->display([
|
||||
'header' => $header,
|
||||
]);
|
||||
|
||||
@@ -44,6 +44,18 @@ class ProductController extends DefaultController
|
||||
'display' => $this->access['edit'],
|
||||
]];
|
||||
|
||||
$header['buttons'] = [
|
||||
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
|
||||
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
|
||||
];
|
||||
$header['right_buttons'] = [
|
||||
['name' => '导入', 'color' => 'default', 'icon' => 'fa-mail-reply', 'action' => 'import', 'display' => $this->access['import']],
|
||||
];
|
||||
|
||||
$header['cols'] = $cols;
|
||||
$header['tabs'] = Product::$tabs;
|
||||
$header['bys'] = Product::$bys;
|
||||
|
||||
$search = $header['search_form'];
|
||||
$query = $search['query'];
|
||||
|
||||
@@ -72,19 +84,6 @@ class ProductController extends DefaultController
|
||||
return Grid::dataFilters($rows, $header);
|
||||
}
|
||||
|
||||
$header['buttons'] = [
|
||||
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
|
||||
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
|
||||
];
|
||||
$header['right_buttons'] = [
|
||||
['name' => '导入', 'color' => 'default', 'icon' => 'fa-mail-reply', 'action' => 'import', 'display' => $this->access['import']],
|
||||
];
|
||||
|
||||
$header['cols'] = $cols;
|
||||
$header['tabs'] = Product::$tabs;
|
||||
$header['bys'] = Product::$bys;
|
||||
$header['js'] = Grid::js($header);
|
||||
|
||||
return $this->display([
|
||||
'header' => $header,
|
||||
]);
|
||||
|
||||
@@ -30,6 +30,13 @@ class UnitController extends DefaultController
|
||||
'display' => $this->access['edit'],
|
||||
]];
|
||||
|
||||
$header['buttons'] = [
|
||||
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
|
||||
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
|
||||
];
|
||||
$header['cols'] = $cols;
|
||||
$header['tabs'] = ProductUnit::$tabs;
|
||||
|
||||
$search = $header['search_form'];
|
||||
$query = $search['query'];
|
||||
|
||||
@@ -51,15 +58,6 @@ class UnitController extends DefaultController
|
||||
return Grid::dataFilters($rows, $header);
|
||||
}
|
||||
|
||||
$header['buttons'] = [
|
||||
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
|
||||
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
|
||||
];
|
||||
$header['cols'] = $cols;
|
||||
$header['tabs'] = ProductUnit::$tabs;
|
||||
$header['bys'] = ProductUnit::$bys;
|
||||
$header['js'] = Grid::js($header);
|
||||
|
||||
return $this->display([
|
||||
'header' => $header,
|
||||
]);
|
||||
|
||||
@@ -12,17 +12,6 @@ class ProductCategory extends BaseModel
|
||||
['value' => 'category.index', 'url' => 'product/category/index', 'name' => '产品类别'],
|
||||
]
|
||||
];
|
||||
|
||||
public static $bys = [
|
||||
'name' => 'by',
|
||||
'items' => [
|
||||
['value' => '', 'name' => '全部'],
|
||||
['value' => 'divider'],
|
||||
['value' => 'day', 'name' => '今日创建'],
|
||||
['value' => 'week', 'name' => '本周创建'],
|
||||
['value' => 'month', 'name' => '本月创建'],
|
||||
]
|
||||
];
|
||||
|
||||
public function scopeType($query, $type = 1)
|
||||
{
|
||||
|
||||
@@ -12,17 +12,4 @@ class ProductUnit extends BaseModel
|
||||
['value' => 'unit.index', 'url' => 'product/unit/index', 'name' => '计量单位'],
|
||||
]
|
||||
];
|
||||
|
||||
public static $bys = [
|
||||
'name' => 'by',
|
||||
'items' => [
|
||||
['value' => '', 'name' => '全部'],
|
||||
['value' => 'enabled', 'name' => '启用'],
|
||||
['value' => 'disabled', 'name' => '禁用'],
|
||||
['value' => 'divider'],
|
||||
['value' => 'day', 'name' => '今日创建'],
|
||||
['value' => 'week', 'name' => '本周创建'],
|
||||
['value' => 'month', 'name' => '本月创建'],
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,26 +1,28 @@
|
||||
{{$header["js"]}}
|
||||
<div class="panel no-border" id="{{$header['table']}}-controller">
|
||||
@include('headers')
|
||||
<div class="list-jqgrid">
|
||||
<div id="{{$header['table']}}-grid" class="ag-theme-balham"></div>
|
||||
<div class="ag-theme-balham" id="ag-pagination"></div>
|
||||
<div class="clearfix"></div>
|
||||
<div class="gdoo-list-page" id="{{$header['master_table']}}-page">
|
||||
<div class="gdoo-list panel">
|
||||
<div class="gdoo-list-header">
|
||||
<gdoo-grid-header :header="header" :grid="grid" :action="action" />
|
||||
</div>
|
||||
<div class='gdoo-list-grid'>
|
||||
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
(function ($) {
|
||||
var table = '{{$header["table"]}}';
|
||||
var config = gdoo.grids[table];
|
||||
var action = config.action;
|
||||
var search = config.search;
|
||||
Vue.createApp({
|
||||
components: {
|
||||
gdooGridHeader,
|
||||
},
|
||||
setup(props, ctx) {
|
||||
var table = '{{$header["master_table"]}}';
|
||||
|
||||
var grid = new agGridOptions;
|
||||
var config = new gdoo.grid(table);
|
||||
|
||||
var gridDiv = document.querySelector("#{{$header['table']}}-grid");
|
||||
gridDiv.style.height = getPanelHeight(11);
|
||||
var grid = config.grid;
|
||||
grid.autoColumnsToFit = true;
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
|
||||
config.cols[0]['hide'] = true;
|
||||
config.cols[1]['hide'] = true;
|
||||
grid.autoGroupColumnDef = {
|
||||
headerName: '名称',
|
||||
width: 250,
|
||||
@@ -31,43 +33,24 @@
|
||||
};
|
||||
grid.treeData = true;
|
||||
grid.groupDefaultExpanded = -1;
|
||||
|
||||
grid.getDataPath = function(data) {
|
||||
return data.tree_path;
|
||||
};
|
||||
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
grid.remoteParams = search.advanced.query;
|
||||
grid.columnDefs = config.cols;
|
||||
grid.onRowDoubleClicked = function (params) {
|
||||
if (params.node.rowPinned) {
|
||||
return;
|
||||
}
|
||||
if (params.data == undefined) {
|
||||
return;
|
||||
}
|
||||
if (params.data.id > 0) {
|
||||
params.data.master_id = params.data.id;
|
||||
action.edit(params.data);
|
||||
}
|
||||
};
|
||||
var action = config.action;
|
||||
// 双击行执行的方法
|
||||
action.rowDoubleClick = action.edit;
|
||||
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
var setup = config.setup;
|
||||
|
||||
// 读取数据
|
||||
grid.remoteData({page: 1});
|
||||
|
||||
// 绑定自定义事件
|
||||
var $gridDiv = $(gridDiv);
|
||||
$gridDiv.on('click', '[data-toggle="event"]', function () {
|
||||
var data = $(this).data();
|
||||
if (data.master_id > 0) {
|
||||
action[data.action](data);
|
||||
}
|
||||
Vue.onMounted(function() {
|
||||
var gridDiv = config.div(101);
|
||||
// 初始化数据
|
||||
grid.remoteData({page: 1}, function(res) {
|
||||
config.init(res);
|
||||
});
|
||||
});
|
||||
|
||||
config.grid = grid;
|
||||
|
||||
})(jQuery);
|
||||
</script>
|
||||
@include('footers')
|
||||
return setup;
|
||||
}
|
||||
}).mount("#{{$header['master_table']}}-page");
|
||||
</script>
|
||||
@@ -5,7 +5,7 @@
|
||||
</div>
|
||||
|
||||
<div class="col-xs-3">
|
||||
<div class="list-jqgrid">
|
||||
<div class="gdoo-list-grid">
|
||||
<div id="dialog-{{$search['query']['id']}}-tree" style="width:100%;height:380px;" class="ag-theme-balham abc"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,38 +1,24 @@
|
||||
{{$header["js"]}}
|
||||
|
||||
<div class="panel no-border m-b-sm" id="{{$header['table']}}-controller">
|
||||
|
||||
@include('headers')
|
||||
|
||||
<div class="col-xs-4 col-sm-2">
|
||||
<div id="{{$header['master_table']}}-tree" style="width:100%;" class="tree-grid ag-theme-balham"></div>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-8 col-sm-10">
|
||||
<div class="list-jqgrid">
|
||||
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="list-grid ag-theme-balham"></div>
|
||||
<div class="gdoo-list-page" id="{{$header['master_table']}}-page">
|
||||
<div class="gdoo-list panel">
|
||||
<div class="gdoo-list-header">
|
||||
<gdoo-grid-header :header="header" :grid="grid" :action="action" />
|
||||
</div>
|
||||
<div class="gdoo-list-grid">
|
||||
<div class="col-xs-4 col-sm-2">
|
||||
<div id="{{$header['master_table']}}-tree" class="tree-grid ag-theme-balham"></div>
|
||||
</div>
|
||||
<div class="col-xs-8 col-sm-10">
|
||||
<div id="{{$header['master_table']}}-grid" class="list-grid ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
/*
|
||||
.list-grid.ag-theme-balham .ag-ltr .ag-cell {
|
||||
vertical-align: middle;
|
||||
line-height: 42px;
|
||||
}
|
||||
|
||||
.thumb-sm {
|
||||
vertical-align: middle;
|
||||
margin-top: 3px;
|
||||
}
|
||||
*/
|
||||
.tree-grid.ag-theme-balham {
|
||||
border-right: 1px solid #BDC3C7;
|
||||
}
|
||||
|
||||
.tree-grid.ag-theme-balham .ag-ltr .ag-cell {
|
||||
border-width: 0 0 0 0;
|
||||
border-right-color: #d9dcde;
|
||||
@@ -53,6 +39,7 @@
|
||||
.tree-box .ul {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.col-xs-4 {
|
||||
padding-right: 0;
|
||||
padding-left: 5px;
|
||||
@@ -75,85 +62,69 @@
|
||||
</style>
|
||||
|
||||
<script>
|
||||
(function ($) {
|
||||
var table = '{{$header["table"]}}';
|
||||
var config = gdoo.grids[table];
|
||||
var action = config.action;
|
||||
var search = config.search;
|
||||
Vue.createApp({
|
||||
components: {
|
||||
gdooGridHeader,
|
||||
},
|
||||
setup(props, ctx) {
|
||||
var table = '{{$header["master_table"]}}';
|
||||
|
||||
action.dialogType = 'layer';
|
||||
var tree = new agGridOptions();
|
||||
tree.rowSelection = 'single';
|
||||
tree.autoGroupColumnDef = {
|
||||
headerName: '类别名称',
|
||||
width: 250,
|
||||
sortable: false,
|
||||
suppressMenu: true,
|
||||
cellRendererParams: {
|
||||
suppressCount: true,
|
||||
}
|
||||
};
|
||||
tree.treeData = true;
|
||||
tree.groupDefaultExpanded = -1;
|
||||
|
||||
tree.getDataPath = function(data) {
|
||||
return data.tree_path;
|
||||
};
|
||||
tree.columnDefs = [];
|
||||
tree.rowSelection = 'single';
|
||||
tree.enableCellTextSelection = false;
|
||||
tree.onRowClicked = function (params) {
|
||||
var query = {};
|
||||
query['category_id'] = params.data.id;
|
||||
query['page'] = 1;
|
||||
config.grid.remoteData(query);
|
||||
};
|
||||
tree.remoteDataUrl = "{{url('category')}}";
|
||||
|
||||
var height = getPanelHeight(140);
|
||||
var treeOptions = new agGridOptions();
|
||||
treeOptions.rowSelection = 'single';
|
||||
var treeDiv = document.querySelector("#{{$header['master_table']}}-tree");
|
||||
treeDiv.style.height = height;
|
||||
var config = new gdoo.grid(table);
|
||||
|
||||
treeOptions.autoGroupColumnDef = {
|
||||
headerName: '类别名称',
|
||||
width: 250,
|
||||
sortable: false,
|
||||
suppressMenu: true,
|
||||
cellRendererParams: {
|
||||
suppressCount: true,
|
||||
}
|
||||
};
|
||||
treeOptions.treeData = true;
|
||||
treeOptions.groupDefaultExpanded = -1;
|
||||
|
||||
treeOptions.getDataPath = function(data) {
|
||||
return data.tree_path;
|
||||
};
|
||||
treeOptions.columnDefs = [];
|
||||
treeOptions.rowSelection = 'single';
|
||||
treeOptions.enableCellTextSelection = false;
|
||||
treeOptions.onRowClicked = function (params) {
|
||||
var query = {};
|
||||
query['category_id'] = params.data.id;
|
||||
query['page'] = 1;
|
||||
config.grid.remoteData(query);
|
||||
};
|
||||
treeOptions.remoteDataUrl = "{{url('category')}}";
|
||||
new agGrid.Grid(treeDiv, treeOptions);
|
||||
// 读取数据
|
||||
treeOptions.remoteData();
|
||||
|
||||
var options = new agGridOptions();
|
||||
var gridDiv = document.querySelector("#{{$header['table']}}-grid");
|
||||
gridDiv.style.height = height;
|
||||
var grid = config.grid;
|
||||
grid.autoColumnsToFit = true;
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
|
||||
options.remoteDataUrl = '{{url()}}';
|
||||
options.remoteParams = search.advanced.query;
|
||||
options.columnDefs = config.cols;
|
||||
//options.rowHeight = 47;
|
||||
options.autoColumnsToFit = false;
|
||||
options.onRowDoubleClicked = function (params) {
|
||||
if (params.node.rowPinned) {
|
||||
return;
|
||||
}
|
||||
if (params.data == undefined) {
|
||||
return;
|
||||
}
|
||||
if (params.data.master_id > 0) {
|
||||
action.show(params.data);
|
||||
}
|
||||
};
|
||||
var action = config.action;
|
||||
// 详情页打开方式
|
||||
action.dialogType = 'layer';
|
||||
// 双击行执行的方法
|
||||
action.rowDoubleClick = action.show;
|
||||
|
||||
new agGrid.Grid(gridDiv, options);
|
||||
var setup = config.setup;
|
||||
|
||||
// 读取数据
|
||||
options.remoteData({page: 1});
|
||||
Vue.onMounted(function() {
|
||||
var height = 136;
|
||||
var treeDiv = document.querySelector('#' + table + '-tree');
|
||||
treeDiv.style.height = config.getPanelHeight(height);
|
||||
new agGrid.Grid(treeDiv, tree);
|
||||
tree.remoteData();
|
||||
|
||||
// 绑定自定义事件
|
||||
var $gridDiv = $(gridDiv);
|
||||
$gridDiv.on('click', '[data-toggle="event"]', function () {
|
||||
var data = $(this).data();
|
||||
if (data.master_id > 0) {
|
||||
action[data.action](data);
|
||||
}
|
||||
});
|
||||
config.grid = options;
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@include('footers')
|
||||
var gridDiv = config.div(height);
|
||||
// 初始化数据
|
||||
grid.remoteData({page: 1}, function(res) {
|
||||
config.init(res);
|
||||
});
|
||||
});
|
||||
return setup;
|
||||
}
|
||||
}).mount("#{{$header['master_table']}}-page");
|
||||
</script>
|
||||
@@ -5,7 +5,7 @@
|
||||
</div>
|
||||
|
||||
<div class="col-xs-3">
|
||||
<div class="list-jqgrid">
|
||||
<div class="gdoo-list-grid">
|
||||
<div id="dialog-{{$search['query']['id']}}-tree" style="width:100%;height:380px;" class="ag-theme-balham abc"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,52 +1,42 @@
|
||||
{{$header["js"]}}
|
||||
|
||||
<div class="panel no-border" id="{{$header['table']}}-controller">
|
||||
@include('headers')
|
||||
<div class='list-jqgrid'>
|
||||
<div id="{{$header['table']}}-grid" style="width:100%;" class="ag-theme-balham"></div>
|
||||
<div class="gdoo-list-page" id="{{$header['master_table']}}-page">
|
||||
<div class="gdoo-list panel">
|
||||
<div class="gdoo-list-header">
|
||||
<gdoo-grid-header :header="header" :grid="grid" :action="action" />
|
||||
</div>
|
||||
<div class='gdoo-list-grid'>
|
||||
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
(function ($) {
|
||||
var table = '{{$header["table"]}}';
|
||||
var config = gdoo.grids[table];
|
||||
Vue.createApp({
|
||||
components: {
|
||||
gdooGridHeader,
|
||||
},
|
||||
setup(props, ctx) {
|
||||
var table = '{{$header["master_table"]}}';
|
||||
|
||||
var config = new gdoo.grid(table);
|
||||
|
||||
var grid = config.grid;
|
||||
grid.autoColumnsToFit = true;
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
|
||||
var action = config.action;
|
||||
var search = config.search;
|
||||
|
||||
var options = new agGridOptions();
|
||||
var gridDiv = document.querySelector("#{{$header['table']}}-grid");
|
||||
gridDiv.style.height = getPanelHeight(48);
|
||||
// 双击行执行的方法
|
||||
action.rowDoubleClick = action.edit;
|
||||
|
||||
options.remoteDataUrl = '{{url()}}';
|
||||
options.remoteParams = search.advanced.query;
|
||||
options.columnDefs = config.cols;
|
||||
options.onRowDoubleClicked = function (params) {
|
||||
if (params.node.rowPinned) {
|
||||
return;
|
||||
}
|
||||
if (params.data == undefined) {
|
||||
return;
|
||||
}
|
||||
if (params.data.id > 0) {
|
||||
action.edit(params.data);
|
||||
}
|
||||
};
|
||||
var setup = config.setup;
|
||||
|
||||
new agGrid.Grid(gridDiv, options);
|
||||
|
||||
// 读取数据
|
||||
options.remoteData({page: 1});
|
||||
|
||||
// 绑定自定义事件
|
||||
var $gridDiv = $(gridDiv);
|
||||
$gridDiv.on('click', '[data-toggle="event"]', function () {
|
||||
var data = $(this).data();
|
||||
if (data.master_id > 0) {
|
||||
action[data.action](data);
|
||||
}
|
||||
Vue.onMounted(function() {
|
||||
var gridDiv = config.div(136);
|
||||
// 初始化数据
|
||||
grid.remoteData({page: 1}, function(res) {
|
||||
config.init(res);
|
||||
});
|
||||
});
|
||||
config.grid = options;
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@include('footers')
|
||||
return setup;
|
||||
}
|
||||
}).mount("#{{$header['master_table']}}-page");
|
||||
</script>
|
||||
Reference in New Issue
Block a user