Commit 2eaf3d41 by 朱建香

#34

配置Wi-Fi说明,提示信息样式修改调整(突显出提示,不要用括号)
首次进入应用时,不要自动弹出登录页面
扫码绑定页面,照相机权限判断
parent 49e173cc
......@@ -186,20 +186,22 @@
"loading": "loading",
"bindSuccess": "绑定成功",
"bindFailure": "绑定失败",
"reBindDevice": "请重新绑定"
"reBindDevice": "请重新绑定",
"addDeviceTip": "扫描授权设备:受邀用户扫描“邀请授权”二维码。配置Wi-Fi:激活智能锁,激活成功后默认成为门锁管理员。"
},
"wifiAddHelp": {
"helpTitle": "配置WIFI说明:",
"helpCont1": "确认设备端进入配网模式(详情操作请见产品说明书)",
"helpCont2": "点击页面下方“开始配置Wi-Fi”按钮,进入WiFi配网页面",
"helpCont3": "输入Wi-Fi密码,点击“连接”,等待锁端响应,至配网成功。",
"helpCont4": "(提示:如果指纹锁已经绑定过用户,重新绑定成功后会清除之前所有绑定信息)"
"helpCont4": "提示:如果智能锁已经授权过用户,重新授权成功后会清除之前所有授权信息"
},
"wifiAdd": {
"unbindWifiTip": "当前无Wi-Fi",
"wifiBinding": "正在连接网络...",
"wifiBindSuccess": "Wi-Fi连接成功,正在激活设备...",
"deviceActivating": "Wi-Fi连接成功,正在激活设备...",
"wifiBinding": "正在搜索设备...",
"wifiBindSuccess": "设备正在连接Wi-Fi...",
"wifiBindFailue": "设备连接Wi-Fi失败",
"deviceActivating": "正在等待设备激活...",
"deviceActivateSuccess":"激活成功",
"deviceActivateFailure":"激活失败",
"bindTimeout":"连接超时",
......@@ -300,11 +302,13 @@
"appRemoteOpenDoor": "app远程",
"hijackingAlarm": "劫持指纹",
"setHijack": "设为劫持",
"setHijackTip": "确认设为劫持指纹?设定后使用该指纹开锁时,门锁用户将会收到劫持报警",
"bindUnlockInfo": "关联开锁信息",
"addInfoSuccess": "关联开锁信息成功",
"setHijackTip": "确定设为劫持指纹? 设定成功后用该指<br>纹开锁时,系统将会视为劫持报警。",
"cancelHijack": "取消劫持",
"cancelHijackTip": "确认取消劫持指纹?取消后,门锁用户不再收到劫持报警",
"cancelHijackTip": "确定取消劫持指纹? 取消后用该指纹开<br>锁时,系统将会视为正常开锁。",
"cancelAssociated": "取消关联",
"cancelAssociatedTip": "取消关联后,开门历史记录中将不再显示关联的用户信息。",
"cancelAssociatedTip": "取消关联后,开门记录中将不再显示关联的用户信息。",
"cancelAssociatedSuccess": "取消关联成功",
"cancelAssociatedFailue": "取消关联失败",
"setHijackSuccess": "设为劫持指纹成功",
......
......@@ -11,7 +11,6 @@ import {iot, uPublic, uComponents} from '../../public/public.js';
iot.ready(init);
function init() {
console.log("init" + new Date().getTime());
//通用 dialog、loading组件
uPublic.componentsInit(['u-dialog','u-loading','u-process']);
// uPublic.closeSlideBack();
......@@ -24,7 +23,7 @@ function init() {
},
mounted(){
let self = this;
if (plus.os.name == 'Android') {
if(plus.os.name == 'Android') {
iot.permission.checkPermission(['CAMERA'], function (res) {
console.log('success', res);
console.log("openScanCode"+ new Date().getTime());
......@@ -33,7 +32,20 @@ function init() {
console.log('error', err);
});
}else{
let isFistOpenCamera = iot.storage.getMap('isFistOpenCamera');
if(isFistOpenCamera){
iot.permission.checkPermission(['CAMERA'], function (res) {
console.log('success', res);
console.log("openScanCode"+ new Date().getTime());
openScanCode(self);
}, function (err) {
console.log('error', err);
});
}else{
openScanCode(self);
iot.storage.setMap('isFistOpenCamera', true,() => {
}, (err) => {});
}
}
window.addEventListener('returnPage',() => {
self.noticeTipShowFlag = !iot.native.isNotifycationOpen();
......
......@@ -162,7 +162,7 @@ function connectButtonTap(self){
if(self.countDownText <= 0){
console.log("innnnn");
window.clearInterval(self.timeout);
addFailue(self);
addFailue(self, Vue.t('wifiAdd.bindTimeout'));
}
},1000);
uComponents.showProcess(self, 0, Vue.t('addDevice.loading'), [{
......@@ -230,7 +230,7 @@ function connectButtonTap(self){
if (window.iotDebug) {
iotDebug.upload(iot,'配网失败');
}
addFailue(self);
addFailue(self,Vue.t('wifiAdd.wifiBindFailue'));
}
});
iot.business.sds.findDevices({
......@@ -418,14 +418,14 @@ function bind(self, deviceId, productId){
});
}
function addFailue(self){
function addFailue(self, addFailueReason = Vue.t('wifiAdd.deviceActivateFailure')){
//停止配网
iot.business.sds.stopFindDevices({
success: (response) => {},
error: (error) => {}
});
window.clearInterval(self.timeout);
uComponents.showProcess(self, 2, Vue.t('wifiAdd.deviceActivateFailure'), [{
uComponents.showProcess(self, 2, addFailueReason, [{
"class": 'custom-process-button', 'text': Vue.t('addDevice.reBindDevice'), 'callback': () => {
//激活失败
uComponents.hideProcess(self);
......
......@@ -116,6 +116,7 @@ function init() {
warmingShowFlag: false,
normalApertureShow: false,
warmingApertureShow: false,
preMsgStatus: {},
//是否显示远程开门页面
remoteOpendoorShowFlag: false,
//远程开门密码
......@@ -729,8 +730,10 @@ async function updateHistoryMap(self, historyRecord){
let historyType = ['alarm','notify'];
for(let i=0 ; i < historyType.length; i++){
if(historyRecord.hasOwnProperty(historyType[i]) && oldHistory[historyType[i]].time < moment(historyRecord[historyType[i]]).unix() && now - moment(historyRecord[historyType[i]]).unix() < 3600){
newHistory[historyType[i]].time = moment(historyRecord[historyType[i]]).unix()
newHistory[historyType[i]].time = moment(historyRecord[historyType[i]]).unix();
newHistory[historyType[i]].isReadFlag = false;
console.log(moment(historyRecord[historyType[i]]).unix());
}
}
......@@ -748,14 +751,29 @@ async function updateHistoryMap(self, historyRecord){
self.hijackAlarmFlag = !response.alarm.isReadFlag;
self.opendoorRecordFlag = !response.open.isReadFlag;
console.log(self.securityAlarmFlag);
// setMsgStatus(self, false, "default_img", false, false, '', '');
if(self.hijackAlarmFlag == true){
if(historyRecord.hasOwnProperty('alarm')){
//显示劫持报警
setMsgStatus(self, true, "hijack_img", false, true, moment(historyRecord.alarm,"YYYY-MM-DD hh:mm:ss").format("HH:mm"), Vue.t('device.hijackAlarm'));
}else{
//显示劫持报警
setMsgStatus(self, true, "hijack_img", false, true, moment.unix(response.alarm.time).format("HH:mm"), Vue.t('device.hijackAlarm'));
}
}else if(self.securityAlarmFlag == true){
if(historyRecord.hasOwnProperty('notify')){
//显示安全报警
setMsgStatus(self, true, "securityAlarm_img", false, true, moment(historyRecord.notify,"YYYY-MM-DD hh:mm:ss").format("HH:mm"), Vue.t('device.securityAlarm'));
}else{
setMsgStatus(self, false, "default_img", false, false, '', '');
//显示劫持报警
setMsgStatus(self, true, "securityAlarm_img", false, true, moment.unix(response.notify.time).format("HH:mm"), Vue.t('device.securityAlarm'));
}
}else{
if((self.getMsgClass() == 'hijack_img') || (self.getMsgClass() == 'securityAlarm_img')){
//显示之前的记录
setMsgStatus(self, self.preMsgStatus.warmingShowFlag, self.preMsgStatus.msgClass, self.preMsgStatus.normalApertureShow, self.preMsgStatus.warmingApertureShow, self.preMsgStatus.msgTime, self.preMsgStatus.msgText);
}
}
}, () => {
});
......@@ -1000,6 +1018,15 @@ function setRemoteOpendoor(self, time){
//设置信息提示
function setMsgStatus(self, warmingShow, imgClass, normalAperture, warmingAperture, msgTime, msgText){
//记录前一条信息提示
self.preMsgStatus = {
'warmingShowFlag': self.getWarmingShowFlag(),
'msgClass': self.getMsgClass(),
'normalApertureShow': self.getNormalApertureShow(),
'warmingApertureShow': self.getWarmingApertureShow(),
'msgTime': self.getMsgTime(),
'msgText': self.getMsgText()
}
//设置当前为普通状态
self.setWarmingShowFlag(warmingShow);
//更换icon
......
......@@ -38,10 +38,10 @@ function init() {
this.extras = iot.navigator.getExtras();
this.role = this.extras.role;
let self = this;
window.addEventListener('returnPage',function(event){
console.log("returnPage");
getUserInfo(self);
});
// window.addEventListener('returnPage',function(event){
// console.log("returnPage");
// getUserInfo(self);
// });
getUserInfo(this);
let opener = plus.webview.currentWebview().opener();
if(opener.id == 'addUser'){
......@@ -505,12 +505,31 @@ function iSeeButtonTap(self){
//删除用户
function deleteUser(self){
uComponents.showLoading(self);
if(self.info.auids){
iot.business.sds.unbindByManager({
data: {
uuid: self.extras.uuid,
destAuid: self.info.auids
},
success: (response) => {
deleteCloudeUser(self);
},
error: (error) => {
console.log(error);
uComponents.openAlert(self, Vue.t('doorlockUser.deleteFailure'), {
text: Vue.t('btn.confirm'), callback: function () {
}
});
},
complete: () => {
}
});
}else{
deleteCloudeUser(self);
}
}
function deleteCloudeUser(self){
iot.business.api.sendCustom('lock/delLockUser',{
data: {
rel_id: self.extras.id,
......@@ -539,15 +558,4 @@ function deleteUser(self){
uComponents.hideLoading(self);
}
});
},
error: (error) => {
console.log(error);
uComponents.openAlert(self, Vue.t('doorlockUser.deleteFailure'), {
text: Vue.t('btn.confirm'), callback: function () {
}
});
},
complete: () => {
}
});
}
......@@ -81,8 +81,8 @@ function backTap(){
}
mui.back = function(){
iot.navigator.fire(plus.webview.currentWebview().opener(),'returnPage',{});
console.log("fire");
// iot.navigator.fire(plus.webview.currentWebview().opener(),'returnPage',{});
// console.log("fire");
iot.navigator.back();
}
......@@ -142,7 +142,7 @@ function createQrcode(self, qrKey){
console.log(qr.style);
setTimeout(() => {
self.setQrCodeDisabled(true);
},qrcode_timeout);
},config.qrcode_timeout);
}
});
}
......@@ -30,7 +30,7 @@ function init() {
noHistoryTip: Vue.t('unlockInfo.noHistoryTip'),
tipShowFlag: true,
infoList: [],
newUnlockInfo: false
// list: [],
// pullup: false,
// loadText: Vue.t('scroll.clickToLoadMore'),
......@@ -47,7 +47,6 @@ function init() {
let self = this;
this.lockItems = [{text: Vue.t('unlockInfo.bindSoon')},{text: Vue.t('unlockInfo.bindUnlockInfo')}];
itemChange(this, this.selectItem);
// this.setLoadShowFlag(this.infoList.length);
// let ulistDom = this.$refs.infoList;
// ulistDom.onscroll = function () {
......@@ -85,6 +84,12 @@ function init() {
setInfoList(list){
this.infoList = list;
},
getNewUnlockInfo(){
return this.newUnlockInfo;
},
setNewUnlockInfo(info){
this.newUnlockInfo = info;
},
//tap <
onBackTap(){
backTap();
......@@ -327,6 +332,7 @@ function itemChange(self, key){
getTodayReccord(self);
}else if(key == 1){
//获取已关联的开门记录
self.setNewUnlockInfo(false);
getBindedLockInfo(self);
}
self.setSelectItem(key);
......@@ -357,7 +363,7 @@ function getTodayReccord(self){
value: data[i].id,
title: 'ID:'+data[i].openId,
subtitle: moment(data[i].time).format("HH:mm")+' '+Vue.t('opendoorRecord.'+config.openDoorMode[data[i].mode]+''),
buttons: [{"imgSrc": "../../resources/image/green_addUnlckInfo_icon.png"}]
buttons: [{"text": Vue.t('unlockInfo.bindUnlockInfo')}]
}
}
self.setInfoList(list);
......@@ -385,12 +391,10 @@ function addButtonTap(self, index){
success: (response) => {
console.log(response);
if(response.data.success){
uComponents.openConfirm(self, Vue.t('addUnlockInfo.addInfoSuccess'),
{text: Vue.t('addUnlockInfo.stay'), callback: function () {
uComponents.openAlert(self, Vue.t('unlockInfo.addInfoSuccess'),
{text: Vue.t('btn.confirm'), callback: function () {
getTodayReccord(self);
}},
{text: Vue.t('addUnlockInfo.bindedUnlockInfo'), callback: function () {
itemChange(self, 1);
self.setNewUnlockInfo(true);
}});
}else{}
},
......
......@@ -29,13 +29,15 @@ function init() {
if(window.iotDebug){
iotDebug.push('start: Debug');
}
resolve(this);
document.addEventListener("resume", () => {
if(!this.showLoginButtonFlag){
resolve(this);
console.log(iot.business.user.isLogin());
if(iot.business.user.isLogin()){
loginButtonTap(this);
}
}, false);
// document.addEventListener("resume", () => {
// if(!this.showLoginButtonFlag){
// resolve(this);
// }
// }, false);
},
methods:{
getShowLoginButtonFlag(){
......@@ -81,21 +83,49 @@ function initComponentsConfig() {
}
}
function resolve(self){
//function resolve(self){
// if (plus.os.name == 'Android') {
// iot.permission.checkPermission(['READ_EXTERNAL_STORAGE'], function (res) {
// console.log('success', res);
// loginButtonTap(self);
// }, function (err) {
// console.log('error', err);
// //已禁用,跳到系统设置页面
// iot.native.toAppSetting();
// });
// }else{
// loginButtonTap(self);
// }
//}
//sds登陆
function loginButtonTap(self){
if (plus.os.name == 'Android') {
iot.permission.checkPermission(['READ_EXTERNAL_STORAGE'], function (res) {
console.log('success', res);
loginButtonTap(self);
openSdsLogin(self);
}, function (err) {
console.log('error', err);
//已禁用,跳到系统设置页面
// plus.nativeUI.confirm('需要文件读取权限', (e)=>{
// if(e.index == 1){
// //确认
// iot.native.toAppSetting();
// }else if(e.index == 1){
// //取消
// uComponents.hideloading(self);
// }
// },{ "title":"权限请求",
// "buttons":["取消","确定"],
// "verticalAlign":"center"});
});
}else{
loginButtonTap(self);
openSdsLogin(self);
}
}
//sds登陆
function loginButtonTap(self){
function openSdsLogin(self){
iot.business.sds.checkSDSInit({
data: {},
success: (response) => {
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -65,6 +65,22 @@
//配置Wi-Fi
.wifiAddHelp{
.help();
position: relative;
li{
text-indent: 0;
&:last-child{
color: #FFF;
padding-left: 36px;
&:before{
color: #00FFFF;
content:'\e648';
.iconfont(16px);
line-height: 2;
position: absolute;
left: 12px;
}
}
}
}
.u-button();
......
......@@ -99,18 +99,21 @@
height: 100%;
border-radius: 50%;
}
p{
div{
position: absolute;
top: 30px;
left: 0;
right: 0;
margin: 0 auto;
// .bgImgSize(40px,40px,"green_default_icon.png",center,cover);
width: 40px;
height: 40px;
background-size: 40px 40px;
.transform-origin(center 5px);
}
}
.active{
p{
div{
.animation(shake 1s linear infinite);
}
}
......@@ -128,40 +131,79 @@
}
}
.wifiRemote{
display: none;
}
.default_img{
.bgImgSize(40px,40px,"green_default_icon.png",center,cover);
.bgImg("green_default_icon.png");
}
.doorbell_img{
.bgImgSize(40px,40px,"green_doorbell_icon.png",center,cover);
.bgImg("green_doorbell_icon.png");
}
.remoteOpendoor_img{
// .bgImgSize(40px,40px,"green_remoteOpendoor_icon.png",center,cover);
width: 37.5px;
height: 37.5px;
background-size: 112.5px 37.5px;
background-repeat: no-repeat;
background-position: 0 0;
.bgImg("green_remoteOpendoor_icon.png");
.animation(remoteOpendoor 2s step-start infinite);
.wifiRemote{
display: block;
.margin_center(30px,30px);
left: 6px;
li{
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
border: 2px solid #00FFFF;/*no*/
border-top-color: transparent;
border-bottom-color: transparent;
border-left-color: transparent;
border-radius: 60px;
.animation(stretchdelay 1.5s infinite);
&:nth-child(1){
width: 100%;
height: 100%;
.animation-delay(-0.9s);
}
&:nth-child(2){
width: 20px;
height: 20px;
.animation-delay(-1.2s);
}
&:nth-child(3){
width: 10px;
height: 10px;
}
}
}
}
.hijack_img{
.bgImgSize(40px,40px,"red_hijack_icon.png",center,cover);
.bgImg("red_hijack_icon.png");
}
.securityAlarm_img{
.bgImgSize(40px,40px,"red_securityAlarm_icon.png",center,cover);
.bgImg("red_securityAlarm_icon.png");
&:before{
content: '';
width: 100%;
height: 100%;
display: block;
position: absolute;
.bgImgSize(40px,40px,"red_securityAlarmLight_icon.png",center,cover);
.animation(alarmLight 2.5s linear infinite);
}
}
.redDoorbellBg{
.linear-gradient(#ff0066,#fff,#fff,#fff,#ff0066);
background: linear-gradient(#ff0066,#fff,#fff,#fff,#ff0066);
.linear-gradient(#ff4799,#fff,#fff,#fff,#ff4799);
background: linear-gradient(#ff4799,#fff,#fff,#fff,#ff4799);
.doorbellCircle{
background-color: #2f2437;
background-color: #2f283a;
.doorbell{
border: 2px solid #ff0066;/*no*/
border: 2px solid #ff4799;/*no*/
}
}
}
......@@ -188,10 +230,10 @@
.keyframes(redAperture,{
0%{
.box-shadow(0 0 0 0 rgba(255,0,102,1));
.box-shadow(0 0 0 0 rgba(255,71,153,1));
}
100%{
.box-shadow(0 0 0 10px rgba(255,0,102,0));
.box-shadow(0 0 0 10px rgba(255,71,153,0));
}
});
......@@ -222,6 +264,26 @@
}
});
.keyframes(stretchdelay,{
0%,
100% {
border-right-color: #FFF;
}
40% {
border-right-color: #00FFFF;
}
});
.keyframes(alarmLight,{
0%,
100%{
opacity: 1;
}
50% {
opacity: 0.5;
}
});
.batteryState{
text-align: right;
padding-right: 25px;
......@@ -499,12 +561,14 @@
}
.newMsg .custom-switch:before{
content: '\e681';
content: '';
position: absolute;
top: 0;
right: 104px;
.iconfont(@NEWMSG-ICON-FONTSIZE);
color: @NEWMSG-ICON-COLOR;
right: 110px;
width: 7px;/*no*/
height: 7px;/*no*/
border-radius: 50%;
background-color: #fc2168;
z-index: 3;
}
......
......@@ -72,6 +72,19 @@
background-color: transparent;
}
}
.newMsg {
&:before{
content: '';
position: absolute;
top: 9px;
right: 22px;
width: 7px;/*no*/
height: 7px;/*no*/
border-radius: 50%;
background-color: #fc2168;
z-index: 3;
}
}
.active{
color: #fff;
&:after{
......@@ -114,6 +127,8 @@
float: left;
padding: 10px;
margin: 0 5px;
color: #00f8dd;
font-size: 14px;
img{
width: 23px;
height: 23px;
......
......@@ -38,7 +38,7 @@
.user-list-title{
font-size: @USERLIST-TITLE-FONTSIZE;
.text_oneRow_ellipsis();
margin-bottom: 5px;
// margin-bottom: 5px;
}
//昵称
.user-list-subtitle span{
......
......@@ -53,7 +53,7 @@
@BLACK_OPACITY: fade(@C_BLACK,90%);
@BLACK_OPACITY_1: fade(@C_BLACK,40%);
@WHITE_OPACITY: fade(@C_WHITE,0);
@BLUE_OPACITY: fade(@C_BLACK,90%);
@BLUE_OPACITY: fade(@C_BLUE_2,80%);
@GRAY_OPACITY: fade(@C_GRAY_2,5%);
//font-sizes
......
......@@ -100,7 +100,7 @@ p {
}
.custom-loading {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-loading .u-loading-box {
......@@ -303,7 +303,7 @@ p {
}
.custom-dialog {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-dialog .u-dialog-box {
......@@ -614,6 +614,7 @@ p {
.wifiAddHelp {
margin: 0.8rem 1.013rem 1.547rem;
position: relative;
}
.wifiAddHelp li {
......@@ -631,6 +632,27 @@ p {
margin-bottom: 0.907rem;
}
.wifiAddHelp li {
text-indent: 0;
}
.wifiAddHelp li:last-child {
color: #FFF;
padding-left: 0.96rem;
}
.wifiAddHelp li:last-child:before {
color: #00FFFF;
content: '\e648';
font-family: iconfont;
font-size: 0.427rem;
-webkit-font-smoothing: antialiased;
line-height: 1;
line-height: 2;
position: absolute;
left: 0.32rem;
}
.u-button {
width: 6.4rem;
color: #fff;
......
......@@ -100,7 +100,7 @@ p {
}
.custom-loading {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-loading .u-loading-box {
......@@ -303,7 +303,7 @@ p {
}
.custom-dialog {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-dialog .u-dialog-box {
......
......@@ -100,7 +100,7 @@ p {
}
.custom-loading {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-loading .u-loading-box {
......@@ -303,7 +303,7 @@ p {
}
.custom-dialog {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-dialog .u-dialog-box {
......@@ -881,7 +881,7 @@ p {
}
.custom-comm-loading {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-comm-loading .u-comm-loading-button {
......@@ -1038,17 +1038,20 @@ p {
border-radius: 50%;
}
.doorbellBg .doorbellCircle .doorbell p {
.doorbellBg .doorbellCircle .doorbell div {
position: absolute;
top: 0.8rem;
left: 0;
right: 0;
margin: 0 auto;
width: 1.067rem;
height: 1.067rem;
background-size: 1.067rem 1.067rem;
-webkit-transform-origin: center 0.133rem;
transform-origin: center 0.133rem;
}
.doorbellBg .doorbellCircle .active p {
.doorbellBg .doorbellCircle .active div {
-webkit-animation: shake 1s linear infinite;
animation: shake 1s linear infinite;
}
......@@ -1066,60 +1069,104 @@ p {
margin-right: 0.267rem;
}
.wifiRemote {
display: none;
}
.default_img {
width: 1.067rem;
height: 1.067rem;
background: url("../../resources/image/green_default_icon.png") no-repeat center;
-webkit-background-size: cover;
background-size: cover;
background-image: url("../../resources/image/green_default_icon.png");
}
.doorbell_img {
width: 1.067rem;
height: 1.067rem;
background: url("../../resources/image/green_doorbell_icon.png") no-repeat center;
-webkit-background-size: cover;
background-size: cover;
background-image: url("../../resources/image/green_doorbell_icon.png");
}
.remoteOpendoor_img {
width: 1rem;
height: 1rem;
background-size: 3rem 1rem;
background-repeat: no-repeat;
background-position: 0 0;
background-image: url("../../resources/image/green_remoteOpendoor_icon.png");
-webkit-animation: remoteOpendoor 2s step-start infinite;
animation: remoteOpendoor 2s step-start infinite;
}
.remoteOpendoor_img .wifiRemote {
display: block;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
width: 0.8rem;
height: 0.8rem;
margin: auto;
left: 0.16rem;
}
.remoteOpendoor_img .wifiRemote li {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
border: 2px solid #00FFFF;
border-top-color: transparent;
border-bottom-color: transparent;
border-left-color: transparent;
border-radius: 1.6rem;
-webkit-animation: stretchdelay 1.5s infinite;
animation: stretchdelay 1.5s infinite;
}
.remoteOpendoor_img .wifiRemote li:nth-child(1) {
width: 100%;
height: 100%;
-webkit-animation-delay: -0.9s;
animation-delay: -0.9s;
}
.remoteOpendoor_img .wifiRemote li:nth-child(2) {
width: 0.533rem;
height: 0.533rem;
-webkit-animation-delay: -1.2s;
animation-delay: -1.2s;
}
.remoteOpendoor_img .wifiRemote li:nth-child(3) {
width: 0.267rem;
height: 0.267rem;
}
.hijack_img {
width: 1.067rem;
height: 1.067rem;
background: url("../../resources/image/red_hijack_icon.png") no-repeat center;
-webkit-background-size: cover;
background-size: cover;
background-image: url("../../resources/image/red_hijack_icon.png");
}
.securityAlarm_img {
background-image: url("../../resources/image/red_securityAlarm_icon.png");
}
.securityAlarm_img:before {
content: '';
width: 100%;
height: 100%;
display: block;
position: absolute;
width: 1.067rem;
height: 1.067rem;
background: url("../../resources/image/red_securityAlarm_icon.png") no-repeat center;
background: url("../../resources/image/red_securityAlarmLight_icon.png") no-repeat center;
-webkit-background-size: cover;
background-size: cover;
-webkit-animation: alarmLight 2.5s linear infinite;
animation: alarmLight 2.5s linear infinite;
}
.redDoorbellBg {
background: -webkit-linear-gradient(#ff0066, #fff, #fff, #fff, #ff0066);
background: linear-gradient(#ff0066, #fff, #fff, #fff, #ff0066);
background: -webkit-linear-gradient(#ff4799, #fff, #fff, #fff, #ff4799);
background: linear-gradient(#ff4799, #fff, #fff, #fff, #ff4799);
}
.redDoorbellBg .doorbellCircle {
background-color: #2f2437;
background-color: #2f283a;
}
.redDoorbellBg .doorbellCircle .doorbell {
border: 2px solid #ff0066;
border: 2px solid #ff4799;
}
.active .doorbellCircle .doorbell:before,
......@@ -1146,25 +1193,25 @@ p {
@-webkit-keyframes redAperture {
0% {
-webkit-box-shadow: 0 0 0 0 #ff0066;
box-shadow: 0 0 0 0 #ff0066;
-webkit-box-shadow: 0 0 0 0 #ff4799;
box-shadow: 0 0 0 0 #ff4799;
}
100% {
-webkit-box-shadow: 0 0 0 0.267rem rgba(255, 0, 102, 0);
box-shadow: 0 0 0 0.267rem rgba(255, 0, 102, 0);
-webkit-box-shadow: 0 0 0 0.267rem rgba(255, 71, 153, 0);
box-shadow: 0 0 0 0.267rem rgba(255, 71, 153, 0);
}
}
@keyframes redAperture {
0% {
-webkit-box-shadow: 0 0 0 0 #ff0066;
box-shadow: 0 0 0 0 #ff0066;
-webkit-box-shadow: 0 0 0 0 #ff4799;
box-shadow: 0 0 0 0 #ff4799;
}
100% {
-webkit-box-shadow: 0 0 0 0.267rem rgba(255, 0, 102, 0);
box-shadow: 0 0 0 0.267rem rgba(255, 0, 102, 0);
-webkit-box-shadow: 0 0 0 0.267rem rgba(255, 71, 153, 0);
box-shadow: 0 0 0 0.267rem rgba(255, 71, 153, 0);
}
}
......@@ -1238,6 +1285,46 @@ p {
}
}
@-webkit-keyframes stretchdelay {
0%, 100% {
border-right-color: #FFF;
}
40% {
border-right-color: #00FFFF;
}
}
@keyframes stretchdelay {
0%, 100% {
border-right-color: #FFF;
}
40% {
border-right-color: #00FFFF;
}
}
@-webkit-keyframes alarmLight {
0%, 100% {
opacity: 1;
}
50% {
opacity: 0.5;
}
}
@keyframes alarmLight {
0%, 100% {
opacity: 1;
}
50% {
opacity: 0.5;
}
}
.batteryState {
text-align: right;
padding-right: 0.667rem;
......@@ -1657,15 +1744,14 @@ p {
}
.newMsg .custom-switch:before {
content: '\e681';
content: '';
position: absolute;
top: 0;
right: 2.773rem;
font-family: iconfont;
font-size: 0.427rem;
-webkit-font-smoothing: antialiased;
line-height: 1;
color: #fc2168;
right: 2.933rem;
width: 7px;
height: 7px;
border-radius: 50%;
background-color: #fc2168;
z-index: 3;
}
......@@ -1763,7 +1849,7 @@ p {
width: 100%;
height: 100%;
z-index: 1051;
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.u-notification .u-notification-box {
......
......@@ -32,9 +32,13 @@
<div class="doorbellCircle">
<div class="doorbell" v-bind:class="{ active: doorbellRingingFlag }">
<!--<img :src="msgIconSrc">-->
<p :class=" msgClass ">
</p>
<div :class=" msgClass ">
<ul class="wifiRemote">
<li></li>
<li></li>
<li></li>
</ul>
</div>
</div>
</div>
<div class="doorbellTip"><span>{{ msgTime }}</span>{{ msgText }}</div>
......
......@@ -100,7 +100,7 @@ p {
}
.custom-loading {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-loading .u-loading-box {
......@@ -303,7 +303,7 @@ p {
}
.custom-dialog {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-dialog .u-dialog-box {
......
......@@ -100,7 +100,7 @@ p {
}
.custom-loading {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-loading .u-loading-box {
......@@ -303,7 +303,7 @@ p {
}
.custom-dialog {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-dialog .u-dialog-box {
......
......@@ -100,7 +100,7 @@ p {
}
.custom-loading {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-loading .u-loading-box {
......@@ -303,7 +303,7 @@ p {
}
.custom-dialog {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-dialog .u-dialog-box {
......@@ -1031,7 +1031,7 @@ p {
width: 100%;
height: 100%;
z-index: 1051;
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.unbindState-dialog div {
......
......@@ -100,7 +100,7 @@ p {
}
.custom-loading {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-loading .u-loading-box {
......@@ -303,7 +303,7 @@ p {
}
.custom-dialog {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-dialog .u-dialog-box {
......@@ -835,7 +835,7 @@ p {
width: 100%;
height: 100%;
text-align: center;
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.inviteBind li p span {
......@@ -868,7 +868,7 @@ p {
width: 100%;
height: 100%;
z-index: 1051;
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.unbindState-dialog div {
......@@ -911,7 +911,7 @@ p {
width: 100%;
height: 100%;
z-index: 1051;
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.guide-dialog .guideStep1 {
......
......@@ -28,8 +28,9 @@
<div class="content">
<ul class="userInfoLink">
<li class="userInfo" >
<img class="userInfo-image" v-if="userInfo.image && userInfo.role == 0" v-bind:src="userInfo.image">
<img class="userInfo-subimage" v-if="userInfo.image && userInfo.role != 0" v-bind:src="userInfo.image">
<img class="userInfo-image" v-bind:src="userInfo.image">
<!--<img class="userInfo-image" v-if="userInfo.image && userInfo.role == 0" v-bind:src="userInfo.image">
<img class="userInfo-subimage" v-if="userInfo.image && userInfo.role != 0" v-bind:src="userInfo.image">-->
<span class="userInfo-title">{{ userInfo.title == (null || '') ? $t('doorlockUser.defaultName') : userInfo.title}}</span>
<u-button :init-param="componentsConfig.bindButton.initParam" class="userInfo-toBind" v-on:u-button-tap="onBindButtonTap" v-show="bindShowFlag && !role"></u-button>
<u-button :init-param="componentsConfig.unbindButton.initParam" v-on:u-button-tap="onUnbindButtonTap" v-show="(unbindShowFlag && !role && userInfo.role != 0)"></u-button>
......
......@@ -31,13 +31,13 @@
<v-touch tag="li" class="user-list-row" v-for="(item, index) in userList" :key="index" >
<v-touch tag="div" class="user-list-handle"
v-on:tap="onTapUserList(index)">
<img class="user-list-image" v-if="item.image && item.role == 0" v-bind:src="item.image">
<img class="user-list-image" v-bind:src="item.image">
<div>
<p class="user-list-title" v-bind:class="{'currentUser': userListData[index].user_id == currentId }" >{{ item.title == (null || '')? $t('userList.defaultName'):item.title}}</p>
<p class="user-list-subtitle">
<!--<p class="user-list-subtitle">
<img class="user-list-subimage" v-if="item.image && item.role != 0" v-bind:src="item.image">
<span v-if="item.subtitle">{{ item.subtitle }}</span>
</p>
</p>-->
</div>
</v-touch>
<div class="user-list-button">
......
......@@ -100,7 +100,7 @@ p {
}
.custom-loading {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-loading .u-loading-box {
......@@ -303,7 +303,7 @@ p {
}
.custom-dialog {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-dialog .u-dialog-box {
......@@ -645,6 +645,18 @@ p {
background-color: transparent;
}
.tab .newMsg:before {
content: '';
position: absolute;
top: 0.24rem;
right: 0.587rem;
width: 7px;
height: 7px;
border-radius: 50%;
background-color: #fc2168;
z-index: 3;
}
.tab .active {
color: #fff;
}
......@@ -705,6 +717,8 @@ p {
float: left;
padding: 0.267rem;
margin: 0 0.133rem;
color: #00f8dd;
font-size: 0.373rem;
}
.infoList-list .infoList-list-scroll .infoList-list-row .infoList-list-button .infoList-list-buttonCont img {
......@@ -1143,7 +1157,7 @@ p {
width: 100%;
height: 100%;
z-index: 1051;
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.guide-dialog .guideStep1 {
......
......@@ -29,12 +29,12 @@
<!--<p class="title">{{ $t('unlockInfo.bindUnlockInfo') }}</p>-->
<ul class="tab">
<v-touch tag="li" v-for="(item, key, index) in lockItems" v-text="lockItems[key].text"
:class="{active: (selectItem == key)}" v-on:tap="onItemChange(key)">
:class="[{active: (selectItem == key)},{newMsg: newUnlockInfo && (key == 1)}]" v-on:tap="onItemChange(key)">
</v-touch>
</ul>
<!--<u-swipe-list ref="uswipelist" :init-param="componentsConfig.unlockInfoList.initParam"
v-on:u-swipe-list-button-tap="onUnlockInfoListButtonTap(arguments[0],arguments[1])"></u-swipe-list>-->
<div class="infoList-list" ref="infoList" >
<div class="infoList-list" ref="infoList">
<ul class="infoList-list-scroll" v-show="infoList.length">
<li class="infoList-list-row" v-for="(item, index) in infoList">
<div class="infoList-list-handle">
......@@ -42,8 +42,9 @@
<p class="infoList-list-subtitle">{{ item.subtitle }}</p>
</div>
<div class="infoList-list-button">
<v-touch tag="div" class="infoList-list-buttonCont" v-for="(button, buttonIndex) in item.buttons" v-show="button.imgSrc" v-on:tap="onImgButtonTap(index, buttonIndex)">
<img :src="button.imgSrc">
<v-touch tag="div" class="infoList-list-buttonCont" v-for="(button, buttonIndex) in item.buttons" v-show="button.imgSrc || button.text" v-on:tap="onImgButtonTap(index, buttonIndex)">
<img :src="button.imgSrc" v-show="button.imgSrc">
{{ button.text }}
</v-touch>
</div>
</li>
......
......@@ -100,7 +100,7 @@ p {
}
.custom-loading {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-loading .u-loading-box {
......@@ -303,7 +303,7 @@ p {
}
.custom-dialog {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-dialog .u-dialog-box {
......@@ -495,7 +495,6 @@ p {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
margin-bottom: 0.133rem;
}
.user-list-scroll .user-list-row .user-list-handle .user-list-subtitle span {
......
......@@ -23,7 +23,7 @@
<div id="app" v-cloak>
<div class="guideBg">
<u-button :init-param="componentsConfig.loginButton.initParam" v-on:u-button-tap="onLoginButtonTap" v-show="showLoginButtonFlag"></u-button>
<u-button :init-param="componentsConfig.loginButton.initParam" v-on:u-button-tap="onLoginButtonTap"></u-button>
</div>
<u-dialog ref="udialog" :init-param="componentsConfig.dialog.initParam"></u-dialog>
<u-loading ref="uloading" :init-param="componentsConfig.loading.initParam"></u-loading>
......
......@@ -100,7 +100,7 @@ p {
}
.custom-loading {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-loading .u-loading-box {
......@@ -303,7 +303,7 @@ p {
}
.custom-dialog {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-dialog .u-dialog-box {
......
......@@ -100,7 +100,7 @@ p {
}
.custom-loading {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-loading .u-loading-box {
......@@ -303,7 +303,7 @@ p {
}
.custom-dialog {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-dialog .u-dialog-box {
......
......@@ -100,7 +100,7 @@ p {
}
.custom-loading {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-loading .u-loading-box {
......@@ -303,7 +303,7 @@ p {
}
.custom-dialog {
background-color: rgba(0, 0, 0, 0.9);
background-color: rgba(36, 38, 53, 0.8);
}
.custom-dialog .u-dialog-box {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment