继续重构模块列表前端样式

This commit is contained in:
乐风 2021-03-17 03:15:10 +08:00
parent 181fa17fdd
commit cd3a44340e
192 changed files with 3321 additions and 4596 deletions

View File

@ -36,6 +36,19 @@ class ApproachController extends WorkflowController
$cols['master_product']['cellRenderer'] = 'htmlCellRenderer'; $cols['master_product']['cellRenderer'] = 'htmlCellRenderer';
$cols['master_cash_amount']['cellRenderer'] = 'htmlCellRenderer'; $cols['master_cash_amount']['cellRenderer'] = 'htmlCellRenderer';
$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-pencil-square-o', 'action' => 'batchEdit', 'display' => $this->access['batchEdit']],
];
$header['cols'] = $cols;
$header['tabs'] = Approach::$tabs;
$header['bys'] = Approach::$bys;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -74,20 +87,6 @@ class ApproachController extends WorkflowController
}); });
} }
$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-pencil-square-o', 'action' => 'batchEdit', 'display' => $this->access['batchEdit']],
];
$header['cols'] = $cols;
$header['tabs'] = Approach::$tabs;
$header['bys'] = Approach::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -33,6 +33,15 @@ class MarketController extends DefaultController
'display' => $this->access['edit'], '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'] = ApproachMarket::$tabs;
$header['bys'] = ApproachMarket::$bys;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -60,16 +69,6 @@ class MarketController extends DefaultController
return Grid::dataFilters($rows, $header); 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'] = ApproachMarket::$tabs;
$header['bys'] = ApproachMarket::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -34,6 +34,18 @@ class ReviewController extends WorkflowController
'display' => $this->access['show'], 'display' => $this->access['show'],
]]; ]];
$header['buttons'] = [
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['left_buttons'] = [
['name' => '批量编辑', 'color' => 'default', 'icon' => 'fa-pencil-square-o', 'action' => 'batchEdit', 'display' => $this->access['batchEdit']],
];
$header['cols'] = $cols;
$header['tabs'] = ApproachReview::$tabs;
$header['bys'] = ApproachReview::$bys;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -61,20 +73,6 @@ class ReviewController extends WorkflowController
return Grid::dataFilters($rows, $header); 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', 'icon' => 'fa-pencil-square-o', 'action' => 'batchEdit', 'display' => $this->access['batchEdit']],
];
$header['cols'] = $cols;
$header['tabs'] = ApproachReview::$tabs;
$header['bys'] = ApproachReview::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -1,19 +1,32 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script>
(function ($) {
var table = '{{$header["master_table"]}}';
var config = gdoo.grids[table];
var action = config.action;
var search = config.search;
<script>
Vue.createApp({
components: {
gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}';
var config = new gdoo.grid(table);
var grid = config.grid;
grid.remoteDataUrl = '{{url()}}';
var action = config.action;
// 详情页打开方式
action.dialogType = 'layer'; action.dialogType = 'layer';
// 双击行执行的方法
action.rowDoubleClick = action.show;
action.fee_detail = function(data) { action.fee_detail = function(data) {
viewDialog({ viewDialog({
@ -36,43 +49,17 @@
} }
}); });
} }
var options = new agGridOptions();
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; var setup = config.setup;
options.autoColumnsToFit = false;
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); Vue.onMounted(function() {
var gridDiv = config.div(136);
// 读取数据 // 初始化数据
options.remoteData({page: 1}); grid.remoteData({page: 1}, function(res) {
config.init(res);
// 绑定自定义事件 });
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; return setup;
}
})(jQuery); }).mount("#{{$header['master_table']}}-page");
</script>
</script>
@include('footers')

View File

@ -64,7 +64,6 @@ var params = JSON.parse('{{json_encode($query)}}');
var sGrid = new agGridOptions(); var sGrid = new agGridOptions();
sGrid.remoteDataUrl = '{{url()}}'; sGrid.remoteDataUrl = '{{url()}}';
sGrid.remoteParams = params; sGrid.remoteParams = params;
//sGrid.rowMultiSelectWithClick = true;
sGrid.rowSelection = 'multiple'; sGrid.rowSelection = 'multiple';
sGrid.autoColumnsToFit = false; sGrid.autoColumnsToFit = false;
sGrid.defaultColDef.suppressMenu = true; sGrid.defaultColDef.suppressMenu = true;

View File

@ -1,52 +1,41 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
components: {
gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}'; var table = '{{$header["master_table"]}}';
var config = gdoo.grids[table];
var config = new gdoo.grid(table);
var grid = config.grid;
grid.remoteDataUrl = '{{url()}}';
var action = config.action; var action = config.action;
var search = config.search; // 双击行执行的方法
action.rowDoubleClick = action.edit;
var options = new agGridOptions(); var setup = config.setup;
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; Vue.onMounted(function() {
options.remoteParams = search.advanced.query; var gridDiv = config.div(136);
options.columnDefs = config.cols; // 初始化数据
options.onRowDoubleClicked = function (params) { grid.remoteData({page: 1}, function(res) {
if (params.node.rowPinned) { config.init(res);
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);
}
}); });
config.grid = options; return setup;
})(jQuery); }
}).mount("#{{$header['master_table']}}-page");
</script> </script>
@include('footers')

View File

