AcsTask.js 13.9 KB
layui.config({
    base: "/js/"
}).use(['form', 'element', 'vue', 'layer', 'laydate', 'jquery', 'table', 'hhweb', 'utils', 'Universal'], function () {
    var form = layui.form,
        layer = layui.layer,
        element = layui.element,
        laydate = layui.laydate,
        $ = layui.jquery,
        table = layui.table,
        hhweb = layui.hhweb,
        Universal = layui.Universal;
    
    var AreaName = 'agv';
    var TableName = 'AcsTask';
    
    var vm = new Vue({
        el: '#modifyForm'
    });
    
    var vmq = new Vue({
        el: '#panelSearch',
        data: {
        }
    });
    
    hhweb.Config = {
        'CreateTime': vm,
        'UpdateTime': vm,

        'qCreateTime': vmq,
        'qUpdateTime': vmq,
    };
    hhweb.InitUIClass();

    var SelectStation;

    var mainList = {
        Render: function () {
            var cols_arr = [[
                { checkbox: true, fixed: true }
                , { field: 'Id', width:80, sort: true, fixed: false, hide: false, title: 'id' }
                , { field: 'TaskNo', width: 160, sort: true, fixed: false, hide: false, title: '任务号', templet:"#TaskNo" }
                , { field: 'OrderNo', width: 160, sort: true, fixed: false, hide: false, title: '工作令' }
                , { field: 'TaskType', width: 120, sort: true, fixed: false, hide: false, title: '任务类型', templet: function (d) { return GetLabel('TaskType', 'Code', 'Name', d.TaskType) } }
                , { field: 'StartStation', width: 100, sort: true, fixed: false, hide: false, title: '出发地', templet: function (d) { return GetLabel('StartStation', 'Code', 'Name', d.StartStation) } }
                , { field: 'EndStation', width: 100, sort: true, fixed: false, hide: false, title: '目的地', templet: function (d) { return GetLabel('EndStation', 'Code', 'Name', d.EndStation) } }
                , { field: 'StartZone', width: 100, sort: false, fixed: false, hide: true, title: '出发区域' }
                , { field: 'CreateBy', width: 100, sort: true, fixed: false, hide: false, title: '发起人' }
                , { field: 'CreateTime', width: 150, sort: true, fixed: false, hide: false, title: '发起时间' }
                , { field: 'UpdateBy', width: 100, sort: true, fixed: false, hide: false, title: '执行人' }
                , { field: 'UpdateTime', width: 150, sort: true, fixed: false, hide: false, title: '执行时间' }
                , { field: 'ErrorMsg', width: 220, sort: false, fixed: false, hide: false, title: '故障信息' }
                , { field: 'ErrorCode', width: 80, sort: false, fixed: false, hide: true, title: '故障代码' }
                , { field: 'TaskAgv', width: 80, sort: false, fixed: false, hide: true, title: '执行小车' }
                , { field: 'TaskState', width: 80, sort: false, fixed: false, hide: true, title: '小车任务状态' }
                , { field: 'Status', width: 80, sort: false, fixed: false, hide: true, title: '任务状态' }
            ]];

            mainList.Table = table.render({
                elem: '#mainList'
                , url: "/" + AreaName + "/" + TableName + "/Load"
                , method: "post"
                , page: true //开启分页
                , cols: hhweb.ColumnSetting('mainList', cols_arr)
                , id: 'mainList'
                , limit: 20
                , limits: [20, 50, 100, 200, 500, 1000]
                , defaultToolbar: ['filter']
                , toolbar: '#toolbarTable'
                , height: 'full-1'
                , cellMinWidth: 80
                , size: 'sm'
                //, done: function (res) { }
                , done: function (res, curr, count) {
                    $(".ColorFormat").parent().parent().parent().css("background-color", "yellow");
                }
            });

            return mainList.Table;
        },
        Load: function () {
            if (mainList.Table == undefined) {
                mainList.Table = this.Render();
                return;
            }
            table.reload('mainList', {});
        }
    };
    
    //编辑
    var EditInfo = function (tabledata) {
        data = tabledata;
        vm.$set('$data', data);
        //表单修改时填充需修改的数据
        var list = {};
        $('.ClearSelector_' + TableName).each(function () {
            var selDom = ($(this));
            if ($(selDom)[0].name.search("q") == -1) {
                list[$(selDom)[0].name] = data[$(selDom)[0].name] + "";
            }
        });
        //表单修改时填充需修改的数据
        form.val('modifyForm', list);
    };

    var selfbtn = {
        //自定义按钮
        btnExcute: function () {
            var checkStatus = table.checkStatus('mainList');
            var count = checkStatus.data.length;
            if (count !== 1) {
                layer.alert("请选择一条任务数据!", { icon: 5, shadeClose: true, title: "错误信息" });
                return;
            }
            var data = checkStatus.data[0];
            if (!(data.StartStation == "" || data.StartStation == null || data.EndStation == "" || data.EndStation == null)) {
                layer.alert("选择的任务已经执行过!", { icon: 5, shadeClose: true, title: "错误信息" });
                return;
            }

            $("#SelectStation").html('');
            SelectStation = undefined;

            if (data.StartStation == "" || data.StartStation == null) {
                $("#StationTips").html("选择出发地");

                $.ajax({
                    url: "/agv/AcsTaskAssign/GetStartStation",
                    dataType: 'json',
                    type: 'post',
                    data: { tasktype: data.TaskType },
                    success: function (data) {
                        var html = '';
                        var lastzone = "";
                        for (var i = 0; i < data.data.length; i++) {
                            if (lastzone == "") {
                                html += '<div style="background-color:white;">';
                            }
                            else if (data.data[i].Zonename != lastzone) {
                                html += '</div>';
                                html += '<div style="background-color:white;">';
                            }
                            html += '<button type="button" class="layui-btn layui-btn-radius StartStation" data-zone="' + data.data[i].Zonename + '" data-code = "' + data.data[i].Code + '">' + data.data[i].Name + '</button>';
                            lastzone = data.data[i].Zonename;
                        }
                        html += '</div>';

                        $("#SelectStation").html(html);

                        $(".StartStation").on('click', function () {
                            SelectStation = $(this);
                            $(".layui-btn.StartStation.layui-btn-normal").toggleClass("layui-btn-normal");
                            $(this).toggleClass("layui-btn-normal");
                        });
                    }
                });
            }
            if (data.EndStation == "" || data.EndStation == null) {
                $("#StationTips").html("选择目的地");

                $.ajax({
                    url: "/agv/AcsTaskAssign/GetEndStation",
                    dataType: 'json',
                    type: 'post',
                    data: { startzone: data.StartZone },
                    success: function (data) {
                        var html = '';
                        var lastzone = "";
                        for (var i = 0; i < data.data.length; i++) {
                            if (lastzone == "") {
                                html += '<div style="background-color:white;">';
                            }
                            else if (data.data[i].Zonename != lastzone) {
                                html += '</div>';
                                html += '<div style="background-color:white;">';
                            }
                            html += '<button type="button" class="layui-btn layui-btn-radius EndStation" data-zone="' + data.data[i].Zonename + '" data-code = "' + data.data[i].Code + '">' + data.data[i].Name + '</button>';
                            lastzone = data.data[i].Zonename;
                        }
                        html += '</div>';

                        $("#SelectStation").html(html);

                        $(".EndStation").on('click', function () {
                            SelectStation = $(this);

                            $(".layui-btn.EndStation.layui-btn-normal").toggleClass("layui-btn-normal");
                            $(this).toggleClass("layui-btn-normal");
                        });
                    }
                });
            }

            layer.open({
                title: "确定执行此任务吗?",
                maxmin: false,
                type: 1,
                content: $('#SendTask'),
                btn: ["确定", "取消"],
                yes: function (index) {
                    if (SelectStation == undefined) {
                        layer.alert($("#StationTips").html(), { icon: 5, shadeClose: true, title: "错误信息" });
                        return;
                    }
                    if (data.StartStation == "") {
                        data.StartStation = $(SelectStation).data('code');
                    }
                    if (data.EndStation == "") {
                        data.EndStation = $(SelectStation).data('code');
                    }

                    var index1 = layer.load();
                    $.ajax({
                        url: "/agv/AcsTaskAssign/TaskSend",
                        type: "POST",
                        data: { entity: data },
                        dataType: "json",
                        success: function (result) {
                            layer.close(index1);
                            layer.close(index);
                            if (result.Status) {
                                layer.msg('执行成功', { icon: 6, shade: 0.4, time: 1000 });
                            } else {
                                layer.alert("执行失败:" + result.Message, { icon: 5, shadeClose: true, title: "错误信息" });
                            }

                            mainList.Load();
                        },
                        error: function (XMLHttpRequest, textStatus, errorThrown) {
                            layer.close(index1);
                            layer.close(index);
                            layer.alert(errorThrown, { icon: 2, shadeClose: true, title: ErrorTitle });
                        }
                    });
                },
                btn2: function (index) {
                    layer.close(index);
                }
            });
        },

        btnCancel: function () {
            var checkStatus = table.checkStatus('mainList');
            var count = checkStatus.data.length;
            if (count == 0) {
                layer.alert("至少选择一条任务数据!", { icon: 5, shadeClose: true, title: "错误信息" });
                return;
            }

            var data = checkStatus.data;
            layer.open({
                type: 0
                , title: false
                , closeBtn: 0
                , shade: 0.1
                , shadeClose: true
                , maxmin: false
                , content: "确定要删除任务吗?"
                , btn: ["确定", "取消"]
                , yes: function () {
                    var index = layer.load();
                    $.ajax({
                        url: "/agv/AcsTask/Cancel",
                        type: "post",
                        data: { ids: data.map(function (e) { return e.Id; }) },
                        dataType: "json",
                        success: function (result) {
                            layer.close(index);
                            if (result.Code == 200 && result.Status) {
                                layer.msg("操作成功!", { icon: 6, shade: 0.4, time: 1000 });
                                mainList.Load();//重载TABLE
                            }
                            else {
                                layer.alert(result.Message, { icon: 5, shadeClose: true, title: MessageContainer.ErrorInfo });
                            }
                        },
                        error: function (XMLHttpRequest, textStatus, errorThrown) {
                            layer.close(index);
                            layer.alert(errorThrown, { icon: 2, shadeClose: true, title: MessageContainer.ErrorInfo });
                        }
                    });
                }
                , btn2: function () {
                    layer.closeAll();
                    
                }
                , success: function (layero) {

                }
            });
        },
    };
    
    var selector = {
        'TaskType': {
            SelType: "FromUrl",
            SelFrom: "/agv/AcsTaskType/Load",
            SelModel: "TaskType",
            SelLabel: "Name",
            SelValue: "Code",
            Dom: [$("[name='qTaskType']"), $("[name='TaskType']")]
        },
        'StartStation': {
            SelType: "FromUrl",
            SelFrom: "/agv/AcsWorkstation/Load",
            SelModel: "StartStation",
            SelLabel: "Name",
            SelValue: "Code",
            Dom: [$("[name='qStartStation']"), $("[name='StartStation']")]
        },
        'EndStation': {
            SelType: "FromUrl",
            SelFrom: "/agv/AcsWorkstation/Load",
            SelModel: "EndStation",
            SelLabel: "Name",
            SelValue: "Code",
            Dom: [$("[name='qEndStation']"), $("[name='EndStation']")]
        },
    };
    
    var vml = new Array({
        vm: vm,
        vmq: vmq,
    });
    
    Universal.BindSelector(vml, selector);
    Universal.mmain(AreaName, TableName, vm, vmq, EditInfo, selfbtn, mainList);
});