fix_data
This commit is contained in:
parent
a778b0b62c
commit
558d51abe8
@ -1,7 +1,7 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"id": "b933a0edb8cb4d1a85fdd6ca50fc4376",
|
"id": "2ae2925481d541edbd29f7342f77d7a9",
|
||||||
"createdAt": "2026-01-07T16:40:38.094131+08:00",
|
"createdAt": "2026-01-08T19:29:51.290189+08:00",
|
||||||
"customerName": "予芯",
|
"customerName": "予芯",
|
||||||
"intendedProduct": "2025/12/22",
|
"intendedProduct": "2025/12/22",
|
||||||
"version": "1.9.4",
|
"version": "1.9.4",
|
||||||
@ -13,8 +13,8 @@
|
|||||||
"reporter": ""
|
"reporter": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "179dd08fe93d4fbf9c078c362486aa65",
|
"id": "90f51409cdfb412dbeb679124c40d714",
|
||||||
"createdAt": "2026-01-07T16:40:38.095578+08:00",
|
"createdAt": "2026-01-08T19:29:51.291596+08:00",
|
||||||
"customerName": "诺因智能",
|
"customerName": "诺因智能",
|
||||||
"intendedProduct": "2025/12/23",
|
"intendedProduct": "2025/12/23",
|
||||||
"version": "1.9.4",
|
"version": "1.9.4",
|
||||||
@ -26,8 +26,8 @@
|
|||||||
"reporter": ""
|
"reporter": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "2700f88f74c94903a48369c86e05221a",
|
"id": "b46a3544f2f34122a44ba48a9c115010",
|
||||||
"createdAt": "2026-01-07T16:40:38.096324+08:00",
|
"createdAt": "2026-01-08T19:29:51.292431+08:00",
|
||||||
"customerName": "良业",
|
"customerName": "良业",
|
||||||
"intendedProduct": "2025/12/23",
|
"intendedProduct": "2025/12/23",
|
||||||
"version": "1.9.4",
|
"version": "1.9.4",
|
||||||
@ -39,8 +39,8 @@
|
|||||||
"reporter": ""
|
"reporter": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "7ae437bfeaa84e579b012a4ec5fae794",
|
"id": "326ef5f696fc4517ad971f3c18c09d3c",
|
||||||
"createdAt": "2026-01-07T16:40:38.097176+08:00",
|
"createdAt": "2026-01-08T19:29:51.293332+08:00",
|
||||||
"customerName": "斯蒂尔",
|
"customerName": "斯蒂尔",
|
||||||
"intendedProduct": "2025/12/25",
|
"intendedProduct": "2025/12/25",
|
||||||
"version": "1.9.4",
|
"version": "1.9.4",
|
||||||
@ -52,8 +52,8 @@
|
|||||||
"reporter": ""
|
"reporter": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "e45d0a13be724c129a3c4e446517a940",
|
"id": "2ea5ba08d65e4161b2a6d0f7bf0fdc65",
|
||||||
"createdAt": "2026-01-07T16:40:38.098053+08:00",
|
"createdAt": "2026-01-08T19:29:51.293906+08:00",
|
||||||
"customerName": "求之",
|
"customerName": "求之",
|
||||||
"intendedProduct": "2025/12/26",
|
"intendedProduct": "2025/12/26",
|
||||||
"version": "1.9.4",
|
"version": "1.9.4",
|
||||||
@ -65,8 +65,8 @@
|
|||||||
"reporter": ""
|
"reporter": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "157ee3180f9c47efb38ab52e3a3b2b4f",
|
"id": "c526ea3480054f28960643808bb53ef9",
|
||||||
"createdAt": "2026-01-07T16:40:38.099239+08:00",
|
"createdAt": "2026-01-08T19:29:51.294402+08:00",
|
||||||
"customerName": "诺因智能",
|
"customerName": "诺因智能",
|
||||||
"intendedProduct": "2025/12/26",
|
"intendedProduct": "2025/12/26",
|
||||||
"version": "1.9.4",
|
"version": "1.9.4",
|
||||||
@ -78,8 +78,8 @@
|
|||||||
"reporter": ""
|
"reporter": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "b7371743ec5549af8ce643e136334ccf",
|
"id": "4efd8a041ba54782a939c4ce7081b4a3",
|
||||||
"createdAt": "2026-01-07T16:40:38.100073+08:00",
|
"createdAt": "2026-01-08T19:29:51.29499+08:00",
|
||||||
"customerName": "诺因智能",
|
"customerName": "诺因智能",
|
||||||
"intendedProduct": "2025/12/26",
|
"intendedProduct": "2025/12/26",
|
||||||
"version": "1.9.4",
|
"version": "1.9.4",
|
||||||
@ -91,8 +91,8 @@
|
|||||||
"reporter": ""
|
"reporter": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "c87211e0dc6b42f1bb2127259cf64e81",
|
"id": "f90a391c662c4110b757366471a25b74",
|
||||||
"createdAt": "2026-01-07T16:40:38.101288+08:00",
|
"createdAt": "2026-01-08T19:29:51.295487+08:00",
|
||||||
"customerName": "斯蒂尔",
|
"customerName": "斯蒂尔",
|
||||||
"intendedProduct": "2025/12/26",
|
"intendedProduct": "2025/12/26",
|
||||||
"version": "1.9.4",
|
"version": "1.9.4",
|
||||||
@ -104,8 +104,8 @@
|
|||||||
"reporter": ""
|
"reporter": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "d14245e86d3d4ee399996ba6d26b23de",
|
"id": "2b18c018d30145f184e52bfcb04e82b5",
|
||||||
"createdAt": "2026-01-07T16:40:38.101877+08:00",
|
"createdAt": "2026-01-08T19:29:51.295938+08:00",
|
||||||
"customerName": "良业",
|
"customerName": "良业",
|
||||||
"intendedProduct": "2025/12/26",
|
"intendedProduct": "2025/12/26",
|
||||||
"version": "1.9.4",
|
"version": "1.9.4",
|
||||||
@ -117,8 +117,8 @@
|
|||||||
"reporter": ""
|
"reporter": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "e6fe3693b67d406e9edd056fc48c7119",
|
"id": "e95a8e18feb84e8782aaa927c6019871",
|
||||||
"createdAt": "2026-01-07T16:40:38.102556+08:00",
|
"createdAt": "2026-01-08T19:29:51.296574+08:00",
|
||||||
"customerName": "良业",
|
"customerName": "良业",
|
||||||
"intendedProduct": "2025/12/29",
|
"intendedProduct": "2025/12/29",
|
||||||
"version": "1.9.4",
|
"version": "1.9.4",
|
||||||
@ -130,8 +130,8 @@
|
|||||||
"reporter": ""
|
"reporter": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "ec24619e11014cb4a3e2f6d9e4b2d618",
|
"id": "7b08b842f8bb43de99b19b19c480eee3",
|
||||||
"createdAt": "2026-01-07T16:40:38.103257+08:00",
|
"createdAt": "2026-01-08T19:29:51.29745+08:00",
|
||||||
"customerName": "诺因智能",
|
"customerName": "诺因智能",
|
||||||
"intendedProduct": "2025/12/29",
|
"intendedProduct": "2025/12/29",
|
||||||
"version": "1.9.4",
|
"version": "1.9.4",
|
||||||
@ -143,8 +143,8 @@
|
|||||||
"reporter": ""
|
"reporter": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "a9fc0da9bee44acba2d43d15e06079ed",
|
"id": "7288f08cb73b4c1ba498c28cda3bf55e",
|
||||||
"createdAt": "2026-01-07T16:40:38.10396+08:00",
|
"createdAt": "2026-01-08T19:29:51.298267+08:00",
|
||||||
"customerName": "良业",
|
"customerName": "良业",
|
||||||
"intendedProduct": "2025/12/30",
|
"intendedProduct": "2025/12/30",
|
||||||
"version": "1.9.4",
|
"version": "1.9.4",
|
||||||
@ -156,8 +156,8 @@
|
|||||||
"reporter": ""
|
"reporter": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "0bd2e8d859d7466293182181490d56b4",
|
"id": "259770db2c75419f99ee0d15b226c28d",
|
||||||
"createdAt": "2026-01-07T16:40:38.104695+08:00",
|
"createdAt": "2026-01-08T19:29:51.299503+08:00",
|
||||||
"customerName": "良业",
|
"customerName": "良业",
|
||||||
"intendedProduct": "2025/12/30",
|
"intendedProduct": "2025/12/30",
|
||||||
"version": "1.9.4",
|
"version": "1.9.4",
|
||||||
@ -169,8 +169,8 @@
|
|||||||
"reporter": ""
|
"reporter": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "3576f30f7b7d489e91f2c638b9aae7af",
|
"id": "f62e3bcaaf884a1e9f694d5b5a609477",
|
||||||
"createdAt": "2026-01-07T16:40:38.105387+08:00",
|
"createdAt": "2026-01-08T19:29:51.300399+08:00",
|
||||||
"customerName": "诺因智能",
|
"customerName": "诺因智能",
|
||||||
"intendedProduct": "2025/12/30",
|
"intendedProduct": "2025/12/30",
|
||||||
"version": "1.9.4",
|
"version": "1.9.4",
|
||||||
@ -182,8 +182,8 @@
|
|||||||
"reporter": ""
|
"reporter": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "1cdb5f53ee734caf859fc0597a60f13a",
|
"id": "02926ba82c834267a6911a15e4b3847d",
|
||||||
"createdAt": "2026-01-07T16:40:38.106029+08:00",
|
"createdAt": "2026-01-08T19:29:51.301521+08:00",
|
||||||
"customerName": "诺因智能",
|
"customerName": "诺因智能",
|
||||||
"intendedProduct": "2025/12/31",
|
"intendedProduct": "2025/12/31",
|
||||||
"version": "1.9.4",
|
"version": "1.9.4",
|
||||||
@ -195,8 +195,8 @@
|
|||||||
"reporter": ""
|
"reporter": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "e01001a4667d45e0872d506df39be397",
|
"id": "bb4087f2ae9940fdb7ab994b8b5f4136",
|
||||||
"createdAt": "2026-01-07T16:40:38.106833+08:00",
|
"createdAt": "2026-01-08T19:29:51.302148+08:00",
|
||||||
"customerName": "诺因智能",
|
"customerName": "诺因智能",
|
||||||
"intendedProduct": "2025/12/31",
|
"intendedProduct": "2025/12/31",
|
||||||
"version": "1.9.4",
|
"version": "1.9.4",
|
||||||
@ -208,8 +208,8 @@
|
|||||||
"reporter": ""
|
"reporter": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "e52a8badaab840a2a6dd27a614d1e929",
|
"id": "d89faa6bbbb448a4bbe8b68b9cb7a5a9",
|
||||||
"createdAt": "2026-01-07T16:40:38.107656+08:00",
|
"createdAt": "2026-01-08T19:29:51.302779+08:00",
|
||||||
"customerName": "诺因智能",
|
"customerName": "诺因智能",
|
||||||
"intendedProduct": "2025/12/31",
|
"intendedProduct": "2025/12/31",
|
||||||
"version": "1.9.4",
|
"version": "1.9.4",
|
||||||
@ -221,8 +221,8 @@
|
|||||||
"reporter": ""
|
"reporter": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "bbf8dd91213b4d96b96bbeb43ed9930e",
|
"id": "a52d112c39ac4dadb1bb80a567feaf69",
|
||||||
"createdAt": "2026-01-07T16:40:38.108654+08:00",
|
"createdAt": "2026-01-08T19:29:51.303529+08:00",
|
||||||
"customerName": "诺因智能",
|
"customerName": "诺因智能",
|
||||||
"intendedProduct": "2025/12/31",
|
"intendedProduct": "2025/12/31",
|
||||||
"version": "1.9.4",
|
"version": "1.9.4",
|
||||||
|
|||||||
@ -218,7 +218,7 @@
|
|||||||
<h3><i class="fas fa-chart-pie"></i> 数据分布</h3>
|
<h3><i class="fas fa-chart-pie"></i> 数据分布</h3>
|
||||||
<div class="chart-controls">
|
<div class="chart-controls">
|
||||||
<select id="chartFieldSelect" class="chart-field-select">
|
<select id="chartFieldSelect" class="chart-field-select">
|
||||||
<option value="intendedProduct">客户</option>
|
<option value="customerName">客户</option>
|
||||||
<option value="type">类型</option>
|
<option value="type">类型</option>
|
||||||
<option value="module">模块</option>
|
<option value="module">模块</option>
|
||||||
<option value="reporter">报告人</option>
|
<option value="reporter">报告人</option>
|
||||||
@ -236,7 +236,7 @@
|
|||||||
<h3><i class="fas fa-chart-doughnut"></i> 客户类型</h3>
|
<h3><i class="fas fa-chart-doughnut"></i> 客户类型</h3>
|
||||||
<div class="chart-controls">
|
<div class="chart-controls">
|
||||||
<select id="typeChartFieldSelect" class="chart-field-select">
|
<select id="typeChartFieldSelect" class="chart-field-select">
|
||||||
<option value="intendedProduct">客户</option>
|
<option value="customerName">客户</option>
|
||||||
<option value="type">类型</option>
|
<option value="type">类型</option>
|
||||||
<option value="module">模块</option>
|
<option value="module">模块</option>
|
||||||
<option value="reporter">报告人</option>
|
<option value="reporter">报告人</option>
|
||||||
|
|||||||
@ -534,16 +534,16 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||||||
|
|
||||||
if (startDate) {
|
if (startDate) {
|
||||||
filteredData = filteredData.filter(c => {
|
filteredData = filteredData.filter(c => {
|
||||||
if (!c.customerName) return false;
|
if (!c.intendedProduct) return false;
|
||||||
const date = normalizeDateValue(c.customerName);
|
const date = normalizeDateValue(c.intendedProduct);
|
||||||
return date && date >= startDate;
|
return date && date >= startDate;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (endDate) {
|
if (endDate) {
|
||||||
filteredData = filteredData.filter(c => {
|
filteredData = filteredData.filter(c => {
|
||||||
if (!c.customerName) return false;
|
if (!c.intendedProduct) return false;
|
||||||
const date = normalizeDateValue(c.customerName);
|
const date = normalizeDateValue(c.intendedProduct);
|
||||||
return date && date <= endDate;
|
return date && date <= endDate;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -854,7 +854,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||||||
|
|
||||||
// Update dashboard statistics
|
// Update dashboard statistics
|
||||||
function updateDashboardStats(customers) {
|
function updateDashboardStats(customers) {
|
||||||
const totalCustomers = new Set(customers.map(c => c.intendedProduct).filter(c => c)).size;
|
const totalCustomers = new Set(customers.map(c => c.customerName).filter(c => c)).size;
|
||||||
|
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
const currentMonth = String(now.getMonth() + 1).padStart(2, '0');
|
const currentMonth = String(now.getMonth() + 1).padStart(2, '0');
|
||||||
@ -862,20 +862,20 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||||||
const newCustomers = new Set(
|
const newCustomers = new Set(
|
||||||
customers.filter(customer => {
|
customers.filter(customer => {
|
||||||
if (!customer.customerName) return false;
|
if (!customer.customerName) return false;
|
||||||
const normalized = normalizeDateValue(customer.customerName);
|
const normalized = normalizeDateValue(customer.intendedProduct);
|
||||||
if (!normalized) return false;
|
if (!normalized) return false;
|
||||||
const year = parseInt(normalized.slice(0, 4), 10);
|
const year = parseInt(normalized.slice(0, 4), 10);
|
||||||
const month = normalized.slice(5, 7);
|
const month = normalized.slice(5, 7);
|
||||||
return year === currentYear && month === currentMonth;
|
return year === currentYear && month === currentMonth;
|
||||||
}).map(c => c.intendedProduct).filter(c => c)
|
}).map(c => c.customerName).filter(c => c)
|
||||||
).size;
|
).size;
|
||||||
|
|
||||||
const products = new Set(customers.map(c => c.intendedProduct)).size;
|
const products = new Set(customers.map(c => c.version)).size;
|
||||||
|
|
||||||
const completed = new Set(
|
const completed = new Set(
|
||||||
customers.filter(c =>
|
customers.filter(c =>
|
||||||
c.statusProgress && (c.statusProgress.includes('已修复') || c.statusProgress.includes('完成') || c.statusProgress.toLowerCase().includes('complete'))
|
c.statusProgress && (c.statusProgress.includes('已修复') || c.statusProgress.includes('完成') || c.statusProgress.toLowerCase().includes('complete'))
|
||||||
).map(c => c.intendedProduct).filter(c => c)
|
).map(c => c.customerName).filter(c => c)
|
||||||
).size;
|
).size;
|
||||||
|
|
||||||
document.getElementById('totalCustomers').textContent = totalCustomers;
|
document.getElementById('totalCustomers').textContent = totalCustomers;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user