You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

271 lines
9.4 KiB

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)