自动化立体仓库 - WMS系统
chen.llin
昨天 12067f657bc3dc169a7a466e433374368e8daf73
src/main/webapp/static/js/orderPakin/order.js
@@ -180,7 +180,88 @@
                form.val('editForm', expTpe);
                if (expTpe) {
                    $('#orderNo').attr("disabled", "disabled");
                    // 修改订单时,不显示越库按钮(因为越库订单创建后就完成了,不会有中间状态)
                    $('#crossDockItem').hide();
                } else {
                    // 新增订单时,显示越库按钮,默认不勾选
                    $('#crossDockItem').show();
                    // 默认隐藏出库订单类型选择器
                    $('#outboundDocTypeItem').hide();
                }
                // 先渲染 switch,确保 LayUI 正确初始化
                form.render('switch');
                // 初始化出库订单类型选择器
                var outboundDocTypeData = [];
                $.ajax({
                    url: baseUrl + "/docType/list/auth",
                    headers: { 'token': localStorage.getItem('token') },
                    data: { limit: 9999, pakout: 1 },
                    method: 'POST',
                    async: false,
                    success: function (res) {
                        if (res.code === 200) {
                            // 转换为 xmSelect 需要的格式
                            res.data.records.forEach(function (item) {
                                outboundDocTypeData.push({
                                    name: item.docName,
                                    value: item.docId
                                });
                            });
                        } else {
                            layer.msg(res.msg, { icon: 2 });
                        }
                    }
                });
                var outboundDocTypeXmSelect = xmSelect.render({
                    el: '#outboundDocTypeSelect',
                    radio: true,
                    clickClose: true,
                    filterable: true,
                    model: {
                        icon: 'hidden',
                        label: {
                            type: 'text',
                        }
                    },
                    data: outboundDocTypeData,
                    initValue: []
                });
                // 切换出库订单类型选择器的显示/隐藏
                function toggleOutboundDocTypeSelector(show) {
                    if (show) {
                        // 勾选越库订单时,显示出库订单类型选择器
                        $('#outboundDocTypeItem').show();
                        console.log('显示出库订单类型选择器');
                    } else {
                        // 取消勾选时,隐藏出库订单类型选择器
                        $('#outboundDocTypeItem').hide();
                        outboundDocTypeXmSelect.setValue([]);
                        console.log('隐藏出库订单类型选择器');
                    }
                }
                // 监听 switch 变化,控制出库订单类型选择器的显示/隐藏
                // 注意:必须在 form.render 之后注册监听器
                form.on('switch(isCrossDock)', function(data){
                    var isChecked = data.elem.checked;
                    console.log('越库订单开关变化,值:', isChecked, '元素:', data.elem);
                    toggleOutboundDocTypeSelector(isChecked);
                });
                // 初始化时检查 switch 状态(以防页面刷新后状态不一致)
                // 使用 setTimeout 确保 DOM 已完全渲染
                setTimeout(function() {
                    var initialCrossDockState = $('#isCrossDock').is(':checked') ||
                                                $('#isCrossDock').prop('checked') ||
                                                ($('#isCrossDock').next('.layui-form-switch').hasClass('layui-form-onswitch'));
                    console.log('初始化检查越库订单状态:', initialCrossDockState);
                    if (initialCrossDockState) {
                        toggleOutboundDocTypeSelector(true);
                    }
                }, 100);
                // 初始化业务时间日期选择器
                layDate.render({
                    elem: '#orderTime',
@@ -254,7 +335,33 @@
                            return false;
                        }
                    }
                    // 获取越库订单开关状态(多种方式检测,确保准确性)
                    var isCrossDockChecked = $('#isCrossDock').is(':checked') ||
                                            $('#isCrossDock').prop('checked') ||
                                            data.field.isCrossDock === 'ON' ||
                                            data.field.isCrossDock === true ||
                                            data.field.isCrossDock === 'on';
                    console.log('提交越库订单状态,isCrossDock:', isCrossDockChecked, '原始值:', data.field.isCrossDock, 'DOM checked:', $('#isCrossDock').is(':checked'));
                    // 获取出库订单类型ID
                    var outboundDocTypeId = null;
                    if (isCrossDockChecked) {
                        // 检查出库订单类型选择器是否可见
                        if (!$('#outboundDocTypeItem').is(':visible')) {
                            console.warn('出库订单类型选择器未显示,但越库订单已勾选');
                        }
                        var outboundDocTypeValue = outboundDocTypeXmSelect.getValue();
                        console.log('出库订单类型选择器值:', outboundDocTypeValue);
                        if (!outboundDocTypeValue || outboundDocTypeValue.length === 0 || !outboundDocTypeValue[0]) {
                            layer.msg('请选择出库订单类型', { icon: 2 });
                            return false;
                        }
                        outboundDocTypeId = Number(outboundDocTypeValue[0].value);
                        console.log('出库订单类型ID:', outboundDocTypeId);
                    }
                    layer.load(2);
                    $.ajax({
                        url: baseUrl + "/order/pakin/order/form/" + (isExpAdd ? "add" : "modify") + "/auth",
                        headers: { 'token': localStorage.getItem('token') },
@@ -264,6 +371,8 @@
                            orderNo: data.field.orderNo,
                            cstmrName: cstmrXmSelect.getValue()[0] ? cstmrXmSelect.getValue()[0].name : null,
                            orderTime: data.field.orderTime,
                            isCrossDock: isCrossDockChecked,
                            outboundDocType: outboundDocTypeId,
                            orderDetlPakinList: nList
                        }),
                        contentType: 'application/json;charset=UTF-8',