// 全局变量定义 let page = 11; // 初始页码为1,代表从第1条数据开始获取 let pageSize = 20; // 初始每次固定获取10条数据 let total = 0; // 数据总量(从接口获取) let loadedItems = 0; // 已加载的数据条目数量 let isLoading = false; // 防止多次加载 const timeoutDuration = 10000; // 超时时间10秒 const preLoadDistance = 300; // 距离底部300px时提前加载 // 假设 Authorization 值存储在 localStorage 中,key 为 "authToken" const authToken = localStorage.getItem("Authorization"); const currentUserInfo = fetchUsername(); // 获取当前用户登录信息 let currentUserPermissions; // 用于存储用户权限信息 //获取 主内容区域 const license_info_mainElement = document.querySelector('main'); // 主内容区域 //模态框 const license_info_modal = document.getElementById('license-info-modal'); // 模态框容器 const license_info_modalContent = document.querySelector('.license-info-modal-content'); // 模态框内容区域 const license_info_modalDescription = document.getElementById('license-info-modal-description'); // 模态框描述 const license_info_modalPrice = document.getElementById('license-info-modal-price'); // 模态框产品信息 const license_info_modalRating = document.getElementById('license-info-modal-rating'); // 模态框MAC地址 const license_info_closeModal = document.querySelector('.license-info-close'); // 模态框关闭按钮 const license_info_loadingIndicator = document.getElementById('loading-indicator'); // 加载提示元素 //存储 let LicApplicationData = []; // 用于存储从接口获取的数据 //-----------侧边栏---------------------------- // 获取所有菜单项 const menuItems = document.querySelectorAll('nav ul li a'); // 为每个菜单项添加点击事件监听器 menuItems.forEach(item => { item.addEventListener('click', function() { // 移除其他项的 active 类 menuItems.forEach(i => i.classList.remove('active')); // 为当前点击的项添加 active 类 this.classList.add('active'); }); }); //用户管理- //获取用户管理和 License 信息按钮 const userManagementLink = document.getElementById('user-management-link'); const licenseInfoLink = document.getElementById('license-info-link'); const roleManagementLink = document.getElementById('role-management-link'); // 监听用户管理按钮的点击事件 userManagementLink.addEventListener('click', function(event) { event.preventDefault(); // 阻止默认的跳转行为 removeScrollListeners(); // 移除滚动监听器 // 使用 fetch 来加载 user_management.html 的内容 fetch('../user/user_management.html') .then(response => response.text()) .then(data => { // 将 user_management.html 的内容插入到主内容区域 license_info_mainElement.innerHTML = data; // 动态引入 user.js 文件 const script = document.createElement('script'); script.src = '../user/user.js'; document.body.appendChild(script); }) .catch(error => console.error('加载用户管理页面失败:', error)); }); // 监听 License 信息按钮的点击事件 licenseInfoLink.addEventListener('click', function(event) { event.preventDefault(); // 阻止默认的跳转行为 // 将瀑布流的 License 信息内容恢复到主内容区域 const licenseInfoHtml = `
${firstItem.ApplicationDate} ${firstItem.ApplicationTime}
创建者:${firstItem.Creator}
公司:${firstItem.Company}
集群:${childRowCount} 套 共计:${firstItem.TotalNodes} 节点
许可证状态:${firstItem.LicenseFlage}
oa_request_id:${firstItem.oa_request_id}
${firstItem.ApplicationDate} ${firstItem.ApplicationTime}
公司:${firstItem.Company}
${firstItem.Project}
创建者:${firstItem.Creator}
许可证状态:${firstItem.LicenseFlage}
UniqueID: ${group.UniqueID}
oa_id: ${group.oa_id}
oa_request_id: ${group.oa_request_id}
Creator: ${group.Creator}
oa_request_name_new: ${group.oa_request_name_new}
`; // 将生成的组内容加入到 modalBody modalBody.appendChild(groupBox); } // 更新下拉框的值 selectPageDropdown.value = page; // 更新按钮状态 prevButton.disabled = (page === 1); nextButton.disabled = (page === totalPages); } // 下拉框页码选择事件 selectPageDropdown.addEventListener('change', function() { currentPage = parseInt(this.value); ModalForCardRenderPage(currentPage); // 根据选择的页码渲染对应页面 }); // 上一页按钮点击事件 prevButton.addEventListener('click', function() { if (currentPage > 1) { currentPage--; ModalForCardRenderPage(currentPage); } }); // 下一页按钮点击事件 nextButton.addEventListener('click', function() { if (currentPage < totalPages) { currentPage++; ModalForCardRenderPage(currentPage); } }); // 显示或隐藏分页相关控件 function togglePaginationVisibility() { if (totalPages <= 1) { // 隐藏下拉框和分页容器 paginationContainer.style.display = 'none'; } else { // 显示下拉框和分页容器 paginationContainer.style.display = 'flex'; } } // 初始化下拉框并渲染第一页 initializeDropdown(); // 渲染模态框内容 ModalForCardRenderPage(currentPage); // 根据页数决定是否显示分页控件 togglePaginationVisibility(); // 显示模态框 modal.style.display = 'flex'; // 显示模态框背景 setTimeout(() => { modalContent.classList.add('show'); // 添加动画效果 }, 10); // 延时确保动画生效 // 关闭模态框逻辑 const closeModal = document.querySelector('.license-info-close'); closeModal.addEventListener('click', () => { modalContent.classList.remove('show'); // 移除动画类 setTimeout(() => { modal.style.display = 'none'; // 完全隐藏模态框 }, 500); // 等待动画结束后再隐藏 }); // 点击模态框外部关闭模态框 window.addEventListener('click', (event) => { if (event.target === modal) { modalContent.classList.remove('show'); setTimeout(() => { modal.style.display = 'none'; // 完全隐藏模态框 }, 500); // 等待动画结束后再隐藏 } }); } //-------下载全部licstr按钮 // 下载许可证功能 function downloadAllLicenses(sortedApplicationArray) { const zip = new JSZip(); console.log("传进来的 sortedApplicationArray:", sortedApplicationArray); // 初始化计数器,从1开始 let idCounter = 1; let Project = sortedApplicationArray[0].Project; console.log("Project", Project); // 遍历 sortedApplicationArray,下载 lic1 和 lic2 数据 sortedApplicationArray.forEach(row => { if (row.LicenseFlage === "已生成") { // 替换 oa_main_mac 和 oa_second_mac 中的冒号为点 const mainMac = row.oa_main_mac.replace(/:/g, '.'); const secondMac = row.oa_second_mac.replace(/:/g, '.'); // 使用递增的 idCounter 替换 row.oa_id if (row.lic1) { const filename1 = `${idCounter}_license.dat_1_${mainMac}`; zip.file(filename1, row.lic1); } if (row.lic2) { const filename2 = `${idCounter}_license.dat_2_${secondMac}`; zip.file(filename2, row.lic2); } // 每次循环后递增计数器 idCounter++; } }); // 生成 ZIP 文件并触发下载 zip.generateAsync({ type: "blob" }).then(content => { const link = document.createElement('a'); link.href = URL.createObjectURL(content); link.download = `${Project}_license.zip`; link.click(); }); } //分发 // 打开分发模态框 function showDistributeModal(supportEmail, salesEmail, userOptions) { console.log("showDistributeModal", supportEmail); const modal = document.getElementById('distribute-modal'); const emailInputs = document.getElementById('emailInputs'); const userInputs = document.getElementById('userInputs'); // 清空内容 emailInputs.innerHTML = ''; userInputs.innerHTML = ''; // 动态生成分发邮箱部分 if (supportEmail) { emailInputs.innerHTML += `