-
• 所有用户均可在线查看和下载 SOP 文件
-
• 管理员可以上传新的 SOP 文件(支持 Excel 和 Word 格式)
-
• 建议为每个 SOP 文件添加清晰的描述说明
+ return `
+
+
+
+
+
+
+
+
+
📄 SOP 说明
+
+
• 所有用户均可在线查看和下载 SOP 文件
+
• 管理员可以上传新的 SOP 文件(支持 Excel 和 Word 格式)
+
• 建议为每个 SOP 文件添加清晰的描述说明
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 上传进度
+ 0%
+
+
+
+ 0 MB / 0 MB
+ 0 KB/s
+
+
+
+
+
- ${filePicker('sop-file','上传 SOP 文件 (Excel/Word)','application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel,text/csv,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/msword')}
-
-
-
-
-
-
-
- 上传进度
- 0%
-
-
-
- 0 MB / 0 MB
- 0 KB/s
-
-
-
- `);
+ `;
}
Router.register('/upload/sop', async () => {
@@ -590,70 +866,98 @@ const Upload = (() => {
async function bindMacEvents(){
const fileEl=document.getElementById('mac-file');
const btn = document.getElementById('mac-upload');
- const showHistoryBtn = document.getElementById('mac-show-history');
- const clearDisplayBtn = document.getElementById('mac-clear-display');
+ const viewHistoryBtn = document.getElementById('mac-view-history');
+ const toggleHelpBtn = document.getElementById('mac-toggle-help');
+ const helpContent = document.getElementById('mac-help-content');
+ const helpIcon = document.getElementById('mac-help-icon');
- // 显示历史记录的通用函数
- const displayHistory = async (showAll = false) => {
- const listEl = document.getElementById('mac-list');
+ // 格式说明折叠/展开功能
+ addListener(toggleHelpBtn, 'click', () => {
+ const isHidden = helpContent.style.display === 'none';
+ helpContent.style.display = isHidden ? 'block' : 'none';
+ helpIcon.style.transform = isHidden ? 'rotate(180deg)' : 'rotate(0deg)';
+ });
+
+ // 历史记录弹窗功能
+ const showHistoryModal = async () => {
+ const modal = document.getElementById('mac-history-modal');
+ const listEl = document.getElementById('mac-history-modal-list');
+
+ if(!modal || !listEl) return;
+
+ // 显示弹窗
+ modal.style.display = 'block';
+ listEl.innerHTML = '
加载中...
';
+
try {
const data = await API.listMac();
- if(listEl){
- if(data.list && data.list.length > 0){
- const platformNames = {pdd: '拼多多', yt: '圆通', tx: '兔喜'};
+ if(data.list && data.list.length > 0){
+ const platformNames = {pdd: '拼多多', yt: '圆通', tx: '兔喜'};
+
+ // 按时间和机种分组统计
+ const uploadGroups = {};
+ data.list.forEach(r => {
+ const date = new Date(r.ts).toLocaleDateString('zh-CN');
+ const platform = platformNames[r.platform] || r.platform || '未知';
+ const key = `${date}_${platform}`;
- // 按时间和机种分组统计
- const uploadGroups = {};
- data.list.forEach(r => {
- const date = new Date(r.ts).toLocaleDateString('zh-CN');
- const platform = platformNames[r.platform] || r.platform || '未知';
- const key = `${date}_${platform}`;
-
- if (!uploadGroups[key]) {
- uploadGroups[key] = {
- date: date,
- platform: platform,
- count: 0,
- firstTime: r.ts
- };
- }
- uploadGroups[key].count++;
- });
-
- // 转换为数组并按时间排序
- const groupArray = Object.values(uploadGroups)
- .sort((a, b) => new Date(b.firstTime) - new Date(a.firstTime));
-
- listEl.innerHTML = groupArray.map(g => {
- return `
-
-
${g.date}
-
上传 ${g.count} 条记录
-
-
- ${g.platform}
-
- `;
- }).join('');
-
- if(showAll) {
- const totalGroups = groupArray.length;
- const totalRecords = data.list.length;
- API.toast(`显示 ${totalGroups} 次上传记录,共 ${totalRecords} 条数据`);
+ if (!uploadGroups[key]) {
+ uploadGroups[key] = {
+ date: date,
+ platform: platform,
+ count: 0,
+ firstTime: r.ts
+ };
}
- } else {
- listEl.innerHTML = '
暂无历史记录';
- }
+ uploadGroups[key].count++;
+ });
+
+ // 转换为数组并按时间排序
+ const groupArray = Object.values(uploadGroups)
+ .sort((a, b) => new Date(b.firstTime) - new Date(a.firstTime));
+
+ listEl.innerHTML = `
+
+
共 ${groupArray.length} 次上传,总计 ${data.list.length} 条记录
+
+
+ ${groupArray.map(g => {
+ return `-
+
+
${g.date}
+
上传 ${g.count} 条记录
+
+
+ ${g.platform}
+
+ `;
+ }).join('')}
+
+ `;
+ } else {
+ listEl.innerHTML = '
暂无历史记录
';
}
} catch(e) {
+ listEl.innerHTML = '
加载失败,请重试
';
API.toast('加载历史记录失败');
- if(listEl) listEl.innerHTML = '
加载失败';
}
};
- // 查看历史按钮 - 从服务器获取所有用户的上传记录
- addListener(showHistoryBtn, 'click', async ()=>{
- await displayHistory(true);
+ // 查看历史记录按钮
+ addListener(viewHistoryBtn, 'click', showHistoryModal);
+
+ // 关闭弹窗
+ const closeBtn = document.getElementById('mac-history-modal-close');
+ const backdrop = document.querySelector('#mac-history-modal .notification-modal-backdrop');
+
+ addListener(closeBtn, 'click', () => {
+ const modal = document.getElementById('mac-history-modal');
+ if(modal) modal.style.display = 'none';
+ });
+
+ addListener(backdrop, 'click', () => {
+ const modal = document.getElementById('mac-history-modal');
+ if(modal) modal.style.display = 'none';
});
// 文件选择后立即验证
@@ -683,77 +987,6 @@ const Upload = (() => {
}
});
- // 查看历史按钮 - 从服务器获取所有用户的上传记录
- addListener(showHistoryBtn, 'click', async ()=>{
- const listEl = document.getElementById('mac-list');
- try {
- const data = await API.listMac();
- if(listEl){
- if(data.list && data.list.length > 0){
- const platformNames = {pdd: '拼多多', yt: '圆通', tx: '兔喜'};
-
- // 按时间和机种分组统计
- const uploadGroups = {};
- data.list.forEach(r => {
- const date = new Date(r.ts).toLocaleDateString('zh-CN');
- const platform = platformNames[r.platform] || r.platform || '未知';
- const key = `${date}_${platform}`;
-
- if (!uploadGroups[key]) {
- uploadGroups[key] = {
- date: date,
- platform: platform,
- count: 0,
- firstTime: r.ts
- };
- }
- uploadGroups[key].count++;
- });
-
- // 转换为数组并按时间排序
- const groupArray = Object.values(uploadGroups)
- .sort((a, b) => new Date(b.firstTime) - new Date(a.firstTime));
-
- listEl.innerHTML = groupArray.map(g => {
- const time = new Date(g.firstTime).toLocaleString('zh-CN', {
- month: '2-digit',
- day: '2-digit',
- hour: '2-digit',
- minute: '2-digit'
- });
- return `
-
-
${g.date}
-
上传 ${g.count} 条记录
-
-
- ${g.platform}
-
- `;
- }).join('');
-
- const totalGroups = groupArray.length;
- const totalRecords = data.list.length;
- API.toast(`显示 ${totalGroups} 次上传记录,共 ${totalRecords} 条数据`);
- } else {
- listEl.innerHTML = '
暂无历史记录';
- }
- }
- } catch(e) {
- API.toast('加载历史记录失败');
- if(listEl) listEl.innerHTML = '
加载失败';
- }
- });
-
- // 清空显示按钮
- addListener(clearDisplayBtn, 'click', ()=>{
- const listEl = document.getElementById('mac-list');
- if(listEl){
- listEl.innerHTML = '
已清空显示';
- API.toast('已清空显示(历史记录仍保留)');
- }
- });
-
addListener(btn, 'click', async ()=>{
const file = fileEl.files[0];
if(!file){
@@ -804,64 +1037,15 @@ const Upload = (() => {
if(result.ok){
API.toast('上传成功');
- // 解析并显示成功上传的记录
+ // 解析成功上传的记录
const output = result.output || '';
const jsonMatch = output.match(/=== 成功导入的数据 ===\n([\s\S]*?)\n=== 数据输出结束 ===/);
if(jsonMatch && jsonMatch[1]){
try{
const records = JSON.parse(jsonMatch[1].trim());
if(records.length > 0){
- // 保存到本地历史记录(仅用于本地显示)
saveToHistory(records);
-
- // 重新从服务器加载数据并显示
- const listEl = document.getElementById('mac-list');
- if(listEl){
- try {
- const serverData = await API.listMac();
- if(serverData.list && serverData.list.length > 0){
- const platformNames = {pdd: '拼多多', yt: '圆通', tx: '兔喜'};
-
- // 按时间和机种分组统计
- const uploadGroups = {};
- serverData.list.forEach(r => {
- const date = new Date(r.ts).toLocaleDateString('zh-CN');
- const platform = platformNames[r.platform] || r.platform || '未知';
- const key = `${date}_${platform}`;
-
- if (!uploadGroups[key]) {
- uploadGroups[key] = {
- date: date,
- platform: platform,
- count: 0,
- firstTime: r.ts
- };
- }
- uploadGroups[key].count++;
- });
-
- // 转换为数组并按时间排序
- const groupArray = Object.values(uploadGroups)
- .sort((a, b) => new Date(b.firstTime) - new Date(a.firstTime));
-
- listEl.innerHTML = groupArray.map(g => {
- return `
-
-
${g.date}
-
上传 ${g.count} 条记录
-
-
- ${g.platform}
-
- `;
- }).join('');
-
- API.toast(`成功上传 ${records.length} 条记录`);
- }
- } catch(e) {
- console.error('刷新列表失败:', e);
- }
- }
+ API.toast(`成功上传 ${records.length} 条记录`);
}
}catch(e){
console.error('解析上传记录失败:', e);