@ -15,7 +15,6 @@
grid.remoteParams = params; grid.remoteParams = params;
grid.rowMultiSelectWithClick = false; grid.rowMultiSelectWithClick = false;
grid.rowSelection = 'multiple'; grid.rowSelection = 'multiple';
// grid.autoColumnsToFit = false;
grid.defaultColDef.suppressMenu = true; grid.defaultColDef.suppressMenu = true;
grid.defaultColDef.sortable = false; grid.defaultColDef.sortable = false;
grid.columnDefs = [ grid.columnDefs = [

View File

@ -1,54 +1,42 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
components: {
gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}'; var table = '{{$header["master_table"]}}';
var config = gdoo.grids[table];
var config = new gdoo.grid(table);
var grid = config.grid;
grid.remoteDataUrl = '{{url()}}';
var action = config.action; var action = config.action;
var search = config.search;
action.dialogType = 'layer'; action.dialogType = 'layer';
// 双击行执行的方法
action.rowDoubleClick = action.edit;
var options = new agGridOptions(); var setup = config.setup;
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; Vue.onMounted(function() {
options.remoteParams = search.advanced.query; var gridDiv = config.div(136);
options.columnDefs = config.cols; // 初始化数据
options.onRowDoubleClicked = function (params) { grid.remoteData({page: 1}, function(res) {
if (params.node.rowPinned) { config.init(res);
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; return setup;
})(jQuery); }
}).mount("#{{$header['master_table']}}-page");
</script> </script>
@include('footers')

View File

@ -1,44 +1,38 @@
<div class="vue-list-page" id="{{$header['master_table']}}-controller"> <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="panel no-border"> <div class="gdoo-list panel">
<div class="panel-header"> <div class="gdoo-list-header">
@include('headers2') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
</div> </div>
<div class='list-jqgrid'> <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> </div>
</div> </div>
<script> <script>
Vue.createApp({ Vue.createApp({
components: {
gdooGridHeader,
},
setup(props, ctx) { setup(props, ctx) {
var table = '{{$header["master_table"]}}'; var table = '{{$header["master_table"]}}';
var config = new gdoo.grid(table); var config = new gdoo.grid(table);
var grid = config.grid; var grid = config.grid;
grid.autoColumnsToFit = true;
grid.remoteDataUrl = '{{url()}}'; grid.remoteDataUrl = '{{url()}}';
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 action = config.action; var action = config.action;
// 详情页打开方式
action.dialogType = 'layer'; action.dialogType = 'layer';
// 双击行执行的方法
action.rowDoubleClick = action.show;
var setup = config.setup; var setup = config.setup;
Vue.onMounted(function() { Vue.onMounted(function() {
var gridDiv = document.querySelector("#" + table + "-grid"); var gridDiv = config.div(136);
gridDiv.style.height = getPanelHeight(136);
new agGrid.Grid(gridDiv, grid);
// 初始化数据 // 初始化数据
grid.remoteData({page: 1}, function(res) { grid.remoteData({page: 1}, function(res) {
config.init(res); config.init(res);
@ -46,5 +40,5 @@ Vue.createApp({
}); });
return setup; return setup;
} }
}).mount("#{{$header['master_table']}}-controller"); }).mount("#{{$header['master_table']}}-page");
</script> </script>

View File

@ -7,163 +7,16 @@ use DB;
use Gdoo\Customer\Models\Business; use Gdoo\Customer\Models\Business;
use Gdoo\User\Models\User; use Gdoo\User\Models\User;
use Gdoo\Index\Models\Attachment;
use Gdoo\Index\Services\NotificationService;
use Gdoo\Index\Controllers\DefaultController; use Gdoo\Index\Controllers\DefaultController;
use Gdoo\Index\Services\AttachmentService; use Gdoo\Index\Services\AttachmentService;
class BusinessController extends DefaultController class BusinessController extends DefaultController
{ {
public $permission = ['index','salesman','store']; public $permission = [];
// 商机列表 // 商机列表
public function indexAction() public function indexAction()
{ {
// 筛选客户
$filter = select::customer();
$columns = [
['text','customer_business.name','客户名称'],
];
if ($filter['role_type'] == 'salesman') {
$columns[] = ['text','customer_business.address','客户地区'];
$columns[] = ['text','customer_business.type','客户类型'];
}
if ($filter['role_type'] == 'all') {
$columns[] = ['text','user.name','创建者'];
$columns[] = ['owner','customer_business.user_id','负责人'];
$columns[] = ['text','customer_business.address','客户地区'];
$columns[] = ['text','customer_business.type','客户类型'];
}
$search = search_form([
'status' => 1,
'referer' => 1
], $columns);
$query = $search['query'];
$model = Business::leftJoin('user', 'user.id', '=', 'customer_business.created_id')
->select(['customer_business.*']);
$level = authorise();
if ($level < 4) {
$model->where('customer_business.user_id', Auth::id());
}
foreach ($search['where'] as $where) {
if ($where['active']) {
$model->search($where);
}
}
if ($query['order'] && $query['srot']) {
$model->orderBy($query['srot'], $query['order']);
} else {
$model->orderBy('customer_business.id', 'desc');
}
$rows = $model->paginate($query['limit']);
if (Request::wantsJson()) {
return $rows->toJson();
}
$rows = $rows->appends($query);
return $this->display(array(
'rows' => $rows,
'search' => $search,
));
}
// 客户资料查看
public function showAction()
{
$id = (int)Request::get('id');
$row = DB::table('customer_business')
->leftJoin('user', 'user.id', '=', 'customer_business.user_id')
->where('customer_business.id', $id)
->first(['customer_business.*','user.name']);
// 返回json
$row['address'] = str_replace("\n", " ", $row['address']);
$attachments = AttachmentService::show($row['attachment']);
$row['attachments'] = $attachments['main'];
return $row;
}
// 负责人列表
public function salesmanAction()
{
if (Request::wantsJson()) {
$users = User::leftJoin('role', 'role.id', '=', 'user.role_id')
->where('role.name', 'salesman')
->where('user.status', 1)
->get(['user.id', 'user.username', 'user.name']);
return $this->json($users);
}
}
// 储存商机
public function storeAction()
{
if (Request::isJson()) {
$gets = json_decode(Request::getContent(), true);
} else {
$gets = Request::all();
}
$row = new Business;
$rules = [
'source' => 'required',
'user_id' => 'required',
'name' => 'required',
// 'attachment' => 'min:1|array|required',
];
$v = Validator::make($gets, $rules, Business::$_messages);
if ($v->fails()) {
return $this->json($v->errors());
}
// 地区
if (is_array($gets['address'])) {
$gets['address'] = join("\n", $gets['address']);
}
// 保存base64图片数据
// $gets['attachment'] = Attachment::base64($gets['attachment'], 'customer');
if (is_array($gets['attachment'])) {
$gets['attachment'] = AttachmentService::base64($gets['attachment'], 'customer');
} else {
$gets['attachment'] = AttachmentService::files('image', 'customer');
}
$row->fill($gets)->save();
$user = User::find($gets['user_id']);
return $this->json('恭喜你,操作成功。', true);
}
// 删除商机
public function destroyAction()
{
if (Request::method() == 'POST') {
$id = Request::get('id');
$rows = Business::whereIn('id', $id)->get();
if ($rows) {
foreach ($rows as $row) {
AttachmentService::remove($row->attachment);
$row->delete();
}
}
return $this->success('index', '恭喜你,删除成功。');
}
} }
} }

View File

@ -38,6 +38,14 @@ class ComplaintController extends WorkflowController
'display' => $this->access['show'], 'display' => $this->access['show'],
]]; ]];
$header['buttons'] = [
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['cols'] = $cols;
$header['tabs'] = CustomerComplaint::$tabs;
$header['bys'] = CustomerComplaint::$bys;
if (Request::method() == 'POST') { if (Request::method() == 'POST') {
$model = DB::table($header['table'])->setBy($header); $model = DB::table($header['table'])->setBy($header);
@ -65,15 +73,6 @@ class ComplaintController extends WorkflowController
return Grid::dataFilters($rows, $header); return Grid::dataFilters($rows, $header);
} }
$header['buttons'] = [
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['cols'] = $cols;
$header['tabs'] = CustomerComplaint::$tabs;
$header['bys'] = CustomerComplaint::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -29,11 +29,18 @@ class ContactController extends DefaultController
$region = regionCustomer('customer_id_customer'); $region = regionCustomer('customer_id_customer');
$cols['actions']['options'] = [[ $cols['actions']['options'] = [[
'name' => '编辑', 'name' => '编辑',
'action' => 'edit', 'action' => 'edit',
'display' => $this->access['edit'], 'display' => $this->access['edit'],
]]; ]];
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
];
$header['cols'] = $cols;
$header['tabs'] = Contact::$tabs;
$header['bys'] = Contact::$bys;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -62,14 +69,6 @@ class ContactController extends DefaultController
return Grid::dataFilters($rows, $header); return Grid::dataFilters($rows, $header);
} }
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
];
$header['cols'] = $cols;
$header['tabs'] = Contact::$tabs;
$header['bys'] = Contact::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -8,7 +8,6 @@ use Gdoo\Model\Grid;
use Gdoo\Model\Form; use Gdoo\Model\Form;
use Gdoo\Customer\Models\CustomerApply; use Gdoo\Customer\Models\CustomerApply;
use Gdoo\User\Models\User;
use Gdoo\Index\Controllers\WorkflowController; use Gdoo\Index\Controllers\WorkflowController;
@ -32,11 +31,15 @@ class CustomerApplyController extends WorkflowController
'name' => '显示', 'name' => '显示',
'action' => 'show', 'action' => 'show',
'display' => $this->access['show'], 'display' => $this->access['show'],
]/*,[ ]];
'name' => '编辑',
'action' => 'edit', $header['buttons'] = [
'display' => $this->access['edit'], ['name' => '导出', 'icon' => 'fa-mail-reply', 'action' => 'export', 'display' => 1],
]*/]; ];
$header['cols'] = $cols;
$header['tabs'] = CustomerApply::$tabs;
$header['bys'] = CustomerApply::$bys;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -77,15 +80,6 @@ class CustomerApplyController extends WorkflowController
}); });
} }
$header['buttons'] = [
['name' => '导出', 'icon' => 'fa-mail-reply', 'action' => 'export', 'display' => 1],
];
$header['cols'] = $cols;
$header['tabs'] = CustomerApply::$tabs;
$header['bys'] = CustomerApply::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -26,6 +26,9 @@ class CustomerClassController extends DefaultController
]); ]);
$cols = $header['cols']; $cols = $header['cols'];
$cols['sequence_sn']['hide'] = true;
$cols['name']['hide'] = true;
$cols['actions']['options'] = [[ $cols['actions']['options'] = [[
'name' => '编辑', 'name' => '编辑',
'action' => 'edit', 'action' => 'edit',
@ -33,6 +36,13 @@ class CustomerClassController extends DefaultController
]]; ]];
unset($cols['checkbox']); unset($cols['checkbox']);
$header['buttons'] = [
['name' => '删除','icon' => 'fa-remove','action' => 'delete','display' => $display['delete']],
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['cols'] = $cols;
$header['tabs'] = CustomerClass::$tabs;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -48,25 +58,14 @@ class CustomerClassController extends DefaultController
} }
} }
$model->select($header['select']) $model->select($header['select']);
->addSelect(DB::raw('parent_id'));
$items = $model->get()->toNested('name'); $items = $model->get()->toNested('name');
$items = Grid::dataFilters($items, $header, function($item) { return Grid::dataFilters($items, $header, function($item) {
return $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'] = CustomerClass::$tabs;
$header['bys'] = CustomerClass::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -38,6 +38,24 @@ class CustomerController extends DefaultController
'display' => $this->access['edit'], 'display' => $this->access['edit'],
]]; ]];
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
['name' => '导出', 'icon' => 'fa-mail-reply', 'action' => 'export', 'display' => 1],
];
$header['left_buttons'] = [
['name' => '批量编辑', 'color' => 'default', 'icon' => 'fa-pencil-square-o', 'action' => 'batchEdit', 'display' => $this->access['batchEdit']],
['name' => '销售产品价格', 'color' => 'default', 'icon' => 'fa-pencil-square-o', 'action' => 'priceEdit', 'display' => $this->access['priceEdit']],
];
$header['right_buttons'] = [
['name' => '导入', 'color' => 'default', 'icon' => 'fa-mail-reply', 'action' => 'import', 'display' => $this->access['import']],
];
$header['cols'] = $cols;
$header['tabs'] = Customer::$tabs;
$header['bys'] = Customer::$bys;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -78,25 +96,6 @@ class CustomerController extends DefaultController
}); });
} }
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
['name' => '导出', 'icon' => 'fa-mail-reply', 'action' => 'export', 'display' => 1],
];
$header['left_buttons'] = [
['name' => '批量编辑', 'color' => 'default', 'icon' => 'fa-pencil-square-o', 'action' => 'batchEdit', 'display' => $this->access['batchEdit']],
['name' => '销售产品价格', 'color' => 'default', 'icon' => 'fa-pencil-square-o', 'action' => 'priceEdit', 'display' => $this->access['priceEdit']],
];
$header['right_buttons'] = [
['name' => '导入', 'color' => 'default', 'icon' => 'fa-mail-reply', 'action' => 'import', 'display' => $this->access['import']],
];
$header['cols'] = $cols;
$header['tabs'] = Customer::$tabs;
$header['bys'] = Customer::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -34,6 +34,13 @@ class DeliveryAddressController extends DefaultController
'display' => $this->access['edit'], 'display' => $this->access['edit'],
]]; ]];
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
];
$header['cols'] = $cols;
$header['tabs'] = DeliveryAddress::$tabs;
$header['bys'] = DeliveryAddress::$bys;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -61,14 +68,6 @@ class DeliveryAddressController extends DefaultController
return Grid::dataFilters($rows, $header); return Grid::dataFilters($rows, $header);
} }
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
];
$header['cols'] = $cols;
$header['tabs'] = DeliveryAddress::$tabs;
$header['bys'] = DeliveryAddress::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -34,6 +34,19 @@ class PriceController extends DefaultController
'display' => $this->access['edit'], 'display' => $this->access['edit'],
]]; ]];
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['right_buttons'] = [
['name' => '导入', 'icon' => 'fa-mail-reply', 'color' => 'default', 'action' => 'import', 'display' => $this->access['import']],
];
$header['cols'] = $cols;
$header['tabs'] = CustomerPrice::$tabs;
$header['bys'] = CustomerPrice::$bys;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -66,20 +79,6 @@ class PriceController extends DefaultController
return Grid::dataFilters($rows, $header); return Grid::dataFilters($rows, $header);
} }
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['right_buttons'] = [
['name' => '导入', 'icon' => 'fa-mail-reply', 'color' => 'default', 'action' => 'import', 'display' => $this->access['import']],
];
$header['cols'] = $cols;
$header['tabs'] = CustomerPrice::$tabs;
$header['bys'] = CustomerPrice::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -25,12 +25,23 @@ class RegionController extends DefaultController
]); ]);
$cols = $header['cols']; $cols = $header['cols'];
$cols['sequence_sn']['hide'] = true;
$cols['name']['hide'] = true;
unset($cols['checkbox']);
$cols['actions']['options'] = [[ $cols['actions']['options'] = [[
'name' => '编辑', 'name' => '编辑',
'action' => 'edit', 'action' => 'edit',
'display' => $this->access['edit'], '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'] = CustomerRegion::$tabs;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
if (Request::method() == 'POST') { if (Request::method() == 'POST') {
@ -39,7 +50,7 @@ class RegionController extends DefaultController
$model->leftJoin($join[0], $join[1], $join[2], $join[3]); $model->leftJoin($join[0], $join[1], $join[2], $join[3]);
} }
$model->orderBy('lft', 'asc') $model->orderBy('customer_region.lft', 'asc')
->orderBy($header['sort'], $header['order']); ->orderBy($header['sort'], $header['order']);
foreach ($search['where'] as $where) { foreach ($search['where'] as $where) {
@ -48,32 +59,21 @@ class RegionController extends DefaultController
} }
} }
$model->select($header['select']) $model->select($header['select']);
->addSelect(DB::raw('parent_id'));
$rows = $model->get()->toNested('name'); $rows = $model->get()->toNested('name');
$users = DB::table('user')->get()->keyBy('id'); $users = DB::table('user')->get()->keyBy('id');
$items = Grid::dataFilters($rows, $header, function($item) use($users) { return Grid::dataFilters($rows, $header, function($item) use($users) {
$owner_assist = explode(',', $item['owner_assist']); $owner_assist = explode(',', $item['owner_assist']);
$_rows = []; $owner = [];
foreach ($owner_assist as $user_id) { foreach ($owner_assist as $user_id) {
$_rows[] = $users[$user_id]['name']; $owner[] = $users[$user_id]['name'];
} }
$item['owner_assist'] = join(',', $_rows); $item['owner_assist'] = join(',', $owner);
return $item; return $item;
}); });
return $this->json($items, true);
} }
$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'] = CustomerRegion::$tabs;
$header['bys'] = CustomerRegion::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -22,7 +22,6 @@ class RegionTaskController extends AuditController
'referer' => 1, 'referer' => 1,
'sort' => 'customer_region_task_data.id', 'sort' => 'customer_region_task_data.id',
'order' => 'asc', 'order' => 'asc',
'search' => [],
]); ]);
$cols = $header['cols']; $cols = $header['cols'];
@ -32,6 +31,14 @@ class RegionTaskController extends AuditController
'action' => 'show', 'action' => 'show',
'display' => $this->access['show'], 'display' => $this->access['show'],
]]; ]];
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
['name' => '导出', 'icon' => 'fa-mail-reply', 'action' => 'export', 'display' => 1],
];
$header['cols'] = $cols;
$header['tabs'] = CustomerRegionTask::$tabs;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -69,23 +76,9 @@ class RegionTaskController extends AuditController
$model->select($header['select']); $model->select($header['select']);
$rows = $model->paginate($query['limit'])->appends($query); $rows = $model->paginate($query['limit'])->appends($query);
$rows = Grid::dataFilters($rows, $header); return Grid::dataFilters($rows, $header);
return $rows->toJson();
} }
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
['name' => '导出', 'icon' => 'fa-mail-reply', 'action' => 'export', 'display' => 1],
];
$header['right_buttons'] = [
];
$header['cols'] = $cols;
$header['tabs'] = CustomerRegionTask::$tabs;
$header['bys'] = CustomerRegionTask::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);
@ -128,14 +121,14 @@ class RegionTaskController extends AuditController
{ {
$year = date('Y'); $year = date('Y');
$search = search_form([], [[ $search = search_form([], [[
'form_type' => 'year', 'form_type' => 'year',
'field' => 'date', 'field' => 'date',
'name' => '年份', 'name' => '年份',
'value' => $year, 'value' => $year,
],[ ],[
'form_type' =>'dialog', 'form_type' =>'dialog',
'field' => 'region_id', 'field' => 'region_id',
'name' => '销售组', 'name' => '销售组',
'options' => ['url' => 'customer/region/dialog', 'query' => ['layer' => 3]] 'options' => ['url' => 'customer/region/dialog', 'query' => ['layer' => 3]]
], ],
], 'model'); ], 'model');

View File

@ -32,6 +32,14 @@ class TaskController extends AuditController
'action' => 'show', 'action' => 'show',
'display' => $this->access['show'], 'display' => $this->access['show'],
]]; ]];
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
['name' => '导出', 'icon' => 'fa-mail-reply', 'action' => 'export', 'display' => 1],
];
$header['cols'] = $cols;
$header['tabs'] = CustomerTask::$tabs;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -59,23 +67,9 @@ class TaskController extends AuditController
$model->select($header['select']); $model->select($header['select']);
$rows = $model->paginate($query['limit'])->appends($query); $rows = $model->paginate($query['limit'])->appends($query);
$rows = Grid::dataFilters($rows, $header); return Grid::dataFilters($rows, $header);
return $rows->toJson();
} }
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
['name' => '导出', 'icon' => 'fa-mail-reply', 'action' => 'export', 'display' => 1],
];
$header['right_buttons'] = [
];
$header['cols'] = $cols;
$header['tabs'] = CustomerTask::$tabs;
$header['bys'] = CustomerTask::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -34,6 +34,19 @@ class TaxController extends AuditController
'display' => $this->access['edit'], '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', 'icon' => 'fa-pencil-square-o', 'action' => 'batchEdit', 'display' => $this->access['batchEdit']],
];
$header['cols'] = $cols;
$header['tabs'] = CustomerTax::$tabs;
$header['bys'] = CustomerTax::$bys;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -63,20 +76,6 @@ class TaxController extends AuditController
return Grid::dataFilters($rows, $header); 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', 'icon' => 'fa-pencil-square-o', 'action' => 'batchEdit', 'display' => $this->access['batchEdit']],
];
$header['cols'] = $cols;
$header['tabs'] = CustomerTax::$tabs;
$header['bys'] = CustomerTax::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -32,6 +32,14 @@ class TypeController extends DefaultController
'display' => $this->access['edit'], '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'] = CustomerType::$tabs;
$header['bys'] = CustomerType::$bys;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -54,15 +62,6 @@ class TypeController extends DefaultController
return Grid::dataFilters($rows, $header); 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'] = CustomerType::$tabs;
$header['bys'] = CustomerType::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -7,23 +7,12 @@ class CustomerClass extends BaseModel
protected $table = 'customer_class'; protected $table = 'customer_class';
public static $tabs = [ public static $tabs = [
'name' => 'tab', 'name' => 'tab',
'items' => [ 'items' => [
['value' => 'customerClass.index', 'url' => 'customer/customerClass/index', 'name' => '客户分类'], ['value' => 'customerClass.index', 'url' => 'customer/customerClass/index', 'name' => '客户分类'],
] ]
]; ];
public static $bys = [
'name' => 'by',
'items' => [
['value' => '', 'name' => '全部'],
['value' => 'divider'],
['value' => 'day', 'name' => '今日创建'],
['value' => 'week', 'name' => '本周创建'],
['value' => 'month', 'name' => '本月创建'],
]
];
public function scopeDialog($q, $value) public function scopeDialog($q, $value)
{ {
return $q->whereIn('id', $value) return $q->whereIn('id', $value)

View File

@ -7,20 +7,9 @@ class CustomerRegion extends BaseModel
protected $table = 'customer_region'; protected $table = 'customer_region';
public static $tabs = [ public static $tabs = [
'name' => 'tab', 'name' => 'tab',
'items' => [ 'items' => [
['value' => 'region.index', 'url' => 'customer/region/index', 'name' => '销售组'], ['value' => 'region.index', 'url' => 'customer/region/index', 'name' => '销售组'],
] ]
]; ];
public static $bys = [
'name' => 'by',
'items' => [
['value' => '', 'name' => '全部'],
['value' => 'divider'],
['value' => 'day', 'name' => '今日创建'],
['value' => 'week', 'name' => '本周创建'],
['value' => 'month', 'name' => '本月创建'],
]
];
} }

