182 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			182 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <div class="panel no-border" id="material_plan-controller">
 | |
| 
 | |
|     <div class="wrapper-sm">
 | |
|         @include('searchForm7')
 | |
|         <a class="btn btn-sm btn-default" data-toggle="material_plan" data-action="filter"><i class="fa fa-search"></i> 筛选</a>
 | |
|         <a class="btn btn-sm btn-default" data-toggle="material_plan" data-action="export"><i class="fa fa-share"></i> 导出</a>
 | |
|         <a class="btn btn-sm btn-default" data-toggle="material_plan" data-action="total"><i class="fa fa-cubes"></i> 用料总量</a>
 | |
|         <span id="plan_info"></span>
 | |
|     </div>
 | |
| 
 | |
|     <div class='gdoo-list-grid'>
 | |
|         <div id="material_plan-grid" style="width:100%;" class="ag-theme-balham"></div>
 | |
|     </div>
 | |
| </div>
 | |
| 
 | |
| <style>
 | |
| .ag-row {
 | |
|     display:table;
 | |
| }
 | |
| .rowspan {
 | |
|     background-color: #fff;
 | |
|     top: -1px;
 | |
|     border-top: 1px solid #d9dcde !important;
 | |
|     display: table-cell;
 | |
|     vertical-align: middle;
 | |
| }
 | |
| .rowspan_end {
 | |
|     border-bottom: 1px solid #d9dcde !important;
 | |
| }
 | |
| </style>
 | |
| 
 | |
| <script>
 | |
