216 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			216 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
<div class="panel b-a" id="{{$header['master_table']}}-controller">
 | 
						|
    @include('headers')
 | 
						|
 | 
						|
    <div class='gdoo-list-grid'>
 | 
						|
        <div id="{{$header['master_table']}}-grid" style="width:100%;" class="ag-theme-balham"></div>
 | 
						|
    </div>
 | 
						|
</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 = showLoading();
 | 
						|
                    $.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> |