15 changed files with 823 additions and 82 deletions
@ -1,4 +1,5 @@ |
|||
# maven ignore |
|||
unpackage/ |
|||
node_modules/ |
|||
.hbuilderx/ |
|||
.hbuilderx/ |
|||
.idea/ |
|||
@ -0,0 +1,17 @@ |
|||
// 批量导出文件
|
|||
const requireApi = require.context( |
|||
// api 目录的相对路径
|
|||
'.', |
|||
// 是否查询子目录
|
|||
false, |
|||
// 查询文件的一个后缀
|
|||
/.js$/ |
|||
) |
|||
|
|||
let module = {} |
|||
requireApi.keys().forEach((key, index)=>{ |
|||
if (key === './index.js') return; |
|||
Object.assign(module, requireApi(key)); |
|||
}) |
|||
|
|||
export default module; |
|||
@ -0,0 +1,18 @@ |
|||
import $http from '@/utils/http.js' |
|||
|
|||
/** 获取所有tabbar */ |
|||
export const listTabbar = (data) => { |
|||
return $http({ |
|||
method: 'POST', |
|||
url: 'small/project/tab/listByApp', |
|||
data |
|||
}) |
|||
} |
|||
|
|||
// export const getDigitalPlan = (data) => {
|
|||
// return $http({
|
|||
// method: 'GET',
|
|||
// url: 'api/cmdMangeApi/getDigitalPlan/'+data,
|
|||
// data
|
|||
// })
|
|||
// }
|
|||
@ -0,0 +1,212 @@ |
|||
data() { |
|||
return { |
|||
/* 分页 参数 设置 */ |
|||
page: 1, //当前页数
|
|||
last_page: 0, //总页面数
|
|||
status: 'loadmore', |
|||
iconType: 'flower', |
|||
loadText: { |
|||
loadmore: '上拉加载', |
|||
loading: '努力加载中', |
|||
nomore: '没有更多了' |
|||
}, |
|||
} |
|||
}, |
|||
created() { |
|||
|
|||
}, |
|||
methods: { |
|||
/* 跳转外链 */ |
|||
goReLaunch(val) { |
|||
uni.reLaunch({ |
|||
url: val |
|||
}); |
|||
}, |
|||
|
|||
|
|||
/* 跳转 重定向 */ |
|||
goRedirectTo(val) { |
|||
uni.redirectTo({ |
|||
url: val |
|||
}); |
|||
}, |
|||
|
|||
/* 跳转 Navigate*/ |
|||
goNavigateTo(val) { |
|||
if (val) { |
|||
uni.navigateTo({ |
|||
url: val, |
|||
}); |
|||
} else { |
|||
this.showToast("敬请期待..."); |
|||
} |
|||
}, |
|||
|
|||
|
|||
/* 跳转 switchTab*/ |
|||
goSwitchTab(url) { |
|||
uni.switchTab({ |
|||
url: url |
|||
}); |
|||
}, |
|||
|
|||
/* 复制链接 方法 */ |
|||
copy(value) { |
|||
if (value) { |
|||
uni.setClipboardData({ |
|||
data: value, //要被复制的内容
|
|||
success: () => { //复制成功的回调函数
|
|||
this.showToast(`复制成功`); |
|||
}, |
|||
fail: () => { |
|||
this.showToast(`复制失败`); |
|||
}, |
|||
}); |
|||
} else { |
|||
this.showToast(`暂无可以复制内容哦`); |
|||
} |
|||
}, |
|||
|
|||
/* 排序 小到大 */ |
|||
compare(prop) { |
|||
return function(obj1, obj2) { |
|||
var val1 = obj1[prop]; |
|||
var val2 = obj2[prop]; |
|||
return val1 - val2; |
|||
} |
|||
}, |
|||
|
|||
/* 排序 大到小 */ |
|||
compare1(prop) { |
|||
return function(obj1, obj2) { |
|||
var val1 = obj1[prop]; |
|||
var val2 = obj2[prop]; |
|||
return val2 - val1; |
|||
} |
|||
}, |
|||
|
|||
/* 时分秒转时间戳 |
|||
* status == 1 =>年月日 时 |
|||
* status == ? =>时分秒 |
|||
*/ |
|||
time_to_sec(time, status) { |
|||
let data = new Date(); |
|||
if (time) { |
|||
if (status == 1) { |
|||
let sec = new Date(time).getTime() / 1000; |
|||
return sec; |
|||
} else { |
|||
let year = data.getFullYear(); |
|||
let month = data.getMonth() + 1; |
|||
let day = data.getDate(); |
|||
let sec = new Date(year + '/' + month + '/' + day + ' ' + time).getTime() / 1000; |
|||
return sec; |
|||
} |
|||
} |
|||
}, |
|||
|
|||
/* 银行卡号 验证 */ |
|||
luhnCheck(bankno) { |
|||
var lastNum = bankno.substr(bankno.length - 1, 1); //取出最后一位(与luhn进行比较)
|
|||
var first15Num = bankno.substr(0, bankno.length - 1); //前15或18位
|
|||
var newArr = new Array(); |
|||
for (var i = first15Num.length - 1; i > -1; i--) { //前15或18位倒序存进数组
|
|||
newArr.push(first15Num.substr(i, 1)); |
|||
} |
|||
var arrJiShu = new Array(); //奇数位*2的积 <9
|
|||
var arrJiShu2 = new Array(); //奇数位*2的积 >9
|
|||
var arrOuShu = new Array(); //偶数位数组
|
|||
for (var j = 0; j < newArr.length; j++) { |
|||
if ((j + 1) % 2 == 1) { //奇数位
|
|||
if (parseInt(newArr[j]) * 2 < 9) arrJiShu.push(parseInt(newArr[j]) * 2); |
|||
else arrJiShu2.push(parseInt(newArr[j]) * 2); |
|||
} else //偶数位
|
|||
arrOuShu.push(newArr[j]); |
|||
} |
|||
var jishu_child1 = new Array(); //奇数位*2 >9 的分割之后的数组个位数
|
|||
var jishu_child2 = new Array(); //奇数位*2 >9 的分割之后的数组十位数
|
|||
for (var h = 0; h < arrJiShu2.length; h++) { |
|||
jishu_child1.push(parseInt(arrJiShu2[h]) % 10); |
|||
jishu_child2.push(parseInt(arrJiShu2[h]) / 10); |
|||
} |
|||
var sumJiShu = 0; //奇数位*2 < 9 的数组之和
|
|||
var sumOuShu = 0; //偶数位数组之和
|
|||
var sumJiShuChild1 = 0; //奇数位*2 >9 的分割之后的数组个位数之和
|
|||
var sumJiShuChild2 = 0; //奇数位*2 >9 的分割之后的数组十位数之和
|
|||
var sumTotal = 0; |
|||
for (var m = 0; m < arrJiShu.length; m++) { |
|||
sumJiShu = sumJiShu + parseInt(arrJiShu[m]); |
|||
} |
|||
for (var n = 0; n < arrOuShu.length; n++) { |
|||
sumOuShu = sumOuShu + parseInt(arrOuShu[n]); |
|||
} |
|||
for (var p = 0; p < jishu_child1.length; p++) { |
|||
sumJiShuChild1 = sumJiShuChild1 + parseInt(jishu_child1[p]); |
|||
sumJiShuChild2 = sumJiShuChild2 + parseInt(jishu_child2[p]); |
|||
} |
|||
//计算总和
|
|||
sumTotal = parseInt(sumJiShu) + parseInt(sumOuShu) + parseInt(sumJiShuChild1) + parseInt(sumJiShuChild2); |
|||
//计算luhn值
|
|||
var k = parseInt(sumTotal) % 10 == 0 ? 10 : parseInt(sumTotal) % 10; |
|||
var luhn = 10 - k; |
|||
if (lastNum == luhn) { |
|||
// $("#banknoInfo").html("luhn验证通过");
|
|||
return true; |
|||
} else { |
|||
// $("#banknoInfo").html("银行卡号必须符合luhn校验");
|
|||
return false; |
|||
} |
|||
}, |
|||
|
|||
/* 对象 过滤不需要的字段 保留需要字段 */ |
|||
filterObj(obj, arr) { |
|||
if (typeof(obj) !== "object" || !Array.isArray(arr)) { |
|||
throw new Error("参数格式不正确") |
|||
} |
|||
const result = {} |
|||
Object.keys(obj).filter((key) => arr.includes(key)).forEach((key) => { |
|||
result[key] = obj[key] |
|||
}) |
|||
return result |
|||
}, |
|||
|
|||
/* 小黑窗 公用函数 */ |
|||
showToast(msg, icon) { |
|||
uni.showToast({ |
|||
title: msg, |
|||
icon: icon ? icon : 'none', |
|||
duration: 2000, |
|||
mask: true, |
|||
}); |
|||
}, |
|||
|
|||
/* loading 小黑窗 公用函数 */ |
|||
showLoading(msg) { |
|||
uni.showLoading({ |
|||
title: msg, |
|||
mask: true, |
|||
}); |
|||
}, |
|||
|
|||
/* 隐藏 loading 小黑窗 公用函数*/ |
|||
hideLoading() { |
|||
setTimeout(() => { |
|||
uni.hideLoading(); |
|||
}, 2000); |
|||
}, |
|||
|
|||
/* 返回上一页 */ |
|||
onBack(backnum) { |
|||
uni.navigateBack({ |
|||
delta: backnum, |
|||
}); |
|||
}, |
|||
|
|||
/* 设置标题 */ |
|||
setNavigationBarTitle(title) { |
|||
uni.setNavigationBarTitle({ |
|||
title: title |
|||
}) |
|||
}, |
|||
} |
|||
} |
|||
@ -0,0 +1,2 @@ |
|||
let url_config = "http://localhost:85/" |
|||
export default url_config |
|||
@ -0,0 +1,12 @@ |
|||
import moment from 'moment' |
|||
|
|||
// 日期时间格式化过滤器(2019-12-17 15:31:34)
|
|||
let dateTimeFormat = (value, format = 'YYYY-MM-DD HH:mm:ss') => moment(value).format(format) |
|||
|
|||
// 日期时间格式化过滤器(2019-12-17)
|
|||
let dateFormat = (value, format = 'YYYY-MM-DD') => moment(value).format(format) |
|||
|
|||
// 金钱格式化过滤器 (¥ 34567.99)
|
|||
let moneyFormat = (value, unit = '¥') => `${unit} ${Number(value).toFixed(2)}` |
|||
|
|||
export { dateTimeFormat, dateFormat, moneyFormat } |
|||
@ -0,0 +1,25 @@ |
|||
import urlConfig from '@/utils/config.js' |
|||
|
|||
export default function $http(options) { |
|||
const { method, url, data } = options |
|||
|
|||
return new Promise((reslove, reject) => { |
|||
uni.request({ |
|||
method, |
|||
url: urlConfig + url, |
|||
data, |
|||
dataType: 'json' |
|||
}).then(res => { |
|||
if (res[1].data.success) { |
|||
reslove(res[1].data) |
|||
}else if(res[1].statusCode == 200){ |
|||
reslove(res[1].data) |
|||
} |
|||
else { |
|||
reject(res[1].data) |
|||
} |
|||
}).catch(err => { |
|||
reject(err) |
|||
}) |
|||
}) |
|||
} |
|||
@ -0,0 +1,237 @@ |
|||
import dayjs from 'dayjs' |
|||
import { |
|||
MAP_KEY |
|||
} from '@/config' |
|||
|
|||
const QQMapWX = require('@/lib/qqmap-wx-jssdk.min.js') |
|||
const qqmapsdk = new QQMapWX({ |
|||
key: MAP_KEY |
|||
}) |
|||
|
|||
/** |
|||
* dayjs格式化日期 |
|||
* |
|||
* @export |
|||
* @param {*} date 日期 |
|||
* @param {string} [fmt='YYYY-MM-DD'] 日期格式,详细参考:https://github.com/iamkun/dayjs/blob/dev/docs/zh-cn/API-reference.md#%E6%A0%BC%E5%BC%8F%E5%8C%96
|
|||
* @returns |
|||
*/ |
|||
export function formatDate(date, fmt = 'YYYY-MM-DD') { |
|||
return dayjs(date).format(fmt) |
|||
} |
|||
|
|||
/** |
|||
* 逆地址解析(坐标转具体位置信息) |
|||
* @doc 文档参考:https://lbs.qq.com/qqmap_wx_jssdk/method-reverseGeocoder.html
|
|||
* @export |
|||
* @param {*} location 坐标:{ latitude: 39.984060, longitude: 116.307520 } |
|||
* @returns |
|||
*/ |
|||
export function reverseGeocoder(location) { |
|||
return new Promise((resolve, reject) => { |
|||
qqmapsdk.reverseGeocoder({ |
|||
location: location, |
|||
get_poi: 1, |
|||
poi_options: 'policy=1;page_size=20;page_index=1', |
|||
success: res => { |
|||
resolve(res) |
|||
}, |
|||
fail: err => { |
|||
reject(err) |
|||
uni.showToast({ |
|||
title: err.message, |
|||
icon: 'none', |
|||
duration: 3000 |
|||
}) |
|||
} |
|||
}) |
|||
}) |
|||
} |
|||
|
|||
/** |
|||
* 地图关键词搜索 |
|||
* @doc 文档参考:https://lbs.qq.com/qqmap_wx_jssdk/method-search.html
|
|||
* @export |
|||
* @param {*} keyword 搜索关键词 |
|||
* @param {*} location 坐标:{ latitude: 39.984060, longitude: 116.307520 } |
|||
* @returns |
|||
*/ |
|||
export function mapSearch(keyword, location) { |
|||
return new Promise((resolve, reject) => { |
|||
qqmapsdk.search({ |
|||
keyword: keyword, |
|||
location: location, |
|||
page_size: 20, |
|||
auto_extend: 0, |
|||
success: res => { |
|||
resolve(res) |
|||
}, |
|||
fail: err => { |
|||
reject(err) |
|||
uni.showToast({ |
|||
title: err.message, |
|||
icon: 'none', |
|||
duration: 3000 |
|||
}) |
|||
} |
|||
}) |
|||
}) |
|||
} |
|||
|
|||
/** |
|||
* 授权请求 |
|||
* |
|||
* @export |
|||
* @param {*} authorizeScope 更多scope参考:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/authorize.html
|
|||
* @param {*} modal modal弹窗参数信息 |
|||
* @returns |
|||
*/ |
|||
export function setAuthorize(authorizeScope, modal) { |
|||
return new Promise((resolve, reject) => { |
|||
console.log("--------------------AAAAAAAAAAAAAAAAAAAAAAAAAAA------------------"); |
|||
if (!modal) { |
|||
modal = { |
|||
title: '授权', |
|||
content: '需要您设置授权已使用相应功能', |
|||
confirmText: '设置' |
|||
} |
|||
} |
|||
console.log("--------------------BBBBBBBBBBBBBBBBBBBBBBBBBBB------------------"); |
|||
uni.getSetting({ |
|||
success(res) { |
|||
// hasAuthor === undefined 表示 初始化进入,从未授权
|
|||
// hasAuthor === true 表示 已授权
|
|||
// hasAuthor === false 表示 授权拒绝
|
|||
const hasAuthor = res.authSetting[authorizeScope] |
|||
switch (hasAuthor) { |
|||
case undefined: |
|||
uni.authorize({ |
|||
scope: authorizeScope, |
|||
success: res => { |
|||
resolve(res) |
|||
}, |
|||
fail: err => { |
|||
uni.showToast({ |
|||
title: '授权失败', |
|||
icon: 'none', |
|||
duration: 3000 |
|||
}) |
|||
reject(err) |
|||
} |
|||
}) |
|||
break |
|||
case true: |
|||
resolve() |
|||
break |
|||
case false: |
|||
uni.showModal({ |
|||
...modal, |
|||
success: res => { |
|||
if (res.confirm) { |
|||
uni.openSetting({ |
|||
success: res => { |
|||
if (res.authSetting[ |
|||
authorizeScope]) { |
|||
resolve(res) |
|||
} else { |
|||
reject(res) |
|||
uni.showToast({ |
|||
title: '授权失败', |
|||
icon: 'none', |
|||
duration: 3000 |
|||
}) |
|||
} |
|||
}, |
|||
fail: err => { |
|||
reject(err) |
|||
uni.showToast({ |
|||
title: '打开设置异常', |
|||
icon: 'none', |
|||
duration: 3000 |
|||
}) |
|||
} |
|||
}) |
|||
} else { |
|||
reject(res) |
|||
uni.showToast({ |
|||
title: '授权失败', |
|||
icon: 'none', |
|||
duration: 3000 |
|||
}) |
|||
} |
|||
}, |
|||
fail: err => { |
|||
reject(err) |
|||
uni.showToast({ |
|||
title: '弹窗异常', |
|||
icon: 'none', |
|||
duration: 3000 |
|||
}) |
|||
} |
|||
}) |
|||
break |
|||
} |
|||
}, |
|||
fail: err => { |
|||
reject(err) |
|||
uni.showToast({ |
|||
title: '获取当前设置异常', |
|||
icon: 'none', |
|||
duration: 3000 |
|||
}) |
|||
} |
|||
}); |
|||
console.log("--------------------BBBBBBBBBBBBBBBBBBBBBBBBBBB------------------"); |
|||
}) |
|||
} |
|||
|
|||
/** |
|||
* 获取用户当前位置信息 |
|||
* |
|||
* @export |
|||
*/ |
|||
export function getLocation() { |
|||
return new Promise((resolve, reject) => { |
|||
const scope = 'scope.userLocation' |
|||
const modal = { |
|||
title: '授权', |
|||
content: '需要您授权使用位置信息', |
|||
confirmText: '设置' |
|||
} |
|||
setAuthorize(scope, modal).then(() => { |
|||
uni.getLocation({ |
|||
type: 'gcj02', |
|||
// altitude: true,
|
|||
success: res => { |
|||
console.log( |
|||
"--------------------DDDDDDDDDDDDDDDDDDDDDDDDD------------------" |
|||
); |
|||
resolve(res) |
|||
}, |
|||
fail: err => { |
|||
reject(err) |
|||
uni.showToast({ |
|||
title: '获取位置信息失败', |
|||
icon: 'none', |
|||
duration: 3000 |
|||
}) |
|||
} |
|||
}); |
|||
}).catch(err => { |
|||
reject(err) |
|||
}) |
|||
}) |
|||
} |
|||
|
|||
/** |
|||
* 获取当前日期 |
|||
* |
|||
* @export |
|||
*/ |
|||
export function getNowDate() { |
|||
let today = new Date(); |
|||
let year = today.getFullYear(); |
|||
let month = today.getMonth() + 1; |
|||
let date = today.getDate(); |
|||
return year + "-" + month + "-" + date; |
|||
} |
|||
@ -0,0 +1,180 @@ |
|||
const { statusBarHeight } = uni.getSystemInfoSync(); |
|||
class NativeMsg { |
|||
// 整个区域的宽高
|
|||
viewStyle = { |
|||
backgroundColor: "rgba(255,255,255,0)", |
|||
top: "0px", |
|||
left: "0px", |
|||
width: "100%", |
|||
// 取图片的高度(带阴影的尺寸)
|
|||
height: `${uni.upx2px(239)}px` |
|||
}; |
|||
constructor(item, cb) { |
|||
// 记录内容信息,以供回调使用
|
|||
this.item = item; |
|||
// 弹出、消失动画要用
|
|||
this.offsetTop = -statusBarHeight - uni.upx2px(159); |
|||
// 上边界
|
|||
this.startTop = -statusBarHeight - uni.upx2px(159); |
|||
// 下边界
|
|||
this.endTop = statusBarHeight; |
|||
// 上滑关闭要用
|
|||
this.clientY = 0; |
|||
// nativeObj.View 实例
|
|||
this.view = null; |
|||
// 背景图片
|
|||
this.bgBitmap = null; |
|||
// 回调函数
|
|||
this.cb = cb || null; |
|||
// 隐藏过程flag,防止重复执行
|
|||
this.hiding = false; |
|||
// 标记当前弹窗状态
|
|||
this.status = "active"; |
|||
this.create(); |
|||
} |
|||
// 创建区域以及背景
|
|||
create() { |
|||
this.loadBg().then(() => { |
|||
let _view = null; |
|||
// 创建 View区域
|
|||
_view = new plus.nativeObj.View(`alarmMsg-${this.item.alarmId || "ins"}`, this.viewStyle); |
|||
// 画背景
|
|||
_view.drawBitmap( |
|||
this.bitmap, |
|||
{}, |
|||
{ width: this.viewStyle.width, height: this.viewStyle.height, left: 0, top: 0 }, |
|||
"alarm-bg" |
|||
); |
|||
// 拦截触摸事件: 开启后 区域内的触摸事件不会透传到下面
|
|||
_view.interceptTouchEvent(true); |
|||
// 增加点击事件监听
|
|||
_view.addEventListener("click", () => { |
|||
if (this.hiding) return; |
|||
this.hiding = true; |
|||
this.cb && this.cb({ type: "click", result: this.item }); |
|||
this.animationHide(); |
|||
}); |
|||
// 触摸事件监听
|
|||
_view.addEventListener("touchstart", res => { |
|||
this.clientY = res.clientY; |
|||
}); |
|||
// 触摸事件监听
|
|||
_view.addEventListener("touchmove", res => { |
|||
const { clientY } = res; |
|||
let offsetY = this.clientY - clientY; |
|||
if (offsetY > 25 && !this.hiding) { |
|||
this.hiding = true; |
|||
this.cb && this.cb({ type: "move", result: this.item }); |
|||
this.animationHide(); |
|||
} |
|||
}); |
|||
// 保存
|
|||
this.view = _view; |
|||
// 画内容
|
|||
this.drawInfo(); |
|||
// 显示
|
|||
this.animationShow(); |
|||
}); |
|||
} |
|||
// 加载背景图片
|
|||
loadBg() { |
|||
// 创建Bitmap图片
|
|||
this.bitmap = new plus.nativeObj.Bitmap("nativeMsg-bg"); |
|||
// 以Promise方式封装 图片加载过程
|
|||
return new Promise((resolve, reject) => { |
|||
// 加载图片, 路径需要注意
|
|||
this.bitmap.load( |
|||
"../static/alarm-bg.png", |
|||
() => { |
|||
resolve(); |
|||
}, |
|||
error => { |
|||
console.log(" ====> error", error); |
|||
reject(); |
|||
} |
|||
); |
|||
}); |
|||
} |
|||
// 画内容
|
|||
drawInfo() { |
|||
const { warningTypeStr, projectName, description } = this.item; |
|||
this.view.draw([ |
|||
{ |
|||
tag: "font", |
|||
id: "mainFont", |
|||
text: warningTypeStr, |
|||
textStyles: { size: `${uni.upx2px(36)}px`, color: "#262626", weight: "bold", align: "left" }, |
|||
position: { top: `${uni.upx2px(60)}px`, left: `${uni.upx2px(80)}px`, height: "wrap_content" } |
|||
}, |
|||
{ |
|||
tag: "font", |
|||
id: "projectFont", |
|||
text: projectName, |
|||
textStyles: { size: `${uni.upx2px(24)}px`, color: "#7B7B7B", align: "right", overflow: "ellipsis" }, |
|||
position: { |
|||
top: `${uni.upx2px(60)}px`, |
|||
left: `50%`, |
|||
width: `${uni.upx2px(750 / 2 - 40 - 20)}px`, |
|||
height: "wrap_content" |
|||
} |
|||
}, |
|||
{ |
|||
tag: "font", |
|||
id: "infoFont", |
|||
text: description, |
|||
textStyles: { size: `${uni.upx2px(28)}px`, color: "#7B7B7B", align: "left", overflow: "ellipsis" }, |
|||
position: { |
|||
top: `${uni.upx2px(117)}px`, |
|||
left: `${uni.upx2px(80)}px`, |
|||
width: `${uni.upx2px(670 - 40 - 10)}px`, |
|||
height: "wrap_content" |
|||
} |
|||
} |
|||
]); |
|||
} |
|||
// 简易向下出现动画
|
|||
animationShow() { |
|||
this.view.show(); |
|||
this.view.setStyle({ |
|||
...this.viewStyle, |
|||
top: `${this.offsetTop++}px` |
|||
}); |
|||
if (this.offsetTop >= this.endTop) { |
|||
this.status = "active"; |
|||
return; |
|||
} |
|||
setTimeout(() => { |
|||
this.animationShow(); |
|||
}, 0); |
|||
} |
|||
// 简易向上消失动画
|
|||
animationHide() { |
|||
this.view.setStyle({ |
|||
...this.viewStyle, |
|||
top: `${this.offsetTop--}px` |
|||
}); |
|||
if (this.offsetTop <= this.startTop) { |
|||
this.view.close(); |
|||
this.hiding = false; |
|||
this.status = "close"; |
|||
return; |
|||
} |
|||
setTimeout(() => { |
|||
this.animationHide(); |
|||
}, 0); |
|||
} |
|||
// 获取当前状态
|
|||
getStatus() { |
|||
return this.status; |
|||
} |
|||
// 不用动画,直接消失
|
|||
hide() { |
|||
this.view.hide(); |
|||
this.view.close(); |
|||
} |
|||
} |
|||
|
|||
// 对外暴露一个创建实例的方法
|
|||
export function createAlarm(item, cb) { |
|||
return new NativeMsg(item, cb); |
|||
} |
|||
Loading…
Reference in new issue