|     (function ($) {
 | |
|         var cellClassRules = {
 | |
|             "rowspan": function(params) {
 | |
|                 return params.data.rowspan > 1 ? 1 : 0;
 | |
|             },
 | |
|             "rowspan_end": function(params) {
 | |
|                 return params.data.rowspan_end == 1 ? 1 : 0;
 | |
|             }
 | |
|         };
 | |
|         var rowSpan = function(params) {
 | |
|             return params.data.rowspan > 1 ? params.data.rowspan : 0;
 | |
|         }
 | |
| 
 | |
|         var searchOpen = false;
 | |
|         var table = 'material_plan';
 | |
|         var search = JSON.parse('{{json_encode($search)}}');
 | |
|         var cols = [ 
 | |
|             {field: "product_name", headerName: "成品品种", sortable: false, suppressMenu: true, width: 140, rowSpan: rowSpan, cellClassRules: cellClassRules}, 
 | |
|             {field: "product_spec", headerName: "规格型号", sortable: false, suppressMenu: true, cellClass: "text-center", width: 120, rowSpan: rowSpan, cellClassRules: cellClassRules}, 
 | |
|             {field: "product_unit", headerName: "计量单位", sortable: false, suppressMenu: true, cellClass: "text-center", width: 60, rowSpan: rowSpan, cellClassRules: cellClassRules}, 
 | |
|             {field: "product_num", headerName: "计划数量", sortable: false, suppressMenu: true, cellClass: "text-right",  width: 80, rowSpan: rowSpan, cellClassRules: cellClassRules}, 
 | |
|             {field: "category_name", headerName: "品种", sortable: false, suppressMenu: true, width: 140}, 
 | |
|             {field: "material_name", headerName: "名称", sortable: false, suppressMenu: true, width: 100}, 
 | |
|             {field: "material_num", headerName: "数量", sortable: false, suppressMenu: true, cellClass: "text-right", calcFooter: "sum", type: "number", width: 60}, 
 | |
|             {field: "total_num", headerName: "计划用料数量", sortable: false, suppressMenu: true, cellClass: "text-right", calcFooter: "sum", type: "number", width: 70}, 
 | |
|             {field: "remark", headerName: "备注", sortable: false, suppressMenu: true, cellClass: "text-right", calcFooter: "sum", type: "number", width: 70}
 | |
|         ];
 | |
| 
 | |
|         var grid = new agGridOptions();
 | |
|         grid.suppressRowTransform = true;
 | |
|         var gridDiv = document.querySelector("#material_plan-grid");
 | |
|         gridDiv.style.height = getPanelHeight(48);
 | |
| 
 | |
|         grid.remoteDataUrl = '{{url()}}';
 | |
|         grid.remoteParams = search.query;
 | |
|         grid.columnDefs = cols;
 | |
|         grid.rowSelection = 'single';
 | |
| 
 | |
|         var query = {};
 | |
| 
 | |
|         grid.onRowDoubleClicked = function (params) {
 | |
|             if (params.node.rowPinned) {
 | |
|                 return;
 | |
|             }
 | |
|             if (params.data == undefined) {
 | |
|                 return;
 | |
|             }
 | |
|             if (params.data.product_id > 0) {
 | |
|                 query['product_id'] = params.data.product_id;
 | |
|                 viewDialog({
 | |
|                     title: '单品用料计划',
 | |
|                     dialogClass: 'modal-md',
 | |
|                     url: app.url('produce/material/planProduct', query),
 | |
|                     close: function(res) {
 | |
|                         $(this).dialog("close");
 | |
|                     }
 | |
|                 });
 | |
|             }
 | |
|         };
 | |
| 
 | |
|         new agGrid.Grid(gridDiv, grid);
 | |
| 
 | |
|         grid.remoteData({page: 1});
 | |
| 
 | |
|         // 绑定自定义事件
 | |
|         var $gridDiv = $(gridDiv);
 | |
|         $gridDiv.on('click', '[data-toggle="event"]', function () {
 | |
|             var data = $(this).data();
 | |
|             if (data.master_id > 0) {
 | |
|                 action[data.action](data);
 | |
|             }
 | |
|         });
 | |
| 
 | |
|         var data = search.forms;
 | |
|         var search = $("#material_plan-search-form-advanced");
 | |
|         search.searchForm({
 | |
|             data: data,
 | |
|             advanced: 1,
 | |
|         });
 | |
|         search.find('#search-submit').on('click', function() {
 | |
|             var params = search.serializeArray();
 | |
|             $.map(params, function(row) {
 | |
|                 data[row.name] = row.value;
 | |
|             });
 | |
|             grid.remoteData(data);
 | |
|             return false;
 | |
|         });
 | |
| 
 | |
|         $('#material_plan-controller').on('click', '[data-toggle="material_plan"]', function() {
 | |
|             var data = $(this).data();
 | |
|             if (data.action == 'filter') {
 | |
|                 searchBox();
 | |
|             }
 | |
|             if (data.action == 'export') {
 | |
|                 LocalExport(grid, '用料计划');
 | |
|             }
 | |
|             if (data.action == 'total') {
 | |
|                 viewDialog({
 | |
|                     title: '用料计划总量',
 | |
|                     dialogClass: 'modal-md',
 | |
|                     url: app.url('produce/material/planTotal', query),
 | |
|                     close: function(res) {
 | |
|                         $(this).dialog("close");
 | |
|                     }
 | |
|                 });
 | |
|             }
 | |
|         });
 | |
| 
 | |
|         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;
 | |
|                         });
 | |
| 
 | |
|                         query['date'] = params['search_0'];
 | |
|                         query['department_id'] = params['search_1'];
 | |
|                         var text = $('#material_plan-search-form-advanced_advanced-search-value-1_text').val();
 | |
|                         $('#plan_info').text(params['search_0'] + ' ' + text);
 | |
| 
 | |
|                         params['page'] = 1;
 | |
|                         grid.remoteData(params);
 | |
|                         $(this).dialog("close");
 | |
|                         return false;
 | |
|                     }
 | |
|                 }]
 | |
|             });
 | |
|         }
 | |
| 
 | |
|         if (searchOpen == false) {
 | |
|             searchBox();
 | |
|         }
 | |
| 
 | |
|     })(jQuery);
 | |
| 
 | |
| </script> |