✨ init Project
This commit is contained in:
146
src/utils/format.js
Normal file
146
src/utils/format.js
Normal file
@@ -0,0 +1,146 @@
|
||||
import { formatTimeToStr } from '@/utils/date'
|
||||
import { getDict } from '@/utils/dictionary'
|
||||
import { ref } from 'vue'
|
||||
|
||||
export const formatBoolean = (bool) => {
|
||||
if (bool !== null) {
|
||||
return bool ? '是' : '否'
|
||||
} else {
|
||||
return ''
|
||||
}
|
||||
}
|
||||
export const formatDate = (time) => {
|
||||
if (time !== null && time !== '') {
|
||||
var date = new Date(time)
|
||||
return formatTimeToStr(date, 'yyyy-MM-dd hh:mm:ss')
|
||||
} else {
|
||||
return ''
|
||||
}
|
||||
}
|
||||
|
||||
export const filterDict = (value, options) => {
|
||||
const rowLabel = options && options.filter((item) => item.value === value)
|
||||
return rowLabel && rowLabel[0] && rowLabel[0].label
|
||||
}
|
||||
|
||||
export const filterDataSource = (dataSource, value) => {
|
||||
if (Array.isArray(value)) {
|
||||
return value.map((item) => {
|
||||
const rowLabel = dataSource && dataSource.find((i) => i.value === item)
|
||||
return rowLabel?.label
|
||||
})
|
||||
}
|
||||
const rowLabel = dataSource && dataSource.find((item) => item.value === value)
|
||||
return rowLabel?.label
|
||||
}
|
||||
|
||||
export const getDictFunc = async (type) => {
|
||||
const dicts = await getDict(type)
|
||||
return dicts
|
||||
}
|
||||
|
||||
const path =
|
||||
import.meta.env.VITE_BASE_PATH + ':' + import.meta.env.VITE_SERVER_PORT + '/'
|
||||
export const ReturnArrImg = (arr) => {
|
||||
const imgArr = []
|
||||
if (arr instanceof Array) {
|
||||
// 如果是数组类型
|
||||
for (const arrKey in arr) {
|
||||
if (arr[arrKey].slice(0, 4) !== 'http') {
|
||||
imgArr.push(path + arr[arrKey])
|
||||
} else {
|
||||
imgArr.push(arr[arrKey])
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 如果不是数组类型
|
||||
if (arr?.slice(0, 4) !== 'http') {
|
||||
imgArr.push(path + arr)
|
||||
} else {
|
||||
imgArr.push(arr)
|
||||
}
|
||||
}
|
||||
return imgArr
|
||||
}
|
||||
|
||||
export const returnArrImg = ReturnArrImg
|
||||
|
||||
export const onDownloadFile = (url) => {
|
||||
window.open(path + url)
|
||||
}
|
||||
const colorToHex = (u) => {
|
||||
let e = u.replace('#', '').match(/../g)
|
||||
for (let t = 0; t < 3; t++) e[t] = parseInt(e[t], 16)
|
||||
return e
|
||||
}
|
||||
|
||||
const hexToColor = (u, e, t) => {
|
||||
let a = [u.toString(16), e.toString(16), t.toString(16)]
|
||||
for (let n = 0; n < 3; n++) a[n].length === 1 && (a[n] = `0${a[n]}`)
|
||||
return `#${a.join('')}`
|
||||
}
|
||||
const generateAllColors = (u, e) => {
|
||||
let t = colorToHex(u)
|
||||
const target = [10, 10, 30]
|
||||
for (let a = 0; a < 3; a++) t[a] = Math.floor(t[a] * (1 - e) + target[a] * e)
|
||||
return hexToColor(t[0], t[1], t[2])
|
||||
}
|
||||
|
||||
const generateAllLightColors = (u, e) => {
|
||||
let t = colorToHex(u)
|
||||
const target = [240, 248, 255] // RGB for blue white color
|
||||
for (let a = 0; a < 3; a++) t[a] = Math.floor(t[a] * (1 - e) + target[a] * e)
|
||||
return hexToColor(t[0], t[1], t[2])
|
||||
}
|
||||
|
||||
function addOpacityToColor(u, opacity) {
|
||||
let t = colorToHex(u)
|
||||
return `rgba(${t[0]}, ${t[1]}, ${t[2]}, ${opacity})`
|
||||
}
|
||||
|
||||
export const setBodyPrimaryColor = (primaryColor, darkMode) => {
|
||||
let fmtColorFunc = generateAllColors
|
||||
if (darkMode === 'light') {
|
||||
fmtColorFunc = generateAllLightColors
|
||||
}
|
||||
|
||||
document.documentElement.style.setProperty('--el-color-primary', primaryColor)
|
||||
document.documentElement.style.setProperty(
|
||||
'--el-color-primary-bg',
|
||||
addOpacityToColor(primaryColor, 0.4)
|
||||
)
|
||||
for (let times = 1; times <= 2; times++) {
|
||||
document.documentElement.style.setProperty(
|
||||
`--el-color-primary-dark-${times}`,
|
||||
fmtColorFunc(primaryColor, times / 10)
|
||||
)
|
||||
}
|
||||
for (let times = 1; times <= 10; times++) {
|
||||
document.documentElement.style.setProperty(
|
||||
`--el-color-primary-light-${times}`,
|
||||
fmtColorFunc(primaryColor, times / 10)
|
||||
)
|
||||
}
|
||||
document.documentElement.style.setProperty(
|
||||
`--el-menu-hover-bg-color`,
|
||||
addOpacityToColor(primaryColor, 0.2)
|
||||
)
|
||||
}
|
||||
|
||||
const baseUrl = ref(import.meta.env.VITE_BASE_API)
|
||||
|
||||
export const getBaseUrl = () => {
|
||||
return baseUrl.value === '/' ? '' : baseUrl.value
|
||||
}
|
||||
|
||||
export const CreateUUID = () => {
|
||||
let d = new Date().getTime()
|
||||
if (window.performance && typeof window.performance.now === 'function') {
|
||||
d += performance.now()
|
||||
}
|
||||
return '00000000-0000-0000-0000-000000000000'.replace(/0/g, (c) => {
|
||||
const r = (d + Math.random() * 16) % 16 | 0 // d是随机种子
|
||||
d = Math.floor(d / 16)
|
||||
return (c === '0' ? r : (r & 0x3) | 0x8).toString(16)
|
||||
})
|
||||
}
|
Reference in New Issue
Block a user