自动化立体仓库 - WMS系统
whycq
2024-10-16 405e94c5d08e89c9bf2bd0820d39ceeaa049211d
src/main/webapp/static/js/order/order.js
@@ -1,5 +1,6 @@
var insTbCount = 0;
var admin;
var insTb
layui.config({
    base: baseUrl + "/static/layui/lay/modules/"
}).use(['layer', 'form', 'table', 'util', 'admin', 'xmSelect', 'laydate'], function () {
@@ -35,7 +36,7 @@
    })
    // 渲染表格
    var insTb = table.render({
    insTb = table.render({
        elem: '#order',
        url: baseUrl+'/order/head/page/auth',
        headers: {token: localStorage.getItem('token')},
@@ -43,12 +44,25 @@
        cellMinWidth: 100,
        cols: [[
            {type: 'numbers'},
            {field: 'defNumber', align: 'center', title: '操作系统号', hide: false, width: 120},
            {field: '操作单据', align: 'center', title: '操作单据', hide: true},
            {field: '操作类型', align: 'center', title: '操作类型', hide: true},
            {field: 'orderNo', title: '单据编号', templet: '#orderNoTpl'},
            {field: 'docType$', align: 'center', title: '类型',  minWidth: 160, width: 160},
            //{field: 'itemName', align: 'center', title: '核算主体'},
            {field: 'docType$', align: 'center', title: '单据类型'},
            //{field: 'defNumber', align: 'center', title: '业务类型'},
            //{field: 'postFee', align: 'center', title: '总数量',  minWidth: 130, width: 130},
            {align: 'center', title: '明细', toolbar: '#tbLook', minWidth: 160, width: 160},
            {field: 'createTime$', title: '创建时间', minWidth: 200, width: 200},
            {field: 'createTime$', title: '创建时间'},
            {field: 'shipCode', align: 'center',title: '制单人', hide: false},
            {field: 'settle$', align: 'center', title: '状态', templet: '#settleTpl',  minWidth: 160, width: 160},
            {field: 'memo', align: 'center',title: '备注', hide: true},
            {field: 'orderTime', align: 'center',title: '单据日期', hide: true},
            {field: 'cstmrName', align: 'center',title: '供应商/客户编码', hide: true},
            {field: 'tel', align: 'center',title: '仓库', hide: true},
            {field: 'operMemb', align: 'center',title: '出入库类别', hide: true},
            {field: 'salesman', align: 'center',title: '部门', hide: true},
            {align: 'center', title: '操作', toolbar: '#operate', width: 180}
        ]],
        request: {
@@ -90,6 +104,10 @@
        $("#importExcel").trigger("click");
    });
     $("#orderCheckBtn").click(function () {
            $("#importExcel2").trigger("click");
        });
    // 工具条点击事件
    table.on('tool(order)', function (obj) {
        var data = obj.data;
@@ -102,6 +120,8 @@
            doDel(data.id);
        } else if (layEvent === 'complete') {
            doModify(data.id, 4);
        } else if (layEvent === 'report'){
            doReport(data.id);
        } else if (layEvent === 'look') {
            var $a = $(obj.tr).find('a[lay-event="look"]');
            var offset = $a.offset();
@@ -110,7 +130,7 @@
            layer.open({
                type: 1,
                title: false,
                area: '820px',
                area: '1100px',
                offset: [top + 'px', (left - 530 + $a.outerWidth()) + 'px'],
                shade: .01,
                shadeClose: true,
@@ -130,7 +150,7 @@
                            {type: 'numbers'},
                            {field: 'matnr', title: '商品编码', width: 160},
                            {field: 'maktx', title: '商品名称', width: 160},
                            {field: 'batch', title: '序列码'},
                            //{field: 'batch', title: '批号'},
                            {field: 'anfme', title: '数量'},
                            {field: 'qty', title: '作业数量', style: 'font-weight: bold'},
                            // {field: 'unit', title: '单位'},
@@ -141,7 +161,12 @@
                            // },
                            // {field: 'inQty', title: '已入库量'},
                            // {field: 'color', title: '颜色'},
                            {field: 'specs', title: '规格'}
                            //{field: 'specs', title: '规格型号'},
                            {field: 'unit', title: '计量单位'},
                            //{field: 'manu', title: '行号'},
                            {field: 'threeCode', title: '销售单号'},
                            {field: 'deadTime', title: '自由项'},
                            {field: 'processSts$', title: '工序'}
                        ]],
                        request: {
                            pageName: 'curr',
@@ -168,13 +193,14 @@
        }
    });
    // 显示表单弹窗
    function showEditModel(expTpe) {
        admin.open({
            type: 1,
            title: (expTpe ? '修改' : '添加') + '单据',
            content: $('#editDialog').html(),
            area: '1300px',
            area: '1600px',
            success: function (layero, dIndex) {
                $(layero).children('.layui-layer-content').css('overflow', 'visible');
                var isExpAdd = !expTpe;
@@ -231,25 +257,56 @@
                    headers: {token: localStorage.getItem('token')},
                    data: xxDataList,
                    page: true,
                    height: '350px;',
                    //height: '350px;',
                    cellMinWidth: 100,
                    css: [ // 设置单元格样式
                        // 取消默认的溢出隐藏,并设置适当高度
                        '.layui-table-cell{height: 50px; line-height: 40px;}',
                        '.layui-table-cell .layui-colorpicker{width: 38px; height: 38px;}',
                        '.layui-table-cell select{height: 36px; padding: 0 5px;}'
                    ].join(''),
                    cols: [[
                        {type: 'numbers', title: '#'},
                        {field: 'matnr', title: '商品编码', width: 160},
                        {field: 'maktx', title: '商品名称', width: 200},
                        {field: 'maktx', title: '商品名称', width: 160},
                        {field: 'batch', title: '序列码', edit: true},
                        {field: 'specs', title: '规格'},
                        {field: 'anfme', title: '数量(修改)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110},
                        {field: 'threeCode', title: '销售订单号(修改)', style: 'color: blue;font-weight: bold', edit: 'text', minWidth: 110, width: 110},
                        {field: 'deadTime', title: '销售订单行号(修改)', style: 'color: blue;font-weight: bold', edit: 'text', minWidth: 110, width: 110},
                        {field: 'processSts', title: '工序', templet: function (d) {
                            var select = `<select class="layui-select" name="processSts" data-state=${d.processSts} lay-filter="processStsSelect" data-value=${d.processSts} id=${d.id}>
                                            <option value="">选择状态</option>
                                            <option value="1">待加工</option>
                                            <option value="2">已加工</option>
                                            <option value="3">无需加工</option>
                                        </select>`;
                            return select;
                            }},
                        // {field: 'inQty', 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) {
                    done: function (res,curr, count) {
                        $(layero).find('.layui-table-view').css('margin', '0');
                        $(".layui-table-body").css('overflow','visible');
                        $(".layui-table-box").css('overflow','visible');
                        $(".layui-table-view").css('overflow','visible');
                        var tableElem = this.elem.next('.layui-table-view');
                        count || tableElem.find('.layui-table-header').css('overflow', 'auto');
                        layui.each(tableElem.find('select[name="processSts"]'), function (index, item) {
                            var elem = $(item);
                            elem.val(elem.data('state')).parents('div.layui-table-cell').css('overflow', 'visible');
                        });
                        form.render();//刷新表单
                    },
                    size: ''
                };
                if (!isExpAdd) {
                    $.ajax({
                        url: baseUrl+"/order/detl/all/auth?orderId=" + expTpe.id,
@@ -291,9 +348,24 @@
                        });
                    }
                });
                // 工具条点击事件
                form.on('select(processStsSelect)', function (obj) {
                    console.log(obj)
                    var id = obj.elem.id
                    var val = obj.value
                    for (let item of xxDataList) {
                        if (item.id == id) {
                            item.processSts = val
                        }
                    }
                });
                // 明细数据修改
                table.on('edit(formSSXMTable)', function (obj) {
                    let index = obj.tr.attr("data-index");
                    let index = 0;
                    for (let k in xxDataList) {
                        if (obj.data.id === xxDataList[k].id)
                            index = k
                    }
                    let data = xxDataList[index];
                    if (obj.field === 'anfme'){
                        let vle = Number(obj.value);
@@ -402,6 +474,40 @@
            layer.load(2);
            $.ajax({
                url: baseUrl+"/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 doReport(orderId) {
        layer.confirm('确定要上传单据吗?', {
            shade: .1,
            skin: 'layui-layer-admin'
        }, function (i) {
            layer.close(i);
            layer.load(2);
            $.ajax({
                url: baseUrl+"/order/report/auth",
                headers: {'token': localStorage.getItem('token')},
                data: {
                    orderId: orderId
@@ -565,7 +671,51 @@
    let res = JSON.parse(evt.target.responseText);
    if(res.code === 200) {
        layer.msg(res.msg, {icon: 1});
        tableReload();
        insTb.reload({page: {curr: 1}});
    } else {
        alert(res.msg);
        // layer.msg(res.msg, {icon: 2});
    }
}
function uploadFailed(evt) {
    let res = JSON.parse(evt.target.responseText);
    alert(res.msg);
    // layer.msg(res.msg, {icon: 2});
}
function upload2(obj){
    if(!obj.files) {
        return;
    }
    var file = obj.files[0];
    admin.confirm('确认导入 [' + file.name +'] 文件吗?', function (index) {
            layer.load(1, {shade: [0.1,'#fff']});
            var url = baseUrl + "/order/excel/import2/auth";
            var form = new FormData();
            form.append("file", file);
            let xhr = new XMLHttpRequest();
            xhr.open("post", url, true);
            xhr.setRequestHeader('token', localStorage.getItem('token'));
            xhr.onload = uploadComplete;
            xhr.onerror =  uploadFailed;
            xhr.onloadend = function () {
                layer.closeAll('loading');
            };
            // xhr.upload.onprogress = progressFunction;
            xhr.upload.onloadstart = function(){
                ot = new Date().getTime();
                oloaded = 0;
            };
            xhr.send(form);
        }, function(index){
        });
}
function uploadComplete(evt) {
    let res = JSON.parse(evt.target.responseText);
    if(res.code === 200) {
        layer.msg(res.msg, {icon: 1});
        insTb.reload({page: {curr: 1}});
    } else {
        alert(res.msg);
        // layer.msg(res.msg, {icon: 2});