1008 lines
31 KiB
JavaScript
1008 lines
31 KiB
JavaScript
apiready = function () {
|
||
var ctrl = {
|
||
frames: [],
|
||
userId: null,
|
||
messageSocket: null, //用来获取产生新消息的消息
|
||
newsSocket: null, // 用来获取产生新闻
|
||
messageTimer: null, //messageSocket 与服务端发送心跳
|
||
newsTimer: null,
|
||
init: {},
|
||
initWebsocket: {}, //初始化websocket
|
||
closeWebsocket: {}, //关闭websocket
|
||
bind: {},
|
||
initBadge: {},
|
||
switchFrame: {},
|
||
frameX: 0,
|
||
frameY: 0,
|
||
frameWidth: 0,
|
||
frameHeight: 0,
|
||
|
||
defaultNavItemCallback: {},
|
||
featureFrameCallBack: {},
|
||
|
||
checkToUpdate: {}, //查询已跟新
|
||
|
||
checkHasUpdated: {}, //查出是否已经跟新
|
||
// address: 'api.dianwutong.com'
|
||
address: 'wss://cdyapi.saas.dianwutong.com'
|
||
}
|
||
|
||
//初始化页面
|
||
ctrl.init = function () {
|
||
// 解决iphonex底部标签栏被虚拟home键遮挡
|
||
$api.fixTabBar($api.byId('footer'));
|
||
|
||
// 适配状态栏
|
||
var statusBarHeightDom = document.getElementById('statusBarHeight');
|
||
if (api.systemType == "android") {
|
||
// var statusBar = api.require('statusBar');
|
||
// var statusBarHeight = statusBar.getStatusBarHeight();
|
||
// statusBarHeightDom.style.height = statusBarHeight + 'px';
|
||
statusBarHeightDom.style.height = api.safeArea.top + 'px';
|
||
} else {
|
||
statusBarHeightDom.style.height = '1.67rem';
|
||
}
|
||
|
||
ctrl.initPorjectPicker();
|
||
ctrl.checkToUpdate();
|
||
ctrl.checkHasUpdated();
|
||
|
||
//获取token; 如果token不存存在跳转登录页
|
||
var token = $api.getStorage("token");
|
||
|
||
if (!token) {
|
||
api.openWin({
|
||
name: 'login',
|
||
url: 'widget://html/user/login.html'
|
||
});
|
||
|
||
api.closeWin({});
|
||
|
||
return false;
|
||
}
|
||
ctrl.dialogBox = api.require('dialogBox');
|
||
//初始化底部badge
|
||
ctrl.initBadge();
|
||
|
||
// privilegeModule.getMenuList(function() {
|
||
// ctrl.initFrame();
|
||
// });
|
||
ctrl.frames["messageFrame"] = {
|
||
"title": "消息",
|
||
"url": "widget://html/index/messageFrame.html",
|
||
"normalIcon": "../../image/message-normal.svg",
|
||
"activeIcon": "../../image/message-active.svg",
|
||
"navItem": $api.dom(".nav-item[frame='messageFrame']"),
|
||
"callback": ctrl.messageNavItemCallback
|
||
};
|
||
ctrl.frames["rtAlarmFrame"] = {
|
||
"title": "实时报警",
|
||
"url": "widget://html/index/rtAlarmFrame.html",
|
||
"normalIcon": "../../image/rtAlarm-normal.svg",
|
||
"activeIcon": "../../image/rtAlarm-active.svg",
|
||
"navItem": $api.dom(".nav-item[frame='rtAlarmFrame']"),
|
||
"callback": ctrl.defaultNavItemCallback
|
||
}
|
||
ctrl.frames["featureFrame"] = {
|
||
"title": "功能",
|
||
"url": "widget://html/index/featureFrame.html",
|
||
"normalIcon": "../../image/feature-normal.svg",
|
||
"activeIcon": "../../image/feature-active.svg",
|
||
"navItem": $api.dom(".nav-item[frame='featureFrame']"),
|
||
"callback": ctrl.featureFrameCallBack
|
||
};
|
||
ctrl.frames["contactFrame"] = {
|
||
"title": "一键直通",
|
||
"url": "widget://html/index/contactFrame.html",
|
||
"normalIcon": "../../image/contact-normal.svg",
|
||
"activeIcon": "../../image/contact-active.svg",
|
||
"navItem": $api.dom(".nav-item[frame='contactFrame']"),
|
||
"callback": ctrl.defaultNavItemCallback
|
||
};
|
||
ctrl.frames["inspectionFrame"] = {
|
||
"title": "巡检",
|
||
"url": "widget://html/index/inspectionFrame.html",
|
||
"normalIcon": "../../image/inspection-normal.svg",
|
||
"activeIcon": "../../image/inspection-active.svg",
|
||
"navItem": $api.dom(".nav-item[frame='inspectionFrame']"),
|
||
"callback": ctrl.defaultNavItemCallback
|
||
};
|
||
ctrl.frames["systemOrderFrame"] = {
|
||
"title": "工单",
|
||
"url": "widget://html/index/systemOrderFrame.html",
|
||
"normalIcon": "../../image/repair-normal.svg",
|
||
"activeIcon": "../../image/repair-active.svg",
|
||
"navItem": $api.dom(".nav-item[frame='systemOrderFrame']"),
|
||
"callback": ctrl.defaultNavItemCallback
|
||
};
|
||
ctrl.bind();
|
||
// //计算frame显示的位置和尺寸
|
||
var windowWidth = parseInt($api.cssVal($api.dom("body"), "width"));
|
||
var windowHeight = parseInt($api.cssVal($api.dom("body"), "height"));
|
||
var headerHeight = parseInt($api.cssVal($api.dom(".index-header"), "height"));
|
||
var footerHeight = parseInt($api.cssVal($api.dom("footer"), "height"));
|
||
var footerPaddingBottom = parseInt($api.cssVal($api.dom("footer"), "padding-bottom"));
|
||
this.frameX = 0;
|
||
this.frameY = headerHeight;
|
||
this.frameWidth = windowWidth;
|
||
this.frameHeight = windowHeight - headerHeight - footerHeight - footerPaddingBottom;
|
||
|
||
// add start
|
||
// 员工账号登录,所有底部Tab菜单全部可见,客户登陆时,隐藏底部巡检、工单Tab
|
||
var isEmployee = $api.getStorage("isEmployee")
|
||
|
||
if (isEmployee) {
|
||
// 隐藏底部全部tab
|
||
// $api.css($api.domAll('.nav-item'), 'display:none');
|
||
// $api.domAll('.nav-item').forEach(function (el, index) {
|
||
// $api.css(el, 'display:none');
|
||
// })
|
||
|
||
var tabArr = []
|
||
|
||
$api.css($api.dom('#inspectionFrame'), 'display:block')
|
||
tabArr.push('inspectionFrame')
|
||
$api.css($api.dom('#systemOrderFrame'), 'display:block')
|
||
tabArr.push('systemOrderFrame')
|
||
|
||
// 隐藏“消息”和“一键直通”tab
|
||
// $api.css($api.dom('#messageFrame'), 'display:none')
|
||
// $api.css($api.dom('#contactFrame'), 'display:none')
|
||
|
||
ctrl.switchFrame('rtAlarmFrame');
|
||
|
||
return
|
||
}
|
||
|
||
privilegeModule.getMenuList(function () {
|
||
ctrl.initFrame();
|
||
});
|
||
ctrl.switchFrame("messageFrame");
|
||
ctrl.initWebsocket();
|
||
|
||
}
|
||
|
||
// 初始化frame
|
||
ctrl.initFrame = function () {
|
||
if (!privilegeModule.hasMenu('实时报警')) {
|
||
$api.css($api.dom('#rtAlarmFrame'), 'display:none');
|
||
}
|
||
if (!privilegeModule.hasMenu('功能')) {
|
||
$api.css($api.dom('#featureFrame'), 'display:none');
|
||
}
|
||
if (!privilegeModule.hasMenu('一键直通')) {
|
||
$api.css($api.dom('#contactFrame'), 'display:none');
|
||
}
|
||
$api.css($api.dom('#inspectionFrame'), 'display:none');
|
||
$api.css($api.dom('#systemOrderFrame'), 'display:none');
|
||
}
|
||
|
||
// 判断是否为园区客户(显示客户即项目下拉选项)
|
||
ctrl.initPorjectPicker = function () {
|
||
var customers = $api.getStorage('customers');
|
||
var projectPicker = $api.dom('#project-picker');
|
||
if (!customers || customers.length <= 1) {
|
||
$api.text(projectPicker, '');
|
||
} else {
|
||
$api.text(projectPicker, '项目');
|
||
};
|
||
}
|
||
//弹出框设置
|
||
ctrl.initAlertContent = function (options) {
|
||
var options = options || {};
|
||
var content = {
|
||
|
||
texts: {
|
||
title: options.title || '提示',
|
||
content: options.content || '您将退出此次登陆,是否确定?',
|
||
leftBtnTitle: '确认',
|
||
rightBtnTitle: '取消',
|
||
},
|
||
styles: {
|
||
bg: '#fff',
|
||
corner: 6,
|
||
w: 300,
|
||
title: {
|
||
marginT: 20,
|
||
titleSize: 18,
|
||
titleColor: '#000'
|
||
},
|
||
content: {
|
||
marginT: 10,
|
||
color: '#000',
|
||
size: 14
|
||
},
|
||
left: {
|
||
marginB: 7,
|
||
marginL: 20,
|
||
w: 130,
|
||
h: 35,
|
||
corner: 2,
|
||
bg: 'white',
|
||
size: 18,
|
||
},
|
||
right: {
|
||
marginB: 7,
|
||
marginL: 10,
|
||
w: 130,
|
||
h: 35,
|
||
corner: 2,
|
||
bg: 'white',
|
||
size: 18
|
||
}
|
||
}
|
||
|
||
}
|
||
return content;
|
||
}
|
||
|
||
//初始化websocket
|
||
|
||
ctrl.initWebsocket = function () {
|
||
|
||
if (this.messageSocket) {
|
||
|
||
return false;
|
||
|
||
}
|
||
if (this.newsSocket) {
|
||
|
||
return false;
|
||
|
||
}
|
||
|
||
// var roleId = $api.getStorage('roleId');
|
||
var userId = $api.getStorage('userId');
|
||
|
||
var url = ctrl.address + '/ems/app/msg_socket/' + userId;
|
||
var newsUrl = ctrl.address + '/admin/app/msg_socket/' + userId;
|
||
this.messageSocket = new WebSocket(url);
|
||
this.newsSocket = new WebSocket(newsUrl);
|
||
|
||
this.messageSocket.onmessage = function (data) {
|
||
messageDao.updateData();
|
||
|
||
}
|
||
this.messageSocket.onclose = function () {
|
||
ctrl.closeWebsocket();
|
||
// api.toast({
|
||
// msg: "消息socket连接失败"
|
||
// });
|
||
}
|
||
this.newsSocket.onclose = function () {
|
||
ctrl.closeWebsocket();
|
||
}
|
||
this.newsSocket.onmessage = function (data) {
|
||
messageDao.updateData();
|
||
}
|
||
this.messageTimer = setInterval(function () {
|
||
|
||
if (ctrl.messageSocket) {
|
||
|
||
//发送心跳 避免socket长时间没有消息传递而断开
|
||
ctrl.messageSocket.send('beat');
|
||
|
||
}
|
||
|
||
}, 30000);
|
||
|
||
this.newsTimer = setInterval(function () {
|
||
|
||
if (ctrl.newsSocket) {
|
||
|
||
//发送心跳 避免socket长时间没有消息传递而断开
|
||
ctrl.newsSocket.send('beat');
|
||
|
||
}
|
||
|
||
}, 30000);
|
||
|
||
}
|
||
|
||
//关闭websocket
|
||
|
||
ctrl.closeWebsocket = function () {
|
||
|
||
if (this.messageTimer) {
|
||
|
||
clearInterval(this.messageTimer);
|
||
|
||
}
|
||
|
||
if (this.newsTimer) {
|
||
window.clearInterval(this.newsTimer);
|
||
}
|
||
|
||
if (this.messageSocket) {
|
||
|
||
this.messageSocket.close();
|
||
this.messageSocket = null;
|
||
|
||
}
|
||
if (this.newsSocket) {
|
||
|
||
this.newsSocket.close();
|
||
this.newsSocket = null;
|
||
}
|
||
|
||
}
|
||
|
||
//退出登录
|
||
ctrl.logout = function () {
|
||
// 在清除所有的storage信息时,若选择了记住密码,则重新存储账号密码
|
||
var remember = $api.getStorage('remember');
|
||
var account = $api.getStorage('account');
|
||
var password = $api.getStorage('password');
|
||
|
||
$api.clearStorage();
|
||
|
||
if (remember) {
|
||
$api.setStorage('remember', remember);
|
||
$api.setStorage("account", account);
|
||
$api.setStorage("password", password);
|
||
}
|
||
|
||
api.sendEvent({
|
||
name: 'loginout'
|
||
});
|
||
api.removeEventListener({
|
||
name: 'leftPanelClicklogout'
|
||
});
|
||
|
||
api.removeEventListener({
|
||
name: 'changePwdTip'
|
||
});
|
||
api.removeEventListener({
|
||
name: 'leftPanelClickClear'
|
||
});
|
||
|
||
api.closeWin({
|
||
animation: {
|
||
type: "fade"
|
||
}
|
||
});
|
||
api.openWin({
|
||
name: 'login',
|
||
url: 'widget://html/user/login.html',
|
||
|
||
});
|
||
|
||
|
||
}
|
||
|
||
|
||
//事件绑定
|
||
ctrl.bind = function () {
|
||
|
||
//修改密码提示
|
||
var timer;
|
||
api.addEventListener({
|
||
name: 'changePwdTip'
|
||
}, function () {
|
||
if (timer) {
|
||
window.clearTimeout(timer);
|
||
}
|
||
var timer = window.setTimeout(function () {
|
||
ctrl.dialogBox.alert({
|
||
texts: {
|
||
content: '体验账号没有修改密码的权限',
|
||
leftBtnTitle: '确定',
|
||
},
|
||
styles: {
|
||
bg: '#fff',
|
||
w: 300,
|
||
corner: 6,
|
||
content: {
|
||
color: '#000',
|
||
size: 14
|
||
},
|
||
left: {
|
||
marginB: 7,
|
||
marginL: 0,
|
||
w: 300,
|
||
h: 30,
|
||
corner: 2,
|
||
bg: '#fff',
|
||
size: 18
|
||
},
|
||
|
||
}
|
||
}, function (ret) {
|
||
if (ret.eventType == 'left') {
|
||
ctrl.dialogBox.close({
|
||
dialogName: 'alert'
|
||
});
|
||
}
|
||
});
|
||
}, 100)
|
||
|
||
})
|
||
//避免重复监听
|
||
api.removeEventListener({
|
||
name: 'leftPanelClicklogout'
|
||
});
|
||
//退出登录
|
||
var alertContent = ctrl.initAlertContent();
|
||
api.addEventListener({
|
||
name: 'leftPanelClicklogout'
|
||
}, function (ret, err) {
|
||
if (timer) {
|
||
window.clearTimeout(timer);
|
||
}
|
||
var timer = window.setTimeout(function () {
|
||
ctrl.dialogBox.alert(alertContent, function (ret) {
|
||
if (ret.eventType == 'right') {
|
||
ctrl.dialogBox.close({
|
||
dialogName: 'alert'
|
||
});
|
||
} else if (ret.eventType == 'left') {
|
||
|
||
ctrl.dialogBox.close({
|
||
dialogName: 'alert'
|
||
});
|
||
ctrl.logout();
|
||
}
|
||
});
|
||
}, 100)
|
||
|
||
|
||
|
||
})
|
||
|
||
//清除缓存
|
||
api.addEventListener({
|
||
name: 'leftPanelClickClear'
|
||
}, function (ret, err) {
|
||
if (timer) {
|
||
window.clearTimeout(timer);
|
||
}
|
||
window.setTimeout(function () {
|
||
var options = {};
|
||
options.title = "清空缓存";
|
||
options.content = "该操作将清空图片缓存,消息等数据,是否清空?"
|
||
var alertContent = ctrl.initAlertContent(options);
|
||
ctrl.dialogBox.alert(alertContent, function (ret) {
|
||
if (ret.eventType == 'right') {
|
||
ctrl.dialogBox.close({
|
||
dialogName: 'alert'
|
||
});
|
||
} else if (ret.eventType == 'left') {
|
||
api.clearCache(function () {
|
||
messageDao.clearAll(function () {
|
||
api.execScript({
|
||
name: 'index',
|
||
script: 'api.toast({msg:"成功清空缓存"});'
|
||
});
|
||
var dialogBox = api.require('dialogBox');
|
||
ctrl.dialogBox.close({
|
||
dialogName: 'alert'
|
||
});
|
||
})
|
||
});
|
||
}
|
||
});
|
||
}, 100)
|
||
|
||
|
||
})
|
||
|
||
// 应用从后台回到前台
|
||
api.addEventListener({
|
||
name: 'resume'
|
||
}, function (ret, err) {
|
||
ctrl.initWebsocket();
|
||
if (!/has_remind_update/.test(document.cookie)) {
|
||
|
||
ctrl.checkToUpdate();
|
||
|
||
}
|
||
|
||
});
|
||
|
||
//应用到后台
|
||
|
||
api.addEventListener({
|
||
name: 'pause'
|
||
}, function (ret, err) {
|
||
ctrl.closeWebsocket();
|
||
});
|
||
|
||
//绑定底部导航
|
||
|
||
var navItems = $api.domAll(".nav-item");
|
||
var length = navItems.length;
|
||
for (var i = 0; i < length; i++) {
|
||
(function (index) {
|
||
|
||
$api.addEvt(navItems[index], "touchend", function () {
|
||
// 切换底部nav时,隐藏掉modal(项目选择modal和配电室选择modal)
|
||
api.sendEvent({
|
||
name: 'requestCloseModal'
|
||
});
|
||
var frameName = $api.attr(this, "frame");
|
||
var frame = ctrl.frames[frameName];
|
||
|
||
if (typeof (frame.callback) == "function") {
|
||
frame.callback(this);
|
||
}
|
||
|
||
}, false);
|
||
})(i);
|
||
}
|
||
|
||
//绑定用户按钮 点击弹出左侧的抽屉页
|
||
|
||
$api.addEvt($api.dom("#user"), "touchend", function () {
|
||
|
||
//发送点击的事件提醒隐藏配电室;列表
|
||
|
||
api.sendEvent({
|
||
name: 'userTouched',
|
||
});
|
||
|
||
// $api.css($api.dom("#pr-picker-modal"), "display:none");
|
||
api.openDrawerPane({
|
||
type: 'left'
|
||
});
|
||
}, false);
|
||
|
||
//阻止android的返回事件
|
||
|
||
api.addEventListener({
|
||
name: 'keyback'
|
||
}, function (ret, err) {
|
||
api.closeWidget({});
|
||
return false;
|
||
});
|
||
|
||
//阻止ios的返回事件
|
||
|
||
api.addEventListener({
|
||
name: 'swiperight'
|
||
}, function (ret, err) {
|
||
return false;
|
||
});
|
||
|
||
//如果二级页面设置了横屏显示 返回时变成横屏
|
||
|
||
api.addEventListener({
|
||
name: 'viewappear'
|
||
}, function (ret, err) {
|
||
|
||
});
|
||
|
||
//切换配电室
|
||
|
||
$api.addEvt($api.dom("#pr-name"), "touchend", function () {
|
||
api.sendEvent({
|
||
name: 'requestChangePr'
|
||
});
|
||
}, false);
|
||
|
||
//收到配电室改变的消息
|
||
|
||
api.addEventListener({
|
||
name: 'prChanged'
|
||
}, function (ret, err) {
|
||
if (!err) {
|
||
var prName = ret.value.prName;
|
||
var length = prName.length;
|
||
if (length > 10) {
|
||
prName = prName.slice(0, 10) + "...";
|
||
}
|
||
$api.text($api.dom("#pr-name"), prName);
|
||
}
|
||
});
|
||
|
||
//收到消息改变的事件
|
||
|
||
api.addEventListener({
|
||
name: 'messageUpdated'
|
||
}, function (ret, err) {
|
||
ctrl.initBadge();
|
||
});
|
||
|
||
//收到报警改变的事件
|
||
|
||
api.addEventListener({
|
||
name: 'rtAlarmListUpdated'
|
||
}, function (ret, err) {
|
||
ctrl.initBadge();
|
||
});
|
||
|
||
// add by guoyuanyuan 2018/9/25
|
||
// 对于园区客户的董事长,项目经理角色,增加项目切换
|
||
$api.addEvt($api.dom("#project-picker"), "touchend", function () {
|
||
api.sendEvent({
|
||
name: 'requestChangeProject'
|
||
});
|
||
}, false);
|
||
}
|
||
|
||
//初始化导航栏底部badge
|
||
//如果是ios 初始化桌面的badge
|
||
|
||
ctrl.initBadge = function () {
|
||
|
||
//消息badge
|
||
var ajpush = api.require('ajpush');
|
||
messageDao.getAllUnReadCount(function (sum) {
|
||
if (sum == 0) {
|
||
$api.css($api.dom("#message-badge"), "display:none");
|
||
|
||
ajpush.setBadge({
|
||
badge: 0
|
||
});
|
||
return false;
|
||
}
|
||
|
||
if (sum > 99) {
|
||
sum = "99+";
|
||
}
|
||
$api.css($api.dom("#message-badge"), "display:block");
|
||
|
||
$api.text($api.dom("#message-badge"), sum);
|
||
|
||
ajpush.setBadge({
|
||
badge: sum
|
||
});
|
||
|
||
})
|
||
|
||
// //实时报警数量
|
||
var rtAlarmList = $api.getStorage('rtAlarmList');
|
||
rtAlarmList = (rtAlarmList ? rtAlarmList : []);
|
||
var alarmCount = rtAlarmList.length;
|
||
|
||
if (alarmCount == 0) {
|
||
$api.css($api.dom("#rtAlarm-badge"), "display:none");
|
||
} else {
|
||
|
||
$api.css($api.dom("#rtAlarm-badge"), "display:block");
|
||
|
||
}
|
||
}
|
||
// add by guoyuanyuan 2018/9/25
|
||
// 点击消息nav
|
||
ctrl.messageNavItemCallback = function (obj) {
|
||
ctrl.defaultNavItemCallback(obj);
|
||
// 在消息页显示项目选择提示
|
||
ctrl.initPorjectPicker();
|
||
}
|
||
//点击底部导航的默认回调函数
|
||
|
||
ctrl.defaultNavItemCallback = function (obj) {
|
||
//隐藏掉pr-name
|
||
//显示title;
|
||
$api.css($api.dom("#title"), "display:block");
|
||
$api.css($api.dom("#pr-name"), "display:none");
|
||
|
||
// add by guoyuanyuan 2018/9/25
|
||
// 在其他页面不显示项目提示
|
||
var projectPicker = $api.dom('#project-picker');
|
||
$api.text(projectPicker, '');
|
||
//切换frame
|
||
var frameName = $api.attr(obj, "frame");
|
||
ctrl.switchFrame(frameName);
|
||
|
||
}
|
||
|
||
//点击底部导航的功能按钮的回调函数
|
||
|
||
ctrl.featureFrameCallBack = function (obj) {
|
||
// add by guoyuanyuan 2018/9/25
|
||
// 在其他页面不显示项目提示
|
||
var projectPicker = $api.dom('#project-picker');
|
||
$api.text(projectPicker, '');
|
||
//显示pr-name
|
||
//隐藏title
|
||
$api.css($api.dom("#title"), "display:none");
|
||
$api.css($api.dom("#pr-name"), "display:flex");
|
||
|
||
var powerRoom = $api.getStorage("powerRoom");
|
||
_log(powerRoom);
|
||
|
||
//如果没用选中配电室
|
||
if (!powerRoom) {
|
||
api.sendEvent({
|
||
name: 'requestChangePr'
|
||
});
|
||
} else {
|
||
var prName = powerRoom.prName;
|
||
var length = prName.length;
|
||
if (length > 10) {
|
||
prName = prName.slice(0, 10) + "...";
|
||
}
|
||
|
||
$api.text($api.dom("#pr-name"), prName);
|
||
}
|
||
|
||
//切换frame;
|
||
var frameName = $api.attr(obj, "frame");
|
||
ctrl.switchFrame(frameName);
|
||
}
|
||
|
||
//切换frame
|
||
|
||
ctrl.switchFrame = function (frameName) {
|
||
$api.setStorage('activeNav', frameName)
|
||
|
||
var _this = ctrl;
|
||
var frame = _this.frames[frameName];
|
||
//显示对应的标题
|
||
$api.text($api.dom("#title"), frame.title);
|
||
|
||
//重置底部导航的选中状态
|
||
var frames = _this.frames;
|
||
var length = frames.length;
|
||
var navItems = $api.domAll(".nav-item");
|
||
|
||
var showFrame = "$api.css($api.dom('body'), 'display:block');";
|
||
var hideFrame = "$api.css($api.dom('body'), 'display:none');";
|
||
for (var name in frames) {
|
||
if (frame == frames[name]) {
|
||
$api.addCls(frames[name].navItem, "active");
|
||
$api.attr($api.dom(frames[name].navItem, "img"), "src", frames[name].activeIcon);
|
||
api.execScript({
|
||
frameName: name,
|
||
script: showFrame
|
||
});
|
||
} else {
|
||
$api.removeCls(frames[name].navItem, "active");
|
||
$api.attr($api.dom(frames[name].navItem, "img"), "src", frames[name].normalIcon);
|
||
api.execScript({
|
||
frameName: name,
|
||
script: hideFrame
|
||
});
|
||
}
|
||
}
|
||
//切换frame
|
||
api.openFrame({
|
||
name: frameName,
|
||
url: frame.url,
|
||
rect: {
|
||
x: _this.frameX,
|
||
y: _this.frameY,
|
||
w: _this.frameWidth,
|
||
h: _this.frameHeight
|
||
}
|
||
});
|
||
|
||
}
|
||
|
||
//比较版本号
|
||
|
||
ctrl.cmpVersion = function (thisVersion, otherVersion) {
|
||
var _this = thisVersion.split('.');
|
||
var _other = otherVersion.split('.');
|
||
|
||
for (var i = 0; i < 3; i++) {
|
||
var _t = parseInt(_this[i]);
|
||
var _o = parseInt(_other[i]);
|
||
|
||
if (_t > _o) {
|
||
return 1;
|
||
} else if (_t < _o) {
|
||
return -1;
|
||
}
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
//版本更新
|
||
|
||
ctrl.checkToUpdate = function () {
|
||
var thisVersion = api.readFile({
|
||
sync: true,
|
||
path: 'widget://resource/version.txt'
|
||
});
|
||
$api.getVersion(function (ret) {
|
||
if (ret) {
|
||
//如果当前版本低于服务器的最低版本 强制更新
|
||
if (ctrl.cmpVersion(thisVersion, ret.minSupport) < 0) {
|
||
api.alert({
|
||
title: '版本更新',
|
||
msg: '版本太低,强烈建议更新',
|
||
buttons: ['确定']
|
||
}, function (ret, err) {
|
||
update(function () {
|
||
//关闭当前页 退出登录 跳转到登录页
|
||
api.openWin({
|
||
name: 'login',
|
||
url: 'widget://html/user/login.html',
|
||
reload: true,
|
||
animation: {
|
||
type: "fade"
|
||
}
|
||
});
|
||
|
||
api.sendEvent({
|
||
name: 'loginout'
|
||
});
|
||
|
||
api.closeWin({
|
||
animation: {
|
||
type: "fade"
|
||
}
|
||
});
|
||
});
|
||
|
||
});
|
||
} else if (ctrl.cmpVersion(thisVersion, ret.latestVersion) < 0) {
|
||
//如果当前版本低于服务器的最新版本 建议更新
|
||
if (dialogBox) {
|
||
return;
|
||
}
|
||
var dialogBox = api.require('dialogBox');
|
||
dialogBox.alert({
|
||
texts: {
|
||
title: '版本更新',
|
||
content: '发现新的版本,请更新',
|
||
leftBtnTitle: '确定',
|
||
rightBtnTitle: '取消',
|
||
},
|
||
styles: {
|
||
bg: '#fff',
|
||
w: 300,
|
||
corner: 6,
|
||
title: {
|
||
marginT: 20,
|
||
titleSize: 18,
|
||
titleColor: '#000'
|
||
},
|
||
content: {
|
||
marginT: 10,
|
||
color: '#000',
|
||
size: 14
|
||
},
|
||
left: {
|
||
marginB: 7,
|
||
marginL: 20,
|
||
w: 130,
|
||
h: 35,
|
||
corner: 2,
|
||
bg: '#fff',
|
||
size: 18
|
||
},
|
||
right: {
|
||
marginB: 7,
|
||
marginL: 10,
|
||
w: 130,
|
||
h: 35,
|
||
corner: 2,
|
||
bg: 'white',
|
||
size: 18
|
||
}
|
||
|
||
}
|
||
}, function (ret) {
|
||
if (ret.eventType == 'right') {
|
||
var dialogBox = api.require('dialogBox');
|
||
dialogBox.close({
|
||
dialogName: 'alert'
|
||
});
|
||
} else if (ret.eventType == 'left') {
|
||
update();
|
||
var dialogBox = api.require('dialogBox');
|
||
dialogBox.close({
|
||
dialogName: 'alert'
|
||
});
|
||
}
|
||
});
|
||
}
|
||
|
||
//如果版本号不一样 标记已经提示过
|
||
//一天之内不在提示
|
||
if (ctrl.cmpVersion(thisVersion, ret.latestVersion) != 0) {
|
||
|
||
var exdate = new Date()
|
||
exdate.setHours(exdate.getHours() + 24)
|
||
document.cookie = "has_remind_update=1;expires=" + exdate.toGMTString();
|
||
|
||
}
|
||
|
||
|
||
}
|
||
}, 'json');
|
||
|
||
function update(callback) {
|
||
|
||
var platform = api.systemType;
|
||
if (platform == "ios") {
|
||
api.openApp({
|
||
iosUrl: 'https://itunes.apple.com/us/app/%E7%94%B5%E5%8A%A1%E9%80%9Asaas/id1398709195?l=zh&ls=1&mt=8'
|
||
}, function (ret, err) {
|
||
//coding...
|
||
});
|
||
callback && callback();
|
||
} else if (platform == "android") {
|
||
api.showProgress({
|
||
title: '下载中',
|
||
text: '请稍等...',
|
||
modal: false
|
||
});
|
||
|
||
api.download({
|
||
url: "https://cdn.dianwutong.com/app/dianwutong_saas/app.apk",
|
||
cache: false,
|
||
allowResume: true
|
||
}, function (ret, err) {
|
||
api.hideProgress();
|
||
if (ret.state == 1) {
|
||
//下载成功
|
||
api.installApp({
|
||
appUri: ret.savePath
|
||
});
|
||
callback && callback();
|
||
} else {
|
||
api.alert({
|
||
title: '版本更新',
|
||
msg: '下载失败,请到电务通官网扫码下载最新app',
|
||
buttons: ['确定']
|
||
}, function (ret, err) {
|
||
//coding...
|
||
callback && callback();
|
||
});
|
||
|
||
}
|
||
});
|
||
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
//检查是否更新
|
||
|
||
ctrl.checkHasUpdated = function () {
|
||
|
||
var lastVersion = $api.getStorage('lastVersion');
|
||
|
||
var currentVersion = api.readFile({
|
||
sync: true,
|
||
path: 'widget://resource/version.txt'
|
||
});
|
||
|
||
if (lastVersion && ctrl.cmpVersion(lastVersion, currentVersion) < 0) {
|
||
|
||
api.alert({
|
||
title: '提示',
|
||
msg: '版本更新成功,请重新登陆',
|
||
buttons: ['确定']
|
||
}, function (ret, err) {
|
||
|
||
api.sendEvent({
|
||
name: 'loginout'
|
||
});
|
||
|
||
setTimeout(function () {
|
||
api.closeWin({
|
||
animation: {
|
||
type: 'fade'
|
||
}
|
||
});
|
||
}, 500)
|
||
|
||
api.openWin({
|
||
name: 'login',
|
||
url: 'widget://html/user/login.html',
|
||
animation: {
|
||
type: 'fade'
|
||
}
|
||
});
|
||
|
||
})
|
||
|
||
} else {
|
||
|
||
$api.setStorage('lastVersion', currentVersion);
|
||
|
||
}
|
||
|
||
|
||
}
|
||
|
||
ctrl.init();
|
||
|
||
}
|