123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551 |
- function showDistributeModal(item) {
- const modal = document.getElementById('DistributeModal');
-
- modal.style.display = 'flex';
- let usersInfo;
-
- fetch('http://127.0.0.1:8080/api/admin/distributeLicenseByUserInfo', {
- method: 'GET',
- headers: {
- 'Authorization': `Bearer ${authToken}`,
- 'Content-Type': 'application/json'
- }
- })
- .then(response => {
- if (!response.ok) {
- throw new Error('Network response was not ok');
- }
- return response.json();
- })
- .then(data => {
- usersInfo = data.data;
- console.log('用户信息:', usersInfo);
-
- handleEmailSection(item,usersInfo);
-
- handleUserSection(item, usersInfo);
-
- })
- .catch(error => {
- console.error('获取用户信息失败:', error);
- });
-
- const closeModalBtn = document.querySelector('.DistributeModal-close');
- closeModalBtn.addEventListener('click', closeDistributeModal);
-
- window.addEventListener('click', (event) => {
- if (event.target === modal) {
- closeDistributeModal();
- }
- });
- }
- function handleEmailSection(item, usersInfo) {
- console.log('调用邮箱处理');
- console.log('handleEmailSection 用户信息:', usersInfo);
- const emailInputs = document.getElementById('DistributeModal-email-inputs');
- emailInputs.innerHTML = '';
-
- const salesEmailLabel = document.getElementById('salesEmailCheckbox').parentElement;
- salesEmailLabel.innerHTML = `
- <input type="checkbox" id="salesEmailCheckbox" class="DistributeModal-checkbox">
- <span class="DistributeModal-checkbox-custom"></span>
- 销售邮箱 (${item.SalesPerson}: ${item.SalesEmail})
- `;
- const supportEmailLabel = document.getElementById('supportEmailCheckbox').parentElement;
- supportEmailLabel.innerHTML = `
- <input type="checkbox" id="supportEmailCheckbox" class="DistributeModal-checkbox">
- <span class="DistributeModal-checkbox-custom"></span>
- 运维邮箱 (${item.SupportPerson}: ${item.SupportEmail})
- `;
-
- const addEmailBtn = document.getElementById('DistributeModal-add-email-btn');
- addEmailBtn.replaceWith(addEmailBtn.cloneNode(true));
- const newAddEmailBtn = document.getElementById('DistributeModal-add-email-btn');
-
- newAddEmailBtn.addEventListener('click', () => {
- const emailWrapper = document.createElement('div');
- emailWrapper.className = 'DistributeModal-email-input-wrapper';
- const newEmailInput = document.createElement('input');
- newEmailInput.type = 'email';
- newEmailInput.placeholder = '输入分发邮箱';
- newEmailInput.className = 'DistributeModal-email-input';
-
- const removeEmailBtn = document.createElement('button');
- removeEmailBtn.className = 'DistributeModal-remove-email-btn';
- removeEmailBtn.innerHTML = '×';
- removeEmailBtn.addEventListener('click', () => {
- emailWrapper.remove();
- });
-
- emailWrapper.appendChild(newEmailInput);
- emailWrapper.appendChild(removeEmailBtn);
-
- emailInputs.appendChild(emailWrapper);
- });
-
- function findDuplicates(arr) {
- const seen = new Set();
- const duplicates = [];
- arr.forEach((email) => {
- if (seen.has(email)) {
- duplicates.push(email);
- } else {
- seen.add(email);
- }
- });
- return duplicates;
- }
-
- const emailConfirmBtn = document.getElementById('DistributeModal-email-confirm-btn');
- emailConfirmBtn.addEventListener('click', () => {
-
- let emails = Array.from(document.querySelectorAll('.DistributeModal-email-input'))
- .map(input => input.value.trim())
- .filter(email => email);
-
- const isSalesEmailChecked = document.getElementById('salesEmailCheckbox').checked;
- const isSupportEmailChecked = document.getElementById('supportEmailCheckbox').checked;
- if (isSalesEmailChecked) {
- emails.push(item.SalesEmail);
- }
- if (isSupportEmailChecked) {
- emails.push(item.SupportEmail);
- }
-
- const duplicateEmails = findDuplicates(emails);
- if (duplicateEmails.length > 0) {
- alert(`以下邮箱重复:\n${duplicateEmails.join('\n')}`);
- } else {
- if (confirm("确认发送这些邮件吗?")) {
- distributeEmails(item, [...new Set(emails)], usersInfo);
- closeDistributeModal();
- }
- }
- });
- }
- function handleUserSection(item, usersInfo) {
- console.log('handleUserSection 用户信息:', usersInfo);
- const userInputs = document.getElementById('DistributeModal-user-inputs');
- userInputs.innerHTML = '';
-
- const filteredUsersInfo = usersInfo.filter(user => user.Username !== 'admin');
-
-
- let selectedUsersSet = new Set();
-
- const addSelectBtn = document.getElementById('distributeUser-add-select-btn');
- addSelectBtn.replaceWith(addSelectBtn.cloneNode(true));
- const newAddSelectBtn = document.getElementById('distributeUser-add-select-btn');
-
- const updateSelectOptions = () => {
- Array.from(document.querySelectorAll('.distributeUser-select')).forEach(select => {
- const currentValue = select.value;
- select.innerHTML = '';
-
- const defaultOption = document.createElement('option');
- defaultOption.value = '';
- defaultOption.textContent = '请选择用户';
- select.appendChild(defaultOption);
- filteredUsersInfo.forEach(user => {
- if (!selectedUsersSet.has(user.UniqueID) || user.UniqueID === currentValue) {
- const option = document.createElement('option');
- option.value = user.UniqueID;
- option.setAttribute('data-username', user.Username);
- option.setAttribute('data-account', user.Account);
- option.textContent = `${user.Username} (${user.Account})`;
-
- if (user.UniqueID === currentValue) {
- option.selected = true;
- }
- select.appendChild(option);
- }
- });
- });
- };
- newAddSelectBtn.addEventListener('click', () => {
- const selectWrapper = document.createElement('div');
- selectWrapper.className = 'distributeUser-select-wrapper';
- const select = document.createElement('select');
- select.className = 'distributeUser-select';
-
- const defaultOption = document.createElement('option');
- defaultOption.value = '';
- defaultOption.textContent = '请选择用户';
- defaultOption.selected = true;
- select.appendChild(defaultOption);
-
- updateSelectOptions();
-
- select.addEventListener('change', () => {
- const previousValue = select.dataset.previousValue;
-
- if (previousValue) {
- selectedUsersSet.delete(previousValue);
- }
-
- if (select.value) {
- selectedUsersSet.add(select.value);
- select.dataset.previousValue = select.value;
- }
-
- updateSelectOptions();
- });
-
- const removeSelectBtn = document.createElement('button');
- removeSelectBtn.className = 'DistributeModal-remove-email-btn';
- removeSelectBtn.innerHTML = '×';
- removeSelectBtn.addEventListener('click', () => {
- const previousValue = select.dataset.previousValue;
- if (previousValue) {
- selectedUsersSet.delete(previousValue);
- }
- selectWrapper.remove();
- updateSelectOptions();
- });
-
- selectWrapper.appendChild(select);
- selectWrapper.appendChild(removeSelectBtn);
-
- userInputs.appendChild(selectWrapper);
-
- updateSelectOptions();
- });
-
- const userConfirmBtn = document.getElementById('distributeUser-confirm-btn');
- userConfirmBtn.addEventListener('click', () => {
-
- const selectedUsers = Array.from(document.querySelectorAll('.distributeUser-select'))
- .map(select => {
- if (select.value) {
- const selectedUserInfo = {
- uniqueID: select.value,
- username: select.options[select.selectedIndex].getAttribute('data-username'),
- account: select.options[select.selectedIndex].getAttribute('data-account')
- };
- return selectedUserInfo;
- }
- })
- .filter(user => user !== undefined);
-
- const uniqueIDArray = selectedUsers.map(user => user.uniqueID);
- const usernameArray = selectedUsers.map(user => user.username);
- const accountArray = selectedUsers.map(user => user.account);
- console.log("Unique IDs: ", uniqueIDArray);
- console.log("Usernames: ", usernameArray);
- console.log("Accounts: ", accountArray);
-
-
- distributeUser(item, uniqueIDArray, usernameArray, accountArray);
- closeDistributeModal();
- });
- }
- function closeDistributeModal() {
- const modal = document.getElementById('DistributeModal');
- modal.style.display = 'none';
-
- const emailInputs = document.getElementById('DistributeModal-email-inputs');
- emailInputs.innerHTML = '';
- const userInputs = document.getElementById('DistributeModal-user-inputs');
- userInputs.innerHTML = '';
- }
- function distributeEmails(item, emails, usersInfo) {
- console.log('分发 distributeEmails', { item, emails, usersInfo });
-
- const emailsString = emails.join(',');
-
-
- if (!currentUserInfo) {
- console.error('无法获取当前用户信息');
- return;
- }
-
- const postData = {
- emails: emailsString,
- LicenseUniqueID: item.UniqueID,
- Oa_request_id: item.oa_request_id,
- OperatorUniqueID: currentUserInfo.UniqueID
- };
- console.log('即将发送的数据:', postData);
- showLoadingModal("正在分发邮箱中...");
-
- fetch('http://127.0.0.1:8080/api/admin/DistributeLicenseToEmail', {
- method: 'POST',
- headers: {
- 'Authorization': `Bearer ${authToken}`,
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(postData)
- })
- .then(response => {
- if (!response.ok) {
- hideLoadingModal();
- throw new Error('Network response was not ok');
- }
- return response.json();
- })
- .then(data => {
-
- hideLoadingModal();
- console.log('邮件分发成功:', data);
- alert('邮件分发成功');
- })
- .catch(error => {
-
- hideLoadingModal();
- console.error('分发邮件失败:', error);
- alert('分发邮件失败,请稍后重试');
- });
- }
- function distributeUser(item, uniqueIDArray, usernameArray, accountArray) {
-
- const postData = {
- Oa_request_id: item.oa_request_id,
- LicenseUniqueID: item.UniqueID,
- OperatorUniqueID: currentUserInfo.UniqueID,
- UserUniqueIDs: uniqueIDArray,
- UserNames: usernameArray,
- UserAccounts: accountArray
- };
- console.log('Sending user data:', postData);
- showLoadingModal("正在分发用户中...");
-
- fetch('http://127.0.0.1:8080/api/admin/DistributeLicenseToUser', {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- 'Authorization': `Bearer ${authToken}`
- },
- body: JSON.stringify(postData)
- })
- .then(response => {
- hideLoadingModal();
- if (!response.ok) {
-
- return response.json().then(errorData => {
-
- const errorMessage = errorData.error || '网络响应不正确';
- throw new Error(errorMessage);
- });
- }
- return response.json();
- })
- .then(data => {
- console.log('分发成功:', data);
- alert('分发成功!');
- })
- .catch(error => {
- hideLoadingModal();
- console.error('分发失败:', error.message);
- alert('分发失败: ' + error.message);
- });
-
- }
-
-
-
-
-
- function showDistributionHistory(selectedRowData) {
- fetch('http://127.0.0.1:8080/api/admin/GetlicenseRecord', {
- method: 'POST',
- headers: {
- 'Authorization': `Bearer ${authToken}`,
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify({ uniqueID: selectedRowData.UniqueID, oa_request_id: selectedRowData.oa_request_id })
- })
- .then(response => response.json())
- .then(data => {
- console.log("showDistributionHistory", data);
-
- const userRecords = data.data.license_record_to_user || [];
- const emailRecords = data.data.license_record_to_emails || [];
-
- const userContent = userRecords.length > 0 ?
- userRecords.map(user => `
- <div class="distributionHistory-user">
- <div>用户名: ${user.user_account}</div>
- <div>唯一用户 ID: ${user.user_unique_id}</div>
- <div>更新时间: ${new Date(user.up_time).toLocaleString()}</div>
- </div>
- `).join('') :
- '<div class="distributionHistory-no-record">无用户记录</div>';
-
-
- const emailContent = emailRecords.length > 0 ?
- emailRecords.map(email => `
- <div class="distributionHistory-email">
- <div>邮箱: ${email.emails}</div>
- <div>更新时间: ${new Date(email.up_time).toLocaleString()}</div>
- </div>
- `).join('') :
- '<div class="distributionHistory-no-record">无邮箱记录</div>';
-
- document.getElementById('distributionHistory-user-content').innerHTML = userContent;
- document.getElementById('distributionHistory-email-content').innerHTML = emailContent;
-
- document.getElementById('distributionHistory-modal').style.display = 'block';
- })
- .catch(error => {
- console.error('Error fetching distribution history:', error);
- });
-
- document.querySelector('.distributionHistory-modal-close').addEventListener('click', () => {
- document.getElementById('distributionHistory-modal').style.display = 'none';
- });
-
- window.addEventListener('click', function(event) {
- const modal = document.getElementById('distributionHistory-modal');
- if (event.target === modal) {
- modal.style.display = 'none';
- }
- });
- }
- function formatDateTime(dateString) {
- const date = new Date(dateString);
-
- const year = date.getUTCFullYear();
- const month = String(date.getUTCMonth() + 1).padStart(2, '0');
- const day = String(date.getUTCDate()).padStart(2, '0');
- const hours = String(date.getUTCHours()).padStart(2, '0');
- const minutes = String(date.getUTCMinutes()).padStart(2, '0');
- const seconds = String(date.getUTCSeconds()).padStart(2, '0');
-
- return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
- }
|