自动化立体仓库 - WMS系统
chen.lin
2026-02-14 371462edc6b3ee1de97c235d4a019b544badda0d
src/main/webapp/static/js/task/task.js
@@ -1,4 +1,5 @@
var pageCurr;
var tableIns;
layui.config({
    base: baseUrl + "/static/layui/lay/modules/"
}).use(['table', 'laydate', 'form', 'admin'], function () {
@@ -9,11 +10,68 @@
    var form = layui.form;
    var admin = layui.admin;
    // 数据渲染
    tableIns = table.render({
    // AGV任务管理:工作状态用多选框(勾选多项),仅本页;用原生 checkbox 不经过 layui 美化,保证勾选与框内显示始终一致
    function updateTaskWrkStsFromCheckbox() {
        var ids = [], texts = [];
        $('#taskWrkStsCheckboxWrap input:checkbox:checked').each(function () {
            var $input = $(this);
            ids.push($input.val());
            var text = $input.data('text') || $input.closest('label').clone().children().remove().end().text().trim() || $input.val();
            texts.push(text);
        });
        $('input[name="wrk_sts"]').val(ids.join(','));
        $('#wrkSts\\$').val(texts.join(', '));
    }
    $(document).on('change', '#taskWrkStsCheckboxWrap input:checkbox', updateTaskWrkStsFromCheckbox);
    function initWrkStsDropdownThenTable() {
        $.ajax({
            url: baseUrl + '/basWrkStatusQueryAgv/auth',
            headers: {token: localStorage.getItem('token')},
            data: {condition: ''},
            method: 'POST',
            traditional: true,
            success: function (res) {
                var $wrap = $('#taskWrkStsCheckboxWrap');
                $wrap.empty();
                var defaultIds = {'7': true, '8': true, '9': true};
                if (res.code === 200 && res.data && res.data.length) {
                    res.data.forEach(function (item) {
                        var id = String(item.id);
                        var text = item.value || id;
                        var checked = defaultIds[id] ? ' checked' : '';
                        $wrap.append(
                            '<label class="task-wrksts-cb-label" style="display: inline-block; margin: 4px 12px 4px 0; cursor: pointer;"><input type="checkbox" value="' + id + '" data-text="' + (text.replace(/"/g, '&quot;')) + '"' + checked + '> ' + text + '</label>'
                        );
                    });
                    updateTaskWrkStsFromCheckbox();
                }
                // 点击输入框展开/收起下拉(不调用 autoShow,避免走全局逻辑)
                $('#wrkSts\\$').off('click').on('click', function () {
                    var $win = $('#taskWrkStsWindow');
                    $win.toggle();
                });
                var initialWhere = {};
                $.each($('#search-box [name]').serializeArray(), function () {
                    initialWhere[this.name] = this.value;
                });
                renderTaskTable(initialWhere);
            },
            error: function () {
                renderTaskTable({});
            }
        });
    }
    function renderTaskTable(initialWhere) {
        tableIns = table.render({
        elem: '#task',
        headers: {token: localStorage.getItem('token')},
        url: baseUrl + '/task/list/auth',
        where: initialWhere,
        page: true,
        limit: 15,
        limits: [15, 30, 50, 100, 200, 500],
@@ -35,8 +93,8 @@
            , {field: 'staNo$', align: 'center', title: '目标站', width: 120}
            , {field: 'locNo', align: 'center', title: '目标库位', width: 120}
            , {field: 'barcode', align: 'center', title: '条码', width: 110}
            , {field: 'errorMemo', align: 'center', title: '错误原因', width: 200}
            , {field: 'errorMemo2', align: 'center', title: '错误原因2', width: 200, hide: true}
            , {field: 'errorMemo', align: 'center', title: 'AGV回复报文', width: 200, hide: true}
            , {field: 'errorMemo2', align: 'center', title: 'AGV回复报文2', width: 200, hide: true}
            , {field: 'errorTime$', align: 'center', title: '错误时间', width: 160, hide: true}
            , {field: 'preHave', align: 'center', title: '先入品', hide: true}
            , {field: 'takeNone', align: 'center', title: '空操作', hide: true}
@@ -66,7 +124,10 @@
            pageCurr = curr;
            limit();
        }
    });
        });
    }
    initWrkStsDropdownThenTable();
    // 监听排序事件
    table.on('sort(task)', function (obj) {
@@ -225,6 +286,34 @@
                }, function () {
                });
                break;
            //  删除(单条)
            case 'delete':
                layer.confirm('确定要删除该条AGV任务吗?', {
                    title: '工作号:' + data.wrkNo,
                    shadeClose: true
                }, function (i) {
                    layer.close(i);
                    var loadIndex = layer.load(2);
                    $.ajax({
                        url: baseUrl + "/task/delete/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: {'ids[]': [data.id]},
                        traditional: true,
                        method: 'POST',
                        success: function (res) {
                            layer.close(loadIndex);
                            if (res.code === 200) {
                                layer.msg(res.msg || '删除成功', {icon: 1});
                                tableReload();
                            } else if (res.code === 403) {
                                top.location.href = baseUrl + "/";
                            } else {
                                layer.msg(res.msg, {icon: 2});
                            }
                        }
                    });
                });
                break;
        }
    });
@@ -278,7 +367,7 @@
            $.ajax({
                url: baseUrl + "/task/delete/auth",
                headers: {'token': localStorage.getItem('token')},
                data: {ids: ids},
                data: {'ids[]': ids},
                method: 'POST',
                success: function (res) {
                    layer.close(loadIndex);
@@ -452,6 +541,7 @@
});
function tableReload(child) {
    if (!tableIns) return;
    var searchData = {};
    $.each($('#search-box [name]').serializeArray(), function () {
        searchData[this.name] = this.value;