消毒机设备
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.
 
 
 
 
 

127 lines
3.7 KiB

export function formatDateTime(template: string = 'YYYY-MM-DD HH:mm:ss', timestamp?: number): string {
const now = timestamp ? new Date(timestamp) : new Date()
const tokens: Record<string, string> = {
YYYY: String(now.getFullYear()),
MM: String(now.getMonth() + 1).padStart(2, '0'),
DD: String(now.getDate()).padStart(2, '0'),
HH: String(now.getHours()).padStart(2, '0'),
mm: String(now.getMinutes()).padStart(2, '0'),
ss: String(now.getSeconds()).padStart(2, '0'),
}
return template.replace(/YYYY|MM|DD|HH|mm|ss/g, token => tokens[token]!)
}
export function roundNumber(num: string | number, digits: number) {
num = Number(num)
if (!num) {
return num
}
digits = digits || 0
return Number(num.toFixed(digits))
}
export const deviceStateMap = <Record<string, any>>{
idle: '空闲',
init: '初始化设备',
preheat: '预热中',
disinfection: '消毒中',
degradation: '降解中',
finished: '消毒完成',
dehumidificationBeforeDisinfection: '消毒前除湿',
dehumidificationAfterDisinfection: '消毒后除湿',
emptyLineLiquid: '排空管路',
}
export const sealStateMap = <Record<string, any>>{
idle: '空闲',
initDevice: '初始化',
iniflating: '打压中',
leakText: '检漏中',
stopping: '停止中',
}
export const compareJSON = (obj1: any, obj2: any) => {
const result: Record<string, any> = {}
// 遍历obj1的所有属性
for (const key in obj1) {
if (Object.prototype.hasOwnProperty.call(obj1, key)) {
if (!Object.prototype.hasOwnProperty.call(obj2, key)) {
// obj2中不存在该属性
result[key] = { obj1: obj1[key], obj2: undefined }
}
else if (typeof obj1[key] !== typeof obj2[key]) {
// 类型不同
result[key] = { obj1: obj1[key], obj2: obj2[key] }
}
else if (typeof obj1[key] === 'object' && obj1[key] !== null && obj2[key] !== null) {
// 递归比较对象
const nestedDiff = compareJSON(obj1[key], obj2[key])
if (Object.keys(nestedDiff).length > 0) {
result[key] = nestedDiff
}
}
else if (obj1[key] !== obj2[key]) {
// 基本类型值不同
result[key] = { oldVal: obj1[key], newVal: obj2[key] }
}
}
}
return result
}
let isFullscreen = false
export const openFullscreen = () => {
const elem = document.documentElement
if (!isFullscreen) {
isFullscreen = true
elem.requestFullscreen()
}
else {
isFullscreen = false
document.exitFullscreen()
}
}
export const convertValuesToString = (jsonObj: Record<string, any>, exName: string) => {
const result: Record<string, any> = {}
for (const [key, value] of Object.entries(jsonObj)) {
if (key !== exName) {
result[key] = String(value)
}
else {
result[key] = value
}
}
return result
}
function isNumber(str: string | number) {
// 先转换为数字,再用 isNaN 判断是否为 NaN
return !Number.isNaN(Number(str)) && Number.isFinite(Number(str))
}
export const convertValuesToInt = (jsonObj: Record<string, any>) => {
const result: Record<string, any> = {}
for (const [key, value] of Object.entries(jsonObj)) {
if (key !== 'name' && isNumber(value)) {
result[key] = Number(value)
}
else {
result[key] = value
}
}
return result
}
export const DEVICE_STATES = {
IDLE: 'idle', // 空闲
INIT: 'init', // 初始化
PREHEAT: 'preheat', // 预热
DISINFECTION: 'disinfection', // 消毒
DEGRADATION: 'degradation', // 降解
FINISHED: 'finished', // 结束
DEHUMIDIFICATION_BEFORE: 'dehumidification_before_disinfection', // 消毒前除湿
DEHUMIDIFICATION_AFTER: 'dehumidification_after_disinfection', // 消毒后除湿
EMPTY_LINE: 'empty_liquid_from_the_line', // 清空管路
}