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
271 lines
9.4 KiB
3 weeks ago
|
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)
|