Skip to content

单号生成器

getDocumentNo

通过后台配置的业务单号生成规则生成单据编号。

语法

js
getDocumentNo(payload, options, callBack)

参数

参数名类型必填说明
payloadObject业务参数
optionsObject扩展配置参数
callBackFunction回调集合

payload 参数说明

参数名类型必填说明
config_codestring单号配置标识 KEY
biz_datestring单据业务日期
at_idstring账套 ID

options 参数说明

参数名类型必填默认值说明
retrynumber3失败重试次数;设为 0 则不重试
alert_titlestring系统繁忙内置弹窗标题
alert_textstring系统繁忙,请稍候重试内置弹窗提示文案
alert_offbooleanfalse是否关闭内置弹窗;true = 不弹窗

callBack 参数说明

参数名类型必填说明
getDataFunction获取回调数据
successFunction成功回调(需自行处理返回数据)
errorFunction失败回调
completeFunction完成回调

示例

基础用法
js
// 业务参数
var payload = {
    config_code: "SALES_ORDER", // 单号配置标识
    biz_date: "2025-02-02", // 单据业务日期
    at_id: "1001" // 账套 ID
};

// 回调方法
var callBack = {
    getData: function (res) {
        console.log("单号生成成功:", res);
    },
    error: function (e) {
        console.log("失败", e);
    },
    complete: function (e) {
        console.log("完成", e);
    }
};

// 调用生成单号
var orderCode = getDocumentNo(payload, {}, callBack);
console.log("生成的单号:", orderCode);
自定义重试次数
js
var payload = {
    config_code: "PURCHASE_ORDER",
    biz_date: "2025-02-02",
    at_id: "1001"
};

var options = {
    retry: 5,
    alert_title: "生成单号失败",
    alert_text: "单号生成失败,正在重试...",
    alert_off: false
};

var callBack = {
    success: function(data) {
        console.log("单号生成成功:", data);
        setValueById("document_no", data.document_no);
    }
};

getDocumentNo(payload, options, callBack);
静默模式(关闭内置弹窗,自行处理异常提示)
js
var payload = {
    config_code: "INVENTORY_CHECK",
    biz_date: "2025-02-02",
    at_id: "1001"
};

var options = {
    retry: 0,
    alert_off: true
};

var callBack = {
    success: function(data) {
        console.log("单号生成成功:", data);
        setValueById("document_no", data.document_no);
    },
    error: function(error) {
        console.log("单号生成失败:", error);
        message({
            type: "error",
            text: "单号生成失败:" + error.message
        });
    }
};

getDocumentNo(payload, options, callBack);
表单保存场景(不存在单号则自动生成)
js
// 保存按钮点击事件
function btn_save() {
    var document_no = getValueById("document_no");

    if (!document_no) {
        var payload = {
            config_code: "SALES_ORDER",
            biz_date: getDateVal("biz_date", "yyyy-MM-dd"),
            at_id: getValueById("at_id")
        };

        var options = {
            retry: 3,
            alert_off: false
        };

        var call_back = {
            success: function(data) {
                setValueById("document_no", data.document_no);
                act_saveData();
            },
            error: function(error) {
                console.log("单号生成失败:", error);
            }
        };
        getDocumentNo(payload, options, call_back);
    } else {
        // 已有单号,直接执行保存
        act_saveData();
    }
}

// 执行单据保存
function act_saveData() {
    var saveData = {
        document_no: getValueById("document_no"),
        customer_id: getValueById("customer_id"),
        total_amount: getValueById("total_amount")
    };

    runCommand(getPageId(), "SAVE_SALES_ORDER", saveData, {}, {}, {
        getData: function() {
            message({
                type: "success",
                text: "保存成功"
            });
        }
    });
}

返回值说明

成功回调 data 对象字段:

属性名类型说明
document_nostring最终生成单据编号
config_codestring单号配置 KEY
biz_datestring传入的单据日期
at_idstring传入的账套 ID

注意事项

  1. config_code 需要提前在后台系统完成配置,否则无法生成单号;
  2. biz_date 推荐统一使用 yyyy-MM-dd 标准日期格式;
  3. at_id 为账套标识,一般取自当前登录环境账套信息;
  4. 默认失败自动重试 3 次,可根据业务场景调整 retry 参数;
  5. 设置 alert_off:true 可关闭系统内置弹窗,由开发者自定义异常提示;
  6. 业务保存前建议判断单号是否存在,避免重复调用生成接口。

基于 MIT 许可发布