View File

@ -12,17 +12,4 @@ class CustomerRegionTask extends BaseModel
['value' => 'regionTask.index', 'url' => 'customer/regionTask/index', 'name' => '区域任务'], ['value' => 'regionTask.index', 'url' => 'customer/regionTask/index', 'name' => '区域任务'],
] ]
]; ];
public static $bys = [
'name' => 'by',
'items' => [
['value' => '', 'name' => '全部'],
['value' => 'enabled', 'name' => '启用'],
['value' => 'disabled', 'name' => '禁用'],
['value' => 'divider'],
['value' => 'day', 'name' => '今日创建'],
['value' => 'week', 'name' => '本周创建'],
['value' => 'month', 'name' => '本月创建'],
]
];
} }

View File

@ -1,73 +0,0 @@
<div class="panel">
<div class="wrapper">
@include('business/query')
</div>
<form method="post" id="myform" name="myform">
<div class="table-responsive">
<table class="table b-t table-hover">
<thead>
<tr>
<th align="center">
<input type="checkbox" class="select-all">
</th>
<th align="left">客户名称</th>
<th align="left">地区</th>
<th align="left">资料来源</th>
<th>客户类型</th>
<th>联系人</th>
<th align="center">联系人手机</th>
<th>渠道说明</th>
<th>产品说明</th>
<th>合作说明</th>
<th>补充说明</th>
<th align="center">名片</th>
<th>创建者</th>
<th>{{url_order($search,'created_at','日期')}}</th>
<th align="center">{{url_order($search,'id','ID')}}</th>
</tr>
</thead>
<tbody>
@if($rows)
@foreach($rows as $row)
<tr>
<td align="center"><input type="checkbox" class="select-row" value="{{$row['id']}}" name="id[]"></td>
<td align="left">{{$row->name}}</td>
<td align="left" nowrap="true">{{$row->address}}</td>
<td align="left">{{$row->source}}</td>
<td align="center">{{$row->type}}</td>
<td align="center">{{$row->contacts}}</td>
<td align="center">{{$row->contacts_phone}}</td>
<td align="left">{{$row->text_1}}</td>
<td align="left">{{$row->text_2}}</td>
<td align="left">{{$row->text_3}}</td>
<td align="left">{{$row->description}}</td>
<td align="center">
<button type="button" class="option" data-toggle="dialog-image" data-url="{{url('index/attachment/show',['id'=>$row->attachment])}}" data-title="名片预览">名片</button>
</td>
<td align="center">{{get_user($row->created_id, 'name')}}</td>
<td align="center">@datetime($row->created_at)</td>
<td align="center">{{$row->id}}</td>
</tr>
@endforeach
@endif
</tbody>
</table>
</div>
</form>
<div 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>
</div>
</div>

View File

@ -1,29 +0,0 @@
<form id="search-form" class="form-inline" name="mysearch" action="{{url()}}" method="get">
<div class="pull-right">
@if(isset($access['destroy']))
<button type="button" onclick="optionDelete('#myform','{{url('destroy')}}');" class="btn btn-sm btn-danger"><i class="icon icon-remove"></i> 删除</button>
@endif
</div>
@if(isset($access['add']))
<a href="{{url('add')}}" class="btn btn-sm btn-info"><i class="icon icon-plus"></i> 新建</a>
@endif
@include('searchForm')
</form>
<script type="text/javascript">
$(function() {
$('#search-form').searchForm({
data:{{json_encode($search['forms'])}},
init:function(e) {
var self = this;
e.post = function(i) {
self._select({{search_select($types)}}, i);
}
}
});
});
</script>

View File

@ -1,55 +1,44 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
components: {
gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}'; 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 action = config.action;
var search = config.search; // 详情页打开方式
action.dialogType = 'layer'; action.dialogType = 'layer';
// 双击行执行的方法
action.rowDoubleClick = action.show;
var options = new agGridOptions(); var setup = config.setup;
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; Vue.onMounted(function() {
// options.autoColumnsToFit = false; var gridDiv = config.div(136);
options.remoteParams = search.advanced.query; // 初始化数据
options.columnDefs = config.cols; grid.remoteData({page: 1}, function(res) {
options.onRowDoubleClicked = function (params) { config.init(res);
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; return setup;
})(jQuery); }
}).mount("#{{$header['master_table']}}-page");
</script> </script>
@include('footers')

View File

@ -1,7 +1,7 @@
<div class="panel b-a" id="{{$header['master_table']}}-controller"> <div class="panel b-a" id="{{$header['master_table']}}-controller">
@include('headers') @include('headers')
<div class='list-jqgrid'> <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" style="width:100%;" class="ag-theme-balham"></div>
</div> </div>
</div> </div>

View File

@ -1,54 +1,44 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
components: {
gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}'; 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 action = config.action;
var search = config.search; // 详情页打开方式
action.dialogType = 'layer'; action.dialogType = 'layer';
// 双击行执行的方法
action.rowDoubleClick = action.show;
var options = new agGridOptions(); var setup = config.setup;
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; Vue.onMounted(function() {
options.remoteParams = search.advanced.query; var gridDiv = config.div(136);
options.columnDefs = config.cols; // 初始化数据
options.onRowDoubleClicked = function (params) { grid.remoteData({page: 1}, function(res) {
if (params.node.rowPinned) { config.init(res);
return; });
}
if (params.data == undefined) {
return;
}
if (params.data.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);
}
}); });
config.grid = options; return setup;
})(jQuery); }
}).mount("#{{$header['master_table']}}-page");
</script> </script>
@include('footers')

View File

@ -1,23 +1,36 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script>
(function ($) {
var table = '{{$header["master_table"]}}';
var config = gdoo.grids[table];
var action = config.action;
var search = config.search;
<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.dialogType = 'layer';
// 双击行执行的方法
action.rowDoubleClick = action.show;
action.priceEdit = function() { action.priceEdit = function() {
var me = this; var me = this;
var grid = config.grid;
var selections = grid.api.getSelectedRows(); var selections = grid.api.getSelectedRows();
var ids = []; var ids = [];
$.each(selections, function(i, selection) { $.each(selections, function(i, selection) {
@ -42,42 +55,18 @@
toastrError('最少选择一行记录。'); toastrError('最少选择一行记录。');
} }
} }
var options = new agGridOptions();
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; var setup = config.setup;
options.autoColumnsToFit = false;
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); Vue.onMounted(function() {
var gridDiv = config.div(136);
// 读取数据 // 初始化数据
options.remoteData({page: 1}); grid.remoteData({page: 1}, function(res) {
config.init(res);
// 绑定自定义事件 });
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;
}
</script> }).mount("#{{$header['master_table']}}-page");
@include('footers') </script>

View File

@ -1,55 +1,44 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
components: {
gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}'; 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 action = config.action;
var search = config.search; // 详情页打开方式
action.dialogType = 'layer'; action.dialogType = 'layer';
// 双击行执行的方法
action.rowDoubleClick = action.show;
var options = new agGridOptions(); var setup = config.setup;
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; Vue.onMounted(function() {
options.autoColumnsToFit = false; var gridDiv = config.div(136);
options.remoteParams = search.advanced.query; // 初始化数据
options.columnDefs = config.cols; grid.remoteData({page: 1}, function(res) {
options.onRowDoubleClicked = function (params) { config.init(res);
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; return setup;
})(jQuery); }
}).mount("#{{$header['master_table']}}-page");
</script> </script>
@include('footers')

View File

@ -1,26 +1,28 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="panel no-border" id="{{$header['table']}}-controller"> <div class="gdoo-list panel">
@include('headers') <div class="gdoo-list-header">
<div class="list-jqgrid"> <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div id="{{$header['table']}}-grid" class="ag-theme-balham"></div> </div>
<div class="ag-theme-balham" id="ag-pagination"></div> <div class='gdoo-list-grid'>
<div class="clearfix"></div> <div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
var table = '{{$header["table"]}}'; components: {
var config = gdoo.grids[table]; gdooGridHeader,
var action = config.action; },
var search = config.search; 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"); var grid = config.grid;
gridDiv.style.height = getPanelHeight(11); grid.autoColumnsToFit = true;
grid.remoteDataUrl = '{{url()}}';
config.cols[0]['hide'] = true;
config.cols[1]['hide'] = true;
grid.autoGroupColumnDef = { grid.autoGroupColumnDef = {
headerName: '名称', headerName: '名称',
width: 250, width: 250,
@ -34,26 +36,21 @@
grid.getDataPath = function(data) { grid.getDataPath = function(data) {
return data.tree_path; 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;
grid.remoteData(); // 双击行执行的方法
action.rowDoubleClick = action.edit;
// 绑定自定义事件 var setup = config.setup;
var $gridDiv = $(gridDiv);
$gridDiv.on('click', '[data-toggle="event"]', function () { Vue.onMounted(function() {
var data = $(this).data(); var gridDiv = config.div(101);
if (data.master_id > 0) { // 初始化数据
action[data.action](data); grid.remoteData({page: 1}, function(res) {
} config.init(res);
});
}); });
return setup;
config.grid = grid; }
}).mount("#{{$header['master_table']}}-page");
})(jQuery); </script>
</script>
@include('footers')

View File

@ -1,54 +1,42 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
components: {
gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}'; 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 action = config.action;
var search = config.search; // 双击行执行的方法
action.rowDoubleClick = action.edit;
//action.dialogType = 'layer'; var setup = config.setup;
var options = new agGridOptions(); Vue.onMounted(function() {
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid"); var gridDiv = config.div(136);
gridDiv.style.height = getPanelHeight(48); // 初始化数据
grid.remoteData({page: 1}, function(res) {
options.remoteDataUrl = '{{url()}}'; config.init(res);
options.remoteParams = search.advanced.query; });
options.columnDefs = config.cols;
options.onRowDoubleClicked = function (params) {
if (params.node.rowPinned) {
return;
}
if (params.data == undefined) {
return;
}
if (params.data.id > 0) {
action.edit(params.data);
}
};
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; return setup;
})(jQuery); }
}).mount("#{{$header['master_table']}}-page");
</script> </script>
@include('footers')

View File

@ -1,55 +1,44 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
components: {
gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}'; 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 action = config.action;
var search = config.search; // 详情页打开方式
action.dialogType = 'layer'; action.dialogType = 'layer';
// 双击行执行的方法
var options = new agGridOptions(); action.rowDoubleClick = action.show;
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; var setup = config.setup;
options.remoteParams = search.advanced.query;
options.columnDefs = config.cols;
options.onRowDoubleClicked = function (params) {
if (params.node.rowPinned) {
return;
}
var data = params.data;
if (data == undefined) {
return;
}
if (data.master_id > 0) {
action.edit(params.data);
}
};
new agGrid.Grid(gridDiv, options); Vue.onMounted(function() {
var gridDiv = config.div(136);
// 读取数据 // 初始化数据
options.remoteData({page: 1}); grid.remoteData({page: 1}, function(res) {
config.init(res);
// 绑定自定义事件 });
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; return setup;
})(jQuery); }
}).mount("#{{$header['master_table']}}-page");
</script> </script>
@include('footers')

View File

