创建版本
This commit is contained in:
@@ -0,0 +1,149 @@
|
||||
<div class="panel no-border" id="material_plan-controller">
|
||||
|
||||
<div class="wrapper-sm">
|
||||
@include('searchForm7')
|
||||
<a class="btn btn-sm btn-default" data-toggle="material_plan" data-action="filter"><i class="fa fa-search"></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 class='list-jqgrid'>
|
||||
<div id="material_plan-grid" style="width:100%;" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.ag-row {
|
||||
display:table;
|
||||
}
|
||||
.rowspan {
|
||||
background-color: #fff;
|
||||
top: -1px;
|
||||
border-top: 1px solid #d9dcde !important;
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.rowspan_end {
|
||||
border-bottom: 1px solid #d9dcde !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
(function ($) {
|
||||
var searchOpen = false;
|
||||
var table = 'material_plan';
|
||||
var search = JSON.parse('{{json_encode($search)}}');
|
||||
var cols = [
|
||||
{field: "sn", cellClass: "text-center", suppressSizeToFit: true, headerName: "", type: 'sn', width: 40},
|
||||
{field: "dDate", headerName: "日期", sortable: false, suppressMenu: true, cellClass: "text-center", width: 100},
|
||||
{field: "cdwname", headerName: "客户名称", sortable: false, suppressMenu: true, cellClass: "text-center", width: 180},
|
||||
{field: "tax_name", headerName: "开票单位", sortable: false, suppressMenu: true, cellClass: "text-center", width: 180},
|
||||
{field: "cdlcode", headerName: "单据编号", sortable: false, suppressMenu: true, cellClass: "text-center", width: 120},
|
||||
{field: "vtype", headerName: "单据类型", sortable: false, suppressMenu: true, cellClass: "text-center", width: 120},
|
||||
{field: "dgst", headerName: "摘要", sortable: false, suppressMenu: true, cellClass: "text-left", minWidth: 200},
|
||||
{field: "qtfy", headerName: "其他费用", type: "number", sortable: false, suppressMenu: true, cellClass: "text-right", width: 120},
|
||||
{field: "xzfy", headerName: "本次新增费用", type: "number", sortable: false, suppressMenu: true, cellClass: "text-right", width: 120},
|
||||
{field: "sl", headerName: "发货数量", type: "number", sortable: false, suppressMenu: true, cellClass: "text-right", width: 120},
|
||||
{field: "jf", headerName: "发货总金额", type: "number", sortable: false, suppressMenu: true, cellClass: "text-right", width: 120},
|
||||
{field: "bcsyfy", headerName: "使用费用金额", type: "number", sortable: false, suppressMenu: true, cellClass: "text-right", width: 120},
|
||||
{field: "df", headerName: "收款金额", type: "number", sortable: false, suppressMenu: true, cellClass: "text-right", width: 120},
|
||||
{field: "ye", headerName: "余额", type: "number", sortable: false, suppressMenu: true, cellClass: "text-right", width: 120},
|
||||
];
|
||||
|
||||
var grid = new agGridOptions();
|
||||
grid.suppressRowTransform = true;
|
||||
var gridDiv = document.querySelector("#material_plan-grid");
|
||||
gridDiv.style.height = getPanelHeight(12);
|
||||
|
||||
grid.onRowDoubleClicked = function (params) {
|
||||
if (params.node.rowPinned) {
|
||||
return;
|
||||
}
|
||||
var data = params.data;
|
||||
if (data == undefined) {
|
||||
return;
|
||||
}
|
||||
if (data.srcMasterBID > 0) {
|
||||
var key = data.url.replace(/\//g,'_');
|
||||
top.addTab(data.url + '?id=' + data.srcMasterBID, key, data.app_name);
|
||||
}
|
||||
};
|
||||
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
grid.remoteParams = search.query;
|
||||
grid.columnDefs = cols;
|
||||
grid.rowSelection = 'single';
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
|
||||
// 读取数据
|
||||
grid.remoteData({page: 1});
|
||||
|
||||
// 绑定自定义事件
|
||||
var $gridDiv = $(gridDiv);
|
||||
$gridDiv.on('click', '[data-toggle="event"]', function () {
|
||||
var data = $(this).data();
|
||||
if (data.master_id > 0) {
|
||||
action[data.action](data);
|
||||
}
|
||||
});
|
||||
|
||||
var data = search.forms;
|
||||
var search = $("#material_plan-search-form-advanced");
|
||||
search.searchForm({
|
||||
data: data,
|
||||
advanced: 1,
|
||||
});
|
||||
search.find('#search-submit').on('click', function() {
|
||||
var params = search.serializeArray();
|
||||
$.map(params, function(row) {
|
||||
data[row.name] = row.value;
|
||||
});
|
||||
grid.remoteData(data);
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#material_plan-controller').on('click', '[data-toggle="material_plan"]', function() {
|
||||
var data = $(this).data();
|
||||
if (data.action == 'filter') {
|
||||
searchBox();
|
||||
}
|
||||
if (data.action == 'export') {
|
||||
LocalExport(grid, '客户对账单');
|
||||
}
|
||||
});
|
||||
|
||||
var searchBox = function() {
|
||||
$(search).dialog({
|
||||
title: '筛选条件',
|
||||
modalClass: 'no-padder',
|
||||
buttons: [{
|
||||
text: "取消",
|
||||
'class': "btn-default",
|
||||
click: function() {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
},{
|
||||
text: "确定",
|
||||
'class': "btn-info",
|
||||
click: function() {
|
||||
var data = search.serializeArray();
|
||||
var params = {};
|
||||
search.queryType = 'advanced';
|
||||
$.map(data, function(row) {
|
||||
params[row.name] = row.value;
|
||||
});
|
||||
params['page'] = 1;
|
||||
grid.remoteData(params);
|
||||
$(this).dialog("close");
|
||||
return false;
|
||||
}
|
||||
}]
|
||||
});
|
||||
}
|
||||
|
||||
if (searchOpen == false) {
|
||||
searchBox();
|
||||
}
|
||||
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,73 @@
|
||||
<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>
|
||||
@@ -0,0 +1,29 @@
|
||||
<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>
|
||||
@@ -0,0 +1,32 @@
|
||||
<div class="form-panel">
|
||||
<div class="form-panel-header">
|
||||
<div class="pull-right">
|
||||
</div>
|
||||
{{$form['btn']}}
|
||||
</div>
|
||||
<div class="form-panel-body panel-form-{{$form['action']}}">
|
||||
<form class="form-horizontal form-controller" method="post" id="{{$form['table']}}" name="{{$form['table']}}">
|
||||
|
||||
<div class="alert alert-info alert-dismissable m-b-sm text-sm">
|
||||
本投诉表适用于公司产品质量、售后服务及其他方面的投诉,金额超过1000元的投诉由营销中心客服部打印单据交由副总经理审批。
|
||||
</div>
|
||||
|
||||
{{$form['tpl']}}
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var form_action = '{{$form["action"]}}';
|
||||
(function ($) {
|
||||
// grid初始化事件
|
||||
gdoo.event.set('grid.customer_task_data', {
|
||||
ready(me) {
|
||||
grid = me;
|
||||
grid.dataKey = 'customer_id';
|
||||
}
|
||||
});
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,60 @@
|
||||
{{$header["js"]}}
|
||||
|
||||
<div class="panel no-border" id="{{$header['master_table']}}-controller">
|
||||
@include('headers')
|
||||
<div class='list-jqgrid'>
|
||||
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
(function ($) {
|
||||
var table = '{{$header["master_table"]}}';
|
||||
var config = gdoo.grids[table];
|
||||
var action = config.action;
|
||||
var search = config.search;
|
||||
|
||||
action.dialogType = 'layer';
|
||||
|
||||
// 自定义搜索方法
|
||||
search.searchInit = function (e) {
|
||||
var self = this;
|
||||
}
|
||||
|
||||
var options = new agGridOptions();
|
||||
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
|
||||
gridDiv.style.height = getPanelHeight(48);
|
||||
|
||||
options.remoteDataUrl = '{{url()}}';
|
||||
// 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);
|
||||
|
||||
// 读取数据
|
||||
options.remoteData({page: 1});
|
||||
|
||||
// 绑定自定义事件
|
||||
var $gridDiv = $(gridDiv);
|
||||
$gridDiv.on('click', '[data-toggle="event"]', function () {
|
||||
var data = $(this).data();
|
||||
if (data.master_id > 0) {
|
||||
action[data.action](data);
|
||||
}
|
||||
});
|
||||
config.grid = options;
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@include('footers')
|
||||
@@ -0,0 +1 @@
|
||||
{{$form['tpl']}}
|
||||
@@ -0,0 +1,131 @@
|
||||
<div class="panel b-a" id="{{$header['master_table']}}-controller">
|
||||
@include('headers')
|
||||
|
||||
<div class='list-jqgrid'>
|
||||
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
(function ($) {
|
||||
var table = '{{$header["master_table"]}}';
|
||||
var search = JSON.parse('{{json_encode($header["search_form"])}}');
|
||||
var columns = [];
|
||||
var params = search.query;
|
||||
var grid = new agGridOptions();
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
grid.remoteParams = params;
|
||||
|
||||
grid.defaultColDef.suppressMenu = true;
|
||||
grid.defaultColDef.sortable = true;
|
||||
grid.defaultColDef.filter = false;
|
||||
grid.autoColumnsToFit = false;
|
||||
grid.singleClickEdit = true;
|
||||
grid.rowSelection = 'single';
|
||||
grid.suppressCellSelection = false;
|
||||
|
||||
grid.defaultColDef.cellStyle = function(params) {
|
||||
if (params.node.rowPinned) {
|
||||
return;
|
||||
}
|
||||
var style = {};
|
||||
var field = params.colDef.field;
|
||||
if (params.data.status == '0' && (field == "customer_code" || field == "customer_name")) {
|
||||
style = {'color':'red'};
|
||||
}
|
||||
return style;
|
||||
};
|
||||
|
||||
grid.columnDefs = [
|
||||
{cellClass:'text-center', field: 'sn', type: 'sn', headerName: '序号', width: 50},
|
||||
{cellClass:'text-center', field: 'region_name', headerName: '区域', width: 100},
|
||||
{cellClass:'text-center', field: 'customer_code', headerName: '客户编码', width: 80},
|
||||
{cellClass:'text-left', field: 'customer_name', headerName: '客户名称', width: 180},
|
||||
{cellClass:'text-right', field: 'total_task', headerName: '总任务', width: 80, type:'number', numberOptions: {places:2}, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'total_money', headerName: '累计销售', width: 80, type:'number', numberOptions: {places:4}, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'total_rate', headerName: '总进度', width: 80, type:'number', numberOptions: {places:2}, calcFooter: 'sum'},
|
||||
];
|
||||
|
||||
for(var i=1; i <= 12;i++) {
|
||||
grid.columnDefs.push({
|
||||
cellClass:'text-center', headerName: i + '月',
|
||||
children: [
|
||||
{cellClass:'text-right', headerName:'任务', width: 60, field:'month' + i, type:'number', numberOptions:{places:2, default:'0'}, calcFooter:'sum'},
|
||||
{cellClass:'text-right', headerName:'销售', width: 80, field:'month_'+i+'_money', type:'number', numberOptions:{places:4, default:'0'}, calcFooter:'sum'},
|
||||
{cellClass:'text-right', headerName:'进度', width: 60, field:'month_'+i+'_rate', type:'number', numberOptions:{places:2, default:'0'}}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
for(var i=1; i <= 4;i++) {
|
||||
var dx = {
|
||||
1: '一',
|
||||
2: '二',
|
||||
3: '三',
|
||||
4: '四',
|
||||
};
|
||||
grid.columnDefs.push({
|
||||
cellClass:'text-center', headerName: dx[i] + '季度',
|
||||
children: [
|
||||
{cellClass:'text-right', headerName:'任务', width: 60, field:'quarter_' + i, type:'number', numberOptions:{places:2, default:'0'}, calcFooter:'sum'},
|
||||
{cellClass:'text-right', headerName:'销售', width: 80, field:'quarter_'+i+'_money', type:'number', numberOptions:{places:4, default:'0'}, calcFooter:'sum'},
|
||||
{cellClass:'text-right', headerName:'进度', width: 60, field:'quarter_'+i+'_rate', type:'number', numberOptions:{places:2, default:'0'}}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
gridDiv.style.height = getPanelHeight(12);
|
||||
|
||||
// 读取数据
|
||||
grid.remoteData();
|
||||
|
||||
var search_advanced = $('#' + table + '-search-form-advanced').searchForm({
|
||||
data: search.forms,
|
||||
advanced: true,
|
||||
});
|
||||
|
||||
gdoo.grids[table] = {grid: grid};
|
||||
|
||||
var action = new gridAction(table, '客户销售进度');
|
||||
var panel = $('#' + table + '-controller');
|
||||
|
||||
panel.on('click', '[data-toggle="' + table + '"]', function() {
|
||||
var data = $(this).data();
|
||||
if (data.action == 'filter') {
|
||||
// 过滤数据
|
||||
$('#' + table + '-search-form-advanced').dialog({
|
||||
title: '条件筛选',
|
||||
modalClass: 'no-padder',
|
||||
buttons: [{
|
||||
text: "取消",
|
||||
'class': "btn-default",
|
||||
click: function() {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
},{
|
||||
text: "确定",
|
||||
'class': "btn-info",
|
||||
click: function() {
|
||||
var query = search_advanced.serializeArray();
|
||||
params = {};
|
||||
$.map(query, function(row) {
|
||||
params[row.name] = row.value;
|
||||
});
|
||||
grid.remoteData(params);
|
||||
$(this).dialog("close");
|
||||
return false;
|
||||
}
|
||||
}]
|
||||
});
|
||||
}
|
||||
|
||||
if (data.action == 'export') {
|
||||
action.export(data, '客户销售进度');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,12 @@
|
||||
<div class="form-panel">
|
||||
<div class="form-panel-header">
|
||||
<div class="pull-right">
|
||||
</div>
|
||||
{{$form['btn']}}
|
||||
</div>
|
||||
<div class="form-panel-body panel-form-{{$form['action']}}">
|
||||
<form class="form-horizontal form-controller" method="post" id="{{$form['table']}}" name="{{$form['table']}}">
|
||||
{{$form['tpl']}}
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,116 @@
|
||||
<div class="padder">
|
||||
<div class="m-t-sm m-b-sm">
|
||||
<form id="dialog-{{$search['query']['id']}}-search-form" class="form-inline" method="get">
|
||||
@include('searchForm3')
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="dialog-{{$search['query']['id']}}" class="ag-theme-balham" style="width:100%;height:380px;"></div>
|
||||
|
||||
<script>
|
||||
(function ($) {
|
||||
var search = JSON.parse('{{json_encode($search)}}');
|
||||
var params = search.query;
|
||||
var sid = params.prefix == 1 ? 'sid' : 'id';
|
||||
var gridDiv = document.querySelector("#dialog-{{$search['query']['id']}}");
|
||||
var grid = new agGridOptions();
|
||||
var selectedData = {};
|
||||
var multiple = params.multi == 0 ? false : true;
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
grid.remoteParams = {};
|
||||
//grid.rowMultiSelectWithClick = multiple;
|
||||
grid.rowSelection = multiple ? 'multiple' : 'single';
|
||||
grid.columnDefs = [
|
||||
{suppressMenu: true, cellClass:'text-center', checkboxSelection: true, headerCheckboxSelection: multiple, suppressSizeToFit: true, sortable: false, width: 40},
|
||||
{suppressMenu: true, cellClass:'text-center', sortable: false, field: 'name', headerName: '姓名', minWidth: 160},
|
||||
{suppressMenu: true, cellClass:'text-center', field: 'phone', headerName: '手机', width: 160},
|
||||
{suppressMenu: true, cellClass:'text-center', field: 'id', headerName: 'ID', width: 80}
|
||||
];
|
||||
|
||||
grid.onRowClicked1 = function(row) {
|
||||
var id = row.data[sid];
|
||||
if (selectedData[id]) {
|
||||
delete selectedData[id];
|
||||
row.node.setSelected(false);
|
||||
} else {
|
||||
if (multiple == false) {
|
||||
selectedData = {};
|
||||
}
|
||||
selectedData[id] = row.data.name;
|
||||
}
|
||||
writeSelected();
|
||||
};
|
||||
|
||||
grid.onSelectionChanged = function() {
|
||||
var rows = grid.api.getSelectedRows();
|
||||
selectedData = {};
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
var row = rows[i];
|
||||
selectedData[row.id] = row.name;
|
||||
}
|
||||
writeSelected();
|
||||
};
|
||||
|
||||
grid.onRowDoubleClicked = function (row) {
|
||||
grid.onRowClicked(row);
|
||||
$('#gdoo-dialog-' + params.dialog_index).dialog('close');
|
||||
};
|
||||
|
||||
function initSelected() {
|
||||
selectedData = {};
|
||||
var id = $('#'+params.id).val();
|
||||
var text = $('#'+params.id+'_text').val();
|
||||
if (id && text) {
|
||||
id = id.split(',');
|
||||
text = text.split(',');
|
||||
for (var i = 0; i < id.length; i++) {
|
||||
selectedData[id[i]] = text[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function writeSelected() {
|
||||
var id = [];
|
||||
var text = [];
|
||||
$.each(selectedData, function(k, v) {
|
||||
id.push(k);
|
||||
text.push(v);
|
||||
});
|
||||
$('#'+params.id).val(id.join(','));
|
||||
$('#'+params.id+'_text').val(text.join(','));
|
||||
}
|
||||
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
|
||||
// 读取数据
|
||||
grid.remoteData({page: 1});
|
||||
|
||||
// 数据载入成功
|
||||
grid.remoteSuccessed = function() {
|
||||
initSelected();
|
||||
grid.api.forEachNode(function(node) {
|
||||
// 默认选中
|
||||
$.each(selectedData, function(k, v) {
|
||||
if (node.data[sid] == k) {
|
||||
node.setSelected(true);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
var data = search.forms;
|
||||
var search = $("#dialog-{{$search['query']['id']}}-search-form").searchForm({
|
||||
data: data
|
||||
});
|
||||
search.find('#search-submit').on('click', function() {
|
||||
var params = search.serializeArray();
|
||||
$.map(params, function(row) {
|
||||
data[row.name] = row.value;
|
||||
});
|
||||
grid.remoteData(data);
|
||||
return false;
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,59 @@
|
||||
{{$header["js"]}}
|
||||
|
||||
<div class="panel no-border" id="{{$header['master_table']}}-controller">
|
||||
@include('headers')
|
||||
<div class='list-jqgrid'>
|
||||
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
(function ($) {
|
||||
var table = '{{$header["master_table"]}}';
|
||||
var config = gdoo.grids[table];
|
||||
var action = config.action;
|
||||
var search = config.search;
|
||||
|
||||
action.dialogType = 'layer';
|
||||
|
||||
// 自定义搜索方法
|
||||
search.searchInit = function (e) {
|
||||
var self = this;
|
||||
}
|
||||
|
||||
var options = new agGridOptions();
|
||||
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
|
||||
gridDiv.style.height = getPanelHeight(48);
|
||||
|
||||
options.remoteDataUrl = '{{url()}}';
|
||||
options.remoteParams = search.advanced.query;
|
||||
options.columnDefs = config.cols;
|
||||
options.onRowDoubleClicked = function (params) {
|
||||
if (params.node.rowPinned) {
|
||||
return;
|
||||
}
|
||||
if (params.data == undefined) {
|
||||
return;
|
||||
}
|
||||
if (params.data.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;
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@include('footers')
|
||||
@@ -0,0 +1,14 @@
|
||||
<style>
|
||||
body {
|
||||
background-color: #f0f3f4;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading b-b">
|
||||
<div class="text-sm"><i class="fa text-md fa-list-alt"></i> 职位</div>
|
||||
</div>
|
||||
<div class="form-controller">
|
||||
{{$header['tpl']}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,42 @@
|
||||
<div class="form-panel">
|
||||
<div class="form-panel-header">
|
||||
<div class="pull-right">
|
||||
|
||||
</div>
|
||||
{{$form['btn']}}
|
||||
</div>
|
||||
<div class="form-panel-body panel-form-{{$form['action']}}">
|
||||
<form class="form-horizontal form-controller" method="post" id="{{$form['table']}}" name="{{$form['table']}}">
|
||||
{{$form['tpl']}}
|
||||
|
||||
@if($taxs)
|
||||
<div class="panel m-t-sm">
|
||||
<table class="table">
|
||||
<tr>
|
||||
<th align="left">开票名称</th>
|
||||
<th align="center">开票编号</th>
|
||||
<th align="center">纳税人识别号</th>
|
||||
<th align="center">开户银行</th>
|
||||
<th align="center">银行帐号</th>
|
||||
<th align="center">状态</th>
|
||||
</tr>
|
||||
@foreach($taxs as $tax)
|
||||
<tr>
|
||||
<td>{{$tax['name']}}</td>
|
||||
<td align="center">{{$tax['code']}}</td>
|
||||
<td align="center">{{$tax['tax_number']}}</td>
|
||||
<td align="center">{{$tax['bank_name']}}</td>
|
||||
<td align="center">{{$tax['bank_account']}}</td>
|
||||
<td align="center">@if($tax['status'] == '1') 生效 @else 草稿 @endif</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
</script>
|
||||
@@ -0,0 +1,132 @@
|
||||
<div class="wrapper-xs">
|
||||
<form id="dialog-{{$search['query']['id']}}-search-form" class="form-inline search-inline-form" method="get">
|
||||
@include('searchForm3')
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="dialog-{{$search['query']['id']}}" class="ag-theme-balham" style="width:100%;height:380px;"></div>
|
||||
|
||||
<script>
|
||||
(function ($) {
|
||||
|
||||
var search = JSON.parse('{{json_encode($search)}}');
|
||||
var params = search.query;
|
||||
|
||||
var option = gdoo.formKey(params);
|
||||
var event = gdoo.event.get(option.key);
|
||||
event.trigger('query', params);
|
||||
|
||||
var sid = params.prefix == 1 ? 'sid' : 'id';
|
||||
var grid = new agGridOptions();
|
||||
var multiple = params.multi == 0 ? false : true;
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
grid.remoteParams = params;
|
||||
grid.suppressRowClickSelection = true;
|
||||
grid.rowSelection = multiple ? 'multiple' : 'single';
|
||||
grid.columnDefs = [
|
||||
{suppressMenu: true, cellClass:'text-center', checkboxSelection: true, headerCheckboxSelection: multiple, suppressSizeToFit: true, sortable: false, width: 40},
|
||||
{suppressMenu: true, cellClass:'text-left', sortable: false, field: 'name', headerName: '客户名称', minWidth: 160},
|
||||
{suppressMenu: true, cellClass:'text-center', field: 'code', headerName: '客户编码', width: 60},
|
||||
{suppressMenu: true, cellClass:'text-center', cellRenderer: statusRenderer, field: 'status', headerName: '状态', width: 60},
|
||||
{suppressMenu: true, cellClass:'text-center', field: 'id', headerName: 'ID', width: 60}
|
||||
];
|
||||
|
||||
function statusRenderer(row) {
|
||||
if (row.value == 0) {
|
||||
return '<span style="color:red">禁用</span>';
|
||||
}
|
||||
if (row.value == 1) {
|
||||
return '启用';
|
||||
}
|
||||
}
|
||||
|
||||
grid.onRowClicked = function(row) {
|
||||
var selected = row.node.isSelected();
|
||||
if (selected === false) {
|
||||
row.node.setSelected(true, true);
|
||||
}
|
||||
};
|
||||
|
||||
grid.onRowDoubleClicked = function (row) {
|
||||
var ret = writeSelected();
|
||||
if (ret == true) {
|
||||
$('#gdoo-dialog-' + params.dialog_index).dialog('close');
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 初始化选择
|
||||
*/
|
||||
function initSelected() {
|
||||
if (params.is_grid) {
|
||||
} else {
|
||||
var rows = {};
|
||||
var id = $('#'+option.id).val();
|
||||
if (id) {
|
||||
var ids = id.split(',');
|
||||
for (var i = 0; i < ids.length; i++) {
|
||||
rows[ids[i]] = ids[i];
|
||||
}
|
||||
}
|
||||
grid.api.forEachNode(function(node) {
|
||||
var key = node.data[sid];
|
||||
if (rows[key] != undefined) {
|
||||
node.setSelected(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 写入选中
|
||||
*/
|
||||
function writeSelected() {
|
||||
var rows = grid.api.getSelectedRows();
|
||||
if (params.is_grid) {
|
||||
var list = gdoo.forms[params.form_id];
|
||||
list.api.dialogSelected(params);
|
||||
} else {
|
||||
var id = [];
|
||||
var text = [];
|
||||
$.each(rows, function(k, row) {
|
||||
id.push(row[sid]);
|
||||
text.push(row.name);
|
||||
});
|
||||
$('#'+option.id).val(id.join(','));
|
||||
$('#'+option.id+'_text').val(text.join(','));
|
||||
|
||||
if (event.exist('onSelect')) {
|
||||
return event.trigger('onSelect', multiple ? rows : rows[0]);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
grid.writeSelected = writeSelected;
|
||||
gdoo.dialogs[option.id] = grid;
|
||||
|
||||
var gridDiv = document.querySelector("#dialog-{{$search['query']['id']}}");
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
|
||||
// 读取数据
|
||||
grid.remoteData({page: 1});
|
||||
|
||||
// 数据载入成功
|
||||
grid.remoteSuccessed = function() {
|
||||
initSelected();
|
||||
}
|
||||
|
||||
var data = search.forms;
|
||||
var search = $("#dialog-{{$search['query']['id']}}-search-form").searchForm({
|
||||
data: data
|
||||
});
|
||||
search.find('#search-submit').on('click', function() {
|
||||
var params = search.serializeArray();
|
||||
$.map(params, function(row) {
|
||||
data[row.name] = row.value;
|
||||
});
|
||||
grid.remoteData(data);
|
||||
return false;
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,88 @@
|
||||
{{$header["js"]}}
|
||||
|
||||
<div class="panel no-border" id="{{$header['master_table']}}-controller">
|
||||
@include('headers')
|
||||
<div class='list-jqgrid'>
|
||||
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
(function ($) {
|
||||
var table = '{{$header["master_table"]}}';
|
||||
var config = gdoo.grids[table];
|
||||
var action = config.action;
|
||||
var search = config.search;
|
||||
|
||||
action.dialogType = 'layer';
|
||||
|
||||
// 自定义搜索方法
|
||||
search.searchInit = function (e) {
|
||||
var self = this;
|
||||
}
|
||||
|
||||
action.priceEdit = function() {
|
||||
var me = this;
|
||||
var grid = config.grid;
|
||||
var selections = grid.api.getSelectedRows();
|
||||
var ids = [];
|
||||
$.each(selections, function(i, selection) {
|
||||
ids.push(selection.master_id);
|
||||
});
|
||||
if (ids.length > 0) {
|
||||
formDialog({
|
||||
title: '销售产品价格',
|
||||
dialogClass: 'modal-sm',
|
||||
id: 'price-edit-form',
|
||||
url: app.url(me.bill_url + '/priceEdit', {ids: ids.join(',')}),
|
||||
success: function(res) {
|
||||
toastrSuccess(res.data);
|
||||
grid.remoteData();
|
||||
$(this).dialog("close");
|
||||
},
|
||||
close: function() {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
});
|
||||
} else {
|
||||
toastrError('最少选择一行记录。');
|
||||
}
|
||||
}
|
||||
|
||||
var options = new agGridOptions();
|
||||
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
|
||||
gridDiv.style.height = getPanelHeight(48);
|
||||
|
||||
options.remoteDataUrl = '{{url()}}';
|
||||
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);
|
||||
|
||||
// 读取数据
|
||||
options.remoteData({page: 1});
|
||||
|
||||
// 绑定自定义事件
|
||||
var $gridDiv = $(gridDiv);
|
||||
$gridDiv.on('click', '[data-toggle="event"]', function () {
|
||||
var data = $(this).data();
|
||||
if (data.master_id > 0) {
|
||||
action[data.action](data);
|
||||
}
|
||||
});
|
||||
config.grid = options;
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@include('footers')
|
||||
@@ -0,0 +1,15 @@
|
||||
<div class="wrapper-xs">
|
||||
<form id="price-edit-form" action="{{url()}}" method="post">
|
||||
<div class="form-group m-b-xs">
|
||||
<div class="select-group input-group">
|
||||
<input class="form-control input-sm" placeholder="请选择产品" data-toggle="dialog-view" readonly="readonly" data-title="产品" data-url="product/product/dialog" data-id="product_id" data-multi="0" style="min-width:153px;cursor:pointer;" id="product_id_text">
|
||||
<input type="hidden" id="product_id" name="product_id">
|
||||
<div class="input-group-btn"><a data-toggle="dialog-clear" data-id="product_id" class="btn btn-sm btn-default"><i class="fa fa-times"></i></a></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group m-b-none">
|
||||
<input name="price" autocomplete="off" placeholder="请输入销售价格" class="form-control input-sm">
|
||||
</div>
|
||||
<input name="ids" type="hidden" value="{{$gets['ids']}}">
|
||||
</form>
|
||||
</div>
|
||||
@@ -0,0 +1,34 @@
|
||||
<div class="form-panel">
|
||||
<div class="form-panel-header">
|
||||
<div class="pull-right">
|
||||
</div>
|
||||
{{$form['btn']}}
|
||||
</div>
|
||||
<div class="form-panel-body panel-form-{{$form['action']}}">
|
||||
<form class="form-horizontal form-controller" method="post" id="{{$form['table']}}" name="{{$form['table']}}">
|
||||
{{$form['tpl']}}
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
gdoo.event.set('grid.customer_apply_brand', {
|
||||
ready(me) {
|
||||
me.dataKey = 'sale_money';
|
||||
me.suppressContextMenu = false;
|
||||
}
|
||||
});
|
||||
|
||||
gdoo.event.set('grid.customer_apply_grid', {
|
||||
ready(me) {
|
||||
me.dataKey = 'sale_quantity';
|
||||
me.suppressContextMenu = false;
|
||||
}
|
||||
});
|
||||
|
||||
gdoo.event.set('grid.customer_apply_category', {
|
||||
ready(me) {
|
||||
me.dataKey = 'category_id';
|
||||
me.suppressContextMenu = false;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,60 @@
|
||||
{{$header["js"]}}
|
||||
|
||||
<div class="panel no-border" id="{{$header['master_table']}}-controller">
|
||||
@include('headers')
|
||||
<div class='list-jqgrid'>
|
||||
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
(function ($) {
|
||||
var table = '{{$header["master_table"]}}';
|
||||
var config = gdoo.grids[table];
|
||||
var action = config.action;
|
||||
var search = config.search;
|
||||
|
||||
action.dialogType = 'layer';
|
||||
|
||||
// 自定义搜索方法
|
||||
search.searchInit = function (e) {
|
||||
var self = this;
|
||||
}
|
||||
|
||||
var options = new agGridOptions();
|
||||
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
|
||||
gridDiv.style.height = getPanelHeight(48);
|
||||
|
||||
options.remoteDataUrl = '{{url()}}';
|
||||
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);
|
||||
|
||||
// 读取数据
|
||||
options.remoteData({page: 1});
|
||||
|
||||
// 绑定自定义事件
|
||||
var $gridDiv = $(gridDiv);
|
||||
$gridDiv.on('click', '[data-toggle="event"]', function () {
|
||||
var data = $(this).data();
|
||||
if (data.master_id > 0) {
|
||||
action[data.action](data);
|
||||
}
|
||||
});
|
||||
config.grid = options;
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@include('footers')
|
||||
@@ -0,0 +1,3 @@
|
||||
<form class="form-horizontal form-controller" method="post" id="customer_class" name="customer_class">
|
||||
{{$form['tpl']}}
|
||||
</form>
|
||||
@@ -0,0 +1,122 @@
|
||||
<div class="wrapper-xs">
|
||||
<form id="dialog-{{$search['query']['id']}}-search-form" class="form-inline" method="get">
|
||||
@include('searchForm6')
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="dialog-{{$search['query']['id']}}" class="ag-theme-balham" style="width:100%;height:380px;"></div>
|
||||
|
||||
<script>
|
||||
(function ($) {
|
||||
var search = JSON.parse('{{json_encode($search)}}');
|
||||
var params = search.query;
|
||||
|
||||
var option = gdoo.formKey(params);
|
||||
var event = gdoo.event.get(option.key);
|
||||
event.trigger('query', params);
|
||||
|
||||
var sid = params.prefix == 1 ? 'sid' : 'id';
|
||||
var gridDiv = document.querySelector("#dialog-{{$search['query']['id']}}");
|
||||
var grid = new agGridOptions();
|
||||
var selectedData = {};
|
||||
var multiple = params.multi == 0 ? false : true;
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
grid.remoteParams = params;
|
||||
grid.suppressRowClickSelection = true;
|
||||
grid.rowSelection = multiple ? 'multiple' : 'single';
|
||||
grid.columnDefs = [
|
||||
{suppressMenu: true, cellClass:'text-center', checkboxSelection: true, headerCheckboxSelection: false, suppressSizeToFit: true, sortable: false, width: 40},
|
||||
{suppressMenu: true, field: 'name', headerName: '名称', width: 100},
|
||||
{suppressMenu: true, cellClass:'text-center', field: 'code', headerName: '编码', width: 80},
|
||||
{suppressMenu: true, cellClass:'text-center', field: 'id', headerName: 'ID', width: 60}
|
||||
];
|
||||
|
||||
grid.onRowClicked = function(row) {
|
||||
var selected = row.node.isSelected();
|
||||
if (selected === false) {
|
||||
row.node.setSelected(true, true);
|
||||
}
|
||||
};
|
||||
|
||||
grid.onRowDoubleClicked = function (row) {
|
||||
var ret = writeSelected();
|
||||
if (ret == true) {
|
||||
$('#gdoo-dialog-' + params.dialog_index).dialog('close');
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 初始化选择
|
||||
*/
|
||||
function initSelected() {
|
||||
if (params.is_grid) {
|
||||
} else {
|
||||
var rows = {};
|
||||
var id = $('#'+option.id).val();
|
||||
if (id) {
|
||||
var ids = id.split(',');
|
||||
for (var i = 0; i < ids.length; i++) {
|
||||
rows[ids[i]] = ids[i];
|
||||
}
|
||||
}
|
||||
grid.api.forEachNode(function(node) {
|
||||
var key = node.data[sid];
|
||||
if (rows[key] != undefined) {
|
||||
node.setSelected(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 写入选中
|
||||
*/
|
||||
function writeSelected() {
|
||||
var rows = grid.api.getSelectedRows();
|
||||
if (params.is_grid) {
|
||||
var list = gdoo.forms[params.form_id];
|
||||
list.api.dialogSelected(params);
|
||||
} else {
|
||||
var id = [];
|
||||
var text = [];
|
||||
$.each(rows, function(k, row) {
|
||||
id.push(row[sid]);
|
||||
text.push(row.name);
|
||||
});
|
||||
$('#'+option.id).val(id.join(','));
|
||||
$('#'+option.id+'_text').val(text.join(','));
|
||||
|
||||
if (event.exist('onSelect')) {
|
||||
return event.trigger('onSelect', multiple ? rows : rows[0]);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
grid.writeSelected = writeSelected;
|
||||
gdoo.dialogs[option.id] = grid;
|
||||
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
|
||||
// 读取数据
|
||||
grid.remoteData();
|
||||
|
||||
// 数据载入成功
|
||||
grid.remoteSuccessed = function() {
|
||||
initSelected();
|
||||
}
|
||||
|
||||
var data = search.forms;
|
||||
var search = $("#dialog-{{$search['query']['id']}}-search-form").searchForm({
|
||||
data: data
|
||||
});
|
||||
search.find('#search-submit').on('click', function() {
|
||||
var params = search.serializeArray();
|
||||
$.map(params, function(row) {
|
||||
data[row.name] = row.value;
|
||||
});
|
||||
grid.remoteData(data);
|
||||
return false;
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,64 @@
|
||||
{{$header["js"]}}
|
||||
<div class="panel no-border" id="{{$header['table']}}-controller">
|
||||
@include('headers')
|
||||
<div class="list-jqgrid">
|
||||
<div id="{{$header['table']}}-grid" class="ag-theme-balham"></div>
|
||||
<div class="ag-theme-balham" id="ag-pagination"></div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
(function ($) {
|
||||
var table = '{{$header["table"]}}';
|
||||
var config = gdoo.grids[table];
|
||||
var action = config.action;
|
||||
var search = config.search;
|
||||
|
||||
// 自定义搜索方法
|
||||
search.searchInit = function (e) {
|
||||
var self = this;
|
||||
}
|
||||
|
||||
var grid = new agGridOptions();
|
||||
|
||||
var gridDiv = document.querySelector("#{{$header['table']}}-grid");
|
||||
gridDiv.style.height = getPanelHeight(11);
|
||||
|
||||
config.cols[0]['hide'] = true;
|
||||
config.cols[1]['hide'] = true;
|
||||
grid.autoGroupColumnDef = {
|
||||
headerName: '名称',
|
||||
width: 250,
|
||||
cellRendererParams: {
|
||||
checkbox: true,
|
||||
suppressCount: false,
|
||||
}
|
||||
};
|
||||
grid.treeData = true;
|
||||
grid.groupDefaultExpanded = -1;
|
||||
grid.getDataPath = function(data) {
|
||||
return data.tree_path;
|
||||
};
|
||||
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
grid.remoteParams = search.advanced.query;
|
||||
grid.columnDefs = config.cols;
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
|
||||
// 读取数据
|
||||
grid.remoteData();
|
||||
|
||||
// 绑定自定义事件
|
||||
var $gridDiv = $(gridDiv);
|
||||
$gridDiv.on('click', '[data-toggle="event"]', function () {
|
||||
var data = $(this).data();
|
||||
if (data.master_id > 0) {
|
||||
action[data.action](data);
|
||||
}
|
||||
});
|
||||
|
||||
config.grid = grid;
|
||||
|
||||
})(jQuery);
|
||||
</script>
|
||||
@include('footers')
|
||||
@@ -0,0 +1,4 @@
|
||||
|
||||
<form class="form-horizontal form-controller" method="post" id="{{$form['table']}}" name="{{$form['table']}}">
|
||||
{{$form['tpl']}}
|
||||
</form>
|
||||
@@ -0,0 +1,116 @@
|
||||
<div class="padder">
|
||||
<div class="m-t-sm m-b-sm">
|
||||
<form id="dialog-{{$search['query']['id']}}-search-form" class="form-inline" method="get">
|
||||
@include('searchForm3')
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="dialog-{{$search['query']['id']}}" class="ag-theme-balham" style="width:100%;height:380px;"></div>
|
||||
|
||||
<script>
|
||||
(function ($) {
|
||||
var search = JSON.parse('{{json_encode($search)}}');
|
||||
var params = search.query;
|
||||
var sid = params.prefix == 1 ? 'sid' : 'id';
|
||||
var gridDiv = document.querySelector("#dialog-{{$search['query']['id']}}");
|
||||
var grid = new agGridOptions();
|
||||
var selectedData = {};
|
||||
var multiple = params.multi == 0 ? false : true;
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
grid.remoteParams = {};
|
||||
//grid.rowMultiSelectWithClick = multiple;
|
||||
grid.rowSelection = multiple ? 'multiple' : 'single';
|
||||
grid.columnDefs = [
|
||||
{suppressMenu: true, cellClass:'text-center', checkboxSelection: true, headerCheckboxSelection: multiple, suppressSizeToFit: true, sortable: false, width: 40},
|
||||
{suppressMenu: true, cellClass:'text-center', sortable: false, field: 'name', headerName: '姓名', minWidth: 160},
|
||||
{suppressMenu: true, cellClass:'text-center', field: 'phone', headerName: '手机', width: 160},
|
||||
{suppressMenu: true, cellClass:'text-center', field: 'id', headerName: 'ID', width: 80}
|
||||
];
|
||||
|
||||
grid.onRowClicked1 = function(row) {
|
||||
var id = row.data[sid];
|
||||
if (selectedData[id]) {
|
||||
delete selectedData[id];
|
||||
row.node.setSelected(false);
|
||||
} else {
|
||||
if (multiple == false) {
|
||||
selectedData = {};
|
||||
}
|
||||
selectedData[id] = row.data.name;
|
||||
}
|
||||
writeSelected();
|
||||
};
|
||||
|
||||
grid.onSelectionChanged = function() {
|
||||
var rows = grid.api.getSelectedRows();
|
||||
selectedData = {};
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
var row = rows[i];
|
||||
selectedData[row.id] = row.name;
|
||||
}
|
||||
writeSelected();
|
||||
};
|
||||
|
||||
grid.onRowDoubleClicked = function (row) {
|
||||
grid.onRowClicked(row);
|
||||
$('#gdoo-dialog-' + params.dialog_index).dialog('close');
|
||||
};
|
||||
|
||||
function initSelected() {
|
||||
selectedData = {};
|
||||
var id = $('#'+params.id).val();
|
||||
var text = $('#'+params.id+'_text').val();
|
||||
if (id && text) {
|
||||
id = id.split(',');
|
||||
text = text.split(',');
|
||||
for (var i = 0; i < id.length; i++) {
|
||||
selectedData[id[i]] = text[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function writeSelected() {
|
||||
var id = [];
|
||||
var text = [];
|
||||
$.each(selectedData, function(k, v) {
|
||||
id.push(k);
|
||||
text.push(v);
|
||||
});
|
||||
$('#'+params.id).val(id.join(','));
|
||||
$('#'+params.id+'_text').val(text.join(','));
|
||||
}
|
||||
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
|
||||
// 读取数据
|
||||
grid.remoteData({page: 1});
|
||||
|
||||
// 数据载入成功
|
||||
grid.remoteSuccessed = function() {
|
||||
initSelected();
|
||||
grid.api.forEachNode(function(node) {
|
||||
// 默认选中
|
||||
$.each(selectedData, function(k, v) {
|
||||
if (node.data[sid] == k) {
|
||||
node.setSelected(true);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
var data = search.forms;
|
||||
var search = $("#dialog-{{$search['query']['id']}}-search-form").searchForm({
|
||||
data: data
|
||||
});
|
||||
search.find('#search-submit').on('click', function() {
|
||||
var params = search.serializeArray();
|
||||
$.map(params, function(row) {
|
||||
data[row.name] = row.value;
|
||||
});
|
||||
grid.remoteData(data);
|
||||
return false;
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,59 @@
|
||||
{{$header["js"]}}
|
||||
|
||||
<div class="panel no-border" id="{{$header['master_table']}}-controller">
|
||||
@include('headers')
|
||||
<div class='list-jqgrid'>
|
||||
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
(function ($) {
|
||||
var table = '{{$header["master_table"]}}';
|
||||
var config = gdoo.grids[table];
|
||||
var action = config.action;
|
||||
var search = config.search;
|
||||
|
||||
//action.dialogType = 'layer';
|
||||
|
||||
// 自定义搜索方法
|
||||
search.searchInit = function (e) {
|
||||
var self = this;
|
||||
}
|
||||
|
||||
var options = new agGridOptions();
|
||||
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
|
||||
gridDiv.style.height = getPanelHeight(48);
|
||||
|
||||
options.remoteDataUrl = '{{url()}}';
|
||||
options.remoteParams = search.advanced.query;
|
||||
options.columnDefs = config.cols;
|
||||
options.onRowDoubleClicked = function (params) {
|
||||
if (params.node.rowPinned) {
|
||||
return;
|
||||
}
|
||||
if (params.data == undefined) {
|
||||
return;
|
||||
}
|
||||
if (params.data.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;
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@include('footers')
|
||||
@@ -0,0 +1,14 @@
|
||||
<style>
|
||||
body {
|
||||
background-color: #f0f3f4;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading b-b">
|
||||
<div class="text-sm"><i class="fa text-md fa-list-alt"></i> 职位</div>
|
||||
</div>
|
||||
<div class="form-controller">
|
||||
{{$header['tpl']}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,138 @@
|
||||
<div class="form-panel">
|
||||
<div class="form-panel-header">
|
||||
<div class="pull-right">
|
||||
</div>
|
||||
{{$form['btn']}}
|
||||
|
||||
<a href="javascript:referCustomerDialog();" class="btn btn-sm btn-default">
|
||||
参照价格
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div class="form-panel-body panel-form-{{$form['action']}}">
|
||||
<form class="form-horizontal form-controller" method="post" id="{{$form['table']}}" name="{{$form['table']}}">
|
||||
<div class="panel">
|
||||
{{$form['tpl']}}
|
||||
</div>
|
||||
<div id="tab-content-customer_price">
|
||||
<div id="grid_customer_price_data" class="ag-theme-balham ag-bordered" style="width:100%;"></div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var $table = null;
|
||||
var customer_id = $('#customer_price_customer_id').val();
|
||||
var params = {customer_id: customer_id};
|
||||
|
||||
(function($) {
|
||||
var options = {};
|
||||
options.columns = [
|
||||
{field:'id', hide: true},
|
||||
{field:'product_id', hide: true},
|
||||
{suppressSizeToFit: true, headerName:'', cellRenderer:'optionCellRenderer', width: 60, sortable: false, cellClass: 'text-center', suppressNavigable: true},
|
||||
{headerName: '存货编码', field:'product_code', cellClass:'text-center', suppressNavigable: false, width: 120},
|
||||
{headerName: '产品名称',editable: true,suppressNavigable: false, width: 220,
|
||||
cellEditorParams: {
|
||||
form_type: 'dialog',
|
||||
title: '产品',
|
||||
type: 'product',
|
||||
field: 'product_name',
|
||||
url: 'product/product/dialog',
|
||||
query: {
|
||||
form_id: "customer_price_data",
|
||||
id: "product_id",
|
||||
name: "product_name"
|
||||
}
|
||||
},
|
||||
cellEditor: 'dialogCellEditor',
|
||||
field: 'product_name'
|
||||
},
|
||||
{headerName: '规格型号', field:'product_spec', cellClass:'text-center', suppressNavigable: false, width: 120},
|
||||
{headerName: '产品条码', field:'product_barcode', cellClass:'text-center', suppressNavigable: false, width: 120},
|
||||
{headerName: '计量单位', field:'product_unit', cellClass:'text-center', suppressNavigable: false, width: 120},
|
||||
{headerName: '销售价格', field:'price', editable: true, cellClass:'text-right', width: 120},
|
||||
{headerName: '备注', field:'remark', editable: true, width: 200},
|
||||
];
|
||||
|
||||
options.table = "customer_price_data";
|
||||
options.title = "订单商品";
|
||||
options.heightTop = 12;
|
||||
|
||||
options.links = {
|
||||
product_id: {
|
||||
product_id: "id",
|
||||
product_name: "name",
|
||||
product_code: "code",
|
||||
product_spec: "spec",
|
||||
product_barcode: "barcode",
|
||||
product_unit: "unit_id_name"
|
||||
}
|
||||
};
|
||||
|
||||
var grid = gridForms("customer_price", "customer_price_data", options);
|
||||
grid.dataKey = 'product_id';
|
||||
|
||||
$.post(app.url('customer/price/list'), params, function(res) {
|
||||
if (res.data.length > 0) {
|
||||
grid.api.setRowData(res.data);
|
||||
}
|
||||
});
|
||||
|
||||
// 选择客户事件
|
||||
gdoo.event.set('customer_price.customer_id', {
|
||||
onSelect(row) {
|
||||
if (row.id) {
|
||||
params['customer_id'] = row.id;
|
||||
$.post(app.url('customer/price/list'), params, function(res) {
|
||||
if (res.data.length > 0) {
|
||||
grid.api.setRowData(res.data);
|
||||
} else {
|
||||
grid.api.setRowData([]);
|
||||
grid.api.memoryStore.create({});
|
||||
}
|
||||
});
|
||||
return true;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var referCustomerDialog = function () {
|
||||
var buttons = [{
|
||||
text: "取消",
|
||||
'class': "btn-default",
|
||||
click: function () {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
}];
|
||||
buttons.push({
|
||||
text: '提交',
|
||||
'class': 'btn-info',
|
||||
click: function () {
|
||||
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
|
||||
var rows = refer_customer.api.getSelectedRows();
|
||||
for (var i = 0; i < rows.length; i++) {
|
||||
let row = rows[i];
|
||||
grid.api.memoryStore.create(row);
|
||||
}
|
||||
layer.close(loading);
|
||||
grid.generatePinnedBottomData();
|
||||
$(this).dialog('close');
|
||||
}
|
||||
});
|
||||
$.dialog({
|
||||
title: '参照客户价格',
|
||||
url: '{{url("referCustomer")}}',
|
||||
dialogClass: 'modal-lg',
|
||||
buttons: buttons
|
||||
});
|
||||
};
|
||||
window.referCustomerDialog = referCustomerDialog;
|
||||
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,60 @@
|
||||
{{$header["js"]}}
|
||||
|
||||
<div class="panel no-border" id="{{$header['master_table']}}-controller">
|
||||
@include('headers')
|
||||
<div class='list-jqgrid'>
|
||||
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
(function ($) {
|
||||
var table = '{{$header["master_table"]}}';
|
||||
var config = gdoo.grids[table];
|
||||
var action = config.action;
|
||||
var search = config.search;
|
||||
|
||||
action.dialogType = 'layer';
|
||||
|
||||
// 自定义搜索方法
|
||||
search.searchInit = function (e) {
|
||||
var self = this;
|
||||
}
|
||||
|
||||
var options = new agGridOptions();
|
||||
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
|
||||
gridDiv.style.height = getPanelHeight(48);
|
||||
|
||||
options.remoteDataUrl = '{{url()}}';
|
||||
options.remoteParams = search.advanced.query;
|
||||
options.columnDefs = config.cols;
|
||||
options.onRowDoubleClicked = function (params) {
|
||||
if (params.node.rowPinned) {
|
||||
return;
|
||||
}
|
||||
var data = params.data;
|
||||
if (data == undefined) {
|
||||
return;
|
||||
}
|
||||
if (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;
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@include('footers')
|
||||
@@ -0,0 +1,74 @@
|
||||
<div class="wrapper-xs">
|
||||
<form id="dialog-{{$search['query']['id']}}-search-form" class="form-inline" method="get">
|
||||
@include('searchForm3')
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="dialog-{{$search['query']['id']}}" class="ag-theme-balham" style="width:100%;height:380px;"></div>
|
||||
|
||||
<script>
|
||||
(function ($) {
|
||||
var search = JSON.parse('{{json_encode($search)}}');
|
||||
var params = search.query;
|
||||
|
||||
var option = gdoo.formKey(params);
|
||||
var event = gdoo.event.get(option.key);
|
||||
event.trigger('query', params);
|
||||
|
||||
var sid = params.prefix == 1 ? 'sid' : 'id';
|
||||
var gridDiv = document.querySelector("#dialog-{{$search['query']['id']}}");
|
||||
var grid = new agGridOptions();
|
||||
var selectedData = {};
|
||||
var multiple = params.multi == 0 ? false : true;
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
grid.remoteParams = params;
|
||||
grid.suppressRowClickSelection = true;
|
||||
grid.rowSelection = multiple ? 'multiple' : 'single';
|
||||
grid.columnDefs = [
|
||||
{field:'product_id', hide: true},
|
||||
{suppressMenu: true, cellClass:'text-center', checkboxSelection: true, headerCheckboxSelection: true, suppressSizeToFit: true, sortable: false, width: 40},
|
||||
{headerName:'存货编码', field:'product_code', cellClass:'text-center', suppressNavigable: false, width: 120},
|
||||
{headerName:'产品名称', field: 'product_name', suppressNavigable: false, width: 220},
|
||||
{headerName:'规格型号', field:'product_spec', cellClass:'text-center', suppressNavigable: false, width: 120},
|
||||
{headerName:'产品条码', field:'product_barcode', cellClass:'text-center', suppressNavigable: false, width: 120},
|
||||
{headerName:'计量单位', field:'product_unit', cellClass:'text-center', suppressNavigable: false, width: 120},
|
||||
{headerName:'销售价格', field:'price', cellClass:'text-right', width: 120},
|
||||
{headerName:'备注', field:'remark', width: 200},
|
||||
];
|
||||
|
||||
grid.onRowClicked = function(row) {
|
||||
var selected = row.node.isSelected();
|
||||
if (selected === false) {
|
||||
row.node.setSelected(true, true);
|
||||
}
|
||||
};
|
||||
|
||||
grid.onRowDoubleClicked = function (row) {
|
||||
var ret = writeSelected();
|
||||
if (ret == true) {
|
||||
$('#aike-dialog-' + params.dialog_index).dialog('close');
|
||||
}
|
||||
};
|
||||
|
||||
gdoo.dialogs[option.id] = grid;
|
||||
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
|
||||
// 读取数据
|
||||
grid.remoteData();
|
||||
|
||||
var data = search.forms;
|
||||
var search = $("#dialog-{{$search['query']['id']}}-search-form").searchForm({
|
||||
data: data
|
||||
});
|
||||
search.find('#search-submit').on('click', function() {
|
||||
var params = search.serializeArray();
|
||||
$.map(params, function(row) {
|
||||
data[row.name] = row.value;
|
||||
});
|
||||
grid.remoteData(data);
|
||||
return false;
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,129 @@
|
||||
<div class="panel">
|
||||
<div class="wrapper-sm">
|
||||
|
||||
<form class="form-inline" method="post" id="query-form" name="query-form">
|
||||
|
||||
<div class="form-inline">
|
||||
|
||||
<div class="row">
|
||||
|
||||
<?php $m = date('Y-m-01'); ?>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-12">
|
||||
<label class="control-label">对账客户</label>
|
||||
{{App\Support\Dialog::user('customer', 'customer', '', 0, 0, 135)}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-12">
|
||||
<label class="control-label">开始日期</label>
|
||||
<input class="form-control input-sm" data-toggle="date" type="text" name="start_at" id="start_at" placeholder="开始日期" value="{{$m}}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group m-b-xs">
|
||||
<div class="col-sm-12">
|
||||
<label class="control-label">开始日期</label>
|
||||
<input class="form-control input-sm" data-toggle="date" type="text" id="end_at" placeholder="开始日期" name="end_at" value="{{date('Y-m-d', strtotime("$m +1 month -1 day"))}}">
|
||||
<div class="visible-xs-block m-t"></div>
|
||||
<span class="hidden-xs"> </span>
|
||||
<a href="javascript:formQuery();" class="btn btn-sm btn-info"><i class="icon icon-search"></i> 查询</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="list-jqgrid">
|
||||
<table id="account-single"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var $table = null;
|
||||
var params = {};
|
||||
|
||||
(function($) {
|
||||
|
||||
$table = $("#account-single");
|
||||
var model = [
|
||||
{name: "ccusname", hidden: true, index: 'ccusname', label: '客户名称', width: 100, align: 'center'},
|
||||
{name: "date", index: 'date', label: '单据日期', width: 100, align: 'center'},
|
||||
{name: "ddh", index: 'ddh', label: '订单号', width: 120, align: 'left'},
|
||||
{name: "digest", index: 'digest', label: '摘要', width: 220, align: 'left'},
|
||||
{name: "zp", index: 'zp', label: '赠品金额', width: 180, align: 'right'},
|
||||
{name: "jmoney", index: 'jmoney', label: '本期应收金额', width: 180, align: 'right'},
|
||||
{name: "dmoney", index: 'dmoney', label: '本期收回金额', width: 180, align: 'right'},
|
||||
{name: "balance", index: 'balance', label: '余额', width: 180, align: 'right'}
|
||||
];
|
||||
|
||||
$table.jqGrid({
|
||||
caption: '',
|
||||
datatype: 'json',
|
||||
mtype: 'POST',
|
||||
url: app.url('customer/account/query'),
|
||||
colModel: model,
|
||||
rowNum: 1000,
|
||||
multiselect: false,
|
||||
viewrecords: true,
|
||||
rownumbers: true,
|
||||
height: getPanelHeight(),
|
||||
footerrow: false,
|
||||
postData: params,
|
||||
grouping:true,
|
||||
groupingView : {
|
||||
groupField : ['ccusname'],//分组属性
|
||||
groupColumnShow : [false,false],//是否显示分组列
|
||||
groupText : ['<b>{0}</b>'],//表头显示数据(每组中包含的数据量)
|
||||
groupCollapse :false,//加载数据时是否只显示分组的组信息
|
||||
groupSummary : [false,false],//是否显示汇总 如果为true需要在colModel中进行配置summaryType:'max',summaryTpl:'<b>Max: {0}</b>'
|
||||
groupDataSorted : false,//分组中的数据是否排序
|
||||
groupOrder:['desc','desc'] , //分组后组的排列顺序
|
||||
//showSummaryOnHide: true//是否在分组底部显示汇总信息并且当收起表格时是否隐藏下面的分组
|
||||
},
|
||||
|
||||
gridComplete: function() {
|
||||
$(this).jqGrid('setColsWidth');
|
||||
},
|
||||
loadComplete: function(res) {
|
||||
var me = $(this);
|
||||
me.jqGrid('initPagination', res);
|
||||
}
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
|
||||
|
||||
function formQuery()
|
||||
{
|
||||
var query_form = $('#query-form');
|
||||
var query = query_form.serializeArray();
|
||||
for (var i = 0; i < query.length; i++) {
|
||||
params[query[i].name] = query[i].value;
|
||||
}
|
||||
|
||||
$table.jqGrid('setGridParam', {
|
||||
postData: params,
|
||||
page: 1
|
||||
}).trigger('reloadGrid');
|
||||
}
|
||||
|
||||
function getPanelHeight() {
|
||||
var list = $('.list-jqgrid').position();
|
||||
return top.iframeHeight - list.top - 45;
|
||||
}
|
||||
|
||||
// 框架页面改变大小时会调用此方法
|
||||
function iframeResize() {
|
||||
// 框架改变大小时设置Panel高度
|
||||
$table.jqGrid('setPanelHeight', getPanelHeight());
|
||||
// resize jqgrid大小
|
||||
$table.jqGrid('resizeGrid');
|
||||
}
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,3 @@
|
||||
<form class="form-horizontal form-controller" method="post" id="customer_region" name="customer_region">
|
||||
{{$form['tpl']}}
|
||||
</form>
|
||||
@@ -0,0 +1,134 @@
|
||||
<div class="wrapper-xs">
|
||||
<form id="dialog-{{$search['query']['id']}}-search-form" class="form-inline search-inline-form" method="get">
|
||||
@include('searchForm6')
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="dialog-{{$search['query']['id']}}" class="ag-theme-balham" style="width:100%;height:380px;"></div>
|
||||
|
||||
<script>
|
||||
(function ($) {
|
||||
var search = JSON.parse('{{json_encode($search)}}');
|
||||
var params = search.query;
|
||||
|
||||
var option = gdoo.formKey(params);
|
||||
var event = gdoo.event.get(option.key);
|
||||
event.trigger('query', params);
|
||||
|
||||
var sid = params.prefix == 1 ? 'sid' : 'id';
|
||||
var gridDiv = document.querySelector("#dialog-{{$search['query']['id']}}");
|
||||
var grid = new agGridOptions();
|
||||
var selectedData = {};
|
||||
var multiple = params.multi == 0 ? false : true;
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
grid.remoteParams = params;
|
||||
grid.suppressRowClickSelection = true;
|
||||
grid.rowSelection = multiple ? 'multiple' : 'single';
|
||||
|
||||
grid.autoGroupColumnDef = {
|
||||
headerName: '名称',
|
||||
width: 250,
|
||||
cellRendererParams: {
|
||||
checkbox: true,
|
||||
suppressCount: false,
|
||||
}
|
||||
};
|
||||
grid.treeData = true;
|
||||
grid.groupDefaultExpanded = -1;
|
||||
grid.getDataPath = function(data) {
|
||||
return data.tree_path;
|
||||
};
|
||||
grid.columnDefs = [];
|
||||
grid.columnDefs.push(
|
||||
{suppressMenu: true, cellClass:'text-center', field: 'id', headerName: 'ID', width: 60}
|
||||
);
|
||||
|
||||
grid.onRowClicked = function(row) {
|
||||
var selected = row.node.isSelected();
|
||||
if (selected === false) {
|
||||
row.node.setSelected(true, true);
|
||||
}
|
||||
};
|
||||
|
||||
grid.onRowDoubleClicked = function (row) {
|
||||
var ret = writeSelected();
|
||||
if (ret == true) {
|
||||
$('#gdoo-dialog-' + params.dialog_index).dialog('close');
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 初始化选择
|
||||
*/
|
||||
function initSelected() {
|
||||
if (params.is_grid) {
|
||||
} else {
|
||||
var rows = {};
|
||||
var id = $('#'+option.id).val();
|
||||
if (id) {
|
||||
var ids = id.split(',');
|
||||
for (var i = 0; i < ids.length; i++) {
|
||||
rows[ids[i]] = ids[i];
|
||||
}
|
||||
}
|
||||
grid.api.forEachNode(function(node) {
|
||||
var key = node.data[sid];
|
||||
if (rows[key] != undefined) {
|
||||
node.setSelected(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 写入选中
|
||||
*/
|
||||
function writeSelected() {
|
||||
var rows = grid.api.getSelectedRows();
|
||||
if (params.is_grid) {
|
||||
var list = gdoo.forms[params.form_id];
|
||||
list.api.dialogSelected(params);
|
||||
} else {
|
||||
var id = [];
|
||||
var text = [];
|
||||
$.each(rows, function(k, row) {
|
||||
id.push(row[sid]);
|
||||
text.push(row.name);
|
||||
});
|
||||
$('#'+option.id).val(id.join(','));
|
||||
$('#'+option.id+'_text').val(text.join(','));
|
||||
|
||||
if (event.exist('onSelect')) {
|
||||
return event.trigger('onSelect', multiple ? rows : rows[0]);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
grid.writeSelected = writeSelected;
|
||||
gdoo.dialogs[option.id] = grid;
|
||||
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
|
||||
// 读取数据
|
||||
grid.remoteData();
|
||||
|
||||
// 数据载入成功
|
||||
grid.remoteSuccessed = function() {
|
||||
initSelected();
|
||||
}
|
||||
|
||||
var data = search.forms;
|
||||
var search = $("#dialog-{{$search['query']['id']}}-search-form").searchForm({
|
||||
data: data
|
||||
});
|
||||
search.find('#search-submit').on('click', function() {
|
||||
var params = search.serializeArray();
|
||||
$.map(params, function(row) {
|
||||
data[row.name] = row.value;
|
||||
});
|
||||
grid.remoteData(data);
|
||||
return false;
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,78 @@
|
||||
{{$header["js"]}}
|
||||
<div class="panel no-border m-b-sm" id="{{$header['master_table']}}-controller">
|
||||
@include('headers')
|
||||
<div class="list-jqgrid">
|
||||
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var table = '{{$header["master_table"]}}';
|
||||
var config = gdoo.grids[table];
|
||||
var action = config.action;
|
||||
var search = config.search;
|
||||
(function ($) {
|
||||
|
||||
var options = new agGridOptions();
|
||||
|
||||
// 自定义搜索方法
|
||||
search.searchInit = function (e) {
|
||||
var self = this;
|
||||
}
|
||||
|
||||
config.cols[0]['hide'] = true;
|
||||
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;
|
||||
options.groupDefaultExpanded = -1;
|
||||
|
||||
options.getDataPath = function(data) {
|
||||
return data.tree_path;
|
||||
};
|
||||
|
||||
options.remoteDataUrl = '{{url()}}';
|
||||
options.remoteParams = search.advanced.query;
|
||||
options.columnDefs = config.cols;
|
||||
options.onRowDoubleClicked = function (params) {
|
||||
if (params.node.rowPinned) {
|
||||
return;
|
||||
}
|
||||
if (params.data == undefined) {
|
||||
return;
|
||||
}
|
||||
if (params.data.id > 0) {
|
||||
action.edit(params.data);
|
||||
}
|
||||
};
|
||||
|
||||
var height = getPanelHeight(11);
|
||||
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
|
||||
|
||||
gridDiv.style.height = height;
|
||||
new agGrid.Grid(gridDiv, options);
|
||||
|
||||
// 读取数据
|
||||
options.remoteData({page: 1});
|
||||
|
||||
// 绑定自定义事件
|
||||
var $gridDiv = $(gridDiv);
|
||||
$gridDiv.on('click', '[data-toggle="event"]', function () {
|
||||
var data = $(this).data();
|
||||
if (data.master_id > 0) {
|
||||
action[data.action](data);
|
||||
}
|
||||
});
|
||||
config.grid = options;
|
||||
})(jQuery);
|
||||
</script>
|
||||
@include('footers')
|
||||
@@ -0,0 +1,30 @@
|
||||
<div class="form-panel">
|
||||
<div class="form-panel-header">
|
||||
<div class="pull-right">
|
||||
</div>
|
||||
{{$form['btn']}}
|
||||
</div>
|
||||
<div class="form-panel-body panel-form-{{$form['action']}}">
|
||||
<form class="form-horizontal form-controller" method="post" id="{{$form['table']}}" name="{{$form['table']}}">
|
||||
{{$form['tpl']}}
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var form_action = '{{$form["action"]}}';
|
||||
(function ($) {
|
||||
// grid初始化事件
|
||||
gdoo.event.set('grid.customer_region_task_data', {
|
||||
init(me) {
|
||||
me.enableCellTextSelection = false;
|
||||
me.enableRangeSelection = true;
|
||||
me.suppressContextMenu = false;
|
||||
},
|
||||
ready(me) {
|
||||
me.dataKey = 'region_id';
|
||||
}
|
||||
});
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,60 @@
|
||||
{{$header["js"]}}
|
||||
|
||||
<div class="panel no-border" id="{{$header['master_table']}}-controller">
|
||||
@include('headers')
|
||||
<div class='list-jqgrid'>
|
||||
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
(function ($) {
|
||||
var table = '{{$header["master_table"]}}';
|
||||
var config = gdoo.grids[table];
|
||||
var action = config.action;
|
||||
var search = config.search;
|
||||
|
||||
action.dialogType = 'layer';
|
||||
|
||||
// 自定义搜索方法
|
||||
search.searchInit = function (e) {
|
||||
var self = this;
|
||||
}
|
||||
|
||||
var options = new agGridOptions();
|
||||
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
|
||||
gridDiv.style.height = getPanelHeight(48);
|
||||
|
||||
options.remoteDataUrl = '{{url()}}';
|
||||
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);
|
||||
|
||||
// 读取数据
|
||||
options.remoteData({page: 1});
|
||||
|
||||
// 绑定自定义事件
|
||||
var $gridDiv = $(gridDiv);
|
||||
$gridDiv.on('click', '[data-toggle="event"]', function () {
|
||||
var data = $(this).data();
|
||||
if (data.master_id > 0) {
|
||||
action[data.action](data);
|
||||
}
|
||||
});
|
||||
config.grid = options;
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@include('footers')
|
||||
@@ -0,0 +1,117 @@
|
||||
<div class="panel b-a" id="{{$header['master_table']}}-controller">
|
||||
@include('headers')
|
||||
|
||||
<div class='list-jqgrid'>
|
||||
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
(function ($) {
|
||||
var table = '{{$header["master_table"]}}';
|
||||
var search = JSON.parse('{{json_encode($header["search_form"])}}');
|
||||
var columns = [];
|
||||
var params = search.query;
|
||||
var grid = new agGridOptions();
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
grid.remoteParams = params;
|
||||
|
||||
grid.defaultColDef.suppressMenu = true;
|
||||
grid.defaultColDef.sortable = true;
|
||||
grid.defaultColDef.filter = false;
|
||||
grid.autoColumnsToFit = false;
|
||||
grid.singleClickEdit = true;
|
||||
grid.rowSelection = 'single';
|
||||
grid.suppressCellSelection = false;
|
||||
|
||||
grid.columnDefs = [
|
||||
{cellClass:'text-center', field: 'sn', type: 'sn', headerName: '序号', width: 50},
|
||||
{cellClass:'text-center', field: 'region_name', headerName: '区域', width: 120},
|
||||
{cellClass:'text-right', field: 'total_task', headerName: '总任务', width: 80, type:'number', numberOptions: {places:2}, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'total_money', headerName: '累计销售', width: 80, type:'number', numberOptions: {places:4}, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'total_rate', headerName: '总进度', width: 80, type:'number', numberOptions: {places:2}, calcFooter: 'sum'},
|
||||
];
|
||||
|
||||
for(var i=1; i <= 12;i++) {
|
||||
grid.columnDefs.push({
|
||||
cellClass:'text-center', headerName: i + '月',
|
||||
children: [
|
||||
{cellClass:'text-right', headerName:'任务', width: 60, field:'month' + i, type:'number', numberOptions:{places:2, default:'0'}, calcFooter:'sum'},
|
||||
{cellClass:'text-right', headerName:'销售', width: 80, field:'month_'+i+'_money', type:'number', numberOptions:{places:4, default:'0'}, calcFooter:'sum'},
|
||||
{cellClass:'text-right', headerName:'进度', width: 60, field:'month_'+i+'_rate', type:'number', numberOptions:{places:2, default:'0'}}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
for(var i=1; i <= 4;i++) {
|
||||
var dx = {
|
||||
1: '一',
|
||||
2: '二',
|
||||
3: '三',
|
||||
4: '四',
|
||||
};
|
||||
grid.columnDefs.push({
|
||||
cellClass:'text-center', headerName: dx[i] + '季度',
|
||||
children: [
|
||||
{cellClass:'text-right', headerName:'任务', width: 60, field:'quarter_' + i, type:'number', numberOptions:{places:2, default:'0'}, calcFooter:'sum'},
|
||||
{cellClass:'text-right', headerName:'销售', width: 80, field:'quarter_'+i+'_money', type:'number', numberOptions:{places:4, default:'0'}, calcFooter:'sum'},
|
||||
{cellClass:'text-right', headerName:'进度', width: 60, field:'quarter_'+i+'_rate', type:'number', numberOptions:{places:2, default:'0'}}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
gridDiv.style.height = getPanelHeight(12);
|
||||
|
||||
// 读取数据
|
||||
grid.remoteData();
|
||||
|
||||
var search_advanced = $('#' + table + '-search-form-advanced').searchForm({
|
||||
data: search.forms,
|
||||
advanced: true,
|
||||
});
|
||||
|
||||
gdoo.grids[table] = {grid: grid};
|
||||
|
||||
var action = new gridAction(table, '区域销售进度');
|
||||
var panel = $('#' + table + '-controller');
|
||||
|
||||
panel.on('click', '[data-toggle="' + table + '"]', function() {
|
||||
var data = $(this).data();
|
||||
if (data.action == 'filter') {
|
||||
// 过滤数据
|
||||
$('#' + table + '-search-form-advanced').dialog({
|
||||
title: '条件筛选',
|
||||
modalClass: 'no-padder',
|
||||
buttons: [{
|
||||
text: "取消",
|
||||
'class': "btn-default",
|
||||
click: function() {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
},{
|
||||
text: "确定",
|
||||
'class': "btn-info",
|
||||
click: function() {
|
||||
var query = search_advanced.serializeArray();
|
||||
params = {};
|
||||
$.map(query, function(row) {
|
||||
params[row.name] = row.value;
|
||||
});
|
||||
grid.remoteData(params);
|
||||
$(this).dialog("close");
|
||||
return false;
|
||||
}
|
||||
}]
|
||||
});
|
||||
}
|
||||
|
||||
if (data.action == 'export') {
|
||||
action.export(data, '区域销售进度');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,77 @@
|
||||
<div class="form-panel">
|
||||
<div class="form-panel-header">
|
||||
<div class="pull-right">
|
||||
</div>
|
||||
{{$form['btn']}}
|
||||
</div>
|
||||
<div class="form-panel-body panel-form-{{$form['action']}}">
|
||||
<form class="form-horizontal form-controller" method="post" id="{{$form['table']}}" name="{{$form['table']}}">
|
||||
{{$form['tpl']}}
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var form_action = '{{$form["action"]}}';
|
||||
(function ($) {
|
||||
|
||||
$("#customer_task_data_tool").append('<a class="btn btn-sm btn-default" href="javascript:importExcel();">导入</a>');
|
||||
|
||||
// 发货记录
|
||||
function importExcel() {
|
||||
var url = app.url('customer/task/importExcel');
|
||||
formDialog({
|
||||
title: '导入数据',
|
||||
url: url,
|
||||
id: 'import_excel',
|
||||
dialogClass:'modal-md',
|
||||
onSubmit: function() {
|
||||
var me = this;
|
||||
var form = $('#import_excel');
|
||||
var file = document.querySelector("#import_file").files[0];
|
||||
var formData = new FormData();
|
||||
formData.append('file', file);
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
$.ajax(url, {
|
||||
method: "post",
|
||||
data: formData,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
complete: function() {
|
||||
layer.close(loading);
|
||||
},
|
||||
success: function (res) {
|
||||
if (res.status) {
|
||||
grid.api.setRowData([]);
|
||||
for (var i = 0; i < res.data.length; i++) {
|
||||
var row = res.data[i];
|
||||
grid.api.memoryStore.create(row);
|
||||
}
|
||||
grid.generatePinnedBottomData();
|
||||
$(me).dialog('close');
|
||||
toastrSuccess('导入数据成功。');
|
||||
} else {
|
||||
toastrError(res.data);
|
||||
}
|
||||
},
|
||||
error: function (res) {
|
||||
toastrError(res.data);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
window.importExcel = importExcel;
|
||||
|
||||
// grid初始化事件
|
||||
gdoo.event.set('grid.customer_task_data', {
|
||||
ready(me) {
|
||||
grid = me;
|
||||
grid.dataKey = 'customer_id';
|
||||
}
|
||||
});
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,60 @@
|
||||
{{$header["js"]}}
|
||||
|
||||
<div class="panel no-border" id="{{$header['master_table']}}-controller">
|
||||
@include('headers')
|
||||
<div class='list-jqgrid'>
|
||||
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
(function ($) {
|
||||
var table = '{{$header["master_table"]}}';
|
||||
var config = gdoo.grids[table];
|
||||
var action = config.action;
|
||||
var search = config.search;
|
||||
|
||||
action.dialogType = 'layer';
|
||||
|
||||
// 自定义搜索方法
|
||||
search.searchInit = function (e) {
|
||||
var self = this;
|
||||
}
|
||||
|
||||
var options = new agGridOptions();
|
||||
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
|
||||
gridDiv.style.height = getPanelHeight(48);
|
||||
|
||||
options.remoteDataUrl = '{{url()}}';
|
||||
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);
|
||||
|
||||
// 读取数据
|
||||
options.remoteData({page: 1});
|
||||
|
||||
// 绑定自定义事件
|
||||
var $gridDiv = $(gridDiv);
|
||||
$gridDiv.on('click', '[data-toggle="event"]', function () {
|
||||
var data = $(this).data();
|
||||
if (data.master_id > 0) {
|
||||
action[data.action](data);
|
||||
}
|
||||
});
|
||||
config.grid = options;
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@include('footers')
|
||||
@@ -0,0 +1,132 @@
|
||||
<div class="panel b-a" id="{{$header['master_table']}}-controller">
|
||||
@include('headers')
|
||||
|
||||
<div class='list-jqgrid'>
|
||||
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
(function ($) {
|
||||
var table = '{{$header["master_table"]}}';
|
||||
var search = JSON.parse('{{json_encode($header["search_form"])}}');
|
||||
var columns = [];
|
||||
var params = search.query;
|
||||
var grid = new agGridOptions();
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
grid.remoteParams = params;
|
||||
|
||||
grid.defaultColDef.suppressMenu = true;
|
||||
grid.defaultColDef.sortable = true;
|
||||
grid.defaultColDef.filter = false;
|
||||
grid.autoColumnsToFit = false;
|
||||
grid.singleClickEdit = true;
|
||||
grid.rowSelection = 'single';
|
||||
grid.suppressCellSelection = false;
|
||||
|
||||
grid.defaultColDef.cellStyle = function(params) {
|
||||
if (params.node.rowPinned) {
|
||||
return;
|
||||
}
|
||||
var style = {};
|
||||
var field = params.colDef.field;
|
||||
if (params.data.status == '0' && (field == "customer_code" || field == "customer_name")) {
|
||||
style = {'color':'red'};
|
||||
}
|
||||
return style;
|
||||
};
|
||||
|
||||
grid.columnDefs = [
|
||||
{cellClass:'text-center', field: 'sn', type: 'sn', headerName: '序号', width: 50},
|
||||
{cellClass:'text-center', field: 'region_name', headerName: '区域', width: 100},
|
||||
{cellClass:'text-center', field: 'customer_code', headerName: '客户编码', width: 80},
|
||||
{cellClass:'text-left', field: 'customer_name', headerName: '客户名称', width: 180},
|
||||
{cellClass:'text-right', field: 'total_count', headerName: '总订单数', width: 80, type:'number', numberOptions: {places:0}, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'total_task', headerName: '总任务', width: 80, type:'number', numberOptions: {places:2}, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'total_money', headerName: '累计销售', width: 80, type:'number', numberOptions: {places:4}, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'total_rate', headerName: '总进度', width: 80, type:'number', numberOptions: {places:2}, calcFooter: 'sum'},
|
||||
];
|
||||
|
||||
for(var i=1; i <= 12;i++) {
|
||||
grid.columnDefs.push({
|
||||
cellClass:'text-center', headerName: i + '月',
|
||||
children: [
|
||||
{cellClass:'text-right', headerName:'任务', width: 60, field:'month' + i, type:'number', numberOptions:{places:2, default:'0'}, calcFooter:'sum'},
|
||||
{cellClass:'text-right', headerName:'销售', width: 80, field:'month_'+i+'_money', type:'number', numberOptions:{places:4, default:'0'}, calcFooter:'sum'},
|
||||
{cellClass:'text-right', headerName:'进度', width: 60, field:'month_'+i+'_rate', type:'number', numberOptions:{places:2, default:'0'}}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
for(var i=1; i <= 4;i++) {
|
||||
var dx = {
|
||||
1: '一',
|
||||
2: '二',
|
||||
3: '三',
|
||||
4: '四',
|
||||
};
|
||||
grid.columnDefs.push({
|
||||
cellClass:'text-center', headerName: dx[i] + '季度',
|
||||
children: [
|
||||
{cellClass:'text-right', headerName:'任务', width: 60, field:'quarter_' + i, type:'number', numberOptions:{places:2, default:'0'}, calcFooter:'sum'},
|
||||
{cellClass:'text-right', headerName:'销售', width: 80, field:'quarter_'+i+'_money', type:'number', numberOptions:{places:4, default:'0'}, calcFooter:'sum'},
|
||||
{cellClass:'text-right', headerName:'进度', width: 60, field:'quarter_'+i+'_rate', type:'number', numberOptions:{places:2, default:'0'}}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
gridDiv.style.height = getPanelHeight(12);
|
||||
|
||||
// 读取数据
|
||||
grid.remoteData();
|
||||
|
||||
var search_advanced = $('#' + table + '-search-form-advanced').searchForm({
|
||||
data: search.forms,
|
||||
advanced: true,
|
||||
});
|
||||
|
||||
gdoo.grids[table] = {grid: grid};
|
||||
|
||||
var action = new gridAction(table, '客户销售进度');
|
||||
var panel = $('#' + table + '-controller');
|
||||
|
||||
panel.on('click', '[data-toggle="' + table + '"]', function() {
|
||||
var data = $(this).data();
|
||||
if (data.action == 'filter') {
|
||||
// 过滤数据
|
||||
$('#' + table + '-search-form-advanced').dialog({
|
||||
title: '条件筛选',
|
||||
modalClass: 'no-padder',
|
||||
buttons: [{
|
||||
text: "取消",
|
||||
'class': "btn-default",
|
||||
click: function() {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
},{
|
||||
text: "确定",
|
||||
'class': "btn-info",
|
||||
click: function() {
|
||||
var query = search_advanced.serializeArray();
|
||||
params = {};
|
||||
$.map(query, function(row) {
|
||||
params[row.name] = row.value;
|
||||
});
|
||||
grid.remoteData(params);
|
||||
$(this).dialog("close");
|
||||
return false;
|
||||
}
|
||||
}]
|
||||
});
|
||||
}
|
||||
|
||||
if (data.action == 'export') {
|
||||
action.export(data, '客户销售进度');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,32 @@
|
||||
<div class="form-panel">
|
||||
<div class="form-panel-header">
|
||||
<div class="pull-right">
|
||||
</div>
|
||||
{{$form['btn']}}
|
||||
</div>
|
||||
<div class="form-panel-body panel-form-{{$form['action']}}">
|
||||
<form class="form-horizontal form-controller" method="post" id="{{$form['table']}}" name="{{$form['table']}}">
|
||||
{{$form['tpl']}}
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
(function ($) {
|
||||
// 选择客户事件
|
||||
gdoo.event.set('customer_tax.customer_id', {
|
||||
query(params) {
|
||||
},
|
||||
onSelect(row) {
|
||||
if (row.id) {
|
||||
$('#customer_tax_class_id').val(row.class_id);
|
||||
$('#customer_tax_class_id_text').val(row.class_id_name);
|
||||
|
||||
$('#customer_tax_department_id').val(row.department_id);
|
||||
$('#customer_tax_department_id_text').val(row.department_id_name);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
});
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,135 @@
|
||||
<div class="wrapper-xs">
|
||||
<form id="dialog-{{$search['query']['id']}}-search-form" class="form-inline search-inline-form" method="get">
|
||||
@include('searchForm3')
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="dialog-{{$search['query']['id']}}" class="ag-theme-balham" style="width:100%;height:380px;"></div>
|
||||
|
||||
<script>
|
||||
(function ($) {
|
||||
|
||||
var search = JSON.parse('{{json_encode($search)}}');
|
||||
var params = search.query;
|
||||
|
||||
var option = gdoo.formKey(params);
|
||||
var event = gdoo.event.get(option.key);
|
||||
event.trigger('query', params);
|
||||
|
||||
var sid = params.prefix == 1 ? 'sid' : 'id';
|
||||
var grid = new agGridOptions();
|
||||
var multiple = params.multi == 0 ? false : true;
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
grid.remoteParams = params;
|
||||
grid.suppressRowClickSelection = true;
|
||||
grid.rowSelection = multiple ? 'multiple' : 'single';
|
||||
grid.columnDefs = [
|
||||
{suppressMenu: true, cellClass:'text-center', checkboxSelection: true, headerCheckboxSelection: multiple, suppressSizeToFit: true, sortable: false, width: 40},
|
||||
{suppressMenu: true, cellClass:'text-left', sortable: false, field: 'name', headerName: '开票名称', minWidth: 160},
|
||||
{suppressMenu: true, cellClass:'text-center', field: 'code', headerName: '开票编码', width: 80},
|
||||
{suppressMenu: true, cellClass:'text-left', sortable: false, field: 'customer_name', headerName: '客户名称', minWidth: 160},
|
||||
{suppressMenu: true, cellClass:'text-center', field: 'customer_code', headerName: '客户编码', width: 80},
|
||||
{suppressMenu: true, cellClass:'text-center', cellRenderer: statusRenderer, field: 'status', headerName: '状态', width: 60},
|
||||
{suppressMenu: true, cellClass:'text-center', field: 'id', headerName: 'ID', width: 60}
|
||||
];
|
||||
|
||||
function statusRenderer(row) {
|
||||
if (row.value == 0) {
|
||||
return '<span style="color:red">禁用</span>';
|
||||
}
|
||||
if (row.value == 1) {
|
||||
return '启用';
|
||||
}
|
||||
}
|
||||
|
||||
grid.onRowClicked = function(row) {
|
||||
var selected = row.node.isSelected();
|
||||
if (selected === false) {
|
||||
row.node.setSelected(true, true);
|
||||
}
|
||||
};
|
||||
|
||||
grid.onRowDoubleClicked = function (row) {
|
||||
var ret = writeSelected();
|
||||
if (ret == true) {
|
||||
$('#gdoo-dialog-' + params.dialog_index).dialog('close');
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 初始化选择
|
||||
*/
|
||||
function initSelected() {
|
||||
if (params.is_grid) {
|
||||
} else {
|
||||
var rows = {};
|
||||
var id = $('#'+option.id).val();
|
||||
if (id) {
|
||||
var ids = id.split(',');
|
||||
for (var i = 0; i < ids.length; i++) {
|
||||
rows[ids[i]] = ids[i];
|
||||
}
|
||||
}
|
||||
grid.api.forEachNode(function(node) {
|
||||
var key = node.data[sid];
|
||||
if (rows[key] != undefined) {
|
||||
node.setSelected(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 写入选中
|
||||
*/
|
||||
function writeSelected() {
|
||||
var rows = grid.api.getSelectedRows();
|
||||
if (params.is_grid) {
|
||||
var list = gdoo.forms[params.form_id];
|
||||
list.api.dialogSelected(params);
|
||||
} else {
|
||||
var id = [];
|
||||
var text = [];
|
||||
$.each(rows, function(k, row) {
|
||||
id.push(row[sid]);
|
||||
text.push(row.name);
|
||||
});
|
||||
console.log('#'+option.id);
|
||||
$('#'+option.id).val(id.join(','));
|
||||
$('#'+option.id+'_text').val(text.join(','));
|
||||
|
||||
if (event.exist('onSelect')) {
|
||||
return event.trigger('onSelect', multiple ? rows : rows[0]);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
grid.writeSelected = writeSelected;
|
||||
gdoo.dialogs[option.id] = grid;
|
||||
|
||||
var gridDiv = document.querySelector("#dialog-{{$search['query']['id']}}");
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
|
||||
// 读取数据
|
||||
grid.remoteData({page: 1});
|
||||
|
||||
// 数据载入成功
|
||||
grid.remoteSuccessed = function() {
|
||||
initSelected();
|
||||
}
|
||||
|
||||
var data = search.forms;
|
||||
var search = $("#dialog-{{$search['query']['id']}}-search-form").searchForm({
|
||||
data: data
|
||||
});
|
||||
search.find('#search-submit').on('click', function() {
|
||||
var params = search.serializeArray();
|
||||
$.map(params, function(row) {
|
||||
data[row.name] = row.value;
|
||||
});
|
||||
grid.remoteData(data);
|
||||
return false;
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,60 @@
|
||||
{{$header["js"]}}
|
||||
|
||||
<div class="panel no-border" id="{{$header['master_table']}}-controller">
|
||||
@include('headers')
|
||||
<div class='list-jqgrid'>
|
||||
<div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
(function ($) {
|
||||
var table = '{{$header["master_table"]}}';
|
||||
var config = gdoo.grids[table];
|
||||
var action = config.action;
|
||||
var search = config.search;
|
||||
|
||||
action.dialogType = 'layer';
|
||||
|
||||
// 自定义搜索方法
|
||||
search.searchInit = function (e) {
|
||||
var self = this;
|
||||
}
|
||||
|
||||
var options = new agGridOptions();
|
||||
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
|
||||
gridDiv.style.height = getPanelHeight(48);
|
||||
|
||||
options.remoteDataUrl = '{{url()}}';
|
||||
options.remoteParams = search.advanced.query;
|
||||
options.columnDefs = config.cols;
|
||||
options.autoColumnsToFit = false;
|
||||
options.onRowDoubleClicked = function (params) {
|
||||
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;
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@include('footers')
|
||||
@@ -0,0 +1,3 @@
|
||||
<form class="form-horizontal form-controller" method="post" id="customer_type" name="customer_type">
|
||||
{{$form['tpl']}}
|
||||
</form>
|
||||
@@ -0,0 +1,57 @@
|
||||
{{$header["js"]}}
|
||||
|
||||
<div class="panel no-border" id="{{$header['table']}}-controller">
|
||||
@include('headers')
|
||||
<div class='list-jqgrid'>
|
||||
<div id="{{$header['table']}}-grid" style="width:100%;" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
(function ($) {
|
||||
var table = '{{$header["table"]}}';
|
||||
var config = gdoo.grids[table];
|
||||
var action = config.action;
|
||||
var search = config.search;
|
||||
|
||||
// 自定义搜索方法
|
||||
search.searchInit = function (e) {
|
||||
var self = this;
|
||||
}
|
||||
|
||||
var options = new agGridOptions();
|
||||
var gridDiv = document.querySelector("#{{$header['table']}}-grid");
|
||||
gridDiv.style.height = getPanelHeight(48);
|
||||
|
||||
options.remoteDataUrl = '{{url()}}';
|
||||
options.remoteParams = search.advanced.query;
|
||||
options.columnDefs = config.cols;
|
||||
options.onRowDoubleClicked = function (params) {
|
||||
if (params.node.rowPinned) {
|
||||
return;
|
||||
}
|
||||
if (params.data == undefined) {
|
||||
return;
|
||||
}
|
||||
if (params.data.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;
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@include('footers')
|
||||
@@ -0,0 +1,31 @@
|
||||
<div class="list-jqgrid">
|
||||
<div id="customer-birthday-widget" class="ag-theme-balham" style="width:100%;height:200px;"></div>
|
||||
</div>
|
||||
<script>
|
||||
(function ($) {
|
||||
var gridDiv = document.querySelector("#customer-birthday-widget");
|
||||
var grid = new agGridOptions();
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
grid.remoteParams = {};
|
||||
var columnDefs = [
|
||||
{suppressMenu: true, field: "code", headerName: '客户编码', width: 120},
|
||||
{suppressMenu: true, field: "name", headerName: '客户名称', minWidth: 160},
|
||||
{suppressMenu: true, field: "head_name", headerName: '法人', width: 120},
|
||||
{suppressMenu: true, field: "head_phone", headerName: '法人手机', width: 120},
|
||||
{suppressMenu: true, field: "head_birthday", headerName: '法人生日', width: 120},
|
||||
{suppressMenu: true, field: "id", headerName: 'ID', width: 80}
|
||||
];
|
||||
|
||||
grid.onRowDoubleClicked = function(row) {
|
||||
top.addTab('customer/customer/show?id=' + row.data.id, 'customer_customer_show', '客户档案');
|
||||
}
|
||||
|
||||
grid.columnDefs = columnDefs;
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
// 读取数据
|
||||
grid.remoteData({page: 1});
|
||||
|
||||
gdoo.widgets['customer_widget_birthday'] = grid;
|
||||
|
||||
})(jQuery);
|
||||
</script>
|
||||
Reference in New Issue
Block a user