14day,15day-BOM,回顾

本文详细介绍了BOM(浏览器对象模型),包括window对象的使用、窗口尺寸操作、弹出层功能(alert,prompt,confirm)、地址栏属性、浏览器历史、标签页管理以及相关事件处理,如onload、onresize和onscroll。

BOM

认识 BOM

  • 全名:Browser Object Model:浏览器对象模型
    =》私人:一整套操作浏览器的属性和方法
    =》注意:BOM 不是 js 给的,是浏览器给我们的
    =》BOM 的规则就是浏览器制造厂商给我们的
    =》利用 js 的语法去操作浏览器的相关内容

  • BOM 的顶级对象是 window

    • 所有和 BOM 相关的内容都是 window.xxxx
    • 在书写的时候,都可以省略 window 不写

浏览器的窗口尺寸

  • 浏览器的可视窗口的宽度和高度
    • 语法:
    1. window.innerWidth
      =》获取的是宽度
    2. window.innerHeight
      =》获取的是高度
      注意:获取到的是包含滚动条在内的尺寸

浏览器的弹出层

  • 浏览器设置了三种弹出层
1. alert:提示框
  • 语法:window.alert(“文本内容”);
  • 表现:有一段文本,和一个确认按钮
  • 返回值:没有
let res = alert("zd");
console.log(res); // undefined
2. prompt:输入框
  • 语法:window.prompt(“提示文本内容”);
  • 返回值:如果用户点击的是取消按钮,返回 null,如果点击的是确定,那就是输入的文本内容,如果什么都没输入,则返回一个空字符串
  • 表现:一个输入框然后有两个选择框(取消与确定)
let res2 = window.prompt("请输入年龄");
console.log(res2);
3. confirm:选择框
  • 语法:window.confirm(“文本内容”);
  • 表现:比输入框少了一个输入的区域,同样有两个选择按钮
  • 返回值:如果点击取消,返回 false,点击确定返回 true。
let res3 = window.confirm("今天zd很开心");
console.log(res3); // true/false
  • 共同点:
    • 都会阻断程序的继续执行(执行到弹出层时才会阻止代码执行,在弹出层之前的代码不受影响)
    • 直到用户操作为止
console.log(456);
setTimeout(function () {
  console.log(789);
}, 1000);
let res3 = window.confirm("今天zd很开心");
console.log(res3); // true/false
console.log(123);
// setTimeout(function(){
//   console.log(789);
// },1000)

浏览器的地址栏

  • 在 window 下有一个成员叫做 location 里面存储的都是和地址栏相关的内容
1. href:
  • 是一个可读写的属性
  • 读:
    • 语法:window.location.href;
    • 得到的就是当前页面的地址栏的完整信息
  • 写:
    • 语法:window.location.href = “值”
    • 作用:把当前地址栏修改
console.log(window.location.href);
let btn = document.querySelector("button");
// 跳转页面
btn.onclick = function () {
  window.location.href = "http://baidu.com";
};
2. reload()
  • 是一个方法,使用的时候需要加上()
  • 语法:window.location.reload();
  • 作用:把当前页面重新加载一次,刷新。
3. replace()
  • 语法:window.location.replace(URL);
  • 作用:将当前浏览器地址替换掉,调用这个方法的网页不会被写入浏览记录里面。
console.log(window.location.href);
let btn = document.querySelector("button");
// 跳转页面
btn.onclick = function () {
  window.location.href = "http://baidu.com";
  // window.location.reload();
  // window.location.replace("http://baidu.com")
};
console.log(window.location);

console.log(btn.toString());
console.log({}.toString());
// Array.prototype.toString = function(){
//   console.log(123);
//   return 456;
// }
console.log([1, 2, 3].toString());

let obj = {};
obj[btn] = 789;
console.log(obj[btn]);
console.log(obj);
console.log(obj[btn.toString()]);
console.log(obj["[object HTMLButtonElement]"]);

浏览器的历史记录

  • window 下有一个成员叫做 history,里面储存的都是和历史记录相关的信息
1. 历史回退
  • 语法:window.history.back();
  • 作用:回到上一个历史页面
  • 前提:您必须的有上一个页面,即当前页面是从某一个页面跳转过来的。
  • 等价于浏览器上的 ⬅️ 按钮
2. 历史前进
  • 语法:window.history.forward();
  • 作用:去到下一个页面
  • 前提:你必须得有一个下一个页面,当前页面是从某一个页面回退过来的
  • 等价于浏览器上的 ➡️ 按钮
3. 历史跳转
  • window.location.go(数字)
  • 作用:进行历史跳转,根据数组不同进行不同的跳转
  • 正整数:历史前进
  • 0:重新打开当前页面(刷新页面)
  • 负整数:历史回退

浏览器的标签页

  • 操作标签页的方法
1. open()
  • 语法:window.open(“地址”)
  • 作用:开启一个新的标签页并且打开指定的地址网页
2. close()
  • 语法:window.close()
  • 作用:关闭当前标签页
  • 注意:只能关闭用 open 方法打开的页面

浏览器的常见事件!!!

  • 由浏览器的行为触发的事件
1. onload
  • 语法:window.onload = function(){}
  • 时机:页面所有资源还在完毕后触发
  • 作用:当你把 js 代码书写在 head 内的时候,而且你还想要操作页面的元素,就需要 onload 事件。
  • 注意:除了整个页面有加载完毕事件,图片/视频/音频也都有。