@ -1,72 +1,58 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="panel no-border m-b-sm" id="{{$header['master_table']}}-controller"> <div class="gdoo-list panel">
@include('headers') <div class="gdoo-list-header">
<div class="list-jqgrid"> <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> </div>
<div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
var table = '{{$header["master_table"]}}'; Vue.createApp({
var config = gdoo.grids[table]; components: {
var action = config.action; gdooGridHeader,
var search = config.search; },
(function ($) { setup(props, ctx) {
var options = new agGridOptions(); var table = '{{$header["master_table"]}}';
config.cols[0]['hide'] = true; var config = new gdoo.grid(table);
config.cols[1]['hide'] = true;
config.cols[2]['hide'] = true;
options.autoGroupColumnDef = {
groupSelectsChildren: true,
headerName: '名称',
width: 250,
cellRendererParams: {
checkbox: true,
suppressCount: true,
}
};
options.treeData = true; var grid = config.grid;
options.groupDefaultExpanded = -1; grid.autoColumnsToFit = true;
grid.remoteDataUrl = '{{url()}}';
options.getDataPath = function(data) {
return data.tree_path;
};
options.remoteDataUrl = '{{url()}}'; grid.autoGroupColumnDef = {
options.remoteParams = search.advanced.query; groupSelectsChildren: true,
options.columnDefs = config.cols; headerName: '名称',
options.onRowDoubleClicked = function (params) { width: 250,
if (params.node.rowPinned) { cellRendererParams: {
return; checkbox: true,
} suppressCount: true,
if (params.data == undefined) { }
return; };
}
if (params.data.id > 0) { grid.treeData = true;
action.edit(params.data); grid.groupDefaultExpanded = -1;
} grid.getDataPath = function(data) {
}; return data.tree_path;
};
var height = getPanelHeight(11); var action = config.action;
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid"); // 双击行执行的方法
action.rowDoubleClick = action.edit;
gridDiv.style.height = height; var setup = config.setup;
new agGrid.Grid(gridDiv, options);
// 读取数据 Vue.onMounted(function() {
options.remoteData({page: 1}); var gridDiv = config.div(101);
// 初始化数据
// 绑定自定义事件 grid.remoteData({page: 1}, function(res) {
var $gridDiv = $(gridDiv); config.init(res);
$gridDiv.on('click', '[data-toggle="event"]', function () { });
var data = $(this).data(); });
if (data.master_id > 0) { return setup;
action[data.action](data); }
} }).mount("#{{$header['master_table']}}-page");
}); </script>
config.grid = options;
})(jQuery);
</script>
@include('footers')

View File

@ -1,55 +1,44 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
components: {
gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}'; 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 action = config.action;
var search = config.search; // 详情页打开方式
action.dialogType = 'layer'; action.dialogType = 'layer';
// 双击行执行的方法
action.rowDoubleClick = action.show;
var options = new agGridOptions(); var setup = config.setup;
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; Vue.onMounted(function() {
options.autoColumnsToFit = false; var gridDiv = config.div(136);
options.remoteParams = search.advanced.query; // 初始化数据
options.columnDefs = config.cols; grid.remoteData({page: 1}, function(res) {
options.onRowDoubleClicked = function (params) { config.init(res);
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; return setup;
})(jQuery); }
}).mount("#{{$header['master_table']}}-page");
</script> </script>
@include('footers')

View File

@ -1,7 +1,7 @@
<div class="panel b-a" id="{{$header['master_table']}}-controller"> <div class="panel b-a" id="{{$header['master_table']}}-controller">
@include('headers') @include('headers')
<div class='list-jqgrid'> <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" style="width:100%;" class="ag-theme-balham"></div>
</div> </div>
</div> </div>

View File

@ -6,7 +6,7 @@
<a class="btn btn-sm btn-default" data-toggle="material_plan" data-action="export"><i class="fa fa-share"></i> 导出</a> <a class="btn btn-sm btn-default" data-toggle="material_plan" data-action="export"><i class="fa fa-share"></i> 导出</a>
</div> </div>
<div class='list-jqgrid'> <div class='gdoo-list-grid'>
<div id="material_plan-grid" style="width:100%;" class="ag-theme-balham"></div> <div id="material_plan-grid" style="width:100%;" class="ag-theme-balham"></div>
</div> </div>
</div> </div>

View File

@ -1,55 +1,44 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
components: {
gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}'; 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 action = config.action;
var search = config.search; // 详情页打开方式
action.dialogType = 'layer'; action.dialogType = 'layer';
// 双击行执行的方法
var options = new agGridOptions(); action.rowDoubleClick = action.show;
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; var setup = config.setup;
options.autoColumnsToFit = false;
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); Vue.onMounted(function() {
var gridDiv = config.div(136);
// 读取数据 // 初始化数据
options.remoteData({page: 1}); grid.remoteData({page: 1}, function(res) {
config.init(res);
// 绑定自定义事件 });
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; return setup;
})(jQuery); }
}).mount("#{{$header['master_table']}}-page");
</script> </script>
@include('footers')

View File

@ -1,7 +1,7 @@
<div class="panel b-a" id="{{$header['master_table']}}-controller"> <div class="panel b-a" id="{{$header['master_table']}}-controller">
@include('headers') @include('headers')
<div class='list-jqgrid'> <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" style="width:100%;" class="ag-theme-balham"></div>
</div> </div>
</div> </div>

View File

@ -1,55 +1,43 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
components: {
gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}'; var table = '{{$header["master_table"]}}';
var config = gdoo.grids[table];
var config = new gdoo.grid(table);
var grid = config.grid;
grid.remoteDataUrl = '{{url()}}';
var action = config.action; var action = config.action;
var search = config.search; // 详情页打开方式
action.dialogType = 'layer'; action.dialogType = 'layer';
// 双击行执行的方法
action.rowDoubleClick = action.show;
var options = new agGridOptions(); var setup = config.setup;
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; Vue.onMounted(function() {
options.remoteParams = search.advanced.query; var gridDiv = config.div(136);
options.columnDefs = config.cols; // 初始化数据
options.autoColumnsToFit = false; grid.remoteData({page: 1}, function(res) {
options.onRowDoubleClicked = function (params) { config.init(res);
if (params.node.rowPinned) { });
return;
}
if (params.data == undefined) {
return;
}
if (params.data.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; return setup;
})(jQuery); }
}).mount("#{{$header['master_table']}}-page");
</script> </script>
@include('footers')

View File

@ -1,52 +1,42 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
var table = '{{$header["table"]}}'; components: {
var config = gdoo.grids[table]; 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 action = config.action;
var search = config.search; // 双击行执行的方法
action.rowDoubleClick = action.edit;
var options = new agGridOptions(); var setup = config.setup;
var gridDiv = document.querySelector("#{{$header['table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; Vue.onMounted(function() {
options.remoteParams = search.advanced.query; var gridDiv = config.div(136);
options.columnDefs = config.cols; // 初始化数据
options.onRowDoubleClicked = function (params) { grid.remoteData({page: 1}, function(res) {
if (params.node.rowPinned) { config.init(res);
return; });
}
if (params.data == undefined) {
return;
}
if (params.data.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);
}
}); });
config.grid = options; return setup;
})(jQuery); }
}).mount("#{{$header['master_table']}}-page");
</script> </script>
@include('footers')

View File

@ -1,4 +1,4 @@
<div class="list-jqgrid"> <div class="gdoo-list-grid">
<div id="customer-birthday-widget" class="ag-theme-balham" style="width:100%;height:200px;"></div> <div id="customer-birthday-widget" class="ag-theme-balham" style="width:100%;height:200px;"></div>
</div> </div>
<script> <script>

View File

@ -29,10 +29,23 @@ class AdjustController extends AuditController
$cols['actions']['options'] = [[ $cols['actions']['options'] = [[
'name' => '显示', 'name' => '显示',
'action' => 'show', 'action' => 'show',
'display' => $this->access['show'], 'display' => $this->access['show'],
]]; ]];
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['right_buttons'] = [
['name' => '关闭', 'color' => 'default', 'icon' => 'fa-lock', 'action' => 'close', 'display' => $this->access['close']],
];
$header['cols'] = $cols;
$header['tabs'] = Adjust::$tabs;
$header['bys'] = Adjust::$bys;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -64,20 +77,6 @@ class AdjustController extends AuditController
return Grid::dataFilters($rows, $header); return Grid::dataFilters($rows, $header);
} }
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['right_buttons'] = [
['name' => '关闭', 'color' => 'default', 'icon' => 'fa-lock', 'action' => 'close', 'display' => $this->access['close']],
];
$header['cols'] = $cols;
$header['tabs'] = Adjust::$tabs;
$header['bys'] = Adjust::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -31,6 +31,13 @@ class CategoryController extends DefaultController
'display' => $this->access['edit'], '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'] = Category::$tabs;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -52,15 +59,6 @@ class CategoryController extends DefaultController
return Grid::dataFilters($rows, $header); 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'] = Category::$tabs;
$header['bys'] = Category::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -33,6 +33,15 @@ class CompenController extends AuditController
'display' => $this->access['show'], 'display' => $this->access['show'],
]]; ]];
$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'] = Compen::$tabs;
$header['bys'] = Compen::$bys;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -64,16 +73,6 @@ class CompenController extends AuditController
return Grid::dataFilters($rows, $header); 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'] = Compen::$tabs;
$header['bys'] = Compen::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -29,10 +29,22 @@ class CostController extends AuditController
$cols['actions']['options'] = [[ $cols['actions']['options'] = [[
'name' => '显示', 'name' => '显示',
'action' => 'show', 'action' => 'show',
'display' => $this->access['show'], 'display' => $this->access['show'],
]]; ]];
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['right_buttons'] = [
['name' => '关闭', 'color' => 'default', 'icon' => 'fa-lock', 'action' => 'close', 'display' => $this->access['close']],
['name' => '费用调整单', 'color' => 'info', 'icon' => 'fa-plus', 'action' => 'create4', 'display' => $this->access['create4']],
];
$header['cols'] = $cols;
$header['tabs'] = Cost::$tabs;
$header['bys'] = Cost::$bys;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -71,25 +83,6 @@ class CostController extends AuditController
return Grid::dataFilters($rows, $header); 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', 'icon' => 'fa-pencil-square-o', 'action' => 'batchEdit', 'display' => $this->access['batchEdit']],
];
$header['right_buttons'] = [
['name' => '关闭', 'color' => 'default', 'icon' => 'fa-lock', 'action' => 'close', 'display' => $this->access['close']],
['name' => '费用调整单', 'color' => 'info', 'icon' => 'fa-plus', 'action' => 'create4', 'display' => $this->access['create4']],
];
$header['cols'] = $cols;
$header['tabs'] = Cost::$tabs;
$header['bys'] = Cost::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -33,6 +33,15 @@ class RebateController extends AuditController
'display' => $this->access['show'], 'display' => $this->access['show'],
]]; ]];
$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'] = Rebate::$tabs;
$header['bys'] = Rebate::$bys;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -64,16 +73,6 @@ class RebateController extends AuditController
return Grid::dataFilters($rows, $header); 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'] = Rebate::$tabs;
$header['bys'] = Rebate::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -7,20 +7,9 @@ class Category extends BaseModel
protected $table = 'customer_cost_category'; protected $table = 'customer_cost_category';
public static $tabs = [ public static $tabs = [
'name' => 'tab', 'name' => 'tab',
'items' => [ 'items' => [
['value' => 'category.index', 'url' => 'customerCost/category/index', 'name' => '费用类别'], ['value' => 'category.index', 'url' => 'customerCost/category/index', 'name' => '费用类别'],
] ]
]; ];
public static $bys = [
'name' => 'by',
'items' => [
['value' => '', 'name' => '全部'],
['value' => 'divider'],
['value' => 'day', 'name' => '今日创建'],
['value' => 'week', 'name' => '本周创建'],
['value' => 'month', 'name' => '本月创建'],
]
];
} }

View File

@ -1,52 +1,43 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list panel">
@include('headers') <div class="gdoo-list-header">
<div class="list-jqgrid"> <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div> </div>
<div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
components: {
gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}'; var table = '{{$header["master_table"]}}';
var config = gdoo.grids[table];
var config = new gdoo.grid(table);
var grid = config.grid;
grid.remoteDataUrl = '{{url()}}';
var action = config.action; var action = config.action;
var search = config.search; // 详情页打开方式
action.dialogType = 'layer'; action.dialogType = 'layer';
// 双击行执行的方法
action.rowDoubleClick = action.show;
var options = new agGridOptions(); var setup = config.setup;
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; Vue.onMounted(function() {
options.remoteParams = search.advanced.query; var gridDiv = config.div(136);
options.columnDefs = config.cols; // 初始化数据
options.onRowDoubleClicked = function (params) { grid.remoteData({page: 1}, function(res) {
if (params.node.rowPinned) { config.init(res);
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; return setup;
})(jQuery); }
</script> }).mount("#{{$header['master_table']}}-page");
@include('footers') </script>

View File

@ -1,52 +1,42 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
var table = '{{$header["table"]}}'; components: {
var config = gdoo.grids[table]; 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 action = config.action;
var search = config.search; // 双击行执行的方法
action.rowDoubleClick = action.edit;
var options = new agGridOptions(); var setup = config.setup;
var gridDiv = document.querySelector("#{{$header['table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; Vue.onMounted(function() {
options.remoteParams = search.advanced.query; var gridDiv = config.div(136);
options.columnDefs = config.cols; // 初始化数据
options.onRowDoubleClicked = function (params) { grid.remoteData({page: 1}, function(res) {
if (params.node.rowPinned) { config.init(res);
return; });
}
if (params.data == undefined) {
return;
}
if (params.data.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);
}
}); });
config.grid = options; return setup;
})(jQuery); }
}).mount("#{{$header['master_table']}}-page");
</script> </script>
@include('footers')

