请上传宽度大于 1200px,高度大于 164px 的封面图片
    调整图片尺寸与位置
    滚轮可以放大缩小图片尺寸,按住图片拖动可调整位置,多余的会自动被裁剪掉
取消
Kennethq(uid:3010035)
职业资格认证:尚未取得认证
  • 目前已经实现 设备编码变的时候任务编码会跟着变,但是想设置成如果有人修改了任务编号,那么后面设备编码再变的时候任务编码不会改变 请问可以怎么实现
  • 在提交前,我如果新增或修改了设备编码,我想任务编码会自动生成一个由输入的设备编码+当天日期+序号的默认值,然后再点击提交存到数据库中(之所以没有直接写公式在单元格,是因为他在提交后才生效,就导致每次插入数据库的时候都会有一条空的任务编号的数据)。求求各位大佬说详细点,用了各种方式,找了AI帮忙写代码,但没什么用,主要是没有JS基础 就很难受,下面是ai生成的  放在了设备编码单元格-文本控件-时间-编辑结束后// 设备编码单元格编辑结束事件计划初版-测试.zip// 假设设备编码所在单元格为B4,任务编码所在单元格为G4var 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");    }});
  • 任务编码想由图中另外三个字段自动组成,其中前两个可以编辑,创建时间由数据库自动生成
  • 已经入图片那样设置,但是创建时间会全部改变,希望的是有两个字段:创建时间在第一次新建或导入的时候自动生成,之后数据如果修改或者更新,在更新时间上显示,创建时间不发生变化。后面的数据更新不覆盖元数据 而是新增数据 
  • 因为物料编码取得是另一个数据集里的,我现在要根据物料编码取待检结存,这样写可以吗然后待检结存数据集查出来已经是根据物料编码区分的了
  • 对选中数据进行删除,不是在数据库删除,在填报的自定义按钮中添加一个逻辑删除,点击后界面的字段变为是或否,最后提交数据库的值发生变化。求求不要直接甩文档,两步拆开我也明白,把复选框加上在删除啥的就不会了
  • 使用填报自定义按钮,对选中对象进行逻辑删除,是否删除单元格显示 “已删除”,否则为空
  • 现在要把计划下发按钮获取到的数据存到不同的表,该如何实现
  • 要用填报自带的按钮去下发不同表该怎么操作
  • 在对数据复选后,获取当前行的数据,下发到别的数据库表 console.log('cesi-----------')//获取当前值var boxes = _g().getWidgetsByName("box");console.log('查看-----------',boxes);//获取当前页的复选按钮控件数组var selectedRows = ;console.log('查看-----------',selectedRows)if (typeof(boxes) != "undefined") {for (i = 0; i < boxes.length; i++) { if (boxes.selected()) { selectedRows.push(boxes.options.location); //如果控件大于1个,则遍历判断是否选中,将选中的控件所在的单元格编号塞进数组中 } }} else { if (boxes.selected()) { selectedRows.push(boxes.options.location); //如果控件只有1个,则直接判断是否选中,选中的话把单元格编号塞进数组中 }}console.log('查看-----------',selectedRows)// 转义函数:处理SQL中的单引号等特殊字符function escapeSql(str) {    if (str === null || str === undefined) return '';    return String(str).replace(/'/g, "''"); // 将单引号替换为两个单引号避免SQL语法错误}// 2. 定义目标表(按设备名称分类)var tableMap = {    "成型机": "plan_production_schedule_cx",    "硫化机": "plan_production_schedule_lh"};// 3. 遍历选中行,分类处理(从0开始遍历所有选中行)for (var i = 0; i < selectedRows.length; i++) {    var rowIndex = selectedRows; // 选中行的索引    // 4. 获取当前行数据(修复对象语法,添加逗号分隔)    var rowData = {        "equipment_code": escapeSql(FR.cellStr(rowIndex, 1)),  // 第2列:设备编码        "equipment_name": escapeSql(FR.cellStr(rowIndex, 2)),  // 第3列:设备名称        "work_team_code": escapeSql(FR.cellStr(rowIndex, 3)),  // 第4列:班组编码        "work_team_name": escapeSql(FR.cellStr(rowIndex, 4)),  // 第5列:班组名称        "work_team_time": escapeSql(FR.cellStr(rowIndex, 5)),  // 第6列:班次        "plan_code": escapeSql(FR.cellStr(rowIndex, 6)),       // 第7列:任务编号        "status": escapeSql(FR.cellStr(rowIndex, 7)),          // 第8列:任务状态        "process_order": escapeSql(FR.cellStr(rowIndex, 8)),   // 第9列:生产顺序号        "product_code": escapeSql(FR.cellStr(rowIndex, 9)),    // 第10列:物料编码        "product_name": escapeSql(FR.cellStr(rowIndex, 10)),   // 第11列:物料名称        "product_spec": escapeSql(FR.cellStr(rowIndex, 11)),   // 第12列:规格        "qty": escapeSql(FR.cellStr(rowIndex, 12)),            // 第13列:数量        "unit": escapeSql(FR.cellStr(rowIndex, 13)),           // 第14列:单位        "start_time": escapeSql(FR.cellStr(rowIndex, 14)),     // 第15列:计划开始时间        "end_time": escapeSql(FR.cellStr(rowIndex, 15)),       // 第16列:计划结束时间        "stock_out_time_of_next_process": escapeSql(FR.cellStr(rowIndex, 16)), // 第17列:下工序缺料时间点        "importance": escapeSql(FR.cellStr(rowIndex, 17)),     // 第18列:重要程度        "formula_code": escapeSql(FR.cellStr(rowIndex, 18)),   // 第19列:指定配方编码        "formula_version": escapeSql(FR.cellStr(rowIndex, 19)), // 第20列:指定配方版本        "process_method_code": escapeSql(FR.cellStr(rowIndex, 20)), // 第21列:指定工艺编码        "process_method_version": escapeSql(FR.cellStr(rowIndex, 21)) // 第22列:指定工艺版本    };    // 5. 判断设备类型(使用equipment_name字段,修复之前的"设备编号"错误)    var deviceName = rowData.equipment_name;    var targetTable = tableMap;    if (!targetTable) {        FR.Msg.alert("提示", `设备类型【${deviceName}】无匹配目标表,跳过该行!`);        continue;    }    // 6. 拼接SQL(修复VALUES部分的逗号缺失问题)    var sql = `        INSERT INTO ${targetTable} (            equipment_code, equipment_name, work_team_code, work_team_name, work_team_time,             plan_code, status, process_order, product_code, product_name, product_spec,             qty, unit, start_time, end_time, stock_out_time_of_next_process, importance,             formula_code, formula_version, process_method_code, process_method_version        ) VALUES (            '${rowData.equipment_code}',            '${rowData.equipment_name}',            '${rowData.work_team_code}',            '${rowData.work_team_name}',            '${rowData.work_team_time}',            '${rowData.plan_code}',            '${rowData.status}',            '${rowData.process_order}',            '${rowData.product_code}',            '${rowData.product_name}',            '${rowData.product_spec}',            '${rowData.qty}',            '${rowData.unit}',            '${rowData.start_time}',            '${rowData.end_time}',            '${rowData.stock_out_time_of_next_process}',            '${rowData.importance}',            '${rowData.formula_code}',            '${rowData.formula_version}',            '${rowData.process_method_code}',            '${rowData.process_method_version}'        )    `;    // 7. 执行SQL    try {        FR.remoteEvaluate({            sql: sql,            dbLink: "服务器1(计划)" // 确保连接名与设计器配置一致        });        FR.Msg.alert("提示", `第 ${rowIndex + 1} 行数据已下发到【${targetTable}】`);    } catch (e) {        FR.Msg.alert("错误", `第 ${rowIndex + 1} 行下发失败:${e.message}`);        console.error("SQL执行错误:", e, "SQL语句:", sql); // 控制台打印详细错误    }}FR.Msg.alert("完成", "数据下发处理完成!");

106

1

106

10

个人成就
内容被浏览3,499
加入社区343天
返回顶部