Commit a4cf43ad by wjd

Merge branch 'jianxiang' into 'debug'

Jianxiang

See merge request iot-project-js/doorlock!37
parents 4ba9f97d e15b833b
{ {
"loading": "loading...", "loading": "数据加载中...",
"scroll": { "scroll": {
"clickToLoadMore": "上拉加载更多", "clickToLoadMore": "上拉加载更多",
"loading": "loading" "loading": "loading"
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
"openNotify": "开启推送通知", "openNotify": "开启推送通知",
"reBound": "重新绑定", "reBound": "重新绑定",
"saveQRcode": "保存二维码到相册", "saveQRcode": "保存二维码到相册",
"unbind": "解", "unbind": "解除授权",
"deleteUser": "删除该用户", "deleteUser": "删除该用户",
"qrcodeReset": "重新生成二维码", "qrcodeReset": "重新生成二维码",
"add": "添加", "add": "添加",
...@@ -30,12 +30,13 @@ ...@@ -30,12 +30,13 @@
"iSee": "我知道了", "iSee": "我知道了",
"unbindDoorlock": "解绑门锁", "unbindDoorlock": "解绑门锁",
"finish": "完成", "finish": "完成",
"cancel": "取消" "cancel": "取消",
"search": "搜索"
}, },
"dialog":{ "dialog":{
"confirm": "确认", "confirm": "确认",
"cancel": "取消", "cancel": "取消",
"unbind": "解", "unbind": "解除授权",
"delete": "删除" "delete": "删除"
}, },
"title":{ "title":{
...@@ -51,15 +52,15 @@ ...@@ -51,15 +52,15 @@
"editName": "修改名称", "editName": "修改名称",
"qrcode": "生成绑定二维码", "qrcode": "生成绑定二维码",
"addDevice": "添加设备", "addDevice": "添加设备",
"scanCodeAdd": "扫描绑定设备", "scanCodeAdd": "扫码添加设备",
"wifiAddHelp": "配置Wi-Fi", "wifiAddHelp": "配网添加设备",
"wifiAdd": "连接Wi-Fi", "wifiAdd": "搜索设备",
"bindUserHelp": "ID-姓名绑定", "bindUserHelp": "ID-姓名绑定",
"bindUser": "绑定用户", "bindUser": "绑定用户",
"userList": "用户列表", "userList": "用户列表",
"doorlockUser": "门锁用户", "doorlockUser": "门锁用户",
"addUser": "添加用户", "addUser": "添加用户",
"inviteBind": "邀请绑定", "inviteBind": "邀请授权",
"unlockInfo": "关联开锁信息", "unlockInfo": "关联开锁信息",
"myInfo": "个人信息", "myInfo": "个人信息",
"editNickname": "修改昵称", "editNickname": "修改昵称",
...@@ -116,9 +117,10 @@ ...@@ -116,9 +117,10 @@
"newMsgDoorlock": "门锁最新消息", "newMsgDoorlock": "门锁最新消息",
"doorLockRinging": "门铃响了", "doorLockRinging": "门铃响了",
"defaultNewMsg": "您尚未绑定门锁", "defaultNewMsg": "您尚未绑定门锁",
"noNewMsg": "门锁休息中", "noNewMsg": "暂无开门记录",
"bindDoorlock": "绑定门锁", "bindDoorlock": "绑定门锁",
"use": "使用" "use": "使用",
"networkError": "检测到您网络连接异常,请关闭APP重新打开后再次尝试"
}, },
"opendoorRecord":{ "opendoorRecord":{
"noRecordTip": "暂无记录", "noRecordTip": "暂无记录",
...@@ -162,8 +164,8 @@ ...@@ -162,8 +164,8 @@
"alarmMsgPush": "报警消息推送", "alarmMsgPush": "报警消息推送",
"opendoorMsgPush": "开门消息推送", "opendoorMsgPush": "开门消息推送",
"unbindDialogTip": "确认解除绑定", "unbindDialogTip": "确认解除绑定",
"unbindSuccess": "<img src='../../resources/image/green_unbindSuccess_icon.png'>解成功", "unbindSuccess": "<img src='../../resources/image/green_unbindSuccess_icon.png'>解除绑定成功",
"unbindFailue": "<img src='../../resources/image/green_unbindSuccess_icon.png'>解失败" "unbindFailue": "<img src='../../resources/image/green_unbindSuccess_icon.png'>解除绑定失败"
}, },
"editName":{ "editName":{
"nameInputTip": "请输入门锁名称", "nameInputTip": "请输入门锁名称",
...@@ -181,25 +183,31 @@ ...@@ -181,25 +183,31 @@
"helpCont4": "4.绑定失败则需要重新生成二维码进行绑定" "helpCont4": "4.绑定失败则需要重新生成二维码进行绑定"
}, },
"addDevice": { "addDevice": {
"scanCodeAdd": "扫描绑定设备", "scanCodeAdd": "扫码添加",
"wifiAdd": "配置Wi-Fi", "wifiAdd": "配网添加",
"scanCodeAddTip": "注:扫描门锁主人分享的邀请授权二维码,完成添加。",
"wifiAddTip": "注:门锁尚未联网时,配置门锁联网信息,完成添加。",
"loading": "loading", "loading": "loading",
"bindSuccess": "绑定成功", "bindSuccess": "绑定成功",
"bindFailure": "绑定失败", "bindFailure": "绑定失败",
"reBindDevice": "请重新绑定" "reBindDevice": "请重新绑定",
"addDeviceTip": "扫描授权设备:受邀用户扫描“邀请授权”二维码。配置Wi-Fi:激活智能锁,激活成功后默认成为门锁管理员。",
"openCameraTip": "摄像头权限被关闭,请开启权限后重试",
"openCamera": "去开启"
}, },
"wifiAddHelp": { "wifiAddHelp": {
"helpTitle": "配置WIFI说明:", "helpTitle": "配置Wi-Fi说明:",
"helpCont1": "确认设备端进入配网模式(详情操作请见产品说明书)", "helpCont1": "确认设备端进入配网模式(详情操作请见产品说明书)",
"helpCont2": "点击页面下方“开始配置Wi-Fi”按钮,进入WiFi配网页面", "helpCont2": "点击页面下方“开始配置Wi-Fi”按钮,输入正确Wi-Fi密码后开始搜索设备",
"helpCont3": "输入Wi-Fi密码,点击“连接”,等待锁端响应,至配网成功。", "helpCont3": "当系统搜索到设备后,设备将会连接Wi-Fi并完成激活",
"helpCont4": "(提示:如果指纹锁已经绑定过用户,重新绑定成功后会清除之前所有绑定信息)" "helpCont4": "提示:重新配网后,系统将会自动解除已授权用户"
}, },
"wifiAdd": { "wifiAdd": {
"unbindWifiTip": "当前无Wi-Fi", "unbindWifiTip": "当前无Wi-Fi",
"wifiBinding": "正在连接网络...", "wifiBinding": "正在搜索设备...",
"wifiBindSuccess": "Wi-Fi连接成功,正在激活设备...", "wifiBindSuccess": "设备正在连接Wi-Fi...",
"deviceActivating": "Wi-Fi连接成功,正在激活设备...", "wifiBindFailue": "设备连接Wi-Fi失败",
"deviceActivating": "正在等待设备激活...",
"deviceActivateSuccess":"激活成功", "deviceActivateSuccess":"激活成功",
"deviceActivateFailure":"激活失败", "deviceActivateFailure":"激活失败",
"bindTimeout":"连接超时", "bindTimeout":"连接超时",
...@@ -255,15 +263,15 @@ ...@@ -255,15 +263,15 @@
}, },
"doorlockUser":{ "doorlockUser":{
"name": "昵称:", "name": "昵称:",
"inviteBind": "邀请绑定", "inviteBind": "邀请授权",
"bindUnlockInfo": "关联开锁信息", "bindUnlockInfo": "关联开锁信息",
"editUsername": "编辑用户昵称", "editUsername": "编辑用户昵称",
"opendoorRecord": "历史开门记录", "opendoorRecord": "历史开门记录",
"unbindDialogTip": "<img src='../../resources/image/green_unbind_icon.png'>解后,该用户不能对门锁下的信息进行查看", "unbindDialogTip": "<img src='../../resources/image/green_unbind_icon.png'>解除授权后,该用户不能对门锁下的信息进行查看",
"deleteUserDialogTip": "删除后,用户对应的开锁id取消关联,同时失去信息查看权限。", "deleteUserDialogTip": "删除后,用户对应的开锁id取消关联,同时失去信息查看权限。",
"unbindSuccess": "<img src='../../resources/image/green_unbindSuccess_icon.png'>解成功", "unbindSuccess": "<img src='../../resources/image/green_unbindSuccess_icon.png'>解除授权成功",
"unbindFailue": "<img src='../../resources/image/green_unbindSuccess_icon.png'>解失败", "unbindFailue": "<img src='../../resources/image/green_unbindSuccess_icon.png'>解除授权失败",
"guideStep1Tip1": "邀请绑定成功", "guideStep1Tip1": "邀请授权成功",
"guideStep1Tip2": "(受邀用户可查看开门记录,报警记录等<br>相关门锁信息)", "guideStep1Tip2": "(受邀用户可查看开门记录,报警记录等<br>相关门锁信息)",
"guideStep3Tip": "关联后可了解<br>该用户的开门情况", "guideStep3Tip": "关联后可了解<br>该用户的开门情况",
"deleteSuccess": "删除成功", "deleteSuccess": "删除成功",
...@@ -286,10 +294,11 @@ ...@@ -286,10 +294,11 @@
"cont1": "受邀用户登录“U智锁”APP", "cont1": "受邀用户登录“U智锁”APP",
"cont2": "选择“扫描绑定设备”", "cont2": "选择“扫描绑定设备”",
"cont3": "扫描上方二维码完成绑定", "cont3": "扫描上方二维码完成绑定",
"tip": "注: 二维码有效时间为10分钟,过期请重新生成" "tip": "注: 二维码有效时间为10分钟,过期请",
"buttonText": "重新生成",
"userTip": "授权用户仅可查看开门、报警等记录,无法进行远程开门操作。"
}, },
"unlockInfo":{ "unlockInfo":{
"bindUnlockInfo": "已关联的开锁信息",
"noInfoTip": "尚未关联开锁信息", "noInfoTip": "尚未关联开锁信息",
"bindSoon": "快速关联", "bindSoon": "快速关联",
"passwordOpenDoor": "密码", "passwordOpenDoor": "密码",
...@@ -300,11 +309,14 @@ ...@@ -300,11 +309,14 @@
"appRemoteOpenDoor": "app远程", "appRemoteOpenDoor": "app远程",
"hijackingAlarm": "劫持指纹", "hijackingAlarm": "劫持指纹",
"setHijack": "设为劫持", "setHijack": "设为劫持",
"setHijackTip": "确认设为劫持指纹?设定后使用该指纹开锁时,门锁用户将会收到劫持报警", "bindUnlockInfo": "关联",
"bindedLockInfo": "已关联的开锁信息",
"addInfoSuccess": "关联开锁信息成功",
"setHijackTip": "确定设为劫持指纹? 设定成功后用该指<br>纹开锁时,系统将会视为劫持报警。",
"cancelHijack": "取消劫持", "cancelHijack": "取消劫持",
"cancelHijackTip": "确认取消劫持指纹?取消后,门锁用户不再收到劫持报警", "cancelHijackTip": "确定取消劫持指纹? 取消后用该指纹开<br>锁时,系统将会视为正常开锁。",
"cancelAssociated": "取消关联", "cancelAssociated": "取消关联",
"cancelAssociatedTip": "取消关联后,开门历史记录中将不再显示关联的用户信息。", "cancelAssociatedTip": "取消关联后,开门记录中将不再显示关联的用户信息。",
"cancelAssociatedSuccess": "取消关联成功", "cancelAssociatedSuccess": "取消关联成功",
"cancelAssociatedFailue": "取消关联失败", "cancelAssociatedFailue": "取消关联失败",
"setHijackSuccess": "设为劫持指纹成功", "setHijackSuccess": "设为劫持指纹成功",
...@@ -349,7 +361,7 @@ ...@@ -349,7 +361,7 @@
"oldPasswordInputTipAgain": "请再次输入旧密码" "oldPasswordInputTipAgain": "请再次输入旧密码"
}, },
"request":{ "request":{
"error": "请求发送失败", "error": "数据加载失败",
"initError": "初始化失败,请关闭APP重试" "initError": "初始化失败,请关闭APP重试"
}, },
"deviceList":{ "deviceList":{
......
...@@ -46,8 +46,10 @@ export default { ...@@ -46,8 +46,10 @@ export default {
"maxlength": 12, "maxlength": 12,
"minlength": 6 "minlength": 6
}, },
"ringBell_timeout": 300, "pushMsg_timeout": 300,
"intervalTime": 3, "intervalTime": 3,
//小红点超时时间,24小时之前的新消息没有小红点提示
"newMsg_timeout": 86400,
"getHistoryTime": 10, "getHistoryTime": 10,
"audioUrl": "../../resources/audio/tipSound.mp3", "audioUrl": "../../resources/audio/tipSound.mp3",
// "audioUrl": "_www/resources/audio/tipSound.mp3" // "audioUrl": "_www/resources/audio/tipSound.mp3"
......
...@@ -46,7 +46,7 @@ uPublic.recalc = function () { ...@@ -46,7 +46,7 @@ uPublic.recalc = function () {
recalc = function () { recalc = function () {
var clientWidth = docEl.clientWidth; var clientWidth = docEl.clientWidth;
if (!clientWidth) return; if (!clientWidth) return;
docEl.style.fontSize = parseInt(clientWidth / 10, 10) + 'px'; docEl.style.fontSize = clientWidth / 10 + 'px';
}; };
window.addEventListener(resizeEvt, recalc, false); window.addEventListener(resizeEvt, recalc, false);
recalc(); recalc();
......
...@@ -11,7 +11,6 @@ import {iot, uPublic, uComponents} from '../../public/public.js'; ...@@ -11,7 +11,6 @@ import {iot, uPublic, uComponents} from '../../public/public.js';
iot.ready(init); iot.ready(init);
function init() { function init() {
console.log("init" + new Date().getTime());
//通用 dialog、loading组件 //通用 dialog、loading组件
uPublic.componentsInit(['u-dialog','u-loading','u-process']); uPublic.componentsInit(['u-dialog','u-loading','u-process']);
// uPublic.closeSlideBack(); // uPublic.closeSlideBack();
...@@ -24,17 +23,7 @@ function init() { ...@@ -24,17 +23,7 @@ function init() {
}, },
mounted(){ mounted(){
let self = this; let self = this;
if (plus.os.name == 'Android') { resolve(self);
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);
}
window.addEventListener('returnPage',() => { window.addEventListener('returnPage',() => {
self.noticeTipShowFlag = !iot.native.isNotifycationOpen(); self.noticeTipShowFlag = !iot.native.isNotifycationOpen();
scanCodeSuccess(self); scanCodeSuccess(self);
...@@ -74,6 +63,45 @@ function initComponentsConfig() { ...@@ -74,6 +63,45 @@ function initComponentsConfig() {
} }
} }
function resolve(self){
if(plus.os.name == 'Android') {
iot.permission.checkPermission(['CAMERA'], function (res) {
console.log('success', res);
console.log("openScanCode"+ new Date().getTime());
openScanCode(self);
}, function (err) {
console.log('error', err);
plus.nativeUI.confirm(Vue.t("addDevice.openCameraTip"), (e)=>{
if(e.index == 0){
iot.native.toAppSetting();
}
backTap(self);
},{"title": "","buttons": [Vue.t("addDevice.openCamera"),Vue.t("btn.cancel")]});
});
}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);
plus.nativeUI.confirm(Vue.t("addDevice.openCameraTip"), (e)=>{
if(e.index == 0){
iot.native.toAppSetting();
}
backTap(self);
},{"title": "","buttons": [Vue.t("addDevice.openCamera"),Vue.t("btn.cancel")]});
});
}else{
openScanCode(self);
iot.storage.setMap('isFistOpenCamera', true,() => {
}, (err) => {});
}
}
}
//tap < //tap <
function backTap(self){ function backTap(self){
iot.utils.closeScanBarcode(self.barcode); iot.utils.closeScanBarcode(self.barcode);
...@@ -81,13 +109,18 @@ function backTap(self){ ...@@ -81,13 +109,18 @@ function backTap(self){
} }
function openScanCode(self){ function openScanCode(self){
let bcidBg = '#3a3d54';
// alert(plus.os.name);
if(plus.os.name == 'iOS'){
bcidBg = '#3a3d5400';
}
self.barcode = iot.utils.scanBarcode({ self.barcode = iot.utils.scanBarcode({
data: { data: {
id: 'bcid', id: 'bcid',
styles: { styles: {
frameColor: '#00ffff', frameColor: '#00ffff',
scanbarColor: '#00ffff', scanbarColor: '#00ffff',
background: '#3a3d54' background: bcidBg
} }
}, },
success: (response) => { success: (response) => {
......
...@@ -88,7 +88,7 @@ function initComponentsConfig() { ...@@ -88,7 +88,7 @@ function initComponentsConfig() {
connectButton: { connectButton: {
initParam: { initParam: {
class: 'custom-button', class: 'custom-button',
text: Vue.t('btn.connect') text: Vue.t('btn.search')
} }
}, },
dialog: { dialog: {
...@@ -162,10 +162,10 @@ function connectButtonTap(self){ ...@@ -162,10 +162,10 @@ function connectButtonTap(self){
if(self.countDownText <= 0){ if(self.countDownText <= 0){
console.log("innnnn"); console.log("innnnn");
window.clearInterval(self.timeout); window.clearInterval(self.timeout);
addFailue(self); addFailue(self, Vue.t('wifiAdd.bindTimeout'));
} }
},1000); },1000);
uComponents.showProcess(self, 0, Vue.t('addDevice.loading'), [{ uComponents.showProcess(self, 0, Vue.t('wifiAdd.wifiBinding'), [{
"class": 'custom-process-button custom-process-cancelButton', 'text': Vue.t('btn.cancel'), 'callback': () => { "class": 'custom-process-button custom-process-cancelButton', 'text': Vue.t('btn.cancel'), 'callback': () => {
uComponents.hideProcess(self); uComponents.hideProcess(self);
window.clearInterval(self.timeout); window.clearInterval(self.timeout);
...@@ -230,7 +230,7 @@ function connectButtonTap(self){ ...@@ -230,7 +230,7 @@ function connectButtonTap(self){
if (window.iotDebug) { if (window.iotDebug) {
iotDebug.upload(iot,'配网失败'); iotDebug.upload(iot,'配网失败');
} }
addFailue(self); addFailue(self,Vue.t('wifiAdd.wifiBindFailue'));
} }
}); });
iot.business.sds.findDevices({ iot.business.sds.findDevices({
...@@ -418,14 +418,14 @@ function bind(self, deviceId, productId){ ...@@ -418,14 +418,14 @@ function bind(self, deviceId, productId){
}); });
} }
function addFailue(self){ function addFailue(self, addFailueReason = Vue.t('wifiAdd.deviceActivateFailure')){
//停止配网 //停止配网
iot.business.sds.stopFindDevices({ iot.business.sds.stopFindDevices({
success: (response) => {}, success: (response) => {},
error: (error) => {} error: (error) => {}
}); });
window.clearInterval(self.timeout); 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': () => { "class": 'custom-process-button', 'text': Vue.t('addDevice.reBindDevice'), 'callback': () => {
//激活失败 //激活失败
uComponents.hideProcess(self); uComponents.hideProcess(self);
......
...@@ -38,10 +38,10 @@ function init() { ...@@ -38,10 +38,10 @@ function init() {
this.extras = iot.navigator.getExtras(); this.extras = iot.navigator.getExtras();
this.role = this.extras.role; this.role = this.extras.role;
let self = this; let self = this;
window.addEventListener('returnPage',function(event){ // window.addEventListener('returnPage',function(event){
console.log("returnPage"); // console.log("returnPage");
getUserInfo(self); // getUserInfo(self);
}); // });
getUserInfo(this); getUserInfo(this);
let opener = plus.webview.currentWebview().opener(); let opener = plus.webview.currentWebview().opener();
if(opener.id == 'addUser'){ if(opener.id == 'addUser'){
...@@ -505,12 +505,31 @@ function iSeeButtonTap(self){ ...@@ -505,12 +505,31 @@ function iSeeButtonTap(self){
//删除用户 //删除用户
function deleteUser(self){ function deleteUser(self){
uComponents.showLoading(self); uComponents.showLoading(self);
if(self.info.auids){
iot.business.sds.unbindByManager({ iot.business.sds.unbindByManager({
data: { data: {
uuid: self.extras.uuid, uuid: self.extras.uuid,
destAuid: self.info.auids destAuid: self.info.auids
}, },
success: (response) => { 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',{ iot.business.api.sendCustom('lock/delLockUser',{
data: { data: {
rel_id: self.extras.id, rel_id: self.extras.id,
...@@ -539,15 +558,4 @@ function deleteUser(self){ ...@@ -539,15 +558,4 @@ function deleteUser(self){
uComponents.hideLoading(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(){ ...@@ -81,8 +81,8 @@ function backTap(){
} }
mui.back = function(){ mui.back = function(){
iot.navigator.fire(plus.webview.currentWebview().opener(),'returnPage',{}); // iot.navigator.fire(plus.webview.currentWebview().opener(),'returnPage',{});
console.log("fire"); // console.log("fire");
iot.navigator.back(); iot.navigator.back();
} }
...@@ -142,7 +142,7 @@ function createQrcode(self, qrKey){ ...@@ -142,7 +142,7 @@ function createQrcode(self, qrKey){
console.log(qr.style); console.log(qr.style);
setTimeout(() => { setTimeout(() => {
self.setQrCodeDisabled(true); self.setQrCodeDisabled(true);
},qrcode_timeout); },config.qrcode_timeout);
} }
}); });
} }
...@@ -30,7 +30,7 @@ function init() { ...@@ -30,7 +30,7 @@ function init() {
noHistoryTip: Vue.t('unlockInfo.noHistoryTip'), noHistoryTip: Vue.t('unlockInfo.noHistoryTip'),
tipShowFlag: true, tipShowFlag: true,
infoList: [], infoList: [],
newUnlockInfo: false
// list: [], // list: [],
// pullup: false, // pullup: false,
// loadText: Vue.t('scroll.clickToLoadMore'), // loadText: Vue.t('scroll.clickToLoadMore'),
...@@ -45,9 +45,8 @@ function init() { ...@@ -45,9 +45,8 @@ function init() {
this.role = this.extras.role; this.role = this.extras.role;
console.log(this.extras); console.log(this.extras);
let self = this; let self = this;
this.lockItems = [{text: Vue.t('unlockInfo.bindSoon')},{text: Vue.t('unlockInfo.bindUnlockInfo')}]; this.lockItems = [{text: Vue.t('unlockInfo.bindSoon')},{text: Vue.t('unlockInfo.bindedLockInfo')}];
itemChange(this, this.selectItem); itemChange(this, this.selectItem);
// this.setLoadShowFlag(this.infoList.length); // this.setLoadShowFlag(this.infoList.length);
// let ulistDom = this.$refs.infoList; // let ulistDom = this.$refs.infoList;
// ulistDom.onscroll = function () { // ulistDom.onscroll = function () {
...@@ -85,6 +84,12 @@ function init() { ...@@ -85,6 +84,12 @@ function init() {
setInfoList(list){ setInfoList(list){
this.infoList = list; this.infoList = list;
}, },
getNewUnlockInfo(){
return this.newUnlockInfo;
},
setNewUnlockInfo(info){
this.newUnlockInfo = info;
},
//tap < //tap <
onBackTap(){ onBackTap(){
backTap(); backTap();
...@@ -327,6 +332,7 @@ function itemChange(self, key){ ...@@ -327,6 +332,7 @@ function itemChange(self, key){
getTodayReccord(self); getTodayReccord(self);
}else if(key == 1){ }else if(key == 1){
//获取已关联的开门记录 //获取已关联的开门记录
self.setNewUnlockInfo(false);
getBindedLockInfo(self); getBindedLockInfo(self);
} }
self.setSelectItem(key); self.setSelectItem(key);
...@@ -357,7 +363,7 @@ function getTodayReccord(self){ ...@@ -357,7 +363,7 @@ function getTodayReccord(self){
value: data[i].id, value: data[i].id,
title: 'ID:'+data[i].openId, title: 'ID:'+data[i].openId,
subtitle: moment(data[i].time).format("HH:mm")+' '+Vue.t('opendoorRecord.'+config.openDoorMode[data[i].mode]+''), 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); self.setInfoList(list);
...@@ -385,12 +391,10 @@ function addButtonTap(self, index){ ...@@ -385,12 +391,10 @@ function addButtonTap(self, index){
success: (response) => { success: (response) => {
console.log(response); console.log(response);
if(response.data.success){ if(response.data.success){
uComponents.openConfirm(self, Vue.t('addUnlockInfo.addInfoSuccess'), uComponents.openAlert(self, Vue.t('unlockInfo.addInfoSuccess'),
{text: Vue.t('addUnlockInfo.stay'), callback: function () { {text: Vue.t('btn.confirm'), callback: function () {
getTodayReccord(self); getTodayReccord(self);
}}, self.setNewUnlockInfo(true);
{text: Vue.t('addUnlockInfo.bindedUnlockInfo'), callback: function () {
itemChange(self, 1);
}}); }});
}else{} }else{}
}, },
......
...@@ -29,13 +29,15 @@ function init() { ...@@ -29,13 +29,15 @@ function init() {
if(window.iotDebug){ if(window.iotDebug){
iotDebug.push('start: Debug'); iotDebug.push('start: Debug');
} }
resolve(this); console.log(iot.business.user.isLogin());
if(iot.business.user.isLogin()){
document.addEventListener("resume", () => { loginButtonTap(this);
if(!this.showLoginButtonFlag){
resolve(this);
} }
}, false); // document.addEventListener("resume", () => {
// if(!this.showLoginButtonFlag){
// resolve(this);
// }
// }, false);
}, },
methods:{ methods:{
getShowLoginButtonFlag(){ getShowLoginButtonFlag(){
...@@ -81,21 +83,49 @@ function initComponentsConfig() { ...@@ -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') { if (plus.os.name == 'Android') {
iot.permission.checkPermission(['READ_EXTERNAL_STORAGE'], function (res) { iot.permission.checkPermission(['READ_EXTERNAL_STORAGE'], function (res) {
console.log('success', res); console.log('success', res);
loginButtonTap(self); openSdsLogin(self);
}, function (err) { }, function (err) {
console.log('error', 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{ }else{
loginButtonTap(self); openSdsLogin(self);
} }
} }
//sds登陆 function openSdsLogin(self){
function loginButtonTap(self){
iot.business.sds.checkSDSInit({ iot.business.sds.checkSDSInit({
data: {}, data: {},
success: (response) => { success: (response) => {
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -5,25 +5,35 @@ ...@@ -5,25 +5,35 @@
// .noBottomGradient(); // .noBottomGradient();
.addDevice li{ .addDevice li{
margin: 10px; margin: 44px 44px 0 44px;
border: 1px solid;/*no*/ border: 1px solid;/*no*/
border-radius: 5px; border-radius: 5px;
color: @ADDDEVICE-TEXT-COLOR; color: @ADDDEVICE-TEXT-COLOR;
font-size: @ADDDEVICE-TEXT-FONTSIZE; font-size: @ADDDEVICE-TEXT-FONTSIZE;
height: 214px; height: 150px;
line-height: 214px; line-height: 150px;
padding-left: 58px; padding-left: 58px;
&:nth-child(1) img{
width: 90px;
height: 90px;
margin-right: 40px;
}
&:nth-child(2) img{
width: 135px;
height: 64px;
margin-right: 25px;
}
.tap_row(@ADDDEVICE-ROW-ACTIVE-BG); .tap_row(@ADDDEVICE-ROW-ACTIVE-BG);
font-size: 16px;
}
.addDevice p{
width: 100%;
font-size: 12px;
line-height: 32px;
color: #cfcfd1;
text-align: center;
}
.scanAdd img{
width: 70px;
height: 70px;
margin-right: 40px;
}
.wifiAdd img{
width: 105px;
height: 50px;
margin-right: 5px;
} }
//产品型号 //产品型号
...@@ -65,6 +75,22 @@ ...@@ -65,6 +75,22 @@
//配置Wi-Fi //配置Wi-Fi
.wifiAddHelp{ .wifiAddHelp{
.help(); .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(); .u-button();
...@@ -195,6 +221,7 @@ ...@@ -195,6 +221,7 @@
bottom: 0; bottom: 0;
left: 0; left: 0;
width: 100%; width: 100%;
background: rgba(0,0,0,0);
} }
.noticeContent{ .noticeContent{
......
...@@ -99,16 +99,24 @@ ...@@ -99,16 +99,24 @@
height: 100%; height: 100%;
border-radius: 50%; border-radius: 50%;
} }
p{ div{
position: absolute; position: absolute;
top: 30px; top: 30px;
left: 0; left: 0;
right: 0; right: 0;
margin: 0 auto; margin: 0 auto;
.bgImgSize(40px,40px,"green_doorbell_icon.png",center,cover); // .bgImgSize(40px,40px,"green_default_icon.png",center,cover);
width: 40px;
height: 40px;
background-size: 40px 40px;
.transform-origin(center 5px); .transform-origin(center 5px);
} }
} }
.active{
div{
.animation(shake 1s linear infinite);
}
}
} }
.doorbellTip{ .doorbellTip{
position: absolute; position: absolute;
...@@ -123,6 +131,83 @@ ...@@ -123,6 +131,83 @@
} }
} }
.wifiRemote{
display: none;
}
.default_img{
.bgImg("green_default_icon.png");
}
.doorbell_img{
.bgImg("green_doorbell_icon.png");
}
.remoteOpendoor_img{
.bgImg("green_remoteOpendoor_icon.png");
.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{
.bgImg("red_hijack_icon.png");
}
.securityAlarm_img{
.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(#ff4799,#fff,#fff,#fff,#ff4799);
background: linear-gradient(#ff4799,#fff,#fff,#fff,#ff4799);
.doorbellCircle{
background-color: #2f283a;
.doorbell{
border: 2px solid #ff4799;/*no*/
}
}
}
.active .doorbellCircle .doorbell{ .active .doorbellCircle .doorbell{
&:before, &:before,
&:after{ &:after{
...@@ -131,11 +216,27 @@ ...@@ -131,11 +216,27 @@
&:after{ &:after{
.animation-delay(-1s); .animation-delay(-1s);
} }
p{ }
.animation(shake 1s linear infinite);
.warmingActive .doorbellCircle .doorbell{
&:before,
&:after{
.animation(redAperture 2s linear infinite);
}
&:after{
.animation-delay(-1s);
} }
} }
.keyframes(redAperture,{
0%{
.box-shadow(0 0 0 0 rgba(255,71,153,1));
}
100%{
.box-shadow(0 0 0 10px rgba(255,71,153,0));
}
});
.keyframes(shake,{ .keyframes(shake,{
0%,50%,100%{ 0%,50%,100%{
.transform(rotate(0deg)); .transform(rotate(0deg));
...@@ -148,6 +249,41 @@ ...@@ -148,6 +249,41 @@
} }
}); });
.keyframes(remoteOpendoor,{
0%{
background-position: 0 0;
}
33.33%{
background-position: -37.5px 0;
}
66.66%{
background-position: -75px 0;
}
100% {
background-position: 0 0;
}
});
.keyframes(stretchdelay,{
0%,
100% {
border-right-color: transparent;
}
40% {
border-right-color: #00FFFF;
}
});
.keyframes(alarmLight,{
0%,
100%{
opacity: 1;
}
50% {
opacity: 0.5;
}
});
.batteryState{ .batteryState{
text-align: right; text-align: right;
padding-right: 25px; padding-right: 25px;
...@@ -424,14 +560,21 @@ ...@@ -424,14 +560,21 @@
} }
} }
.newMsg .custom-switch:before{ .newMsg .custom-switch{
content: '\e681'; .u-switch-handle{
position: relative;
&:after{
content: '';
position: absolute; position: absolute;
top: 0; top: 3.55px;
right: 104px; right: 3.55px;
.iconfont(@NEWMSG-ICON-FONTSIZE); width: 9px;/*no*/
color: @NEWMSG-ICON-COLOR; height: 9px;/*no*/
border-radius: 50%;
background-color: #fc2168;
z-index: 3; z-index: 3;
}
}
} }
.followServiceNumber-dialog{ .followServiceNumber-dialog{
......
...@@ -200,6 +200,29 @@ ...@@ -200,6 +200,29 @@
} }
} }
} }
.tip{
span{
display: inline;
border-radius: 0;
border-width: 0 0 1px 0;/*no*/
background: none;
outline: none;
margin: 0;
padding: 0;
}
}
}
.invite-usertip{
margin: 41px 42px 0 62px;
&:before{
color: #00FFFF;
content:'\e648';
.iconfont(16px);
line-height: 2;
position: absolute;
left: 41px;
}
} }
.unbindState-dialog(); .unbindState-dialog();
......
...@@ -72,6 +72,19 @@ ...@@ -72,6 +72,19 @@
background-color: transparent; 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{ .active{
color: #fff; color: #fff;
&:after{ &:after{
...@@ -114,6 +127,8 @@ ...@@ -114,6 +127,8 @@
float: left; float: left;
padding: 10px; padding: 10px;
margin: 0 5px; margin: 0 5px;
color: #00f8dd;
font-size: 14px;
img{ img{
width: 23px; width: 23px;
height: 23px; height: 23px;
......
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
.user-list-title{ .user-list-title{
font-size: @USERLIST-TITLE-FONTSIZE; font-size: @USERLIST-TITLE-FONTSIZE;
.text_oneRow_ellipsis(); .text_oneRow_ellipsis();
margin-bottom: 5px; // margin-bottom: 5px;
} }
//昵称 //昵称
.user-list-subtitle span{ .user-list-subtitle span{
......
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
@BLACK_OPACITY: fade(@C_BLACK,90%); @BLACK_OPACITY: fade(@C_BLACK,90%);
@BLACK_OPACITY_1: fade(@C_BLACK,40%); @BLACK_OPACITY_1: fade(@C_BLACK,40%);
@WHITE_OPACITY: fade(@C_WHITE,0); @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%); @GRAY_OPACITY: fade(@C_GRAY_2,5%);
//font-sizes //font-sizes
......
...@@ -100,7 +100,7 @@ p { ...@@ -100,7 +100,7 @@ p {
} }
.custom-loading { .custom-loading {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-loading .u-loading-box { .custom-loading .u-loading-box {
...@@ -303,7 +303,7 @@ p { ...@@ -303,7 +303,7 @@ p {
} }
.custom-dialog { .custom-dialog {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-dialog .u-dialog-box { .custom-dialog .u-dialog-box {
...@@ -447,30 +447,39 @@ p { ...@@ -447,30 +447,39 @@ p {
} }
.addDevice li { .addDevice li {
margin: 0.267rem; margin: 1.173rem 1.173rem 0 1.173rem;
border: 1px solid; border: 1px solid;
border-radius: 0.133rem; border-radius: 0.133rem;
color: #00ffff; color: #00ffff;
font-size: 0.48rem; font-size: 0.48rem;
height: 5.707rem; height: 4rem;
line-height: 5.707rem; line-height: 4rem;
padding-left: 1.547rem; padding-left: 1.547rem;
font-size: 0.427rem;
} }
.addDevice li:nth-child(1) img { .addDevice li:active {
width: 2.4rem; background-color: #153D4C;
height: 2.4rem; }
margin-right: 1.067rem;
.addDevice p {
width: 100%;
font-size: 0.32rem;
line-height: 0.853rem;
color: #cfcfd1;
text-align: center;
} }
.addDevice li:nth-child(2) img { .scanAdd img {
width: 3.6rem; width: 1.867rem;
height: 1.707rem; height: 1.867rem;
margin-right: 0.667rem; margin-right: 1.067rem;
} }
.addDevice li:active { .wifiAdd img {
background-color: #153D4C; width: 2.8rem;
height: 1.333rem;
margin-right: 0.133rem;
} }
.u-list { .u-list {
...@@ -614,6 +623,7 @@ p { ...@@ -614,6 +623,7 @@ p {
.wifiAddHelp { .wifiAddHelp {
margin: 0.8rem 1.013rem 1.547rem; margin: 0.8rem 1.013rem 1.547rem;
position: relative;
} }
.wifiAddHelp li { .wifiAddHelp li {
...@@ -631,6 +641,27 @@ p { ...@@ -631,6 +641,27 @@ p {
margin-bottom: 0.907rem; 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 { .u-button {
width: 6.4rem; width: 6.4rem;
color: #fff; color: #fff;
...@@ -1133,6 +1164,7 @@ p { ...@@ -1133,6 +1164,7 @@ p {
bottom: 0; bottom: 0;
left: 0; left: 0;
width: 100%; width: 100%;
background: rgba(0, 0, 0, 0);
} }
.noticeContent { .noticeContent {
......
...@@ -26,12 +26,14 @@ ...@@ -26,12 +26,14 @@
</div> </div>
<div class="content"> <div class="content">
<ul class="addDevice"> <ul class="addDevice">
<v-touch tag="li" v-on:tap="onScanAddTap"> <v-touch class="scanAdd" tag="li" v-on:tap="onScanAddTap">
<img src="../../resources/image/scanCodeAdd.png">{{ $t('addDevice.scanCodeAdd') }} <img src="../../resources/image/scanCodeAdd.png">{{ $t('addDevice.scanCodeAdd') }}
</v-touch> </v-touch>
<v-touch tag="li" v-on:tap="onWifiAddTap"> <p>{{ $t('addDevice.scanCodeAddTip') }}</p>
<v-touch class="wifiAdd" tag="li" v-on:tap="onWifiAddTap">
<img src="../../resources/image/wifiAdd.png">{{ $t('addDevice.wifiAdd') }} <img src="../../resources/image/wifiAdd.png">{{ $t('addDevice.wifiAdd') }}
</v-touch> </v-touch>
<p>{{ $t('addDevice.wifiAddTip') }}</p>
</ul> </ul>
</div> </div>
<u-dialog ref="udialog" :init-param="componentsConfig.dialog.initParam"></u-dialog> <u-dialog ref="udialog" :init-param="componentsConfig.dialog.initParam"></u-dialog>
......
...@@ -100,7 +100,7 @@ p { ...@@ -100,7 +100,7 @@ p {
} }
.custom-loading { .custom-loading {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-loading .u-loading-box { .custom-loading .u-loading-box {
...@@ -303,7 +303,7 @@ p { ...@@ -303,7 +303,7 @@ p {
} }
.custom-dialog { .custom-dialog {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-dialog .u-dialog-box { .custom-dialog .u-dialog-box {
......
...@@ -100,7 +100,7 @@ p { ...@@ -100,7 +100,7 @@ p {
} }
.custom-loading { .custom-loading {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-loading .u-loading-box { .custom-loading .u-loading-box {
...@@ -303,7 +303,7 @@ p { ...@@ -303,7 +303,7 @@ p {
} }
.custom-dialog { .custom-dialog {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-dialog .u-dialog-box { .custom-dialog .u-dialog-box {
...@@ -881,7 +881,7 @@ p { ...@@ -881,7 +881,7 @@ p {
} }
.custom-comm-loading { .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 { .custom-comm-loading .u-comm-loading-button {
...@@ -1038,7 +1038,7 @@ p { ...@@ -1038,7 +1038,7 @@ p {
border-radius: 50%; border-radius: 50%;
} }
.doorbellBg .doorbellCircle .doorbell p { .doorbellBg .doorbellCircle .doorbell div {
position: absolute; position: absolute;
top: 0.8rem; top: 0.8rem;
left: 0; left: 0;
...@@ -1046,13 +1046,16 @@ p { ...@@ -1046,13 +1046,16 @@ p {
margin: 0 auto; margin: 0 auto;
width: 1.067rem; width: 1.067rem;
height: 1.067rem; height: 1.067rem;
background: url("../../resources/image/green_doorbell_icon.png") no-repeat center; background-size: 1.067rem 1.067rem;
-webkit-background-size: cover;
background-size: cover;
-webkit-transform-origin: center 0.133rem; -webkit-transform-origin: center 0.133rem;
transform-origin: center 0.133rem; transform-origin: center 0.133rem;
} }
.doorbellBg .doorbellCircle .active div {
-webkit-animation: shake 1s linear infinite;
animation: shake 1s linear infinite;
}
.doorbellBg .doorbellTip { .doorbellBg .doorbellTip {
position: absolute; position: absolute;
bottom: 0.453rem; bottom: 0.453rem;
...@@ -1066,6 +1069,106 @@ p { ...@@ -1066,6 +1069,106 @@ p {
margin-right: 0.267rem; margin-right: 0.267rem;
} }
.wifiRemote {
display: none;
}
.default_img {
background-image: url("../../resources/image/green_default_icon.png");
}
.doorbell_img {
background-image: url("../../resources/image/green_doorbell_icon.png");
}
.remoteOpendoor_img {
background-image: url("../../resources/image/green_remoteOpendoor_icon.png");
}
.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 {
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_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(#ff4799, #fff, #fff, #fff, #ff4799);
background: linear-gradient(#ff4799, #fff, #fff, #fff, #ff4799);
}
.redDoorbellBg .doorbellCircle {
background-color: #2f283a;
}
.redDoorbellBg .doorbellCircle .doorbell {
border: 2px solid #ff4799;
}
.active .doorbellCircle .doorbell:before, .active .doorbellCircle .doorbell:before,
.active .doorbellCircle .doorbell:after { .active .doorbellCircle .doorbell:after {
-webkit-animation: aperture 2s linear infinite; -webkit-animation: aperture 2s linear infinite;
...@@ -1077,9 +1180,39 @@ p { ...@@ -1077,9 +1180,39 @@ p {
animation-delay: -1s; animation-delay: -1s;
} }
.active .doorbellCircle .doorbell p { .warmingActive .doorbellCircle .doorbell:before,
-webkit-animation: shake 1s linear infinite; .warmingActive .doorbellCircle .doorbell:after {
animation: shake 1s linear infinite; -webkit-animation: redAperture 2s linear infinite;
animation: redAperture 2s linear infinite;
}
.warmingActive .doorbellCircle .doorbell:after {
-webkit-animation-delay: -1s;
animation-delay: -1s;
}
@-webkit-keyframes redAperture {
0% {
-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, 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 #ff4799;
box-shadow: 0 0 0 0 #ff4799;
}
100% {
-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);
}
} }
@-webkit-keyframes shake { @-webkit-keyframes shake {
...@@ -1116,6 +1249,82 @@ p { ...@@ -1116,6 +1249,82 @@ p {
} }
} }
@-webkit-keyframes remoteOpendoor {
0% {
background-position: 0 0;
}
33.33% {
background-position: -1rem 0;
}
66.66% {
background-position: -2rem 0;
}
100% {
background-position: 0 0;
}
}
@keyframes remoteOpendoor {
0% {
background-position: 0 0;
}
33.33% {
background-position: -1rem 0;
}
66.66% {
background-position: -2rem 0;
}
100% {
background-position: 0 0;
}
}
@-webkit-keyframes stretchdelay {
0%, 100% {
border-right-color: transparent;
}
40% {
border-right-color: #00FFFF;
}
}
@keyframes stretchdelay {
0%, 100% {
border-right-color: transparent;
}
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 { .batteryState {
text-align: right; text-align: right;
padding-right: 0.667rem; padding-right: 0.667rem;
...@@ -1534,16 +1743,19 @@ p { ...@@ -1534,16 +1743,19 @@ p {
background-position: -0.72rem 0; background-position: -0.72rem 0;
} }
.newMsg .custom-switch:before { .newMsg .custom-switch .u-switch-handle {
content: '\e681'; position: relative;
}
.newMsg .custom-switch .u-switch-handle:after {
content: '';
position: absolute; position: absolute;
top: 0; top: 0.095rem;
right: 2.773rem; right: 0.095rem;
font-family: iconfont; width: 9px;
font-size: 0.427rem; height: 9px;
-webkit-font-smoothing: antialiased; border-radius: 50%;
line-height: 1; background-color: #fc2168;
color: #fc2168;
z-index: 3; z-index: 3;
} }
...@@ -1641,7 +1853,7 @@ p { ...@@ -1641,7 +1853,7 @@ p {
width: 100%; width: 100%;
height: 100%; height: 100%;
z-index: 1051; z-index: 1051;
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.u-notification .u-notification-box { .u-notification .u-notification-box {
......
...@@ -28,13 +28,20 @@ ...@@ -28,13 +28,20 @@
<div class="content"> <div class="content">
<div class="topCpnt"> <div class="topCpnt">
<div v-show="lockId"> <div v-show="lockId">
<v-touch tag="div" class="doorbellBg" v-bind:class="{ active: doorbellRingingFlag }" v-on:tap="onStopDoorbellRing()"> <v-touch tag="div" class="doorbellBg" v-bind:class="[{ redDoorbellBg: warmingShowFlag },{ active: normalApertureShow },{warmingActive: warmingApertureShow}]" v-on:tap="onStopDoorbellRing()">
<div class="doorbellCircle"> <div class="doorbellCircle">
<div class="doorbell"> <div class="doorbell" v-bind:class="{ active: doorbellRingingFlag }">
<p></p> <!--<img :src="msgIconSrc">-->
<div :class=" msgClass ">
<ul class="wifiRemote">
<li></li>
<li></li>
<li></li>
</ul>
</div>
</div> </div>
</div> </div>
<div class="doorbellTip"><span>{{ ringingTime }}</span>{{ ringingTime ? $t('device.doorLockRinging'):'' }}</div> <div class="doorbellTip"><span>{{ msgTime }}</span>{{ msgText }}</div>
</v-touch> </v-touch>
<p class="batteryState" :class="[{yellowWarning: batteryPercent<=20},{redWarning: batteryPercent<10}]"><span v-html="batteryState" ></span><span>{{ batteryPercent }}%</span></p> <p class="batteryState" :class="[{yellowWarning: batteryPercent<=20},{redWarning: batteryPercent<10}]"><span v-html="batteryState" ></span><span>{{ batteryPercent }}%</span></p>
</div> </div>
......
...@@ -100,7 +100,7 @@ p { ...@@ -100,7 +100,7 @@ p {
} }
.custom-loading { .custom-loading {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-loading .u-loading-box { .custom-loading .u-loading-box {
...@@ -303,7 +303,7 @@ p { ...@@ -303,7 +303,7 @@ p {
} }
.custom-dialog { .custom-dialog {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-dialog .u-dialog-box { .custom-dialog .u-dialog-box {
......
...@@ -100,7 +100,7 @@ p { ...@@ -100,7 +100,7 @@ p {
} }
.custom-loading { .custom-loading {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-loading .u-loading-box { .custom-loading .u-loading-box {
...@@ -303,7 +303,7 @@ p { ...@@ -303,7 +303,7 @@ p {
} }
.custom-dialog { .custom-dialog {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-dialog .u-dialog-box { .custom-dialog .u-dialog-box {
......
...@@ -100,7 +100,7 @@ p { ...@@ -100,7 +100,7 @@ p {
} }
.custom-loading { .custom-loading {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-loading .u-loading-box { .custom-loading .u-loading-box {
...@@ -303,7 +303,7 @@ p { ...@@ -303,7 +303,7 @@ p {
} }
.custom-dialog { .custom-dialog {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-dialog .u-dialog-box { .custom-dialog .u-dialog-box {
...@@ -1031,7 +1031,7 @@ p { ...@@ -1031,7 +1031,7 @@ p {
width: 100%; width: 100%;
height: 100%; height: 100%;
z-index: 1051; z-index: 1051;
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.unbindState-dialog div { .unbindState-dialog div {
......
...@@ -100,7 +100,7 @@ p { ...@@ -100,7 +100,7 @@ p {
} }
.custom-loading { .custom-loading {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-loading .u-loading-box { .custom-loading .u-loading-box {
...@@ -303,7 +303,7 @@ p { ...@@ -303,7 +303,7 @@ p {
} }
.custom-dialog { .custom-dialog {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-dialog .u-dialog-box { .custom-dialog .u-dialog-box {
...@@ -835,7 +835,7 @@ p { ...@@ -835,7 +835,7 @@ p {
width: 100%; width: 100%;
height: 100%; height: 100%;
text-align: center; text-align: center;
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.inviteBind li p span { .inviteBind li p span {
...@@ -861,6 +861,32 @@ p { ...@@ -861,6 +861,32 @@ p {
background-color: #00ffff; background-color: #00ffff;
} }
.inviteBind .tip span {
display: inline;
border-radius: 0;
border-width: 0 0 1px 0;
background: none;
outline: none;
margin: 0;
padding: 0;
}
.invite-usertip {
margin: 1.093rem 1.12rem 0 1.653rem;
}
.invite-usertip: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: 1.093rem;
}
.unbindState-dialog { .unbindState-dialog {
position: fixed; position: fixed;
top: 0; top: 0;
...@@ -868,7 +894,7 @@ p { ...@@ -868,7 +894,7 @@ p {
width: 100%; width: 100%;
height: 100%; height: 100%;
z-index: 1051; z-index: 1051;
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.unbindState-dialog div { .unbindState-dialog div {
...@@ -911,7 +937,7 @@ p { ...@@ -911,7 +937,7 @@ p {
width: 100%; width: 100%;
height: 100%; height: 100%;
z-index: 1051; z-index: 1051;
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.guide-dialog .guideStep1 { .guide-dialog .guideStep1 {
......
...@@ -28,8 +28,9 @@ ...@@ -28,8 +28,9 @@
<div class="content"> <div class="content">
<ul class="userInfoLink"> <ul class="userInfoLink">
<li class="userInfo" > <li class="userInfo" >
<img class="userInfo-image" v-if="userInfo.image && userInfo.role == 0" v-bind:src="userInfo.image"> <img class="userInfo-image" 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-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> <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.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> <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 @@ ...@@ -31,13 +31,13 @@
<v-touch tag="li" class="user-list-row" v-for="(item, index) in userList" :key="index" > <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-touch tag="div" class="user-list-handle"
v-on:tap="onTapUserList(index)"> 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> <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-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"> <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> <span v-if="item.subtitle">{{ item.subtitle }}</span>
</p> </p>-->
</div> </div>
</v-touch> </v-touch>
<div class="user-list-button"> <div class="user-list-button">
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
<p>{{ $t('title.inviteBind') }}</p> <p>{{ $t('title.inviteBind') }}</p>
</div> </div>
<div class="content"> <div class="content">
<p class="invite-usertip">{{ $t('inviteBind.userTip') }}</p>
<ul class="inviteBind"> <ul class="inviteBind">
<li class="qrcode"> <li class="qrcode">
<canvas ref="qrcode"></canvas> <canvas ref="qrcode"></canvas>
...@@ -33,13 +34,13 @@ ...@@ -33,13 +34,13 @@
<span>{{ $t('inviteBind.qrcodeExpireTip') }}</span> <span>{{ $t('inviteBind.qrcodeExpireTip') }}</span>
</p> </p>
</li> </li>
<li class="tip">{{ $t('inviteBind.tip') }}<v-touch tag="span" v-on:tap="onQRcodeButtonTap">{{ $t('inviteBind.buttonText') }}</v-touch></li>
<li class="title">{{ $t('inviteBind.title') }}</li> <li class="title">{{ $t('inviteBind.title') }}</li>
<li><span>&#xe6c1;</span>{{ $t('inviteBind.cont1') }}</li> <li><span>&#xe6c1;</span>{{ $t('inviteBind.cont1') }}</li>
<li><span>&#xe6c0;</span>{{ $t('inviteBind.cont2') }}</li> <li><span>&#xe6c0;</span>{{ $t('inviteBind.cont2') }}</li>
<li class="noBorder"><span>&#xe6c2;</span>{{ $t('inviteBind.cont3') }}</li> <li class="noBorder"><span>&#xe6c2;</span>{{ $t('inviteBind.cont3') }}</li>
<li class="tip">{{ $t('inviteBind.tip') }}</li>
</ul> </ul>
<u-button :init-param="componentsConfig.qrcodeButton.initParam" v-on:u-button-tap="onQRcodeButtonTap"></u-button> <!--<u-button :init-param="componentsConfig.qrcodeButton.initParam" v-on:u-button-tap="onQRcodeButtonTap"></u-button>-->
</div> </div>
<u-dialog ref="udialog" :init-param="componentsConfig.dialog.initParam"></u-dialog> <u-dialog ref="udialog" :init-param="componentsConfig.dialog.initParam"></u-dialog>
<u-loading ref="uloading" :init-param="componentsConfig.loading.initParam"></u-loading> <u-loading ref="uloading" :init-param="componentsConfig.loading.initParam"></u-loading>
......
...@@ -100,7 +100,7 @@ p { ...@@ -100,7 +100,7 @@ p {
} }
.custom-loading { .custom-loading {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-loading .u-loading-box { .custom-loading .u-loading-box {
...@@ -303,7 +303,7 @@ p { ...@@ -303,7 +303,7 @@ p {
} }
.custom-dialog { .custom-dialog {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-dialog .u-dialog-box { .custom-dialog .u-dialog-box {
...@@ -645,6 +645,18 @@ p { ...@@ -645,6 +645,18 @@ p {
background-color: transparent; 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 { .tab .active {
color: #fff; color: #fff;
} }
...@@ -705,6 +717,8 @@ p { ...@@ -705,6 +717,8 @@ p {
float: left; float: left;
padding: 0.267rem; padding: 0.267rem;
margin: 0 0.133rem; 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 { .infoList-list .infoList-list-scroll .infoList-list-row .infoList-list-button .infoList-list-buttonCont img {
...@@ -1143,7 +1157,7 @@ p { ...@@ -1143,7 +1157,7 @@ p {
width: 100%; width: 100%;
height: 100%; height: 100%;
z-index: 1051; z-index: 1051;
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.guide-dialog .guideStep1 { .guide-dialog .guideStep1 {
......
...@@ -29,12 +29,12 @@ ...@@ -29,12 +29,12 @@
<!--<p class="title">{{ $t('unlockInfo.bindUnlockInfo') }}</p>--> <!--<p class="title">{{ $t('unlockInfo.bindUnlockInfo') }}</p>-->
<ul class="tab"> <ul class="tab">
<v-touch tag="li" v-for="(item, key, index) in lockItems" v-text="lockItems[key].text" <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> </v-touch>
</ul> </ul>
<!--<u-swipe-list ref="uswipelist" :init-param="componentsConfig.unlockInfoList.initParam" <!--<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>--> 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"> <ul class="infoList-list-scroll" v-show="infoList.length">
<li class="infoList-list-row" v-for="(item, index) in infoList"> <li class="infoList-list-row" v-for="(item, index) in infoList">
<div class="infoList-list-handle"> <div class="infoList-list-handle">
...@@ -42,8 +42,9 @@ ...@@ -42,8 +42,9 @@
<p class="infoList-list-subtitle">{{ item.subtitle }}</p> <p class="infoList-list-subtitle">{{ item.subtitle }}</p>
</div> </div>
<div class="infoList-list-button"> <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)"> <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"> <img :src="button.imgSrc" v-show="button.imgSrc">
{{ button.text }}
</v-touch> </v-touch>
</div> </div>
</li> </li>
......
...@@ -100,7 +100,7 @@ p { ...@@ -100,7 +100,7 @@ p {
} }
.custom-loading { .custom-loading {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-loading .u-loading-box { .custom-loading .u-loading-box {
...@@ -303,7 +303,7 @@ p { ...@@ -303,7 +303,7 @@ p {
} }
.custom-dialog { .custom-dialog {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-dialog .u-dialog-box { .custom-dialog .u-dialog-box {
...@@ -495,7 +495,6 @@ p { ...@@ -495,7 +495,6 @@ p {
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
margin-bottom: 0.133rem;
} }
.user-list-scroll .user-list-row .user-list-handle .user-list-subtitle span { .user-list-scroll .user-list-row .user-list-handle .user-list-subtitle span {
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
<div id="app" v-cloak> <div id="app" v-cloak>
<div class="guideBg"> <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> </div>
<u-dialog ref="udialog" :init-param="componentsConfig.dialog.initParam"></u-dialog> <u-dialog ref="udialog" :init-param="componentsConfig.dialog.initParam"></u-dialog>
<u-loading ref="uloading" :init-param="componentsConfig.loading.initParam"></u-loading> <u-loading ref="uloading" :init-param="componentsConfig.loading.initParam"></u-loading>
......
...@@ -100,7 +100,7 @@ p { ...@@ -100,7 +100,7 @@ p {
} }
.custom-loading { .custom-loading {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-loading .u-loading-box { .custom-loading .u-loading-box {
...@@ -303,7 +303,7 @@ p { ...@@ -303,7 +303,7 @@ p {
} }
.custom-dialog { .custom-dialog {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-dialog .u-dialog-box { .custom-dialog .u-dialog-box {
......
...@@ -100,7 +100,7 @@ p { ...@@ -100,7 +100,7 @@ p {
} }
.custom-loading { .custom-loading {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-loading .u-loading-box { .custom-loading .u-loading-box {
...@@ -303,7 +303,7 @@ p { ...@@ -303,7 +303,7 @@ p {
} }
.custom-dialog { .custom-dialog {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-dialog .u-dialog-box { .custom-dialog .u-dialog-box {
......
...@@ -100,7 +100,7 @@ p { ...@@ -100,7 +100,7 @@ p {
} }
.custom-loading { .custom-loading {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-loading .u-loading-box { .custom-loading .u-loading-box {
...@@ -303,7 +303,7 @@ p { ...@@ -303,7 +303,7 @@ p {
} }
.custom-dialog { .custom-dialog {
background-color: rgba(0, 0, 0, 0.9); background-color: rgba(36, 38, 53, 0.8);
} }
.custom-dialog .u-dialog-box { .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