View File

@ -1,52 +1,43 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list panel">
@include('headers') <div class="gdoo-list-header">
<div class="list-jqgrid"> <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div> </div>
<div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
components: {
gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}'; var table = '{{$header["master_table"]}}';
var config = gdoo.grids[table];
var config = new gdoo.grid(table);
var grid = config.grid;
grid.remoteDataUrl = '{{url()}}';
var action = config.action; var action = config.action;
var search = config.search; // 详情页打开方式
action.dialogType = 'layer'; action.dialogType = 'layer';
// 双击行执行的方法
var options = new agGridOptions(); action.rowDoubleClick = action.show;
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; var setup = config.setup;
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); Vue.onMounted(function() {
var gridDiv = config.div(136);
// 读取数据 // 初始化数据
options.remoteData({page: 1}); grid.remoteData({page: 1}, function(res) {
config.init(res);
// 绑定自定义事件 });
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; return setup;
})(jQuery); }
</script> }).mount("#{{$header['master_table']}}-page");
@include('footers') </script>

View File

@ -1,18 +1,57 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list panel">
@include('headers') <div class="gdoo-list-header">
<div class="list-jqgrid"> <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div> </div>
<div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script>
(function ($) {
var table = '{{$header["master_table"]}}';
var config = gdoo.grids[table];
var action = config.action;
var search = config.search;
<script>
Vue.createApp({
components: {
gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}';
var config = new gdoo.grid(table);
var grid = config.grid;
grid.remoteDataUrl = '{{url()}}';
var action = config.action;
// 详情页打开方式
action.dialogType = 'layer'; action.dialogType = 'layer';
// 双击行执行的方法
action.rowDoubleClick = function (data) {
if (data.master_id > 0) {
var index = data.master_sn.indexOf('QTFY');
if (index >= 0) {
data.src_type_id = 46;
}
if (data.src_type_id == 46) {
top.addTab('customerCost/cost/show?id=' + data.master_id, 'customerCost_cost_show', '其他费用');
}
if (data.src_type_id == 55) {
top.addTab('promotion/review/show?id=' + data.src_id, 'promotion_review_show', '促销核销');
}
if (data.src_type_id == 57) {
top.addTab('approach/review/show?id=' + data.src_id, 'approach_review_show', '进店核销');
}
if (data.src_type_id == 87) {
top.addTab('customerCost/compen/show?id=' + data.master_id, 'customerCost_compen_show', '合同补损');
}
if (data.src_type_id == 88) {
top.addTab('customerCost/rebate/show?id=' + data.master_id, 'customerCost_rebate_show', '合同返利');
}
if (data.src_type_id == 86) {
top.addTab('customerCost/adjust/show?id=' + data.master_id, 'customerCost_adjust_show', '费用调整');
}
}
};
// 关闭费用 // 关闭费用
action.close = function(data) { action.close = function(data) {
@ -40,63 +79,16 @@
}); });
} }
var options = new agGridOptions(); var setup = config.setup;
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; Vue.onMounted(function() {
options.remoteParams = search.advanced.query; var gridDiv = config.div(136);
options.columnDefs = config.cols; // 初始化数据
options.onRowDoubleClicked = function (params) { grid.remoteData({page: 1}, function(res) {
var data = params.data; config.init(res);
if (params.node.rowPinned) { });
return;
}
if (data == undefined) {
return;
}
if (data.master_id > 0) {
var index = data.master_sn.indexOf('QTFY');
if (index >= 0) {
data.src_type_id = 46;
}
if (data.src_type_id == 46) {
top.addTab('customerCost/cost/show?id=' + data.master_id, 'customerCost_cost_show', '其他费用');
}
if (data.src_type_id == 55) {
top.addTab('promotion/review/show?id=' + data.src_id, 'promotion_review_show', '促销核销');
}
if (data.src_type_id == 57) {
top.addTab('approach/review/show?id=' + data.src_id, 'approach_review_show', '进店核销');
}
if (data.src_type_id == 87) {
top.addTab('customerCost/compen/show?id=' + data.master_id, 'customerCost_compen_show', '合同补损');
}
if (data.src_type_id == 88) {
top.addTab('customerCost/rebate/show?id=' + data.master_id, 'customerCost_rebate_show', '合同返利');
}
if (data.src_type_id == 86) {
top.addTab('customerCost/adjust/show?id=' + data.master_id, 'customerCost_adjust_show', '费用调整');
}
}
};
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; return setup;
})(jQuery); }
</script> }).mount("#{{$header['master_table']}}-page");
@include('footers') </script>

View File

