ProductionOrder.js 14.1 KB
var action = null;

layui.config({
    base: "/js/",
    version: 111
}).use(['system'], function () {
    var form = layui.form,
        $ = layui.jquery,
        system = layui.system,
        u = new system.u(),
        table = layui.table,
        areaName = 'production',
        tableName = 'ProductionOrder';

    action = {
        rowData: null,

        addOptions: function () {            
            var options = {
                fromId: "#modifyForm form",
                url: `/${areaName}/${tableName}/Ins`,
                submit: "submit(fromAdd)",
                area: ["800px", "735px"],
                maxmin: false,
            }
            document.getElementById("requestDate").value = new Date().format("yyyy-MM-dd");
            app.methods.initTableDetail("", 20);
            app.methods.initTableBom("");
            document.getElementById("tableOne").click();
            return options;
        },

        editOptions: function (data) {
            var options = {
                fromId: "#modifyForm form",
                url: `/${areaName}/${tableName}/Upd`,
                submit: "submit(fromUpdate)",
                area: ["800px", "735px"],
                maxmin: false,
            }
            if (data.status > 10) {
                options.btn = ["关闭"];
                options.title = " - 仅供查看";
            } else {
                options.title = "";
            }
            return options;
        },

        deleteOptions: function () {
            var options = {
                url: `/${areaName}/${tableName}/DelByIds`,
                keyId: "id",
                refresh: true
            }
            return options;
        },

        queryOptions: function () {
            var options = {
                resetFrom: "form[lay-filter=listForm]",
                fromId: "listForm",
                urlExport: `/${areaName}/${tableName}/Export`,
                urlQuery: `/${areaName}/${tableName}/Load`,
                mainTable: app.data.tableIns
            }
            return options;
        },

        editBefore: function (data, callBack) {
            form.val("modifyForm", data);
            //console.log(data);
            document.getElementById("requestDate").value = data.requestDate.substring(0, 10);
            app.methods.initTableDetail(data.keys, data.status);
            document.getElementById("tableOne").click();
            //callBack是回调函数,如果editBefore有ajax 放在成功之后
            if (callBack != null) callBack();
        },

        editSaveBefore: function (data, callBack) {
            if (callBack != null) callBack();
        },

        addSaveBefore: function (data, callBack) {
            if (callBack != null) callBack();
        },

        rowClickOptions: function () {
            var options = {
                isDefault: true,
                targetTableId: app.data.tableElemDetail,
                tabfilter: "tableTabBody",
                tabId: 2,
                customFn: app.methods.initTableBom
            }
            return options;
        },

        selectProduct: function () {
            var height = 600;
            u.openPage({
                area: ["1100px", height + "px"],
                title: "选择产品",
                btn: ['选择', '关闭'],
                checkTableRowDataCount: 1,
                type: 2,
                yesCallBackFn: function (data, callBack) {
                    if (data.length > 0) {
                        document.getElementById("productCode").value = data[0].productCode;
                        document.getElementById("productName").value = data[0].productName;
                        var ajaxConfig = {
                            data: { productCode: data[0].productCode },
                            url: `/configure/BaseProcessProductRel/Load`,
                            success: function (result) {
                                if (u.successBefore(result)) return false;
                                if (result.Result.length > 0) {
                                    document.getElementById("processRouteKeys").value = result.Result[0].processHeadKeys;
                                    document.getElementById("processName").value = result.Result[0].processName;
                                    document.getElementById("lineCode").value = result.Result[0].lineCode;
                                }
                            }
                        };
                        u.ajax(ajaxConfig);
                    }
                    if (callBack != null) callBack();
                },
                content: `/configure/ProductHeader/Index?selectColKeyCustom=productCode&page=ProductionOrder&productCode=${document.getElementById("productCode").value}`,
            }, action)
        },

        btnComplete: function (sysU, toolbarId) {
            var checkStatus = {};
            if (!table.checkStatus) {
                checkStatus["data"] = [action.rowData];
            } else {
                checkStatus = table.checkStatus(toolbarId);
            }
            var selectRow = checkStatus.data.length;//选中的行数
            if (selectRow === 0 || selectRow > 1) {
                layer.alert("请选择一条数据", { icon: sysU.config.iconoError, shadeClose: true, title: "错误信息" });
                return false;
            }

            if (checkStatus.data[0].status == 10) {
                layer.confirm(`是否完成【${checkStatus.data[0].planCode}】工单编制?【完成后不能更改】`, function (index) {
                    var ajaxConfig = {
                        data: { planCode: checkStatus.data[0].planCode },
                        url: `/${areaName}/${tableName}/Complete`,
                        success: function (result) {
                            if (u.successBefore(result)) return false;
                            layer.msg("工单编制成功!", { icon: sysU.config.iconoOk, shade: 0.4, time: sysU.config.msgOpenTime });
                            action.actionSuccess("refresh");
                        }
                    };
                    u.ajax(ajaxConfig);
                    layer.close(index);
                });
            } else {
                layer.alert("只有初始状态才能完成工单编制!", { icon: sysU.config.iconoError, shadeClose: true, title: "错误信息" });
            }
        },

        //所有动作成功之后
        actionSuccess: (falg) => {
            if (falg === "add" || falg === "edit" || falg === "delete" || falg === "refresh" || falg === "upload") {
                app.data.tableIns.config.where = {};
                app.data.tableIns.config.page.curr = 1;
                app.data.tableIns.reload("mainList", {});
            }
        }
    }

    var app = {
        data: {
            cols: [[
                { checkbox: true, fixed: true },
                { field: "id", width: 80,  hide: true, title: "Id" },
                { field: "keys", width: 80, hide: true, title: "keys" },
                { field: "planCode", width: 150, title: "工单编号" },
                { field: "planName", width: 150, title: "工单名称" },
                { field: "productCode", width: 150, title: "产品编码" },
                { field: "productName", width: 150, title: "产品名称" },
                { field: "processRouteKeys", width: 150, hide: true, title: "工艺路线keys" },
                { field: "processName", width: 150, title: "工艺路线名称" },
                { field: "quantity", width: 80, title: "生产数量" },
                { field: "batchCode", width: 100, title: "批次号" },
                { field: "requestDate", width: 120, title: "需求日期", templet: function (d) { return d.requestDate.substring(0, 10) } },
                { field: "planStartTime", width: 150, title: "计划开始时间" },
                { field: "planEndTime", width: 150, title: "计划结束时间" },
                { field: "parentKeys", width: 100, hide: true, title: "父节点keys" },
                { field: "lineCode", width: 100, title: "线体编号" },
                { field: "status", width: 100, title: "单据状态", templet: function (d) { return d.status == 10 ? "初始" : d.status == 20 ? "已确认" : "未知" } },
                { field: "remark", width: 100, title: "备注" },

                { field: "createTime", width: 150,  title: "创建时间" },
                { field: "createBy", width: 150,  title: "创建用户" },
                { field: "updateTime", width: 150,  title: "更新时间" },
                { field: "updateBy", width: 150,  title: "更新用户" }
            ]],

            colsDetail: [[
                { field: "id", width: 80, hide: true, title: "Id" },
                { field: "bodyKeys", width: 80, hide: true, title: "bodyKeys" },
                { field: "proPlanHeadKeys", width: 80, hide: true, title: "proPlanHeadKeys" },
                { field: "workOrderCode", width: 200, title: "工单明细编号" },
                { field: "workOrderName", width: 200, title: "工单明细名称", edit: "text" },
                { field: "quantity", width: 100, title: "预计使用量" },
            ]],

            colsDetailNoEdit: [[
                { field: "id", width: 80, hide: true, title: "Id" },
                { field: "bodyKeys", width: 80, hide: true, title: "bodyKeys" },
                { field: "proPlanHeadKeys", width: 80, hide: true, title: "proPlanHeadKeys" },
                { field: "workOrderCode", width: 200, title: "工单明细编号" },
                { field: "workOrderName", width: 200, title: "工单明细名称" },
                { field: "quantity", width: 100, title: "预计使用量" },
            ]],

            colsBom: [[
                { checkbox: true, fixed: true },
                { field: "id", width: 80, hide: true, title: "Id" },
                { field: "bodyKeys", width: 80, hide: true, title: "bodyKeys" },
                { field: "proPlanHeadKeys", width: 80, hide: true, title: "proPlanHeadKeys" },
                { field: "proPlanDetailKeys", width: 80, hide: true, title: "proPlanDetailKeys" },
                { field: "materialCode", width: 120, title: "物料编码" },
                { field: "materialName", width: 120, title: "物料名称" },
                { field: "detailSN", width: 200, title: "detailSN", edit: "text" },
                { field: "spec", width: 80, title: "规格" },
                { field: "unit", width: 80, title: "单位" },
                { field: "quantity", width: 80, title: "预计使用量" },
            ]],

            colsBomNoEdit: [[
                { checkbox: true, fixed: true },
                { field: "id", width: 80, hide: true, title: "Id" },
                { field: "bodyKeys", width: 80, hide: true, title: "bodyKeys" },
                { field: "proPlanHeadKeys", width: 80, hide: true, title: "proPlanHeadKeys" },
                { field: "proPlanDetailKeys", width: 80, hide: true, title: "proPlanDetailKeys" },
                { field: "materialCode", width: 120, title: "物料编码" },
                { field: "materialName", width: 120, title: "物料名称" },
                { field: "detailSN", width: 200, title: "detailSN" },
                { field: "spec", width: 80, title: "规格" },
                { field: "unit", width: 80, title: "单位" },
                { field: "quantity", width: 80, title: "预计使用量" },
            ]],

            tableStatus: 0,
            tableIns: null,
            tableDetailIns: null,
            tableDetailBomIns: null,
            tableElem: "mainList",
            tableElemDetail: "mainListDetail",
            tableElemBom: "mainListBom",

            selectOption: {
                //返回的数据 用于后续操作
                selectData: {

                }
            }
        },
        methods: {
            initTable: function () {
                let options = {
                    elem: "#" + app.data.tableElem,
                    url: `/${areaName}/${tableName}/Load`,
                    cols: u.columnRecord(app.data.tableElem, app.data.cols),
                    toolbar: '#toolbarTable',
                }
                app.data.tableIns = u.initTable(options);
            },
            initTableDetail: function (keys, status) {
                app.data.tableStatus = status;
                let options = {
                    elem: "#" + app.data.tableElemDetail,
                    url: `/${areaName}/${tableName}/LoadDetail`,
                    cols: u.columnRecord(app.data.tableElem, status == 20 ? app.data.colsDetailNoEdit : app.data.colsDetail),
                    toolbar: '',
                    editExtend: function (value, field, data) {
                        u.ajax({
                            data: data,
                            loading: '',
                            url: `/${areaName}/${tableName}/UpdDetail`,
                        });
                    },
                    where: { keys: keys }
                }
                app.data.tableDetailIns = u.initTable(options);
            },
            initTableBom: function (obj) {
                let options = {
                    elem: "#" + app.data.tableElemBom,
                    url: `/${areaName}/${tableName}/LoadBom`,
                    cols: u.columnRecord(app.data.tableElem, app.data.tableStatus == 20 ? app.data.colsBomNoEdit : app.data.colsBom),
                    toolbar: '',
                    editExtend: function (value, field, data) {
                        u.ajax({
                            data: data,
                            loading: '',
                            url: `/${areaName}/${tableName}/UpdDetailBom`,
                        });
                    },
                    where: { bodyKeys: obj != "" ? obj.data.bodyKeys : "" }
                }
                app.data.tableDetailBomIns = u.initTable(options);
            },
            initFrom: function () {
                u.initSelect(app.data.selectOption);
            }
        },
        registerEvent: function () {

        },
        init: function () {
            app.methods.initTable();
            app.methods.initFrom();
            app.registerEvent();
        }
    };
    app.init();
});