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.

325 lines
7.7 KiB

3 days ago
var isLoading = false
3 weeks ago
var tools = {
3 days ago
highlightErrorFields: function (data) {
if (!data.ErrorParameters) {
tools.alert(data.message)
return
}
data.ErrorParameters.forEach(function (error) {
// 获取 Name 属性的值
var fieldName = error.Name
3 weeks ago
3 days ago
// 查找具有相同 name 属性值的所有元素
var elements = document.getElementsByName(fieldName)
3 weeks ago
3 days ago
// 循环遍历找到的元素,设置样式
for (var i = 0; i < elements.length; i++) {
elements[i].style.border = '2px solid red'
3 weeks ago
3 days ago
var spanElement = document.createElement('span')
spanElement.style.color = 'red'
spanElement.style.marginLeft = '5px' // 调整距离,可根据需要更改
spanElement.innerHTML = error.Message
3 weeks ago
3 days ago
// 将 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 = {}
3 weeks ago
3 days ago
formData.forEach(function (value, key) {
jsonData[key] = value
})
3 weeks ago
3 days ago
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
3 weeks ago
3 days ago
// 尝试将输入值转换为数字
var numericValue = parseFloat(value)
3 weeks ago
3 days ago
// 如果转换失败,则将值设置为 0
if (isNaN(numericValue)) {
numericValue = 0
}
3 weeks ago
3 days ago
// 将更新后的值设置回输入框
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
3 weeks ago
3 days ago
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'
)
3 weeks ago
3 days ago
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 = {}
3 weeks ago
3 days ago
// 动态提取 token 和 model
if (searchParams.has('token')) {
params.token = searchParams.get('token')
}
if (searchParams.has('model')) {
params.model = searchParams.get('model')
}
3 weeks ago
3 days ago
// 如果没有参数,直接返回原始 URL
if (Object.keys(params).length === 0) {
return url
}
3 weeks ago
3 days ago
// 检查 URL 是否已经包含查询参数
const separator = url.includes('?') ? '&' : '?'
3 weeks ago
3 days ago
// 将参数对象转换为查询字符串
const queryString = Object.keys(params)
.map(
key =>
`${encodeURIComponent(key)}=${encodeURIComponent(
params[key]
)}`
)
.join('&')
3 weeks ago
3 days ago
// 拼接 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('-')
},
3 weeks ago
}
Array.prototype.removeArrayItem = function (item) {
3 days ago
const index = this.indexOf(item)
if (index !== -1) {
this.splice(index, 1)
}
return this
}
3 weeks ago
setTimeout(function () {
3 days ago
// 设置请求拦截器
axios.interceptors.request.use(
function (config) {
if (isLoading) {
tools.openLoading()
}
return config
},
function (error) {
// 对请求错误做些什么
return Promise.reject(error)
}
)
3 weeks ago
3 days ago
// 设置响应拦截器
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)