@ -1,52 +1,43 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list panel">
@include('headers') <div class="gdoo-list-header">
<div class="list-jqgrid"> <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div> </div>
<div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
components: {
gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}'; var table = '{{$header["master_table"]}}';
var config = gdoo.grids[table];
var config = new gdoo.grid(table);
var grid = config.grid;
grid.remoteDataUrl = '{{url()}}';
var action = config.action; var action = config.action;
var search = config.search; // 详情页打开方式
action.dialogType = 'layer'; action.dialogType = 'layer';
// 双击行执行的方法
action.rowDoubleClick = action.show;
var options = new agGridOptions(); var setup = config.setup;
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; Vue.onMounted(function() {
options.remoteParams = search.advanced.query; var gridDiv = config.div(136);
options.columnDefs = config.cols; // 初始化数据
options.onRowDoubleClicked = function (params) { grid.remoteData({page: 1}, function(res) {
if (params.node.rowPinned) { config.init(res);
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; return setup;
})(jQuery); }
</script> }).mount("#{{$header['master_table']}}-page");
@include('footers') </script>

View File

@ -1,7 +1,7 @@
<div class="panel b-a" id="{{$header['master_table']}}-controller"> <div class="panel b-a" id="{{$header['master_table']}}-controller">
@include('headers') @include('headers')
<div class='list-jqgrid'> <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" style="width:100%;" class="ag-theme-balham"></div>
</div> </div>
</div> </div>

View File

@ -1,7 +1,7 @@
{{$header["js"]}} {{$header["js"]}}
<div class="panel no-border" id="{{$header['table']}}-controller"> <div class="panel no-border" id="{{$header['table']}}-controller">
@include('headers') @include('headers')
<div class="list-jqgrid"> <div class="gdoo-list-grid">
<div id="{{$header['table']}}-grid" class="ag-theme-balham"></div> <div id="{{$header['table']}}-grid" class="ag-theme-balham"></div>
</div> </div>
</div> </div>

View File

@ -1,7 +1,7 @@
{{$header["js"]}} {{$header["js"]}}
<div class="panel no-border" id="{{$header['table']}}-controller"> <div class="panel no-border" id="{{$header['table']}}-controller">
@include('headers') @include('headers')
<div class="list-jqgrid"> <div class="gdoo-list-grid">
<div id="{{$header['table']}}-grid" class="ag-theme-balham"></div> <div id="{{$header['table']}}-grid" class="ag-theme-balham"></div>
</div> </div>
</div> </div>

View File

@ -114,7 +114,7 @@
<form method="post" id="widget-edit" name="widget_edit"> <form method="post" id="widget-edit" name="widget_edit">
<div class="quick-edit"> <div class="quick-edit">
<div class="row row-sm"> <div class="row row-sm">
<draggable <gdooDraggable
v-model="menus" v-model="menus"
item-key="id" item-key="id"
group="menus" group="menus"
@ -131,7 +131,7 @@
<div class="title">{{element.name}}</div> <div class="title">{{element.name}}</div>
</div> </div>
</template> </template>
</draggable> </gdooDraggable>
<div class="quick-edit-text"> <div class="quick-edit-text">
<a href="javascript:;" @click="quickAdd"> <a href="javascript:;" @click="quickAdd">
<div class="quick-icon quick-edit-add"> <div class="quick-icon quick-edit-add">
@ -143,7 +143,7 @@
</div> </div>
</div> </div>
<draggable <gdooDraggable
class="row row-sm todo-edit" class="row row-sm todo-edit"
v-model="infos" v-model="infos"
handle=".todo-edit-l-t" handle=".todo-edit-l-t"
@ -176,10 +176,10 @@
</div> </div>
</div> </div>
</template> </template>
</draggable> </gdooDraggable>
<div class="row row-sm widget-edit"> <div class="row row-sm widget-edit">
<draggable <gdooDraggable
class="col-xs-12 col-sm-8" class="col-xs-12 col-sm-8"
v-model="leftWidgets" v-model="leftWidgets"
handle=".panel-heading" handle=".panel-heading"
@ -207,9 +207,9 @@
</div> </div>
</div> </div>
</template> </template>
</draggable> </gdooDraggable>
<draggable <gdooDraggable
class="col-xs-12 col-sm-4" class="col-xs-12 col-sm-4"
v-model="rightWidgets" v-model="rightWidgets"
handle=".panel-heading" handle=".panel-heading"
@ -237,7 +237,7 @@
</div> </div>
</div> </div>
</template> </template>
</draggable> </gdooDraggable>
</div> </div>
</div> </div>
</div> </div>
@ -247,7 +247,7 @@
var configData = {{$json}}; var configData = {{$json}};
var settingWidget = Vue.createApp({ var settingWidget = Vue.createApp({
components: { components: {
draggable: GdooVueComponents.draggable, gdooDraggable
}, },
data() { data() {
return { return {

View File

@ -62,7 +62,7 @@
</a> </a>
</li> </li>
</ul> </ul>
<div id="notificationApp"><notification/></div> <div id="notificationApp"><gdoo-frame-header /></div>
</header> </header>
<div class="nav-scroll"> <div class="nav-scroll">
@ -178,7 +178,7 @@
<script> <script>
const vueApp = Vue.createApp({ const vueApp = Vue.createApp({
components: { components: {
notification: GdooVueComponents.notification, gdooFrameHeader,
} }
}); });
vueApp.config.globalProperties.url = app.url; vueApp.config.globalProperties.url = app.url;

View File

@ -16,6 +16,12 @@ class BillController extends DefaultController
{ {
public function indexAction() public function indexAction()
{ {
$search = search_form([
'advanced' => '',
], [
['form_type' => 'text', 'name' => '名称', 'field' => 'model_bill.name', 'value' => '', 'options' => []],
], 'model');
$header = [ $header = [
'master_name' => '单据', 'master_name' => '单据',
'simple_search_form' => 1, 'simple_search_form' => 1,
@ -24,12 +30,6 @@ class BillController extends DefaultController
'create_btn' => 1, 'create_btn' => 1,
]; ];
$search = search_form([
'advanced' => '',
], [
['form_type' => 'text', 'name' => '名称', 'field' => 'model_bill.name', 'value' => '', 'options' => []],
], 'model');
$header['cols'] = [ $header['cols'] = [
'checkbox' => [ 'checkbox' => [
'width' => 40, 'width' => 40,
@ -157,6 +157,13 @@ class BillController extends DefaultController
'filter' => false, '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']; $query = $search['query'];
if (Request::method() == 'POST') { if (Request::method() == 'POST') {
@ -193,18 +200,12 @@ class BillController extends DefaultController
$row['model_name'] = $row['model_name'].'('.$row['model_table'].')'; $row['model_name'] = $row['model_name'].'('.$row['model_table'].')';
return $row; 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([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -98,29 +98,6 @@ class Grid
} }
} }
$_header = $header;
unset($_header['columns']);
unset($_header['cols']);
unset($_header['dialogs']);
unset($_header['join']);
unset($_header['js']);
unset($_header['raw_select']);
unset($_header['search']);
unset($_header['select']);
// 重新组合字段给前端
$columns = [];
foreach ($header['cols'] as $field => $col) {
if ($field == 'action' && empty($col['events'])) {
continue;
}
if ($col['field'] == 'created_by') {
$col['formatter'] = 'created_by';
}
$columns[] = $col;
}
$_header['columns'] = $columns;
$header['runs'] = $runs; $header['runs'] = $runs;
$header['dialogs'] = $dialogs; $header['dialogs'] = $dialogs;
$header['regions'] = $regions; $header['regions'] = $regions;
@ -136,10 +113,45 @@ class Grid
} else { } else {
$ret = collect(['data' => $rows]); $ret = collect(['data' => $rows]);
} }
$ret['header'] = $_header;
$ret['header'] = static::getColumns($header);
return $ret; return $ret;
} }
/**
* 重新组合字段(主要给前端使用)
*/
public static function getColumns($header)
{
$columns = [];
foreach ($header['cols'] as $field => $col) {
if ($field == 'action' && empty($col['events'])) {
continue;
}
if ($col['field'] == 'created_by') {
$col['formatter'] = 'created_by';
}
$columns[] = $col;
}
unset($header['cols']);
unset($header['dialogs']);
unset($header['join']);
unset($header['js']);
unset($header['raw_select']);
unset($header['search']);
unset($header['select']);
unset($header['runs']);
unset($header['regions']);
$header['columns'] = $columns;
if (empty($header['bill_uri'])) {
$header['bill_uri'] = Request::module().'/'.Request::controller();
}
return $header;
}
public static function dataFilter($item, $header, $callback = null) public static function dataFilter($item, $header, $callback = null)
{ {
$master_prefix = $header['master_prefix']; $master_prefix = $header['master_prefix'];

View File

@ -1,19 +1,43 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </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'; <script>
Vue.createApp({
components: {
gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}';
var config = new gdoo.grid(table);
var grid = config.grid;
grid.remoteDataUrl = '{{url()}}';
grid.autoColumnsToFit = true;
// 自定义行按钮渲染
grid.actionCellBeforeRender = function(html, act, data) {
if (act.action == 'flow') {
if (data.audit_type == 1) {
return html;
}
return '';
} else {
return html;
}
}
var action = config.action;
// 双击行执行的方法
action.rowDoubleClick = action.edit;
action.view = function(data) { action.view = function(data) {
var me = this; var me = this;
@ -51,52 +75,16 @@
}); });
} }
var options = new agGridOptions(); var setup = config.setup;
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; Vue.onMounted(function() {
options.remoteParams = search.advanced.query; var gridDiv = config.div(93);
options.columnDefs = config.cols; // 初始化数据
options.onRowDoubleClicked = function (params) { grid.remoteData({page: 1}, function(res) {
if (params.node.rowPinned) { config.init(res);
return; });
}
if (params.data == undefined) {
return;
}
if (params.data.master_id > 0) {
action.edit(params.data);
}
};
new agGrid.Grid(gridDiv, options);
// 自定义行按钮渲染
options.actionCellBeforeRender = function(html, act, data) {
if (act.action == 'flow') {
if (data.audit_type == 1) {
return html;
}
return '';
} else {
return html;
}
}
// 读取数据
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; return setup;
})(jQuery); }
}).mount("#{{$header['master_table']}}-page");
</script> </script>
@include('footers')

View File

@ -2,7 +2,7 @@
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="panel no-border" id="{{$header['master_table']}}-controller">
@include('headers') @include('headers')
<div class='list-jqgrid'> <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" style="width:100%;" class="ag-theme-balham"></div>
</div> </div>
</div> </div>

View File

@ -2,7 +2,7 @@
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="panel no-border" id="{{$header['master_table']}}-controller">
@include('headers') @include('headers')
<div class='list-jqgrid'> <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" style="width:100%;" class="ag-theme-balham"></div>
</div> </div>
</div> </div>

View File

@ -472,7 +472,7 @@
@verbatim @verbatim
<div id="app"> <div id="app">
<div class="dragDemo"> <div class="dragDemo">
<draggable class="list-group" <gdooDraggable class="list-group"
element="div" element="div"
v-model="listLeft" v-model="listLeft"
:move="onMove" :move="onMove"
@ -482,8 +482,8 @@
<div v-for="(item, key) in listLeft" :key="key"> <div v-for="(item, key) in listLeft" :key="key">
{{item.name}}-{{item.value}} {{item.name}}-{{item.value}}
</div> </div>
</draggable> </gdooDraggable>
<draggable class="list-group" <gdooDraggable class="list-group"
element="div" element="div"
v-model="listLeft1" v-model="listLeft1"
:move="onMove" :move="onMove"
@ -493,8 +493,8 @@
<div v-for="(item, key) in listLeft1" :key="key"> <div v-for="(item, key) in listLeft1" :key="key">
{{item.name}}-{{item.value}} {{item.name}}-{{item.value}}
</div> </div>
</draggable> </gdooDraggable>
<draggable class="list-group" <gdooDraggable class="list-group"
element="div" element="div"
v-model="listRight" v-model="listRight"
:move="onMove" :move="onMove"
@ -504,7 +504,7 @@
<div v-for="(item,key) in listRight" :key="key"> <div v-for="(item,key) in listRight" :key="key">
{{item.name}}-{{item.value}} {{item.name}}-{{item.value}}
</div> </div>
</draggable> </gdooDraggable>
</div> </div>
</div> </div>
@endverbatim @endverbatim

View File

@ -19,7 +19,7 @@
<div class="panel-heading"> <div class="panel-heading">
<div>字段列表</div> <div>字段列表</div>
</div> </div>
<draggable class="list-group" <gdooDraggable class="list-group"
v-model="listLeft" v-model="listLeft"
item-key="name" item-key="name"
group="people" group="people"
@ -31,7 +31,7 @@
{{element.name}} {{element.name}}
</a> </a>
</template> </template>
</draggable> </gdooDraggable>
</div> </div>
</div> </div>
@ -41,7 +41,7 @@
<div>字段列表</div> <div>字段列表</div>
</div> </div>
<draggable class="list-group" <gdooDraggable class="list-group"
v-model="listRight" v-model="listRight"
item-key="name" item-key="name"
group="people" group="people"
@ -52,7 +52,7 @@
{{element.name}} {{element.name}}
</a> </a>
</template> </template>
</draggable> </gdooDraggable>
</div> </div>
</div> </div>
</div> </div>
@ -139,11 +139,12 @@
} }
</style> </style>
<script> <script>
var template = JSON.parse('{{json_encode($template, JSON_UNESCAPED_UNICODE)}}'); var template = JSON.parse('{{json_encode($template, JSON_UNESCAPED_UNICODE)}}');
var rightIndex = -1; var rightIndex = -1;
var vueData = { var vueData = {
components: { components: {
draggable: GdooVueComponents.draggable, gdooDraggable,
}, },
data() { data() {
return { return {

View File

@ -8,7 +8,7 @@
</div> </div>
<div class="todo-grid-box"> <div class="todo-grid-box">
<div class="list-jqgrid" id="todo-grid-controller"> <div class="gdoo-list-grid" id="todo-grid-controller">
<div id="todo-grid" class="ag-theme-balham" style="width:100%;height:200px;"></div> <div id="todo-grid" class="ag-theme-balham" style="width:100%;height:200px;"></div>
</div> </div>
</div> </div>

View File

@ -23,7 +23,6 @@ class LogisticsController extends DefaultController
'code' => 'logistics', 'code' => 'logistics',
'referer' => 1, 'referer' => 1,
'search' => ['by' => ''], 'search' => ['by' => ''],
'trash_btn' => 0,
]); ]);
$cols = $header['cols']; $cols = $header['cols'];
@ -34,6 +33,13 @@ class LogisticsController extends DefaultController
'display' => $this->access['edit'], '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'] = Logistics::$tabs;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -55,15 +61,6 @@ class LogisticsController extends DefaultController
return Grid::dataFilters($rows, $header); 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'] = Logistics::$tabs;
$header['bys'] = Logistics::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -199,6 +199,18 @@ class OrderController extends WorkflowController
'display' => $this->access['show'], 'display' => $this->access['show'],
]]; ]];
$header['buttons'] = [
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['left_buttons'] = [
['name' => '批量编辑', 'color' => 'default', 'icon' => 'fa-pencil-square-o', 'action' => 'batchEdit', 'display' => $this->access['batchEdit']],
];
$header['cols'] = $cols;
$header['tabs'] = CustomerOrder::$tabs;
$header['bys'] = CustomerOrder::$bys;
if (Request::method() == 'POST') { if (Request::method() == 'POST') {
$model = DB::table($header['table'])->setBy($header); $model = DB::table($header['table'])->setBy($header);
foreach ($header['join'] as $join) { foreach ($header['join'] as $join) {
@ -257,20 +269,6 @@ class OrderController extends WorkflowController
return Grid::dataFilters($rows, $header); 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', 'icon' => 'fa-pencil-square-o', 'action' => 'batchEdit', 'display' => $this->access['batchEdit']],
];
$header['cols'] = $cols;
$header['tabs'] = CustomerOrder::$tabs;
$header['bys'] = CustomerOrder::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);
@ -343,6 +341,14 @@ class OrderController extends WorkflowController
'display' => $this->access['show'], 'display' => $this->access['show'],
]]; ]];
$header['buttons'] = [
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['cols'] = $cols;
$header['tabs'] = CustomerOrder::$tabs2;
$header['bys'] = CustomerOrder::$bys;
if (Request::method() == 'POST') { if (Request::method() == 'POST') {
$model = DB::table($header['table'])->setBy($header); $model = DB::table($header['table'])->setBy($header);
@ -387,16 +393,6 @@ class OrderController extends WorkflowController
return Grid::dataFilters($rows, $header); 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'] = CustomerOrder::$tabs2;
$header['bys'] = CustomerOrder::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);
@ -526,6 +522,20 @@ class OrderController extends WorkflowController
'display' => $this->access['show'], 'display' => $this->access['show'],
]]; ]];
$header['buttons'] = [
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['left_buttons'] = [
['name' => '修改预计发货日期', 'color' => 'default', 'icon' => 'fa-file-text-o', 'action' => 'deliveryPlan', 'display' => $this->access['deliveryPlan']],
['name' => '修改物流信息', 'color' => 'default', 'action' => 'logisticsPlan', 'display' => $this->access['logisticsPlan']],
['name' => '修改运费支付方式', 'color' => 'default', 'action' => 'deliveryEdit', 'display' => $this->access['deliveryEdit']],
];
$header['cols'] = $cols;
$header['tabs'] = CustomerOrder::$tabs3;
$header['bys'] = CustomerOrder::$bys;
if (Request::method() == 'POST') { if (Request::method() == 'POST') {
$model = DB::table($header['table'])->setBy($header); $model = DB::table($header['table'])->setBy($header);
foreach ($header['join'] as $join) { foreach ($header['join'] as $join) {
@ -582,22 +592,6 @@ class OrderController extends WorkflowController
return Grid::dataFilters($rows, $header); 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', 'icon' => 'fa-file-text-o', 'action' => 'deliveryPlan', 'display' => $this->access['deliveryPlan']],
['name' => '修改物流信息', 'color' => 'default', 'action' => 'logisticsPlan', 'display' => $this->access['logisticsPlan']],
['name' => '修改运费支付方式', 'color' => 'default', 'action' => 'deliveryEdit', 'display' => $this->access['deliveryEdit']],
];
$header['cols'] = $cols;
$header['tabs'] = CustomerOrder::$tabs3;
$header['bys'] = CustomerOrder::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -30,8 +30,6 @@ class SampleApplyController extends WorkflowController
$cols = $header['cols']; $cols = $header['cols'];
$cols = $header['cols'];
// 自定义列 // 自定义列
$customFields = [ $customFields = [
'quantity' => [ 'quantity' => [
@ -62,6 +60,18 @@ class SampleApplyController extends WorkflowController
'display' => $this->access['show'], 'display' => $this->access['show'],
]]; ]];
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['right_buttons'] = [
['name' => '关闭', 'color' => 'default', 'icon' => 'fa-lock', 'action' => 'close', 'display' => $this->access['close']],
];
$header['cols'] = $cols;
$header['tabs'] = SampleApply::$tabs;
$header['bys'] = SampleApply::$bys;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -97,20 +107,6 @@ class SampleApplyController extends WorkflowController
return Grid::dataFilters($rows, $header); return Grid::dataFilters($rows, $header);
} }
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['right_buttons'] = [
['name' => '关闭', 'color' => 'default', 'icon' => 'fa-lock', 'action' => 'close', 'display' => $this->access['close']],
];
$header['cols'] = $cols;
$header['tabs'] = SampleApply::$tabs;
$header['bys'] = SampleApply::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);
@ -133,6 +129,18 @@ class SampleApplyController extends WorkflowController
'display' => $this->access['show'], 'display' => $this->access['show'],
]]; ]];
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['right_buttons'] = [
['name' => '关闭', 'color' => 'default', 'icon' => 'fa-lock', 'action' => 'close', 'display' => $this->access['close']],
];
$header['cols'] = $cols;
$header['tabs'] = SampleApply::$tabs2;
$header['bys'] = SampleApply::$bys;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -159,20 +167,6 @@ class SampleApplyController extends WorkflowController
return Grid::dataFilters($rows, $header); return Grid::dataFilters($rows, $header);
} }
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['right_buttons'] = [
['name' => '关闭', 'color' => 'default', 'icon' => 'fa-lock', 'action' => 'close', 'display' => $this->access['close']],
];
$header['cols'] = $cols;
$header['tabs'] = SampleApply::$tabs2;
$header['bys'] = SampleApply::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -32,6 +32,13 @@ class TypeController extends DefaultController
'display' => $this->access['edit'], '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'] = CustomerOrderType::$tabs;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -54,15 +61,6 @@ class TypeController extends DefaultController
return Grid::dataFilters($rows, $header); 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'] = CustomerOrderType::$tabs;
$header['bys'] = CustomerOrderType::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -13,17 +13,6 @@ class CustomerOrderType extends BaseModel
] ]
]; ];
public static $bys = [
'name' => 'by',
'items' => [
['value' => '', 'name' => '全部'],
['value' => 'divider'],
['value' => 'day', 'name' => '今日创建'],
['value' => 'week', 'name' => '本周创建'],
['value' => 'month', 'name' => '本月创建'],
]
];
public function scopeDialog($q, $value) public function scopeDialog($q, $value)
{ {
return $q->whereIn('id', $value)->pluck('name', 'id'); return $q->whereIn('id', $value)->pluck('name', 'id');

View File

@ -1,54 +1,44 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
var table = '{{$header["table"]}}'; components: {
var config = gdoo.grids[table]; gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}';
var config = new gdoo.grid(table);
var grid = config.grid;
grid.remoteDataUrl = '{{url()}}';
grid.autoColumnsToFit = true;
var action = config.action; var action = config.action;
var search = config.search; // 详情页打开方式
action.dialogType = 'layer'; action.dialogType = 'layer';
// 双击行执行的方法
action.rowDoubleClick = action.show;
var options = new agGridOptions(); var setup = config.setup;
var gridDiv = document.querySelector("#{{$header['table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; Vue.onMounted(function() {
options.remoteParams = search.advanced.query; var gridDiv = config.div(136);
options.columnDefs = config.cols; // 初始化数据
options.onRowDoubleClicked = function (params) { grid.remoteData({page: 1}, function(res) {
if (params.node.rowPinned) { config.init(res);
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);
}
}); });
config.grid = options; return setup;
})(jQuery); }
}).mount("#{{$header['master_table']}}-page");
</script> </script>
@include('footers')

