在提交前,我如果新增或修改了设备编码,我想任务编码会自动生成一个由输入的设备编码+当天日期+序号的默认值,然后再点击提交存到数据库中(之所以没有直接写公式在单元格,是因为他在提交后才生效,就导致每次插入数据库的时候都会有一条空的任务编号的数据)。 求求各位大佬说详细点,用了各种方式,找了AI帮忙写代码,但没什么用,主要是没有JS基础 就很难受,下面是ai生成的 放在了设备编码单元格-文本控件-时间-编辑结束后 // 设备编码单元格编辑结束事件 // 假设设备编码所在单元格为B4,任务编码所在单元格为G4 var deviceCodeCell = contentPane.getCell("B4"); var taskCodeCell = contentPane.getCell("G4"); // 生成唯一序号的方法(简化版,实际应用中可能需要更复杂的逻辑) var generateSequence = function() { // 这里可以使用更复杂的逻辑,比如从数据库获取当前最大序号 // 暂时返回固定值,您可以根据需要修改 return "001"; }; // 给设备编码单元格绑定编辑结束事件 deviceCodeCell.on("afterEdit", function() { // 获取设备编码单元格的值 var deviceCode = this.getValue();
// 如果设备编码不为空才生成任务编码 if (deviceCode && deviceCode !== "") { // 获取当前日期并格式化为yyyyMMdd格式 var today = new Date(); var year = today.getFullYear(); var month = today.getMonth() + 1; // 月份从0开始,所以加1 var day = today.getDate();
// 补全月份和日期为两位数 month = month < 10 ? "0" + month : month; day = day < 10 ? "0" + day : day;
var dateStr = year + "" + month + "" + day;
// 获取序号 var sequence = generateSequence();
// 拼接任务编码 var taskCode = deviceCode + "-" + dateStr + "-" + sequence;
// 设置任务编码到对应单元格 taskCodeCell.setValue(taskCode);
// 刷新单元格显示 taskCodeCell.refresh(); } else { // 如果设备编码为空,清空任务编码 taskCodeCell.setValue(""); taskCodeCell.refresh(); } }); // 页面加载完成后,如果设备编码已有值,初始化任务编码 contentPane.on("afterLoad", function() { var deviceCode = deviceCodeCell.getValue(); if (deviceCode && deviceCode !== "") { // 触发一次编辑结束事件来生成任务编码 deviceCodeCell.fireEvent("afterEdit"); } }); |
0
|
|