var insTbCount = 0; 
 | 
layui.config({ 
 | 
    base: baseUrl + "/static/layui/lay/modules/" 
 | 
}).use(['layer', 'form', 'table', 'util', 'admin', 'xmSelect', 'laydate'], function () { 
 | 
    var $ = layui.jquery; 
 | 
    var layer = layui.layer; 
 | 
    var form = layui.form; 
 | 
    var table = layui.table; 
 | 
    var util = layui.util; 
 | 
    var admin = layui.admin; 
 | 
    var xmSelect = layui.xmSelect; 
 | 
    var layDate = layui.laydate; 
 | 
    var laytpl = layui.laytpl; 
 | 
  
 | 
    // 渲染搜索模板 
 | 
    $.ajax({ 
 | 
        url: baseUrl+"/docType/list/auth", 
 | 
        headers: {'token': localStorage.getItem('token')}, 
 | 
        data: { 
 | 
            limit: 9999 
 | 
        }, 
 | 
        method: 'POST', 
 | 
        success: function (res) { 
 | 
            if (res.code === 200){ 
 | 
                let template = Handlebars.compile($('#docTypeTpl').html()); 
 | 
                $('#docType-query').html(template(res.data)); 
 | 
                layui.form.render('select'); 
 | 
            } else if (res.code === 403){ 
 | 
                top.location.href = baseUrl+"/"; 
 | 
            } else { 
 | 
                layer.msg(res.msg, {icon: 2}) 
 | 
            } 
 | 
        } 
 | 
    }) 
 | 
  
 | 
    // 渲染表格 
 | 
    var insTb = table.render({ 
 | 
        elem: '#order', 
 | 
        url: baseUrl+'/order/pakout/order/head/page/auth', 
 | 
        headers: {token: localStorage.getItem('token')}, 
 | 
        page: true, 
 | 
        cellMinWidth: 100, 
 | 
        cols: [[ 
 | 
            {type: 'numbers'}, 
 | 
            {field: 'orderNo', title: '单据编号', templet: '#orderNoTpl'}, 
 | 
            {field: 'docType$', align: 'center', title: '类型',  minWidth: 160, width: 160}, 
 | 
            {align: 'center', title: '明细', toolbar: '#tbLook', minWidth: 160, width: 160}, 
 | 
            {field: 'createTime$', title: '创建时间', minWidth: 200, width: 200}, 
 | 
            {field: 'settle$', align: 'center', title: '状态', templet: '#settleTpl',  minWidth: 160, width: 160}, 
 | 
            {field: 'memo', align: 'center',title: '备注', hide: true}, 
 | 
            {align: 'center', title: '操作', toolbar: '#operate', width: 180} 
 | 
        ]], 
 | 
        request: { 
 | 
            pageName: 'curr', 
 | 
            pageSize: 'limit' 
 | 
        }, 
 | 
        parseData: function (res) { 
 | 
            return { 
 | 
                'code': res.code, 
 | 
                'msg': res.msg, 
 | 
                'count': res.data.total, 
 | 
                'data': res.data.records 
 | 
            } 
 | 
        }, 
 | 
        response: { 
 | 
            statusCode: 200 
 | 
        }, 
 | 
        done: function (res, curr, count) { 
 | 
            limit(); 
 | 
            if (res.code === 403) { 
 | 
                top.location.href = baseUrl+"/"; 
 | 
            } 
 | 
            insTbCount = count; 
 | 
        } 
 | 
    }); 
 | 
  
 | 
    // 搜索 
 | 
    form.on('submit(tbSearch)', function (data) { 
 | 
        insTb.reload({where: data.field, page: {curr: 1}}); 
 | 
    }); 
 | 
  
 | 
    // 添加 
 | 
    $("#orderAddBtn").click(function () { 
 | 
        showEditModel(); 
 | 
    }); 
 | 
  
 | 
    // 工具条点击事件 
 | 
    table.on('tool(order)', function (obj) { 
 | 
        var data = obj.data; 
 | 
        var layEvent = obj.event; 
 | 
        if (layEvent === 'edit') { 
 | 
            showEditModel(data); 
 | 
        } else if (layEvent === 'wrkTrace') { 
 | 
            showWrkTrace(data.id); 
 | 
        } else if (layEvent === 'del') { 
 | 
            doDel(data.id); 
 | 
        } else if (layEvent === 'complete') { 
 | 
            doModify(data.id, data.orderNo, 4); 
 | 
        } else if (layEvent === 'look') { 
 | 
            var $a = $(obj.tr).find('a[lay-event="look"]'); 
 | 
            var offset = $a.offset(); 
 | 
            var top = offset.top; 
 | 
            var left = offset.left; 
 | 
            layer.open({ 
 | 
                type: 1, 
 | 
                title: false, 
 | 
                area: '820px', 
 | 
                offset: [top + 'px', (left - 530 + $a.outerWidth()) + 'px'], 
 | 
                shade: .01, 
 | 
                shadeClose: true, 
 | 
                fixed: false, 
 | 
                content: '<table id="lookSSXMTable" lay-filter="lookSSXMTable"></table>', 
 | 
                success: function (layero) { 
 | 
                    table.render({ 
 | 
                        elem: '#lookSSXMTable', 
 | 
                        headers: {token: localStorage.getItem('token')}, 
 | 
                        url: baseUrl+'/order/pakout/orderDetl/list/auth', 
 | 
                        where: { 
 | 
                            order_id: data.id 
 | 
                        }, 
 | 
                        page: true, 
 | 
                        cellMinWidth: 100, 
 | 
                        cols: [[ 
 | 
                            {type: 'numbers'}, 
 | 
                            {field: 'matnr', title: '商品编码', width: 160}, 
 | 
                            {field: 'maktx', title: '商品名称', width: 160}, 
 | 
                            {field: 'batch', title: '批号'}, 
 | 
                            {field: 'anfme', title: '数量'}, 
 | 
                            {field: 'workQty', title: '作业数量'}, 
 | 
                            {field: 'qty', title: '完成数量', style: 'font-weight: bold'}, 
 | 
                            // {field: 'unit', title: '单位'}, 
 | 
                            // { 
 | 
                            //     field: 'createTime$', title: '创建时间', sort: true, templet: function (d) { 
 | 
                            //         return util.toDateString(d.createTime); 
 | 
                            //     },  width: 180 
 | 
                            // }, 
 | 
                            // {field: 'inQty', title: '已入库量'}, 
 | 
                            // {field: 'color', title: '颜色'}, 
 | 
                            {field: 'specs', title: '规格'} 
 | 
                        ]], 
 | 
                        request: { 
 | 
                            pageName: 'curr', 
 | 
                            pageSize: 'limit' 
 | 
                        }, 
 | 
                        parseData: function (res) { 
 | 
                            return { 
 | 
                                'code': res.code, 
 | 
                                'msg': res.msg, 
 | 
                                'count': res.data.total, 
 | 
                                'data': res.data.records 
 | 
                            } 
 | 
                        }, 
 | 
                        response: { 
 | 
                            statusCode: 200 
 | 
                        }, 
 | 
                        done: function () { 
 | 
                            $(layero).find('.layui-table-view').css('margin', '0'); 
 | 
                        }, 
 | 
                        size: '' 
 | 
                    }); 
 | 
                } 
 | 
            }); 
 | 
        } 
 | 
    }); 
 | 
  
 | 
    // 显示表单弹窗 
 | 
    function showEditModel(expTpe) { 
 | 
        admin.open({ 
 | 
            type: 1, 
 | 
            title: (expTpe ? '修改' : '添加') + '单据', 
 | 
            content: $('#editDialog').html(), 
 | 
            area: '1300px', 
 | 
            success: function (layero, dIndex) { 
 | 
                $(layero).children('.layui-layer-content').css('overflow', 'visible'); 
 | 
                var isExpAdd = !expTpe; 
 | 
                // 回显数据 
 | 
                form.val('editForm', expTpe); 
 | 
                if (expTpe) { 
 | 
                    $('#orderNo').attr("disabled", "disabled"); 
 | 
                } 
 | 
                // 表单提交事件 
 | 
                form.on('submit(orderEditSubmit)', function (data) { 
 | 
                    // 组装数据 
 | 
                    if (xxDataList.length <= 0) { 
 | 
                        layer.tips('请添加单据明细', '#matAddBtnComment', {tips: [1, '#ff4c4c']}); 
 | 
                        return false; 
 | 
                    } 
 | 
                    let nList = admin.util.deepClone(xxDataList); 
 | 
                    for (let xi = 0; xi < nList.length; xi++) { 
 | 
                        if (nList[xi].anfme <= 0){ 
 | 
                            layer.msg('明细修改数量不合法', {icon: 2}); 
 | 
                            return false; 
 | 
                        } 
 | 
                        if (nList[xi].anfme < nList[xi].workQty){ 
 | 
                            layer.msg('数量不能小于已作业数量', {icon: 2}); 
 | 
                            return false; 
 | 
                        } 
 | 
                    } 
 | 
                    layer.load(2); 
 | 
                    $.ajax({ 
 | 
                        url: baseUrl+"/order/pakout/order/form/" + (isExpAdd?"add":"modify") + "/auth", 
 | 
                        headers: {'token': localStorage.getItem('token')}, 
 | 
                        data: JSON.stringify({ 
 | 
                            orderId: Number(data.field.id), 
 | 
                            docType: Number(data.field.docType), 
 | 
                            orderNo: data.field.orderNo, 
 | 
                            orderDetlPakoutList: nList 
 | 
                        }), 
 | 
                        contentType:'application/json;charset=UTF-8', 
 | 
                        method: 'POST', 
 | 
                        success: function (res) { 
 | 
                            layer.closeAll('loading'); 
 | 
                            if (res.code === 200){ 
 | 
                                layer.close(dIndex); 
 | 
                                $(".layui-laypage-btn")[0].click(); 
 | 
                                layer.msg(res.msg, {icon: 1}); 
 | 
                            } else if (res.code === 403){ 
 | 
                                top.location.href = baseUrl+"/"; 
 | 
                            }else { 
 | 
                                layer.msg(res.msg, {icon: 2}); 
 | 
                            } 
 | 
                        } 
 | 
                    }) 
 | 
                    return false; 
 | 
                }); 
 | 
                // 明细表格 
 | 
                var xxDataList = []; 
 | 
                var tbOptions = { 
 | 
                    elem: '#formSSXMTable', 
 | 
                    headers: {token: localStorage.getItem('token')}, 
 | 
                    data: xxDataList, 
 | 
                    page: true, 
 | 
                    height: '350px;', 
 | 
                    cellMinWidth: 100, 
 | 
                    cols: [[ 
 | 
                        {type: 'numbers', title: '#'}, 
 | 
                        {field: 'matnr', title: '商品编码', width: 160}, 
 | 
                        {field: 'maktx', title: '商品名称', width: 200}, 
 | 
                        {field: 'batch', title: '批号', edit: true}, 
 | 
                        {field: 'specs', title: '规格'}, 
 | 
                        {field: 'anfme', title: '数量(修改)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110}, 
 | 
                        {field: 'workQty', title: '作业数量',  minWidth: 100, width: 100}, 
 | 
                        // {field: 'unit', title: '单位', width: 80}, 
 | 
                        {field: 'memo', title: '备注' , edit: true}, 
 | 
                        {align: 'center', title: '操作', toolbar: '#formSSXMTableBar', minWidth: 80, width: 80, fixed: 'right'} 
 | 
                    ]], 
 | 
                    done: function (res) { 
 | 
                        $(layero).find('.layui-table-view').css('margin', '0'); 
 | 
                    }, 
 | 
                    size: '' 
 | 
                }; 
 | 
                if (!isExpAdd) { 
 | 
                    $.ajax({ 
 | 
                        url: baseUrl+"/order/pakout/order/detl/all/auth?orderId=" + expTpe.id, 
 | 
                        headers: {'token': localStorage.getItem('token')}, 
 | 
                        method: 'GET', 
 | 
                        async: false, 
 | 
                        success: function (res) { 
 | 
                            if (res.code === 200){ 
 | 
                                xxDataList = res.data; 
 | 
                                tbOptions.data = xxDataList; 
 | 
                            } else if (res.code === 403){ 
 | 
                                top.location.href = baseUrl+"/"; 
 | 
                            }else { 
 | 
                                layer.msg(res.msg, {icon: 2}) 
 | 
                            } 
 | 
                        } 
 | 
                    }) 
 | 
                } 
 | 
                var insTbSSXM = table.render(tbOptions); 
 | 
                // 工具条点击事件 
 | 
                table.on('tool(formSSXMTable)', function (obj) { 
 | 
                    var data = obj.data; 
 | 
                    var layEvent = obj.event; 
 | 
                    if (layEvent === 'edit') { 
 | 
                        showEditModel2(data); 
 | 
                    } else if (layEvent === 'del') { 
 | 
                        if(data.workQty > 0){ 
 | 
                            layer.msg("已存在作业数量,不能删除", {icon: 2}); 
 | 
                            return; 
 | 
                        } 
 | 
                        layer.confirm('确定要删除吗?', { 
 | 
                            shade: .1, 
 | 
                            skin: 'layui-layer-admin' 
 | 
                        }, function (i) { 
 | 
                            layer.close(i); 
 | 
                            for (var j = 0; j < xxDataList.length; j++) { 
 | 
                                if (xxDataList[j].matnr === data.matnr && xxDataList[j].batch === data.batch) { 
 | 
                                    xxDataList.splice(j, 1); 
 | 
                                    break; 
 | 
                                } 
 | 
                            } 
 | 
                            insTbSSXM.reload({data: xxDataList, page: {curr: 1}}); 
 | 
                        }); 
 | 
                    } 
 | 
                }); 
 | 
                // 明细数据修改 
 | 
                table.on('edit(formSSXMTable)', function (obj) { 
 | 
                    let index = obj.tr.attr("data-index"); 
 | 
                    let data = xxDataList[index]; 
 | 
                    if (obj.field === 'anfme'){ 
 | 
                        let vle = Number(obj.value); 
 | 
                        if (isNaN(vle)) { 
 | 
                            layer.msg("请输入数字", {icon: 2}); 
 | 
                            return false; 
 | 
                        } else { 
 | 
                            if (vle <= 0) { 
 | 
                                layer.msg("数量必须大于零", {icon: 2}); 
 | 
                                // data[obj.field] = 0; 
 | 
                                // insTbSSXM.reload({data: xxDataList}); 
 | 
                                return false; 
 | 
                            } 
 | 
                            if(obj.value < data.workQty){ 
 | 
                                layer.msg("输入数量不能小于作业中数量", {icon: 2}); 
 | 
                                // data[obj.field] = 0; 
 | 
                                // insTbSSXM.reload({data: xxDataList}); 
 | 
                                return false; 
 | 
                            } 
 | 
                        } 
 | 
                    } 
 | 
                    data[obj.field] = obj.value; 
 | 
                    insTbSSXM.reload({data: xxDataList}); 
 | 
                }); 
 | 
  
 | 
                $('#matAddBtnComment').click(function () { 
 | 
                    showEditModel2(); 
 | 
                }); 
 | 
  
 | 
                // 显示添加明细表单弹窗 
 | 
                function showEditModel2(exp) { 
 | 
                    admin.open({ 
 | 
                        type: 1, 
 | 
                        offset: '150px', 
 | 
                        area: '680px', 
 | 
                        title: (exp ? '修改' : '添加') + '明细', 
 | 
                        content: $('#matEditDialog').html(), 
 | 
                        success: function (layero, dIndex) { 
 | 
                            // 回显数据 
 | 
                            form.val('matEditForm', exp); 
 | 
                            // 表单提交事件 
 | 
                            form.on('submit(matEditSubmit)', function (data) { 
 | 
                                let selectList = matXmSelect.getValue(); 
 | 
                                for (let i = 0; i<selectList.length; i++) { 
 | 
                                    let item = selectList[i]; 
 | 
                                    // 查询物料详情 
 | 
                                    $.ajax({ 
 | 
                                        url: baseUrl+"/mat/covert/"+item.value+"/auth", 
 | 
                                        headers: {'token': localStorage.getItem('token')}, 
 | 
                                        method: 'GET', 
 | 
                                        async: false, 
 | 
                                        success: function (res) { 
 | 
                                            if (res.code === 200){ 
 | 
                                                xxDataList.push(res.data); 
 | 
                                                insTbSSXM.reload({data: xxDataList, page: {curr: 1}}); 
 | 
                                            } else if (res.code === 403){ 
 | 
                                                top.location.href = baseUrl+"/"; 
 | 
                                            }else { 
 | 
                                                layer.msg(res.msg, {icon: 2}) 
 | 
                                            } 
 | 
                                        } 
 | 
                                    }) 
 | 
                                } 
 | 
                                layer.close(dIndex); 
 | 
                                return false; 
 | 
                            }); 
 | 
                            // 渲染物料选择 
 | 
                            var matXmSelect = xmSelect.render({ 
 | 
                                el: '#mat', 
 | 
                                style: { 
 | 
                                    width: '340px', 
 | 
                                }, 
 | 
                                autoRow: true, 
 | 
                                toolbar: { show: true }, 
 | 
                                filterable: true, 
 | 
                                remoteSearch: true, 
 | 
                                remoteMethod: function(val, cb, show){ 
 | 
                                    $.ajax({ 
 | 
                                        url: baseUrl+"/mat/all/get/kv", 
 | 
                                        headers: {'token': localStorage.getItem('token')}, 
 | 
                                        data: { 
 | 
                                            condition: val 
 | 
                                        }, 
 | 
                                        method: 'POST', 
 | 
                                        success: function (res) { 
 | 
                                            if (res.code === 200){ 
 | 
                                                cb(res.data) 
 | 
                                            } else { 
 | 
                                                cb([]); 
 | 
                                                layer.msg(res.msg, {icon: 2}); 
 | 
                                            } 
 | 
                                        } 
 | 
                                    }); 
 | 
                                } 
 | 
                            }) 
 | 
                            // 弹窗不出现滚动条 
 | 
                            $(layero).children('.layui-layer-content').css('overflow', 'visible'); 
 | 
                            layui.form.render('select'); 
 | 
                        } 
 | 
                    }); 
 | 
                } 
 | 
  
 | 
            } 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    // 删除单据 
 | 
    function doDel(orderId) { 
 | 
        layer.confirm('确定要删除吗?', { 
 | 
            shade: .1, 
 | 
            skin: 'layui-layer-admin' 
 | 
        }, function (i) { 
 | 
            layer.close(i); 
 | 
            layer.load(2); 
 | 
            $.ajax({ 
 | 
                url: baseUrl+"/order/pakout/order/delete/auth", 
 | 
                headers: {'token': localStorage.getItem('token')}, 
 | 
                data: { 
 | 
                    orderId: orderId 
 | 
                }, 
 | 
                method: 'POST', 
 | 
                success: function (res) { 
 | 
                    layer.closeAll('loading'); 
 | 
                    if (res.code === 200){ 
 | 
                        if (insTbCount === 0) { 
 | 
                            insTb.reload({page: {curr: 1}}); 
 | 
                        } else { 
 | 
                            $(".layui-laypage-btn")[0].click(); 
 | 
                        } 
 | 
                        layer.msg(res.msg, {icon: 1}); 
 | 
                    } else if (res.code === 403){ 
 | 
                        top.location.href = baseUrl+"/"; 
 | 
                    }else { 
 | 
                        layer.msg(res.msg, {icon: 2}); 
 | 
                    } 
 | 
                } 
 | 
            }) 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    // 修改订单状态 
 | 
    function doModify(orderId, orderNo, settle) { 
 | 
        layer.confirm('确定要手动完结吗?', { 
 | 
            shade: .1, 
 | 
            skin: 'layui-layer-admin' 
 | 
        }, function (i) { 
 | 
            layer.close(i); 
 | 
            layer.load(2); 
 | 
            console.log(orderId); 
 | 
            console.log(settle); 
 | 
            $.ajax({ 
 | 
                url: baseUrl+"/order/pakout/order/update/auth", 
 | 
                headers: {'token': localStorage.getItem('token')}, 
 | 
                data: { 
 | 
                    id: orderId, 
 | 
                    orderNo: orderNo, 
 | 
                    settle: settle 
 | 
                }, 
 | 
                method: 'POST', 
 | 
                success: function (res) { 
 | 
                    layer.closeAll('loading'); 
 | 
                    if (res.code === 200){ 
 | 
                        if (insTbCount === 0) { 
 | 
                            insTb.reload({page: {curr: 1}}); 
 | 
                        } else { 
 | 
                            $(".layui-laypage-btn")[0].click(); 
 | 
                        } 
 | 
                        layer.msg(res.msg, {icon: 1}); 
 | 
                    } else if (res.code === 403){ 
 | 
                        top.location.href = baseUrl+"/"; 
 | 
                    }else { 
 | 
                        layer.msg(res.msg, {icon: 2}); 
 | 
                    } 
 | 
                } 
 | 
            }) 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    // 任务追溯 
 | 
    function showWrkTrace(orderId) { 
 | 
        let loadIndex = layer.msg('请求中...', {icon: 16, shade: 0.01, time: false}); 
 | 
        $.ajax({ 
 | 
            url: baseUrl+"/order/pakout/order/wrk/trace/auth", 
 | 
            headers: {'token': localStorage.getItem('token')}, 
 | 
            data: { 
 | 
                orderId: orderId 
 | 
            }, 
 | 
            method: 'POST', 
 | 
            success: function (res) { 
 | 
                layer.close(loadIndex); 
 | 
                if (res.code === 200){ 
 | 
                    laytpl(wrkTraceDialog.innerHTML).render(res.data, function (html) { 
 | 
                        admin.open({ 
 | 
                            type: 1, 
 | 
                            title: '任务追溯', 
 | 
                            area: ['800px', '450px'], 
 | 
                            shadeClose: true, 
 | 
                            content: html, 
 | 
                            success: function (layero, dIndex) { 
 | 
                                $(layero).children('.layui-layer-content').css('overflow', 'visible'); 
 | 
                                /** 统计图表 */ 
 | 
                                var traceCharts = echarts.init(document.getElementById('wrkTraceCharts')); 
 | 
                                var traceOptions = { 
 | 
                                    title: { 
 | 
                                        text: '总量/作业/完成', x: 'center', y: '38%', 
 | 
                                        textStyle: {fontSize: 18, color: '#262626', fontWeight: 'normal'}, 
 | 
                                        subtextStyle: {fontSize: 36, color: '#10B4E8'}, 
 | 
                                        itemGap: 20 
 | 
                                    }, 
 | 
                                    color: ['#10B4E8', '#E0E0E0', '#FF0000'], 
 | 
                                    tooltip: {trigger: 'item'}, 
 | 
                                    series: [{name: '数量', type: 'pie', radius: ['75%', '80%'], label: {normal: {show: false}}}] 
 | 
                                }; 
 | 
                                traceCharts.setOption(traceOptions); 
 | 
                                // 赋值 
 | 
                                traceCharts.setOption({ 
 | 
                                    title: { 
 | 
                                        subtext: res.data.totalQty+"/"+res.data.wrkQty+"/"+res.data.endQty 
 | 
                                    }, 
 | 
                                    series: [ 
 | 
                                        { 
 | 
                                            data: [ 
 | 
                                                {name: '已作业', value: res.data.wrkQty}, 
 | 
                                                {name: '未作业', value: res.data.totalQty-res.data.wrkQty-res.data.lackQty}, 
 | 
                                                {name: '库存不足', value: res.data.lackQty}, 
 | 
                                            ] 
 | 
                                        } 
 | 
                                    ] 
 | 
                                }); 
 | 
                            } 
 | 
                        }); 
 | 
                    }); 
 | 
                } else if (res.code === 403){ 
 | 
                    top.location.href = baseUrl+"/"; 
 | 
                }else { 
 | 
                    layer.msg(res.msg, {icon: 2}); 
 | 
                } 
 | 
            } 
 | 
        }) 
 | 
    } 
 | 
  
 | 
    layDate.render({ 
 | 
        elem: '.layui-laydate-range' 
 | 
        ,type: 'datetime' 
 | 
        ,range: true 
 | 
    }); 
 | 
}); 
 |