2. onresize
  • 语法:window.onresize = function(){}
  • 时机:页面可是窗口大小改变的时候触发,不管是宽度还是高度,只要改变了就会触发
  • 作用:
    • 响应式布局
    • 在移动端判断横屏

拓展
获取当前浏览器的详细信息

  • window.navigator
3. onscroll
  • 语法:window.οnscrοll= function(){}
  • 时机:页面滚动的时候触发
  • 注意:不管是横向的还是竖向的,主要滚动了就会触发

浏览器卷去的尺寸

能够知道滚动了多少距离

  • 分成了卷去的高度和宽度

卷去的高度

  • 语法:document.documentElement.scrollTop
    =>当页面有 DOCTYPE 标签时使用
    document.body.scrollTop
    =>当页面没有 DOCTYPE 标签时使用

卷去的宽度

  • 语法:document.documentElement.scrollLeft
    =>当页面有 DOCTYPE 标签时使用
  • document.body.scrollLeft
    =>当页面没有 DOCTYPE 标签时使用

浏览器滚动到

  • 对浏览器的滚动条进行定位
    =》其实就是设置浏览器卷去的高度/宽度

  • scrollTo()

  • 根据不同的参数去决定不同的表现形式

  • 参数方案 1:
    =》传递数字
    =》语法:window.scrollTo(x,y)
    x 表示设置卷去的宽度
    y 表示设置卷去的高度

  • 注意:如果传递的是数字,则必须传递两个参数

  • 参数方案 2:
    =》传递一个对象数据类型
    =》语法:window.scroolTo({
    top:yyy,
    left:xxx,
    behavior:“smooth”
    })
    注意:如果传递一个对象可以只写一个值,同时可以直接设置平滑滚动,不需要额外的书写样式

获取尺寸合集
视口宽/高(不含滚动条)

  • document.documentElement.clientWidth
  • document.documentElement.clientHeight:
    视口宽/高(含滚动条)
  • window.innerWidth/innerHeight
    网页文档/元素 总宽/高或者叫滚动的高度/宽度
  • document.documentElement.scrollWidth
  • document.documentElement.scrollHeight
    网页被卷去的宽/高
  • document.documentElement.scrollTop
  • document.documentElement.scrollLeft
    屏幕的宽/高
  • window.screen.width
  • window.screen.height

以下是对你提到的这些属性的解释:(ai 解析)

document.documentElement.clientWidth:
返回当前文档根元素的可视宽度,即视口的宽度(包括滚动条)。
document.documentElement.clientHeight:

window.innerWidth:
返回 当前 窗口的视口(viewport)宽度,即网页文档可见区域的宽度。如果存在滚动条,滚动条也会算在内。
window.innerHeight:

document.documentElement.scrollWidth:
返回 整个 文档的宽度,包括文档被隐藏的部分(被滚动条卷去的部分)。
document.documentElement.scrollHeight:
这两个属性返回的是网页文档的总宽度和总高度,无论文档是否有滚动条,都会包括滚动条被卷去的部分。

document.documentElement.scrollTop:
返回当前滚动条在垂直方向上滚动的距离,即页面向下滚动的量。
document.documentElement.scrollLeft:
返回当前滚动条在水平方向上滚动的距离,即页面向右滚动的量。
这两个属性返回的是滚动条被卷去的宽度和高度,表示页面滚动的位置。

window.screen.width:
返回当前屏幕的宽度(以像素为单位)。
window.screen.height:

回顾

