自动化立体仓库 - WMS系统
chen.llin
2025-12-24 fecf9a8163a5563bc87f60405309eb4750a38504
src/main/webapp/static/js/orderPakinLog/order.js
@@ -1,7 +1,7 @@
var insTbCount = 0;
layui.config({
    base: baseUrl + "/static/layui/lay/modules/"
}).use(['layer', 'form', 'table', 'util', 'admin', 'laydate'], function () {
}).use(['layer', 'form', 'table', 'util', 'admin', 'laydate', 'element'], function () {
    var $ = layui.jquery;
    var layer = layui.layer;
    var form = layui.form;
@@ -10,6 +10,7 @@
    var admin = layui.admin;
    var layDate = layui.laydate;
    var laytpl = layui.laytpl;
    var element = layui.element;
    // 渲染搜索模板
    $.ajax({
@@ -50,7 +51,8 @@
            { 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 }
            { field: 'memo', align: 'center', title: '备注', hide: true },
            { align: 'center', title: '操作', toolbar: '#operate', width: 180 }
        ]],
        request: {
            pageName: 'curr',
@@ -92,6 +94,25 @@
            var offset = $a.offset();
            var top = offset.top;
            var left = offset.left;
            var hasChangeLog = data.hasChangeLog || false;
            var tabContent = '<div class="layui-tab layui-tab-brief" lay-filter="orderDetailTab">' +
                '<ul class="layui-tab-title">' +
                '<li class="layui-this">单据明细</li>';
            if (hasChangeLog) {
                tabContent += '<li>业务时间变更记录</li>';
            }
            tabContent += '</ul>' +
                '<div class="layui-tab-content" style="padding: 10px 0;">' +
                '<div class="layui-tab-item layui-show">' +
                '<table id="lookSSXMTable" lay-filter="lookSSXMTable"></table>' +
                '</div>';
            if (hasChangeLog) {
                tabContent += '<div class="layui-tab-item">' +
                    '<table id="changeLogTable" lay-filter="changeLogTable"></table>' +
                    '</div>';
            }
            tabContent += '</div></div>';
            layer.open({
                type: 1,
                title: false,
@@ -100,8 +121,9 @@
                shade: .01,
                shadeClose: true,
                fixed: false,
                content: '<table id="lookSSXMTable" lay-filter="lookSSXMTable"></table>',
                content: tabContent,
                success: function (layero) {
                    // 渲染单据明细表格
                    table.render({
                        elem: '#lookSSXMTable',
                        method: 'POST',
@@ -142,8 +164,54 @@
                        },
                        size: ''
                    });
                    // 标签切换事件
                    var changeLogTableRendered = false;
                    element.on('tab(orderDetailTab)', function(elem){
                        if (hasChangeLog && elem.index === 1 && !changeLogTableRendered) {
                            // 切换到变更记录标签时才查询(只查询一次)
                            changeLogTableRendered = true;
                            table.render({
                                elem: '#changeLogTable',
                                method: 'POST',
                                headers: { token: localStorage.getItem('token') },
                                url: baseUrl + '/orderTimeChangeLog/list/byOrderId/auth',
                                where: {
                                    orderId: data.id
                                },
                                page: false,
                                cellMinWidth: 100,
                                cols: [[
                                    { type: 'numbers' },
                                    { field: 'oldOrderTime', title: '原业务时间', width: 180 },
                                    { field: 'newOrderTime', title: '新业务时间', width: 180 },
                                    { field: 'memo', title: '备注', minWidth: 200 },
                                    { field: 'createByName', title: '操作人', width: 120 },
                                    { field: 'createTime$', title: '变更时间', width: 180 }
                                ]],
                                parseData: function (res) {
                                    return {
                                        'code': res.code,
                                        'msg': res.msg,
                                        'count': res.data ? res.data.length : 0,
                                        'data': res.data || []
                                    }
                                },
                                response: {
                                    statusCode: 200
                                }
                            });
                        }
                    });
                }
            });
        } else if (layEvent === 'editOrderTime') {
            // 检查是否已月结
            if (data.monthlySettleId && data.monthlySettleId > 0) {
                layer.msg('该单据已月结,不能修改业务时间', { icon: 2 });
                return;
            }
            showEditOrderTimeDialog(data);
        }
    });
@@ -210,6 +278,73 @@
        })
    }
    // 显示修改业务时间弹窗
    function showEditOrderTimeDialog(data) {
        admin.open({
            type: 1,
            title: '修改业务时间',
            content: $('#editOrderTimeDialog').html(),
            area: '400px',
            success: function (layero, dIndex) {
                // 回显数据
                form.val('editOrderTimeForm', {
                    id: data.id,
                    orderTime: data.orderTime
                });
                // 初始化业务时间日期选择器(支持选择时分秒)
                layDate.render({
                    elem: '#orderTimeEdit',
                    type: 'datetime',
                    format: 'yyyy-MM-dd HH:mm:ss',
                    value: data.orderTime || '',
                    btns: ['clear', 'confirm'],
                    ready: function(date){
                        // 确保时分秒选择器显示
                        var layero = this.elem.next();
                        if(layero.length > 0) {
                            layero.find('.laydate-time-list').show();
                        }
                    }
                });
                // 表单提交事件
                form.on('submit(editOrderTimeSubmit)', function (formData) {
                    // 前端校验:检查新旧时间是否相同
                    var oldOrderTime = data.orderTime;
                    var newOrderTime = formData.field.orderTime;
                    if (oldOrderTime && oldOrderTime === newOrderTime) {
                        layer.msg('新业务时间与原业务时间相同,无需修改', { icon: 2 });
                        return false;
                    }
                    layer.load(2);
                    $.ajax({
                        url: baseUrl + "/order/pakinLog/order/update/orderTime/auth",
                        headers: { 'token': localStorage.getItem('token') },
                        data: {
                            id: formData.field.id,
                            orderTime: formData.field.orderTime,
                            memo: formData.field.memo || ''
                        },
                        method: 'POST',
                        success: function (res) {
                            layer.closeAll('loading');
                            if (res.code === 200) {
                                layer.close(dIndex);
                                insTb.reload({ page: { curr: 1 } });
                                layer.msg(res.msg, { icon: 1 });
                            } else if (res.code === 403) {
                                top.location.href = baseUrl + "/";
                            } else {
                                layer.msg(res.msg, { icon: 2 });
                            }
                        }
                    });
                    return false;
                });
            }
        });
    }
    layDate.render({
        elem: '.layui-laydate-range'
        , type: 'datetime'