parent
48aa0beea3
commit
e00528e446
@ -0,0 +1,177 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="common/head :: head(link)"/>
|
||||
<style>
|
||||
.demo-split{
|
||||
height: 350px;
|
||||
border: 1px solid #dcdee2;
|
||||
}
|
||||
.demo-split-pane{
|
||||
padding: 10px;
|
||||
height: 350px;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<div id="app" class="ok-body" v-cloak>
|
||||
<!--模糊搜索区域-->
|
||||
<template>
|
||||
<div style="margin-bottom: 20px;margin-top: 8px;">
|
||||
<i-select placeholder="请选择停车场" v-model="entity.parkManageId" style="width:350px">
|
||||
<i-option v-for="item in parkManageList" :value="item.id" :key="item.id">{{ item.name }}</i-option>
|
||||
</i-select>
|
||||
</div>
|
||||
<div class="demo-split">
|
||||
<split v-model="split1">
|
||||
<div slot="left" class="demo-split-pane">
|
||||
<video style="height:320px" id="video"></video>
|
||||
<canvas id="qr-canvas"></canvas>
|
||||
</div>
|
||||
<div slot="right" class="demo-split-pane">
|
||||
<img :src="licensePlate">
|
||||
</div>
|
||||
</split>
|
||||
</div>
|
||||
<div style="margin-top: 18px;text-align:center">
|
||||
<!-- <upload action="/car/distinguish/upload">-->
|
||||
<!-- <i-button icon="ios-cloud-upload-outline">上传车牌</i-button>-->
|
||||
<!-- </upload>-->
|
||||
<Upload
|
||||
multiple
|
||||
type="drag"
|
||||
action="/car/distinguish/upload"
|
||||
:data="uploadData"
|
||||
:before-upload="handleUpload"
|
||||
:on-success="handleSuccess"
|
||||
:format="['png','jpg','jpeg']"
|
||||
:max-size="2048">
|
||||
<div style="padding: 20px 0">
|
||||
<Icon type="ios-cloud-upload" size="52" style="color: #3399ff"></Icon>
|
||||
<p>点击或将车牌拖拽到这里上传</p>
|
||||
</div>
|
||||
</Upload>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
<div th:replace="common/foot :: foot(script)"></div>
|
||||
<script th:inline="none">
|
||||
layui.use(["okUtils", "okLayer"], function () {
|
||||
var okUtils = layui.okUtils;
|
||||
var okLayer = layui.okLayer;
|
||||
var vm = new Vue({
|
||||
el: '#app',
|
||||
data: function(){
|
||||
var that = this;
|
||||
return {
|
||||
entity:{},
|
||||
parkManageList:[],
|
||||
split1: 0.5,
|
||||
licensePlate:'',
|
||||
uploadData:{}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
listParkManage : function() {
|
||||
var that = this;
|
||||
okUtils.ajaxCloud({
|
||||
url:"/car/parkManage/select",
|
||||
success : function(result) {
|
||||
that.parkManageList = result.msg;
|
||||
}
|
||||
});
|
||||
},
|
||||
handleSuccess:function(response, file, fileList){
|
||||
if(response.code==0){
|
||||
vm.licensePlate = "/"+response.imagePath;
|
||||
okLayer.msg.greenTick(response.msg);
|
||||
}else{
|
||||
okLayer.msg.redCross(response.msg);
|
||||
}
|
||||
},
|
||||
handleUpload (file) {
|
||||
if(vm.entity.parkManageId==undefined){
|
||||
okLayer.msg.redCross("请选择停车场");
|
||||
return false;
|
||||
}
|
||||
vm.uploadData.id = vm.entity.parkManageId;
|
||||
}
|
||||
},
|
||||
mounted: function() {
|
||||
this.listParkManage();
|
||||
init();
|
||||
}
|
||||
})
|
||||
});
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
var canvas,context;
|
||||
function init(){
|
||||
var video = document.querySelector('video');
|
||||
canvas = document.getElementById('qr-canvas');
|
||||
context = canvas.getContext('2d');
|
||||
var mediaStreamTrack;
|
||||
|
||||
// 一堆兼容代码
|
||||
window.URL = (window.URL || window.webkitURL || window.mozURL || window.msURL);
|
||||
if (navigator.mediaDevices === undefined) {
|
||||
navigator.mediaDevices = {};
|
||||
}
|
||||
if (navigator.mediaDevices.getUserMedia === undefined) {
|
||||
navigator.mediaDevices.getUserMedia = function(constraints) {
|
||||
var getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
|
||||
if (!getUserMedia) {
|
||||
return Promise.reject(new Error('getUserMedia is not implemented in this browser'));
|
||||
}
|
||||
return new Promise(function(resolve, reject) {
|
||||
getUserMedia.call(navigator, constraints, resolve, reject);
|
||||
});
|
||||
}
|
||||
}
|
||||
openMedia();
|
||||
}
|
||||
|
||||
//摄像头调用配置
|
||||
var mediaOpts = {
|
||||
audio: false,
|
||||
video: true,
|
||||
video: { facingMode: "environment"} // 或者 "user"
|
||||
//video: { width: 50%, height: 350 }
|
||||
// video: { facingMode: { exact: "environment" } }// 或者 "user"
|
||||
}
|
||||
|
||||
// 回调
|
||||
function successFunc(stream) {
|
||||
mediaStreamTrack = stream;
|
||||
video = document.querySelector('video');
|
||||
if ("srcObject" in video) {
|
||||
video.srcObject = stream
|
||||
} else {
|
||||
video.src = window.URL && window.URL.createObjectURL(stream) || stream
|
||||
}
|
||||
video.play();
|
||||
}
|
||||
function errorFunc(err) {
|
||||
alert(err.name);
|
||||
}
|
||||
|
||||
// 正式启动摄像头
|
||||
function openMedia(){
|
||||
navigator.mediaDevices.getUserMedia(mediaOpts).then(successFunc).catch(errorFunc);
|
||||
}
|
||||
|
||||
//关闭摄像头
|
||||
function closeMedia(){
|
||||
mediaStreamTrack.getVideoTracks().forEach(function (track) {
|
||||
track.stop();
|
||||
context.clearRect(0, 0,context.width, context.height);//清除画布
|
||||
});
|
||||
}
|
||||
|
||||
//截取视频
|
||||
function drawMedia(){
|
||||
canvas.setAttribute("width", video.videoWidth);
|
||||
canvas.setAttribute("height", video.videoHeight);
|
||||
context.drawImage(video, 0, 0, video.videoWidth, video.videoHeight);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in new issue