2023-11-14 17:21:03 +08:00
|
|
|
|
/**
|
|
|
|
|
* @name: useInterface
|
|
|
|
|
* @author: kahu4
|
|
|
|
|
* @date: 2023-10-30 11:56
|
|
|
|
|
* @description:封装uni app界面相关接口,利于维护
|
|
|
|
|
* @update: 2023-10-30 11:56
|
|
|
|
|
* */
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 封装uni app界面相关接口,利于维护
|
2024-03-05 12:16:58 +08:00
|
|
|
|
* @returns {
|
|
|
|
|
* {
|
|
|
|
|
* toast:Function,
|
|
|
|
|
* loading:Function,
|
|
|
|
|
* hideLoading:Function,
|
|
|
|
|
* setNavTitle:Function,
|
|
|
|
|
* setNavBgColor:Function,
|
|
|
|
|
* scrollTo:Function,
|
|
|
|
|
* pageResize:Function,
|
|
|
|
|
* unPageResize:Function,
|
|
|
|
|
* startPullDownRefresh:Function,
|
|
|
|
|
* stopPullDownRefresh:Function,
|
|
|
|
|
* createSelectorQuery:Function,
|
|
|
|
|
* createObserver:Function,
|
|
|
|
|
* createMediaObserver:Function,
|
|
|
|
|
* createAnimation:Function,
|
|
|
|
|
* getMenuButtonInfo:Function
|
|
|
|
|
* }
|
|
|
|
|
* }
|
2023-11-14 17:21:03 +08:00
|
|
|
|
*/
|
|
|
|
|
export const useInterface = () => {
|
|
|
|
|
/**
|
|
|
|
|
* 使用uni的toast
|
|
|
|
|
* @param options
|
2024-03-05 12:16:58 +08:00
|
|
|
|
* @returns {Promise<any>}
|
2023-11-14 17:21:03 +08:00
|
|
|
|
*/
|
|
|
|
|
function toast(options) {
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
uni.showToast({
|
2024-03-05 12:16:58 +08:00
|
|
|
|
icon: 'none', mask: false, ...options, success: () => resolve(true), fail: (error) => reject(error)
|
2023-11-14 17:21:03 +08:00
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 使用uni的loading
|
|
|
|
|
* @param options
|
|
|
|
|
* @returns {Promise<unknown>}
|
|
|
|
|
*/
|
2024-02-08 21:01:37 +08:00
|
|
|
|
function loading(options = {}) {
|
2023-11-14 17:21:03 +08:00
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
uni.showLoading({
|
2024-03-05 12:16:58 +08:00
|
|
|
|
icon: 'none', mask: true, ...options, success: () => resolve(true), fail: (error) => reject(error)
|
2023-11-14 17:21:03 +08:00
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function hideLoading() {
|
|
|
|
|
uni.hideLoading()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 动态设置当前页面的标题
|
|
|
|
|
* @param title
|
|
|
|
|
* @returns {Promise<unknown>}
|
|
|
|
|
*/
|
|
|
|
|
function setNavTitle(title) {
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
uni.setNavigationBarTitle({
|
2024-03-05 12:16:58 +08:00
|
|
|
|
title, success: () => resolve(true), fail: (error) => reject(error)
|
2023-11-14 17:21:03 +08:00
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 设置页面导航条颜色。如果需要进入页面就设置颜色,请延迟执行,防止被框架内设置颜色逻辑覆盖
|
|
|
|
|
* @param options
|
|
|
|
|
* @param timeout
|
|
|
|
|
* @returns {Promise<unknown>}
|
|
|
|
|
*/
|
|
|
|
|
function setNavBgColor(options, timeout = 500) {
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
const setNavigationBarColor = () => uni.setNavigationBarColor({
|
2024-03-05 12:16:58 +08:00
|
|
|
|
...options, success: () => resolve(true), fail: (error) => reject(error)
|
2023-11-14 17:21:03 +08:00
|
|
|
|
})
|
|
|
|
|
if (timeout === 0) {
|
|
|
|
|
setNavigationBarColor()
|
|
|
|
|
} else {
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
uni.setNavigationBarColor({
|
2024-03-05 12:16:58 +08:00
|
|
|
|
...options, success: () => resolve(true), fail: (error) => reject(error)
|
2023-11-14 17:21:03 +08:00
|
|
|
|
})
|
|
|
|
|
}, timeout)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 页面滚动到元素或者指定位置
|
|
|
|
|
* @param options
|
|
|
|
|
* @returns {Promise<unknown>}
|
|
|
|
|
*/
|
|
|
|
|
function scrollTo(options) {
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
uni.pageScrollTo({
|
2024-03-05 12:16:58 +08:00
|
|
|
|
...options, success: () => resolve(true), fail: (error) => reject(error)
|
2023-11-14 17:21:03 +08:00
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 监听窗口尺寸变化事件
|
|
|
|
|
* 如App端设置软键盘弹出方式为adjustResize ,则在键盘弹出时,会触发此事件。
|
|
|
|
|
* 横竖屏切换时,会触发此事件。
|
|
|
|
|
* @param callback
|
|
|
|
|
*/
|
|
|
|
|
function pageResize(callback) {
|
|
|
|
|
uni.onWindowResize(callback)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 取消监听窗口尺寸变化事件
|
|
|
|
|
* callback为调用pageResize时传入的callback
|
|
|
|
|
* @param callback
|
|
|
|
|
*/
|
|
|
|
|
function unPageResize(callback) {
|
|
|
|
|
uni.offWindowResize(callback)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 逻辑触发页面下拉刷新
|
|
|
|
|
* page.json相关字段 "enablePullDownRefresh": true
|
|
|
|
|
* @returns {Promise<unknown>}
|
|
|
|
|
*/
|
|
|
|
|
function startPullDownRefresh() {
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
uni.startPullDownRefresh({
|
2024-03-05 12:16:58 +08:00
|
|
|
|
success: () => resolve(true), fail: (error) => reject(error)
|
2023-11-14 17:21:03 +08:00
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 停止下拉刷新
|
|
|
|
|
*/
|
|
|
|
|
function stopPullDownRefresh() {
|
|
|
|
|
uni.stopPullDownRefresh()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 返回uni app的SelectorQuery 对象实例
|
|
|
|
|
* @docs https://uniapp.dcloud.net.cn/api/ui/nodes-info.html
|
|
|
|
|
* @returns {UniNamespace.SelectorQuery}
|
|
|
|
|
*/
|
|
|
|
|
function createSelectorQuery() {
|
|
|
|
|
return uni.createSelectorQuery()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 创建并返回一个 IntersectionObserver 对象实例。
|
|
|
|
|
* @param _this
|
|
|
|
|
* @param options
|
|
|
|
|
* @docs https://uniapp.dcloud.net.cn/api/ui/intersection-observer.html
|
|
|
|
|
* @returns {UniNamespace.IntersectionObserver}
|
|
|
|
|
*/
|
|
|
|
|
function createObserver(_this, options) {
|
|
|
|
|
return uni.createIntersectionObserver(_this, options)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 创建并返回一个 MediaQueryObserver 对象实例。
|
|
|
|
|
* @param _this
|
|
|
|
|
* @docs https://uniapp.dcloud.net.cn/api/ui/media-query-observer.html
|
|
|
|
|
* @returns {UniNamespace.MediaQueryObserver}
|
|
|
|
|
*/
|
|
|
|
|
function createMediaObserver(_this) {
|
|
|
|
|
return uni.createMediaQueryObserver(_this)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 创建一个动画实例 animation。调用实例的方法来描述动画。最后通过动画实例的export方法导出动画数据传递给组件的animation属性。
|
|
|
|
|
* @param options
|
|
|
|
|
* @docs https://uniapp.dcloud.net.cn/api/ui/animation.html
|
|
|
|
|
* @returns {UniNamespace.Animation}
|
|
|
|
|
*/
|
|
|
|
|
function createAnimation(options) {
|
|
|
|
|
return uni.createAnimation(options)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 小程序获取菜单按钮信息
|
|
|
|
|
* @returns {UniNamespace.GetMenuButtonBoundingClientRectRes}
|
|
|
|
|
*/
|
|
|
|
|
function getMenuButtonInfo() {
|
|
|
|
|
return uni.getMenuButtonBoundingClientRect()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
toast,
|
|
|
|
|
loading,
|
|
|
|
|
hideLoading,
|
|
|
|
|
setNavTitle,
|
|
|
|
|
setNavBgColor,
|
|
|
|
|
scrollTo,
|
|
|
|
|
pageResize,
|
|
|
|
|
unPageResize,
|
|
|
|
|
startPullDownRefresh,
|
|
|
|
|
stopPullDownRefresh,
|
|
|
|
|
createSelectorQuery,
|
|
|
|
|
createObserver,
|
|
|
|
|
createMediaObserver,
|
|
|
|
|
createAnimation,
|
|
|
|
|
getMenuButtonInfo
|
|
|
|
|
}
|
|
|
|
|
}
|