View File

@ -1,20 +1,32 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
components: {
gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}'; var table = '{{$header["master_table"]}}';
var config = gdoo.grids[table];
var action = config.action;
var search = config.search;
var config = new gdoo.grid(table);
var grid = config.grid;
grid.remoteDataUrl = '{{url()}}';
var action = config.action;
// 详情页打开方式
action.dialogType = 'layer'; action.dialogType = 'layer';
// 双击行执行的方法
action.rowDoubleClick = action.show;
action.logisticsPlan = function() { action.logisticsPlan = function() {
var me = this; var me = this;
@ -108,41 +120,16 @@
} }
} }
var options = new agGridOptions(); var setup = config.setup;
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; Vue.onMounted(function() {
options.autoColumnsToFit = false; var gridDiv = config.div(136);
options.remoteParams = search.advanced.query; // 初始化数据
options.columnDefs = config.cols; grid.remoteData({page: 1}, function(res) {
options.onRowDoubleClicked = function (params) { config.init(res);
if (params.node.rowPinned) { });
return;
}
if (params.data == undefined) {
return;
}
if (params.data.master_id > 0) {
action.show(params.data, 'order_order_show_delivery', '销售订单(发货)');
}
};
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; return setup;
})(jQuery); }
}).mount("#{{$header['master_table']}}-page");
</script> </script>
@include('footers')

View File

@ -1,57 +1,43 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
Vue.createApp({
(function ($) { components: {
gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}'; var table = '{{$header["master_table"]}}';
var config = gdoo.grids[table];
var config = new gdoo.grid(table);
var grid = config.grid;
grid.remoteDataUrl = '{{url()}}';
var action = config.action; var action = config.action;
var search = config.search; // 详情页打开方式
action.dialogType = 'layer'; action.dialogType = 'layer';
// 双击行执行的方法
action.rowDoubleClick = action.show;
var options = new agGridOptions(); var setup = config.setup;
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; Vue.onMounted(function() {
options.autoColumnsToFit = false; var gridDiv = config.div(136);
options.remoteParams = search.advanced.query; // 初始化数据
options.columnDefs = config.cols; grid.remoteData({page: 1}, function(res) {
options.onRowDoubleClicked = function (params) { config.init(res);
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; return setup;
})(jQuery); }
}).mount("#{{$header['master_table']}}-page");
</script> </script>
@include('footers')

View File

@ -1,56 +1,43 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
components: {
gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}'; var table = '{{$header["master_table"]}}';
var config = gdoo.grids[table];
var action = config.action;
var search = config.search;
action.dialogType = 'layer'; var config = new gdoo.grid(table);
var grid = config.grid;
grid.remoteDataUrl = '{{url()}}';
var options = new agGridOptions(); var action = config.action;
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid"); // 详情页打开方式
gridDiv.style.height = getPanelHeight(48); action.dialogType = 'layer';
// 双击行执行的方法
action.rowDoubleClick = action.show;
options.remoteDataUrl = '{{url()}}'; var setup = config.setup;
options.autoColumnsToFit = false;
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); Vue.onMounted(function() {
var gridDiv = config.div(136);
// 读取数据 // 初始化数据
options.remoteData({page: 1}); grid.remoteData({page: 1}, function(res) {
config.init(res);
// 绑定自定义事件 });
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; return setup;
})(jQuery); }
}).mount("#{{$header['master_table']}}-page");
</script> </script>
@include('footers')

View File

@ -6,7 +6,7 @@
<a class="btn btn-sm btn-default" data-toggle="{{$search['table']}}" data-action="export"><i class="fa fa-share"></i> 导出</a> <a class="btn btn-sm btn-default" data-toggle="{{$search['table']}}" data-action="export"><i class="fa fa-share"></i> 导出</a>
</div> </div>
<div class='list-jqgrid'> <div class='gdoo-list-grid'>
<div id="{{$search['table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div id="{{$search['table']}}-grid" style="width:100%;" class="ag-theme-balham"></div>
</div> </div>
</div> </div>

View File

@ -1,7 +1,7 @@
<div class="panel b-a" id="{{$header['master_table']}}-controller"> <div class="panel b-a" id="{{$header['master_table']}}-controller">
@include('headers') @include('headers')
<div class='list-jqgrid'> <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" style="width:100%;" class="ag-theme-balham"></div>
</div> </div>
</div> </div>
@ -17,12 +17,11 @@
grid.remoteParams = params; grid.remoteParams = params;
grid.defaultColDef.suppressMenu = true; grid.defaultColDef.suppressMenu = true;
//grid.defaultColDef.sortable = false;
grid.defaultColDef.filter = false; grid.defaultColDef.filter = false;
// grid.autoColumnsToFit = false;
grid.singleClickEdit = true; grid.singleClickEdit = true;
grid.rowSelection = 'single'; grid.rowSelection = 'single';
grid.suppressCellSelection = false; grid.suppressCellSelection = false;
grid.columnDefs = [ grid.columnDefs = [
{cellClass:'text-center', field: 'sn', type: 'sn', headerName: '序号', width: 50}, {cellClass:'text-center', field: 'sn', type: 'sn', headerName: '序号', width: 50},
{cellClass:'text-center', field: 'product_code', headerName: '产品编码', width: 100}, {cellClass:'text-center', field: 'product_code', headerName: '产品编码', width: 100},
@ -101,7 +100,6 @@
if (data.action == 'export') { if (data.action == 'export') {
action.export(data, '生产计划总表'); action.export(data, '生产计划总表');
} }
}); });
})(jQuery); })(jQuery);

View File

@ -1,7 +1,7 @@
<div class="panel b-a" id="{{$header['master_table']}}-controller"> <div class="panel b-a" id="{{$header['master_table']}}-controller">
@include('headers') @include('headers')
<div class='list-jqgrid'> <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" style="width:100%;" class="ag-theme-balham"></div>
</div> </div>
</div> </div>

View File

@ -1,19 +1,33 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script>
(function ($) {
var table = '{{$header["master_table"]}}';
var config = gdoo.grids[table];
var action = config.action;
var search = config.search;
<script>
Vue.createApp({
components: {
gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}';
var config = new gdoo.grid(table);
var grid = config.grid;
grid.remoteDataUrl = '{{url()}}';
grid.autoColumnsToFit = true;
var action = config.action;
// 详情页打开方式
action.dialogType = 'layer'; action.dialogType = 'layer';
// 双击行执行的方法
action.rowDoubleClick = action.show;
// 关闭使用 // 关闭使用
action.close = function(data) { action.close = function(data) {
@ -25,7 +39,7 @@
rows.forEach(function(row) { rows.forEach(function(row) {
ids.push(row.id); ids.push(row.id);
}); });
$.post(app.url('order/sample-apply/close'), {ids: ids}, function(res) { $.post(app.url('order/sampleApply/close'), {ids: ids}, function(res) {
toastrSuccess(res.data); toastrSuccess(res.data);
grid.remoteData(); grid.remoteData();
}); });
@ -35,41 +49,16 @@
} }
} }
var options = new agGridOptions(); var setup = config.setup;
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; Vue.onMounted(function() {
options.remoteParams = search.advanced.query; var gridDiv = config.div(136);
options.columnDefs = config.cols; // 初始化数据
options.autoColumnsToFit = false; grid.remoteData({page: 1}, function(res) {
options.onRowDoubleClicked = function (params) { config.init(res);
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; return setup;
})(jQuery); }
}).mount("#{{$header['master_table']}}-page");
</script> </script>
@include('footers')

View File

@ -1,19 +1,33 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script>
(function ($) {
var table = '{{$header["master_table"]}}';
var config = gdoo.grids[table];
var action = config.action;
var search = config.search;
<script>
Vue.createApp({
components: {
gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}';
var config = new gdoo.grid(table);
var grid = config.grid;
grid.remoteDataUrl = '{{url()}}';
grid.autoColumnsToFit = true;
var action = config.action;
// 详情页打开方式
action.dialogType = 'layer'; action.dialogType = 'layer';
// 双击行执行的方法
action.rowDoubleClick = action.show;
// 关闭使用 // 关闭使用
action.close = function(data) { action.close = function(data) {
@ -25,7 +39,7 @@
rows.forEach(function(row) { rows.forEach(function(row) {
ids.push(row.id); ids.push(row.id);
}); });
$.post(app.url('order/sample-apply/close'), {ids: ids}, function(res) { $.post(app.url('order/sampleApply/close'), {ids: ids}, function(res) {
toastrSuccess(res.data); toastrSuccess(res.data);
grid.remoteData(); grid.remoteData();
}); });
@ -34,42 +48,17 @@
return; return;
} }
} }
var options = new agGridOptions();
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; var setup = config.setup;
options.remoteParams = search.advanced.query;
options.columnDefs = config.cols;
options.autoColumnsToFit = false;
options.onRowDoubleClicked = function (params) {
if (params.node.rowPinned) {
return;
}
if (params.data == undefined) {
return;
}
if (params.data.master_id > 0) {
action.show(params.data);
}
};
new agGrid.Grid(gridDiv, options); Vue.onMounted(function() {
var gridDiv = config.div(136);
// 读取数据 // 初始化数据
options.remoteData({page: 1}); grid.remoteData({page: 1}, function(res) {
config.init(res);
// 绑定自定义事件 });
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; return setup;
})(jQuery); }
}).mount("#{{$header['master_table']}}-page");
</script> </script>
@include('footers')

View File

@ -1,52 +1,42 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
var table = '{{$header["table"]}}'; components: {
var config = gdoo.grids[table]; 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 action = config.action;
var search = config.search; // 双击行执行的方法
action.rowDoubleClick = action.edit;
var options = new agGridOptions();
var gridDiv = document.querySelector("#{{$header['table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; var setup = config.setup;
options.remoteParams = search.advanced.query;
options.columnDefs = config.cols;
options.onRowDoubleClicked = function (params) {
if (params.node.rowPinned) {
return;
}
if (params.data == undefined) {
return;
}
if (params.data.id > 0) {
action.edit(params.data);
}
};
new agGrid.Grid(gridDiv, options); Vue.onMounted(function() {
var gridDiv = config.div(136);
// 读取数据 // 初始化数据
options.remoteData({page: 1}); grid.remoteData({page: 1}, function(res) {
config.init(res);
// 绑定自定义事件 });
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; return setup;
})(jQuery); }
}).mount("#{{$header['master_table']}}-page");
</script> </script>
@include('footers')

View File

@ -1,5 +1,5 @@
<div class="wrapper-sm p-t-none"> <div class="wrapper-sm p-t-none">
<div class="list-jqgrid"> <div class="gdoo-list-grid">
<div id="order-goods-widget" class="ag-theme-balham" style="width:100%;height:200px;"></div> <div id="order-goods-widget" class="ag-theme-balham" style="width:100%;height:200px;"></div>
</div> </div>
</div> </div>

View File

@ -4,7 +4,7 @@
} }
</style> </style>
<div class="wrapper-sm p-t-none"> <div class="wrapper-sm p-t-none">
<div class="list-jqgrid"> <div class="gdoo-list-grid">
<div id="order-index-widget" class="ag-theme-balham" style="width:100%;height:200px;"></div> <div id="order-index-widget" class="ag-theme-balham" style="width:100%;height:200px;"></div>
</div> </div>
</div> </div>

View File

@ -36,6 +36,17 @@ class MaterialController extends DefaultController
'display' => $this->access['edit'], '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', 'icon' => 'fa-file-text-o', 'action' => 'config', 'display' => 1],
];
$header['cols'] = $cols;
$header['tabs'] = Material::$tabs;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -57,20 +68,6 @@ class MaterialController extends DefaultController
return Grid::dataFilters($rows, $header); 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', 'icon' => 'fa-file-text-o', 'action' => 'config', 'display' => 1],
];
$header['cols'] = $cols;
$header['tabs'] = Material::$tabs;
$header['bys'] = Material::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -36,6 +36,14 @@ class PlanController extends WorkflowController
'display' => $this->access['edit'], 'display' => $this->access['edit'],
]]; ]];
$header['buttons'] = [
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['cols'] = $cols;
$header['tabs'] = Plan::$tabs;
$header['bys'] = Plan::$bys;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -57,15 +65,6 @@ class PlanController extends WorkflowController
return Grid::dataFilters($rows, $header); return Grid::dataFilters($rows, $header);
} }
$header['buttons'] = [
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['cols'] = $cols;
$header['tabs'] = Plan::$tabs;
$header['bys'] = Plan::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -7,20 +7,9 @@ class Material extends BaseModel
protected $table = 'product_material'; protected $table = 'product_material';
public static $tabs = [ public static $tabs = [
'name' => 'tab', 'name' => 'tab',
'items' => [ 'items' => [
['value' => 'material.index', 'url' => 'produce/material/index', 'name' => '原辅料档案'], ['value' => 'material.index', 'url' => 'produce/material/index', 'name' => '原辅料档案'],
] ]
]; ];
public static $bys = [
'name' => 'by',
'items' => [
['value' => '', 'name' => '全部'],
['value' => 'divider'],
['value' => 'day', 'name' => '今日创建'],
['value' => 'week', 'name' => '本周创建'],
['value' => 'month', 'name' => '本月创建'],
]
];
} }