DOM

  • 全名:Document Object Model
  • 一整套操作文档流的属性和方法
  • DOM以树状结构出现,由节点组成
  • DOM里面常见的几种节点:
    • 文本节点:文本内容,包含换行和空格
    • 元素节点:页面内的所有标签
      • html:是一个元素节点,但是是页面上最大的元素节点,叫做根元素节点
    • 注释节点:注释内容,包括换行和空格
    • 属性节点:用于修饰一个元素的属性
    • document:根节点,作为页面的承载出现,不是一个标签
  • 对DOM的操作,就是对DOM树的操作
  1. 获取节点
    1-1 获取元素节点

    • 非常规标签
      • html:document.documentElement
      • body:document.body
      • head:document.head
    • 常规标签
      • getElementById()
      • getElementByClassName()
      • getElementByTagName()
      • getElementByName()
      • querySelector()
      • querySelectorAll()
        1-2 获取节点:
    • childNodes
    • children
    • firstChild
    • firstElementChild
    • lastChild
    • lastElementChild
    • previousSibling
    • previousElementSibling
    • nextSibling
    • nextElementSibling
    • parentNode
    • parentElement
    • attributes
  2. 操作元素文本
    2-1 innerText

    • 读:元素.innerText;
    • 写:元素.innerText = ‘值’
      2-2 innerHTML
    • 读:元素.innerHTML;
    • 写:元素.innerHTML = ‘值’
      2-3 value
    • 操作表单元素的value值
    • 读:表单元素.value
    • 写:表单元素.value = “值”
      注意:以上三种方式的写入都是完全覆盖的写入
  3. 操作元素属性
    3-1 操作原生属性

    • 读:元素.属性名
    • 写:元素.属性名 = “值”
      3-2 操作自定义属性
    • 获取:元素.getAttribute(“属性名”)
    • 设置:元素.setAttribute(“属性名”, “属性值”)
    • 删除:元素.removeAttribute(“属性名”)
      3-3 操作h5自定义属性
    • 获取:元素.dataset.属性名
    • 设置:元素.dataset.属性名 = “属性值”
    • 删除:delete 元素.dataset.属性名
  4. 操作元素样式
    4-1 获取元素的行内样式

    • 语法:元素.style.样式名
      4-2 设置元素行内样式
    • 语法:元素.style.样式名 = “样式值”
      4-3 获取元素的非行内样式(包含了行内样式和非行内样式)
    • window.getComputedStyle(元素).样式名
      注意:涉及到带有中划线的样式名,需要写成驼峰命名或者数组关联语法。
  5. 操作元素类名
    5-1 className

    • 读:元素.className
    • 写:元素.className = “值”
    • 追加:元素.className += “新类名”
      5-2 classList
    • 获取:元素.classList
    • 添加:元素.classList.add(“className”)
    • 删除:元素.classList.remove(“className”)
    • 切换: 元素.classList.toggle(“className”);
  6. 获取元素尺寸
    6-1 获取元素内容+padding+border区域的尺寸

    • 元素.offsetWidth
    • 元素.offsetHeight
      6-2 获取元素内容+padding区域的尺寸
    • 元素.clientWidth
    • 元素.clientHeight
      注意:当元素的display为none时,无法获取尺寸
  7. 获取元素偏移量时,可以使用以下语法:

    • 要获取元素相对于其定位父级的水平偏移量:ele.offsetLeft
    • 要获取元素相对于其定位父级的垂直偏移量:ele.offsetTop
  8. 要获取可视窗口的区域尺寸(不包含滚动条),可以使用以下属性:

    • 可视窗口的宽度:document.documentElement.clientWidth
    • 可视窗口的高度:document.documentElement.clientHeight
  9. 节点操作包括创建、插入、删除、替换和克隆节点的操作:
    9-1 创建节点:

    • 创建元素节点:使用 document.createElement("标签名")
    • 创建文本节点:使用 document.createTextNode("文本内容")
      9-2 插入节点:
    • 向父节点末尾添加子节点:使用 父节点.appendChild(子节点)
    • 在指定节点之前插入子节点:使用 父节点.insertBefore(子节点, 谁的前面)
      9-3 删除节点:
    • 删除节点本身:使用 节点.remove()
    • 从父节点中移除子节点:使用 父节点.removeChild(子节点)
      9-4 替换节点:
    • 替换子节点:使用 父节点.replaceChild(换上的节点, 被替换的节点)
      9-5 克隆节点:
    • 克隆节点(不克隆后代节点):使用 节点.cloneNode()
    • 克隆节点(包括后代节点):使用 节点.cloneNode(true)
  10. 节点属性包括nodeTypenodeNamenodeValue
    10-1 nodeType表示节点的类型,常见的类型及其对应的变量如下:

    • document节点:9(对应的变量:Node.DOCUMENT_NODE)
    • 文本节点:3(对应的变量:Node.TEXT_NODE)
    • 属性节点:2(对应的变量:Node.ATTRIBUTE_NODE)
    • 注释节点:8(对应的变量:Node.COMMENT_NODE)
    • 元素节点:1(对应的变量:Node.ELEMENT_NODE)
      10-2 nodeName表示节点的名称,根据节点类型不同有不同的取值:
    • 元素节点:大写标签名
    • 属性节点:属性名
    • 文本节点:#text
    • 注释节点:#comment
    • document节点:#document
      10-3 nodeValue表示节点的值,根据节点类型不同有不同的取值:
    • 元素节点:null
    • 文本节点:文本内容
    • 属性节点:属性值
    • 注释节点:注释内容
    • document节点:null

// console.log(document.nodeType);
// console.log(Node.DOCUMENT_NODE);
// console.log(document.nodeType === Node.DOCUMENT_NODE);
// console.log(box.nodeType);
// console.log(Node.ELEMENT_NODE);
// console.log(box.firstChild.nodeType);
// console.log(Node.COMMENT_NODE);
// // console.log(document.nodeName);
// // console.log(box.nodeName);
// // console.log(box.firstChild.nodeValue);
// console.log(box.nodeName); // DIV
// console.log(document.nodeName); // #document
// console.log(box.firstChild.nodeName); // #text
// console.log(box.attributes.id.nodeName); // id
// console.log(box.lastChild.nodeName); // #comment
console.log(document.nodeValue);

