怎么能取到createTime每个月有数据的那一天的日期显示在列名里啊
// 创建顶级列(月份列)
const monthColumn = new TableColumn({
title: monthName,
type: "String",
field: monthField,
width: 100,
children: [
new TableColumn({
title: this.dayTitle,
type: "String",
field: dayField,
width: 100,
options: { readOnlyCell: true },
children: [
new TableColumn({
title: "点检",
type: "String",
field: checkResultField,
options: {
selection: "checkResult",
itemProps: { code: "code", name: "label" },
},
}),
new TableColumn({
title: "处置",
type: "String",
field: checkHandleField,
classCode: "CHECK_HANDLE",
options: { multiple: true },
}),
],
}),
],
});
// 将月份列添加到表格列配置数组中
tableColumns.push(monthColumn);
}
console.log("tableColumnssssssssss", tableColumns);
return tableColumns;
},
sync fetchCurrentResult() {
try {
const result = await getCheckResultSummary({
equipmentNumber: this.equipment.equipmentNumber,
checkRange: this.currentYear,
});
console.log("result", result.data.data);
// 使用 reduce 方法将结果数据转换为一个新的映射对象 summaryMap
// 这个映射对象的键是设备项的名称(itemName),值是一个对象,该对象包含了检查时间和对应的检查结果
// 检查结果按照月份进行组织,月份作为对象的键,检查结果作为值
const summaryMap = result.data.data.reduce((result, item) => {
if (item) {
const { createTime, checkResult, checkHandle, itemName } = item;
const record = result[itemName];
if (!createTime) {
return result;
}
if (record) {
record["checkResult" + this.$moment(createTime).get("month")] =
checkResult;
record["checkHandle" + this.$moment(createTime).get("month")] =
checkHandle;
record[this.$moment(createTime).get("month")] =
this.$moment(createTime).get("day");
} else {
result[itemName] = {
...item,
["checkResult" + this.$moment(createTime).get("month")]:
checkResult,
["checkHandle" + this.$moment(createTime).get("month")]:
checkHandle,
[this.$moment(createTime).get("month")]:
this.$moment(createTime).get("day"),
};
}
}
return result;
}, {});
// 排序后更新表格数据
console.log("summaryMap", summaryMap);
this.tableData = Object.values(summaryMap).sort(
(a, b) => a.seq - b.seq
);
async fetchCurrentResult() {
try {
const result = await getCheckResultSummary({
equipmentNumber: this.equipment.equipmentNumber,
checkRange: this.currentYear,
});
console.log("result", result.data.data);
// 使用 reduce 方法将结果数据转换为新的映射对象 summaryMap
const summaryMap = result.data.data.reduce((result, item) => {
if (item) {
const { createTime, checkResult, checkHandle, itemName } = item;
const record = result[itemName];
if (!createTime) {
return result;
}
const month = this.$moment(createTime).get("month");
const day = this.$moment(createTime).get("day");
if (record) {
record["checkResult" + month] = checkResult;
record["checkHandle" + month] = checkHandle;
record[month] = day;
} else {
result[itemName] = {
...item,
["checkResult" + month]: checkResult,
["checkHandle" + month]: checkHandle,
[month]: day,
};
}
}
return result;
}, {});
console.log("summaryMap", summaryMap);
// 提取出所有有数据的月份和对应的日期
const monthsWithDays = Object.values(summaryMap).reduce((months, record) => {
Object.keys(record).forEach(key => {
if (key !== 'itemName' && key !== 'checkResult' && key !== 'checkHandle') {
const month = parseInt(key, 10);
if (!months.includes(month)) {
months.push(month);
}
}
});
return months;
}, []);
// 创建表格列配置
const tableColumns = [];
monthsWithDays.forEach(month => {
const monthName = this.$moment().month(month).format('MMMM'); // 获取月份名称
const monthField = `month_${month}`; // 月份字段名
const dayField = `day_${month}`; // 日期字段名
const checkResultField = `checkResult${month}`;
const checkHandleField = `checkHandle${month}`;
// 创建顶级列(月份列)
const monthColumn = new TableColumn({
title: monthName,
type: "String",
field: monthField,
width: 100,
children: [
new TableColumn({
title: this.dayTitle,
type: "String",
field: dayField,
width: 100,
options: { readOnlyCell: true },
children: [
new TableColumn({
title: "点检",
type: "String",
field: checkResultField,
options: {
selection: "checkResult",
itemProps: { code: "code", name: "label" },
},
}),
new TableColumn({
title: "处置",
type: "String",
field: checkHandleField,
classCode: "CHECK_HANDLE",
options: { multiple: true },
}),
],
}),
],
});
// 将月份列添加到表格列配置数组中
tableColumns.push(monthColumn);
});
// 打印最终的列配置
console.log("tableColumnssssssssss", tableColumns);
return tableColumns;
} catch (error) {
console.error("Error fetching data:", error);
}
}
1.新增了两个变量:month 和 day,分别用于存储月份和日期。
2.使用 format 方法:将月份和日期格式化为两位数的字符串。
3.新增了 day 字段:在 record 对象中添加了 day 字段,用于存储每个月有数据的那一天的日期。
// 创建顶级列(月份列)
const monthColumn = new TableColumn({
title: monthName,
type: "String",
field: monthField,
width: 100,
children: [
new TableColumn({
title: this.dayTitle,
type: "String",
field: dayField,
width: 100,
options: { readOnlyCell: true },
children: [
new TableColumn({
title: "点检",
type: "String",
field: checkResultField,
options: {
selection: "checkResult",
itemProps: { code: "code", name: "label" },
},
}),
new TableColumn({
title: "处置",
type: "String",
field: checkHandleField,
classCode: "CHECK_HANDLE",
options: { multiple: true },
}),
],
}),
],
});
// 将月份列添加到表格列配置数组中
tableColumns.push(monthColumn);
console.log("tableColumnssssssssss", tableColumns);
return tableColumns;
}
async fetchCurrentResult() {
try {
const result = await getCheckResultSummary({
equipmentNumber: this.equipment.equipmentNumber,
checkRange: this.currentYear,
});
console.log("result", result.data.data);
// 使用 reduce 方法将结果数据转换为一个新的映射对象 summaryMap
// 这个映射对象的键是设备项的名称(itemName),值是一个对象,该对象包含了检查时间和对应的检查结果
// 检查结果按照月份进行组织,月份作为对象的键,检查结果作为值
const summaryMap = result.data.data.reduce((result, item) => {
if (item) {
const { createTime, checkResult, checkHandle, itemName } = item;
const record = result[itemName];
if (!createTime) {
return result;
}
const month = this.$moment(createTime).format("MM");
const day = this.$moment(createTime).format("DD");
if (record) {
record["checkResult" + month] = checkResult;
record["checkHandle" + month] = checkHandle;
record["day" + month] = day;
} else {
result[itemName] = {
...item,
["checkResult" + month]: checkResult,
["checkHandle" + month]: checkHandle,
["day" + month]: day,
};
}
}
return result;
}, {});
// 排序后更新表格数据
console.log("summaryMap", summaryMap);
this.tableData = Object.values(summaryMap).sort((a, b) => a.seq - b.seq);
} catch (error) {
console.error("Error fetching check results:", error);
}
}
要将每个月有数据的日期显示在列名中,你需要动态地生成表格的列配置,而不是在代码中硬编码列名。基于你的需求,你需要从数据结果中提取每个月有数据的日期,并基于这些日期创建新的列。以下是一个可能的解决方案:
### 解决方案
1. **解析数据并收集日期**:
首先,你需要遍历数据结果,并收集每个月中哪些日期有数据。你可以使用一个嵌套的对象来存储这些日期。
2. **动态生成列配置**:
根据上一步收集到的日期信息,动态生成表格的列配置。
3. **更新表格数据**:
将解析后的数据更新到表格中,确保数据的结构与动态生成的列配置相匹配。
### 示例代码
下面是一个简化的示例代码,展示了如何实现上述步骤:
async sync fetchCurrentResult() {
try {
const result = await getCheckResultSummary({
equipmentNumber: this.equipment.equipmentNumber,
checkRange: this.currentYear,
});
console.log("result", result.data.data);
// 用于存储每个月的日期
const dateMap = {};
// 解析数据并收集日期
result.data.data.forEach(item => {
if (item.createTime) {
const date = this.$moment(item.createTime).format('YYYY-MM-DD');
const month = this.$moment(item.createTime).format('YYYY-MM');
if (!dateMap[month]) {
dateMap[month] = new Set();
}
dateMap[month].add(date);
}
});
// 动态生成列配置
const tableColumns = [];
const months = Object.keys(dateMap).sort();
months.forEach(month => {
const monthColumn = new TableColumn({
title: month,
type: "String",
field: month,
width: 100,
children: dateMap[month].map(date => ({
title: date,
type: "String",
field: `${month}_${date.replace(/-/g, '')}`, // 创建一个唯一的字段名
width: 100,
options: { readOnlyCell: true },
children: [
new TableColumn({
title: "点检",
type: "String",
field: `${month}_${date.replace(/-/g, '')}_checkResult`,
options: {
selection: "checkResult",
itemProps: { code: "code", name: "label" },
},
}),
new TableColumn({
title: "处置",
type: "String",
field: `${month}_${date.replace(/-/g, '')}_checkHandle`,
classCode: "CHECK_HANDLE",
options: { multiple: true },
}),
],
})),
});
tableColumns.push(monthColumn);
});
// 排序后更新表格数据
const summaryMap = result.data.data.reduce((result, item) => {
if (item) {
const { createTime, checkResult, checkHandle, itemName } = item;
const date = this.$moment(createTime).format('YYYY-MM-DD');
const month = this.$moment(createTime).format('YYYY-MM');
const key = `${month}_${date.replace(/-/g, '')}`;
if (!result[itemName]) {
result[itemName] = {};
}
result[itemName][`${month}_${date.replace(/-/g, '')}_checkResult`] = checkResult;
result[itemName][`${month}_${date.replace(/-/g, '')}_checkHandle`] = checkHandle;
}
return result;
}, {});
this.tableData = Object.values(summaryMap).sort((a, b) => a.seq - b.seq);
console.log("tableData", this.tableData);
console.log("tableColumns", tableColumns);
this.tableColumns = tableColumns;
} catch (error) {
console.error("Error fetching check result summary:", error);
}
}
### 说明
- **日期格式**:这里使用 `YYYY-MM-DD` 格式来存储和比较日期,你可以根据需要调整。
- **字段名**:为了避免字段名冲突,这里使用 `${month}_${date.replace(/-/g, '')}` 来创建唯一的字段名。你需要确保在数据处理和显示时都能正确解析这些字段名。
- **数据更新**:在 `summaryMap` 中,你需要根据动态生成的字段名来存储和更新数据。
我在时刻js需要帮助。我有这段代码,它给了我月份名称、日期和日期。 以下是它的输出1月2月3月4月5月6月7月8月9月10月11月12月1日——Fri 2日星期六3日4日星期一5日星期二6日星期三7日星期四8日——Fri 9日星期六10日星期日11日星期一12日星期二 我需要以这种方式输出 1 月及以下我需要其相应的日期和日期 这样,可以请有人帮助我实现这一点。
日期组件有有开始日期和结束日期 怎么处理选中的时间在一个月30天?
我有两次约会。一个是以YYYYMMDD格式从其他应用程序的表中检索的,第二个日期是本地时间,我需要这两个日期之间的天数/月/年。 我试过了 但这给了我一些乱七八糟的数字。 变量$t=Fri Dec31 00:00:00 9999 变量$今天=Wed Feb19 14:40:55 2020 产出:25182094888 有什么想法吗?提前谢谢。
我试图显示的细节插入到我的数据库上weppage 我尝试过将日期转换为sql日期 我预计输出为2000年3月2日,但它不起作用
如果我有一个返回日期的变量,格式为dd-MMM-yyyy,那么2014年8月28日,如何获取上个月的日期。 我可以通过以下方式修改月份: 本质上,这是在月份中增加一个...但是我怎么能解释年份,所以如果当前日期是2014年12月12日,之前的日期是2013年1月12日? 我的应用程序使用AngularJS可以使用过滤器。 更新时间: 为什么虽然月份增加了,但日子显示为01而不是28?
问题内容: 我有一张表,如下所示: 我从中创建以下视图: 现在,当我想创建每月计数以了解如何将每日总和除以得出平均列a(即特定月份中的天数)时,就会出现问题。 我知道要在PostgreSQL中获得成功,您可以: 但是我不能使用,我必须以某种方式让它知道分组完成的月份。任何建议,即什么应该取代 ??? 在此视图中: 问题答案: 更快,更短一点,您得到的是天数,而不是: 可以将多个单位合并为一个值。因
我有一个LocalDate,需要得到一个月的第一天和最后一天。我该怎么做? 我需要获取LocalDate格式的和。 使用Three-Ten LocalDate类。
对于我的具体情况,n=4,但可能有一天需要n=5或n=6。 我需要的顶级描述:我有一个表单,允许我将名称和日期添加到跳转日志中。我需要构建一个查询,该查询将显示每个跳转器的四个最近跳转,每个日期有一列。 我的表单将数据存储在“JUMP”表中,该表有3个字段:JUMPID、NAME、DATE。示例数据如下所示: 我现在使用的查询返回每个跳线最近的4次跳转,但将所有日期存储在同一列中。查询是: 此查询