Commit 45cda6b5 by 朱建香

#30

关联和未关联页面修改
parent 8e3435ae
......@@ -163,7 +163,7 @@
"opendoorMsgPush": "开门消息推送",
"unbindDialogTip": "确认解除绑定",
"unbindSuccess": "<img src='../../resources/image/green_unbindSuccess_icon.png'>解绑成功",
"unbindFailue": "<img src='../../resources/image/green_unbindFail_icon.png'>解绑失败"
"unbindFailue": "<img src='../../resources/image/green_unbindSuccess_icon.png'>解绑失败"
},
"editName":{
"nameInputTip": "请输入门锁名称",
......@@ -262,7 +262,7 @@
"unbindDialogTip": "<img src='../../resources/image/green_unbind_icon.png'>解绑后,该用户不能对门锁下的信息进行查看",
"deleteUserDialogTip": "删除后,用户对应的开锁id取消关联,同时失去信息查看权限。",
"unbindSuccess": "<img src='../../resources/image/green_unbindSuccess_icon.png'>解绑成功",
"unbindFailue": "<img src='../../resources/image/green_unbindFail_icon.png'>解绑失败",
"unbindFailue": "<img src='../../resources/image/green_unbindSuccess_icon.png'>解绑失败",
"guideStep1Tip1": "邀请绑定成功",
"guideStep1Tip2": "(受邀用户可查看开门记录,报警记录等<br>相关门锁信息)",
"guideStep3Tip": "关联后可了解<br>该用户的开门情况",
......@@ -291,6 +291,7 @@
"unlockInfo":{
"bindUnlockInfo": "已关联的开锁信息",
"noInfoTip": "尚未关联开锁信息",
"bindSoon": "快速关联",
"passwordOpenDoor": "密码",
"fingerprintOpenDoor": "指纹",
"ICcardOpenDoor": "IC卡",
......@@ -299,9 +300,9 @@
"appRemoteOpenDoor": "app远程",
"hijackingAlarm": "劫持指纹",
"setHijack": "设为劫持",
"setHijackTip": "确认设为劫持指纹?",
"setHijackTip": "确认设为劫持指纹?设定后使用该指纹开锁时,门锁用户将会收到劫持报警",
"cancelHijack": "取消劫持",
"cancelHijackTip": "确认取消劫持指纹?",
"cancelHijackTip": "确认取消劫持指纹?取消后,门锁用户不再收到劫持报警",
"cancelAssociated": "取消关联",
"cancelAssociatedTip": "取消关联后,开门历史记录中将不再显示关联的用户信息。",
"cancelAssociatedSuccess": "取消关联成功",
......@@ -309,7 +310,9 @@
"setHijackSuccess": "设为劫持指纹成功",
"setHijackFailue": "设为劫持指纹失败",
"cancelHijackSuccess": "取消劫持指纹成功",
"cancelHijackFailue": "取消劫持指纹失败"
"cancelHijackFailue": "取消劫持指纹失败",
"unlockInfoListTip": "暂无关联信息",
"noHistoryTip": "今日尚无未关联的开门记录"
},
"addUnlockInfo":{
"opendoorMode": "选择要关联的开锁方式",
......@@ -327,7 +330,9 @@
"setHijackSwitch": "设为劫持指纹",
"guideStep1Tip": "选择需要添加关联的开门方式",
"guideStep3Tip": "根据开门记录中的开门时间,选择关联的<br>开门ID<span>(一个ID只能被一个用户绑定)</span>",
"guideStep5Tip": "使用劫持指纹开门时,会以报警形式<br>通知到该门锁名下的其他绑定用户"
"guideStep5Tip": "使用劫持指纹开门时,会以报警形式<br>通知到该门锁名下的其他绑定用户",
"bindedUnlockInfo": "查看已关联信息",
"stay": "留在此页"
},
"myInfo":{
"editNickname": "修改昵称",
......@@ -335,7 +340,8 @@
"logoutDialogTip": "确定要退出系统吗?"
},
"editNickname": {
"nickNameInputTip": "请输入昵称"
"nickNameInputTip": "请输入昵称",
"nickNameTypeTip": "请输入中文、字母和数字"
},
"editPassword": {
"newPasswordInputTip": "请输入新密码",
......@@ -388,8 +394,5 @@
"tip": "版本更新",
"update":"更新",
"miss": "暂不更新"
},
"textTip":{
"textType": "请输入中文、字母和数字"
}
}
\ No newline at end of file
......@@ -300,9 +300,9 @@
"appRemoteOpenDoor": "app远程",
"hijackingAlarm": "劫持指纹",
"setHijack": "设为劫持",
"setHijackTip": "确认设为劫持指纹?",
"setHijackTip": "确认设为劫持指纹?设定后使用该指纹开锁时,门锁用户将会收到劫持报警",
"cancelHijack": "取消劫持",
"cancelHijackTip": "确认取消劫持指纹?",
"cancelHijackTip": "确认取消劫持指纹?取消后,门锁用户不再收到劫持报警",
"cancelAssociated": "取消关联",
"cancelAssociatedTip": "取消关联后,开门历史记录中将不再显示关联的用户信息。",
"cancelAssociatedSuccess": "取消关联成功",
......@@ -310,7 +310,9 @@
"setHijackSuccess": "设为劫持指纹成功",
"setHijackFailue": "设为劫持指纹失败",
"cancelHijackSuccess": "取消劫持指纹成功",
"cancelHijackFailue": "取消劫持指纹失败"
"cancelHijackFailue": "取消劫持指纹失败",
"unlockInfoListTip": "暂无关联信息",
"noHistoryTip": "今日尚无未关联的开门记录"
},
"addUnlockInfo":{
"opendoorMode": "选择要关联的开锁方式",
......@@ -328,7 +330,9 @@
"setHijackSwitch": "设为劫持指纹",
"guideStep1Tip": "选择需要添加关联的开门方式",
"guideStep3Tip": "根据开门记录中的开门时间,选择关联的<br>开门ID<span>(一个ID只能被一个用户绑定)</span>",
"guideStep5Tip": "使用劫持指纹开门时,会以报警形式<br>通知到该门锁名下的其他绑定用户"
"guideStep5Tip": "使用劫持指纹开门时,会以报警形式<br>通知到该门锁名下的其他绑定用户",
"bindedUnlockInfo": "查看已关联信息",
"stay": "留在此页"
},
"myInfo":{
"editNickname": "修改昵称",
......
......@@ -241,10 +241,10 @@ async function showGuide(self){
console.log(self.userInfo.role);
if(self.userInfo.role == 0){
try{
time = await sleep(1000);
time = await sleep(500);
self.setGuideStep3ShowFlag(true),
time = await sleep(1000);
time = await sleep(500);
self.setGuideStep4ShowFlag(true);
}
catch (err){
......
......@@ -6,6 +6,8 @@
* Copyright(c) 2017. U-GEN Tech.Co,Ltd. All Rights Reserved.
* 绑定开锁信息页面
*/
import moment from 'moment';
import config from '../../public/config.js'
import {iot, uPublic, uComponents} from '../../public/public.js';
......@@ -24,24 +26,39 @@ function init() {
role: null,
lockItems: [],
selectItem: 0,
unlockInfoListTip: '暂无数据',
noHistoryTip: '暂无历史记录',
unlockInfoListTip: Vue.t('unlockInfo.unlockInfoListTip'),
noHistoryTip: Vue.t('unlockInfo.noHistoryTip'),
tipShowFlag: true,
infoList: []
infoList: [],
// list: [],
// pullup: false,
// loadText: Vue.t('scroll.clickToLoadMore'),
// // loading是否显示
// loadShowFlag: false,
// // 是否在loading
// loadFlag: false,
// tipShowFlag: false
},
mounted(){
this.extras = iot.navigator.getExtras();
this.role = this.extras.role;
console.log(this.extras);
//获取已绑定的开锁信息
getBindedLockInfo(this);
let self = this;
window.addEventListener('returnPage',function(event){
console.log("returnPage");
self.unlockInfoList = [];
getBindedLockInfo(self);
});
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 () {
// //在一些特殊情况下ulistDom.scrollHeight和ulistDom.offsetHeight + ulistDom.scrollTop会相差1px,这里考虑1px的误差
// console.log(self.loadFlag+'+'+self.pullup+'+'+ulistDom.scrollHeight+'+'+ulistDom.scrollTop);
// if (!self.loadFlag && self.pullup && (ulistDom.scrollHeight - (ulistDom.offsetHeight + ulistDom.scrollTop)) <= 1) {
// self.loadText = Vue.t('scroll.loading');
// self.loadFlag = true;
// getBindedLockInfo(self);
// }
// }
},
methods:{
getUnlockInfoList(){
......@@ -72,19 +89,24 @@ function init() {
onBackTap(){
backTap();
},
onAddTap(){
//tap 添加
addTap(this);
},
//tap list row btn
onUnlockInfoListButtonTap(value, buttonValue){
unlockInfoListButtonTap(this, value, buttonValue);
},
// onAddTap(){
// //tap 添加
// addTap(this);
// },
onItemChange(key){
itemChange(this, key);
},
onImgButtonTap(index, buttonIndex){
imgButtonTap(this, index, buttonIndex);
},
setLoadShowFlag(number) {
this.loadShowFlag = (number >= this.pagesize);
},
onTapLoad() {
tapLoad(this);
},
changeList(list) {
changeList(this, list);
}
}
}).$mount('#app');
......@@ -93,19 +115,6 @@ function init() {
//配置组件参数
function initComponentsConfig() {
return {
unlockInfoList: {
initParam: {
// class: 'custom-unlockInfo-list',
list: [],
class: 'custom-swipe-list',
// list: [
// {title: '指纹1', subtitle: 'ID:123456', buttons: [{'text': Vue.t('unlockInfo.setHijack')},{'text': Vue.t('unlockInfo.cancelAssociated')}]},
// {title: '指纹2', subtitle: 'ID:123456', buttons: [{'text': Vue.t('unlockInfo.setHijack')},{'text': Vue.t('unlockInfo.cancelAssociated')}]},
// {title: '劫持指纹1', subtitle: 'ID:123456', buttons: [{'text': Vue.t('unlockInfo.cancelHijack')},{'text': Vue.t('unlockInfo.cancelAssociated')}]}
// ],
tip: Vue.t('unlockInfo.noInfoTip')
}
},
dialog: {
initParam: {
class: 'custom-dialog'
......@@ -170,28 +179,21 @@ function getBindedLockInfo(self){
title: Vue.t('unlockInfo.'+config.openDoorMode[data[i].mode]+'')+j+'',
subtitle: 'ID:'+data[i].openId,
// buttons: self.extras.role ? [] : [{'text': data[i].mode == 20 ? Vue.t('unlockInfo.cancelHijack') : data[i].mode == 2 ? Vue.t('unlockInfo.setHijack') : ''},{'text': Vue.t('unlockInfo.cancelAssociated')}]
buttons: self.extras.role ? [] : (data[i].mode == 20 || data[i].mode == 2) ? [{"imgSrc": data[i].mode == 20 ? "../../resources/image/green_deleteHijack_icon.png" : "../../resources/image/green_setHijack_icon.png"},{"imgSrc": "../../resources/image/green_deleteUnlockInfo_icon.png"}] : [{"imgSrc": "../../resources/image/green_deleteUnlockInfo_icon.png"}]
buttons: self.extras.role ? [] : (data[i].mode == 20 || data[i].mode == 2) ? [{"imgSrc": data[i].mode == 20 ? "../../resources/image/green_deleteHijack_icon.png" : "../../resources/image/green_setHijack_icon.png"},{"imgSrc": "../../resources/image/green_deleteUnlockInfo_icon.png"}] : [{"imgSrc": null},{"imgSrc": "../../resources/image/green_deleteUnlockInfo_icon.png"}]
};
j++;
lastMode = data[i].mode;
}
self.setUnlockInfoList(self.getUnlockInfoList().concat(list));
self.setInfoList(self.getUnlockInfoList());
console.log(self.getUnlockInfoList());
//更新列表数据
// uComponents.changeSwipeList(self, self.getUnlockInfoList());
//更新列表
self.setInfoList(list);
// changeList(self, list);
}else{
// uComponents.changeSwipeList(self, []);
//当已绑定信息为空时,列表渲染为空
self.setInfoList([]);
}
},
error: (error) => {
console.log(error);
// if(window.iotDebug){
// iotDebug.push('end: 获取已绑定的开锁信息失败'+JSON.stringify(error));
// }
// if (window.iotDebug) {
// iotDebug.upload(iot,'获取已绑定的开锁信息失败');
// }
uPublic.openRequestErrorAlert(self);
},
complete: () => {
......@@ -218,7 +220,6 @@ function unlockInfoListButtonTap(self, value, buttonValue) {
console.log(response);
uComponents.openAlert(self, Vue.t('unlockInfo.setHijackSuccess'), {
text: Vue.t('dialog.confirm'), callback: function () {
self.unlockInfoList = [];
getBindedLockInfo(self);
}
});
......@@ -257,7 +258,6 @@ function unlockInfoListButtonTap(self, value, buttonValue) {
console.log(response);
uComponents.openAlert(self, Vue.t('unlockInfo.cancelHijackSuccess'), {
text: Vue.t('dialog.confirm'), callback: function () {
self.unlockInfoList = [];
getBindedLockInfo(self);
}
});
......@@ -300,19 +300,12 @@ function unlockInfoListButtonTap(self, value, buttonValue) {
console.log(response);
uComponents.openAlert(self, Vue.t('unlockInfo.cancelAssociatedSuccess'), {
text: Vue.t('dialog.confirm'), callback: function () {
self.unlockInfoList = [];
getBindedLockInfo(self);
}
});
},
error: (error) => {
console.log(error);
// if(window.iotDebug){
// iotDebug.push('end: 取消关联失败'+JSON.stringify(error));
// }
// if (window.iotDebug) {
// iotDebug.upload(iot,'取消关联失败');
// }
uComponents.openAlert(self, Vue.t('unlockInfo.cancelAssociatedFailue'), {
text: Vue.t('dialog.confirm'), callback: function () {
}
......@@ -331,22 +324,107 @@ function itemChange(self, key){
self.setInfoList([]);
if(key == 0){
//获取未关联的开门记录
self.setInfoList([
{"title": "aaaa", "subtitle": "bbbbb", "buttons": [{"imgSrc": "../../resources/image/green_addUnlckInfo_icon.png"}]}
]);
getTodayReccord(self);
}else if(key == 1){
//获取已关联的开门记录
self.setUnlockInfoList([]);
getBindedLockInfo(self);
// self.setInfoList([
// {"title": "门锁ID", "subtitle": "bbbbb", "buttons": [{"imgSrc": "../../resources/image/green_setHijack_icon.png"},{"imgSrc": "../../resources/image/green_deleteUnlockInfo_icon.png"}]}
// ]);
}
console.log(key);
self.setSelectItem(key);
}
function imgButtonTap(self, index, buttonIndex){
console.log(index, buttonIndex);
if(self.getSelectItem() == 0){
addButtonTap(self, index);
}else if(self.getSelectItem() == 1){
unlockInfoListButtonTap(self, index, buttonIndex);
}
}
//获取当天未绑定的开门记录
function getTodayReccord(self){
uComponents.showLoading(self);
iot.business.api.sendCustom('lock/getUnbindOpen',{
data: {
device_id: self.extras.deviceId
},
success: (response) => {
console.log(response);
let data = response.data;
self.setUnlockInfoList(data);
let list = [];
for(let i = 0; i < data.length; i++){
list[i] = {
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"}]
}
}
self.setInfoList(list);
},
error: (error) => {
console.log(error);
uPublic.openRequestErrorAlert(self);
},
complete: () => {
uComponents.hideLoading(self);
}
});
}
//tap 添加
function addButtonTap(self, index){
uComponents.showLoading(self);
iot.business.api.sendCustom('lock/bindOpenLog',{
data: {
device_id: self.extras.deviceId,
mode: parseInt(self.getUnlockInfoList()[index].mode),
openId: parseInt(self.getUnlockInfoList()[index].openId),
rel_id: self.extras.id
},
success: (response) => {
console.log(response);
if(response.data.success){
uComponents.openConfirm(self, Vue.t('addUnlockInfo.addInfoSuccess'),
{text: Vue.t('addUnlockInfo.stay'), callback: function () {
getTodayReccord(self);
}},
{text: Vue.t('addUnlockInfo.bindedUnlockInfo'), callback: function () {
itemChange(self, 1);
}});
}else{}
},
error: (error) => {
console.log(error);
uComponents.openAlert(vmObj, Vue.t('addUnlockInfo.addInfoFailue'), {
text: Vue.t('dialog.confirm'), callback: function () {
}
});
},
complete: () => {
uComponents.hideLoading(self);
}
});
}
// // 通知点击加载更多事件
//function tapLoad(self) {
// // loading
// if (!self.loadFlag && !self.pullup) {
// getBindedLockInfo(self);
// self.loadText = Vue.t('scroll.loading');
// self.loadFlag = true;
// }
//}
//
//// 修改list组件列表
//function changeList(self, list) {
// let array = Array.isArray(list) ? list : [];
// self.tipShowFlag = (array.length === 0);
// self.setLoadShowFlag(array.length - self.list.length);
// self.list = array;
// self.$nextTick(function () {
// self.loadText = Vue.t('scroll.clickToLoadMore');
// self.loadFlag = false;
// });
//}
\ No newline at end of file
......@@ -23,7 +23,7 @@
<div class="header">
<v-touch tag="span" class="header-left icon" v-on:tap="onBackTap">&#xe611;</v-touch>
<p>{{ $t('title.unlockInfo') }}</p>
<v-touch tag="span" class="header-right" v-on:tap="onAddTap" v-show="!role">{{ $t('btn.add') }}</v-touch>
<!--<v-touch tag="span" class="header-right" v-on:tap="onAddTap" v-show="!role">{{ $t('btn.add') }}</v-touch>-->
</div>
<div class="content">
<!--<p class="title">{{ $t('unlockInfo.bindUnlockInfo') }}</p>-->
......@@ -34,7 +34,7 @@
</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">
<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,11 +42,15 @@
<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-on:tap="onImgButtonTap(index, buttonIndex)">
<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>
</div>
</li>
<!--<v-touch tag="li" class="infoList-list-load" v-on:tap="onTapLoad" v-show="loadShowFlag">
<span class="infoList-list-load-animation" v-show="loadFlag"></span>
{{ loadText }}
</v-touch>-->
</ul>
<p class="infoList-list-tip" v-bind:class="{'noHistory-list-tip':selectItem == 0}" v-show="tipShowFlag && (infoList.length == 0)">{{ selectItem == 0 ? noHistoryTip : unlockInfoListTip }}</p>
</div>
......
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