View File

@ -1,17 +1,33 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
var table = '{{$header["table"]}}'; components: {
var config = gdoo.grids[table]; gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}';
var config = new gdoo.grid(table);
var grid = config.grid;
grid.remoteDataUrl = '{{url()}}';
grid.autoColumnsToFit = true;
var action = config.action; var action = config.action;
var search = config.search; // 详情页打开方式
action.dialogType = 'layer';
// 双击行执行的方法
action.rowDoubleClick = action.show;
action.config = function() { action.config = function() {
var me = this; var me = this;
@ -26,15 +42,6 @@
skin: 'layui-layer-gdoo', skin: 'layui-layer-gdoo',
scrollbar: false, scrollbar: false,
closeBtn: false, closeBtn: false,
/*
success: function(layer) {
console.log(layer);
var w = $(window).width();
if (w < 767) {
layer.width('auto');
}
},
*/
type: 2, type: 2,
content: url, content: url,
}); });
@ -43,41 +50,16 @@
} }
} }
var options = new agGridOptions(); var setup = config.setup;
var gridDiv = document.querySelector("#{{$header['table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; Vue.onMounted(function() {
options.remoteParams = search.advanced.query; var gridDiv = config.div(136);
options.columnDefs = config.cols; // 初始化数据
options.rowSelection = 'single'; grid.remoteData({page: 1}, function(res) {
options.onRowDoubleClicked = function (params) { config.init(res);
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);
}
}); });
config.grid = options; return setup;
})(jQuery); }
}).mount("#{{$header['master_table']}}-page");
</script> </script>
@include('footers')

View File

@ -8,7 +8,7 @@
<span id="plan_info"></span> <span id="plan_info"></span>
</div> </div>
<div class='list-jqgrid'> <div class='gdoo-list-grid'>
<div id="material_plan-grid" style="width:100%;" class="ag-theme-balham"></div> <div id="material_plan-grid" style="width:100%;" class="ag-theme-balham"></div>
</div> </div>
</div> </div>

View File

@ -25,8 +25,8 @@ var master_id = '{{$form["row"]["id"]}}';
// grid初始化事件 // grid初始化事件
gdoo.event.set('grid.produce_plan_data', { gdoo.event.set('grid.produce_plan_data', {
init() { ready(me) {
grid = this; grid = me;
grid.enableCellTextSelection = false; grid.enableCellTextSelection = false;
grid.enableRangeSelection = true; grid.enableRangeSelection = true;
grid.suppressContextMenu = false; grid.suppressContextMenu = false;
@ -38,7 +38,6 @@ gdoo.event.set('grid.produce_plan_data', {
var field = params.colDef.field; var field = params.colDef.field;
var value = params.value || 0; var value = params.value || 0;
var style = {}; var style = {};
// 'font-weight':'bold',
if (field == "xqzc_num" && value > 0) { if (field == "xqzc_num" && value > 0) {
style = {'color':'red'}; style = {'color':'red'};
} }
@ -56,9 +55,6 @@ gdoo.event.set('grid.produce_plan_data', {
} }
return style; return style;
}; };
},
ready(me) {
grid = me;
grid.dataKey = 'product_id'; grid.dataKey = 'product_id';
}, },
onSaveAfter(res) { onSaveAfter(res) {

View File

@ -1,56 +1,43 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="gdoo-list panel">
<div class="panel no-border" id="{{$header['master_table']}}-controller"> <div class="gdoo-list-header">
@include('headers') <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div class='list-jqgrid'> </div>
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div> <div class='gdoo-list-grid'>
<div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
components: {
gdooGridHeader,
},
setup(props, ctx) {
var table = '{{$header["master_table"]}}'; 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 action = config.action;
var search = config.search;
action.dialogType = 'layer'; action.dialogType = 'layer';
// 双击行执行的方法
var options = new agGridOptions(); action.rowDoubleClick = action.edit;
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
gridDiv.style.height = getPanelHeight(48);
options.remoteDataUrl = '{{url()}}'; var setup = config.setup;
options.remoteParams = search.advanced.query;
options.columnDefs = config.cols;
options.rowSelection = 'single';
options.autoColumnsToFit = false;
options.onRowDoubleClicked = function (params) {
if (params.node.rowPinned) {
return;
}
if (params.data == undefined) {
return;
}
if (params.data.master_id > 0) {
action.show(params.data);
}
};
new agGrid.Grid(gridDiv, options); Vue.onMounted(function() {
var gridDiv = config.div(136);
// 读取数据 // 初始化数据
options.remoteData({page: 1}); grid.remoteData({page: 1}, function(res) {
config.init(res);
// 绑定自定义事件 });
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; return setup;
})(jQuery); }
}).mount("#{{$header['master_table']}}-page");
</script> </script>
@include('footers')

View File

@ -6,7 +6,7 @@
<a class="btn btn-sm btn-default" data-toggle="material_plan" data-action="export"><i class="fa fa-share"></i> 导出</a> <a class="btn btn-sm btn-default" data-toggle="material_plan" data-action="export"><i class="fa fa-share"></i> 导出</a>
</div> </div>
<div class='list-jqgrid'> <div class='gdoo-list-grid'>
<div id="material_plan-grid" style="width:100%;" class="ag-theme-balham"></div> <div id="material_plan-grid" style="width:100%;" class="ag-theme-balham"></div>
</div> </div>
</div> </div>

View File

@ -25,13 +25,25 @@ class CategoryController extends DefaultController
$cols = $header['cols']; $cols = $header['cols'];
$cols['sequence_sn']['hide'] = true;
$cols['name']['hide'] = true;
$cols['actions']['options'] = [[ $cols['actions']['options'] = [[
'name' => '编辑', 'name' => '编辑',
'action' => 'edit', 'action' => 'edit',
'display' => $this->access['edit'], 'display' => $this->access['edit'],
]]; ]];
unset($cols['checkbox']); unset($cols['checkbox']);
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['cols'] = $cols;
$header['tabs'] = ProductCategory::$tabs;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -51,20 +63,9 @@ class CategoryController extends DefaultController
$model->select($header['select']); $model->select($header['select']);
$rows = $model->get()->toNested(); $rows = $model->get()->toNested();
$items = Grid::dataFilters($rows, $header); return Grid::dataFilters($rows, $header);
return $this->json($items, true);
} }
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['cols'] = $cols;
$header['tabs'] = ProductCategory::$tabs;
$header['bys'] = ProductCategory::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -44,6 +44,18 @@ class ProductController extends DefaultController
'display' => $this->access['edit'], 'display' => $this->access['edit'],
]]; ]];
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['right_buttons'] = [
['name' => '导入', 'color' => 'default', 'icon' => 'fa-mail-reply', 'action' => 'import', 'display' => $this->access['import']],
];
$header['cols'] = $cols;
$header['tabs'] = Product::$tabs;
$header['bys'] = Product::$bys;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -72,19 +84,6 @@ class ProductController extends DefaultController
return Grid::dataFilters($rows, $header); return Grid::dataFilters($rows, $header);
} }
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['right_buttons'] = [
['name' => '导入', 'color' => 'default', 'icon' => 'fa-mail-reply', 'action' => 'import', 'display' => $this->access['import']],
];
$header['cols'] = $cols;
$header['tabs'] = Product::$tabs;
$header['bys'] = Product::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -30,6 +30,13 @@ class UnitController extends DefaultController
'display' => $this->access['edit'], 'display' => $this->access['edit'],
]]; ]];
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['cols'] = $cols;
$header['tabs'] = ProductUnit::$tabs;
$search = $header['search_form']; $search = $header['search_form'];
$query = $search['query']; $query = $search['query'];
@ -51,15 +58,6 @@ class UnitController extends DefaultController
return Grid::dataFilters($rows, $header); return Grid::dataFilters($rows, $header);
} }
$header['buttons'] = [
['name' => '删除', 'icon' => 'fa-remove', 'action' => 'delete', 'display' => $this->access['delete']],
['name' => '导出', 'icon' => 'fa-share', 'action' => 'export', 'display' => 1],
];
$header['cols'] = $cols;
$header['tabs'] = ProductUnit::$tabs;
$header['bys'] = ProductUnit::$bys;
$header['js'] = Grid::js($header);
return $this->display([ return $this->display([
'header' => $header, 'header' => $header,
]); ]);

View File

@ -12,17 +12,6 @@ class ProductCategory extends BaseModel
['value' => 'category.index', 'url' => 'product/category/index', 'name' => '产品类别'], ['value' => 'category.index', 'url' => 'product/category/index', 'name' => '产品类别'],
] ]
]; ];
public static $bys = [
'name' => 'by',
'items' => [
['value' => '', 'name' => '全部'],
['value' => 'divider'],
['value' => 'day', 'name' => '今日创建'],
['value' => 'week', 'name' => '本周创建'],
['value' => 'month', 'name' => '本月创建'],
]
];
public function scopeType($query, $type = 1) public function scopeType($query, $type = 1)
{ {

View File

@ -12,17 +12,4 @@ class ProductUnit extends BaseModel
['value' => 'unit.index', 'url' => 'product/unit/index', 'name' => '计量单位'], ['value' => 'unit.index', 'url' => 'product/unit/index', 'name' => '计量单位'],
] ]
]; ];
public static $bys = [
'name' => 'by',
'items' => [
['value' => '', 'name' => '全部'],
['value' => 'enabled', 'name' => '启用'],
['value' => 'disabled', 'name' => '禁用'],
['value' => 'divider'],
['value' => 'day', 'name' => '今日创建'],
['value' => 'week', 'name' => '本周创建'],
['value' => 'month', 'name' => '本月创建'],
]
];
} }

View File

@ -1,26 +1,28 @@
{{$header["js"]}} <div class="gdoo-list-page" id="{{$header['master_table']}}-page">
<div class="panel no-border" id="{{$header['table']}}-controller"> <div class="gdoo-list panel">
@include('headers') <div class="gdoo-list-header">
<div class="list-jqgrid"> <gdoo-grid-header :header="header" :grid="grid" :action="action" />
<div id="{{$header['table']}}-grid" class="ag-theme-balham"></div> </div>
<div class="ag-theme-balham" id="ag-pagination"></div> <div class='gdoo-list-grid'>
<div class="clearfix"></div> <div id="{{$header['master_table']}}-grid" class="ag-theme-balham"></div>
</div>
</div> </div>
</div> </div>
<script> <script>
(function ($) { Vue.createApp({
var table = '{{$header["table"]}}'; components: {
var config = gdoo.grids[table]; gdooGridHeader,
var action = config.action; },
var search = config.search; 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"); var grid = config.grid;
gridDiv.style.height = getPanelHeight(11); grid.autoColumnsToFit = true;
grid.remoteDataUrl = '{{url()}}';
config.cols[0]['hide'] = true;
config.cols[1]['hide'] = true;
grid.autoGroupColumnDef = { grid.autoGroupColumnDef = {
headerName: '名称', headerName: '名称',
width: 250, width: 250,
@ -31,43 +33,24 @@
}; };
grid.treeData = true; grid.treeData = true;
grid.groupDefaultExpanded = -1; grid.groupDefaultExpanded = -1;
grid.getDataPath = function(data) { grid.getDataPath = function(data) {
return data.tree_path; return data.tree_path;
}; };
grid.remoteDataUrl = '{{url()}}'; var action = config.action;
grid.remoteParams = search.advanced.query; // 双击行执行的方法
grid.columnDefs = config.cols; action.rowDoubleClick = action.edit;
grid.onRowDoubleClicked = function (params) {
if (params.node.rowPinned) {
return;
}
if (params.data == undefined) {
return;
}
if (params.data.id > 0) {
params.data.master_id = params.data.id;
action.edit(params.data);
}
};
new agGrid.Grid(gridDiv, grid); var setup = config.setup;
// 读取数据 Vue.onMounted(function() {
grid.remoteData({page: 1}); var gridDiv = config.div(101);
// 初始化数据
// 绑定自定义事件 grid.remoteData({page: 1}, function(res) {
var $gridDiv = $(gridDiv); config.init(res);
$gridDiv.on('click', '[data-toggle="event"]', function () { });
var data = $(this).data();
if (data.master_id > 0) {
action[data.action](data);
}
}); });
return setup;
config.grid = grid; }
}).mount("#{{$header['master_table']}}-page");
})(jQuery); </script>
</script>
@include('footers')

View File

@ -5,7 +5,7 @@
</div> </div>
<div class="col-xs-3"> <div class="col-xs-3">
<div class="list-jqgrid"> <div class="gdoo-list-grid">
<div id="dialog-{{$search['query']['id']}}-tree" style="width:100%;height:380px;" class="ag-theme-balham abc"></div> <div id="dialog-{{$search['query']['id']}}-tree" style="width:100%;height:380px;" class="ag-theme-balham abc"></div>
</div> </div>
</div> </div>

Some files were not shown because too many files have changed in this diff Show More