// 2025-11-05 冯 // 甘特图时间计算逻辑(完整无省略版) let { value } = arguments[0]; let data = value; console.log('原始数据:', data); const now = new Date(); let today = new Date(now.getFullYear(), now.getMonth(), now.getDate()); const formattedDate = `${now.getFullYear()}-${(now.getMonth() + 1).toString().padStart(2, '0')}-${now.getDate().toString().padStart(2, '0')}`; const idMap = {}; const childrenMap = {}; // 初始化ID映射和子任务映射 for (let i = 0; i < data.length; i++) { const item = data[i]; idMap[item.input_gantt_id] = item; if (item.input_gantt_pid !== "0") { if (!childrenMap[item.input_gantt_pid]) { childrenMap[item.input_gantt_pid] = []; } childrenMap[item.input_gantt_pid].push(item); } } // 计算工作日逻辑 const calculateWorkDays = (start, days) => { if (days <= 0) return start.toISOString().split('T')[0]; const result = new Date(start); let added = 0; let safetyCounter = 0; const MAX_ITERATIONS = 365 * 5; while (added < days && safetyCounter < MAX_ITERATIONS) { result.setDate(result.getDate() + 1); const day = result.getDay(); if (day !== 0 && day !== 6) added++; safetyCounter++; } if (safetyCounter >= MAX_ITERATIONS) { console.error(`安全阀触发:计算日期超过最大迭代次数 (${days}天)`); return formattedDate; } return result.toISOString().split('T')[0]; }; // 1:处理关联任务依赖关系 for (let i = 0; i < data.length; i++) { const item = data[i]; if (item.input_gantt_pid !== "0") { if (item.input_ai1ocsab == null && (!item.date_ojtjcbwl || !item.date_u0vgd44a)) { item.date_ojtjcbwl = formattedDate; const addDays = parseInt(item.Count_1onrwvsa) || 1; item.date_u0vgd44a = calculateWorkDays(new Date(item.date_ojtjcbwl), addDays); } else if (item.input_ai1ocsab) { const refItem = data.find(it => it.input_wnjhp5ur === item.input_ai1ocsab); if (refItem && refItem.date_u0vgd44a) { item.date_ojtjcbwl = refItem.date_u0vgd44a; const addDays = parseInt(item.Count_1onrwvsa) || 1; item.date_u0vgd44a = calculateWorkDays(new Date(refItem.date_u0vgd44a), addDays); } } } // 填充父任务名称 if (item.input_gantt_pid === "0") { item.input_mnm39sq6 = ''; } else if (idMap[item.input_gantt_pid] && !item.input_mnm39sq6) { item.input_mnm39sq6 = idMap[item.input_gantt_pid].input_wnjhp5ur; } } // 2:父节点链式时间处理 const parentNodes = data .filter(item => item.input_gantt_pid === "0") .sort((a, b) => parseInt(a.line_number) - parseInt(b.line_number)); let prevParentEndDate = null; for (let i = 0; i < parentNodes.length; i++) { const parent = parentNodes[i]; const children = childrenMap[parent.input_gantt_id] || []; if (prevParentEndDate !== null) { parent.date_ojtjcbwl = prevParentEndDate; for (let j = 0; j < children.length; j++) { const child = children[j]; if (!child.input_ai1ocsab) { child.date_ojtjcbwl = prevParentEndDate; if (child.Count_1onrwvsa) { const addDays = parseInt(child.Count_1onrwvsa) || 1; child.date_u0vgd44a = calculateWorkDays(new Date(prevParentEndDate), addDays); } } } } // 计算父节点时间范围 let minStart = Infinity; let maxEnd = -Infinity; for (let j = 0; j < children.length; j++) { const child = children[j]; if (child.date_ojtjcbwl) { const timestamp = new Date(child.date_ojtjcbwl).getTime(); if (timestamp < minStart) minStart = timestamp; } if (child.date_u0vgd44a) { const timestamp = new Date(child.date_u0vgd44a).getTime(); if (timestamp > maxEnd) maxEnd = timestamp; } } // 设置父节点时间 if (minStart !== Infinity && maxEnd !== -Infinity) { const startDate = new Date(minStart); parent.date_ojtjcbwl = `${startDate.getFullYear()}-${(startDate.getMonth() + 1).toString().padStart(2, '0')}-${startDate.getDate().toString().padStart(2, '0')}`; const endDate = new Date(maxEnd); parent.date_u0vgd44a = `${endDate.getFullYear()}-${(endDate.getMonth() + 1).toString().padStart(2, '0')}-${endDate.getDate().toString().padStart(2, '0')}`; } prevParentEndDate = parent.date_u0vgd44a; } // 3:完整无省略的衍生字段计算 for (let i = 0; i < data.length; i++) { const item = data[i]; // 计算剩余天数 if (item.date_u0vgd44a) { const targetDate = new Date(item.date_u0vgd44a); const target = new Date(targetDate.getFullYear(), targetDate.getMonth(), targetDate.getDate()); let daysDiff = 0; let currentDate = new Date(today); if (target >= today) { while (currentDate < target) { currentDate.setDate(currentDate.getDate() + 1); const day = currentDate.getDay(); if (day !== 0 && day !== 6) daysDiff++; } } else { while (currentDate > target) { currentDate.setDate(currentDate.getDate() - 1); const day = currentDate.getDay(); if (day !== 0 && day !== 6) daysDiff--; } } item.Count_e9oxvnxs = daysDiff; } // 计算延迟天数 if (item.date_5g33gfbq) { const actualDate = new Date(item.date_5g33gfbq); const actual = new Date(actualDate.getFullYear(), actualDate.getMonth(), actualDate.getDate()); const planDate = new Date(item.date_ojtjcbwl); const plan = new Date(planDate.getFullYear(), planDate.getMonth(), planDate.getDate()); let delayDays = 0; let currentDate = new Date(plan); if (actual >= plan) { while (currentDate < actual) { currentDate.setDate(currentDate.getDate() + 1); const day = currentDate.getDay(); if (day !== 0 && day !== 6) delayDays++; } } else { while (currentDate > actual) { currentDate.setDate(currentDate.getDate() - 1); const day = currentDate.getDay(); if (day !== 0 && day !== 6) delayDays--; } } item.Count_rss3um2e = delayDays; } else { const planDate = new Date(item.date_ojtjcbwl); const plan = new Date(planDate.getFullYear(), planDate.getMonth(), planDate.getDate()); let delayDays = 0; let currentDate = new Date(plan); if (today >= plan) { while (currentDate < today) { currentDate.setDate(currentDate.getDate() + 1); const day = currentDate.getDay(); if (day !== 0 && day !== 6) delayDays++; } } else { while (currentDate > today) { currentDate.setDate(currentDate.getDate() - 1); const day = currentDate.getDay(); if (day !== 0 && day !== 6) delayDays--; } } item.Count_rss3um2e = delayDays; } // 计算计划天数 if (item.date_u0vgd44a && item.date_ojtjcbwl) { const endDate = new Date(item.date_u0vgd44a); const end = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate()); const startDate = new Date(item.date_ojtjcbwl); const start = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate()); let workDays = 0; let currentDate = new Date(start); while (currentDate < end) { currentDate.setDate(currentDate.getDate() + 1); const day = currentDate.getDay(); if (day !== 0 && day !== 6) workDays++; } item.Count_1onrwvsa = workDays; } } // 4:完整的时间修改处理逻辑 const handleDateChange = (changedItem, field, newValue) => { changedItem[field] = newValue; const updateQueue = [changedItem]; const processedIds = new Set(); while (updateQueue.length > 0) { const currentItem = updateQueue.shift(); processedIds.add(currentItem.input_gantt_id); // 处理后续依赖任务 for (let i = 0; i < data.length; i++) { const task = data[i]; if (task.input_ai1ocsab === currentItem.input_wnjhp5ur && !processedIds.has(task.input_gantt_id)) { task.date_ojtjcbwl = currentItem.date_u0vgd44a; if (task.Count_1onrwvsa) { const addDays = parseInt(task.Count_1onrwvsa) || 1; task.date_u0vgd44a = calculateWorkDays( new Date(currentItem.date_u0vgd44a), addDays ); } updateQueue.push(task); } } // 更新父任务时间范围 if (currentItem.input_gantt_pid !== "0") { const parent = idMap[currentItem.input_gantt_pid]; if (parent && !processedIds.has(parent.input_gantt_id)) { const children = childrenMap[parent.input_gantt_id] || []; let minStart = Infinity; let maxEnd = -Infinity; for (let j = 0; j < children.length; j++) { const child = children[j]; if (child.date_ojtjcbwl) { const ts = new Date(child.date_ojtjcbwl).getTime(); if (ts < minStart) minStart = ts; } if (child.date_u0vgd44a) { const ts = new Date(child.date_u0vgd44a).getTime(); if (ts > maxEnd) maxEnd = ts; } } if (minStart !== Infinity && maxEnd !== -Infinity) { const startDate = new Date(minStart); parent.date_ojtjcbwl = `${startDate.getFullYear()}-${(startDate.getMonth() + 1).toString().padStart(2, '0')}-${startDate.getDate().toString().padStart(2, '0')}`; const endDate = new Date(maxEnd); parent.date_u0vgd44a = `${endDate.getFullYear()}-${(endDate.getMonth() + 1).toString().padStart(2, '0')}-${endDate.getDate().toString().padStart(2, '0')}`; updateQueue.push(parent); } } } } // 完整重新计算所有衍生字段 for (let i = 0; i < data.length; i++) { const item = data[i]; // 重新计算剩余天数 if (item.date_u0vgd44a) { const targetDate = new Date(item.date_u0vgd44a); const target = new Date(targetDate.getFullYear(), targetDate.getMonth(), targetDate.getDate()); let daysDiff = 0; let currentDate = new Date(today); if (target >= today) { while (currentDate < target) { currentDate.setDate(currentDate.getDate() + 1); const day = currentDate.getDay(); if (day !== 0 && day !== 6) daysDiff++; } } else { while (currentDate > target) { currentDate.setDate(currentDate.getDate() - 1); const day = currentDate.getDay(); if (day !== 0 && day !== 6) daysDiff--; } } item.Count_e9oxvnxs = daysDiff; } // 重新计算延迟天数 if (item.date_5g33gfbq) { const actualDate = new Date(item.date_5g33gfbq); const actual = new Date(actualDate.getFullYear(), actualDate.getMonth(), actualDate.getDate()); const planDate = new Date(item.date_ojtjcbwl); const plan = new Date(planDate.getFullYear(), planDate.getMonth(), planDate.getDate()); let delayDays = 0; let currentDate = new Date(plan); if (actual >= plan) { while (currentDate < actual) { currentDate.setDate(currentDate.getDate() + 1); const day = currentDate.getDay(); if (day !== 0 && day !== 6) delayDays++; } } else { while (currentDate > actual) { currentDate.setDate(currentDate.getDate() - 1); const day = currentDate.getDay(); if (day !== 0 && day !== 6) delayDays--; } } item.Count_rss3um2e = delayDays; } else { const planDate = new Date(item.date_ojtjcbwl); const plan = new Date(planDate.getFullYear(), planDate.getMonth(), planDate.getDate()); let delayDays = 0; let currentDate = new Date(plan); if (today >= plan) { while (currentDate < today) { currentDate.setDate(currentDate.getDate() + 1); const day = currentDate.getDay(); if (day !== 0 && day !== 6) delayDays++; } } else { while (currentDate > today) { currentDate.setDate(currentDate.getDate() - 1); const day = currentDate.getDay(); if (day !== 0 && day !== 6) delayDays--; } } item.Count_rss3um2e = delayDays; } // 重新计算计划天数 if (item.date_u0vgd44a && item.date_ojtjcbwl) { const endDate = new Date(item.date_u0vgd44a); const end = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate()); const startDate = new Date(item.date_ojtjcbwl); const start = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate()); let workDays = 0; let currentDate = new Date(start); while (currentDate < end) { currentDate.setDate(currentDate.getDate() + 1); const day = currentDate.getDay(); if (day !== 0 && day !== 6) workDays++; } item.Count_1onrwvsa = workDays; } } }; // UI事件绑定实现 document.querySelectorAll('[data-date-field]').forEach(input => { input.addEventListener('change', (e) => { const itemId = e.target.dataset.itemId; const field = e.target.dataset.dateField; const newValue = e.target.value; const changedItem = data.find(item => item.input_gantt_id === itemId); if (!changedItem) return; handleDateChange(changedItem, field, newValue); this.setData({ table_a2tpdoka: data }); }); }); // 初始数据输出 console.log('处理后的数据:', data); this.setData({ table_a2tpdoka: data }); 这是处理后的数据 [ { "input_gantt_id": "add_7tkwfptw", "input_wnjhp5ur": "立项阶段", "input_vzm5xwmh": null, "Reference_agjw6ba9": "", "date_ojtjcbwl": "2025-11-25", "date_u0vgd44a": "2025-12-12", "date_5g33gfbq": "", "Count_1onrwvsa": 13, "input_zaw23jvj": "", "Count_rss3um2e": 0, "Count_e9oxvnxs": 13, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "0", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "", "gcdp_1yjkiobq": "", "input_ai1ocsab": null, "line_number": "3", "source_pid": "4" }, { "input_gantt_id": "add_1dgfpc27", "input_wnjhp5ur": "产品报价单", "input_vzm5xwmh": "产品报价单", "Reference_agjw6ba9": "", "date_ojtjcbwl": "2025-11-26", "date_u0vgd44a": "2025-11-28", "date_5g33gfbq": "", "Count_1onrwvsa": 2, "input_zaw23jvj": 0, "Count_rss3um2e": -1, "Count_e9oxvnxs": 3, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "add_7tkwfptw", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "立项阶段", "gcdp_1yjkiobq": "", "input_ai1ocsab": null, "line_number": "4", "source_pid": "4" }, { "input_gantt_id": "add_zcrwj1fw", "input_wnjhp5ur": "合同/协议评审表", "input_vzm5xwmh": "合同/协议评审表", "Reference_agjw6ba9": "", "date_ojtjcbwl": "2025-11-28", "date_u0vgd44a": "2025-12-03", "date_5g33gfbq": "", "Count_1onrwvsa": 3, "input_zaw23jvj": "", "Count_rss3um2e": -3, "Count_e9oxvnxs": 6, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "add_7tkwfptw", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "立项阶段", "gcdp_1yjkiobq": "", "input_ai1ocsab": "产品报价单", "line_number": "5", "source_pid": "4" }, { "input_gantt_id": "add_byn567uj", "input_wnjhp5ur": "材料/外协外购件/供方清单", "input_vzm5xwmh": "材料/外协外购件/供方清单", "Reference_agjw6ba9": "", "date_ojtjcbwl": "2025-12-03", "date_u0vgd44a": "2025-12-12", "date_5g33gfbq": "", "Count_1onrwvsa": 7, "input_zaw23jvj": "", "Count_rss3um2e": -6, "Count_e9oxvnxs": 13, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "add_7tkwfptw", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "立项阶段", "gcdp_1yjkiobq": "", "input_ai1ocsab": "合同/协议评审表", "line_number": "6", "source_pid": "4" }, { "input_gantt_id": "add_lzqhf79i", "input_wnjhp5ur": "项目成本预算", "input_vzm5xwmh": "项目成本预算", "Reference_agjw6ba9": "", "date_ojtjcbwl": "2025-11-25", "date_u0vgd44a": "2025-11-26", "date_5g33gfbq": "", "Count_1onrwvsa": 1, "input_zaw23jvj": "", "Count_rss3um2e": 0, "Count_e9oxvnxs": 1, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "add_7tkwfptw", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "立项阶段", "gcdp_1yjkiobq": "", "input_ai1ocsab": null, "line_number": "7", "source_pid": "4" }, { "input_gantt_id": "add_4evnttf3", "input_wnjhp5ur": "立项阶段评审表", "input_vzm5xwmh": "立项阶段评审表", "Reference_agjw6ba9": "", "date_ojtjcbwl": "2025-11-25", "date_u0vgd44a": "2025-11-26", "date_5g33gfbq": "", "Count_1onrwvsa": 1, "input_zaw23jvj": "", "Count_rss3um2e": 0, "Count_e9oxvnxs": 1, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "add_7tkwfptw", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "立项阶段", "gcdp_1yjkiobq": "", "input_ai1ocsab": null, "line_number": "8", "source_pid": "4" }, { "input_gantt_id": "add_jb5nx8cl", "input_wnjhp5ur": "产品设计开发阶段", "input_vzm5xwmh": null, "Reference_agjw6ba9": "", "date_ojtjcbwl": "2025-12-12", "date_u0vgd44a": "2026-01-05", "date_5g33gfbq": "", "Count_1onrwvsa": 16, "input_zaw23jvj": "", "Count_rss3um2e": -13, "Count_e9oxvnxs": 29, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "0", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "", "gcdp_1yjkiobq": "", "input_ai1ocsab": null, "line_number": "9", "source_pid": "4" }, { "input_gantt_id": "add_f3bzmhzs", "input_wnjhp5ur": "产品图纸", "input_vzm5xwmh": "产品图纸", "Reference_agjw6ba9": "", "date_ojtjcbwl": "2025-12-12", "date_u0vgd44a": "2025-12-17", "date_5g33gfbq": "", "Count_1onrwvsa": 3, "input_zaw23jvj": "", "Count_rss3um2e": -13, "Count_e9oxvnxs": 16, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "add_jb5nx8cl", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "产品设计开发阶段", "gcdp_1yjkiobq": "", "input_ai1ocsab": null, "line_number": "10", "source_pid": "4" }, { "input_gantt_id": "add_3lve0tsk", "input_wnjhp5ur": "零件BOM", "input_vzm5xwmh": "零件BOM", "Reference_agjw6ba9": "", "date_ojtjcbwl": "2025-12-17", "date_u0vgd44a": "2025-12-24", "date_5g33gfbq": "", "Count_1onrwvsa": 5, "input_zaw23jvj": "", "Count_rss3um2e": -16, "Count_e9oxvnxs": 21, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "add_jb5nx8cl", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "产品设计开发阶段", "gcdp_1yjkiobq": "", "input_ai1ocsab": "产品图纸", "line_number": "11", "source_pid": "4" }, { "input_gantt_id": "add_9o57ep37", "input_wnjhp5ur": "APQP问题清单", "input_vzm5xwmh": "APQP问题清单", "Reference_agjw6ba9": "", "date_ojtjcbwl": "2025-12-24", "date_u0vgd44a": "2026-01-05", "date_5g33gfbq": "", "Count_1onrwvsa": 8, "input_zaw23jvj": "", "Count_rss3um2e": -21, "Count_e9oxvnxs": 29, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "add_jb5nx8cl", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "产品设计开发阶段", "gcdp_1yjkiobq": "", "input_ai1ocsab": "零件BOM", "line_number": "12", "source_pid": "4" }, { "input_gantt_id": "add_8w2ktpj4", "input_wnjhp5ur": "产品设计开发阶段评审表", "input_vzm5xwmh": "产品设计开发阶段评审表", "Reference_agjw6ba9": "", "date_ojtjcbwl": "2025-12-12", "date_u0vgd44a": "2025-12-15", "date_5g33gfbq": "", "Count_1onrwvsa": 1, "input_zaw23jvj": "", "Count_rss3um2e": -13, "Count_e9oxvnxs": 14, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "add_jb5nx8cl", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "产品设计开发阶段", "gcdp_1yjkiobq": "", "input_ai1ocsab": null, "line_number": "13", "source_pid": "4" }, { "input_gantt_id": "add_2mhyo20a", "input_wnjhp5ur": "过程设计开发阶段", "input_vzm5xwmh": null, "Reference_agjw6ba9": "", "date_ojtjcbwl": "2026-01-05", "date_u0vgd44a": "2026-01-06", "date_5g33gfbq": "", "Count_1onrwvsa": 1, "input_zaw23jvj": "", "Count_rss3um2e": -29, "Count_e9oxvnxs": 30, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "0", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "", "gcdp_1yjkiobq": "", "input_ai1ocsab": null, "line_number": "14", "source_pid": "4" }, { "input_gantt_id": "add_9oxxvw69", "input_wnjhp5ur": "作业指导书", "input_vzm5xwmh": "作业指导书", "Reference_agjw6ba9": "", "date_ojtjcbwl": "2026-01-05", "date_u0vgd44a": "2026-01-06", "date_5g33gfbq": "", "Count_1onrwvsa": 1, "input_zaw23jvj": "", "Count_rss3um2e": -29, "Count_e9oxvnxs": 30, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "add_2mhyo20a", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "过程设计开发阶段", "gcdp_1yjkiobq": "", "input_ai1ocsab": null, "line_number": "15", "source_pid": "4" }, { "input_gantt_id": "add_vr3hew07", "input_wnjhp5ur": "检验指导书", "input_vzm5xwmh": "检验指导书", "Reference_agjw6ba9": "", "date_ojtjcbwl": "2026-01-05", "date_u0vgd44a": "2026-01-06", "date_5g33gfbq": "", "Count_1onrwvsa": 1, "input_zaw23jvj": "", "Count_rss3um2e": -29, "Count_e9oxvnxs": 30, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "add_2mhyo20a", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "过程设计开发阶段", "gcdp_1yjkiobq": "", "input_ai1ocsab": null, "line_number": "16", "source_pid": "4" }, { "input_gantt_id": "add_sa7789zi", "input_wnjhp5ur": "工艺参数卡", "input_vzm5xwmh": "工艺参数卡", "Reference_agjw6ba9": "", "date_ojtjcbwl": "2026-01-05", "date_u0vgd44a": "2026-01-06", "date_5g33gfbq": "", "Count_1onrwvsa": 1, "input_zaw23jvj": "", "Count_rss3um2e": -29, "Count_e9oxvnxs": 30, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "add_2mhyo20a", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "过程设计开发阶段", "gcdp_1yjkiobq": "", "input_ai1ocsab": null, "line_number": "17", "source_pid": "4" }, { "input_gantt_id": "add_htk7drb9", "input_wnjhp5ur": "包装方案/包装指导书", "input_vzm5xwmh": "包装方案/包装指导书", "Reference_agjw6ba9": "", "date_ojtjcbwl": "2026-01-05", "date_u0vgd44a": "2026-01-06", "date_5g33gfbq": "", "Count_1onrwvsa": 1, "input_zaw23jvj": "", "Count_rss3um2e": -29, "Count_e9oxvnxs": 30, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "add_2mhyo20a", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "过程设计开发阶段", "gcdp_1yjkiobq": "", "input_ai1ocsab": null, "line_number": "18", "source_pid": "4" }, { "input_gantt_id": "add_4pzh4geu", "input_wnjhp5ur": "试模单/试模总结", "input_vzm5xwmh": "试模单/试模总结", "Reference_agjw6ba9": "", "date_ojtjcbwl": "2026-01-05", "date_u0vgd44a": "2026-01-06", "date_5g33gfbq": "", "Count_1onrwvsa": 1, "input_zaw23jvj": "", "Count_rss3um2e": -29, "Count_e9oxvnxs": 30, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "add_2mhyo20a", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "过程设计开发阶段", "gcdp_1yjkiobq": "", "input_ai1ocsab": null, "line_number": "19", "source_pid": "4" }, { "input_gantt_id": "add_wwlodkjs", "input_wnjhp5ur": "过程设计阶段评审表", "input_vzm5xwmh": "过程设计阶段评审表", "Reference_agjw6ba9": "", "date_ojtjcbwl": "2026-01-05", "date_u0vgd44a": "2026-01-06", "date_5g33gfbq": "", "Count_1onrwvsa": 1, "input_zaw23jvj": "", "Count_rss3um2e": -29, "Count_e9oxvnxs": 30, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "add_2mhyo20a", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "过程设计开发阶段", "gcdp_1yjkiobq": "", "input_ai1ocsab": null, "line_number": "20", "source_pid": "4" }, { "input_gantt_id": "add_mozhmj93", "input_wnjhp5ur": "产品和过程确认阶段", "input_vzm5xwmh": null, "Reference_agjw6ba9": "", "date_ojtjcbwl": "2026-01-06", "date_u0vgd44a": "2026-01-07", "date_5g33gfbq": "", "Count_1onrwvsa": 1, "input_zaw23jvj": "", "Count_rss3um2e": -30, "Count_e9oxvnxs": 31, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "0", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "", "gcdp_1yjkiobq": "", "input_ai1ocsab": null, "line_number": "21", "source_pid": "4" }, { "input_gantt_id": "add_s2h24w1t", "input_wnjhp5ur": "全运转报告/2TP报告", "input_vzm5xwmh": "全运转报告/2TP报告", "Reference_agjw6ba9": "", "date_ojtjcbwl": "2026-01-06", "date_u0vgd44a": "2026-01-07", "date_5g33gfbq": "", "Count_1onrwvsa": 1, "input_zaw23jvj": "", "Count_rss3um2e": -30, "Count_e9oxvnxs": 31, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "add_mozhmj93", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "产品和过程确认阶段", "gcdp_1yjkiobq": "", "input_ai1ocsab": null, "line_number": "22", "source_pid": "4" }, { "input_gantt_id": "add_as9sizhd", "input_wnjhp5ur": "产品和过程确认阶段评审表", "input_vzm5xwmh": "产品和过程确认阶段评审表", "Reference_agjw6ba9": "", "date_ojtjcbwl": "2026-01-06", "date_u0vgd44a": "2026-01-07", "date_5g33gfbq": "", "Count_1onrwvsa": 1, "input_zaw23jvj": "", "Count_rss3um2e": -30, "Count_e9oxvnxs": 31, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "add_mozhmj93", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "产品和过程确认阶段", "gcdp_1yjkiobq": "", "input_ai1ocsab": null, "line_number": "23", "source_pid": "4" }, { "input_gantt_id": "add_1lnxubvh", "input_wnjhp5ur": "反馈、评定和纠正措施阶段", "input_vzm5xwmh": null, "Reference_agjw6ba9": "", "date_ojtjcbwl": "2026-01-07", "date_u0vgd44a": "2026-01-08", "date_5g33gfbq": "", "Count_1onrwvsa": 1, "input_zaw23jvj": "", "Count_rss3um2e": -31, "Count_e9oxvnxs": 32, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "0", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "", "gcdp_1yjkiobq": "", "input_ai1ocsab": null, "line_number": "24", "source_pid": "4" }, { "input_gantt_id": "add_fb6e3kmb", "input_wnjhp5ur": "项目交接清单", "input_vzm5xwmh": "项目交接清单", "Reference_agjw6ba9": "", "date_ojtjcbwl": "2026-01-07", "date_u0vgd44a": "2026-01-08", "date_5g33gfbq": "", "Count_1onrwvsa": 1, "input_zaw23jvj": "", "Count_rss3um2e": -31, "Count_e9oxvnxs": 32, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "add_1lnxubvh", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "反馈、评定和纠正措施阶段", "gcdp_1yjkiobq": "", "input_ai1ocsab": null, "line_number": "25", "source_pid": "4" }, { "input_gantt_id": "add_qoe5jtsm", "input_wnjhp5ur": "反馈评定和纠正阶段评审表", "input_vzm5xwmh": "反馈评定和纠正阶段评审表", "Reference_agjw6ba9": "", "date_ojtjcbwl": "2026-01-07", "date_u0vgd44a": "2026-01-08", "date_5g33gfbq": "", "Count_1onrwvsa": 1, "input_zaw23jvj": "", "Count_rss3um2e": -31, "Count_e9oxvnxs": 32, "input_kdht8kvi": "", "Reference_16t6lmz3": "", "gcdp_gytjens4": "000021243-总经办", "input_gantt_pid": "add_1lnxubvh", "input_4vsstmvl": "", "input_3bc6y0cc": "", "input_odmb3y9g": "", "input_7wnorx8h": "", "input_3yu0btxf": "", "input_mnm39sq6": "反馈、评定和纠正措施阶段", "gcdp_1yjkiobq": "", "input_ai1ocsab": null, "line_number": "26", "source_pid": "4" } ] 你看看对不对 后面的数据后没有更改 包括父节点的时间也没有变
11-26
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值