parent
bd9c315d7e
commit
c564147f20
|
@ -21,6 +21,7 @@ Vue.createApp({
|
|||
|
||||
var grid = config.grid;
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
grid.autoColumnsToFit = true;
|
||||
|
||||
var action = config.action;
|
||||
// 双击行执行的方法
|
||||
|
|
|
@ -87,7 +87,7 @@
|
|||
|
||||
gdoo.grids[table] = {grid: grid};
|
||||
|
||||
var action = new grid(table, '客户销售进度');
|
||||
var action = new gridAction(table, '客户销售进度');
|
||||
var panel = $('#' + table + '-controller');
|
||||
|
||||
panel.on('click', '[data-toggle="' + table + '"]', function() {
|
||||
|
|
|
@ -110,11 +110,7 @@ var params = {customer_id: customer_id};
|
|||
text: '提交',
|
||||
'class': 'btn-info',
|
||||
click: function () {
|
||||
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
|
||||
var loading = showLoading();
|
||||
var rows = refer_customer.api.getSelectedRows();
|
||||
for (var i = 0; i < rows.length; i++) {
|
||||
let row = rows[i];
|
||||
|
|
|
@ -73,7 +73,7 @@
|
|||
|
||||
gdoo.grids[table] = {grid: grid};
|
||||
|
||||
var action = new grid(table, '区域销售进度');
|
||||
var action = new gridAction(table, '区域销售进度');
|
||||
var panel = $('#' + table + '-controller');
|
||||
|
||||
panel.on('click', '[data-toggle="' + table + '"]', function() {
|
||||
|
|
|
@ -31,9 +31,7 @@ var form_action = '{{$form["action"]}}';
|
|||
var file = document.querySelector("#import_file").files[0];
|
||||
var formData = new FormData();
|
||||
formData.append('file', file);
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
$.ajax(url, {
|
||||
method: "post",
|
||||
data: formData,
|
||||
|
|
|
@ -88,7 +88,7 @@
|
|||
|
||||
gdoo.grids[table] = {grid: grid};
|
||||
|
||||
var action = new grid(table, '客户销售进度');
|
||||
var action = new gridAction(table, '客户销售进度');
|
||||
var panel = $('#' + table + '-controller');
|
||||
|
||||
panel.on('click', '[data-toggle="' + table + '"]', function() {
|
||||
|
|
|
@ -17,7 +17,7 @@ class ReportController extends DefaultController
|
|||
$sdate = date('Y-m-01');
|
||||
$edate = date('Y-m-d');
|
||||
$search = search_form([],
|
||||
[['form_type' => 'date2', 'name' => '日期', 'field' => 'date', 'value' => [$sdate, $edate], 'options' => []],
|
||||
[['form_type' => 'date2', 'name' => '订单日期', 'field' => 'date', 'value' => [$sdate, $edate], 'options' => []],
|
||||
['form_type' => 'text', 'name' => '订单编号', 'field' => 'm.sn', 'options' => []],
|
||||
['form_type' => 'text', 'name' => '单据编号', 'field' => 'd.fee_src_sn', 'options' => []],
|
||||
[
|
||||
|
@ -52,10 +52,10 @@ class ReportController extends DefaultController
|
|||
c.code as customer_code,
|
||||
c.name as customer_name,
|
||||
ccc.name as category_name,
|
||||
".sql_year_month('l.audit_date', 'ts')." as [ym]
|
||||
".sql_year_month('m.created_at', 'ts')." as [ym]
|
||||
")
|
||||
->whereRaw('d.fee_src_sn is not null')
|
||||
->groupBy(DB::raw('c.code,c.name,ccc.name,m.sn,d.fee_src_sn,d.fee_src_type_id,'.sql_year_month('l.audit_date', 'ts')));
|
||||
->groupBy(DB::raw('c.code,c.name,ccc.name,m.sn,d.fee_src_sn,d.fee_src_type_id,'.sql_year_month('m.created_at', 'ts')));
|
||||
|
||||
foreach ($search['where'] as $where) {
|
||||
if ($where['active']) {
|
||||
|
|
|
@ -34,9 +34,7 @@ var table = '{{$form["table"]}}';
|
|||
var file = document.querySelector("#import_file").files[0];
|
||||
var formData = new FormData();
|
||||
formData.append('file', file);
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
$.ajax(url, {
|
||||
method: "post",
|
||||
data: formData,
|
||||
|
|
|
@ -35,9 +35,7 @@ var table = '{{$form["table"]}}';
|
|||
var file = document.querySelector("#import_file").files[0];
|
||||
var formData = new FormData();
|
||||
formData.append('file', file);
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
$.ajax(url, {
|
||||
method: "post",
|
||||
data: formData,
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
|
||||
gdoo.grids[table] = {grid: grid};
|
||||
|
||||
var action = new grid(table, '销售订单费用明细表');
|
||||
var action = new gridAction(table, '销售订单费用明细表');
|
||||
var panel = $('#' + table + '-controller');
|
||||
|
||||
panel.on('click', '[data-toggle="' + table + '"]', function() {
|
||||
|
|
|
@ -32,9 +32,7 @@
|
|||
formData.append('file', file);
|
||||
formData.append('name', name);
|
||||
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
$.ajax(url, {
|
||||
method: "post",
|
||||
data: formData,
|
||||
|
|
|
@ -32,9 +32,7 @@
|
|||
formData.append('file', file);
|
||||
formData.append('name', name);
|
||||
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
$.ajax(url, {
|
||||
method: "post",
|
||||
data: formData,
|
||||
|
|
|
@ -75,9 +75,9 @@ class Controller extends BaseController
|
|||
'upload_url' => URL::to('/uploads'),
|
||||
'static_url' => URL::to('/static'),
|
||||
'asset_url' => URL::to('/assets'),
|
||||
'version' => $this->version,
|
||||
'licenseType' => env('LICENSE_TYPE'),
|
||||
'resVersion' => $this->resVersion,
|
||||
'version' => $this->version,
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
|
@ -37,6 +37,7 @@ class ModelController extends DefaultController
|
|||
], 'model');
|
||||
|
||||
$header['cols'] = [
|
||||
/*
|
||||
'checkbox' => [
|
||||
'width' => 40,
|
||||
'suppressSizeToFit' => true,
|
||||
|
@ -70,6 +71,7 @@ class ModelController extends DefaultController
|
|||
'form_type' => 'text',
|
||||
'width' => 100,
|
||||
],
|
||||
*/
|
||||
'user' => [
|
||||
'field' => 'table',
|
||||
'headerName' => '表名',
|
||||
|
@ -128,6 +130,13 @@ class ModelController extends DefaultController
|
|||
'filter' => false,
|
||||
],
|
||||
];
|
||||
|
||||
$header['buttons'] = [
|
||||
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
|
||||
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
|
||||
];
|
||||
|
||||
$header['search_form'] = $search;
|
||||
$query = $search['query'];
|
||||
|
||||
if (Request::method() == 'POST') {
|
||||
|
@ -150,18 +159,11 @@ class ModelController extends DefaultController
|
|||
array_nest($items);
|
||||
$rows->items($items);
|
||||
|
||||
return $rows;
|
||||
$ret = $rows->toArray();
|
||||
$ret['header'] = Grid::getColumns($header);
|
||||
return $ret;
|
||||
}
|
||||
|
||||
$header['buttons'] = [
|
||||
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
|
||||
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
|
||||
];
|
||||
|
||||
$header['search_form'] = $search;
|
||||
$header['js'] = Grid::js($header);
|
||||
|
||||
// 配置权限
|
||||
return $this->display([
|
||||
'header' => $header,
|
||||
]);
|
||||
|
|
|
@ -107,6 +107,19 @@ class ModuleController extends DefaultController
|
|||
'filter' => false,
|
||||
],
|
||||
];
|
||||
|
||||
$header['buttons'] = [
|
||||
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
|
||||
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
|
||||
];
|
||||
|
||||
$header['left_buttons'] = [
|
||||
['name' => '更新', 'color' => 'default', 'icon' => 'fa-refresh', 'action' => 'refresh', 'display' => 1],
|
||||
['name' => '安装', 'color' => 'default', 'icon' => 'fa-cloud-download', 'action' => 'install', 'display' => 1],
|
||||
['name' => '打包', 'color' => 'default', 'icon' => 'fa-cube', 'action' => 'package', 'display' => 1],
|
||||
];
|
||||
|
||||
$header['search_form'] = $search;
|
||||
$query = $search['query'];
|
||||
|
||||
if (Request::method() == 'POST') {
|
||||
|
@ -126,23 +139,11 @@ class ModuleController extends DefaultController
|
|||
}
|
||||
return $row;
|
||||
});
|
||||
return $rows->toJson();
|
||||
$ret = $rows->toArray();
|
||||
$ret['header'] = Grid::getColumns($header);
|
||||
return $ret;
|
||||
}
|
||||
|
||||
$header['buttons'] = [
|
||||
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
|
||||
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
|
||||
];
|
||||
|
||||
$header['left_buttons'] = [
|
||||
['name' => '更新', 'color' => 'default', 'icon' => 'fa-refresh', 'action' => 'refresh', 'display' => 1],
|
||||
['name' => '安装', 'color' => 'default', 'icon' => 'fa-cloud-download', 'action' => 'install', 'display' => 1],
|
||||
['name' => '打包', 'color' => 'default', 'icon' => 'fa-cube', 'action' => 'package', 'display' => 1],
|
||||
];
|
||||
|
||||
$header['search_form'] = $search;
|
||||
$header['js'] = Grid::js($header);
|
||||
|
||||
return $this->display([
|
||||
'header' => $header,
|
||||
]);
|
||||
|
|
|
@ -1145,7 +1145,7 @@ class Grid
|
|||
];
|
||||
|
||||
$js = "gdoo.grids.$table = ".json_encode($search, JSON_UNESCAPED_UNICODE).";";
|
||||
$js .= "gdoo.grids.$table.action = new grid('".$table."', '".$header['master_name']."');";
|
||||
$js .= "gdoo.grids.$table.action = new gridAction('".$table."', '".$header['master_name']."');";
|
||||
$js .= "gdoo.grids.$table.action.routes = ".json_encode($routes, JSON_UNESCAPED_UNICODE).';';
|
||||
$js .= "gdoo.grids.$table.action.bill_url = '{$mc}';";
|
||||
$res = '<script>'.$js.'</script>';
|
||||
|
|
|
@ -263,11 +263,7 @@ const vueData = {
|
|||
},mounted() {
|
||||
this.changeDataType();
|
||||
$('#form_type').off('change').on('change', function() {
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16,
|
||||
shade: 0.1,
|
||||
time: 1000 * 30
|
||||
});
|
||||
var loading = showLoading();
|
||||
$.get("{{url('type')}}?type=" + this.value + '&model_id=' + model_id, function(data) {
|
||||
$("#content").html(data);
|
||||
}).complete(function() {
|
||||
|
|
|
@ -1,19 +1,48 @@
|
|||
{{$header["js"]}}
|
||||
<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="panel no-border" id="{{$header['master_table']}}-controller">
|
||||
@include('headers')
|
||||
<div class='gdoo-list-grid'>
|
||||
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div>
|
||||
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
(function ($) {
|
||||
var table = '{{$header["master_table"]}}';
|
||||
var config = gdoo.grids[table];
|
||||
var action = config.action;
|
||||
var search = config.search;
|
||||
|
||||
action.dialogType = 'dialog';
|
||||
</div>
|
||||
|
||||
<script>
|
||||
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()}}';
|
||||
|
||||
grid.autoGroupColumnDef = {
|
||||
headerName: '名称',
|
||||
width: 120,
|
||||
cellRendererParams: {
|
||||
checkbox: true,
|
||||
suppressCount: true,
|
||||
}
|
||||
};
|
||||
grid.treeData = true;
|
||||
grid.groupDefaultExpanded = -1;
|
||||
grid.getDataPath = function(data) {
|
||||
return data.tree_path;
|
||||
};
|
||||
|
||||
var action = config.action;
|
||||
// 双击行执行的方法
|
||||
action.rowDoubleClick = action.edit;
|
||||
|
||||
action.field = function(data) {
|
||||
var me = this;
|
||||
|
@ -31,55 +60,16 @@
|
|||
});
|
||||
}
|
||||
|
||||
var options = new agGridOptions();
|
||||
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
|
||||
gridDiv.style.height = getPanelHeight(48);
|
||||
var setup = config.setup;
|
||||
|
||||
config.cols[0]['hide'] = true;
|
||||
config.cols[1]['hide'] = true;
|
||||
config.cols[2]['hide'] = true;
|
||||
options.autoGroupColumnDef = {
|
||||
headerName: '名称',
|
||||
width: 120,
|
||||
cellRendererParams: {
|
||||
checkbox: true,
|
||||
suppressCount: true,
|
||||
}
|
||||
};
|
||||
options.treeData = true;
|
||||
options.groupDefaultExpanded = -1;
|
||||
options.getDataPath = function(data) {
|
||||
return data.tree_path;
|
||||
};
|
||||
|
||||
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.master_id > 0) {
|
||||
action.edit(params.data);
|
||||
}
|
||||
};
|
||||
|
||||
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);
|
||||
|
||||
});
|
||||
return setup;
|
||||
}
|
||||
}).mount("#{{$header['master_table']}}-page");
|
||||
</script>
|
||||
@include('footers')
|
|
@ -1,28 +1,41 @@
|
|||
{{$header["js"]}}
|
||||
<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="panel no-border" id="{{$header['master_table']}}-controller">
|
||||
@include('headers')
|
||||
<div class='gdoo-list-grid'>
|
||||
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div>
|
||||
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
(function ($) {
|
||||
var table = '{{$header["master_table"]}}';
|
||||
var config = gdoo.grids[table];
|
||||
var action = config.action;
|
||||
var search = config.search;
|
||||
|
||||
action.dialogType = 'dialog';
|
||||
</div>
|
||||
|
||||
<script>
|
||||
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;
|
||||
// 双击行执行的方法
|
||||
action.rowDoubleClick = null;
|
||||
|
||||
action.refresh = function() {
|
||||
var me = this;
|
||||
var loading = layer.msg('模块更新中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
$.post(app.url('model/module/refresh'), function(res) {
|
||||
if (res.status) {
|
||||
options.remoteData({page: 1});
|
||||
grid.remoteData({page: 1});
|
||||
toastrSuccess(res.data);
|
||||
} else {
|
||||
toastrError(res.data);
|
||||
|
@ -32,62 +45,16 @@
|
|||
});
|
||||
}
|
||||
|
||||
action.test = function() {
|
||||
var me = this;
|
||||
var grid = config.grid;
|
||||
var rows = grid.api.getSelectedRows();
|
||||
if (rows.length == 1) {
|
||||
formDialog({
|
||||
title: '测试邮件',
|
||||
url: app.url('system/mail/test', {id: rows[0].id}),
|
||||
storeUrl: app.url('system/mail/test'),
|
||||
id: 'mail_test',
|
||||
dialogClass:'modal-sm',
|
||||
success: function(res) {
|
||||
toastrSuccess(res.data);
|
||||
$(this).dialog("close");
|
||||
},
|
||||
error: function(res) {
|
||||
toastrError(res.data);
|
||||
}
|
||||
var setup = config.setup;
|
||||
|
||||
Vue.onMounted(function() {
|
||||
var gridDiv = config.div(136);
|
||||
// 初始化数据
|
||||
grid.remoteData({page: 1}, function(res) {
|
||||
config.init(res);
|
||||
});
|
||||
} else {
|
||||
toastrError('只能选择一条数据。');
|
||||
}
|
||||
}
|
||||
|
||||
var options = new agGridOptions();
|
||||
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
|
||||
gridDiv.style.height = getPanelHeight(48);
|
||||
|
||||
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.master_id > 0) {
|
||||
action.show(params.data);
|
||||
}
|
||||
};
|
||||
|
||||
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);
|
||||
}
|
||||
});
|
||||
config.grid = options;
|
||||
})(jQuery);
|
||||
|
||||
return setup;
|
||||
}
|
||||
}).mount("#{{$header['master_table']}}-page");
|
||||
</script>
|
||||
@include('footers')
|
|
@ -1,454 +0,0 @@
|
|||
<script src="{{$asset_url}}/vendor/jquery.plumb.min.js" type="text/javascript"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
var intervalTimer = null;
|
||||
var nowStepId = null;
|
||||
var normalStepSelector = ".wf-step:not(.wf-step-end)";
|
||||
// var normalStepSelector = ".wf-step:not(.wf-step-start,.wf-step-end)";
|
||||
|
||||
// 判断连接器是否指向了自己
|
||||
var isConnectToSelf = function(param) {
|
||||
return param.sourceId === param.targetId
|
||||
},
|
||||
isFromStartToEnd = function(param) {
|
||||
return param.sourceId === "step_1" && param.targetId === "step_0"
|
||||
},
|
||||
// 判断连接步骤是否重复
|
||||
stepIsRepeat = function(param){
|
||||
// 获取同一scope下的链接器,判断当前链接是否有重复
|
||||
var cnts = jsPlumb.getConnections(param.scope);
|
||||
if(cnts.length > 0) {
|
||||
for(var i = 0, len = cnts.length; i < len; i++) {
|
||||
// 如果有链接器 sourceId 及 targetId 都相等,那大概也许可能就相等了。
|
||||
if(param.sourceId === cnts[i].sourceId && param.targetId === cnts[i].targetId) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
// 连接前的事件
|
||||
var beforeDropHandler = function(param) {
|
||||
|
||||
if (isConnectToSelf(param)) {
|
||||
toastrError('连接点不能是自己。');
|
||||
return false;
|
||||
}
|
||||
// 连接步骤是否重复
|
||||
if (stepIsRepeat(param)) {
|
||||
toastrError('连接点已经存在。');
|
||||
return false;
|
||||
}
|
||||
// 连接步骤是结束
|
||||
if (isFromStartToEnd(param)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
$(document).ready(function()
|
||||
{
|
||||
// 获取步骤图
|
||||
workStep.init();
|
||||
|
||||
$('#graph').contextmenu({'target':'#graph-menu'});
|
||||
|
||||
// 阻止非空白处的右键事件,不出现菜单
|
||||
//$container.on("contextmenu", "*", function(evt) {
|
||||
//evt.stopPropagation();
|
||||
//});
|
||||
|
||||
// 点击或双击事件,这里进行了一个单击事件延迟,因为同时绑定了双击事件
|
||||
$("#rows").on('click', 'div', function() {
|
||||
clearTimeout(intervalTimer);
|
||||
intervalTimer = setTimeout(function() {
|
||||
workStep.click();
|
||||
},300);
|
||||
|
||||
}).on('dblclick', 'div', function(e) {
|
||||
nowStepId = $(e.target).attr('step_id');
|
||||
clearTimeout(intervalTimer);
|
||||
workStep.dblClick('base');
|
||||
});
|
||||
});
|
||||
|
||||
var workStep = {
|
||||
|
||||
init:function() {
|
||||
|
||||
jsPlumb.reset();
|
||||
|
||||
jsPlumb.bind("beforeDrop", beforeDropHandler);
|
||||
|
||||
$.post("{{url('index2')}}",{model_id:'{{$model_id}}'},function(res)
|
||||
{
|
||||
$('#rows').empty();
|
||||
var nLastStepId = 0;
|
||||
|
||||
if(res.status == true) {
|
||||
jsPlumb.importDefaults({
|
||||
DragOptions:{cursor:'pointer'},
|
||||
ConnectionOverlays:[
|
||||
["Arrow",{location:1,id:"arrow",width:10,length:8}]
|
||||
],
|
||||
Anchor:'Continuous',
|
||||
Endpoint :"Blank",
|
||||
EndpointStyle:{radius:3,strokeStyle:'#1e8151'},
|
||||
HoverPaintStyle:{radius:3,strokeStyle:'#999'},
|
||||
ConnectorZIndex:5,
|
||||
HoverPaintStyle:workStep.connectorHoverStyle
|
||||
});
|
||||
|
||||
if(!$.support.leadingWhitespace) {
|
||||
// ie9以下,用VML画图
|
||||
jsPlumb.setRenderMode(jsPlumb.VML);
|
||||
} else {
|
||||
// 其他浏览器用SVG
|
||||
jsPlumb.setRenderMode(jsPlumb.SVG);
|
||||
}
|
||||
|
||||
// 第一次循环,生成页面元素div
|
||||
var left = 20;
|
||||
var top = 20;
|
||||
|
||||
var rows = res.data;
|
||||
var setd = {};
|
||||
|
||||
$.each(rows, function(id, row) {
|
||||
var title = '<span class="ep">' + (row.option == 1 ? '审核' : '知会') + '</span> ' + row.name;
|
||||
if (row.type == 'start') {
|
||||
title = '<span class="ep"><i class="icon icon-play"></i></span> ' + row.name;
|
||||
} else if(row.type == 'end') {
|
||||
title = '<span class="ep"><i class="icon icon-stop"></i></span> ' + row.name;
|
||||
}
|
||||
|
||||
var css = 'wf-step';
|
||||
if (row.type == 'start') {
|
||||
css = 'wf-step wf-step-start';
|
||||
} else if(row.type == 'end') {
|
||||
css = 'wf-step wf-step-end';
|
||||
}
|
||||
|
||||
var nodeDiv = document.createElement('div');
|
||||
var $node = $(nodeDiv);
|
||||
|
||||
$node.attr("id", "step_" + row.id)
|
||||
.attr("join", row.join)
|
||||
.attr("step_id", row.id)
|
||||
.css({"left":row.left+'px',"top":row.top+'px',"cursor":"move"})
|
||||
.addClass(css)
|
||||
.html(title);
|
||||
|
||||
/*
|
||||
$(normalStepSelector).on('mousedown', function(e) {
|
||||
|
||||
//if(row.number > 0) {
|
||||
nowStepId = $(e.target).attr('step_id');
|
||||
// $(this).contextmenu({'target':'#step-menu'});
|
||||
//}
|
||||
//e.stopPropagation();
|
||||
});
|
||||
*/
|
||||
|
||||
$("#rows").append($node);
|
||||
|
||||
// 索引变量
|
||||
nLastStepId++;
|
||||
|
||||
});
|
||||
|
||||
// 绑定右键操作菜单
|
||||
$(normalStepSelector).on('mousedown', function(e) {
|
||||
nowStepId = $(e.target).attr('step_id');
|
||||
$(this).contextmenu({'target':'#step-menu'});
|
||||
// e.stopPropagation();
|
||||
});
|
||||
|
||||
// 使之可拖动
|
||||
jsPlumb.draggable($(".wf-step"));
|
||||
|
||||
$(".ep").each(function(i,e) {
|
||||
var p = $(e).parent();
|
||||
jsPlumb.makeSource($(e), {
|
||||
parent:p,
|
||||
anchor:"Continuous",
|
||||
endpoint:"Blank",
|
||||
paintStyle:{
|
||||
strokeStyle:"#3399cc",
|
||||
fillStyle:"transparent",
|
||||
radius:2,
|
||||
lineWidth:2
|
||||
},
|
||||
// stub 线条弯曲角度 gap 距离节点位置 cornerRadius 线条圆角
|
||||
connector:["Flowchart",{stub:[10, 30], gap:0, cornerRadius:3, alwaysRespectStubs:true}],
|
||||
connectorStyle:workStep.connectorPaintStyle,
|
||||
hoverPaintStyle:workStep.endpointHoverStyle,
|
||||
connectorHoverStyle:workStep.connectorHoverStyle,
|
||||
dragOptions:{},
|
||||
maxConnections:-1
|
||||
});
|
||||
});
|
||||
|
||||
// 绑定删除确认操作
|
||||
jsPlumb.bind("click", function(e) {
|
||||
jsPlumb.detach(e);
|
||||
});
|
||||
|
||||
// 连接关联的步骤
|
||||
$('.wf-step').each(function(i) {
|
||||
var id = $(this).attr('id');
|
||||
var join = $(this).attr('join') || '';
|
||||
var joinArray = join.split(",");
|
||||
$.each(joinArray,function(j, n) {
|
||||
if(n > 0) {
|
||||
jsPlumb.connect({source:id, target:"step_"+n});
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
jsPlumb.makeTarget($('.wf-step'), {
|
||||
dropOptions: {hoverClass:"dragHover", activeClass:"active"},
|
||||
anchor: "Continuous",
|
||||
maxConnections: 5
|
||||
});
|
||||
}
|
||||
},'json');
|
||||
},
|
||||
connectorPaintStyle:{
|
||||
lineWidth:2,
|
||||
strokeStyle:"#3399cc",
|
||||
joinstyle:"round",
|
||||
outlineColor:"white",
|
||||
dashstyle:"0",
|
||||
outlineWidth:2
|
||||
},
|
||||
connectorHoverStyle:{
|
||||
lineWidth:2,
|
||||
strokeStyle:"#999999",
|
||||
outlineWidth:2,
|
||||
dashstyle:"4 1",
|
||||
outlineColor:"white"
|
||||
},
|
||||
endpointHoverStyle:{
|
||||
strokeStyle:"#216477"
|
||||
},
|
||||
// 清空所有连接
|
||||
clear:function() {
|
||||
jsPlumb.detachEveryConnection();
|
||||
jsPlumb.deleteEveryEndpoint();
|
||||
},
|
||||
// 单击事件
|
||||
click:function() {
|
||||
if (nowStepId > 0) {
|
||||
$('#tree').hide();
|
||||
$.post('{{url("show")}}',{id:nowStepId, model_id:'{{$model_id}}'}, function(res) {
|
||||
$('#tree').html(res.data).show();
|
||||
})
|
||||
}
|
||||
},
|
||||
// 删除步骤
|
||||
deleted:function() {
|
||||
$.messager.confirm('操作警告','确认要删除该步骤吗?',function(btn) {
|
||||
if (btn) {
|
||||
$.post('{{url("delete")}}',{id:nowStepId, model_id:'{{$model_id}}'}, function(res) {
|
||||
if (res.status) {
|
||||
workStep.init();
|
||||
toastrSuccess('操作成功');
|
||||
}
|
||||
},'json');
|
||||
}
|
||||
|
||||
});
|
||||
},
|
||||
// 克隆步骤
|
||||
clone:function() {
|
||||
$.messager.confirm('操作警告','确认要克隆该步骤吗?',function(btn) {
|
||||
if (btn) {
|
||||
$.post('{{url("add")}}',{id:nowStepId,model_id:'{{$model_id}}'},function(data) {
|
||||
if(data.status) {
|
||||
workStep.init();
|
||||
toastrSuccess('操作成功');
|
||||
}
|
||||
},'json');
|
||||
}
|
||||
});
|
||||
},
|
||||
dblClick:function(tab) {
|
||||
if (nowStepId > 0) {
|
||||
if(tab == 'base') {
|
||||
$.dialog({
|
||||
title:'基本设置',
|
||||
url:'{{url("create")}}?model_id={{$model_id}}&id='+nowStepId+'&tab='+tab,
|
||||
dialogClass: 'modal-lg',
|
||||
buttons:[{
|
||||
class: 'btn-info',
|
||||
text:'<i class="fa fa-check-circle"></i> 提交',
|
||||
click: function() {
|
||||
var formData = $('#mystep').serialize();
|
||||
$.post('{{url("create")}}', formData, function(res) {
|
||||
if (res.status) {
|
||||
workStep.init();
|
||||
toastrSuccess('保存当前视图成功');
|
||||
}
|
||||
},'json');
|
||||
$(this).dialog("close");
|
||||
}
|
||||
},{
|
||||
text:'<i class="fa fa-times"></i> 取消',
|
||||
click: function() {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
}]
|
||||
});
|
||||
}
|
||||
if (tab == 'condition') {
|
||||
$.dialog({
|
||||
title:'条件设置',
|
||||
url:'{{url("condition")}}?model_id={{$model_id}}&id='+nowStepId+'&tab='+tab,
|
||||
dialogClass: 'modal-lg',
|
||||
buttons:[{
|
||||
class: 'btn-info',
|
||||
text:'<i class="fa fa-check-circle"></i> 提交',
|
||||
click: function() {
|
||||
var formData = $('#conditionform').serialize();
|
||||
$.post('{{url("condition")}}', formData, function(res) {
|
||||
if (res.status) {
|
||||
workStep.init();
|
||||
toastrSuccess('保存当前视图成功');
|
||||
}
|
||||
},'json');
|
||||
$(this).dialog("close");
|
||||
}
|
||||
},{
|
||||
text:'<i class="fa fa-times"></i> 取消',
|
||||
click: function() {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
}]
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
add:function() {
|
||||
$.post('{{url("add")}}',{model_id:'{{$model_id}}'},function(res) {
|
||||
if (res.status) {
|
||||
workStep.init();
|
||||
toastrSuccess('操作成功');
|
||||
}
|
||||
},'json');
|
||||
},
|
||||
save:function() {
|
||||
var join = [],position = [];
|
||||
var rows = jsPlumb.getConnections();
|
||||
|
||||
if (rows.length == 0) {
|
||||
toastrError('请先建立连接');
|
||||
return;
|
||||
}
|
||||
|
||||
for (var i = 0; i < rows.length; i++) {
|
||||
var sourceId = rows[i].sourceId.substring(5);
|
||||
var targetId = rows[i].targetId.substring(5);
|
||||
join[i] = {id:sourceId,target:targetId};
|
||||
}
|
||||
|
||||
$('#rows div').each(function(i) {
|
||||
if(this.id.substring(0,5) == 'step_') {
|
||||
var stepId = this.id.substring(5);
|
||||
var left = $(this).css('left');
|
||||
var top = $(this).css('top');
|
||||
position[i] = {'id':stepId,'posX':left,'posY':top};
|
||||
}
|
||||
});
|
||||
|
||||
$.post('{{url("save")}}', {join:join,position:position,model_id:'{{$model_id}}'},function(result) {
|
||||
if(result.status) {
|
||||
toastrSuccess('保存当前视图成功');
|
||||
}
|
||||
},'json');
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.content-body {
|
||||
margin: 0;
|
||||
}
|
||||
.col-sm-10 {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
.col-sm-2 {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="panel">
|
||||
|
||||
<div class="panel-header">
|
||||
<a class="btn btn-sm btn-info" onclick="workStep.add();" href="javascript:;">新建步骤</a>
|
||||
<a class="btn btn-sm btn-default" onclick="workStep.init();" href="javascript:;">重新加载</a>
|
||||
<a href="javascript:;" onclick="workStep.clear();" class="btn btn-sm btn-default"><i class="fa fa-ban"></i> 清空连接</a>
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
<div class="m-t-sm">
|
||||
<div class="col-sm-10 m-b">
|
||||
<div class="graph" id="graph" data-toggle="context" data-target="#graph-menu">
|
||||
<div id="rows"></div>
|
||||
</div>
|
||||
|
||||
<div id="graph-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li role="presentation"><a role="menuitem" onclick="workStep.add();" href="javascript:;">新建步骤</a></li>
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li role="presentation"><a role="menuitem" onclick="workStep.save();" href="javascript:;">保存视图</a></li>
|
||||
<li role="presentation"><a role="menuitem" onclick="workStep.init();" href="javascript:;">重新加载</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="step-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li role="presentation"><a role="menuitem" onclick="workStep.dblClick('base');" href="javascript:;">基本设置</a></li>
|
||||
<!--
|
||||
<li role="presentation"><a role="menuitem" onclick="workStep.dblClick('handle');" href="javascript:;">经办权限</a></li>
|
||||
<li role="presentation"><a role="menuitem" onclick="workStep.dblClick('field');" href="javascript:;">表单字段</a></li>
|
||||
-->
|
||||
<li role="presentation"><a role="menuitem" onclick="workStep.dblClick('condition');" href="javascript:;">条件设置</a></li>
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li role="presentation"><a role="menuitem" onclick="workStep.clone();" href="javascript:;">克隆该步骤</a></li>
|
||||
<li role="presentation"><a role="menuitem" onclick="workStep.deleted();" href="javascript:;">删除该步骤</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-sm-2">
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">基本信息</div>
|
||||
<div class="panel-body">
|
||||
<div id="tree"></div>
|
||||
</div>
|
||||
<div class="panel-heading b-t">表单字段</div>
|
||||
<div class="panel-body">
|
||||
<div id="tree"></div>
|
||||
</div>
|
||||
<div class="panel-heading b-t">办理人员</div>
|
||||
<div class="panel-body">
|
||||
<div id="tree"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="m-b">
|
||||
<a href="javascript:;" onclick="workStep.save();" class="btn btn-lg btn-block btn-info"><i class="fa fa-random"></i> 保存连接和视图</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
|
@ -99,9 +99,7 @@ Vue.createApp({
|
|||
onSubmit: function() {
|
||||
var me = this;
|
||||
var form = $('#plan_delivery_date').serialize();
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
$.post(app.url('order/order/deliveryPlanDate'), form, function(res) {
|
||||
if (res.status) {
|
||||
grid.remoteData();
|
||||
|
|
|
@ -56,7 +56,7 @@
|
|||
|
||||
gdoo.grids[table] = {grid: grid};
|
||||
|
||||
var action = new grid(table, '外销生产进度表');
|
||||
var action = new gridAction(table, '外销生产进度表');
|
||||
var panel = $('#' + table + '-controller');
|
||||
|
||||
// 过滤数据
|
||||
|
|
|
@ -63,7 +63,7 @@
|
|||
|
||||
gdoo.grids[table] = {grid: grid};
|
||||
|
||||
var action = new grid(table, '生产计划总表');
|
||||
var action = new gridAction(table, '生产计划总表');
|
||||
var panel = $('#' + table + '-controller');
|
||||
|
||||
panel.on('click', '[data-toggle="' + table + '"]', function() {
|
||||
|
|
|
@ -85,7 +85,7 @@
|
|||
|
||||
gdoo.grids[table] = {grid: grid};
|
||||
|
||||
var action = new grid(table, '生产计划');
|
||||
var action = new gridAction(table, '生产计划');
|
||||
var panel = $('#' + table + '-controller');
|
||||
|
||||
var producePlan = function() {
|
||||
|
@ -103,9 +103,7 @@
|
|||
onSubmit: function() {
|
||||
var me = this;
|
||||
var form = $('#plan_delivery_date').serialize();
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
$.post(app.url('order/order/deliveryPlanDate'), form, function(res) {
|
||||
if (res.status) {
|
||||
grid.remoteData();
|
||||
|
|
|
@ -71,9 +71,7 @@ var planDialog = function () {
|
|||
toastrError('请选选择计划日期。');
|
||||
return;
|
||||
}
|
||||
var loading = layer.msg('数据提取中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading('数据提取中...');
|
||||
$.get('{{url("produce/plan/orderPlan")}}', {plan_date: plan_date}, function(res) {
|
||||
layer.close(loading);
|
||||
if (res.status) {
|
||||
|
|
|
@ -210,15 +210,12 @@
|
|||
return;
|
||||
}
|
||||
|
||||
var index = layer.msg('照片压缩中...', {
|
||||
icon: 16,
|
||||
shade: 0.1,
|
||||
time: 6000 * 10
|
||||
});
|
||||
var loading = showLoading('照片压缩中...');
|
||||
|
||||
$.post('{{url("archive")}}', {
|
||||
id: ids
|
||||
}, function(res) {
|
||||
layer.close(index);
|
||||
layer.close(loading);
|
||||
if (res.status) {
|
||||
$.messager.alert('照片下载', '<div class="text-center"><a href="' + app.url('promotion/material/download', {
|
||||
sn: '{{$promotion->sn}}'
|
||||
|
|
|
@ -166,9 +166,7 @@ var grid = null;
|
|||
products[row.product_id] += parseFloat(row.wf_num);
|
||||
}
|
||||
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
|
||||
var product_ids = Object.keys(products).join(',');
|
||||
var batch_ids = Object.keys(batchs).join(',');
|
||||
|
|
|
@ -118,9 +118,7 @@ var grid = null;
|
|||
products[row.product_id] += parseFloat(row.wf_num);
|
||||
}
|
||||
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
|
||||
var product_ids = Object.keys(products).join(',');
|
||||
var batch_ids = Object.keys(batchs).join(',');
|
||||
|
@ -228,9 +226,7 @@ var grid = null;
|
|||
return;
|
||||
}
|
||||
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
$.post(app.url('stock/delivery/autoSave'), query + '&' + $.param(gets), function (res) {
|
||||
if (res.status) {
|
||||
toastrSuccess(res.data);
|
||||
|
|
|
@ -47,9 +47,7 @@ var grid = null;
|
|||
var formData = new FormData();
|
||||
formData.append('file', file);
|
||||
formData.append('customer_id', get_customer_id());
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
$.ajax(url, {
|
||||
method: "post",
|
||||
data: formData,
|
||||
|
@ -120,9 +118,7 @@ var grid = null;
|
|||
|
||||
var warehouse_id = $('#stock_direct_warehouse_id').val();
|
||||
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
|
||||
var product_ids = Object.keys(product_ids).join(',');
|
||||
getBatchSelect(warehouse_id, product_ids, '', function(res) {
|
||||
|
|
|
@ -32,9 +32,7 @@ function importExcel() {
|
|||
var file = document.querySelector("#import_file").files[0];
|
||||
var formData = new FormData();
|
||||
formData.append('file', file);
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
$.ajax(url, {
|
||||
method: "post",
|
||||
data: formData,
|
||||
|
|
|
@ -243,9 +243,7 @@ var sampleDialog = function () {
|
|||
}
|
||||
});
|
||||
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
var warehouse_id = $('#stock_record09_warehouse_id').val();
|
||||
var rows = $ref_sample_apply_data.api.getSelectedRows();
|
||||
for (var i = 0; i < rows.length; i++) {
|
||||
|
|
|
@ -29,9 +29,7 @@ Vue.createApp({
|
|||
|
||||
action.refresh = function() {
|
||||
var me = this;
|
||||
var loading = layer.msg('部件更新中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading('部件更新中...');
|
||||
$.post(app.url('system/widget/refresh'), function(res) {
|
||||
if (res.status) {
|
||||
grid.remoteData({page: 1});
|
||||
|
|
|
@ -41,8 +41,20 @@ class DepartmentController extends DefaultController
|
|||
'display' => $display['edit'],
|
||||
]];
|
||||
unset($cols['checkbox']);
|
||||
unset($cols['seq_sn']);
|
||||
unset($cols['name']);
|
||||
|
||||
$header['buttons'] = [
|
||||
['name' => '删除','icon' => 'fa-remove','action' => 'delete','display' => $display['delete']],
|
||||
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
|
||||
];
|
||||
$header['cols'] = $cols;
|
||||
$header['tabs'] = User::$tabs;
|
||||
$header['bys'] = Department::$bys;
|
||||
|
||||
//config.cols[0]['hide'] = true;
|
||||
//config.cols[1]['hide'] = true;
|
||||
|
||||
$search = $header['search_form'];
|
||||
$query = $search['query'];
|
||||
|
||||
|
@ -62,21 +74,11 @@ class DepartmentController extends DefaultController
|
|||
->addSelect(DB::raw('(select count(id) from [user] where department_id = department.id) as user_count'));
|
||||
|
||||
$items = $model->get()->toNested('name');
|
||||
$items = Grid::dataFilters($items, $header, function($item) {
|
||||
return Grid::dataFilters($items, $header, function($item) {
|
||||
return $item;
|
||||
});
|
||||
return $this->json($items, true);
|
||||
}
|
||||
|
||||
$header['buttons'] = [
|
||||
['name' => '删除','icon' => 'fa-remove','action' => 'delete','display' => $display['delete']],
|
||||
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
|
||||
];
|
||||
$header['cols'] = $cols;
|
||||
$header['tabs'] = User::$tabs;
|
||||
$header['bys'] = Department::$bys;
|
||||
$header['js'] = Grid::js($header);
|
||||
|
||||
return $this->display([
|
||||
'header' => $header,
|
||||
]);
|
||||
|
|
|
@ -33,6 +33,13 @@ class GroupController 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'] = User::$tabs;
|
||||
|
||||
$search = $header['search_form'];
|
||||
$query = $search['query'];
|
||||
|
||||
|
@ -55,13 +62,6 @@ class GroupController 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'] = User::$tabs;
|
||||
$header['js'] = Grid::js($header);
|
||||
return $this->display([
|
||||
'header' => $header,
|
||||
]);
|
||||
|
|
|
@ -36,6 +36,16 @@ class MessageController extends Controller
|
|||
'display' => 1,
|
||||
]];
|
||||
|
||||
$header['buttons'] = [
|
||||
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => 1],
|
||||
['action' => 'divider'],
|
||||
['name' => '标记已读', 'icon' => '', 'action' => 'read', 'display' => 1],
|
||||
['name' => '标记未读', 'icon' => '', 'action' => 'unread', 'display' => 1],
|
||||
];
|
||||
$header['cols'] = $cols;
|
||||
$header['tabs'] = Message::$tabs;
|
||||
$header['bys'] = Message::$bys;
|
||||
|
||||
$search = $header['search_form'];
|
||||
$query = $search['query'];
|
||||
|
||||
|
@ -65,17 +75,6 @@ class MessageController extends Controller
|
|||
return Grid::dataFilters($rows, $header);
|
||||
}
|
||||
|
||||
$header['buttons'] = [
|
||||
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => 1],
|
||||
['action' => 'divider'],
|
||||
['name' => '标记已读', 'icon' => '', 'action' => 'read', 'display' => 1],
|
||||
['name' => '标记未读', 'icon' => '', 'action' => 'unread', 'display' => 1],
|
||||
];
|
||||
$header['cols'] = $cols;
|
||||
$header['tabs'] = Message::$tabs;
|
||||
$header['bys'] = Message::$bys;
|
||||
$header['js'] = Grid::js($header);
|
||||
|
||||
return $this->display([
|
||||
'header' => $header,
|
||||
]);
|
||||
|
|
|
@ -33,6 +33,13 @@ class PositionController 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'] = User::$tabs;
|
||||
|
||||
$search = $header['search_form'];
|
||||
$query = $search['query'];
|
||||
|
||||
|
@ -55,14 +62,6 @@ class PositionController 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'] = User::$tabs;
|
||||
$header['js'] = Grid::js($header);
|
||||
|
||||
return $this->display([
|
||||
'header' => $header,
|
||||
]);
|
||||
|
|
|
@ -60,6 +60,12 @@ class RoleController extends DefaultController
|
|||
'display' => $this->access['edit'],
|
||||
]];
|
||||
|
||||
$header['buttons'] = [
|
||||
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
|
||||
];
|
||||
$header['cols'] = $cols;
|
||||
$header['tabs'] = User::$tabs;
|
||||
|
||||
$search = $header['search_form'];
|
||||
$query = $search['query'];
|
||||
|
||||
|
@ -83,14 +89,6 @@ class RoleController extends DefaultController
|
|||
return Grid::dataFilters($rows, $header);
|
||||
}
|
||||
|
||||
$header['buttons'] = [
|
||||
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
|
||||
];
|
||||
$header['cols'] = $cols;
|
||||
$header['tabs'] = User::$tabs;
|
||||
$header['bys'] = Role::$bys;
|
||||
$header['js'] = Grid::js($header);
|
||||
|
||||
return $this->display([
|
||||
'header' => $header,
|
||||
]);
|
||||
|
|
|
@ -50,6 +50,24 @@ class UserController 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['left_buttons'] = [
|
||||
['name' => '角色权限', 'color' => 'default', 'action' => 'user_role', 'display' => 1],
|
||||
['name' => '仓库权限', 'color' => 'default', 'action' => 'user_warehouse', 'display' => 1],
|
||||
];
|
||||
|
||||
$header['right_buttons'] = [
|
||||
['name' => '导入', 'color' => 'default', 'icon' => 'fa-mail-reply', 'action' => 'import', 'display' => $this->access['import']],
|
||||
];
|
||||
|
||||
$header['cols'] = $cols;
|
||||
$header['tabs'] = User::$tabs;
|
||||
$header['bys'] = User::$bys;
|
||||
|
||||
$search = $header['search_form'];
|
||||
$query = $search['query'];
|
||||
|
||||
|
@ -74,25 +92,6 @@ class UserController 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['left_buttons'] = [
|
||||
['name' => '角色权限', 'color' => 'default', 'action' => 'user_role', 'display' => 1],
|
||||
['name' => '仓库权限', 'color' => 'default', 'action' => 'user_warehouse', 'display' => 1],
|
||||
];
|
||||
|
||||
$header['right_buttons'] = [
|
||||
['name' => '导入', 'color' => 'default', 'icon' => 'fa-mail-reply', 'action' => 'import', 'display' => $this->access['import']],
|
||||
];
|
||||
|
||||
$header['cols'] = $cols;
|
||||
$header['tabs'] = User::$tabs;
|
||||
$header['bys'] = User::$bys;
|
||||
$header['js'] = Grid::js($header);
|
||||
|
||||
return $this->display([
|
||||
'header' => $header,
|
||||
]);
|
||||
|
|
|
@ -6,17 +6,6 @@ class Role extends BaseModel
|
|||
{
|
||||
protected $table = 'role';
|
||||
|
||||
static public $bys = [
|
||||
'name' => 'by',
|
||||
'items' => [
|
||||
['value' => '', 'name' => '全部'],
|
||||
['value' => 'divider'],
|
||||
['value' => 'day', 'name' => '今日创建'],
|
||||
['value' => 'week', 'name' => '本周创建'],
|
||||
['value' => 'month', 'name' => '本月创建'],
|
||||
]
|
||||
];
|
||||
|
||||
public function scopeDialog($q, $value)
|
||||
{
|
||||
return $q->whereIn('id', $value)
|
||||
|
|
|
@ -22,11 +22,11 @@ class User extends BaseModel implements
|
|||
static public $tabs = [
|
||||
'name' => 'tab',
|
||||
'items' => [
|
||||
['value' => 'user', 'url' => 'user/user/index', 'name' => '用户'],
|
||||
['value' => 'role', 'url' => 'user/role/index', 'name' => '角色'],
|
||||
['value' => 'department', 'url' => 'user/department/index', 'name' => '部门'],
|
||||
['value' => 'group', 'url' => 'user/group/index', 'name' => '用户组'],
|
||||
['value' => 'position', 'url' => 'user/position/index', 'name' => '职位'],
|
||||
['value' => 'user', 'type' => 'a', 'url' => 'user/user/index', 'name' => '用户'],
|
||||
['value' => 'role', 'type' => 'a', 'url' => 'user/role/index', 'name' => '角色'],
|
||||
['value' => 'department', 'type' => 'a', 'url' => 'user/department/index', 'name' => '部门'],
|
||||
['value' => 'group', 'type' => 'a', 'url' => 'user/group/index', 'name' => '用户组'],
|
||||
['value' => 'position', 'type' => 'a', 'url' => 'user/position/index', 'name' => '职位'],
|
||||
]
|
||||
];
|
||||
|
||||
|
|
|
@ -1,26 +1,31 @@
|
|||
{{$header["js"]}}
|
||||
<div class="panel no-border" id="{{$header['table']}}-controller">
|
||||
@include('headers')
|
||||
<div class="gdoo-list-grid">
|
||||
<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,
|
||||
|
@ -37,24 +42,20 @@
|
|||
return data.tree_path;
|
||||
};
|
||||
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
grid.remoteParams = search.advanced.query;
|
||||
grid.columnDefs = config.cols;
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
var action = config.action;
|
||||
// 双击行执行的方法
|
||||
action.rowDoubleClick = action.edit;
|
||||
|
||||
grid.remoteData();
|
||||
var setup = config.setup;
|
||||
|
||||
// 绑定自定义事件
|
||||
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 = grid;
|
||||
|
||||
})(jQuery);
|
||||
});
|
||||
return setup;
|
||||
}
|
||||
}).mount("#{{$header['master_table']}}-page");
|
||||
</script>
|
||||
@include('footers')
|
|
@ -1,52 +1,45 @@
|
|||
{{$header["js"]}}
|
||||
<div class="panel no-border" id="{{$header['table']}}-controller">
|
||||
@include('headers')
|
||||
<div class="gdoo-list-grid">
|
||||
<div id="{{$header['table']}}-grid" 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];
|
||||
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 gridDiv = document.querySelector("#{{$header['table']}}-grid");
|
||||
gridDiv.style.height = getPanelHeight(48);
|
||||
var config = new gdoo.grid(table);
|
||||
|
||||
var grid = config.grid;
|
||||
grid.autoColumnsToFit = true;
|
||||
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) {
|
||||
action.edit(params.data);
|
||||
}
|
||||
};
|
||||
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
var action = config.action;
|
||||
// 双击行执行的方法
|
||||
action.rowDoubleClick = action.edit;
|
||||
|
||||
grid.remoteData({page: 1});
|
||||
var setup = config.setup;
|
||||
|
||||
// 绑定自定义事件
|
||||
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 = grid;
|
||||
|
||||
})(jQuery);
|
||||
});
|
||||
return setup;
|
||||
}
|
||||
}).mount("#{{$header['master_table']}}-page");
|
||||
</script>
|
||||
@include('footers')
|
|
@ -1,18 +1,36 @@
|
|||
{{$header["js"]}}
|
||||
<div class="panel no-border" id="{{$header['master_table']}}-controller">
|
||||
@include('headers')
|
||||
<div class="gdoo-list-grid">
|
||||
<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>
|
||||
<script>
|
||||
(function($) {
|
||||
var table = '{{$header["master_table"]}}';
|
||||
var config = gdoo.grids[table];
|
||||
var action = config.action;
|
||||
var search = config.search;
|
||||
|
||||
var statusAction = function(type) {
|
||||
</div>
|
||||
|
||||
<script>
|
||||
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;
|
||||
// 双击行执行的方法
|
||||
action.rowDoubleClick = action.show;
|
||||
|
||||
var status = function(type) {
|
||||
var grid = config.grid;
|
||||
var selections = grid.jqGrid('getSelections');
|
||||
var ids = [];
|
||||
|
@ -23,7 +41,7 @@
|
|||
$.post('{{url("status")}}', {type: type, id: ids}, function(res) {
|
||||
if(res.status) {
|
||||
toastrSuccess(res.data);
|
||||
grid.trigger('reloadGrid');
|
||||
grid.remoteData({page: 1});
|
||||
} else {
|
||||
toastrError(res.data);
|
||||
}
|
||||
|
@ -42,39 +60,16 @@
|
|||
status('unread');
|
||||
};
|
||||
|
||||
var grid = new agGridOptions();
|
||||
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.master_id > 0) {
|
||||
action.show(params.data);
|
||||
}
|
||||
};
|
||||
var setup = config.setup;
|
||||
|
||||
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
|
||||
gridDiv.style.height = getPanelHeight(48);
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
|
||||
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(136);
|
||||
// 初始化数据
|
||||
grid.remoteData({page: 1}, function(res) {
|
||||
config.init(res);
|
||||
});
|
||||
|
||||
config.grid = grid;
|
||||
|
||||
})(jQuery);
|
||||
});
|
||||
return setup;
|
||||
}
|
||||
}).mount("#{{$header['master_table']}}-page");
|
||||
</script>
|
||||
@include('footers')
|
|
@ -1,52 +1,45 @@
|
|||
{{$header["js"]}}
|
||||
<div class="panel no-border" id="{{$header['table']}}-controller">
|
||||
@include('headers')
|
||||
<div class="gdoo-list-grid">
|
||||
<div id="{{$header['table']}}-grid" 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];
|
||||
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 gridDiv = document.querySelector("#{{$header['table']}}-grid");
|
||||
gridDiv.style.height = getPanelHeight(48);
|
||||
var config = new gdoo.grid(table);
|
||||
|
||||
var grid = config.grid;
|
||||
grid.autoColumnsToFit = true;
|
||||
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) {
|
||||
action.edit(params.data);
|
||||
}
|
||||
};
|
||||
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
var action = config.action;
|
||||
// 双击行执行的方法
|
||||
action.rowDoubleClick = action.edit;
|
||||
|
||||
grid.remoteData({page: 1});
|
||||
var setup = config.setup;
|
||||
|
||||
// 绑定自定义事件
|
||||
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 = grid;
|
||||
|
||||
})(jQuery);
|
||||
});
|
||||
return setup;
|
||||
}
|
||||
}).mount("#{{$header['master_table']}}-page");
|
||||
</script>
|
||||
@include('footers')
|
|
@ -1,43 +1,49 @@
|
|||
{{$header["js"]}}
|
||||
<div class="panel no-border" id="{{$header['table']}}-controller">
|
||||
@include('headers')
|
||||
<div class="gdoo-list-grid">
|
||||
<div id="{{$header['table']}}-grid" 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;
|
||||
// 双击行执行的方法
|
||||
action.rowDoubleClick = action.edit;
|
||||
|
||||
action.config = function(data) {
|
||||
top.addTab('user/role/config?role_id=' + data.master_id, 'role_config', '权限配置');
|
||||
}
|
||||
|
||||
var grid = new agGridOptions();
|
||||
var gridDiv = document.querySelector("#{{$header['table']}}-grid");
|
||||
gridDiv.style.height = getPanelHeight(48);
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
grid.remoteParams = search.advanced.query;
|
||||
grid.columnDefs = config.cols;
|
||||
var setup = config.setup;
|
||||
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
|
||||
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(136);
|
||||
// 初始化数据
|
||||
grid.remoteData({page: 1}, function(res) {
|
||||
config.init(res);
|
||||
});
|
||||
|
||||
config.grid = grid;
|
||||
|
||||
})(jQuery);
|
||||
});
|
||||
return setup;
|
||||
}
|
||||
}).mount("#{{$header['master_table']}}-page");
|
||||
</script>
|
||||
@include('footers')
|
|
@ -1,18 +1,36 @@
|
|||
{{$header["js"]}}
|
||||
<div class="panel no-border" id="{{$header['table']}}-controller">
|
||||
@include('headers')
|
||||
<div class="gdoo-list-grid">
|
||||
<div id="{{$header['table']}}-grid" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
(function ($) {
|
||||
var table = '{{$header["table"]}}';
|
||||
var config = gdoo.grids[table];
|
||||
var action = config.action;
|
||||
var search = config.search;
|
||||
<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>
|
||||
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;
|
||||
// 详情页打开方式
|
||||
action.dialogType = 'layer';
|
||||
// 双击行执行的方法
|
||||
action.rowDoubleClick = action.show;
|
||||
|
||||
action.user_warehouse = function(data) {
|
||||
var me = this;
|
||||
|
@ -30,9 +48,7 @@
|
|||
var me = this;
|
||||
var form = gdoo.dialogs['user_warehouse'];
|
||||
var selectedRows = form.api.getSelectedRows();
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
$.post(app.url('stock/warehouse/permission', {user_id: user_id}), {rows: selectedRows}, function(res) {
|
||||
if (res.status) {
|
||||
toastrSuccess(res.data);
|
||||
|
@ -66,9 +82,7 @@
|
|||
var me = this;
|
||||
var form = gdoo.dialogs['user_role'];
|
||||
var selectedRows = form.api.getSelectedRows();
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
$.post(app.url('user/role/permission', {user_id: user_id}), {rows: selectedRows}, function(res) {
|
||||
if (res.status) {
|
||||
toastrSuccess(res.data);
|
||||
|
@ -86,37 +100,16 @@
|
|||
}
|
||||
}
|
||||
|
||||
var grid = new agGridOptions();
|
||||
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.master_id > 0) {
|
||||
action.show(params.data);
|
||||
}
|
||||
};
|
||||
var setup = config.setup;
|
||||
|
||||
var gridDiv = document.querySelector("#{{$header['table']}}-grid");
|
||||
gridDiv.style.height = getPanelHeight(48);
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
|
||||
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(136);
|
||||
// 初始化数据
|
||||
grid.remoteData({page: 1}, function(res) {
|
||||
config.init(res);
|
||||
});
|
||||
config.grid = grid;
|
||||
})(jQuery);
|
||||
});
|
||||
return setup;
|
||||
}
|
||||
}).mount("#{{$header['master_table']}}-page");
|
||||
</script>
|
||||
@include('footers')
|
|
@ -84,7 +84,9 @@
|
|||
var form = layui.form;
|
||||
form.on('submit(sbm)', function () {
|
||||
var data = $('#myform').serialize();
|
||||
var loading = showLoading();
|
||||
$.post('{{url()}}', data, function (res) {
|
||||
layer.close(loading);
|
||||
if (res.status == '1') {
|
||||
toastrSuccess(res.data);
|
||||
}
|
||||
|
|
|
@ -367,11 +367,11 @@ $(function () {
|
|||
}
|
||||
});
|
||||
var data = (data == '') ? '' : data;
|
||||
var load = layer.load(2);
|
||||
$.post('{{url("wechat/mp/menuedit")}}', {data: data}, function (res) {
|
||||
layer.close(load);
|
||||
var loading = showLoading();
|
||||
$.post('{{url()}}', {data: data}, function (res) {
|
||||
layer.close(loading);
|
||||
if (res.status) {
|
||||
layer.msg(res.data, {time: 1000}, function () {});
|
||||
layer.msg(res.data, {time: 1000});
|
||||
} else {
|
||||
layer.alert(res.data);
|
||||
}
|
||||
|
|
|
@ -1,145 +0,0 @@
|
|||
<script src="{{$asset_url}}/vendor/zclip/jquery.zclip.min.js" type="text/javascript"></script>
|
||||
<div class="panel">
|
||||
|
||||
@include('tabs', ['tabKey' => 'mp'])
|
||||
|
||||
<div class="panel-heading tabs-box">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="@if($type == 'list') active @endif">
|
||||
<a class="text-sm" href="{{url('wechat/mp/qrcode',['type'=>'list'])}}">二维码列表</a>
|
||||
</li>
|
||||
<li class="@if($type == 'statistics') active @endif">
|
||||
<a class="text-sm" href="{{url('wechat/mp/qrcode',['type'=>'statistics'])}}">二维码扫描统计</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="wrapper-sm">
|
||||
<a href="{{url('qrcodeadd')}}" id="addkw" class="btn btn-info btn-sm">增加二维码</a>
|
||||
</div>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover m-b-none b-t table-hover">
|
||||
@if($type == 'list')
|
||||
<tr>
|
||||
<th>二维码</th>
|
||||
<th>场景名称</th>
|
||||
<th>对应关键字</th>
|
||||
<th>类型</th>
|
||||
<th>到期时间</th>
|
||||
<th>链接</th>
|
||||
<th>操作</th>
|
||||
</tr>
|
||||
@foreach($data as $vo)
|
||||
<tr>
|
||||
<td class="text-center">
|
||||
<div style="padding: 1px; border: #e6e6e6 solid 1px; width:50px; float: left; ">
|
||||
<img class="form_logo" src="{{$vo['qrcode_url']}}" width="50" height="50">
|
||||
</div>
|
||||
</td>
|
||||
<td class="text-center">{{$vo['scene_name']}}</td>
|
||||
<td class="text-center">{{$vo['keyword']}}</td>
|
||||
<td class="text-center">@if($vo['qr_type'] == 0) 临时 @else 永久 @endif
|
||||
</td>
|
||||
<td class="text-center">@if($vo['qr_type'] == 0) @datetime($vo['create_time']) @else 长期有效 @endif
|
||||
</td>
|
||||
<td class="text-center">
|
||||
{{$vo['url']}}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<a class="option" href="javascript:;" onclick="delQrcode('{{$vo['id']}}')">删除</a>
|
||||
<a target="_blank" href="{{$vo['qrcode_url']}}" class="option">查看</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
@if($type == 'statistics')
|
||||
<tr>
|
||||
<th>二维码</th>
|
||||
<th>场景名称</th>
|
||||
<th>触发关键字</th>
|
||||
<th>类型</th>
|
||||
<th>被扫总数</th>
|
||||
<th>粉丝增加</th>
|
||||
<th>操作</th>
|
||||
</tr>
|
||||
@foreach($data as $vo)
|
||||
<tr>
|
||||
<td>
|
||||
<div style="padding: 1px; border: #e6e6e6 solid 1px; width:50px; float: left; ">
|
||||
<img class="form_logo" src="{{$vo['qrcode_url']}}" width="50" height="50">
|
||||
</div>
|
||||
</td>
|
||||
<td>{{$vo['scene_name']}}</td>
|
||||
<td>{{$vo['keyword']}}</td>
|
||||
<td>@if($vo['qr_type'] == 0) 临时 @else 永久 @endif
|
||||
</td>
|
||||
<td>{{$vo['scan_count']}}</td>
|
||||
<td>{{$vo['gz_count']}}</td>
|
||||
<td>
|
||||
<a href="{{url('qrcode',['scene_id'=>$vo['scene_id'],'type'=>'friend'])}}" class="rha-bt-a">查看增加粉丝</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
|
||||
@endif
|
||||
|
||||
@if($type == 'friend')
|
||||
<tr>
|
||||
<th>场景 ID</th>
|
||||
<th>呢称</th>
|
||||
<th>头像</th>
|
||||
<th>扫码次数</th>
|
||||
<th>扫码时间</th>
|
||||
</tr>
|
||||
@foreach($data as $vo)
|
||||
<tr>
|
||||
<td>{$vo['scene_id']}</td>
|
||||
<td>{$vo['nickname']}</td>
|
||||
<td>
|
||||
<img height="38" width="38" style="border-radius: 3px;" src="{{$vo['headimgurl']}}">
|
||||
</td>
|
||||
<td>{$vo['scan_count']}</td>
|
||||
<td>{{date('Y-m-d H:i', $vo['create_time'])}}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<footer class="panel-footer">
|
||||
<div class="row">
|
||||
<div class="col-sm-1 hidden-xs">
|
||||
</div>
|
||||
<div class="col-sm-11 text-right text-center-xs">
|
||||
{{$data->render()}}
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function delQrcode(id) {
|
||||
layui.use('layer', function () {
|
||||
var layer = layui.layer;
|
||||
layer.confirm('你确定需要删除吗?', {
|
||||
btn: ['是', '不'] //按钮
|
||||
}, function () {
|
||||
$.post("{{url('wechat/mp/delQrcode')}}", { 'id': id }, function (res) {
|
||||
if (res.status == 1) {
|
||||
layer.alert(res.msg, function (index) {
|
||||
window.location.reload();
|
||||
layer.close(index);
|
||||
})
|
||||
|
||||
} else {
|
||||
layer.alert(res.msg)
|
||||
}
|
||||
})
|
||||
}, function () {
|
||||
|
||||
});
|
||||
});
|
||||
}
|
||||
</script>
|
|
@ -1,79 +0,0 @@
|
|||
<form class="layui-form" action="" style="padding-right:10px; ">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">场景名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="name" required lay-verify="required" placeholder="请输入名称" autocomplete="off"
|
||||
class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">关联关键词</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="keyword" required lay-verify="required" placeholder="请输入关键词" autocomplete="off"
|
||||
class="layui-input">
|
||||
<p class="tip_for_p">扫描此二维码的同时也会触发此关键词。</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="qrcodes" class="layui-form-item">
|
||||
<label class="layui-form-label">类型</label>
|
||||
<div id="replyType" class="layui-input-block">
|
||||
<input type="radio" checked name="qr_type" value="2" title="永久">
|
||||
<input type="radio" name="qr_type" value="0" title="临时">
|
||||
<p class="tip_for_p">注:目前腾讯规定了永久二维码只能生成10万个,请悠着点使用永久类型二维码。</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="qrcode">
|
||||
<div class="qr_2 layui-form-item layui-show layui-tab-item">
|
||||
<label class="layui-form-label">场景值ID</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="scene_str" placeholder="请输入场景值字符串" autocomplete="off"
|
||||
class="layui-input">
|
||||
<p class="tip_for_p">场景值ID(字符串形式的ID),字符串类型,长度限制为1到64。</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="qr_0 layui-form-item layui-tab-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">有效时间/秒</label>
|
||||
<div class="layui-input-inline">
|
||||
<input name="time" required lay-verify="required" autocomplete="off" value="2592000" class="layui-input" type="tel">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">临时二维码过期时间, 最大为30天(2592000秒)</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<script>
|
||||
$(function () {
|
||||
$("#qrcodes").click(function () {
|
||||
var class_a = 'qr_' + $("input[name='qr_type']:checked").val();
|
||||
$('#qrcode div').removeClass('layui-show')
|
||||
$('.' + class_a).addClass('layui-show')
|
||||
});
|
||||
})
|
||||
layui.use('form', function () {
|
||||
var form = layui.form;
|
||||
|
||||
//监听提交
|
||||
form.on('submit(formDemo)', function (data) {
|
||||
// layer.msg(JSON.stringify(data.field));
|
||||
$.post('',data.field,function (res) {
|
||||
if (res.status=='0') {
|
||||
layer.msg(res.msg);
|
||||
}
|
||||
if (res.status=='1') {
|
||||
layer.msg(res.msg);
|
||||
window.location.href = res.url;
|
||||
}
|
||||
})
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -1,59 +0,0 @@
|
|||
<div class="panel">
|
||||
|
||||
@include('tabs', ['tabKey' => 'mp'])
|
||||
|
||||
<div class="panel-body">
|
||||
|
||||
<form class="form-horizontal" id="myform" method="POST" action="{{url()}}">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">开始ID</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" name="start_id" value="{{(int)$qrcode['scene_id'] + 1}}" required lay-verify="required" placeholder="请输入开始ID"
|
||||
autocomplete="off" class="form-control input-sm">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">结束ID</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" name="end_id" value="{{(int)$qrcode['scene_id'] + $max}}" required lay-verify="required" placeholder="请输入结束ID"
|
||||
autocomplete="off" class="form-control input-sm">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group m-b-none">
|
||||
<label class="control-label col-sm-2"></label>
|
||||
<div class="col-sm-6">
|
||||
<button class="btn btn-success" lay-submit lay-filter="formDemo">保存</button>
|
||||
<button type="reset" class="btn btn-default">重置</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(function () {
|
||||
layui.use('form', function () {
|
||||
var form = layui.form;
|
||||
// 监听提交
|
||||
form.on('submit(formDemo)', function () {
|
||||
var data = $('#myform').serialize();
|
||||
var load = layer.load(2);
|
||||
$.post('{{url()}}', data, function (res) {
|
||||
layer.close(load);
|
||||
if (res.status == '0') {
|
||||
layer.msg(res.msg);
|
||||
}
|
||||
if (res.status == '1') {
|
||||
layer.msg(res.msg);
|
||||
window.location.href = res.url;
|
||||
}
|
||||
})
|
||||
return false;
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -1,94 +0,0 @@
|
|||
<div class="panel">
|
||||
|
||||
@include('tabs', ['tabKey' => 'mp'])
|
||||
<!--
|
||||
<div class="panel-heading tabs-box">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="@if($type == 'list') active @endif">
|
||||
<a class="text-sm" href="{{url('wechat/mp/qrcode',['type'=>'list'])}}">二维码列表</a>
|
||||
</li>
|
||||
<li class="@if($type == 'statistics') active @endif">
|
||||
<a class="text-sm" href="{{url('wechat/mp/qrcode',['type'=>'statistics'])}}">二维码扫描统计</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
-->
|
||||
<div class="wrapper">
|
||||
<form id="search-form" class="form-inline" name="mysearch" action="{{url()}}" method="get">
|
||||
<div class="pull-right">
|
||||
@if(isset($access['showdelete']))
|
||||
<a class="btn btn-sm btn-danger" href="javascript:optionDelete('#myform','{{url('showdelete')}}');">
|
||||
<i class="icon icon-remove"></i> 删除</a>
|
||||
@endif
|
||||
</div>
|
||||
@include('searchForm')
|
||||
</form>
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
$('#search-form').searchForm({
|
||||
data: {{ json_encode($search['forms'])}},
|
||||
init: function (e) {
|
||||
var self = this;
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover m-b-none table-hover">
|
||||
<tr>
|
||||
<th align="center">
|
||||
<input type="checkbox" class="select-all">
|
||||
</th>
|
||||
<th>场景ID</th>
|
||||
<th>类型</th>
|
||||
<th>到期时间</th>
|
||||
<th>二维码链接</th>
|
||||
<th>ID</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
@foreach($rows as $vo)
|
||||
<tr>
|
||||
<td align="center">
|
||||
<input type="checkbox" class="select-row" value="{{$vo['id']}}" name="id[]">
|
||||
</td>
|
||||
<td class="text-center">{{$vo['scene_id']}}</td>
|
||||
<td class="text-center">
|
||||
@if($vo['qr_type'] == 0)
|
||||
临时
|
||||
@else
|
||||
永久
|
||||
@endif
|
||||
</td>
|
||||
<td class="text-center">
|
||||
@if($vo['qr_type'] == 0)
|
||||
@datetime($vo['created_at'] + $vo['expire'])
|
||||
@else
|
||||
长期有效
|
||||
@endif
|
||||
</td>
|
||||
<td class="text-center">
|
||||
{{$vo['url']}}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
{{$vo['id']}}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<a target="_blank" href="{{$vo['qrcode_url']}}" class="option">查看</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<footer class="panel-footer">
|
||||
<div class="row">
|
||||
<div class="col-sm-1 hidden-xs">
|
||||
</div>
|
||||
<div class="col-sm-11 text-right text-center-xs">
|
||||
{{$rows->render()}}
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
|
@ -145,6 +145,13 @@ class BillController extends DefaultController
|
|||
'filter' => false,
|
||||
],
|
||||
];
|
||||
|
||||
$header['buttons'] = [
|
||||
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
|
||||
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
|
||||
];
|
||||
|
||||
$header['search_form'] = $search;
|
||||
$query = $search['query'];
|
||||
|
||||
if (Request::method() == 'POST') {
|
||||
|
@ -171,18 +178,11 @@ class BillController extends DefaultController
|
|||
$row['sn_rule'] = $row['sn_prefix'].$row['sn_rule'].($row['sn_length'] > 0 ? $row['sn_length'] : '');
|
||||
return $row;
|
||||
});
|
||||
return $rows;
|
||||
$ret = $rows->toArray();
|
||||
$ret['header'] = Grid::getColumns($header);
|
||||
return $ret;
|
||||
}
|
||||
|
||||
$header['buttons'] = [
|
||||
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
|
||||
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
|
||||
];
|
||||
|
||||
$header['search_form'] = $search;
|
||||
$header['js'] = Grid::js($header);
|
||||
|
||||
// 配置权限
|
||||
return $this->display([
|
||||
'header' => $header,
|
||||
]);
|
||||
|
|
|
@ -116,6 +116,13 @@ class CategoryController extends DefaultController
|
|||
'filter' => false,
|
||||
],
|
||||
];
|
||||
|
||||
$header['buttons'] = [
|
||||
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
|
||||
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
|
||||
];
|
||||
|
||||
$header['search_form'] = $search;
|
||||
$query = $search['query'];
|
||||
|
||||
if (Request::method() == 'POST') {
|
||||
|
@ -135,18 +142,11 @@ class CategoryController extends DefaultController
|
|||
$row['updated_dt'] = format_datetime($row['updated_at']);
|
||||
return $row;
|
||||
});
|
||||
return $rows;
|
||||
$ret = $rows->toArray();
|
||||
$ret['header'] = Grid::getColumns($header);
|
||||
return $ret;
|
||||
}
|
||||
|
||||
$header['buttons'] = [
|
||||
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
|
||||
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
|
||||
];
|
||||
|
||||
$header['search_form'] = $search;
|
||||
$header['js'] = Grid::js($header);
|
||||
|
||||
// 配置权限
|
||||
return $this->display([
|
||||
'header' => $header,
|
||||
]);
|
||||
|
|
|
@ -1,19 +1,34 @@
|
|||
{{$header["js"]}}
|
||||
<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="panel no-border" id="{{$header['master_table']}}-controller">
|
||||
@include('headers')
|
||||
<div class='gdoo-list-grid'>
|
||||
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div>
|
||||
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
(function ($) {
|
||||
var table = '{{$header["master_table"]}}';
|
||||
var config = gdoo.grids[table];
|
||||
var action = config.action;
|
||||
var search = config.search;
|
||||
|
||||
action.dialogType = 'dialog';
|
||||
</div>
|
||||
|
||||
<script>
|
||||
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;
|
||||
// 双击行执行的方法
|
||||
action.rowDoubleClick = action.edit;
|
||||
|
||||
action.view = function(data) {
|
||||
var me = this;
|
||||
|
@ -51,39 +66,16 @@
|
|||
});
|
||||
}
|
||||
|
||||
var options = new agGridOptions();
|
||||
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
|
||||
gridDiv.style.height = getPanelHeight(48);
|
||||
var setup = config.setup;
|
||||
|
||||
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.master_id > 0) {
|
||||
action.edit(params.data);
|
||||
}
|
||||
};
|
||||
|
||||
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);
|
||||
|
||||
});
|
||||
return setup;
|
||||
}
|
||||
}).mount("#{{$header['master_table']}}-page");
|
||||
</script>
|
||||
@include('footers')
|
|
@ -1,53 +1,45 @@
|
|||
{{$header["js"]}}
|
||||
<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="panel no-border" id="{{$header['master_table']}}-controller">
|
||||
@include('headers')
|
||||
<div class='gdoo-list-grid'>
|
||||
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div>
|
||||
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
(function ($) {
|
||||
Vue.createApp({
|
||||
components: {
|
||||
gdooGridHeader,
|
||||
},
|
||||
setup(props, ctx) {
|
||||
var table = '{{$header["master_table"]}}';
|
||||
var config = gdoo.grids[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;
|
||||
// 双击行执行的方法
|
||||
action.rowDoubleClick = action.edit;
|
||||
|
||||
action.dialogType = 'dialog';
|
||||
var setup = config.setup;
|
||||
|
||||
var options = new agGridOptions();
|
||||
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
|
||||
gridDiv.style.height = getPanelHeight(48);
|
||||
|
||||
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.master_id > 0) {
|
||||
action.edit(params.data);
|
||||
}
|
||||
};
|
||||
|
||||
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);
|
||||
|
||||
});
|
||||
return setup;
|
||||
}
|
||||
}).mount("#{{$header['master_table']}}-page");
|
||||
</script>
|
||||
@include('footers')
|
|
@ -1883,12 +1883,6 @@ select.input-sm, select.form-group-sm .form-control {
|
|||
.gdoo-list-page {
|
||||
display: none;
|
||||
}
|
||||
.gdoo-list-page .search-inline-form .form-group {
|
||||
margin-left: 4px;
|
||||
}
|
||||
.gdoo-list-page .btn-group {
|
||||
margin-left: 4px;
|
||||
}
|
||||
.gdoo-list {
|
||||
border-color: transparent;
|
||||
border-width: 0;
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -98,9 +98,7 @@
|
|||
if(gets === false) {
|
||||
return;
|
||||
}
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
$.post(app.url(uri + '/flowAudit'), query + '&' + $.param(gets), function (res) {
|
||||
if (res.status) {
|
||||
reloadGrid(table);
|
||||
|
@ -126,9 +124,7 @@
|
|||
return;
|
||||
}
|
||||
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
|
||||
var event = gdoo.event.get('grid.' + table);
|
||||
|
||||
|
@ -172,9 +168,9 @@
|
|||
if(gets === false) {
|
||||
return;
|
||||
}
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
|
||||
var loading = showLoading();
|
||||
|
||||
$.post(app.url(uri + '/store'), query + '&' + $.param(gets), function (res) {
|
||||
if (res.status) {
|
||||
reloadGrid(table);
|
||||
|
@ -192,9 +188,9 @@
|
|||
}, read: function (table) {
|
||||
var uri = $('#' + table).find('#master_uri').val();
|
||||
var query = $('#' + table).serialize();
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1
|
||||
});
|
||||
|
||||
var loading = showLoading();
|
||||
|
||||
$.post(app.url(uri + '/flowRead'), query, function (res) {
|
||||
if (res.status) {
|
||||
reloadGrid(table);
|
||||
|
@ -212,9 +208,9 @@
|
|||
if (btn == true) {
|
||||
var uri = $('#' + table).find('#master_uri').val();
|
||||
var query = $('#' + table).serialize();
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1
|
||||
});
|
||||
|
||||
var loading = showLoading();
|
||||
|
||||
$.post(app.url(uri + '/flowReset'), query, function (res) {
|
||||
if (res.status) {
|
||||
location.reload();
|
||||
|
@ -280,11 +276,10 @@
|
|||
text: "提交",
|
||||
'class': "btn-info",
|
||||
click: function () {
|
||||
var me = this;
|
||||
var query = $('#myrecall').serialize();
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
|
||||
var loading = showLoading();
|
||||
|
||||
$.post(app.url(uri + '/recall'), query, function (res) {
|
||||
if (res.status) {
|
||||
reloadGrid(table);
|
||||
|
@ -319,11 +314,10 @@
|
|||
text: "提交",
|
||||
'class': "btn-info",
|
||||
click: function () {
|
||||
var me = this;
|
||||
var query = $('#myabort').serialize();
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
|
||||
var loading = showLoading();
|
||||
|
||||
$.post(app.url(uri + '/abort'), query, function (res) {
|
||||
if (res.status) {
|
||||
reloadGrid(table);
|
||||
|
@ -346,9 +340,7 @@
|
|||
var uri = $('#' + table).find('#master_uri').val();
|
||||
$.messager.confirm('操作警告', '确定要审核单据吗', function(btn) {
|
||||
if (btn == true) {
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1
|
||||
});
|
||||
var loading = showLoading();
|
||||
$.post(app.url(uri + '/audit'), {key: key}, function (res) {
|
||||
if (res.status) {
|
||||
reloadGrid(table);
|
||||
|
@ -370,9 +362,7 @@
|
|||
var uri = $('#' + table).find('#master_uri').val();
|
||||
$.messager.confirm('操作警告', '确定要弃审单据吗', function(btn) {
|
||||
if (btn == true) {
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 30
|
||||
});
|
||||
var loading = showLoading();
|
||||
$.post(app.url(uri + '/abort'), {key: key}, function (res) {
|
||||
if (res.status) {
|
||||
reloadGrid(table);
|
||||
|
@ -459,9 +449,7 @@
|
|||
var id = rows[0].id;
|
||||
top.$.messager.confirm('操作提醒', '是否要关闭选中的行数据?', function(btn) {
|
||||
if (btn == true) {
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
$.post(app.url(me.bill_url + '/closeRow'), {table: table,id: id}, function(res) {
|
||||
if (res.status) {
|
||||
toastrSuccess(res.data);
|
||||
|
@ -490,9 +478,7 @@
|
|||
if (ids.length > 0) {
|
||||
top.$.messager.confirm('操作提醒', '是否要关闭所有行数据?', function(btn) {
|
||||
if (btn == true) {
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
$.post(app.url(me.bill_url + '/closeAllRow'), {table: table,ids: ids}, function(res) {
|
||||
if (res.status) {
|
||||
toastrSuccess(res.data);
|
||||
|
@ -559,9 +545,7 @@
|
|||
onSubmit: function() {
|
||||
var fd = new FormData();
|
||||
fd.append("file", $('#import_file')[0].files[0]);
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
$.ajax({
|
||||
url: app.url(me.bill_url + '/import'),
|
||||
type: "POST",
|
||||
|
@ -598,9 +582,7 @@
|
|||
var content = ids.length + '个' + me.name + '将被删除?';
|
||||
top.$.messager.confirm('删除' + me.name, content, function(btn) {
|
||||
if (btn == true) {
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
$.post(app.url(me.bill_url + '/delete'), {id: ids}, function(res) {
|
||||
if (res.status) {
|
||||
toastrSuccess(res.data);
|
||||
|
|
|
@ -554,9 +554,7 @@ function formDialog(options)
|
|||
return;
|
||||
}
|
||||
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
|
||||
$.post(action, query + '&' + $.param(gets), function(res) {
|
||||
if (res.status) {
|
||||
|
@ -849,9 +847,7 @@ function ajaxSubmit(table, callback) {
|
|||
|
||||
data = data +'&'+ $.param(rows);
|
||||
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
var loading = showLoading();
|
||||
|
||||
$.post(url, data, function(res) {
|
||||
if (typeof callback === 'function') {
|
||||
|
@ -900,6 +896,18 @@ function getIframeDocument(iframe_id) {
|
|||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据加载提示
|
||||
*/
|
||||
function showLoading(msg) {
|
||||
var loading = layer.msg(msg || '数据提交中...', {
|
||||
icon: 16,
|
||||
shade: 0.1,
|
||||
time: 1000 * 120
|
||||
});
|
||||
return loading;
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化文件大小
|
||||
* @param {*} fileSize
|
||||
|
|
|
@ -462,7 +462,6 @@
|
|||
});
|
||||
content.html(iframe);
|
||||
|
||||
//layer.msg('页面加载中,请稍候...', {icon: 2,shade: 0, time: 1000 * 120});
|
||||
layer.load(2);
|
||||
iframe.load(function() {
|
||||
layer.closeAll('loading');
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"/assets/dist/bundle.min.js": "/assets/dist/bundle.min.js?id=b46cb4305a863944f84c",
|
||||
"/assets/dist/bundle.min.js": "/assets/dist/bundle.min.js?id=91de744571d14310c12f",
|
||||
"/assets/dist/vendor.min.js": "/assets/dist/vendor.min.js?id=29c59d13160c6607b4af",
|
||||
"/assets/dist/gdoo.min.js": "/assets/dist/gdoo.min.js?id=a3923df9d79f567f2cf9",
|
||||
"/assets/dist/index.min.js": "/assets/dist/index.min.js?id=9f7be548e55d993be518",
|
||||
"/assets/dist/gdoo.min.js": "/assets/dist/gdoo.min.js?id=41c03fad45a93b2c4a16",
|
||||
"/assets/dist/index.min.js": "/assets/dist/index.min.js?id=e68deaa21814b7ec0d1c",
|
||||
"/assets/dist/vendor.min.css": "/assets/dist/vendor.min.css?id=99a58728a17257718260",
|
||||
"/assets/dist/gdoo.min.css": "/assets/dist/gdoo.min.css?id=3817f9870ed3748aba46",
|
||||
"/assets/dist/gdoo.min.css": "/assets/dist/gdoo.min.css?id=644acfd8367a5dd5a096",
|
||||
"/assets/dist/index.min.css": "/assets/dist/index.min.css?id=ccde8d73c536940b91d9"
|
||||
}
|
||||
|
|
|
@ -12,15 +12,15 @@
|
|||
<div class="wrapper-xs">
|
||||
<div class="pull-right">
|
||||
<template v-for="button in header.right_buttons">
|
||||
<a v-if="button.display" @click="linkBtn(button)" :class="'btn btn-sm btn-' + button.color"><i :class="'fa ' + button.icon"></i> {{button.name}}</a>
|
||||
<a v-if="button.display" @click="linkBtn(button)" :class="'btn btn-sm btn-r-line btn-' + button.color"><i :class="'fa ' + button.icon"></i> {{button.name}}</a>
|
||||
</template>
|
||||
|
||||
<a v-if="header.trash_btn" @click="actBtn('trash')" :class="'btn btn-sm btn-default ' + (header.search_form.query.by == 'trash' ? 'active' : '')"><i class="fa fa-trash"></i>回收站 ({{header.trash_count}})</a>
|
||||
<a v-if="header.trash_btn" @click="actBtn('trash')" :class="'btn btn-sm btn-r-line btn-default ' + (header.search_form.query.by == 'trash' ? 'active' : '')"><i class="fa fa-trash"></i>回收站 ({{header.trash_count}})</a>
|
||||
</div>
|
||||
|
||||
<a v-if="header.access.create && header.create_btn" @click="actBtn('create')" class="btn btn-sm btn-success hinted" :title="'新建' + header.name"><i class="icon icon-plus"></i> 新建</a>
|
||||
<a v-if="header.access.create && header.create_btn" @click="actBtn('create')" class="btn btn-sm btn-l-line btn-success hinted" :title="'新建' + header.name"><i class="icon icon-plus"></i> 新建</a>
|
||||
|
||||
<div class="btn-group">
|
||||
<div class="btn-group btn-l-line">
|
||||
<a class="btn btn-info btn-sm" data-toggle="dropdown" aria-expanded="false"><i class="fa fa-bars"></i> 操作 <span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<template v-for="button in header.center_buttons">
|
||||
|
@ -31,14 +31,14 @@
|
|||
</div>
|
||||
|
||||
<span class="visible-xs">
|
||||
<div class="btn-group">
|
||||
<div class="btn-group btn-l-line">
|
||||
<a @click="actBtn('filter')" class="btn btn-sm btn-default"><i class="fa fa-search"></i> 搜索</a>
|
||||
</div>
|
||||
</span>
|
||||
|
||||
<!-- 简单搜索表单 -->
|
||||
<form v-if="header.search_form.simple_search" :id="header.table + '-search-form'" class="search-inline-form form-inline hidden-xs" name="mysearch" method="get">
|
||||
<div class="form-group search-group">
|
||||
<div class="form-group search-group btn-l-line">
|
||||
<select name="field_0" id="search-field-0" class="form-control input-sm">
|
||||
<option data-type="empty" value="">筛选条件</option>
|
||||
<template v-for="column in header.search_form.columns">
|
||||
|
@ -47,13 +47,13 @@
|
|||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="display:none;">
|
||||
<div class="form-group btn-l-line" style="display:none;">
|
||||
<select name="condition_0" id="search-condition-0" class="form-control input-sm"></select>
|
||||
</div>
|
||||
|
||||
<div class="form-group" id="search-value-0"></div>
|
||||
<div class="form-group btn-l-line" id="search-value-0"></div>
|
||||
|
||||
<div class="btn-group">
|
||||
<div class="btn-group btn-l-line">
|
||||
<button id="search-submit" type="submit" class="btn btn-sm btn-default">
|
||||
<i class="fa fa-search"></i> 搜索</button>
|
||||
<button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown">
|
||||
|
@ -65,9 +65,9 @@
|
|||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
<a v-else class="btn btn-sm btn-default" @click="actBtn('filter')"><i class="fa fa-search"></i> 筛选</a>
|
||||
<a v-else class="btn btn-sm btn-l-line btn-default" @click="actBtn('filter')"><i class="fa fa-search"></i> 筛选</a>
|
||||
|
||||
<div v-if="header.bys.items.length" class="btn-group" role="group">
|
||||
<div v-if="header.bys.items.length" class="btn-group btn-l-line" role="group">
|
||||
<button type="button" class="btn btn-sm btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="fa fa-filter"></span> {{header.by_title}}
|
||||
<span class="caret"></span>
|
||||
|
@ -81,7 +81,7 @@
|
|||
</div>
|
||||
|
||||
<template v-for="button in header.left_buttons">
|
||||
<a v-if="button.display == 1" @click="linkBtn(button)" :class="'btn btn-sm btn-' + button.color"><i :class="'fa ' + button.icon"></i> {{button.name}}</a>
|
||||
<a v-if="button.display == 1" @click="linkBtn(button)" :class="'btn btn-sm btn-l-line btn-' + button.color"><i :class="'fa ' + button.icon"></i> {{button.name}}</a>
|
||||
</template>
|
||||
|
||||
<div style="display:none;">
|
||||
|
@ -131,8 +131,12 @@ export default defineComponent({
|
|||
setup(props) {
|
||||
let tabBtn = (btn) => {
|
||||
props.header.tabs.active = btn.value;
|
||||
if (btn.type == 'a') {
|
||||
location.href = '/' + btn.url;
|
||||
} else {
|
||||
props.grid.remoteData({page:1, tab:btn.value});
|
||||
}
|
||||
}
|
||||
let actBtn = (btn) => {
|
||||
props.action[btn]();
|
||||
}
|
||||
|
@ -160,3 +164,12 @@ export default defineComponent({
|
|||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.btn-r-line {
|
||||
margin-left: 4px;
|
||||
}
|
||||
.btn-l-line {
|
||||
margin-right: 4px;
|
||||
}
|
||||
</style>
|
|
@ -7,14 +7,18 @@
|
|||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>{{$setting['title']}}</title>
|
||||
|
||||
<link href="{{mix('/assets/dist/vendor.min.css')}}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{mix('/assets/dist/gdoo.min.css')}}" rel="stylesheet" type="text/css" />
|
||||
|
||||
<link href="{{$asset_url}}/vendor/layui/css/layui.css" rel="stylesheet" type="text/css" />
|
||||
<link href="{{$asset_url}}/css/wechat/console.css" rel="stylesheet" type="text/css" />
|
||||
<link href="{{$asset_url}}/css/wechat/icon/icon.css" rel="stylesheet" type="text/css" />
|
||||
<link href="{{mix('/assets/dist/app.min.css')}}" rel="stylesheet" type="text/css" />
|
||||
|
||||
<script src="{{$asset_url}}/vendor/layui/layui.js" type="text/javascript"></script>
|
||||
<script src="{{$public_url}}/index/api/common?v={{time()}}" type="text/javascript"></script>
|
||||
<script src="{{mix('/assets/dist/app.min.js')}}" type="text/javascript"></script>
|
||||
<script type="text/javascript" src="{{mix('/assets/dist/vendor.min.js')}}"></script>
|
||||
<script type="text/javascript" src="{{$asset_url}}/vendor/layui/layui.js"></script>
|
||||
<script type="text/javascript" src="{{$asset_url}}/vendor/datepicker/datepicker.js"></script>
|
||||
<script type="text/javascript" src="{{$public_url}}/common?s={{time()}}"></script>
|
||||
<script type="text/javascript" src="{{mix('/assets/dist/gdoo.min.js')}}"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="content-body">
|
||||
|
|
Loading…
Reference in New Issue