| | |
| | | </div> |
| | | |
| | | <div v-if="Camera.analytics" class="flex-box" v-show="cameraType === 'camera'"> |
| | | <span class="label">分辨率</span> |
| | | <el-select |
| | | v-model="Camera.selectResolution" |
| | | placeholder="请选择" |
| | | size="mini" |
| | | style="width: 134px; |
| | | margin-left:10px;" |
| | | > |
| | | <el-option |
| | | v-for="item in Camera.resolutionOption" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | ></el-option> |
| | | </el-select> |
| | | <span |
| | | class="label" |
| | | >分辨率: {{(Camera.camearInfo.resolution_width == 0 || Camera.camearInfo.resolution_height == 0) ? '本机分辨率': `${Camera.camearInfo.resolution_width} * ${Camera.camearInfo.resolution_height}` }}</span> |
| | | </div> |
| | | |
| | | <div v-if="Camera.analytics" class="flex-box"> |
| | | <span class="label">智能计算节点: {{ Camera.runServerName}}</span> |
| | | <span class="label">SmartAI节点: {{ Camera.runServerName}}</span> |
| | | </div> |
| | | |
| | | <div v-if="Camera.analytics" class="flex-box"> |
| | |
| | | ></polygon-canvas> |
| | | </template> |
| | | <template v-else> |
| | | <div style="width:100%" v-loading='getStackFileLoading'> |
| | | <div style="width:100%" v-loading="getStackFileLoading"> |
| | | <swiper |
| | | ref="swiper" |
| | | :auto-update="true" |
| | |
| | | </div> |
| | | </swiper-slide> |
| | | </swiper> |
| | | <div class="swiper-local-prev" v-show="swipercanvasData.length>1" @click="prevClick"> |
| | | <div |
| | | class="swiper-local-prev" |
| | | v-show="swipercanvasData.length>1" |
| | | @click="prevClick" |
| | | > |
| | | <div class="icon-btn" slot="button-prev"> |
| | | <i class="iconfont iconzuo"></i> |
| | | </div> |
| | | </div> |
| | | <div class="swiper-local-next" v-show="swipercanvasData.length>1" @click="nextClick"> |
| | | <div |
| | | class="swiper-local-next" |
| | | v-show="swipercanvasData.length>1" |
| | | @click="nextClick" |
| | | > |
| | | <div class="icon-btn" slot="button-next"> |
| | | <i class="iconfont iconyou1"></i> |
| | | </div> |
| | |
| | | } |
| | | }, |
| | | computed: { |
| | | cameraType () { |
| | | cameraType() { |
| | | return this.TreeDataPool.treeActiveName === 'camera' ? "camera" : "dataStack" |
| | | } |
| | | }, |
| | | data () { |
| | | data() { |
| | | return { |
| | | mockSceneData: [], |
| | | loading: false, |
| | |
| | | stackFilesSize: 5, |
| | | }; |
| | | }, |
| | | mounted () { |
| | | mounted() { |
| | | this.mockAsync(); |
| | | this.PollData.statistics(); |
| | | |
| | | }, |
| | | watch: { |
| | | 'Camera.cameraId':{ |
| | | handler(n,o){ |
| | | 'Camera.cameraId': { |
| | | handler(n, o) { |
| | | if (n) { |
| | | if (this.TreeDataPool.treeActiveName == "dataStack") { |
| | | this.stackFilesPage = 1; |
| | | this.stackFilesSize = 5; |
| | | this.stackId = n; |
| | | if(this.stackId){ |
| | | if (this.stackId) { |
| | | // console.log('getStackFiles') |
| | | this.swipercanvasData = []; |
| | | this.getStackFiles() |
| | | } |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | prevClick(){ |
| | | console.log(this.swiperIndex) |
| | | console.log(this.$refs.swiper.swiper.activeIndex) |
| | | if(this.swiperIndex == 0){ |
| | | console.log('本次分页的第一条') |
| | | prevClick() { |
| | | // console.log(this.swiperIndex) |
| | | // console.log(this.$refs.swiper.swiper.activeIndex) |
| | | if (this.swiperIndex == 0) { |
| | | // console.log('本次分页的第一条') |
| | | //请求上一页 |
| | | if(this.stackFilesPage > 1){ |
| | | if (this.stackFilesPage > 1) { |
| | | this.stackFilesPage--; |
| | | this.getStackFiles(); |
| | | }else{ |
| | | this.getStackFiles(true); |
| | | } else { |
| | | this.$message({ |
| | | type:'info', |
| | | message:'当前已是第一页' |
| | | type: 'info', |
| | | message: '当前已是第一页' |
| | | }); |
| | | } |
| | | |
| | | |
| | | } |
| | | }, |
| | | nextClick(){ |
| | | console.log(this.swiperIndex) |
| | | console.log(this.$refs.swiper.swiper.activeIndex) |
| | | if(this.swiperIndex == this.swipercanvasData.length-1){ |
| | | console.log('最后一张,加载更多') |
| | | nextClick() { |
| | | if (this.swiperIndex == this.swipercanvasData.length - 1) { |
| | | // console.log('最后一张,加载更多') |
| | | //请求下一页 |
| | | this.stackFilesPage++; |
| | | this.getStackFiles(); |
| | | this.getStackFiles(true); |
| | | } |
| | | }, |
| | | getStackFiles () { |
| | | getStackFiles(onClick = false) { |
| | | this.getStackFileLoading = true; |
| | | let _this = this; |
| | | findAllFileByStackId({ name: '', stackId: this.stackId, page: this.stackFilesPage, size: this.stackFilesSize, type: 0 }).then(res => { |
| | | if (res && res.success ) { |
| | | if(res.data.dataList.length > 0){ |
| | | if (res && res.success) { |
| | | if (res.data.dataList.length > 0) { |
| | | this.swipercanvasData = []; |
| | | this.swipercanvasData = res.data.dataList.map(item => { |
| | | return { |
| | | name: item.name, |
| | | stackId: item.stack_id, |
| | | baseImg: item.type == 2 ? `/files/${item.identifier}.jpg` : item.snapshot_url, |
| | | baseImg: item.type == 2 ? `/files/${item.path.substr(item.path.lastIndexOf('/') + 1)}` : item.snapshot_url, |
| | | type: item.type, |
| | | id: item.id, |
| | | loading: false |
| | |
| | | }); |
| | | this.swiperIndex = 0; |
| | | this.$refs.swiper.swiper.activeIndex = 0; |
| | | |
| | | }else{ |
| | | console.log(this.swipercanvasData) |
| | | this.$message({ |
| | | type:'info', |
| | | message:'已无更多数据!' |
| | | }); |
| | | |
| | | } else { |
| | | if (onClick) { |
| | | this.$message({ |
| | | type: 'warning', |
| | | message: '已无更多数据!' |
| | | }); |
| | | } |
| | | } |
| | | }else{ |
| | | console.log(this.swipercanvasData) |
| | | } else { |
| | | // console.log(this.swipercanvasData) |
| | | this.$message({ |
| | | type:'error', |
| | | message:'数据请求失败,请稍后重试!' |
| | | type: 'error', |
| | | message: '数据请求失败,请稍后重试!' |
| | | }); |
| | | } |
| | | this.getStackFileLoading = false; |
| | | this.getStackFileLoading = false; |
| | | }).catch(e => { |
| | | console.log(e); |
| | | // console.log(e); |
| | | this.getStackFileLoading = false; |
| | | }); |
| | | }, |
| | | swiperSlideChange () { |
| | | swiperSlideChange() { |
| | | this.swiperIndex = this.$refs.swiper.swiper.activeIndex; |
| | | }, |
| | | mockAsync () { |
| | | mockAsync() { |
| | | setTimeout(() => { |
| | | this.mockSceneData = [ |
| | | { scenename: "name1", id: 1, icon: ["iconrenlianjiance", "icongetijingzhi"] }, |
| | |
| | | ]; |
| | | }, 3000) |
| | | }, |
| | | drawBaseImg () { |
| | | this.$refs.canvas.showModal(); |
| | | drawBaseImg() { |
| | | if (Array.isArray(this.$refs.canvas)) { |
| | | if (this.$refs.canvas.length > 0) { |
| | | this.$refs.canvas[0].showModal(); |
| | | } |
| | | } else { |
| | | this.$refs.canvas.showModal(); |
| | | } |
| | | }, |
| | | getCanvasData (data) { |
| | | getCanvasData(data) { |
| | | let polyon = { ...data }; |
| | | polyon.camera_id = this.Camera.cameraId; |
| | | savePolygon(polyon).then(rsp => { |
| | | this.Camera.getPolygon(); |
| | | this.Camera.getCameraTask(); |
| | | //this.Camera.getCameraTask(); |
| | | }); |
| | | }, |
| | | refresh (url) { |
| | | refresh(url) { |
| | | this.Camera.baseImg = url |
| | | }, |
| | | // 初始化摄像机信息,父组件调用 |
| | | async initCameraData (id) { |
| | | async initCameraData(id) { |
| | | this.Camera = new VideoRuleData(); |
| | | |
| | | if (id && id !== "") { |
| | | this.loading = false; |
| | | this.Camera.cameraId = id; |
| | | await this.Camera.update(); |
| | | debugger |
| | | |
| | | } |
| | | |
| | | this.$refs.timeSlider.activeTab = this.VideoManageData.TimeRules[0].id; |
| | |
| | | |
| | | }, |
| | | |
| | | saveSceneRule (groupRule) { |
| | | saveSceneRule(groupRule) { |
| | | const payload = { ...groupRule } |
| | | payload.cameraIds = [this.Camera.cameraId]; |
| | | let _this = this; |
| | |
| | | message: "策略保存成功!" |
| | | }); |
| | | //刷新左侧树 |
| | | debugger |
| | | |
| | | _this.$root.$children[0].$children[0].querySearchAsync('camera') |
| | | |
| | | } |
| | | }); |
| | | }, |
| | | delScenRule () { |
| | | delScenRule() { |
| | | this.Camera.update(); |
| | | }, |
| | | changeLoading (params) { |
| | | changeLoading(params) { |
| | | this.loading = params |
| | | // console.log(this.loading,'changeLoading',params) |
| | | }, |
| | | //是否进行视频分析处理 |
| | | pollEnable (row) { |
| | | pollEnable(row) { |
| | | let val = 0 |
| | | if (row) { |
| | | if (this.PollData.RealTimeSum < this.PollData.channelTotal) { |
| | |
| | | this.PollData.statisticTaskInfo(); |
| | | }, |
| | | //实时、轮询切换 |
| | | changePoll (row) { |
| | | changePoll(row) { |
| | | //判断是新增还是更新 |
| | | debugger |
| | | if (this.Camera.cameraId && this.Camera.cameraId !== undefined) { |
| | | if (this.PollData.RealTimeSum < this.PollData.channelTotal) { |
| | | if (row.value) { |
| | |
| | | } |
| | | }, |
| | | //复制 |
| | | ctrlC () { |
| | | ctrlC() { |
| | | this.TreeDataPool.ctrlCameraId = this.Camera.cameraId; |
| | | this.TreeDataPool.ctrlCameraName = this.Camera.cameraName; |
| | | this.$notify({ |
| | |
| | | message: "复制算法成功!" |
| | | }) |
| | | }, |
| | | ctrlV () { |
| | | ctrlV() { |
| | | if (this.Camera.cameraId === this.TreeDataPool.ctrlCameraId) { |
| | | this.$notify({ |
| | | type: "warning", |
| | |
| | | }; |
| | | </script> |
| | | <style lang="scss"> |
| | | .el-message--info .el-message__content{ |
| | | color: #999; |
| | | .el-message--info .el-message__content { |
| | | color: #999 !important; |
| | | } |
| | | .swiper-container { |
| | | margin-left: auto; |
| | |
| | | } |
| | | } |
| | | .el-loading-spinner { |
| | | background: url('/images/cameraAccess/loading.gif') no-repeat; |
| | | background: url("/images/cameraAccess/loading.gif") no-repeat; |
| | | top: 50%; |
| | | margin-top: -21px; |
| | | width: calc(100% - 260px) !important; |