创建版本
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
<div class="form-panel">
|
||||
<div class="form-panel-header">
|
||||
<div class="pull-right">>
|
||||
</div>
|
||||
{{$form['btn']}}
|
||||
</div>
|
||||
<div class="form-panel-body">
|
||||
<form class="form-horizontal form-controller" method="post" id="{{$form['table']}}" name="{{$form['table']}}">
|
||||
<div class="panel">
|
||||
{{$form['tpl']}}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,153 @@
|
||||
<div class="padder">
|
||||
|
||||
<div class="m-t-sm m-b-sm">
|
||||
<form id="search-form" name="mysearch" class="form-inline" method="get">
|
||||
@include('searchForm')
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<table id="logistics-dialog">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-field="state" data-checkbox="true"></th>
|
||||
<th data-field="name" data-sortable="true" data-align="left">公司名称</th>
|
||||
<th data-field="legal" data-width="200" data-sortable="true" data-align="center">法人代表</th>
|
||||
<th data-field="id" data-width="60" data-sortable="true" data-align="center">ID</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
function statusFormatter(value) {
|
||||
if(value == 0) {
|
||||
return '<span style="color:red">停用</span>';
|
||||
}
|
||||
if(value == 1) {
|
||||
return '正常';
|
||||
}
|
||||
}
|
||||
|
||||
(function($) {
|
||||
|
||||
var $table = $('#logistics-dialog');
|
||||
var params = {{json_encode($query)}};
|
||||
var sid = params.prefix == 1 ? 'sid' : 'id';
|
||||
|
||||
var selected = {};
|
||||
|
||||
function getSelected()
|
||||
{
|
||||
selected = {};
|
||||
|
||||
var id = $('#'+params.id).val();
|
||||
var text = $('#'+params.id+'_text').val();
|
||||
|
||||
if(id == '') {
|
||||
return;
|
||||
}
|
||||
|
||||
id = id.split(',');
|
||||
text = text.split(',');
|
||||
for (var i = 0; i < id.length; i++) {
|
||||
selected[id[i]] = text[i];
|
||||
}
|
||||
}
|
||||
|
||||
function setSelected() {
|
||||
|
||||
var id = [];
|
||||
var text = [];
|
||||
|
||||
$.each(selected, function(k, v) {
|
||||
id.push(k);
|
||||
text.push(v);
|
||||
})
|
||||
|
||||
$('#'+params.id).val(id.join(','));
|
||||
$('#'+params.id+'_text').val(text.join(','));
|
||||
}
|
||||
|
||||
function setRow(row)
|
||||
{
|
||||
if(params.multi == 0) {
|
||||
selected = {};
|
||||
}
|
||||
selected[row[sid]] = row.name;
|
||||
setSelected();
|
||||
}
|
||||
|
||||
function unsetRow(row)
|
||||
{
|
||||
$.each(selected, function(id) {
|
||||
if(id == row[sid]) {
|
||||
delete selected[id];
|
||||
}
|
||||
});
|
||||
setSelected();
|
||||
}
|
||||
|
||||
$table.bootstrapTable({
|
||||
iconSize: 'sm',
|
||||
singleSelect: params.multi == 1 ? 0 : 1,
|
||||
clickToSelect: true,
|
||||
method: 'post',
|
||||
url: '{{url()}}',
|
||||
height: 380,
|
||||
sidePagination: 'server',
|
||||
pagination: true,
|
||||
onLoadSuccess: function(res) {
|
||||
|
||||
getSelected();
|
||||
|
||||
$.each(selected, function(j) {
|
||||
for (var i = 0; i < res.data.length; i++) {
|
||||
if(res.data[i][sid] == j) {
|
||||
$table.bootstrapTable('check', i);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
onDblClickRow: function(row) {
|
||||
setRow(row);
|
||||
$('#modal-dialog-user').dialog('close');
|
||||
},
|
||||
onCheck: function(row) {
|
||||
setRow(row);
|
||||
},
|
||||
onUncheck: function(row) {
|
||||
unsetRow(row);
|
||||
},
|
||||
onCheckAll: function(rows) {
|
||||
for (var i = 0; i < rows.length; i++) {
|
||||
setRow(rows[i]);
|
||||
}
|
||||
},
|
||||
onUncheckAll: function(rows) {
|
||||
for (var i = 0; i < rows.length; i++) {
|
||||
unsetRow(rows[i]);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var data = {{json_encode($search['forms'])}};
|
||||
var search = $('#search-form').searchForm({
|
||||
data: data,
|
||||
init: function(e) {
|
||||
var self = this;
|
||||
}
|
||||
});
|
||||
|
||||
search.find('#search-submit').on('click', function() {
|
||||
var params = search.serializeArray();
|
||||
$.map(params, function(row) {
|
||||
data[row.name] = row.value;
|
||||
});
|
||||
$table.bootstrapTable('refresh', {
|
||||
url:app.url('order/logistics/dialog', data)
|
||||
});
|
||||
return false;
|
||||
});
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,59 @@
|
||||
{{$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;
|
||||
|
||||
action.dialogType = 'layer';
|
||||
|
||||
// 自定义搜索方法
|
||||
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.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,33 @@
|
||||
<div class="table-responsive">
|
||||
<table class="table">
|
||||
<tr>
|
||||
<td colspan="4" align="left">
|
||||
<strong>尊敬的客户!请将货款汇至以下您最方便的银行账户!如有疑问请致电:028-38296666 028-36888888</strong>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
① 收款单位: 眉山市爱客网络科技有限公司<br />
|
||||
开 户 行: 中国工商银行眉山分行营业部<br />
|
||||
帐 号: 0000 0000 0000 0000
|
||||
</td>
|
||||
<td>
|
||||
② 收款单位: 眉山市爱客网络科技有限公司<br />
|
||||
开户行: 中国农业银行眉山分行营业部<br />
|
||||
帐 号: 0000 0000 0000 0000
|
||||
</td>
|
||||
<td>
|
||||
③ 收款单位:眉山市爱客网络科技有限公司<br />
|
||||
开户行:中国建设银行眉山财富中心支行<br />
|
||||
帐 号: 0000 0000 0000 0000
|
||||
</td>
|
||||
<td>
|
||||
④ 收款单位:眉山市爱客网络科技有限公司<br />
|
||||
开户行:中国农业发展银行眉山市分行<br />
|
||||
帐 号: 0000 0000 0000 0000
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,435 @@
|
||||
<?php extract($form); ?>
|
||||
<div class="form-panel">
|
||||
<div class="form-panel-header">
|
||||
<div class="pull-right">
|
||||
</div>
|
||||
{{$btn}}
|
||||
|
||||
@if(is_customer())
|
||||
@else
|
||||
<a href="javascript:promotionDialog();" class="btn btn-sm btn-default">
|
||||
促销
|
||||
<span class="badge badge-sm bg-danger" id="promotion_count">0</span>
|
||||
</a>
|
||||
|
||||
<a href="javascript:costDialog();" class="btn btn-sm btn-default">
|
||||
费用
|
||||
<span class="badge badge-sm bg-danger" id="cost_count">0</span>
|
||||
</a>
|
||||
|
||||
<a href="javascript:orderDialog();" class="btn btn-sm btn-default">
|
||||
未发货订单
|
||||
</a>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
|
||||
<div class="form-panel-body panel-form-{{$action}}">
|
||||
<form class="form-horizontal form-controller" method="post" id="{{$table}}" name="{{$table}}">
|
||||
|
||||
{{$tpl}}
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var form_action = '{{$action}}';
|
||||
(function ($) {
|
||||
|
||||
function get_customer_id() {
|
||||
var customer_id = $('#customer_order_customer_id').val();
|
||||
return customer_id;
|
||||
}
|
||||
|
||||
$('#customer_order_tax_id').on('change', function() {
|
||||
serviceCustomerMoney(this.value);
|
||||
})
|
||||
|
||||
if (form_action == 'show') {
|
||||
$('#balance_money').text('');
|
||||
$('#lock_money').text('');
|
||||
} else {
|
||||
$('#customer_order_lock_money').val('');
|
||||
$('#customer_order_balance_money').val('');
|
||||
}
|
||||
|
||||
function serviceCustomerMoney(tax_id) {
|
||||
$.get(app.url('order/order/serviceCustomerMoney'), {tax_id: tax_id}, function (res) {
|
||||
if (form_action == 'show') {
|
||||
$('#lock_money').text(res.lockMoney);
|
||||
$('#balance_money').text(res.accMoney);
|
||||
} else {
|
||||
$('#customer_order_lock_money').val(res.lockMoney);
|
||||
$('#customer_order_balance_money').val(res.accMoney);
|
||||
}
|
||||
}, 'json');
|
||||
}
|
||||
|
||||
function get_cost_count(id) {
|
||||
$.get(app.url('promotion/promotion/useCount'), {customer_id: id}, function (res) {
|
||||
$('#promotion_count').text(res.data);
|
||||
}, 'json');
|
||||
$.get(app.url('customerCost/cost/useCount'), {customer_id: id}, function (res) {
|
||||
$('#cost_count').text(res.data);
|
||||
}, 'json');
|
||||
}
|
||||
|
||||
function get_customer_tax(customer_id, tax_id) {
|
||||
$.post(app.url('customer/tax/dialog'), {customer_id: customer_id}, function (res) {
|
||||
var html = '<option value=""> - </option>';
|
||||
$.each(res.data, function (i, row) {
|
||||
var selected = tax_id == row.id ? 'selected="selected"' : '';
|
||||
html += '<option value="' + row.id + '" ' + selected + '>' + row.name + '</option>';
|
||||
});
|
||||
$('#customer_order_tax_id').html(html);
|
||||
}, 'json');
|
||||
}
|
||||
|
||||
var grid = null;
|
||||
var customer_id = get_customer_id();
|
||||
if (customer_id > 0) {
|
||||
var tax_id = "{{$row['tax_id']}}";
|
||||
get_customer_tax(customer_id, tax_id);
|
||||
serviceCustomerMoney(tax_id);
|
||||
get_cost_count(customer_id);
|
||||
}
|
||||
|
||||
gdoo.event.set('customer_order.customer_id', {
|
||||
query(params) {
|
||||
},
|
||||
onSelect(row) {
|
||||
if (row.id) {
|
||||
$('#customer_order_type_id').val(row.type_id);
|
||||
$('#customer_order_type_id_select').val(row.type_id);
|
||||
$('#customer_region_region_id').val(row.region_id);
|
||||
$('#customer_region_region_id_text').val(row.region_id_name || '');
|
||||
$('#customer_order_warehouse_contact').val(row.warehouse_contact);
|
||||
$('#customer_order_warehouse_phone').val(row.warehouse_phone);
|
||||
$('#customer_order_warehouse_tel').val(row.warehouse_tel);
|
||||
var $option = $('<option selected>'+ row.warehouse_address + '</option>').val(row.warehouse_address);
|
||||
$('#customer_order_warehouse_address').html($option).trigger('change');
|
||||
get_cost_count(row.id);
|
||||
get_customer_tax(row.id);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// 子表对话框
|
||||
gdoo.event.set('customer_order_data.product_id', {
|
||||
open(params) {
|
||||
params.url = 'product/product/serviceCustomer';
|
||||
},
|
||||
query(query) {
|
||||
var customer_id = get_customer_id();
|
||||
query.customer_id = customer_id;
|
||||
},
|
||||
onSelect(row, selected) {
|
||||
if (row.product_code == '99001') {
|
||||
row.type_id_name = '费用';
|
||||
row.type_id = 5;
|
||||
} else {
|
||||
row.type_id_name = '普通';
|
||||
row.type_id = 1;
|
||||
}
|
||||
row.price = selected.price;
|
||||
row.weight = selected.weight;
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
// 选择收货地址
|
||||
gdoo.event.set('customer_order.warehouse_address', {
|
||||
init(params) {
|
||||
params.ajax.url = app.url('customer/delivery-address/dialog');
|
||||
params.resultCache = false;
|
||||
},
|
||||
query(query) {
|
||||
query.field_0 = 'customer_delivery_address.address';
|
||||
query.customer_id = get_customer_id();
|
||||
},
|
||||
onSelect(row) {
|
||||
if (row.id) {
|
||||
if (row.id.indexOf('draft_') == 0) {
|
||||
return true;
|
||||
}
|
||||
$('#customer_order_warehouse_address').val(row.address);
|
||||
$('#customer_order_warehouse_contact').val(row.name);
|
||||
$('#customer_order_warehouse_phone').val(row.phone);
|
||||
$('#customer_order_warehouse_tel').val(row.tel);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// grid初始化事件
|
||||
gdoo.event.set('grid.customer_order_data', {
|
||||
ready(me) {
|
||||
grid = me;
|
||||
grid.dataKey = 'product_id';
|
||||
},
|
||||
onSaveBefore(rows) {
|
||||
for (var i = 0; i < rows.length; i++) {
|
||||
var row = rows[i];
|
||||
var quantity = toNumber(row.delivery_quantity);
|
||||
var price = toNumber(row.price);
|
||||
var money = toNumber(row.money).toFixed(2);
|
||||
var other_money = toNumber(row.other_money).toFixed(2);
|
||||
var new_money = (quantity * price).toFixed(2);
|
||||
if (quantity > 0 && price > 0) {
|
||||
if (new_money != money) {
|
||||
toastrError(row.product_name + ' 实发数量 * 单价不等于金额');
|
||||
return false;
|
||||
}
|
||||
if (other_money > 0) {
|
||||
if (other_money != money) {
|
||||
toastrError(row.product_name + '其他金额不等于金额');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
},
|
||||
editable: {
|
||||
product_name(params) {
|
||||
var data = params.data;
|
||||
// 费用不能编辑产品
|
||||
if (data.product_code == '99001') {
|
||||
return false;
|
||||
}
|
||||
var customer_id = get_customer_id();
|
||||
if (customer_id.trim() == '') {
|
||||
toastrError('请先选择客户');
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
},
|
||||
price(params) {
|
||||
var type_id = $('#customer_order_type_id').val();
|
||||
if (type_id == 2) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
money(params) {
|
||||
var data = params.data;
|
||||
if (data.product_code == '99001') {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
quantity(params) {
|
||||
var data = params.data;
|
||||
if (data.type_id == 1 || data.type_id == 2) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
delivery_quantity(params) {
|
||||
if (params.colDef._editable) {
|
||||
var data = params.data;
|
||||
if (data.type_id == 1 || data.type_id == 2) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var promotionDialog = function () {
|
||||
var customer_id = get_customer_id();
|
||||
if (customer_id.trim() == '') {
|
||||
toastrError('请先选择客户');
|
||||
return;
|
||||
}
|
||||
|
||||
var buttons = [{
|
||||
text: "取消",
|
||||
'class': "btn-default",
|
||||
click: function () {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
}];
|
||||
|
||||
if (form_action == 'show') {
|
||||
} else {
|
||||
buttons.push({
|
||||
text: '提交',
|
||||
'class': 'btn-info',
|
||||
click: function () {
|
||||
var masters = $ref_promotion.api.getSelectedRows();
|
||||
var master = masters[0];
|
||||
if (master['status'] == 1) {
|
||||
var rows = $ref_promotion_data.api.getSelectedRows();
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
var row = rows[i];
|
||||
row.quantity = row.wsy_num;
|
||||
row.delivery_quantity = row.quantity;
|
||||
row.total_weight = row.quantity * row.weight;
|
||||
row.other_money = row.money;
|
||||
grid.api.memoryStore.create(row);
|
||||
}
|
||||
grid.generatePinnedBottomData();
|
||||
$(this).dialog('close');
|
||||
} else {
|
||||
toastrError('促销申请未生效无法使用。');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$.dialog({
|
||||
title: '促销列表',
|
||||
url: '{{url("promotion/promotion/serviceSaleOrder")}}?customer_id=' + customer_id,
|
||||
dialogClass: 'modal-lg',
|
||||
buttons: buttons
|
||||
});
|
||||
}
|
||||
|
||||
var costDialog = function () {
|
||||
var customer_id = get_customer_id();
|
||||
if (customer_id.trim() == '') {
|
||||
toastrError('请先选择客户');
|
||||
return;
|
||||
}
|
||||
|
||||
var buttons = [{
|
||||
text: "取消",
|
||||
'class': "btn-default",
|
||||
click: function () {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
}];
|
||||
|
||||
if (form_action == 'show') {
|
||||
} else {
|
||||
buttons.push({
|
||||
text: "提交",
|
||||
'class': "btn-info",
|
||||
click: function () {
|
||||
var cost_money = 0, product_money = 0;
|
||||
grid.api.forEachNode(function(node) {
|
||||
var money = parseFloat(node.data.money) || 0;
|
||||
// 费用是负数
|
||||
if (node.data.money < 0) {
|
||||
cost_money += money;
|
||||
} else {
|
||||
product_money += money;
|
||||
}
|
||||
});
|
||||
|
||||
// 费用必须低于订单金额的20%
|
||||
cost_money = cost_money + (product_money * 0.2);
|
||||
var rows = $ref_customer_cost.api.getSelectedRows();
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
var row = rows[i];
|
||||
// 费比大于0
|
||||
if (cost_money > 0) {
|
||||
// 剩余的费比小于费用
|
||||
if (cost_money < row.money) {
|
||||
// 计算剩余的费比可以使用多少费用
|
||||
var money = row.money - (row.money - cost_money);
|
||||
} else {
|
||||
var money = row.money;
|
||||
}
|
||||
// 减少费比
|
||||
cost_money = cost_money - row.money;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
// 金额保留小数两位
|
||||
money = Math.round(money * 100)/100;
|
||||
row.money = 0 - money;
|
||||
grid.api.memoryStore.create(row);
|
||||
}
|
||||
grid.generatePinnedBottomData();
|
||||
$(this).dialog('close');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$.dialog({
|
||||
title: '费用列表',
|
||||
url: '{{url("customerCost/cost/serviceSaleOrder")}}?customer_id=' + customer_id,
|
||||
dialogClass: 'modal-lg',
|
||||
buttons: buttons
|
||||
});
|
||||
}
|
||||
|
||||
var orderDialog = function () {
|
||||
var buttons = [{
|
||||
text: "取消",
|
||||
'class': "btn-default",
|
||||
click: function () {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
}];
|
||||
|
||||
if (form_action == 'show') {
|
||||
var customer_name = "{{$row['customer']['name']}}";
|
||||
} else {
|
||||
var customer_name = $('#customer_order_customer_id_text').val();
|
||||
buttons.push({
|
||||
text: '提交',
|
||||
'class': 'btn-info',
|
||||
click: function () {
|
||||
var row = $ref_customer_order.api.getSelectedRows()[0];
|
||||
if (row) {
|
||||
$('#customer_order_customer_id').val(row.customer_id);
|
||||
$('#customer_order_customer_id_text').val(row.customer_name);
|
||||
|
||||
$('#customer_order_tax_type').val(row.tax_type);
|
||||
get_customer_tax(row.customer_id, row.tax_id);
|
||||
|
||||
$('#customer_order_type_id').val(row.type_id);
|
||||
$('#customer_order_type_id_select').val(row.type_id);
|
||||
|
||||
$('#customer_order_found_contact').val(row.found_contact);
|
||||
$('#customer_order_found_phone').val(row.found_phone);
|
||||
|
||||
$('#customer_order_remark').val(row.remark);
|
||||
|
||||
$('#customer_order_warehouse_contact').val(row.warehouse_contact);
|
||||
$('#customer_order_warehouse_phone').val(row.warehouse_phone);
|
||||
$('#customer_order_warehouse_tel').val(row.warehouse_tel);
|
||||
var $option = $('<option selected>'+ row.warehouse_address + '</option>').val(row.warehouse_address);
|
||||
$('#customer_order_warehouse_address').html($option).trigger('change');
|
||||
}
|
||||
|
||||
var rows = $ref_customer_order_data.api.getSelectedRows();
|
||||
grid.api.setRowData([]);
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
var row = rows[i];
|
||||
row.ref_sale_id = row.sale_id;
|
||||
row.ref_sale_data_id = row.id;
|
||||
row.quantity = row.wf_num;
|
||||
row.delivery_quantity = row.wf_num;
|
||||
grid.api.memoryStore.create(row);
|
||||
}
|
||||
grid.generatePinnedBottomData();
|
||||
$(this).dialog('close');
|
||||
}
|
||||
});
|
||||
}
|
||||
$.dialog({
|
||||
title: '未发货订单',
|
||||
url: '{{url("order/order/serviceNotDelivery")}}?field_0=customer.name&condition_0=like&search_0=' + customer_name,
|
||||
dialogClass: 'modal-lg',
|
||||
buttons: buttons
|
||||
});
|
||||
}
|
||||
|
||||
window.orderDialog = orderDialog;
|
||||
window.costDialog = costDialog;
|
||||
window.promotionDialog = promotionDialog;
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,153 @@
|
||||
{{$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';
|
||||
|
||||
action.logisticsPlan = function() {
|
||||
var me = this;
|
||||
var grid = config.grid;
|
||||
var rows = grid.api.getSelectedRows();
|
||||
if (rows.length > 0) {
|
||||
var ids = [];
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
ids.push(rows[i].master_id);
|
||||
}
|
||||
formDialog({
|
||||
title: '修改物流信息',
|
||||
url: app.url('order/order/logisticsPlan', {ids: ids.join(',')}),
|
||||
storeUrl: app.url('order/order/logisticsPlan'),
|
||||
id: 'logistics_plan',
|
||||
dialogClass:'modal-md',
|
||||
success: function(res) {
|
||||
grid.remoteData();
|
||||
toastrSuccess(res.data);
|
||||
$(this).dialog("close");
|
||||
},
|
||||
error: function(res) {
|
||||
toastrError(res.data);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
toastrError('至少选择一条数据。');
|
||||
}
|
||||
}
|
||||
|
||||
action.deliveryEdit = function() {
|
||||
var me = this;
|
||||
var grid = config.grid;
|
||||
var rows = grid.api.getSelectedRows();
|
||||
if (rows.length == 1) {
|
||||
var row = rows[0];
|
||||
formDialog({
|
||||
title: '修改运费支付方式',
|
||||
url: app.url('order/order/deliveryEdit', {id: row.master_id}),
|
||||
storeUrl: app.url('order/order/deliveryEdit'),
|
||||
id: 'delivery_edit',
|
||||
dialogClass:'modal-md',
|
||||
success: function(res) {
|
||||
toastrSuccess(res.data);
|
||||
$(this).dialog("close");
|
||||
window.open(app.url('order/order/print', {id: row.master_id, template_id: 121}), "_blank");
|
||||
},
|
||||
error: function(res) {
|
||||
toastrError(res.data);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
toastrError('只能选择一条数据。');
|
||||
}
|
||||
}
|
||||
|
||||
action.deliveryPlan = function() {
|
||||
var me = this;
|
||||
var grid = config.grid;
|
||||
var rows = grid.api.getSelectedRows();
|
||||
if (rows.length == 1) {
|
||||
var data = rows[0];
|
||||
var url = app.url('order/order/deliveryPlan', {id: data.master_id, date: data.master_plan_delivery_dt});
|
||||
formDialog({
|
||||
title: '修改计划发货日期',
|
||||
url: url,
|
||||
storeUrl: url,
|
||||
id: me.table,
|
||||
dialogClass: 'modal-lg',
|
||||
onSubmit: function() {
|
||||
var me = this;
|
||||
var form = $('#plan_delivery_date').serialize();
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
$.post(app.url('order/order/deliveryPlanDate'), form, function(res) {
|
||||
if (res.status) {
|
||||
grid.remoteData();
|
||||
$(me).dialog('close');
|
||||
toastrSuccess(res.data);
|
||||
} else {
|
||||
toastrError(res.data);
|
||||
}
|
||||
}).complete(function() {
|
||||
layer.close(loading);
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
toastrError('只能修改一条数据。');
|
||||
}
|
||||
}
|
||||
|
||||
// 自定义搜索方法
|
||||
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, 'order_order_show_delivery', '销售订单(发货)');
|
||||
}
|
||||
};
|
||||
|
||||
new agGrid.Grid(gridDiv, options);
|
||||
|
||||
// 读取数据
|
||||
options.remoteData({page: 1});
|
||||
|
||||
// 绑定自定义事件
|
||||
var $gridDiv = $(gridDiv);
|
||||
$gridDiv.on('click', '[data-toggle="event"]', function () {
|
||||
var data = $(this).data();
|
||||
if (data.master_id > 0) {
|
||||
action[data.action](data);
|
||||
}
|
||||
});
|
||||
config.grid = options;
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@include('footers')
|
||||
@@ -0,0 +1,9 @@
|
||||
<div class="wrapper-xs">
|
||||
<form class="form-horizontal" id="delivery_edit" method="post">
|
||||
<div class="form-group m-b-none">
|
||||
<div class="col-sm-3 control-label">运费付款方式</div>
|
||||
<div class="col-sm-9 control-text"><input type="text" class="form-control input-sm" autocomplete="off" value="{{$gets['freight_pay_text']}}" id="freight_pay_text" name="delivery[freight_pay_text]"></div>
|
||||
</div>
|
||||
<input name="id" value="{{$gets['id']}}" type="hidden">
|
||||
</form>
|
||||
</div>
|
||||
@@ -0,0 +1,62 @@
|
||||
<div class="wrapper-xs">
|
||||
<form class="search-inline-form form-inline" id="plan_delivery_date" method="get">
|
||||
计划日期 <input name="date" id="plan_delivery_dt" value="{{$query['date']}}" type="text" autocomplete="off" data-toggle="date" class="form-control input-sm">
|
||||
<input name="id" value="{{$query['id']}}" type="hidden">
|
||||
<a id="plan_delivery_submit" class="btn btn-sm btn-default">
|
||||
<i class="fa fa-search"></i> 筛选</a>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="dialog-delivery_plan" class="ag-theme-balham" style="width:100%;height:380px;"></div>
|
||||
|
||||
<script>
|
||||
|
||||
(function ($) {
|
||||
var params = JSON.parse('{{json_encode($query)}}');
|
||||
var multiple = params.multi == 0 ? false : true;
|
||||
var grid = new agGridOptions();
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
grid.remoteParams = params;
|
||||
grid.rowSelection = multiple ? 'multiple' : 'single';
|
||||
grid.suppressRowClickSelection = true;
|
||||
grid.defaultColDef.sortable = false;
|
||||
grid.defaultColDef.filter = false;
|
||||
grid.defaultColDef.suppressMenu = true;
|
||||
grid.defaultColDef.suppressNavigable = true;
|
||||
grid.columnDefs = [
|
||||
{cellClass:'text-left', field: 'product_name', headerName: '产品名称', minWidth: 140},
|
||||
{cellClass:'text-center', field: 'product_spec', headerName: '规格型号', width: 140},
|
||||
{cellClass:'text-right', type: 'number', field: 'num', headerName: '订单数量', width: 120},
|
||||
{cellClass:'text-right', type: 'number', field: 'product_num', headerName: '订单可用量', width: 120},
|
||||
{cellClass:'text-right', type: 'number', field: 'need_num', headerName: '差额', width: 100},
|
||||
{cellClass:'text-right', type: 'number', field: 'day1', headerName: '今天生产', width: 120},
|
||||
{cellClass:'text-right', type: 'number', field: 'day2', headerName: '明天生产', width: 120},
|
||||
{cellClass:'text-right', type: 'number', field: 'day3', headerName: '后天生产', width: 120}
|
||||
];
|
||||
|
||||
grid.defaultColDef.cellStyle = function(params) {
|
||||
if (params.node.rowPinned) {
|
||||
return;
|
||||
}
|
||||
var style = {};
|
||||
var value = params.value || 0;
|
||||
var field = params.colDef.field;
|
||||
if (field == "NeedNum" && value > 0) {
|
||||
style = {'color':'red'};
|
||||
}
|
||||
return style;
|
||||
};
|
||||
|
||||
var gridDiv = document.querySelector("#dialog-delivery_plan");
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
|
||||
// 读取数据
|
||||
grid.remoteData();
|
||||
|
||||
$('#plan_delivery_submit').on('click', function() {
|
||||
var v = $('#plan_delivery_dt').val();
|
||||
grid.remoteData({date: v});
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,62 @@
|
||||
{{$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,125 @@
|
||||
<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 multiple = params.multi == 0 ? false : true;
|
||||
var grid = new agGridOptions();
|
||||
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
grid.remoteParams = params;
|
||||
grid.rowSelection = multiple ? 'multiple' : 'single';
|
||||
grid.suppressRowClickSelection = true;
|
||||
grid.columnDefs = [
|
||||
{suppressMenu: true, cellClass:'text-center', checkboxSelection: true, headerCheckboxSelection: multiple, suppressSizeToFit: true, sortable: false, width: 40},
|
||||
{suppressMenu: true, cellClass:'text-center', field: 'sn', headerName: '单据编号', minWidth: 160},
|
||||
{suppressMenu: true, cellClass:'text-center', sortable: false, field: 'created_at', headerName: '单据日期', width: 140},
|
||||
{suppressMenu: true, cellClass:'text-center', field: 'customer_code', headerName: '客户编号', width: 120},
|
||||
{suppressMenu: true, cellClass:'text-left', field: 'customer_id_name', headerName: '客户名称', width: 220},
|
||||
{suppressMenu: true, cellClass:'text-right', field: 'total_money', headerName: '订单金额', width: 120},
|
||||
{suppressMenu: true, cellClass:'text-center', field: 'id', headerName: 'ID', width: 80}
|
||||
];
|
||||
|
||||
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,61 @@
|
||||
{{$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,59 @@
|
||||
<div class="wrapper-xs">
|
||||
<form class="form-horizontal" id="logistics_plan" method="post">
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-3 control-label">预计发货日期</div>
|
||||
<div class="col-sm-9 control-text"><input id="plan_delivery_dt" name="delivery[plan_delivery_dt]" type="text" autocomplete="off" data-toggle="date" class="form-control input-sm"></div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-3 control-label">短途承运人</div>
|
||||
<div class="col-sm-9 control-text">
|
||||
<select type="text" class="input-required form-control input-sm" autocomplete="off" id="freight_short_logistics_id" name="delivery[freight_short_logistics_id]"></select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-3 control-label">短途车牌号</div>
|
||||
<div class="col-sm-9 control-text"><input type="text" class="form-control input-sm" autocomplete="off" id="freight_short_car" name="delivery[freight_short_car]"></div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-3 control-label">物流公司</div>
|
||||
<div class="col-sm-9 control-text">
|
||||
<select type="text" class="input-required form-control input-sm" autocomplete="off" id="freight_logistics_id" name="delivery[freight_logistics_id]"></select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group m-b-none">
|
||||
<div class="col-sm-3 control-label">物流联系电话</div>
|
||||
<div class="col-sm-9 control-text"><input type="text" class="form-control input-sm" autocomplete="off" id="freight_logistics_phone" name="delivery[freight_logistics_phone]"></div>
|
||||
</div>
|
||||
|
||||
<input name="ids" value="{{$gets['ids']}}" type="hidden">
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
// 选择短途运输人
|
||||
var short_logistics_id = $("#freight_short_logistics_id").select2Field({
|
||||
placeholder:"请选择短途承运人",width:"100%",allowClear:true,search_key:'logistics',multiple:0,ajaxParams:{select2:"true"},ajax:{url:"/order/logistics/dialog"}
|
||||
});
|
||||
short_logistics_id.on('select2:select', function(e) {
|
||||
var row = e.params.data;
|
||||
$('#freight_short_car').val(row.short_car_sn);
|
||||
});
|
||||
|
||||
// 选择物流公司
|
||||
var logistics_id = $("#freight_logistics_id").select2Field({
|
||||
placeholder:"物流公司",width:"100%",allowClear:true,search_key:'logistics',multiple:0,ajaxParams:{select2:"true"},ajax:{url:"/order/logistics/dialog"}
|
||||
});
|
||||
logistics_id.on('select2:select', function(e) {
|
||||
var row = e.params.data;
|
||||
console.log(row);
|
||||
$('#freight_logistics_phone').val(row.short_car_sn);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1 @@
|
||||
{{$form['tpl']}}
|
||||
@@ -0,0 +1,188 @@
|
||||
<table class="table no-border">
|
||||
<tr>
|
||||
<td width="70%">客户名称:{{$master['tax_name']}}</td>
|
||||
<td width="30%">发货日期:{{$master['plan_delivery_dt']}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>运费付款方式:{{$master['freight_pay_text']}}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>联 系 人:{{$master['warehouse_contact']}}</td>
|
||||
<td>收货人手机:{{$master['warehouse_phone']}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>收货地址:{{$master['warehouse_address']}}</td>
|
||||
<td>座机电话:{{$master['warehouse_tel']}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>备注:{{$master['remark']}}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br><br>
|
||||
|
||||
<table class="table no-border">
|
||||
<tr>
|
||||
<td width="34%">产品</td>
|
||||
<td width="33%">库管员:</td>
|
||||
<td width="33%">发货员:</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<?php $products = $rows->where('product_type', '>', 0); ?>
|
||||
@if($products->count())
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<td align="center">产品名称</td>
|
||||
<td align="center">规格型号</td>
|
||||
<td align="center">单位</td>
|
||||
<td align="center">数量</td>
|
||||
<td align="center">重量</td>
|
||||
<td align="center">备注</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($products as $row)
|
||||
<tr>
|
||||
<td align="center">
|
||||
{{$row['product_name']}}
|
||||
</td>
|
||||
<td align="center">
|
||||
{{$row['product_spec']}}
|
||||
</td>
|
||||
<td align="center">
|
||||
{{$row['product_unit']}}
|
||||
</td>
|
||||
<td align="right">
|
||||
@number($row['delivery_quantity'], 2)
|
||||
</td>
|
||||
<td align="right">
|
||||
@number($row['total_weight'], 2)
|
||||
</td>
|
||||
<td>
|
||||
{{$row['remark']}}
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
|
||||
<tr>
|
||||
<td align="center">合计</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td align="right">@number($products->sum('delivery_quantity'), 2)</td>
|
||||
<td align="right">@number((intval($products->sum('total_weight') / 100)) * 100, 2)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
@endif
|
||||
|
||||
<?php $materiels = $rows->where('material_type', '>', 0); ?>
|
||||
@if($materiels->count())
|
||||
<table class="table no-border">
|
||||
<tr>
|
||||
<td width="34%">物料</td>
|
||||
<td width="33%">库管员:</td>
|
||||
<td width="33%">发货员:</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<td align="center">产品名称</td>
|
||||
<td align="center">规格型号</td>
|
||||
<td align="center">单位</td>
|
||||
<td align="center">数量</td>
|
||||
<td align="center">重量</td>
|
||||
<td align="center">备注</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($materiels as $row)
|
||||
<tr>
|
||||
<td align="center">
|
||||
{{$row['product_name']}}
|
||||
</td>
|
||||
<td align="center">
|
||||
{{$row['product_spec']}}
|
||||
</td>
|
||||
<td align="center">
|
||||
{{$row['product_unit']}}
|
||||
</td>
|
||||
<td align="right">
|
||||
@number($row['delivery_quantity'], 2)
|
||||
</td>
|
||||
<td align="right">
|
||||
@number($row['total_weight'], 2)
|
||||
</td>
|
||||
<td>
|
||||
{{$row['remark']}}
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
|
||||
<tr>
|
||||
<td align="center">合计</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td align="right">@number($materiels->sum('delivery_quantity'), 2)</td>
|
||||
<td align="right">@number($materiels->sum('total_weight'), 2)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
@endif
|
||||
|
||||
<table class="table">
|
||||
<tr>
|
||||
<td width="10%">特别说明</td>
|
||||
<td width="90%">
|
||||
收货时请按我司《随货单》点货验收。货物如有缺失或者破损,请与承运方协调,采取现场赔付,如协调无法达成一致意见,请第一时间告知我司并向承运方索取有效货物异常证明(贵司收货人与承运方双方签字认可的货物运单)回单至我司028-38296888并确认收到。
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>回执单(客户填写)</td>
|
||||
<td><p style="padding-top:0;">
|
||||
1、
|
||||
年
|
||||
月
|
||||
日收到产品
|
||||
件,配件 件;
|
||||
</p>
|
||||
<p style="padding-top:0;">
|
||||
2、货品情况:<label class="checkbox-inline i-checks i-checks-sm"><i></i>完好</label>
|
||||
|
||||
<label class="checkbox-inline i-checks i-checks-sm"><i></i>缺失</label>
|
||||
|
||||
<label class="checkbox-inline i-checks i-checks-sm"><i></i>破损</label>
|
||||
</p>
|
||||
<p style="padding-top:0;">
|
||||
3、赔付与否:<label class="checkbox-inline i-checks i-checks-sm"><i></i>不需赔付</label>
|
||||
|
||||
<label class="checkbox-inline i-checks i-checks-sm"><i></i>需要赔付</label>
|
||||
</p>
|
||||
<p style="padding-top:0;">
|
||||
4、赔付要求:
|
||||
</p>
|
||||
<p style="padding-top:0;">
|
||||
您对我司此次配送服务是否满意:
|
||||
<label class="checkbox-inline i-checks i-checks-sm"><i></i>满意</label>
|
||||
|
||||
<label class="checkbox-inline i-checks i-checks-sm"><i></i>不满意</label>
|
||||
</p>
|
||||
<p style="padding-top:0;">
|
||||
贵司经办人签字(加盖贵司印章):
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">注:请您务必完整填写此表,签收时必须填写收到日期,否则视同在规定时间内已送达客户(此单回执,我司结账单以此单为准),谢谢合作!</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -0,0 +1,122 @@
|
||||
<style>
|
||||
.modal-body { overflow:hidden; }
|
||||
</style>
|
||||
|
||||
<div class="wrapper-xs">
|
||||
<div id="dialog-customer_order-toolbar">
|
||||
<form id="dialog-customer_order-search-form" name="dialog_customer_order_search_form" class="search-inline-form form-inline" method="get">
|
||||
@include('searchForm3')
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="ref_customer_order" class="ag-theme-balham" style="width:100%;height:200px;"></div>
|
||||
|
||||
<div class="m-t-xs">
|
||||
<div id="ref_customer_order_data" class="ag-theme-balham" style="width:100%;height:240px;"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var $ref_customer_order = null;
|
||||
var $ref_customer_order_data = null;
|
||||
var params = JSON.parse('{{json_encode($query)}}');
|
||||
(function($) {
|
||||
params['master'] = 1;
|
||||
var mGridDiv = document.querySelector("#ref_customer_order");
|
||||
var mGrid = new agGridOptions();
|
||||
mGrid.remoteDataUrl = '{{url()}}';
|
||||
mGrid.remoteParams = params;
|
||||
mGrid.rowMultiSelectWithClick = false;
|
||||
mGrid.rowSelection = 'multiple';
|
||||
mGrid.autoColumnsToFit = false;
|
||||
mGrid.defaultColDef.suppressMenu = true;
|
||||
mGrid.defaultColDef.sortable = false;
|
||||
mGrid.columnDefs = [
|
||||
{cellClass:'text-center', checkboxSelection: true, headerCheckboxSelection: true, suppressSizeToFit: true, width: 40},
|
||||
{cellClass:'text-center', field: 'sn', headerName: '订单编号', minWidth: 160},
|
||||
{cellClass:'text-center', field: 'created_at', type: 'datetime', headerName: '单据日期', width: 120},
|
||||
{cellClass:'text-center', field: 'customer_code', headerName: '客户编码', width: 120},
|
||||
{field:'customer_name', headerName: '客户名称', width: 120},
|
||||
{field:'warehouse_contact', headerName: '收货人', width: 120},
|
||||
{field:'warehouse_phone', headerName: '收货人电话', width: 120},
|
||||
{field:'warehouse_address', headerName: '收货地址', width: 220},
|
||||
{cellClass:'text-center', field: 'id', headerName: 'ID', width: 60}
|
||||
];
|
||||
|
||||
mGrid.onSelectionChanged = function() {
|
||||
var rows = mGrid.api.getSelectedRows();
|
||||
var ids = [];
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
ids.push(rows[i].id);
|
||||
}
|
||||
params.ids = ids;
|
||||
sGrid.remoteData(params);
|
||||
};
|
||||
new agGrid.Grid(mGridDiv, mGrid);
|
||||
// 读取数据
|
||||
mGrid.remoteData();
|
||||
$ref_customer_order = mGrid;
|
||||
params['master'] = 0;
|
||||
var sGridDiv = document.querySelector("#ref_customer_order_data");
|
||||
var sGrid = new agGridOptions();
|
||||
sGrid.remoteDataUrl = '{{url()}}';
|
||||
sGrid.remoteParams = params;
|
||||
sGrid.rowMultiSelectWithClick = true;
|
||||
sGrid.suppressRowClickSelection = true;
|
||||
sGrid.rowSelection = 'multiple';
|
||||
sGrid.autoColumnsToFit = false;
|
||||
sGrid.defaultColDef.suppressMenu = true;
|
||||
sGrid.defaultColDef.sortable = false;
|
||||
sGrid.getRowClass = function(params) {
|
||||
var data = params.data;
|
||||
params.node.setSelected(true);
|
||||
if (data.current_stock < data.quantity) {
|
||||
return 'ag-row-warn';
|
||||
}
|
||||
};
|
||||
sGrid.columnDefs = [
|
||||
{cellClass:'text-center', checkboxSelection: true, headerCheckboxSelection: true, suppressSizeToFit: true, width: 40},
|
||||
{cellClass:'text-center', field: 'product_code', headerName: '存货编码', width: 100},
|
||||
{field: 'product_name', headerName: '商品名称', minWidth: 180},
|
||||
{cellClass:'text-center', field: 'product_spec', headerName: '商品规格', width: 140},
|
||||
{cellClass:'text-center', field: 'unit_name', headerName: '计量单位', width: 80},
|
||||
{cellClass:'text-center', field: 'current_stock', headerName: '现存量', width: 80},
|
||||
{cellClass:'text-right', field: 'total_quantity', headerName: '订单数量', width: 80},
|
||||
{cellClass:'text-right', field: 'use_quantity', headerName: '已发数量', width: 80},
|
||||
{cellClass:'text-right', field: 'quantity', headerName: '未发数量', width: 80},
|
||||
{cellClass:'text-center', field: 'id', headerName: 'ID', width: 60}
|
||||
];
|
||||
|
||||
sGrid.onRowClicked = function(row) {
|
||||
var selected = row.node.isSelected();
|
||||
if (selected === false) {
|
||||
row.node.setSelected(true, true);
|
||||
}
|
||||
};
|
||||
|
||||
new agGrid.Grid(sGridDiv, sGrid);
|
||||
// 读取数据
|
||||
sGrid.remoteData();
|
||||
$ref_customer_order_data = sGrid;
|
||||
|
||||
var data = JSON.parse('{{json_encode($search["forms"])}}');
|
||||
var search = $('#dialog-customer_order-search-form').searchForm({
|
||||
data: data,
|
||||
init: function(e) {}
|
||||
});
|
||||
|
||||
search.find('#search-submit').on('click', function() {
|
||||
var query = search.serializeArray();
|
||||
$.map(query, function(row) {
|
||||
params[row.name] = row.value;
|
||||
});
|
||||
|
||||
params['master'] = 1;
|
||||
mGrid.remoteData(params);
|
||||
|
||||
params['master'] = 0;
|
||||
sGrid.remoteData(params);
|
||||
return false;
|
||||
});
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,119 @@
|
||||
<style>
|
||||
.modal-body { overflow:hidden; }
|
||||
</style>
|
||||
|
||||
<div class="wrapper-xs">
|
||||
<div id="dialog-cancel_order-toolbar">
|
||||
<form id="dialog-cancel_order-search-form" name="dialog_cancel_order_search_form" class="search-inline-form form-inline" method="get">
|
||||
@include('searchForm3')
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="ref_cancel_order" class="ag-theme-balham" style="width:100%;height:200px;"></div>
|
||||
|
||||
<div class="m-t-xs">
|
||||
<div id="ref_cancel_order_data" class="ag-theme-balham" style="width:100%;height:240px;"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var $ref_cancel_order = null;
|
||||
var $ref_cancel_order_data = null;
|
||||
var params = JSON.parse('{{json_encode($query)}}');
|
||||
(function($) {
|
||||
params['master'] = 1;
|
||||
var mGridDiv = document.querySelector("#ref_cancel_order");
|
||||
var mGrid = new agGridOptions();
|
||||
mGrid.remoteDataUrl = '{{url()}}';
|
||||
mGrid.remoteParams = params;
|
||||
mGrid.rowMultiSelectWithClick = false;
|
||||
mGrid.rowSelection = 'multiple';
|
||||
mGrid.autoColumnsToFit = false;
|
||||
mGrid.defaultColDef.suppressMenu = true;
|
||||
mGrid.defaultColDef.sortable = false;
|
||||
mGrid.columnDefs = [
|
||||
{cellClass:'text-center', checkboxSelection: true, headerCheckboxSelection: true, suppressSizeToFit: true, width: 40},
|
||||
{cellClass:'text-center', field: 'sn', headerName: '订单编号', minWidth: 160},
|
||||
{cellClass:'text-center', field: 'created_at', type: 'datetime', headerName: '单据日期', width: 120},
|
||||
{cellClass:'text-center', field: 'customer_code', headerName: '客户编码', width: 120},
|
||||
{field:'customer_name', headerName: '客户名称', width: 120},
|
||||
{field:'warehouse_contact', headerName: '收货人', width: 120},
|
||||
{field:'warehouse_phone', headerName: '收货人电话', width: 120},
|
||||
{field:'warehouse_address', headerName: '收货地址', width: 220},
|
||||
{cellClass:'text-center', field: 'id', headerName: 'ID', width: 60}
|
||||
];
|
||||
|
||||
mGrid.onSelectionChanged = function() {
|
||||
var rows = mGrid.api.getSelectedRows();
|
||||
var ids = [];
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
ids.push(rows[i].id);
|
||||
}
|
||||
params.ids = ids;
|
||||
sGrid.remoteData(params);
|
||||
};
|
||||
new agGrid.Grid(mGridDiv, mGrid);
|
||||
// 读取数据
|
||||
mGrid.remoteData();
|
||||
$ref_customer_order = mGrid;
|
||||
params['master'] = 0;
|
||||
var sGridDiv = document.querySelector("#ref_cancel_order_data");
|
||||
var sGrid = new agGridOptions();
|
||||
sGrid.remoteDataUrl = '{{url()}}';
|
||||
sGrid.remoteParams = params;
|
||||
sGrid.rowMultiSelectWithClick = true;
|
||||
sGrid.suppressRowClickSelection = true;
|
||||
sGrid.rowSelection = 'multiple';
|
||||
sGrid.autoColumnsToFit = false;
|
||||
sGrid.defaultColDef.suppressMenu = true;
|
||||
sGrid.defaultColDef.sortable = false;
|
||||
sGrid.getRowClass = function(params) {
|
||||
var data = params.data;
|
||||
params.node.setSelected(true);
|
||||
};
|
||||
sGrid.columnDefs = [
|
||||
{cellClass:'text-center', checkboxSelection: true, headerCheckboxSelection: true, suppressSizeToFit: true, width: 40},
|
||||
{cellClass:'text-center', field: 'product_code', headerName: '存货编码', width: 100},
|
||||
{field: 'product_name', headerName: '商品名称', minWidth: 180},
|
||||
{cellClass:'text-center', field: 'product_spec', headerName: '商品规格', width: 140},
|
||||
{cellClass:'text-center', field: 'product_unit', headerName: '计量单位', width: 80},
|
||||
{cellClass:'text-right', field: '_ky_num', type:'number', headerName: '现存量', width: 80},
|
||||
{cellClass:'text-right', field: 'quantity', type:'number', headerName: '订单数量', width: 80},
|
||||
{cellClass:'text-right', field: '_yf_num',type:'number', headerName: '已发数量', width: 80},
|
||||
{cellClass:'text-right', field: '_wf_num', type:'number', headerName: '未发数量', width: 80},
|
||||
{cellClass:'text-center', field: 'id', headerName: 'ID', width: 60}
|
||||
];
|
||||
|
||||
sGrid.onRowClicked = function(row) {
|
||||
var selected = row.node.isSelected();
|
||||
if (selected === false) {
|
||||
row.node.setSelected(true, true);
|
||||
}
|
||||
};
|
||||
|
||||
new agGrid.Grid(sGridDiv, sGrid);
|
||||
// 读取数据
|
||||
sGrid.remoteData();
|
||||
$ref_customer_order_data = sGrid;
|
||||
|
||||
var data = JSON.parse('{{json_encode($search["forms"])}}');
|
||||
var search = $('#dialog-cancel_order-search-form').searchForm({
|
||||
data: data,
|
||||
init: function(e) {}
|
||||
});
|
||||
|
||||
search.find('#search-submit').on('click', function() {
|
||||
var query = search.serializeArray();
|
||||
$.map(query, function(row) {
|
||||
params[row.name] = row.value;
|
||||
});
|
||||
|
||||
params['master'] = 1;
|
||||
mGrid.remoteData(params);
|
||||
|
||||
params['master'] = 0;
|
||||
sGrid.remoteData(params);
|
||||
return false;
|
||||
});
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,128 @@
|
||||
<style>
|
||||
.modal-body { overflow:hidden; }
|
||||
</style>
|
||||
|
||||
<div class="wrapper-xs">
|
||||
<div id="dialog-customer_order-toolbar">
|
||||
<form id="dialog-customer_order-search-form" name="dialog_customer_order_search_form" class="search-inline-form form-inline" method="get">
|
||||
@include('searchForm3')
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="ref_customer_order" class="ag-theme-balham" style="width:100%;height:200px;"></div>
|
||||
|
||||
<div class="m-t-xs">
|
||||
<div id="ref_customer_order_data" class="ag-theme-balham" style="width:100%;height:240px;"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var $ref_customer_order = null;
|
||||
var $ref_customer_order_data = null;
|
||||
var params = JSON.parse('{{json_encode($query)}}');
|
||||
(function($) {
|
||||
params['master'] = 1;
|
||||
var mGridDiv = document.querySelector("#ref_customer_order");
|
||||
var mGrid = new agGridOptions();
|
||||
mGrid.remoteDataUrl = '{{url()}}';
|
||||
mGrid.remoteParams = params;
|
||||
mGrid.rowMultiSelectWithClick = false;
|
||||
mGrid.rowSelection = 'multiple';
|
||||
mGrid.autoColumnsToFit = false;
|
||||
mGrid.defaultColDef.suppressMenu = true;
|
||||
mGrid.defaultColDef.sortable = false;
|
||||
mGrid.columnDefs = [
|
||||
{cellClass:'text-center', checkboxSelection: true, headerCheckboxSelection: true, suppressSizeToFit: true, width: 40},
|
||||
{cellClass:'text-center', field: 'sn', headerName: '订单编号', minWidth: 160},
|
||||
{cellClass:'text-center', field: 'created_at', type: 'datetime', headerName: '单据日期', width: 120},
|
||||
{cellClass:'text-center', field: 'plan_delivery_dt', headerName: '预计发货日期', width: 120},
|
||||
{cellClass:'text-center', field: 'customer_code', headerName: '客户编码', width: 120},
|
||||
{field:'customer_name', headerName: '所属客户', width: 120},
|
||||
{field:'tax_name', headerName: '开票名称', width: 120},
|
||||
{field:'warehouse_contact', headerName: '收货人', width: 120},
|
||||
{field:'warehouse_phone', headerName: '收货人电话', width: 120},
|
||||
{field:'warehouse_address', headerName: '收货地址', width: 220},
|
||||
{cellClass:'text-center', field: 'id', headerName: 'ID', width: 60}
|
||||
];
|
||||
|
||||
mGrid.onSelectionChanged = function() {
|
||||
var rows = mGrid.api.getSelectedRows();
|
||||
var ids = [];
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
ids.push(rows[i].id);
|
||||
}
|
||||
params.ids = ids;
|
||||
sGrid.remoteData(params);
|
||||
};
|
||||
new agGrid.Grid(mGridDiv, mGrid);
|
||||
// 读取数据
|
||||
mGrid.remoteData();
|
||||
$ref_customer_order = mGrid;
|
||||
params['master'] = 0;
|
||||
var sGridDiv = document.querySelector("#ref_customer_order_data");
|
||||
var sGrid = new agGridOptions();
|
||||
sGrid.remoteDataUrl = '{{url()}}';
|
||||
sGrid.remoteParams = params;
|
||||
sGrid.rowMultiSelectWithClick = true;
|
||||
sGrid.suppressRowClickSelection = true;
|
||||
sGrid.rowSelection = 'multiple';
|
||||
sGrid.autoColumnsToFit = false;
|
||||
sGrid.defaultColDef.suppressMenu = true;
|
||||
sGrid.defaultColDef.sortable = false;
|
||||
sGrid.getRowClass = function(params) {
|
||||
var data = params.data;
|
||||
params.node.setSelected(true);
|
||||
if (data.product_code == '99001') {
|
||||
return;
|
||||
}
|
||||
if (toNumber(data.ky_num) < toNumber(data.wf_num)) {
|
||||
return 'ag-row-warn';
|
||||
}
|
||||
};
|
||||
sGrid.columnDefs = [
|
||||
{cellClass:'text-center', checkboxSelection: true, headerCheckboxSelection: true, suppressSizeToFit: true, width: 40},
|
||||
{cellClass:'text-center', type: 'sn', headerName: '序号', width: 40},
|
||||
{cellClass:'text-center', field: 'product_code', headerName: '存货编码', width: 100},
|
||||
{field: 'product_name', headerName: '商品名称', width: 180},
|
||||
{cellClass:'text-center', field: 'product_spec', headerName: '商品规格', width: 120},
|
||||
{cellClass:'text-center', field: 'product_unit', headerName: '计量单位', width: 80},
|
||||
{cellClass:'text-right', field: 'ky_num', type:'number', headerName: '现存量', width: 80, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'quantity', type:'number', headerName: '订单数量', width: 80, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'yf_num',type:'number', headerName: '已发数量', width: 80, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'wf_num', type:'number', headerName: '未发数量', width: 80, calcFooter: 'sum'},
|
||||
{cellClass:'text-center', field: 'id', headerName: 'ID', width: 70}
|
||||
];
|
||||
|
||||
sGrid.onRowClicked = function(row) {
|
||||
var selected = row.node.isSelected();
|
||||
if (selected === false) {
|
||||
row.node.setSelected(true, true);
|
||||
}
|
||||
};
|
||||
|
||||
new agGrid.Grid(sGridDiv, sGrid);
|
||||
// 读取数据
|
||||
sGrid.remoteData();
|
||||
$ref_customer_order_data = sGrid;
|
||||
|
||||
var data = JSON.parse('{{json_encode($search["forms"])}}');
|
||||
var search = $('#dialog-customer_order-search-form').searchForm({
|
||||
data: data,
|
||||
init: function(e) {}
|
||||
});
|
||||
|
||||
search.find('#search-submit').on('click', function() {
|
||||
var query = search.serializeArray();
|
||||
$.map(query, function(row) {
|
||||
params[row.name] = row.value;
|
||||
});
|
||||
|
||||
params['master'] = 1;
|
||||
mGrid.remoteData(params);
|
||||
|
||||
params['master'] = 0;
|
||||
sGrid.remoteData(params);
|
||||
return false;
|
||||
});
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,117 @@
|
||||
<style>
|
||||
.modal-body { overflow:hidden; }
|
||||
</style>
|
||||
|
||||
<div class="wrapper-xs">
|
||||
<div id="dialog-customer_order-toolbar">
|
||||
<form id="dialog-customer_order-search-form" name="dialog_customer_order_search_form" class="search-inline-form form-inline" method="get">
|
||||
@include('searchForm3')
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="ref_customer_order" class="ag-theme-balham" style="width:100%;height:200px;"></div>
|
||||
|
||||
<div class="m-t-xs">
|
||||
<div id="ref_customer_order_data" class="ag-theme-balham" style="width:100%;height:240px;"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var $ref_customer_order = null;
|
||||
var $ref_customer_order_data = null;
|
||||
var params = JSON.parse('{{json_encode($query)}}');
|
||||
(function($) {
|
||||
params['master'] = 1;
|
||||
var mGridDiv = document.querySelector("#ref_customer_order");
|
||||
var mGrid = new agGridOptions();
|
||||
mGrid.remoteDataUrl = '{{url()}}';
|
||||
mGrid.remoteParams = params;
|
||||
mGrid.rowMultiSelectWithClick = false;
|
||||
mGrid.rowSelection = 'multiple';
|
||||
mGrid.autoColumnsToFit = false;
|
||||
mGrid.defaultColDef.suppressMenu = true;
|
||||
mGrid.defaultColDef.sortable = false;
|
||||
mGrid.columnDefs = [
|
||||
{cellClass:'text-center', checkboxSelection: true, headerCheckboxSelection: true, suppressSizeToFit: true, width: 40},
|
||||
{cellClass:'text-center', field: 'sn', headerName: '订单编号', minWidth: 160},
|
||||
{cellClass:'text-center', field: 'created_at', type: 'datetime', headerName: '单据日期', width: 120},
|
||||
{cellClass:'text-center', field: 'customer_code', headerName: '客户编码', width: 120},
|
||||
{field:'customer_name', headerName: '客户名称', width: 120},
|
||||
{field:'warehouse_contact', headerName: '收货人', width: 120},
|
||||
{field:'warehouse_phone', headerName: '收货人电话', width: 120},
|
||||
{field:'warehouse_address', headerName: '收货地址', width: 220},
|
||||
{cellClass:'text-center', field: 'id', headerName: 'ID', width: 60}
|
||||
];
|
||||
|
||||
mGrid.onSelectionChanged = function() {
|
||||
var rows = mGrid.api.getSelectedRows();
|
||||
var ids = [];
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
ids.push(rows[i].id);
|
||||
}
|
||||
params.ids = ids;
|
||||
sGrid.remoteData(params);
|
||||
};
|
||||
new agGrid.Grid(mGridDiv, mGrid);
|
||||
// 读取数据
|
||||
mGrid.remoteData();
|
||||
$ref_customer_order = mGrid;
|
||||
params['master'] = 0;
|
||||
var sGridDiv = document.querySelector("#ref_customer_order_data");
|
||||
var sGrid = new agGridOptions();
|
||||
sGrid.remoteDataUrl = '{{url()}}';
|
||||
sGrid.remoteParams = params;
|
||||
sGrid.rowMultiSelectWithClick = true;
|
||||
sGrid.suppressRowClickSelection = true;
|
||||
sGrid.rowSelection = 'multiple';
|
||||
sGrid.autoColumnsToFit = false;
|
||||
sGrid.defaultColDef.suppressMenu = true;
|
||||
sGrid.defaultColDef.sortable = false;
|
||||
sGrid.getRowClass = function(params) {
|
||||
params.node.setSelected(true);
|
||||
};
|
||||
sGrid.columnDefs = [
|
||||
{cellClass:'text-center', checkboxSelection: true, headerCheckboxSelection: true, suppressSizeToFit: true, width: 40},
|
||||
{cellClass:'text-center', field: 'product_code', headerName: '存货编码', width: 100},
|
||||
{field: 'product_name', headerName: '商品名称', minWidth: 180},
|
||||
{cellClass:'text-center', field: 'product_spec', headerName: '商品规格', width: 140},
|
||||
{cellClass:'text-center', field: 'product_unit', headerName: '计量单位', width: 80},
|
||||
{cellClass:'text-right', field: 'num', type:'number', headerName: '订单数量', width: 80},
|
||||
{cellClass:'text-right', field: 'yf_num',type:'number', headerName: '已发数量', width: 80},
|
||||
{cellClass:'text-right', field: 'wf_num', type:'number', headerName: '未发数量', width: 80},
|
||||
{cellClass:'text-center', field: 'id', headerName: 'ID', width: 60}
|
||||
];
|
||||
|
||||
sGrid.onRowClicked = function(row) {
|
||||
var selected = row.node.isSelected();
|
||||
if (selected === false) {
|
||||
row.node.setSelected(true, true);
|
||||
}
|
||||
};
|
||||
|
||||
new agGrid.Grid(sGridDiv, sGrid);
|
||||
// 读取数据
|
||||
sGrid.remoteData();
|
||||
$ref_customer_order_data = sGrid;
|
||||
|
||||
var data = JSON.parse('{{json_encode($search["forms"])}}');
|
||||
var search = $('#dialog-customer_order-search-form').searchForm({
|
||||
data: data,
|
||||
init: function(e) {}
|
||||
});
|
||||
|
||||
search.find('#search-submit').on('click', function() {
|
||||
var query = search.serializeArray();
|
||||
$.map(query, function(row) {
|
||||
params[row.name] = row.value;
|
||||
});
|
||||
|
||||
params['master'] = 1;
|
||||
mGrid.remoteData(params);
|
||||
|
||||
params['master'] = 0;
|
||||
sGrid.remoteData(params);
|
||||
return false;
|
||||
});
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,174 @@
|
||||
<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:200px;"></div>
|
||||
<div class="m-t-xs">
|
||||
<div id="promotion_customer_order_data" class="ag-theme-balham" style="width:100%;height:240px;"></div>
|
||||
</div>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
|
||||
<script>
|
||||
var $promotion_customer_order = null;
|
||||
var $promotion_customer_order_data = null;
|
||||
(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 multiple = params.multi == 0 ? false : true;
|
||||
var mGrid = new agGridOptions();
|
||||
|
||||
params['master'] = 1;
|
||||
mGrid.remoteDataUrl = '{{url()}}';
|
||||
mGrid.remoteParams = params;
|
||||
mGrid.rowSelection = multiple ? 'multiple' : 'single';
|
||||
mGrid.suppressRowClickSelection = true;
|
||||
mGrid.columnDefs = [
|
||||
{suppressMenu: true, cellClass:'text-center', checkboxSelection: true, headerCheckboxSelection: multiple, suppressSizeToFit: true, sortable: false, width: 40},
|
||||
{suppressMenu: true, cellClass:'text-center', field: 'sn', headerName: '单据编号', minWidth: 160},
|
||||
{suppressMenu: true, cellClass:'text-center', sortable: false, type: 'datetime', field: 'created_at', headerName: '单据日期', width: 140},
|
||||
{suppressMenu: true, cellClass:'text-center', field: 'customer_code', headerName: '客户编号', width: 120},
|
||||
{suppressMenu: true, cellClass:'text-left', field: 'customer_name', headerName: '客户名称', width: 220},
|
||||
{suppressMenu: true, cellClass:'text-right', field: 'total_money', headerName: '订单金额', width: 120},
|
||||
{suppressMenu: true, cellClass:'text-center', field: 'id', headerName: 'ID', width: 80}
|
||||
];
|
||||
|
||||
mGrid.onRowClicked = function(row) {
|
||||
var selected = row.node.isSelected();
|
||||
if (selected === false) {
|
||||
row.node.setSelected(true, true);
|
||||
}
|
||||
var rows = mGrid.api.getSelectedRows();
|
||||
var ids = [];
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
ids.push(rows[i].id);
|
||||
}
|
||||
params.ids = ids;
|
||||
sGrid.remoteData(params);
|
||||
};
|
||||
|
||||
mGrid.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];
|
||||
}
|
||||
}
|
||||
mGrid.api.forEachNode(function(node) {
|
||||
var key = node.data[sid];
|
||||
if (rows[key] != undefined) {
|
||||
node.setSelected(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 写入选中
|
||||
*/
|
||||
function writeSelected() {
|
||||
var rows = mGrid.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;
|
||||
}
|
||||
mGrid.writeSelected = writeSelected;
|
||||
gdoo.dialogs[option.id] = mGrid;
|
||||
|
||||
var gridDiv = document.querySelector("#dialog-{{$search['query']['id']}}");
|
||||
new agGrid.Grid(gridDiv, mGrid);
|
||||
// 读取数据
|
||||
mGrid.remoteData();
|
||||
// 数据载入成功
|
||||
mGrid.remoteSuccessed = function() {
|
||||
initSelected();
|
||||
}
|
||||
|
||||
params['master'] = 0;
|
||||
var sGridDiv = document.querySelector("#promotion_customer_order_data");
|
||||
var sGrid = new agGridOptions();
|
||||
sGrid.remoteDataUrl = '{{url()}}';
|
||||
sGrid.remoteParams = params;
|
||||
sGrid.rowMultiSelectWithClick = true;
|
||||
sGrid.rowSelection = 'multiple';
|
||||
sGrid.autoColumnsToFit = false;
|
||||
sGrid.defaultColDef.suppressMenu = true;
|
||||
sGrid.defaultColDef.sortable = false;
|
||||
sGrid.getRowClass = function(params) {
|
||||
var data = params.data;
|
||||
params.node.setSelected(true);
|
||||
};
|
||||
sGrid.columnDefs = [
|
||||
{cellClass:'text-center', checkboxSelection: true, headerCheckboxSelection: true, suppressSizeToFit: true, width: 40},
|
||||
{cellClass:'text-center', field: 'product_code', headerName: '存货编码', width: 100},
|
||||
{field: 'product_name', headerName: '商品名称', minWidth: 180},
|
||||
{cellClass:'text-center', field: 'product_spec', headerName: '商品规格', width: 140},
|
||||
{cellClass:'text-center', field: 'product_barcode', headerName: '商品条码', width: 100},
|
||||
{cellClass:'text-center', field: 'product_unit', headerName: '计量单位', width: 80},
|
||||
{cellClass:'text-right', field: 'quantity', headerName: '数量', width: 80},
|
||||
{cellClass:'text-right', field: 'price', headerName: '单价(元)', width: 80},
|
||||
{cellClass:'text-right', field: 'money', headerName: '金额(元)', width: 80},
|
||||
{cellClass:'text-center', field: 'id', headerName: 'ID', width: 60}
|
||||
];
|
||||
new agGrid.Grid(sGridDiv, sGrid);
|
||||
// 读取数据
|
||||
sGrid.remoteData();
|
||||
$promotion_customer_order_data = sGrid;
|
||||
|
||||
var data = search.forms;
|
||||
var search = $("#dialog-{{$search['query']['id']}}-search-form").searchForm({
|
||||
data: data,
|
||||
init: function(e) {}
|
||||
});
|
||||
search.find('#search-submit').on('click', function() {
|
||||
var query = search.serializeArray();
|
||||
$.map(query, function(row) {
|
||||
params[row.name] = row.value;
|
||||
});
|
||||
params['master'] = 1;
|
||||
mGrid.remoteData(params);
|
||||
|
||||
params['master'] = 0;
|
||||
sGrid.remoteData(params);
|
||||
return false;
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,110 @@
|
||||
<div class="panel b-a" id="{{$search['table']}}-controller">
|
||||
|
||||
<div class="wrapper-sm">
|
||||
@include('searchForm7')
|
||||
<a class="btn btn-sm btn-default" data-toggle="{{$search['table']}}" data-action="filter"><i class="fa fa-search"></i> 筛选</a>
|
||||
<a class="btn btn-sm btn-default" data-toggle="{{$search['table']}}" data-action="export"><i class="fa fa-share"></i> 导出</a>
|
||||
</div>
|
||||
|
||||
<div class='list-jqgrid'>
|
||||
<div id="{{$search['table']}}-grid" style="width:100%;" class="ag-theme-balham"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
(function ($) {
|
||||
var searchOpen = false;
|
||||
var table = '{{$search["table"]}}';
|
||||
var search = JSON.parse('{{json_encode($search)}}');
|
||||
var columns = [];
|
||||
var params = search.query;
|
||||
var grid = new agGridOptions();
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
grid.remoteParams = params;
|
||||
|
||||
grid.defaultColDef.suppressMenu = true;
|
||||
grid.defaultColDef.filter = 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: 'status', headerName: '状态', width: 100},
|
||||
{cellClass:'text-center', field: 'sn', headerName: '订单编码', width: 100},
|
||||
{cellClass:'text-center', field: 'created_dt', headerName: '订单日期', width: 80},
|
||||
{cellClass:'text-center', field: 'customer_name', headerName: '客户名称', width: 160},
|
||||
{cellClass:'text-center', field: 'product_code', headerName: '产品编码', width: 80},
|
||||
{cellClass:'text-left', field: 'product_name', headerName: '产品名称', width: 160},
|
||||
{cellClass:'text-center', field: 'product_spec', headerName: '规格型号', width: 100},
|
||||
{cellClass:'text-center', field: 'batch_sn', headerName: '生产批号', width: 100},
|
||||
|
||||
{cellClass:'text-right', field: 'quantity', headerName: '订单数量', width: 70, type:'number', numberOptions: {places:0}, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'plan_num', headerName: '已生产数量', width: 70,type:'number', numberOptions: {places:0}, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'storage_num', headerName: '已入库数量', width: 70, type:'number', numberOptions: {places:0}, calcFooter: 'sum'},
|
||||
];
|
||||
|
||||
var gridDiv = document.querySelector("#{{$search['table']}}-grid");
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
gridDiv.style.height = getPanelHeight(12);
|
||||
|
||||
// 读取数据
|
||||
grid.remoteData();
|
||||
|
||||
var search = $('#' + table + '-search-form-advanced').searchForm({
|
||||
data: search.forms,
|
||||
advanced: true,
|
||||
});
|
||||
|
||||
gdoo.grids[table] = {grid: grid};
|
||||
|
||||
var action = new gridAction(table, '外销生产进度表');
|
||||
var panel = $('#' + table + '-controller');
|
||||
|
||||
// 过滤数据
|
||||
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['filter'] = 1;
|
||||
grid.remoteData(params);
|
||||
$(this).dialog("close");
|
||||
return false;
|
||||
}
|
||||
}]
|
||||
});
|
||||
}
|
||||
|
||||
panel.on('click', '[data-toggle="' + table + '"]', function() {
|
||||
var data = $(this).data();
|
||||
if (data.action == 'filter') {
|
||||
searchBox();
|
||||
}
|
||||
|
||||
if (data.action == 'export') {
|
||||
action.export(data, '外销生产进度表');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
if (searchOpen == false) {
|
||||
searchBox();
|
||||
}
|
||||
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,108 @@
|
||||
<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 = false;
|
||||
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: 'product_code', headerName: '产品编码', width: 100},
|
||||
{cellClass:'text-left', field: 'product_name_spec', headerName: '产品名称', width: 160},
|
||||
{cellClass:'text-center', field: 'ProductBatsch', headerName: '生产批次', width: 100},
|
||||
{cellClass:'text-right', field: 'kc_num', headerName: '当前库存', width: 70, type:'number', numberOptions: {places:0}, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'dphz_num', headerName: '单品汇总', width: 70,type:'number', numberOptions: {places:0}, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'xqzc_num', headerName: '需求总差', width: 70, type:'number', numberOptions: {places:0}, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'yhk_num', headerName: '已回款数', width: 70, type:'number', numberOptions: {places:0}, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'kfzc_num', headerName: '打款差额', width: 70, type:'number', numberOptions: {places:0}, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'kfjh_num', headerName: '计划差额', width: 70, type:'number', numberOptions: {places:0}, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'waitin_num', headerName: '待入库', width: 60, type:'number', numberOptions: {places:0}, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'syfh_num', headerName: '上月发货量', width: 70, type:'number', numberOptions: {places:0}, calcFooter: 'sum'},
|
||||
];
|
||||
|
||||
grid.defaultColDef.cellStyle = function(params) {
|
||||
if (params.node.rowPinned) {
|
||||
return;
|
||||
}
|
||||
var style = {};
|
||||
var value = params.value || 0;
|
||||
var field = params.colDef.field;
|
||||
if ((field.indexOf('produce_plan_num') === 0 || field == "xqzc_num" || field == "kfzc_num" || field == "kfjh_num") && value > 0) {
|
||||
style = {'color':'red'};
|
||||
}
|
||||
return style;
|
||||
};
|
||||
|
||||
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,219 @@
|
||||
<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 = false;
|
||||
grid.defaultColDef.filter = false;
|
||||
grid.autoColumnsToFit = false;
|
||||
grid.singleClickEdit = true;
|
||||
grid.rowSelection = 'single';
|
||||
grid.suppressCellSelection = false;
|
||||
grid.columnDefs = [];
|
||||
|
||||
grid.defaultColDef.cellStyle = function(params) {
|
||||
if (params.node.rowPinned) {
|
||||
return;
|
||||
}
|
||||
var style = {};
|
||||
var value = params.value || 0;
|
||||
var field = params.colDef.field;
|
||||
if ((field.indexOf('produce_plan_num') === 0 || field == "xqzc_num" || field == "kfzc_num" || field == "kfjh_num") && value > 0) {
|
||||
style = {'color':'red'};
|
||||
}
|
||||
return style;
|
||||
};
|
||||
|
||||
grid.components['wfhjh'] = function(params) {
|
||||
if (params.node.rowPinned) {
|
||||
return params.value;
|
||||
}
|
||||
if (params.value) {
|
||||
let v = parseFloat(params.value);
|
||||
return '<a href="javascript:;" data-toggle="produce_data" data-id="'+ params.data.id + '" data-field="'+ params.colDef.field +'" data-product_id="'+ params.data.product_id +'" data-action="wfhjh">'+ (v > 0 ? v : '') +'</a>';
|
||||
}
|
||||
return params.value;
|
||||
};
|
||||
|
||||
var gridDiv = document.querySelector("#{{$header['master_table']}}-grid");
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
gridDiv.style.height = getPanelHeight(12);
|
||||
|
||||
function setColumns(res) {
|
||||
var columnDefs = [
|
||||
{cellClass:'text-center', field: 'sn', type: 'sn', headerName: '序号', width: 50, pinned:'left'},
|
||||
{cellClass:'text-left', field: 'product_name_spec', headerName: '产品名称', width: 160, pinned:'left'},
|
||||
{cellClass:'text-right', field: 'kc_num', headerName: '当前库存', width: 70, pinned:'left', type:'number', numberOptions: {places:0}, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'dphz_num', headerName: '单品汇总', width: 70, pinned:'left', type:'number', numberOptions: {places:0}, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'xqzc_num', headerName: '需求总差', width: 70, pinned:'left', type:'number', numberOptions: {places:0}, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'yhk_num', headerName: '已回款数', width: 70, pinned:'left', type:'number', numberOptions: {places:0}, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'kfzc_num', headerName: '打款差额', width: 70, pinned:'left', type:'number', numberOptions: {places:0}, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'kfjh_num', headerName: '计划差额', width: 70, pinned:'left', type:'number', numberOptions: {places:0}, calcFooter: 'sum'},
|
||||
{cellClass:'text-right', field: 'waitin_num', headerName: '待入库', width: 60, pinned:'left', type:'number', numberOptions: {places:0}, calcFooter: 'sum'},
|
||||
];
|
||||
for(var i=0; i < res.columns.length;i++) {
|
||||
columnDefs.push(res.columns[i]);
|
||||
}
|
||||
columnDefs.push({cellClass:'text-right', field: 'syfh_num', headerName: '上月发货量', width: 70, type:'number', numberOptions: {places:0}, calcFooter: 'sum'});
|
||||
columnDefs.push({cellClass:'text-center', field: 'product_code', headerName: '产品编码', width: 100});
|
||||
grid.columnDefs = columnDefs;
|
||||
grid.api.setColumnDefs(columnDefs);
|
||||
}
|
||||
|
||||
// 读取数据
|
||||
grid.remoteData(null, function(res) {
|
||||
setColumns(res);
|
||||
});
|
||||
|
||||
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');
|
||||
|
||||
var producePlan = function() {
|
||||
var me = this;
|
||||
var rows = grid.api.getSelectedRows();
|
||||
if (rows.length == 1) {
|
||||
var data = rows[0];
|
||||
var url = app.url('order/plan/producePlan', {id: data.master_id, date: data.master_plan_delivery_dt});
|
||||
viewDialog({
|
||||
title: '修改计划发货日期',
|
||||
url: url,
|
||||
storeUrl: url,
|
||||
id: me.table,
|
||||
dialogClass: 'modal-md',
|
||||
onSubmit: function() {
|
||||
var me = this;
|
||||
var form = $('#plan_delivery_date').serialize();
|
||||
var loading = layer.msg('数据提交中...', {
|
||||
icon: 16, shade: 0.1, time: 1000 * 120
|
||||
});
|
||||
$.post(app.url('order/order/deliveryPlanDate'), form, function(res) {
|
||||
if (res.status) {
|
||||
grid.remoteData();
|
||||
$(me).dialog('close');
|
||||
toastrSuccess(res.data);
|
||||
} else {
|
||||
toastrError(res.data);
|
||||
}
|
||||
}).complete(function() {
|
||||
layer.close(loading);
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
toastrError('只能修改一条数据。');
|
||||
}
|
||||
}
|
||||
|
||||
panel.on('click', '[data-toggle="' + table + '"]', function() {
|
||||
var data = $(this).data();
|
||||
|
||||
if (data.action == 'wfhjh') {
|
||||
var date = data.field.split('_num_')[1];
|
||||
var url = app.url('order/plan/producePlan', {product_id: data.product_id, date: date});
|
||||
viewDialog({
|
||||
title: '发货计划',
|
||||
url: url,
|
||||
id: table,
|
||||
dialogClass: 'modal-md'
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
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, function(res) {
|
||||
setColumns(res);
|
||||
});
|
||||
$(this).dialog("close");
|
||||
return false;
|
||||
}
|
||||
}]
|
||||
});
|
||||
}
|
||||
|
||||
if (data.action == 'save') {
|
||||
var rows = [];
|
||||
var date = data.id;
|
||||
var key = 'sale_plan_num_' + date;
|
||||
grid.api.stopEditing();
|
||||
grid.api.forEachLeafNode(function(node, index) {
|
||||
var row = node.data;
|
||||
if (row[key] !== null) {
|
||||
rows.push({product_id: row.id, quantity: row[key]});
|
||||
}
|
||||
});
|
||||
|
||||
if (rows.length == 0) {
|
||||
toastrError(date + '营销计划不能为空。');
|
||||
return;
|
||||
}
|
||||
$.post("{{url('produce_save')}}", {date: date, rows: rows}, function(res) {
|
||||
toastrSuccess(res.data);
|
||||
grid.remoteData(params, function(res) {
|
||||
setColumns(res);
|
||||
});
|
||||
});
|
||||
}
|
||||
if (data.action == 'submit') {
|
||||
var rows = [];
|
||||
var date = data.id;
|
||||
grid.api.stopEditing();
|
||||
$.messager.confirm('提交' + date + '营销计划', '请确认是否提交,本操作不可逆?', function(btn) {
|
||||
if (btn) {
|
||||
$.post("{{url('produce_submit')}}", {date: date}, function(res) {
|
||||
toastrSuccess(res.data);
|
||||
grid.remoteData(params, function(res) {
|
||||
setColumns(res);
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (data.action == 'export') {
|
||||
action.export(data, '生产计划(营销)');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,44 @@
|
||||
<div id="dialog-delivery_plan" class="ag-theme-balham" style="width:100%;height:380px;"></div>
|
||||
|
||||
<script>
|
||||
(function ($) {
|
||||
var params = JSON.parse('{{json_encode($query)}}');
|
||||
var multiple = params.multi == 0 ? false : true;
|
||||
var grid = new agGridOptions();
|
||||
grid.remoteDataUrl = '{{url()}}';
|
||||
grid.remoteParams = params;
|
||||
grid.rowSelection = multiple ? 'multiple' : 'single';
|
||||
grid.suppressRowClickSelection = true;
|
||||
grid.defaultColDef.sortable = false;
|
||||
grid.defaultColDef.filter = false;
|
||||
grid.defaultColDef.suppressMenu = true;
|
||||
grid.defaultColDef.suppressNavigable = true;
|
||||
grid.columnDefs = [
|
||||
{cellClass:'text-left', field: 'customer_name', headerName: '客户名称', minWidth: 140},
|
||||
{cellClass:'text-center', field: 'sn', headerName: '订单号', width: 140},
|
||||
{cellClass:'text-right', type: 'number', field: 'fhjh_num', headerName: '数量', width: 80},
|
||||
{cellClass:'text-center', field: 'pay_dt', headerName: '打款日期', width: 100},
|
||||
{cellClass:'text-left', field: 'export_country', headerName: '出口国家', width: 100},
|
||||
];
|
||||
|
||||
grid.defaultColDef.cellStyle1 = function(params) {
|
||||
if (params.node.rowPinned) {
|
||||
return;
|
||||
}
|
||||
var style = {};
|
||||
var value = params.value || 0;
|
||||
var field = params.colDef.field;
|
||||
if (field == "NeedNum" && value > 0) {
|
||||
style = {'color':'red'};
|
||||
}
|
||||
return style;
|
||||
};
|
||||
|
||||
var gridDiv = document.querySelector("#dialog-delivery_plan");
|
||||
new agGrid.Grid(gridDiv, grid);
|
||||
|
||||
// 读取数据
|
||||
grid.remoteData();
|
||||
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,187 @@
|
||||
<div class="panel">
|
||||
|
||||
<div class="wrapper-sm b-b b-light">
|
||||
|
||||
<form class="form-inline" id="myquery" name="myquery" action="{{url()}}" method="get">
|
||||
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-default btn-sm" onclick="LocalTableExport('report_category', '品类销售');"><i class="fa fa-mail-forward"></i> 导出</a>
|
||||
</div>
|
||||
|
||||
@if(Auth::user()->role->code != 'c001')
|
||||
@include('report/select')
|
||||
@endif
|
||||
<button type="submit" class="btn btn-default btn-sm"><i class="fa fa-search"></i> 搜索</button>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
<script src="{{$asset_url}}/vendor/highcharts/highcharts.min.js" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
var data = {{$json}};
|
||||
$(function() {
|
||||
|
||||
Highcharts.getOptions().colors = Highcharts.map(Highcharts.getOptions().colors, function(color) {
|
||||
return {
|
||||
radialGradient: {cx:0.9,cy:0.9,r: 0.9},
|
||||
stops: [
|
||||
[0, color],
|
||||
[1, Highcharts.Color(color).brighten(-0.1).get('rgb')] // darken
|
||||
]
|
||||
};
|
||||
});
|
||||
|
||||
$.each(data.pie,function(year)
|
||||
{
|
||||
var piediv = "<div id='container_pie_"+year+"' style='height:300px;'></div>";
|
||||
var columndiv = "<div id='container_column_"+year+"' style='height:300px;'></div>";
|
||||
$('#container_pie').append(piediv);
|
||||
$('#container_column').append(columndiv);
|
||||
pie(year);
|
||||
column(year);
|
||||
});
|
||||
});
|
||||
|
||||
function pie(year)
|
||||
{
|
||||
$('#container_pie_'+year).highcharts({
|
||||
chart: {
|
||||
plotBackgroundColor: null,
|
||||
plotBorderWidth: null,
|
||||
plotShadow: false
|
||||
},
|
||||
title: {
|
||||
text: year+'年品类构成分析(金额)'
|
||||
},
|
||||
tooltip: {
|
||||
pointFormat: '{series.name}: <b>{point.y}¥</b>'
|
||||
},
|
||||
plotOptions: {
|
||||
pie: {
|
||||
allowPointSelect: true,
|
||||
cursor: 'pointer',
|
||||
dataLabels: {
|
||||
enabled: true,
|
||||
format: '<b>{point.name}</b>: {point.percentage:.1f} %'
|
||||
}
|
||||
}
|
||||
},
|
||||
series: [{
|
||||
type: 'pie',
|
||||
name: '金额',
|
||||
data: data.pie[year]
|
||||
}]
|
||||
});
|
||||
}
|
||||
|
||||
function column(year)
|
||||
{
|
||||
$('#container_column_'+year).highcharts({
|
||||
chart: {
|
||||
type: 'column'
|
||||
},
|
||||
title: {
|
||||
text: year+'年品类销售额柱体分析(金额)'
|
||||
},
|
||||
xAxis: {
|
||||
categories: data.column.categories
|
||||
},
|
||||
yAxis: {
|
||||
allowDecimals: false,
|
||||
min: 0,
|
||||
title: {
|
||||
text: '类别'
|
||||
}
|
||||
},
|
||||
tooltip: {
|
||||
formatter: function() {
|
||||
return '<b>'+ this.x +'</b><br/>'+
|
||||
this.series.name +': '+ this.y +'<br/>'+
|
||||
'合计: '+ this.point.stackTotal;
|
||||
}
|
||||
},
|
||||
plotOptions: {
|
||||
column: {
|
||||
stacking: 'normal'
|
||||
}
|
||||
},
|
||||
series:data.column.series[year]
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<table class="table table-bordered" id="report_category">
|
||||
<tr>
|
||||
<th align="center" style="width:100px;">品类编码</th>
|
||||
<th align="left">品类名称</th>
|
||||
<th align="right">本年度销售累计金额</th>
|
||||
<th align="right">去年同期销售累计金额</th>
|
||||
<th align="right">去年同期占比(%)</th>
|
||||
</tr>
|
||||
@foreach($product_categorys as $k => $category)
|
||||
|
||||
@if($category['level'] > 1 && $category['level'] < 10)
|
||||
<?php $v = $percentData[$now_year][$k]; ?>
|
||||
@if($product_categorys[$k]['code'])
|
||||
<tr>
|
||||
<td align="center">
|
||||
{{$product_categorys[$k]['code']}}
|
||||
</td>
|
||||
<td align="left">
|
||||
@if($product_categorys[$k]['level'] > 2)
|
||||
|
||||
@endif
|
||||
{{$product_categorys[$k]['name']}}
|
||||
</td>
|
||||
<td align="right">
|
||||
@if($select['role'] == 'client')
|
||||
{{number_format($v / $percentData['sum'][$now_year] * 100, 2)}}%
|
||||
@else
|
||||
{{number_format($v, 2)}}
|
||||
@endif
|
||||
</td>
|
||||
<td align="right">
|
||||
@if($select['role'] == 'client')
|
||||
{{number_format($percentData[$last_year][$k] / $percentData['sum'][$last_year] * 100, 2)}}%
|
||||
@else
|
||||
{{number_format($percentData[$last_year][$k], 2)}}
|
||||
@endif
|
||||
</td>
|
||||
<td align="right">
|
||||
@if($percentage[$k] > 0)
|
||||
{{$percentage[$k]}}%
|
||||
@else
|
||||
0%
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
@endforeach
|
||||
|
||||
<tr>
|
||||
<td align="left"></td>
|
||||
<td align="left">同期年度累计金额</td>
|
||||
<td align="right">{{number_format($percentData['sum'][$now_year],2)}}</td>
|
||||
<td align="right">{{number_format($percentData['sum'][$last_year],2)}}</td>
|
||||
<td align="right">{{number_format($percentage['total'],2)}}%</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="panel">
|
||||
<table class="table">
|
||||
<tr>
|
||||
<td id="container_pie"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="panel">
|
||||
<table class="table">
|
||||
<tr>
|
||||
<td id="container_column"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
@@ -0,0 +1,133 @@
|
||||
<div class="panel">
|
||||
|
||||
<div class="wrapper-sm">
|
||||
<form class="form-inline" id="myquery" name="myquery" action="{{url()}}" method="get">
|
||||
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-default btn-sm" onclick="LocalTableExport('report_export', '地区品类销售');"><i class="fa fa-mail-forward"></i> 导出</a>
|
||||
</div>
|
||||
|
||||
@if(Auth::user()->role->code != 'c001')
|
||||
@include('report/select')
|
||||
@endif
|
||||
<button type="submit" class="btn btn-default btn-sm"><i class="fa fa-search"></i> 筛选</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered" id="report_export">
|
||||
<tr>
|
||||
<th style="white-space:nowrap">
|
||||
销售团队
|
||||
</th>
|
||||
|
||||
@foreach($categorys as $k => $v)
|
||||
@if($v['parent_id'] == 226)
|
||||
<th nowrap="true">{{$v['name']}}</th>
|
||||
@endif
|
||||
@endforeach
|
||||
|
||||
<th>总销售额</th>
|
||||
<th>促销费比</th>
|
||||
<th>消费促销</th>
|
||||
<th>渠道促销</th>
|
||||
<th>经销促销</th>
|
||||
</tr>
|
||||
|
||||
@foreach($now_year_single['money'] as $key => $value)
|
||||
<tr>
|
||||
<td rowspan="3" align="center" style="white-space:nowrap;vertical-align:middle;">
|
||||
{{$regions[$key]}}
|
||||
<a class="option" href="{{url('citydata')}}?circle_id={{$key}}&year={{$now_year}}">
|
||||
[月销]
|
||||
</a>
|
||||
</td>
|
||||
|
||||
@foreach($categorys as $k => $v)
|
||||
@if($v['parent_id'] == 226)
|
||||
<td align="right">
|
||||
{{(int)$value[$k]}}
|
||||
</td>
|
||||
@endif
|
||||
@endforeach
|
||||
|
||||
<td style="vertical-align:middle;" align="right">{{$now_year_single['totalcost'][$key]}}</td>
|
||||
|
||||
<td rowspan="3" style="vertical-align:middle;" align="center">
|
||||
@if($promotions['all'][$key])
|
||||
{{:$c = ($promotions['all'][$key]/$now_year_single['totalcost'][$key])}}
|
||||
{{number_format($c*100, 2)}}%
|
||||
@else
|
||||
0.00%
|
||||
@endif
|
||||
</td>
|
||||
|
||||
{{:$ps = $promotions[$key]}}
|
||||
<td rowspan="3" style="vertical-align:middle;" align="right">
|
||||
{{$ps[1] > 0 ? $ps[1] : 0}}
|
||||
</td>
|
||||
<td rowspan="3" style="vertical-align:middle;" align="right">
|
||||
{{$ps[2] > 0 ? $ps[2] : 0}}
|
||||
</td>
|
||||
<td rowspan="3" style="vertical-align:middle;" align="right">
|
||||
{{$ps[3] > 0 ? $ps[3] : 0}}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
@foreach($categorys as $category_id => $category)
|
||||
@if($category['parent_id'] == 226)
|
||||
<td align="right" title="去年同期增长率" nowrap="true">
|
||||
<?php $scale = $oldscale[$key][$category_id]; ?>
|
||||
@if($scale == 0)
|
||||
去年无
|
||||
@elseif($scale > 0)
|
||||
<span style="color:green">{{number_format($scale * 100, 2)}}%</span>
|
||||
@else
|
||||
<span style="color:red">{{number_format($scale * 100, 2)}}%</span>
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
@endforeach
|
||||
|
||||
<?php
|
||||
$_year = $now_year_single['totalcost'][$key] - $old_year_single['totalcost'][$key];
|
||||
if ($old_year_single['totalcost'][$key]) {
|
||||
$_total = number_format($_year / $old_year_single['totalcost'][$key] * 100, 2);
|
||||
} else {
|
||||
$_total = 0;
|
||||
}
|
||||
?>
|
||||
<td style="vertical-align:middle;" align="right">
|
||||
@if($_total > 0)
|
||||
{{$_total}}%
|
||||
@else
|
||||
<span style="color:red">{{$_total}}%</span>
|
||||
@endif
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
@foreach($categorys as $k => $v)
|
||||
@if($v['parent_id'] == 226)
|
||||
<td align="right" title="占区域该品类百分比">
|
||||
@if($value[$v['id']] > 0)
|
||||
{{number_format(($value[$v['id']] / $now_year_single['cat'][$v['id']]) * 100, 2)}}%
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
@endforeach
|
||||
|
||||
<td style="vertical-align:middle;" align="right"></td>
|
||||
|
||||
</tr>
|
||||
|
||||
@endforeach
|
||||
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,77 @@
|
||||
<div class="panel">
|
||||
|
||||
<table class="table">
|
||||
<tr>
|
||||
<td><div class='title'>{{$year}}年 ({{$circle['name']}}) 客户圈月份销售分析</div></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="panel">
|
||||
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th>月份</th>
|
||||
|
||||
@if(count($categorys)) @foreach($categorys as $k => $v)
|
||||
<th>{{$k}}</th>
|
||||
@endforeach @endif
|
||||
|
||||
<th>总销售额</th>
|
||||
<th>促销费比</th>
|
||||
|
||||
<th>消费促销</th>
|
||||
<th>渠道促销</th>
|
||||
<th>经销促销</th>
|
||||
|
||||
@if(count($single['money'])) @foreach($single['money'] as $key => $value)
|
||||
<tr>
|
||||
<td rowspan="2" width="40" align="center" style="vertical-align:middle;color:#66CC00;font-weight:bold;background:#FFFFE9">{{$key}}月</td>
|
||||
|
||||
@if(count($categorys)) @foreach($categorys as $k => $v)
|
||||
<td align="right">
|
||||
{{$value[$v] > 0 ? $value[$v] : 0}}
|
||||
</td>
|
||||
@endforeach @endif
|
||||
|
||||
|
||||
<td rowspan="2" align="right" style="vertical-align:middle;color:#666;background:#FFFFE9">{{$single['cat'][$key]}}</td>
|
||||
|
||||
<td rowspan="2" style="vertical-align:middle;" align="right">
|
||||
@if($single['cat'][$key])
|
||||
{{:$c = ($promotions['month1'][$key]/$single['cat'][$key])}}
|
||||
{{number_format($c*100, 2)}}%
|
||||
@else
|
||||
0.00%
|
||||
@endif
|
||||
</td>
|
||||
|
||||
|
||||
{{:$promotion = $promotions['month'][$key]}}
|
||||
<td rowspan="2" style="vertical-align:middle;" align="right">
|
||||
{{$promotion[1] > 0 ? $promotion[1] : 0}}
|
||||
</td>
|
||||
<td rowspan="2" style="vertical-align:middle;" align="right">
|
||||
{{$promotion[2] > 0 ? $promotion[2] : 0}}
|
||||
</td>
|
||||
<td rowspan="2" style="vertical-align:middle;" align="right">
|
||||
{{$promotion[3] > 0 ? $promotion[3] : 0}}
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
@if(count($categorys)) @foreach($categorys as $k => $v)
|
||||
<td align="right">
|
||||
{{:$pl = $value[$v]/$single['cat'][$key]}}
|
||||
{{$_pl = number_format($pl*100, 2)}}%
|
||||
</td>
|
||||
@endforeach @endif
|
||||
</tr>
|
||||
|
||||
@endforeach @endif
|
||||
|
||||
</table>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,63 @@
|
||||
<div class="panel">
|
||||
|
||||
<div class="wrapper-sm b-b b-light">
|
||||
<div class="text-md">{{$year_id}}年度发生交易客户数[{{count((array)$single['customer'])}}]</div>
|
||||
</div>
|
||||
|
||||
<div class="wrapper-sm b-b b-light">
|
||||
|
||||
<form class="form-inline" id="myquery" name="myquery" action="{{url()}}" method="get">
|
||||
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-default btn-sm" onclick="LocalTableExport('report_export', '客户单品交易');"><i class="fa fa-mail-forward"></i> 导出</a>
|
||||
</div>
|
||||
|
||||
@if(Auth::user()->role->code != 'c001')
|
||||
@include('report/select')
|
||||
|
||||
@endif
|
||||
<select class="form-control input-sm" id='year' name='year' data-toggle="redirect" data-url="{{$query}}">
|
||||
@foreach($years as $v)
|
||||
<option value="{{$v}}" @if($select['query']['year']==$v) selected @endif>{{$v}}年</option>
|
||||
@endforeach
|
||||
</select>
|
||||
|
||||
<select class="form-control input-sm" id='category_id' name='category_id' data-toggle="redirect" data-url="{{$query}}">
|
||||
<option value="0">全部品类</option>
|
||||
@foreach($categorys as $k => $v)
|
||||
@if($v['layer_level'] == 1)
|
||||
<option value="{{$v['id']}}" @if($select['query']['category_id'] == $v['id']) selected @endif>{{$v['name']}}</option>
|
||||
@endif
|
||||
@endforeach
|
||||
</select>
|
||||
|
||||
<button type="submit" class="btn btn-default btn-sm"><i class="fa fa-search"></i> 搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<table class="table table-bordered" id="report_export">
|
||||
<tr>
|
||||
<th>品类</th>
|
||||
<th>单品</th>
|
||||
|
||||
<th>总销售家数</th>
|
||||
|
||||
@foreach($months as $k => $v)
|
||||
<th>{{$v}}月</th>
|
||||
@endforeach
|
||||
|
||||
@foreach($single['sum'] as $k => $v)
|
||||
<tr>
|
||||
<td align="center">{{$single['category'][$k]}}</td>
|
||||
<td align="left"><a href="{{url('clientdata')}}?aspect_id={{$select['select']['aspect_id']}}®ion_id={{$select['select']['region_id']}}&circle_id={{$select['select']['circle_id']}}&client_id={{$select['select']['client_id']}}&product_id={{$k}}&year={{$year}}">[查]</a> {{$single['product'][$k]['product_name']}} - {{$single['product'][$k]['product_spec']}}</td>
|
||||
<td align="right">{{sizeof($single['all'][$k])}}</td>
|
||||
@foreach($months as $v2)
|
||||
<td align="right">
|
||||
{{:$sum = sizeof($v[$v2])}}
|
||||
@if($sum>0) {{$sum}} @else <span style="color:#ccc;">0</span> @endif
|
||||
</td>
|
||||
@endforeach
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
</div>
|
||||
@@ -0,0 +1,65 @@
|
||||
<div class="panel">
|
||||
|
||||
<div class="wrapper b-b b-light">
|
||||
<div class='h5'>{{$single['cat']}} * ({{$single['name']}} - {{$single['spec']}}) - {{$year}}年度({{$month}}月)未进货经销商列表</div>
|
||||
</div>
|
||||
|
||||
<table class="table">
|
||||
<tr>
|
||||
<th width="40">序号</th>
|
||||
<th width="100">区域</th>
|
||||
<th width="100">客户圈</th>
|
||||
<th width="280">客户名称</th>
|
||||
<th align="left">单品</th>
|
||||
</tr>
|
||||
@if(count($clients))
|
||||
<?php $i = 0; ?>
|
||||
@foreach($clients as $key => $value)
|
||||
@if(empty($notpurchase[$key]))
|
||||
<tr>
|
||||
<td align="center">{{$i + 1}}</td>
|
||||
<td align="center">{{$value['area']}}</td>
|
||||
<td align="center">{{$value['circle_name']}}</td>
|
||||
<td align="left">{{$value['client_id']}}</td>
|
||||
<td align="left">{{$single['name']}} - {{$single['spec']}}</td>
|
||||
</tr>
|
||||
@endif
|
||||
<?php $i++; ?>
|
||||
@endforeach
|
||||
@endif
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="panel">
|
||||
|
||||
<div class="wrapper b-b b-light">
|
||||
<div class='h5'>{{$single['cat']}} * ({{$single['name']}} - {{$single['spec']}}) - {{$year}}度年经销商销售分析</div>
|
||||
</div>
|
||||
|
||||
<table class="table">
|
||||
<tr>
|
||||
<th width="40">序号</th>
|
||||
<th width="100">区域</th>
|
||||
<th width="100">客户圈</th>
|
||||
<th width="280">客户名称</th>
|
||||
<th align="left">单品</th>
|
||||
<th width="100">金额</th>
|
||||
</tr>
|
||||
<?php $i = 0; ?>
|
||||
@if(count($single['all']))
|
||||
@foreach($single['all'] as $key => $value)
|
||||
<tr>
|
||||
<td align="center">{{$i + 1}}</td>
|
||||
<td align="center">{{$clients[$key]['area']}}</td>
|
||||
<td align="center">{{$clients[$key]['circle_name']}}</td>
|
||||
<td align="left">{{$clients[$key]['client_id']}}</td>
|
||||
<td align="left">{{$single['name']}} - {{$single['spec']}}</td>
|
||||
<td align="right">{{$value}}</td>
|
||||
</tr>
|
||||
<?php $i++; ?>
|
||||
@endforeach
|
||||
@endif
|
||||
</table>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,128 @@
|
||||
<div class="panel">
|
||||
|
||||
<div class="wrapper-sm b-b b-light">
|
||||
|
||||
<form class="form-inline" id="myquery" name="myquery" action="{{url()}}" method="get">
|
||||
|
||||
@if(Auth::user()->role->code != 'c001')
|
||||
@include('report/select')
|
||||
@endif
|
||||
|
||||
<select class="form-control input-sm" id='category_id' name='category_id' data-toggle="redirect" data-url="{{$query}}">
|
||||
@foreach($product_categorys as $k => $v)
|
||||
<option value="{{$v['id']}}" @if($select['query']['category_id'] == $v['id']) selected @endif>{{$v['layer_space']}}{{$v['name']}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<button type="submit" class="btn btn-default btn-sm"><i class="fa fa-search"></i> 筛选</button>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
<script src="{{$asset_url}}/vendor/highcharts/highcharts.min.js" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
var data = {{$json}};
|
||||
$(function () {
|
||||
$('#container').highcharts({
|
||||
title: {
|
||||
text: '历史年度销售分析',
|
||||
x: -20 //center
|
||||
},
|
||||
subtitle: {
|
||||
text: 'Historical Annual Sales Analysis',
|
||||
x: -20
|
||||
},
|
||||
xAxis: {
|
||||
categories: data.categories
|
||||
},
|
||||
yAxis: {
|
||||
title: {
|
||||
text: '销售汇总'
|
||||
},
|
||||
plotLines: [{
|
||||
value: 0,
|
||||
width: 1,
|
||||
color: '#808080'
|
||||
}]
|
||||
},
|
||||
tooltip: {
|
||||
valueSuffix: '¥'
|
||||
},
|
||||
legend: {
|
||||
//layout: 'vertical',
|
||||
//align: 'right',
|
||||
//verticalAlign: 'middle',
|
||||
//borderWidth: 0,
|
||||
useHTML:true,
|
||||
labelFormatter: function() {
|
||||
return this.name + '<br/><span style="font-size:10px;color:#666666;">合计: '+ data.total[this.name] +'¥</span>';
|
||||
//return '<div class="' + this.name + '-arrow"></div><span style="font-family: \'Advent Pro\', sans-serif; font-size:16px">' + this.name +'</span><br/><span style="font-size:10px; color:#ababaa">(合计: 12345)</span>';
|
||||
}
|
||||
},
|
||||
plotOptions: {
|
||||
line: {
|
||||
dataLabels: {
|
||||
enabled: true
|
||||
},
|
||||
//enableMouseTracking: false
|
||||
}
|
||||
},
|
||||
total: data.total,
|
||||
series: data.series
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<table class="table">
|
||||
<tr>
|
||||
<td>
|
||||
<div id="container" style="height:320px"></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
@if(Auth::user()->role->code != 'c001')
|
||||
|
||||
<div class="panel">
|
||||
<table class="table">
|
||||
<tr height="24">
|
||||
<th align="center">本年促销计算费比(占比)</th>
|
||||
<th align="center">消费促销(金额)</th>
|
||||
<th align="center">渠道促销(金额)</th>
|
||||
<th align="center">经营促销(金额)</th>
|
||||
<th align="center">本年批复促销已兑现金额</th>
|
||||
</tr>
|
||||
|
||||
<tr height="24">
|
||||
<td align="center">{{$assess}}</td>
|
||||
<td align="center">{{number_format($promotion['cat'][1],2)}}</td>
|
||||
<td align="center">{{number_format($promotion['cat'][2],2)}}</td>
|
||||
<td align="center">{{number_format($promotion['cat'][3],2)}}</td>
|
||||
<td align="center">{{number_format($promotion_honor, 2)}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
<div class="panel">
|
||||
<table class="table">
|
||||
<tr height="24">
|
||||
@foreach($product_categorys as $category)
|
||||
@if($category['parent_id'] == 0)
|
||||
<th align="center">{{$category['name']}}</th>
|
||||
@endif
|
||||
@endforeach
|
||||
</tr>
|
||||
<tr height="24">
|
||||
@foreach($product_categorys as $category)
|
||||
@if($category['parent_id']==0)
|
||||
<td align="center">{{$cat_salesdata_ret[$category['id']]}}</td>
|
||||
@endif
|
||||
@endforeach
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
-->
|
||||
|
||||
@endif
|
||||
@@ -0,0 +1,52 @@
|
||||
<div class="panel">
|
||||
|
||||
<div class="wrapper-sm b-b b-light">
|
||||
|
||||
<form class="form-inline" id="myquery" name="myquery" action="{{url()}}" method="get">
|
||||
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-default btn-sm" onclick="LocalTableExport('report_newclient', '本年新客户');"><i class="fa fa-mail-forward"></i> 导出</a>
|
||||
</div>
|
||||
|
||||
@if(Auth::user()->role->code != 'c001')
|
||||
@include('report/select')
|
||||
@endif
|
||||
<button type="submit" class="btn btn-default btn-sm"><i class="fa fa-search"></i> 筛选</button>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
<table class="table table-bordered" id="report_newclient">
|
||||
<tr>
|
||||
<th align="center" width="100">序号</th>
|
||||
<th align="center">客户编码</th>
|
||||
<th align="left">客户名称</th>
|
||||
<th align="center" width="120">客户类型</th>
|
||||
<th align="center" width="120">发货金额</th>
|
||||
</tr>
|
||||
<?php $total_sum_money = 0; $i = 1; ?>
|
||||
@foreach($list[$nowYear] as $k => $v)
|
||||
<?php
|
||||
$customer = $customers[$k];
|
||||
$money_sum = $list[$nowYear][$k];
|
||||
?>
|
||||
@if(empty($list[$lastYear][$k]))
|
||||
<tr>
|
||||
<td align="center">{{$i}}</td>
|
||||
<td align="center">{{$customer['customer_code']}}</td>
|
||||
<td align="left">{{$customer['customer_name']}}</td>
|
||||
<td align="center">{{$customer_type[$customer['grade_id']]['name']}}</td>
|
||||
<td align="right">@number($money_sum, 2)</td>
|
||||
</tr>
|
||||
<?php $total_sum_money += $money_sum; $i++; ?>
|
||||
@endif
|
||||
@endforeach
|
||||
<tr>
|
||||
<th align="center">合计</th>
|
||||
<th align="left"></th>
|
||||
<th align="left"></th>
|
||||
<th align="center"></th>
|
||||
<th align="right">@number($total_sum_money, 2)</th>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
@@ -0,0 +1,28 @@
|
||||
<div class="panel">
|
||||
|
||||
<table class="table">
|
||||
<tr>
|
||||
<th>步骤</th>
|
||||
<th>开始时间</th>
|
||||
<th>结束时间</th>
|
||||
<th>促销对象</th>
|
||||
<th>促销目标</th>
|
||||
<th>促销类别</th>
|
||||
<th>促销单品</th>
|
||||
<th>促销方法</th>
|
||||
<th>我司支持方式</th>
|
||||
<th>兑现凭据</th>
|
||||
<th>预估费用</th>
|
||||
<th>实际兑现费用</th>
|
||||
|
||||
@foreach($promotions as $key => $value)
|
||||
<tr>
|
||||
@foreach($value as $k => $v)
|
||||
<td align="left">{{$v}}</td>
|
||||
@endforeach
|
||||
</tr>
|
||||
@endforeach
|
||||
|
||||
</table>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,315 @@
|
||||
<style>
|
||||
.red_text td,
|
||||
.red_text td span { color:red; }
|
||||
</style>
|
||||
|
||||
<div class="panel">
|
||||
|
||||
<div class="wrapper-sm b-b b-light">
|
||||
<div title="今天是本年第{{$days}}天" class="text-md">{{$now_year}}年经销商销售排行</div>
|
||||
</div>
|
||||
|
||||
<div class="wrapper-sm b-b b-light">
|
||||
|
||||
<form class="form-inline" id="myquery" name="myquery" action="{{url()}}" method="get">
|
||||
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-default btn-sm" onclick="LocalTableExport('report_ranking', '销售排名');"><i class="fa fa-mail-forward"></i> 导出</a>
|
||||
</div>
|
||||
|
||||
@if(Auth::user()->role->code != 'c001')
|
||||
@include('report/select')
|
||||
|
||||
@endif
|
||||
客户
|
||||
<input class="form-control input-sm" value="{{$select['query']['customer_name']}}" name="customer_name">
|
||||
|
||||
<select class="form-control input-sm" id='tag' name='tag' data-toggle="redirect" data-url="{{$query}}">
|
||||
<option value="city_id" @if($select['query']['tag']=='city_id') selected @endif>城市模式</option>
|
||||
<option value="customer_id" @if($select['query']['tag']=='customer_id') selected @endif>客户模式</option>
|
||||
</select>
|
||||
<button type="submit" class="btn btn-default btn-sm"><i class="fa fa-search"></i> 搜索</button>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
<table class="table table-bordered" id="report_ranking">
|
||||
<tr>
|
||||
<th width="80">排行</th>
|
||||
@if($select['query']['tag'] == 'customer_id')
|
||||
<th style="white-space:nowrap;">销售团队</th>
|
||||
<th style="white-space:nowrap;">负责人</th>
|
||||
@endif
|
||||
@if($select['query']['tag']=='city_id')
|
||||
<th align="center" style="white-space:nowrap;">省份</th>
|
||||
<th align="center" style="white-space:nowrap;">城市</th>
|
||||
@else
|
||||
<th align="center" style="white-space:nowrap;">客户编码</th>
|
||||
<th align="center" style="white-space:nowrap;">客户名称</th>
|
||||
<th align="center" style="white-space:nowrap;">销售等级</th>
|
||||
@endif
|
||||
</th>
|
||||
<th style="white-space:nowrap;">比去年同期增长率</th>
|
||||
<th style="white-space:nowrap;">比去年同期增长额</th>
|
||||
<th style="white-space:nowrap;">总销售额</th>
|
||||
<th style="white-space:nowrap;">销售额占区域比</th>
|
||||
<th style="white-space:nowrap;">增长额总销售贡献比</th>
|
||||
<th style="white-space:nowrap;">增长贡献率</th>
|
||||
@foreach($categorys['name'] as $category)
|
||||
<th align="center" style="white-space:nowrap;">{{$category['name']}}</th>
|
||||
@endforeach
|
||||
|
||||
<?php
|
||||
$this_year_data = $single[$now_year];
|
||||
if ($this_year_data) {
|
||||
arsort($this_year_data);
|
||||
}
|
||||
$last_year_data = $single[$last_year];
|
||||
$i = 0;
|
||||
$total = [];
|
||||
|
||||
$growth = [
|
||||
// 今年比去年同期增加额求和
|
||||
'a' => [],
|
||||
// 今年比去年同期增加额正数求和
|
||||
'b' => [],
|
||||
// 今年比去年同期增加额负数求和
|
||||
'c' => []
|
||||
];
|
||||
|
||||
foreach((array)$this_year_data as $k => $v) {
|
||||
$res = $v - $last_year_data[$k];
|
||||
$growth['a'][$k] += $res;
|
||||
// 正数求和
|
||||
if($res > 0) {
|
||||
$growth['b'][$k] += $res;
|
||||
}
|
||||
// 负数求和
|
||||
if($res < 0) {
|
||||
$growth['c'][$k] += $res;
|
||||
}
|
||||
}
|
||||
|
||||
$this_year_sum = array_sum((array)$this_year_data);
|
||||
$last_year_sum = array_sum((array)$last_year_data);
|
||||
$growth_a = array_sum($growth['a']);
|
||||
$growth_b = array_sum($growth['b']);
|
||||
$growth_c = array_sum($growth['c']);
|
||||
|
||||
?>
|
||||
|
||||
@foreach($this_year_data as $k => $v)
|
||||
|
||||
<?php
|
||||
$i++;
|
||||
$total['all'] += $this_year_data[$k];
|
||||
?>
|
||||
|
||||
<tr class="@if(($v - $last_year_data[$k]) < 0) red_text @endif">
|
||||
<td align="center">{{$i}}</td>
|
||||
|
||||
@if($select['query']['tag'] == 'customer_id')
|
||||
<td align="center">{{$regions[$single['info'][$k]['region_id']]['name']}}</td>
|
||||
<td align="center">{{get_user($regions[$single['info'][$k]['region_id']]['owner_user_id'], 'name')}}</td>
|
||||
@endif
|
||||
|
||||
@if($select['query']['tag'] == 'city_id')
|
||||
<td align="center">
|
||||
{{$single['info'][$k]['province_name']}}
|
||||
</td>
|
||||
<td align="center">
|
||||
{{$single['info'][$k]['city_name']}}
|
||||
</td>
|
||||
@else
|
||||
<td align="center">
|
||||
{{$single['info'][$k]['customer_code']}}
|
||||
</td>
|
||||
<td align="left">
|
||||
<!-- 客户类型 -->
|
||||
<?php
|
||||
$post = $single['info'][$k]['grade_id'];
|
||||
// 今年合计
|
||||
$now_year_money = $this_year_data[$k];
|
||||
$grade = $now_year_money / $days;
|
||||
$post_type = '';
|
||||
if ($post == 1) {
|
||||
if ($grade > 32877) {
|
||||
$post_type = '军';
|
||||
} elseif ($grade > 16438) {
|
||||
$post_type = '师';
|
||||
} elseif ($grade > 6575) {
|
||||
$post_type = '旅';
|
||||
} elseif ($grade > 3288) {
|
||||
$post_type = '团';
|
||||
} elseif ($grade > 1643) {
|
||||
$post_type = '营';
|
||||
} elseif ($grade > 657) {
|
||||
$post_type = '连';
|
||||
} else {
|
||||
$post_type = '问题';
|
||||
}
|
||||
} else if($post == 2) {
|
||||
if ($grade > 3288) {
|
||||
$post_type = '大队';
|
||||
} elseif ($grade > 1643) {
|
||||
$post_type = '中队';
|
||||
} elseif ($grade > 657) {
|
||||
$post_type = '小队';
|
||||
} elseif ($grade > 328) {
|
||||
$post_type = '分队';
|
||||
} else {
|
||||
$post_type = '问题';
|
||||
}
|
||||
}
|
||||
?>
|
||||
{{$single['info'][$k]['customer_name']}}
|
||||
</td>
|
||||
<td align="center">
|
||||
{{$post_type}}
|
||||
</td>
|
||||
@endif
|
||||
|
||||
<td align="right" title="去年累计: {{(int)$last_year_data[$k]}} - 今年累计: {{(int)$this_year_data[$k]}}">
|
||||
@if($last_year_data[$k] > 0)
|
||||
<span @if(($v / $last_year_data[$k] - 1) < 0) style="color:red;" @endif>
|
||||
<?php
|
||||
$last_year_pre = number_format(($v / $last_year_data[$k] - 1) * 100, 2);
|
||||
?>
|
||||
{{$last_year_pre}}%
|
||||
</span>
|
||||
@else
|
||||
去年同期无
|
||||
@endif
|
||||
</td>
|
||||
|
||||
<td align="right" title="去年累计: {{(int)$last_year_data[$k]}} - 今年累计: {{(int)$this_year_data[$k]}}">
|
||||
<span @if($growth['a'][$k] < 0) style="color:red;" @endif>
|
||||
{{number_format($growth['a'][$k], 2)}}
|
||||
</span>
|
||||
</td>
|
||||
|
||||
<td align="right">{{number_format($this_year_data[$k], 2)}}</td>
|
||||
|
||||
<td align="center">{{number_format(($v / array_sum($this_year_data) * 100), 2)}}%</td>
|
||||
|
||||
<td align="center">{{number_format(($growth['a'][$k] / array_sum($this_year_data) * 100), 2)}}%</td>
|
||||
|
||||
<td align="center">
|
||||
<?php
|
||||
if ($growth['a'][$k] > 0) {
|
||||
echo number_format(($growth['a'][$k] / $growth_b) * 100, 2);
|
||||
} else {
|
||||
echo '-'.number_format(($growth['a'][$k] / $growth_c) * 100, 2);
|
||||
}
|
||||
?>%
|
||||
</td>
|
||||
|
||||
<?php $category_money = $categorys['money'][$now_year][$k]; ?>
|
||||
@foreach($categorys['name'] as $category)
|
||||
<td align="right">{{number_format($category_money[$category['id']],2)}}</td>
|
||||
<?php $total[$category['id']] += $category_money[$category['id']]; ?>
|
||||
@endforeach
|
||||
</tr>
|
||||
@endforeach
|
||||
<tr>
|
||||
<th align="center">净值合计</th>
|
||||
<th align="center"></th>
|
||||
|
||||
@if($select['query']['tag'] == 'customer_id')
|
||||
<th align="center"></th>
|
||||
<th align="center"></th>
|
||||
<th align="center"></th>
|
||||
@endif
|
||||
|
||||
<th align="center"></th>
|
||||
<th align="right">
|
||||
<?php
|
||||
$v2 = $this_year_sum - $last_year_sum;
|
||||
if ($last_year_sum > 0) {
|
||||
$pre = number_format(($v2 / $last_year_sum) * 100, 2);
|
||||
}
|
||||
?>
|
||||
<span @if($pre < 0) style="color:red;" @endif>{{$pre}}%</span>
|
||||
</th>
|
||||
|
||||
<th align="right">
|
||||
{{number_format($growth_a, 2)}}
|
||||
</th>
|
||||
|
||||
<th align="right">{{number_format($total['all'], 2)}}</th>
|
||||
|
||||
<th align="center"></th>
|
||||
<th align="center"></th>
|
||||
<th align="center"></th>
|
||||
@foreach($categorys['name'] as $category)
|
||||
<th align="right">{{number_format($total[$category['id']],2)}}</th>
|
||||
@endforeach
|
||||
</tr>
|
||||
<tr>
|
||||
<th align="center">增长合计</th>
|
||||
<th align="center"></th>
|
||||
|
||||
@if($select['query']['tag'] == 'customer_id')
|
||||
<th align="center"></th>
|
||||
<th align="center"></th>
|
||||
<th align="center"></th>
|
||||
@endif
|
||||
|
||||
<th align="center"></th>
|
||||
<th align="right">
|
||||
<?php
|
||||
if ($last_year_sum > 0) {
|
||||
$pre = number_format(($growth_b / $last_year_sum) * 100, 2);
|
||||
}
|
||||
?>
|
||||
<span @if($pre < 0) style="color:red;" @endif>{{$pre}}%</span>
|
||||
</th>
|
||||
<th align="right">
|
||||
{{number_format($growth_b, 2)}}
|
||||
</th>
|
||||
<th align="center"></th>
|
||||
|
||||
|
||||
<th align="right"></th>
|
||||
<th align="center"></th>
|
||||
<th align="center"></th>
|
||||
@foreach($categorys['name'] as $category)
|
||||
<th align="right"></th>
|
||||
@endforeach
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th align="center">下降合计</th>
|
||||
<th align="center"></th>
|
||||
|
||||
@if($select['query']['tag'] == 'customer_id')
|
||||
<th align="center"></th>
|
||||
<th align="center"></th>
|
||||
<th align="center"></th>
|
||||
@endif
|
||||
|
||||
<th align="center"></th>
|
||||
<th align="right">
|
||||
<?php
|
||||
if ($last_year_sum > 0) {
|
||||
$pre = number_format(($growth_c / $last_year_sum) * 100, 2);
|
||||
}
|
||||
?>
|
||||
<span @if($pre < 0) style="color:red;" @endif>{{$pre}}%</span>
|
||||
</th>
|
||||
<th align="right">
|
||||
{{number_format($growth_c, 2)}}
|
||||
</th>
|
||||
<th align="center"></th>
|
||||
<th align="center"></th>
|
||||
<th align="center"></th>
|
||||
|
||||
<th align="right"></th>
|
||||
@foreach($categorys['name'] as $category)
|
||||
<th align="right"></th>
|
||||
@endforeach
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,45 @@
|
||||
<div class="panel">
|
||||
|
||||
<div class="wrapper b-b b-light">
|
||||
@if(Auth::user()->role->name != 'client')
|
||||
<form class="form-inline" id="myquery" name="myquery" action="{{url()}}" method="get">
|
||||
|
||||
@include('data/select')
|
||||
|
||||
<div class="form-group">
|
||||
年份<input type="text" id="year" name="year" onclick="datePicker({dateFmt:'yyyy'});" value="{{$select['select']['year']}}" class="form-control input-sm">
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-default btn-sm">过滤</button>
|
||||
</form>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<table class="table">
|
||||
<tr>
|
||||
<th align="left">客户名称</th>
|
||||
<th align="center">客户代码</th>
|
||||
@for($i=1; $i <= 12; $i++)
|
||||
<th align="right">{{$i}}月(¥)</th>
|
||||
@endfor
|
||||
<th align="right">合计(¥)</th>
|
||||
</tr>
|
||||
|
||||
@foreach($rows as $row)
|
||||
<tr>
|
||||
<td align="left">{{$row['customer_name']}}</td>
|
||||
<td align="center">{{$row['customer_code']}}</td>
|
||||
@for($i=1; $i <= 12; $i++)
|
||||
<td align="right">
|
||||
<div style="color:green;" title="月任务">@number($row['task'][$i] * 10000)</div>
|
||||
<div title="客户回款金额">@number($row['money'][$i])</div>
|
||||
</td>
|
||||
@endfor
|
||||
<td align="right">
|
||||
<div style="color:green;" title="月任务">@number(array_sum($row['task']) * 10000)</div>
|
||||
<div>@number(array_sum($row['money']))</div>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
</div>
|
||||
@@ -0,0 +1,56 @@
|
||||
<select class="form-control input-sm" id='region1_id' name='region1_id' data-toggle="redirect" data-url="{{$query}}">
|
||||
<option value="0">大区</option>
|
||||
@if(count($select['region1']))
|
||||
@foreach($select['region1'] as $k => $v)
|
||||
<option value="{{$v['id']}}" @if($select['query']['region1_id']==$v['id']) selected @endif>{{$v['name']}}</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
|
||||
<select class="form-control input-sm" id='region2_id' name='region2_id' data-toggle="redirect" data-url="{{$query}}">
|
||||
<option value="0">省区</option>
|
||||
@if(count($select['region2']))
|
||||
@foreach($select['region2'] as $k => $v)
|
||||
<option value="{{$v['id']}}" @if($select['query']['region2_id']==$v['id']) selected @endif>{{$v['name']}}</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
|
||||
<select class="form-control input-sm" id='region3_id' name='region3_id' data-toggle="redirect" data-url="{{$query}}">
|
||||
<option value="0">区域</option>
|
||||
@if(count($select['region3']))
|
||||
@foreach($select['region3'] as $k => $v)
|
||||
<option value="{{$v['id']}}" @if($select['query']['region3_id']==$v['id']) selected @endif>{{$v['name']}}</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
|
||||
<select class="form-control input-sm" id='customer_id' name='customer_id' data-toggle="redirect" data-url="{{$query}}">
|
||||
<option value="0">客户</option>
|
||||
@if(count($select['customer']))
|
||||
@foreach($select['customer'] as $k => $v)
|
||||
<option value="{{$v['id']}}" @if($v['status'] == 0) style="color:#f00;" @endif @if($select['query']['customer_id'] == $v['id']) selected @endif>{{$v['customer_name']}}</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
|
||||
@if(isset($select['query']['customer_type']))
|
||||
<select class="form-control input-sm" id='customer_type' name='customer_type' data-toggle="redirect" data-url="{{$query}}">
|
||||
<option value="0">客户类型</option>
|
||||
@if(count($customer_type))
|
||||
@foreach($customer_type as $k => $v)
|
||||
<option value="{{$v['id']}}" @if($select['query']['customer_type'] == $v['id']) selected @endif>{{$v['name']}}</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
@endif
|
||||
|
||||
@if($select['query']['date1'])
|
||||
|
||||
日期
|
||||
<input class="form-control input-sm" data-toggle="date" value="{{$select['query']['date1']}}" size="13" name="date1" id="date1">
|
||||
@endif
|
||||
@if($select['query']['date2'])
|
||||
-
|
||||
<input class="form-control input-sm" data-toggle="date" value="{{$select['query']['date2']}}" size="13" name="date2" id="date2">
|
||||
@endif
|
||||
@@ -0,0 +1,90 @@
|
||||
<div class="panel">
|
||||
|
||||
<div class="wrapper-sm b-b">
|
||||
<div class="text-md">{{$select['select']['year']}}年单品销售排名(占比)</div>
|
||||
</div>
|
||||
|
||||
<div class="wrapper-sm b-b">
|
||||
|
||||
<form class="form-inline" id="myquery" name="myquery" action="{{url()}}" method="get">
|
||||
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-default btn-sm" onclick="LocalTableExport('report_single', '单品销售排名');"><i class="fa fa-mail-forward"></i> 导出</a>
|
||||
</div>
|
||||
|
||||
@if(Auth::user()->role->code != 'c001')
|
||||
@include('report/select')
|
||||
|
||||
@endif
|
||||
|
||||
<select class="form-control input-sm" id='category_id' name='category_id' data-toggle="redirect" rel="{{$query}}">
|
||||
@foreach($categorys as $k => $v)
|
||||
@if($v['layer_level'] == 1)
|
||||
<option value="{{$v['id']}}" @if($select['select']['category_id'] == $v['id']) selected @endif>{{$v['name']}}</option>
|
||||
@endif
|
||||
@endforeach
|
||||
</select>
|
||||
|
||||
年份
|
||||
<input type="text" id="year" name="year" onclick="datePicker({dateFmt:'yyyy'});" value="{{$select['select']['year']}}" class="form-control input-sm">
|
||||
|
||||
<button type="submit" class="btn btn-default btn-sm">筛选</button>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
{{:$months = range(1,12)}}
|
||||
@foreach($single['year'] as $year => $total)
|
||||
|
||||
{{:arsort($total['money'])}}
|
||||
|
||||
<table class="table table-bordered" id="report_single">
|
||||
|
||||
<tr>
|
||||
<th align="center">产品名称</th>
|
||||
@if(count($months))
|
||||
@foreach($months as $month)
|
||||
<th align="center">
|
||||
{{$month}}月
|
||||
</th>
|
||||
@endforeach
|
||||
@endif
|
||||
<th align="center">合计</th>
|
||||
</tr>
|
||||
|
||||
@foreach($total['money'] as $key => $product)
|
||||
|
||||
{{:$total = array_sum((array)$product)}}
|
||||
<tr>
|
||||
<td>
|
||||
{{$single['name'][$key]}} - {{$single['spec'][$key]}}
|
||||
</td>
|
||||
|
||||
@foreach($months as $month)
|
||||
<td align="right">
|
||||
<div title="金额">{{(int)$single['money'][$year][$key][$month]}}</div>
|
||||
<div title="件数">{{(int)$single['amount'][$year][$key][$month]}}</div>
|
||||
<div style="color:green;" title="该单品本月/本年的占比">
|
||||
@if($single['money'][$year][$key][$month] > 0)
|
||||
{{number_format(($single['money'][$year][$key][$month]/$total)*100,2)}}%
|
||||
@endif
|
||||
</div>
|
||||
</td>
|
||||
@endforeach
|
||||
|
||||
<th align="right">
|
||||
<div title="金额">{{$total}}</div>
|
||||
<div title="件数">{{(int)array_sum($single['amount'][$year][$key])}}</div>
|
||||
<div style="color:red;" title="本年单品/品类的占比">
|
||||
@if($total > 0)
|
||||
{{number_format(($total/$single['money2'][$year])*100,2)}}%
|
||||
@endif
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
|
||||
@endforeach
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,42 @@
|
||||
<div class="panel">
|
||||
|
||||
<div class="wrapper-sm b-b b-light">
|
||||
<form class="form-inline" id="myquery" name="myquery" action="{{url()}}" method="get">
|
||||
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-default btn-sm" onclick="LocalTableExport('report_export', '三个月未进货客户');"><i class="fa fa-mail-forward"></i> 导出</a>
|
||||
</div>
|
||||
|
||||
@if(Auth::user()->role->code != 'c001')
|
||||
@include('report/select')
|
||||
@endif
|
||||
<button type="submit" class="btn btn-default btn-sm"><i class="fa fa-search"></i> 搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<table class="table" id="report_export">
|
||||
<tr>
|
||||
<th align="center" width="60">序号</th>
|
||||
<th align="left" width="100">客户编码</th>
|
||||
<th align="left">客户名称</th>
|
||||
<th align="center" width="100">客户类型</th>
|
||||
<th align="right" width="200">去年金额</th>
|
||||
<th align="right" width="200">今年金额</th>
|
||||
</tr>
|
||||
|
||||
<?php $n = 1; ?>
|
||||
@if(count($rows))
|
||||
@foreach($rows as $row)
|
||||
<tr>
|
||||
<td align="center">{{$n}}</td>
|
||||
<td align="center">{{$row['code']}}</td>
|
||||
<td align="left">{{$row['name']}}</td>
|
||||
<td align="center">{{$customer_type[$row['type_id']]['name']}}</td>
|
||||
<td align="right">@number($data[$year1][$row['id']], 2)</td>
|
||||
<td align="right">@number($data[$year2][$row['id']], 2)</td>
|
||||
</tr>
|
||||
<?php $n++; ?>
|
||||
@endforeach
|
||||
@endif
|
||||
</table>
|
||||
</div>
|
||||
@@ -0,0 +1,37 @@
|
||||
<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 table = '{{$form["table"]}}';
|
||||
// grid初始化事件
|
||||
gdoo.event.set('grid.sample_apply_data', {
|
||||
ready(me) {
|
||||
me.dataKey = 'product_id';
|
||||
},
|
||||
editable: {
|
||||
product_name(params) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// 子表对话框
|
||||
gdoo.event.set('sample_apply_data.product_id', {
|
||||
query(query) {
|
||||
},
|
||||
onSelect(row, selectedRow) {
|
||||
row.price = selectedRow.price1;
|
||||
return true;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,80 @@
|
||||
{{$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';
|
||||
|
||||
// 关闭使用
|
||||
action.close = function(data) {
|
||||
var me = this;
|
||||
var grid = config.grid;
|
||||
var rows = grid.api.getSelectedRows();
|
||||
var ids = [];
|
||||
if (rows.length > 0) {
|
||||
rows.forEach(function(row) {
|
||||
ids.push(row.id);
|
||||
});
|
||||
$.post(app.url('order/sample-apply/close'), {ids: ids}, function(res) {
|
||||
toastrSuccess(res.data);
|
||||
grid.remoteData();
|
||||
});
|
||||
} else {
|
||||
toastrError('最少选择一行记录。');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 自定义搜索方法
|
||||
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.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,80 @@
|
||||
{{$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';
|
||||
|
||||
// 关闭使用
|
||||
action.close = function(data) {
|
||||
var me = this;
|
||||
var grid = config.grid;
|
||||
var rows = grid.api.getSelectedRows();
|
||||
var ids = [];
|
||||
if (rows.length > 0) {
|
||||
rows.forEach(function(row) {
|
||||
ids.push(row.id);
|
||||
});
|
||||
$.post(app.url('order/sample-apply/close'), {ids: ids}, function(res) {
|
||||
toastrSuccess(res.data);
|
||||
grid.remoteData();
|
||||
});
|
||||
} else {
|
||||
toastrError('最少选择一行记录。');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 自定义搜索方法
|
||||
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.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,116 @@
|
||||
<style>
|
||||
.modal-body { overflow:hidden; }
|
||||
</style>
|
||||
|
||||
<div class="wrapper-xs">
|
||||
<div id="dialog-sample_apply-toolbar">
|
||||
<form id="dialog-sample_apply-search-form" name="dialog_sample_apply_search_form" class="search-inline-form form-inline" method="get">
|
||||
@include('searchForm3')
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="ref_sample_apply" class="ag-theme-balham" style="width:100%;height:140px;"></div>
|
||||
|
||||
<div class="m-t-xs">
|
||||
<div id="ref_sample_apply_data" class="ag-theme-balham" style="width:100%;height:240px;"></div>
|
||||
</div>
|
||||
<script>
|
||||
var $ref_sample_apply = null;
|
||||
var $ref_sample_apply_data = null;
|
||||
var params = JSON.parse('{{json_encode($query)}}');
|
||||
(function($) {
|
||||
params['master'] = 1;
|
||||
var mGridDiv = document.querySelector("#ref_sample_apply");
|
||||
var mGrid = new agGridOptions();
|
||||
mGrid.remoteDataUrl = '{{url()}}';
|
||||
mGrid.remoteParams = params;
|
||||
mGrid.rowMultiSelectWithClick = false;
|
||||
mGrid.rowSelection = 'multiple';
|
||||
mGrid.autoColumnsToFit = false;
|
||||
mGrid.defaultColDef.suppressMenu = true;
|
||||
mGrid.defaultColDef.sortable = false;
|
||||
mGrid.columnDefs = [
|
||||
{cellClass:'text-center', checkboxSelection: true, headerCheckboxSelection: true, suppressSizeToFit: true, width: 40},
|
||||
{cellClass:'text-center', field: 'sn', headerName: '单据编号', minWidth: 160},
|
||||
{cellClass:'text-center', field: 'created_at', headerName: '单据日期', width: 120},
|
||||
{cellClass:'text-center', field: 'region_name', headerName: '区域', width: 100},
|
||||
{cellClass:'text-center', field: 'department_name', headerName: '部门', width: 120},
|
||||
{cellClass:'text-center', field:'freight_type_name', headerName: '样品送达方式', width: 120},
|
||||
{field:'customer_name', headerName: '随货客户', width: 160},
|
||||
{field:'freight_address', headerName: '邮寄地址', width: 160},
|
||||
{cellClass:'text-center', field:'contact', headerName: '联系人', width: 100},
|
||||
{cellClass:'text-center', field:'contact_phone', headerName: '联系电话', width: 140},
|
||||
{cellClass:'text-center', field:'purpose', headerName: '样品用途', width: 180},
|
||||
{cellClass:'text-center', field: 'id', headerName: 'ID', width: 60}
|
||||
];
|
||||
|
||||
mGrid.onSelectionChanged = function() {
|
||||
var rows = mGrid.api.getSelectedRows();
|
||||
var ids = [];
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
ids.push(rows[i].id);
|
||||
}
|
||||
params.ids = ids;
|
||||
sGrid.remoteData(params);
|
||||
};
|
||||
new agGrid.Grid(mGridDiv, mGrid);
|
||||
// 读取数据
|
||||
mGrid.remoteData();
|
||||
$ref_sample_apply = mGrid;
|
||||
|
||||
params['master'] = 0;
|
||||
var sGridDiv = document.querySelector("#ref_sample_apply_data");
|
||||
var sGrid = new agGridOptions();
|
||||
sGrid.remoteDataUrl = '{{url()}}';
|
||||
sGrid.remoteParams = params;
|
||||
sGrid.rowMultiSelectWithClick = true;
|
||||
sGrid.rowSelection = 'multiple';
|
||||
sGrid.autoColumnsToFit = false;
|
||||
sGrid.defaultColDef.suppressMenu = true;
|
||||
sGrid.defaultColDef.sortable = false;
|
||||
sGrid.getRowClass = function(params) {
|
||||
var data = params.data;
|
||||
params.node.setSelected(true);
|
||||
if (toNumber(data.ky_num) < toNumber(data.wc_num)) {
|
||||
return 'ag-row-warn';
|
||||
}
|
||||
};
|
||||
sGrid.columnDefs = [
|
||||
{cellClass:'text-center', checkboxSelection: true, headerCheckboxSelection: true, suppressSizeToFit: true, width: 40},
|
||||
{cellClass:'text-center', field: 'product_code', headerName: '存货编码', width: 100},
|
||||
{field: 'product_name', headerName: '商品名称', minWidth: 180},
|
||||
{cellClass:'text-center', field: 'product_spec', headerName: '商品规格', width: 140},
|
||||
{cellClass:'text-center', field: 'product_unit', headerName: '计量单位', width: 80},
|
||||
{cellClass:'text-right', field: 'ky_num', type:'number', headerName: '现存量', width: 80},
|
||||
{cellClass:'text-right', field: 'quantity', type:'number', headerName: '申请数量', width: 80},
|
||||
{cellClass:'text-right', field: 'yc_num', type:'number', headerName: '已发数量', width: 80},
|
||||
{cellClass:'text-right', field: 'wc_num', type:'number', headerName: '未发数量', width: 80},
|
||||
{cellClass:'text-center', field: 'id', headerName: 'ID', width: 60}
|
||||
];
|
||||
new agGrid.Grid(sGridDiv, sGrid);
|
||||
// 读取数据
|
||||
sGrid.remoteData();
|
||||
$ref_sample_apply_data = sGrid;
|
||||
|
||||
var data = JSON.parse('{{json_encode($search["forms"])}}');
|
||||
var search = $('#dialog-sample_apply-search-form').searchForm({
|
||||
data: data,
|
||||
init:function(e) {}
|
||||
});
|
||||
|
||||
search.find('#search-submit').on('click', function() {
|
||||
var query = search.serializeArray();
|
||||
$.map(query, function(row) {
|
||||
params[row.name] = row.value;
|
||||
});
|
||||
|
||||
params['master'] = 1;
|
||||
mGrid.remoteData(params);
|
||||
|
||||
params['master'] = 0;
|
||||
sGrid.remoteData(params);
|
||||
return false;
|
||||
});
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,3 @@
|
||||
<form class="form-horizontal form-controller" method="post" id="customer_order_type" name="customer_order_type">
|
||||
{{$form['tpl']}}
|
||||
</form>
|
||||
@@ -0,0 +1,130 @@
|
||||
<div class="wrapper-sm" style="padding-bottom:0;">
|
||||
|
||||
<div id="{{$query['form_id']}}-dialog-toolbar">
|
||||
<form id="{{$query['form_id']}}-dialog-search-form" name="{{$query['form_id']}}_dialog_search_form" class="form-inline" method="get">
|
||||
@include('searchForm3')
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="m-t-sm dialog-jqgrid">
|
||||
<table id="{{$query['form_id']}}-dialog"></table>
|
||||
<div id="{{$query['form_id']}}-dialog-page" class="m-r-sm"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
(function($) {
|
||||
window.productDialog = {};
|
||||
var params = {{json_encode($query)}};
|
||||
var $table = $("#{{$query['form_id']}}-dialog");
|
||||
|
||||
var model = [
|
||||
{name: "name", index:'name', label: '名称', minWidth: 220, align: 'left'},
|
||||
{name: "type", index:'type', label: '是否收费', width: 120, align: 'center'},
|
||||
{name: "id", index:'id', label: 'ID', width: 60, align: 'center'}
|
||||
];
|
||||
|
||||
$table.jqGrid({
|
||||
caption: '',
|
||||
datatype: 'json',
|
||||
mtype: 'POST',
|
||||
url: app.url('order/type/dialog'),
|
||||
colModel: model,
|
||||
rowNum: 25,
|
||||
multiboxonly: params.multi == 0 ? true : false,
|
||||
multiselect: true,
|
||||
viewrecords: true,
|
||||
rownumbers: false,
|
||||
height: 320,
|
||||
footerrow: false,
|
||||
postData: params,
|
||||
tableType: 'dialog',
|
||||
pager: '#{{$query["form_id"]}}-dialog-page',
|
||||
gridComplete: function() {
|
||||
// 单选时禁用全选按钮
|
||||
if (params.multi == 0) {
|
||||
$("#cb_" + this.p.id).prop('disabled', true);
|
||||
}
|
||||
$(this).jqGrid('setColsWidth');
|
||||
},
|
||||
loadComplete: function(res) {
|
||||
|
||||
var me = $(this);
|
||||
me.jqGrid('initPagination', res);
|
||||
|
||||
if($.isFunction(window.productDialog.setSelecteds)) {
|
||||
window.productDialog.setSelecteds.call($table);
|
||||
} else {
|
||||
// 设置默认选中
|
||||
window.productDialog.setDefaultSelecteds();
|
||||
}
|
||||
|
||||
},
|
||||
// 双击选中
|
||||
ondblClickRow: function(id) {
|
||||
if(params.multi == 1) {
|
||||
$table.jqGrid('setSelection', id);
|
||||
}
|
||||
if($.isFunction(window.productDialog.getSelecteds)) {
|
||||
window.productDialog.getSelecteds.call($table);
|
||||
} else {
|
||||
window.productDialog.getDefaultSelecteds();
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
window.productDialog.setDefaultSelecteds = function(res) {
|
||||
var ids = $('#'+params.id).val() || '';
|
||||
ids = ids.split(',');
|
||||
$.each(ids, function(k, v) {
|
||||
if(v) {
|
||||
$table.jqGrid('setSelection', v);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
window.productDialog.getDefaultSelecteds = function(dialog) {
|
||||
var rows = $table.jqGrid('getSelections');
|
||||
if(params.multi == 0) {
|
||||
if(rows.length > 1) {
|
||||
toastrError('只能选择一项。');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
var id = [], text = [];
|
||||
for (var i = 0; i < rows.length; i++) {
|
||||
id.push(rows[i].id);
|
||||
text.push(rows[i].name);
|
||||
}
|
||||
|
||||
// 会写数据
|
||||
$('#'+params.id).val(id.join(','));
|
||||
$('#'+params.id+'_text').val(text.join(','));
|
||||
|
||||
// 关闭窗口
|
||||
$(dialog).dialog("close");
|
||||
return true;
|
||||
}
|
||||
|
||||
var data = {{json_encode($search['forms'])}};
|
||||
var search = $('#{{$query["form_id"]}}-dialog-search-form').searchForm({
|
||||
data: data,
|
||||
init:function(e) {}
|
||||
});
|
||||
|
||||
search.find('#search-submit').on('click', function() {
|
||||
var query = search.serializeArray();
|
||||
$.map(query, function(row) {
|
||||
params[row.name] = row.value;
|
||||
});
|
||||
|
||||
$table.jqGrid('setGridParam', {
|
||||
postData: params,
|
||||
page: 1
|
||||
}).trigger('reloadGrid');
|
||||
return false;
|
||||
});
|
||||
})(jQuery);
|
||||
|
||||
</script>
|
||||
@@ -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,38 @@
|
||||
<div class="wrapper-sm p-t-none">
|
||||
<div class="list-jqgrid">
|
||||
<div id="order-goods-widget" class="ag-theme-balham" style="width:100%;height:200px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
(function ($) {
|
||||
function datetimeFormatter(params) {
|
||||
return format_datetime(params.value);
|
||||
}
|
||||
var gridDiv = document.querySelector("#order-goods-widget");
|
||||
var options = new agGridOptions();
|
||||
options.remoteDataUrl = '{{url()}}';
|
||||
options.remoteParams = {};
|
||||
var columnDefs = [
|
||||
{suppressMenu: true, type:'sn', cellClass:'text-center', headerName: '序号', width: 60},
|
||||
{suppressMenu: true, field: "sn", headerName: '编号', width: 160},
|
||||
{suppressMenu: true, sortable: false, field: "name", headerName: '客户', width: 160},
|
||||
{suppressMenu: true, sortable: false, field: "freight_arrival_date", headerName: '预计到货日期', width: 140},
|
||||
];
|
||||
options.columnDefs = columnDefs;
|
||||
options.onRowDoubleClicked = function (params) {
|
||||
if (params.node.rowPinned) {
|
||||
return;
|
||||
}
|
||||
if (params.data == undefined) {
|
||||
return;
|
||||
}
|
||||
if (params.data.id > 0) {
|
||||
top.addTab('stock/delivery/show?id=' + params.data.id, 'stock_delivery_show', '发货单');
|
||||
}
|
||||
};
|
||||
new agGrid.Grid(gridDiv, options);
|
||||
// 读取数据
|
||||
options.remoteData({page: 1});
|
||||
gdoo.widgets['order_widget_goods'] = options;
|
||||
})(jQuery);
|
||||
</script>
|
||||
@@ -0,0 +1,31 @@
|
||||
<style>
|
||||
#order-index-widget .ag-header-cell-label {
|
||||
justify-content: left !important;
|
||||
}
|
||||
</style>
|
||||
<div class="wrapper-sm p-t-none">
|
||||
<div class="list-jqgrid">
|
||||
<div id="order-index-widget" class="ag-theme-balham" style="width:100%;height:200px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
(function ($) {
|
||||
var gridDiv = document.querySelector("#order-index-widget");
|
||||
var options = new agGridOptions();
|
||||
options.remoteDataUrl = '{{url()}}';
|
||||
options.remoteParams = {};
|
||||
var columnDefs = [{
|
||||
field: 'title',
|
||||
cellClass:'text-left',
|
||||
cellRenderer: 'htmlCellRenderer',
|
||||
headerName: '统计',
|
||||
suppressMenu: true,
|
||||
minWidth: 160
|
||||
}];
|
||||
options.columnDefs = columnDefs;
|
||||
new agGrid.Grid(gridDiv, options);
|
||||
// 读取数据
|
||||
options.remoteData({page: 1});
|
||||
gdoo.widgets['order_widget_index'] = options;
|
||||
})(jQuery);
|
||||
</script>
|
||||
Reference in New Issue
Block a user