支持按停车场去观察

This commit is contained in:
wuxw 2022-09-26 20:38:46 +08:00
parent c3724b20e9
commit 9b634f393f
9 changed files with 134 additions and 304 deletions

View File

@ -9,6 +9,7 @@
parkingAreaControlCarInoutsInfo: {
carIns: [],
boxId: '',
paId:'',
state: '',
carNum: '',
startTime: '',
@ -28,6 +29,7 @@
_initEvent: function() {
vc.on('parkingAreaControlCarInouts', 'switch', function(_data) {
$that.parkingAreaControlCarInoutsInfo.boxId = _data.boxId;
$that.parkingAreaControlCarInoutsInfo.paId = _data.paId;
$that._loadParkingAreaControlCarInouts(DEFAULT_PAGE, DEFAULT_ROWS);
});
vc.on('parkingAreaControlCarInouts', 'paginationPlus', 'page_event',
@ -51,7 +53,8 @@
carNum: $that.parkingAreaControlCarInoutsInfo.carNum,
startTime: $that.parkingAreaControlCarInoutsInfo.startTime,
endTime: $that.parkingAreaControlCarInoutsInfo.endTime,
carType: $that.parkingAreaControlCarInoutsInfo.carType
carType: $that.parkingAreaControlCarInoutsInfo.carType,
paId:$that.parkingAreaControlCarInoutsInfo.paId
}
};
//发送get请求

View File

@ -9,6 +9,7 @@
parkingAreaControlInCarInfo: {
carIns: [],
boxId: '',
paId: '',
state: '',
carNum: '',
startTime: '',
@ -30,6 +31,7 @@
_initEvent: function() {
vc.on('parkingAreaControlInCar', 'switch', function(_data) {
$that.parkingAreaControlInCarInfo.boxId = _data.boxId;
$that.parkingAreaControlInCarInfo.paId = _data.paId;
$that._loadParkingAreaControlInCarData(DEFAULT_PAGE, DEFAULT_ROWS);
});
@ -53,7 +55,8 @@
state: $that.parkingAreaControlInCarInfo.state,
startTime: $that.parkingAreaControlInCarInfo.startTime,
endTime: $that.parkingAreaControlInCarInfo.endTime,
carType: $that.parkingAreaControlInCarInfo.carType
carType: $that.parkingAreaControlInCarInfo.carType,
paId:$that.parkingAreaControlInCarInfo.paId,
}
};
//发送get请求

View File

@ -9,6 +9,7 @@
parkingAreaControlPaymentInfo: {
payments: [],
boxId: '',
paId:'',
state: '',
carNum: '',
startTime: '',
@ -26,6 +27,7 @@
_initEvent: function() {
vc.on('parkingAreaControlPayment', 'switch', function(_data) {
$that.parkingAreaControlPaymentInfo.boxId = _data.boxId;
$that.parkingAreaControlPaymentInfo.paId = _data.paId;
$that._loadParkingAreaControlPayments(DEFAULT_PAGE, DEFAULT_ROWS);
});
vc.on('parkingAreaControlPayment', 'paginationPlus', 'page_event',
@ -42,6 +44,7 @@
row: _row,
communityId: vc.getCurrentCommunity().communityId,
boxId: $that.parkingAreaControlPaymentInfo.boxId,
paId: $that.parkingAreaControlPaymentInfo.paId,
state: $that.parkingAreaControlPaymentInfo.state,
carNum: $that.parkingAreaControlPaymentInfo.carNum,
startTime: $that.parkingAreaControlPaymentInfo.startTime,

View File

@ -9,6 +9,7 @@
parkingAreaControlPaymentSummaryInfo: {
payments: [],
boxId: '',
paId: '',
startTime: '',
endTime: '',
}
@ -24,6 +25,7 @@
_initEvent: function() {
vc.on('parkingAreaControlPaymentSummary', 'switch', function(_data) {
$that.parkingAreaControlPaymentSummaryInfo.boxId = _data.boxId;
$that.parkingAreaControlPaymentSummaryInfo.paId = _data.paId;
$that._loadParkingAreaControlPaymentSummary(DEFAULT_PAGE, DEFAULT_ROWS);
});
@ -37,6 +39,7 @@
row: _row,
communityId: vc.getCurrentCommunity().communityId,
boxId: $that.parkingAreaControlPaymentSummaryInfo.boxId,
paId: $that.parkingAreaControlPaymentSummaryInfo.paId,
startTime: $that.parkingAreaControlPaymentSummaryInfo.startTime,
endTime: $that.parkingAreaControlPaymentSummaryInfo.endTime
}

View File

@ -1,33 +1,39 @@
<div class="margin-top">
<div class="row">
<div class="col-md-6">
<div class="col-md-6 margin-bottom" v-for="(item,index) in parkingAreaTotalControlVideoInfo.machines">
<div class="flex justify-between">
<div class="" style="font-size: 16px; font-weight: 600;">
<span>进场视频1</span>
<span>{{item.machineName}}</span>
</div>
<div class="row">
<div class="col-sm-12 text-right">
<button type="button" class="btn btn-white btn-sm" v-on:click="customCarIn('1101')">
手动进场
</button>
<button type="button" class="btn btn-primary btn-sm " v-on:click="_openDoor('in')">
开闸
</button>
<button type="button" class="btn btn-primary btn-sm " v-on:click="_closeDoor('in')">
关闸
</button>
<button v-if="item.direction == '3306'" type="button" class="btn btn-white btn-sm"
v-on:click="customCarIn(item,'1101')">
手动进场
</button>
<button v-else type="button" class="btn btn-white btn-sm" v-on:click="customCarIn(item,'1102')">
手动出场
</button>
<button type="button" class="btn btn-primary btn-sm " v-on:click="_openDoor(item)">
开闸
</button>
<button type="button" class="btn btn-primary btn-sm " v-on:click="_closeDoor(item)">
关闸
</button>
</div>
</div>
</div>
<div class="margin-top-sm">
<div id="receiver1Div" style="border: 1px solid #dee2e6;">
<img width="100%" src="../../../img/init.jpg" height="300px" id="receiver1" style="border: 1;" />
<div :id="'receiverDiv'+item.machineId" style="border: 1px solid #dee2e6;">
<img width="100%" src="../../../img/init.jpg" height="300px" :id="'receiver'+item.machineId"
style="border: 1;" />
<img src="sdfsdf" style="position: absolute;left: 15px;bottom: 50px;"/>
</div>
<div class="margin-top-sm margin-left-sm" style="font-size: 14px;" v-if="parkingAreaTotalControlVideoInfo.inMachineCarNum">
<div class="margin-top-sm margin-left-sm" style="font-size: 14px;" v-if="item.carNum">
<span class="fa fa-bell" style="color: #007bff;"></span>
<span>{{parkingAreaTotalControlVideoInfo.inMachineInOutTime}}</span>
<span>{{parkingAreaTotalControlVideoInfo.inMachineOpen}};</span>
<span>{{parkingAreaTotalControlVideoInfo.inMachineOpenMsg}}</span>
<span>{{item.inOutTime}}</span>
<span>{{item.open}};</span>
<span>{{item.openMsg}}</span>
</div>
<div class="margin-top-sm margin-left-sm" style="font-size: 14px;" v-else>
<span class="fa fa-bell" style="color: #007bff;"></span>
@ -35,47 +41,6 @@
</div>
</div>
</div>
<div class="col-md-6">
<div class="flex justify-between">
<div class="">
<div class="" style="font-size: 16px; font-weight: 600;">
<span>进场视频2</span>
</div>
</div>
<div class="">
<div class=" row">
<div class="col-sm-12 text-right">
<button type="button" class="btn btn-white btn-sm" v-on:click="customCarIn('1102')">
手动出场
</button>
<button type="button" class="btn btn-primary btn-sm " v-on:click="_openDoor('out')">
开闸
</button>
<button type="button" class="btn btn-primary btn-sm " v-on:click="_closeDoor('out')">
关闸
</button>
</div>
</div>
</div>
</div>
<div class="margin-top-sm">
<div id="receiver2Div" style="border: 1px solid #dee2e6;">
<img width="100%" src="../../../img/init.jpg" height="300px" id="receiver2" />
</div>
<div class="margin-top-sm margin-left-sm" style="font-size: 14px;" v-if="parkingAreaTotalControlVideoInfo.outMachineCarNum">
<span class="fa fa-bell" style="color: #007bff;"></span>
<span>{{parkingAreaTotalControlVideoInfo.outMachineInOutTime}}</span>
<span>{{parkingAreaTotalControlVideoInfo.outMachineOpen}};</span>
<span>{{parkingAreaTotalControlVideoInfo.outMachineOpenMsg}}</span>
</div>
<div class="margin-top-sm margin-left-sm" style="font-size: 14px;" v-else>
<span class="fa fa-bell" style="color: #007bff;"></span>
<span>没有出场车辆</span>
</div>
</div>
</div>
</div>
<div class="vc-line-primary margin-top"></div>
<vc:create path="property/barrierGateMachineQrCode"></vc:create>
</div>

View File

@ -1,101 +1,100 @@
/**
入驻小区
**/
(function(vc) {
(function (vc) {
vc.extends({
data: {
parkingAreaTotalControlVideoInfo: {
paId: '',
inMachineId: '',
outMachineId: '',
inMachines: [],
outMachines: [],
inMachineCarNum: '',
inMachineInOutTime: '',
inMachineOpen: '',
inMachineOpenMsg: '',
outMachineCarNum: '',
outMachineInOutTime: '',
outMachineOpen: '',
outMachineOpenMsg: ''
machines: [],
}
},
_initMethod: function() {
_initMethod: function () {
let _paId = vc.getParam('paId');
if(_paId) {
$that.parkingAreaTotalControlVideoInfo.paId = _paId;
$that._listMachines();
}
},
_initEvent: function() {
vc.on('parkingAreaControlVideo', 'notify', function(param) {
if (param.hasOwnProperty('paId')) {
$that.parkingAreaTotalControlVideoInfo.paId = param.paId;
$that._listMachines();
}
_initEvent: function () {
vc.on('parkingAreaTotalControlVideo', 'switch', function (param) {
// if (param.hasOwnProperty('paId')) {
// $that.parkingAreaTotalControlVideoInfo.paId = param.paId;
// $that._listMachines();
// }
});
vc.on('parkingAreaControlVideo', 'carIn', function(param) {
$that.parkingAreaTotalControlVideoInfo.inMachineCarNum = param.carNum;
$that.parkingAreaTotalControlVideoInfo.inMachineInOutTime = param.inOutTime;
$that.parkingAreaTotalControlVideoInfo.inMachineOpen = param.open;
$that.parkingAreaTotalControlVideoInfo.inMachineOpenMsg = param.remark;
vc.on('parkingAreaTotalControlVideo', 'notify', function (param) {
console.log(param);
});
vc.on('parkingAreaControlVideo', 'carOut', function(param) {
$that.parkingAreaTotalControlVideoInfo.outMachineCarNum = param.carNum;
$that.parkingAreaTotalControlVideoInfo.outMachineInOutTime = param.inOutTime;
$that.parkingAreaTotalControlVideoInfo.outMachineOpen = param.open;
$that.parkingAreaTotalControlVideoInfo.outMachineOpenMsg = param.remark;
});
},
methods: {
_listMachines: function() {
let param = {
params: {
paId: $that.parkingAreaTotalControlVideoInfo.paId,
page: 1,
row: 100,
communityId: vc.getCurrentCommunity().communityId
}
_showCarInoutMachineInfo:function(_data){
let _machines = $that.parkingAreaTotalControlVideoInfo.machines;
_machines.forEach(item =>{
if(item.machineId == _data.extMachineId){
setTimeout(function() {
item.inOutImg = _data.img;
}, 1500);
}
//发送get请求
})
},
_listMachines: function () {
let param = {
params: {
paId: $that.parkingAreaTotalControlVideoInfo.paId,
page: 1,
row: 100,
communityId: vc.getCurrentCommunity().communityId
}
}
//发送get请求
vc.http.apiGet('/machine.listParkingAreaMachines',
param,
function(json, res) {
function (json, res) {
let _machineManageInfo = JSON.parse(json);
let _machines = _machineManageInfo.data;
$that.parkingAreaTotalControlVideoInfo.inMachines = [];
$that.parkingAreaTotalControlVideoInfo.outMachines = [];
_machines.forEach(item => {
if (item.direction == '3306') {
$that.parkingAreaTotalControlVideoInfo.inMachines.push(item);
} else {
$that.parkingAreaTotalControlVideoInfo.outMachines.push(item);
}
});
item.carNum = '';
item.inOutTime = '';
item.open = '';
item.openMsg = '';
})
$that.parkingAreaTotalControlVideoInfo.machines = _machines;
// 初始化视频
$that.initMachineVedio();
},
function(errInfo, error) {
function (errInfo, error) {
console.log('请求失败处理');
}
);
},
_swatchVedio: function() {
initMachineVedio: function () {
let _machines = $that.parkingAreaTotalControlVideoInfo.machines;
let wsUrl = "";
_machines.forEach(item => {
$that._swatchVedio(item);
})
},
_swatchVedio: function (_machine) {
//创建一个socket实例
let wsUrl = "";
let _enterMachineId = $that.parkingAreaTotalControlVideoInfo.inMachineId;
vc.emit('parkingAreaControl', 'notify', {
inMachineId: _enterMachineId
});
$that.parkingAreaTotalControlVideoInfo.inMachines.forEach((item) => {
if (item.machineId == _enterMachineId) {
wsUrl = item.machineIp;
if (item.machineVersion.indexOf('300') > -1) {
wsUrl += "/ws.flv"
} else {
wsUrl += "/ws"
}
}
});
wsUrl = _machine.machineIp;
if (_machine.machineVersion.indexOf('300') > -1) {
wsUrl += "/ws.flv"
} else {
wsUrl += "/ws"
}
wsUrl = wsUrl.replace(':8131', ':9080');
let _protocol = window.location.protocol;
// if (_protocol.startsWith('https')) {
@ -105,24 +104,24 @@
wsUrl =
"ws://" + wsUrl;
// }
let image = document.getElementById("receiver1");
let image = document.getElementById("receiver"+_machine.machineId);
if (wsUrl.endsWith(".flv")) {
image = document.getElementById("receiver1Div");
image = document.getElementById("receiverDiv"+_machine.machineId);
let jessibuca = new Jessibuca({
container: image,
videoBuffer: 0.2,
isResize: false,
});
jessibuca.onLoad = function() {
jessibuca.onLoad = function () {
this.play(wsUrl);
};
return;
}
let receiver_socket = new WebSocket(wsUrl);
// 监听消息
receiver_socket.onmessage = function(data) {
receiver_socket.onmessage = function (data) {
let reader = new FileReader();
reader.onload = function(evt) {
reader.onload = function (evt) {
if (evt.target.readyState == FileReader.DONE) {
let url = evt.target.result;
image.src = "data:image/png;" + url;
@ -131,102 +130,10 @@
reader.readAsDataURL(data.data);
};
},
_swatchOutVedio: function() {
//创建一个socket实例
let wsUrl = "";
let _outMachineId = $that.parkingAreaTotalControlVideoInfo.outMachineId;
vc.emit('parkingAreaControl', 'notify', {
outMachineId: _outMachineId
});
vc.emit('parkingAreaControlFee', 'changeMachine', {
machineId: _outMachineId,
boxId: $that.parkingAreaTotalControlVideoInfo.boxId
});
vc.emit('parkingAreaControlInCar', 'changeMachine', {
machineId: _outMachineId,
boxId: $that.parkingAreaTotalControlVideoInfo.boxId
});
vc.emit('parkingAreaControlCarInouts', 'changeMachine', {
machineId: _outMachineId,
boxId: $that.parkingAreaTotalControlVideoInfo.boxId
});
let paId = "";
$that.parkingAreaTotalControlVideoInfo.outMachines.forEach((item) => {
if (item.machineId == _outMachineId) {
wsUrl = item.machineIp;
paId = item.locationObjId;
if (item.machineVersion.indexOf('300') > -1) {
wsUrl += "/ws.flv"
} else {
wsUrl += "/ws"
}
}
});
wsUrl = wsUrl.replace(':8131', ':9080')
let _protocol = window.location.protocol;
if (_protocol.startsWith('https')) {
wsUrl =
"wss://" + wsUrl;
} else {
wsUrl =
"ws://" + wsUrl;
}
let image = document.getElementById("receiver2");
if (wsUrl.endsWith(".flv")) {
image = document.getElementById("receiver2Div");
let jessibuca = new Jessibuca({
container: image,
videoBuffer: 0.2,
isResize: false,
});
jessibuca.onLoad = function() {
this.play(wsUrl);
};
return;
}
let receiver_socket = new WebSocket(wsUrl);
// 监听消息
receiver_socket.onmessage = function(data) {
//image.src = 'data:image/png;' + data.data;
let reader = new FileReader();
reader.onload = function(evt) {
if (evt.target.readyState == FileReader.DONE) {
let url = evt.target.result;
image.src = "data:image/png;" + url;
}
};
reader.readAsDataURL(data.data);
};
},
_openDoor: function(_inOut) {
let _machines = [];
let _machineId = "";
if (_inOut == 'in') {
_machines = $that.parkingAreaTotalControlVideoInfo.inMachines;
_machineId = $that.parkingAreaTotalControlVideoInfo.inMachineId;
} else {
_machines = $that.parkingAreaTotalControlVideoInfo.outMachines;
_machineId = $that.parkingAreaTotalControlVideoInfo.outMachineId;
}
if (_machines.length == 0) {
vc.toast('请先选择设备');
return;
}
let _machineCode = '';
_machines.forEach(item => {
if (item.machineId == _machineId) {
_machineCode = item.machineCode;
}
})
_openDoor: function (_machine) {
let _data = {
"machineCode": _machineCode,
"machineCode": _machine.machineCode,
"stateName": "开门",
"state": "1500",
"url": "/machine/openDoor",
@ -235,9 +142,9 @@
};
vc.http.apiPost('/machine/openDoor',
JSON.stringify(_data), {
emulateJSON: true
},
function(json, res) {
emulateJSON: true
},
function (json, res) {
let _data = JSON.parse(json);
if (_data.code != 0) {
vc.toast(_data.msg);
@ -245,34 +152,14 @@
vc.toast('已请求设备');
}
},
function(errInfo, error) {
function (errInfo, error) {
console.log('请求失败处理');
vc.toast(json);
});
},
_closeDoor: function(_inOut) {
let _machines = [];
let _machineId = "";
if (_inOut == 'in') {
_machines = $that.parkingAreaTotalControlVideoInfo.inMachines;
_machineId = $that.parkingAreaTotalControlVideoInfo.inMachineId;
} else {
_machines = $that.parkingAreaTotalControlVideoInfo.outMachines;
_machineId = $that.parkingAreaTotalControlVideoInfo.outMachineId;
}
if (_machines.length == 0) {
vc.toast('请先选择设备');
return;
}
let _machineCode = '';
_machines.forEach(item => {
if (item.machineId == _machineId) {
_machineCode = item.machineCode;
}
})
_closeDoor: function (_machine) {
let _data = {
"machineCode": _machineCode,
"machineCode": _machine.machineCode,
"stateName": "关门",
"state": "1500",
"url": "/machine/closeDoor",
@ -281,9 +168,9 @@
};
vc.http.apiPost('/machine/closeDoor',
JSON.stringify(_data), {
emulateJSON: true
},
function(json, res) {
emulateJSON: true
},
function (json, res) {
let _data = JSON.parse(json);
if (_data.code != 0) {
vc.toast(_data.msg);
@ -291,53 +178,18 @@
vc.toast('已请求设备');
}
},
function(errInfo, error) {
function (errInfo, error) {
console.log('请求失败处理');
vc.toast(json);
});
},
customCarIn: function(_type) {
let _machineId = $that.parkingAreaTotalControlVideoInfo.inMachineId;
if (_type != '1101') {
_machineId = $that.parkingAreaTotalControlVideoInfo.outMachineId;
}
if (!_machineId) {
vc.toast('请选择摄像头');
return;
}
customCarIn: function (_machine,_type) {
vc.emit('parkingAreaControlCustomCarInout', 'open', {
type: _type,
machineId: _machineId,
boxId: $that.parkingAreaTotalControlVideoInfo.boxId
machineId: _machine.machineId,
boxId: _machine.locationObjId
})
},
unlicensedCarIn: function(_type) {
let _machineId = $that.parkingAreaTotalControlVideoInfo.inMachineId;
if (!_machineId) {
vc.toast('请选择入场摄像头');
return;
}
vc.emit('unlicensedCarMachineQrCode', 'open', {
type: '1101',
machineId: _machineId
})
},
_outPayFeeQrCode: function() {
let _machineId = $that.parkingAreaTotalControlVideoInfo.outMachineId;
if (!_machineId) {
vc.toast('请选择出场摄像头');
return;
}
vc.emit('barrierGateMachineQrCode', 'openQrCodeModal', {
machineId: _machineId,
locationObjId: $that.parkingAreaTotalControlVideoInfo.boxId
});
}
}
});
})(window.vc);

View File

@ -65,11 +65,11 @@
let url = '';
if (_protocol.startsWith('https')) {
url =
"wss://" + window.location.host + "/ws/parkingArea/" +
"wss://" + window.location.host + "/ws/parkingBox/" +
$that.parkingAreaControlInfo.boxId + "/" + clientId;
} else {
url =
"ws://" + window.location.host + "/ws/parkingArea/" +
"ws://" + window.location.host + "/ws/parkingBox/" +
$that.parkingAreaControlInfo.boxId + "/" + clientId;
// url =
// "ws://demo.homecommunity.cn:8008/ws/parkingArea/" +

View File

@ -28,11 +28,11 @@
<span><vc:i18n name="月租车" namespace="parkingAreaTotalControl"></vc:i18n></span>
</a>
</li>
<li class="nav-item">
<!-- <li class="nav-item">
<a class="nav-link" v-bind:class="{active:parkingAreaTotalControlInfo._currentTab == 'parkingAreaControlTempCar'}" v-on:click="changeTab('parkingAreaControlTempCar')">
<span><vc:i18n name="临时车" namespace="parkingAreaTotalControl"></vc:i18n></span>
</a>
</li>
</li> -->
<li class="nav-item">
<a class="nav-link" v-bind:class="{active:parkingAreaTotalControlInfo._currentTab == 'parkingAreaControlWhiteCar'}" v-on:click="changeTab('parkingAreaControlWhiteCar')">
<span><vc:i18n name="白名单" namespace="parkingAreaTotalControl"></vc:i18n></span>
@ -43,11 +43,11 @@
<span><vc:i18n name="黑名单" namespace="parkingAreaTotalControl"></vc:i18n></span>
</a>
</li>
<li class="nav-item">
<!-- <li class="nav-item">
<a class="nav-link" v-bind:class="{active:parkingAreaTotalControlInfo._currentTab == 'parkingAreaControlRemaining'}" v-on:click="changeTab('parkingAreaControlRemaining')">
<span><vc:i18n name="剩余车位" namespace="parkingAreaTotalControl"></vc:i18n></span>
</a>
</li>
</li> -->
<li class="nav-item">
<a class="nav-link" v-bind:class="{active:parkingAreaTotalControlInfo._currentTab == 'parkingAreaControlPaymentSummary'}" v-on:click="changeTab('parkingAreaControlPaymentSummary')">
<span><vc:i18n name="收费统计" namespace="parkingAreaTotalControl"></vc:i18n></span>

View File

@ -13,6 +13,7 @@
},
_initMethod: function() {
$that.parkingAreaTotalControlInfo.paId = vc.getParam('paId');
$that._initParkingAreaWs();
vc.emit('parkingAreaTotalControlVideo', 'notify', {
paId: $that.parkingAreaTotalControlInfo.paId
@ -27,7 +28,7 @@
changeTab: function(_tab) {
$that.parkingAreaTotalControlInfo._currentTab = _tab;
vc.emit(_tab, 'switch', {
boxId: $that.parkingAreaTotalControlInfo.boxId
paId: $that.parkingAreaTotalControlInfo.paId
})
},
_initParkingAreaWs: function() {
@ -66,11 +67,11 @@
if (_protocol.startsWith('https')) {
url =
"wss://" + window.location.host + "/ws/parkingArea/" +
$that.parkingAreaTotalControlInfo.boxId + "/" + clientId;
$that.parkingAreaTotalControlInfo.paId + "/" + clientId;
} else {
url =
"ws://" + window.location.host + "/ws/parkingArea/" +
$that.parkingAreaTotalControlInfo.boxId + "/" + clientId;
$that.parkingAreaTotalControlInfo.paId + "/" + clientId;
// url =
// "ws://demo.homecommunity.cn:8008/ws/parkingArea/" +
// $that.parkingAreaTotalControlInfo.boxId + "/" + clientId;