智能照明系统APP-本地串口
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.
 
 
 
 
 
 
LightingSystemApp-serial/.svn/pristine/98/98b603e81c009adee789f6be015...

168 lines
3.5 KiB

import {
callApiSync
} from '../util'
import {
invoke
} from '../../bridge'
let toast
let toastType
let timeout
export function showLoading (args) {
return callApiSync(showToast, Object.assign({}, args, { type: 'loading' }), 'showToast', 'showLoading')
}
export function hideLoading () {
return callApiSync(hide, 'loading', 'hide', 'hideLoading')
}
export function showToast ({
title = '',
icon = 'success',
image = '',
duration = 1500,
mask = false,
position = '',
type = 'toast'
} = {}) {
hide(null)
toastType = type
if (['top', 'center', 'bottom'].includes(position)) {
// 仅可以关闭 richtext 类型,但 iOS 部分情况换行显示有问题
plus.nativeUI.toast(title, {
verticalAlign: position
})
toast = true
} else {
if (icon && !~['success', 'loading', 'none'].indexOf(icon)) {
icon = 'success'
}
const waitingOptions = {
modal: mask,
back: 'transmit',
padding: '10px',
size: '16px' // 固定字体大小
}
if (!image && (!icon || icon === 'none')) { // 无图
// waitingOptions.width = '120px'
// waitingOptions.height = '40px'
waitingOptions.loading = {
display: 'none'
}
} else { // 有图
waitingOptions.width = '140px'
waitingOptions.height = '112px'
}
if (image) {
waitingOptions.loading = {
display: 'block',
height: '55px',
icon: image,
interval: duration
}
} else {
if (icon === 'success') {
waitingOptions.loading = {
display: 'block',
height: '55px',
icon: '__uniappsuccess.png',
interval: duration
}
}
}
toast = plus.nativeUI.showWaiting(title, waitingOptions)
}
timeout = setTimeout(() => {
hide(null)
}, duration)
return {
errMsg: 'showToast:ok'
}
}
export function hideToast () {
return callApiSync(hide, 'toast', 'hide', 'hideToast')
}
export function hide (type = 'toast') {
if (type && type !== toastType) {
return
}
if (timeout) {
clearTimeout(timeout)
timeout = null
}
if (toast === true) {
plus.nativeUI.closeToast()
} else if (toast && toast.close) {
toast.close()
}
toast = null
toastType = null
return {
errMsg: 'hide:ok'
}
}
export function showModal ({
title = '',
content = '',
showCancel = true,
cancelText = '取消',
cancelColor = '#000000',
confirmText = '确定',
confirmColor = '#3CC51F'
} = {}, callbackId) {
content = content || ' '
plus.nativeUI.confirm(content, (e) => {
if (showCancel) {
invoke(callbackId, {
errMsg: 'showModal:ok',
confirm: e.index === 1,
cancel: e.index === 0 || e.index === -1
})
} else {
invoke(callbackId, {
errMsg: 'showModal:ok',
confirm: e.index === 0,
cancel: false
})
}
}, title, showCancel ? [cancelText, confirmText] : [confirmText])
}
export function showActionSheet ({
itemList = [],
itemColor = '#000000',
title = '',
popover
}, callbackId) {
const options = {
buttons: itemList.map(item => ({
title: item,
color: itemColor
}))
}
if (title) {
options.title = title
}
if (plus.os.name === 'iOS') {
options.cancel = ''
}
plus.nativeUI.actionSheet(Object.assign(options, { popover }), (e) => {
if (e.index > 0) {
invoke(callbackId, {
errMsg: 'showActionSheet:ok',
tapIndex: e.index - 1
})
} else {
invoke(callbackId, {
errMsg: 'showActionSheet:fail cancel'
})
}
})
}