var isLoading = false; var tools = { highlightErrorFields: function (data) { if (!data.ErrorParameters) { tools.alert(data.message); return; } data.ErrorParameters.forEach(function (error) { // 获取 Name 属性的值 var fieldName = error.Name; // 查找具有相同 name 属性值的所有元素 var elements = document.getElementsByName(fieldName); // 循环遍历找到的元素,设置样式 for (var i = 0; i < elements.length; i++) { elements[i].style.border = "2px solid red"; var spanElement = document.createElement("span"); spanElement.style.color = "red"; spanElement.style.marginLeft = "5px"; // 调整距离,可根据需要更改 spanElement.innerHTML = error.Message; // 将 span 元素添加到当前元素的后面 elements[i].parentNode.insertBefore(spanElement, elements[i].nextSibling); } setTimeout(function () { for (var i = 0; i < elements.length; i++) { elements[i].style.border = ""; // 移除当前元素后面的 span 元素 var nextSibling = elements[i].nextSibling; if (nextSibling && nextSibling.tagName === "SPAN") { elements[i].parentNode.removeChild(nextSibling); } } }, 3000); }); }, alert: function (msg) { $(divAlertBody).html(msg); btnAlert.click(); }, objectToQueryString: function (obj) { return Object.keys(obj) .filter(key => obj[key] !== null && obj[key] !== undefined) // Filter out null and undefined values .map(key => key + '=' + encodeURIComponent(obj[key])) .join('&'); }, formToJson: function (formId) { var form = document.getElementById(formId); var formData = new FormData(form); var jsonData = {}; formData.forEach(function (value, key) { jsonData[key] = value; }); return jsonData; }, isValidURLPattern: function (inputString) { var url = "https://www.rezero.com" + inputString; var pattern = /^((http|https|ftp):\/\/)?([a-zA-Z0-9_-]+\.)+[a-zA-Z]{2,6}(\/[a-zA-Z0-9_.-]*)*\/?$/; return (pattern.test(url)); }, ensureNumeric: function (inputField) { // 尝试将输入值转换为数字 var value = inputField.value; // 尝试将输入值转换为数字 var numericValue = parseFloat(value); // 如果转换失败,则将值设置为 0 if (isNaN(numericValue)) { numericValue = 0; } // 将更新后的值设置回输入框 inputField.value = numericValue; }, showSpecifiedElementAndHideOthers: function (elementToShowId, elementsToHideIds) { // 显示指定元素并隐藏其他元素 document.getElementById(elementToShowId).style.display = "block"; for (var i = 0; i < elementsToHideIds.length; i++) { document.getElementById(elementsToHideIds[i]).style.display = "none"; } }, assignValuesToObject: function (sourceObject, targetObject) { Object.keys(sourceObject).forEach(function (key) { if (targetObject.hasOwnProperty(key)) { targetObject[key] = sourceObject[key]; } else { console.warn(`Property '${key}' does not exist in the target object.`); } }); }, openLoading: function () { var loadingOverlay = document.getElementById('loadingOverlay'); loadingOverlay.style.display = 'flex'; }, closeLoading: function () { var loadingOverlay = document.getElementById('loadingOverlay'); loadingOverlay.style.display = 'none'; }, getValue: function (id) { var element = document.getElementById(id); if (element) { return element.value; } else { return null; } }, checkAuthorization: function () { setTimeout(function () { var tokeEle = document.getElementById("txtToken"); if (tokeEle) return; axios.get("/PrivateReZeroRoute/100004/GetDbTypeList", jwHeader) .then(response => { this.dbTypeList = response.data; isLoading = true; this.error = null; }) .catch(error => { isLoading = true; this.error = error.message; this.data = null; }); }, 3000) }, jsonToUrl: function (json) { return Object.keys(json).map(function (key) { return encodeURIComponent(key) + '=' + encodeURIComponent(json[key]); }).join('&'); }, initColor: function () { if (localStorage.BgColorType == 1) { document.body.setAttribute('data-theme', 'dark'); } else if (localStorage.BgColorType !== 'default') { document.body.setAttribute('data-theme', 'default'); } var dropdown = document.querySelector('.dropdown-skin.open'); if (dropdown) { // 移除 "open" 类,添加 "close" 类 dropdown.classList.remove('open'); dropdown.classList.add('close'); } }, appendQueryParams: function (url) { // 从当前 URL 中提取查询参数 const searchParams = new URLSearchParams(window.location.search); const params = {}; // 动态提取 token 和 model if (searchParams.has('token')) { params.token = searchParams.get('token'); } if (searchParams.has('model')) { params.model = searchParams.get('model'); } // 如果没有参数,直接返回原始 URL if (Object.keys(params).length === 0) { return url; } // 检查 URL 是否已经包含查询参数 const separator = url.includes('?') ? '&' : '?'; // 将参数对象转换为查询字符串 const queryString = Object.keys(params) .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`) .join('&'); // 拼接 URL 和查询参数 return url + separator + queryString; }, validateDatalist: function (ele, datalistId) { const input = ele; const list = document.getElementById(datalistId); const options = list && list.options; const value = input.value; let isValid = false; if (options) { for (let i = 0; i < options.length; i++) { if (value === options[i].value) { isValid = true; break; } } } if (!isValid) { input.value = ''; } }, copyText: function (text) { navigator.clipboard.writeText(text).then(() => { tools.alert("复制成功"); }).catch(err => { tools.alert("复制失败"); }); }, formatDate: function (date) { if (!date) return ''; const d = new Date(date); const month = '' + (d.getMonth() + 1); const day = '' + d.getDate(); const year = d.getFullYear(); return [year, month.padStart(2, '0'), day.padStart(2, '0')].join('-'); } } Array.prototype.removeArrayItem = function (item) { const index = this.indexOf(item); if (index !== -1) { this.splice(index, 1); } return this; }; setTimeout(function () { // 设置请求拦截器 axios.interceptors.request.use(function (config) { if (isLoading) { tools.openLoading(); } return config; }, function (error) { // 对请求错误做些什么 return Promise.reject(error); }); // 设置响应拦截器 axios.interceptors.response.use(function (response) { if (isLoading) { tools.closeLoading(); } return response; }, function (error) { if (error.response) { // 请求已发出,但服务器响应的状态码不在 2xx 范围内 if (error.response.status === 401) { if (isLoading) { tools.closeLoading(); } tools.alert("授权失败,自动跳到授权页面"); // 如果是401错误(未授权),则跳转到登录页面 setTimeout(function () { if (isloginPage) { window.location.href = '/rezero/login.html'; } else { window.location.href = '/rezero/authorization.html'; } }, 2000); } else { // 处理其他状态码 return Promise.reject(error); } } else if (error.request) { // 请求已发出,但没有收到响应 console.log('Request:', error.request); return Promise.reject(error); } else { // 发生一些其他问题在设置请求时触发了一个错误 console.log('Error', error.message); return Promise.reject(error); } }); },2000)