| | |
| | | <template> |
| | | <div class="screen-container"> |
| | | <!-- <screen-title></screen-title> --> |
| | | <v-scale-screen width="1920" height="1080" :autoScale="true" :delay="0" class="screen"> |
| | | <!-- <screen-wrapper></screen-wrapper> --> |
| | | <NewPage></NewPage> |
| | | </v-scale-screen> |
| | | </div> |
| | | <div class="container" ref="contaner"> |
| | | <header> |
| | | <i @click="returnPath" class="el-icon-s-home" style="color: #00b4ff;position: absolute;font-size: 24px;left: 98%;top: 15%"></i> |
| | | <img src="@/assets/images/header-bg.png"/> |
| | | </header> |
| | | <div class="main-contaner"> |
| | | <div class="data-statistics-content"> |
| | | <img src="@/assets/images/workOrder-title.png" class="title"/> |
| | | <div class="main-left-container"> |
| | | <div class="work-order-container"> |
| | | <img |
| | | src="@/assets/images/subheading1.png" |
| | | class="subheading-title" |
| | | /> |
| | | <div class="statistics-container"> |
| | | <div |
| | | class="item-statistics-container" |
| | | v-for="(item, index) in statistics" |
| | | :key="index" |
| | | > |
| | | <itemSubheading :isData="item"></itemSubheading> |
| | | </div> |
| | | </div> |
| | | <img |
| | | src="@/assets/images/decorate-border.png" |
| | | class="decorate-border" |
| | | /> |
| | | </div> |
| | | |
| | | <div class="histogram-container"> |
| | | <img |
| | | src="@/assets/images/subheading1.png" |
| | | class="subheading-title" |
| | | /> |
| | | <div class="statistics-container"> |
| | | <div class="DrawLine-content"> |
| | | <!-- <div style="width: 100%; height: 100%" ref="myDrawLine"></div> --> |
| | | <lineChart :workOrderRegion=workOrderRegion></lineChart> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="map-container" ref="isMap"> |
| | | <img src="@/assets/map/texture/rotating-point2.png" alt="Rotating Image" class="rotating-image"> |
| | | <img src="@/assets/map/texture/rotatingAperture.png" alt="Rotating Image" class="rotating-image-in"> |
| | | <mapApp @clickMap="getDeptId" :geoCoordinates=scoreData :platformData = platformData></mapApp> |
| | | <div class="btn-container"> |
| | | <img src="@/assets/images/btn-bg.png" class="bg-img"/> |
| | | <div class="btn-list" v-model="activerBtnType"> |
| | | <img |
| | | :src="activerBtnType === item.id ? item.bgActiver : item.bg" |
| | | v-for="item in btnList" |
| | | :key="item.id" |
| | | @click="tabChange(item.id)" |
| | | /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="data-statistics-content"> |
| | | <div class="facility-container"> |
| | | <img src="@/assets/images/facility-title.png" class="title"/> |
| | | <div class="facility-content"> |
| | | <div class="item-facility-data"> |
| | | <img |
| | | src="@/assets/images/facility-title-3.png" |
| | | class="item-facility-icon" |
| | | /> |
| | | <ul> |
| | | <li v-for="(item, index) in facilityData.video" :key="index"> |
| | | <div class="value"> |
| | | <animate-number from="0" :to="item.value" :key="item.value"></animate-number> |
| | | </div> |
| | | <div class="title">{{ item.title }}</div> |
| | | </li> |
| | | </ul> |
| | | </div> |
| | | <div class="item-facility-data"> |
| | | <img |
| | | src="@/assets/images/facility-title-1.png" |
| | | class="item-facility-icon" |
| | | /> |
| | | <ul> |
| | | <li v-for="(item, index) in facilityData.car" :key="index"> |
| | | <!-- <div class="value">{{ item.value ? item.value : "-" }}</div>--> |
| | | <div class="value"><animate-number from="0" :to="item.value" :key="item.value"></animate-number></div> |
| | | <div class="title">{{ item.title }}</div> |
| | | </li> |
| | | </ul> |
| | | </div> |
| | | <div class="item-facility-data"> |
| | | <img |
| | | src="@/assets/images/facility-title-2.png" |
| | | class="item-facility-icon" |
| | | /> |
| | | <ul> |
| | | <li |
| | | v-for="(item, index) in facilityData.face" |
| | | :key="index" |
| | | > |
| | | <!-- <div class="value">{{ item.value ? item.value : "-" }}</div>--> |
| | | <div class="value"><animate-number from="0" :to="item.value" :key="item.value"></animate-number></div> |
| | | <div class="title">{{ item.title }}</div> |
| | | </li> |
| | | </ul> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="normal-container"> |
| | | <img src="@/assets/images/normal-title.png" class="title"/> |
| | | <div class="normal-statistics-content"> |
| | | <ul class="list-title-container"> |
| | | <li>地区</li> |
| | | <li>视频</li> |
| | | <li>车辆</li> |
| | | <li>人脸</li> |
| | | </ul> |
| | | <div class="list-content"> |
| | | <div class="list-content-to is-scroll-bar"> |
| | | <ul |
| | | class="item-list" |
| | | v-for="(item, index) in facilityNormal" |
| | | :key="index" |
| | | > |
| | | <li class="name">{{ item.area }}</li> |
| | | <li><animate-number from="0" :to="item.videoRate" :key="item.videoRate"></animate-number>%</li> |
| | | <li><animate-number from="0" :to="item.carRate" :key="item.carRate"></animate-number>%</li> |
| | | <li><animate-number from="0" :to="item.faceRate" :key="item.faceRate"></animate-number>%</li> |
| | | <!-- <li>{{ item.videoRate ? item.videoRate + '%' : '--' }}</li>--> |
| | | <!-- <li>{{ item.carRate ? item.carRate + '%' : '--' }}</li>--> |
| | | <!-- <li>{{ item.faceRate ? item.faceRate + '%' : '--' }}</li>--> |
| | | </ul> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <img src="@/assets/images/video-title.png" class="video-title"/> |
| | | </div> |
| | | |
| | | <footer> |
| | | <img src="@/assets/images/footer-title-bg.png" class="footer-title"/> |
| | | <div class="footer-container"> |
| | | <div class="footer-statistics-container"> |
| | | <div class="face-container"> |
| | | <div |
| | | class="item-face-container" |
| | | v-for="(item, index) in faceList" |
| | | :key="index" |
| | | :style="item.style" |
| | | > |
| | | <div class="proportion"> |
| | | <img src="@/assets/images/face-num-bg.png"/> |
| | | <div class="value"><animate-number from="0" :to="item.value" :key="item.value"></animate-number>%</div> |
| | | </div> |
| | | <div class="title">{{ item.name }}</div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="video-container"> |
| | | <div |
| | | class="item-video-data" |
| | | v-for="(item, index) in videoList" |
| | | :key="index" |
| | | > |
| | | <div class="video-data"> |
| | | <div class="proportion"><animate-number from="0" :to="item.value" :key="item.value"></animate-number>%</div> |
| | | </div> |
| | | <div class="item-video-title">{{ item.name }}</div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="car-container"> |
| | | <div |
| | | class="item-car-container" |
| | | v-for="(item, index) in carList" |
| | | :key="index" |
| | | :style="item.style" |
| | | > |
| | | {{ item.name }} <span><animate-number from="0" :to="item.value" :key="item.value"></animate-number>%</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </footer> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import ScreenTitle from './components/screen-title/index.vue'; |
| | | import ScreenWrapper from './components/screen-wrapper/index.vue'; |
| | | import NewPage from './newPage/index.vue' |
| | | import itemSubheading from '../screen/components/subheading.vue' // 环形统计图 |
| | | import lineChart from '../screen/components/lineChart.vue' // 折线统计图 |
| | | import mapApp from '../screen/components/map3.vue' // 地图 |
| | | import { |
| | | getDepartmentData, |
| | | getDeviceData, |
| | | getWorkOrderData, |
| | | getWorkOrderRegion, |
| | | getNormalRate, |
| | | checkFace, |
| | | checkCar, |
| | | checkVideo, |
| | | checkScore, |
| | | getPlatform |
| | | } from "@/api/newpage"; |
| | | |
| | | export default { |
| | | name: 'App', |
| | | components: { |
| | | ScreenTitle, |
| | | ScreenWrapper, |
| | | NewPage, |
| | | }, |
| | | name: 'examineApp', |
| | | components: {mapApp, itemSubheading, lineChart}, |
| | | data() { |
| | | return { |
| | | deptList: [], |
| | | deptId: '', |
| | | carList: [], |
| | | videoList: [], |
| | | faceList: [], |
| | | workOrderData: [], |
| | | workOrderRegion: [], |
| | | platformData: null, |
| | | scoreData: { |
| | | 自流井区: [ |
| | | { |
| | | value: 0, |
| | | name: '得分' |
| | | } |
| | | ], |
| | | 高新区: [ |
| | | { |
| | | value: 0, |
| | | name: '得分' |
| | | } |
| | | ], |
| | | 大安区: [ |
| | | { |
| | | value: 0, |
| | | name: '得分' |
| | | } |
| | | ], |
| | | 沿滩区: [ |
| | | { |
| | | value: 0, |
| | | name: '得分' |
| | | } |
| | | ], |
| | | 贡井区: [ |
| | | { |
| | | value: 0, |
| | | name: '得分' |
| | | } |
| | | ], |
| | | 荣县: [ |
| | | { |
| | | value: 0, |
| | | name: '得分' |
| | | } |
| | | ], |
| | | 富顺县: [ |
| | | { |
| | | value: 0, |
| | | name: '得分' |
| | | } |
| | | ] |
| | | }, |
| | | // 设备数据 |
| | | facilityData: { |
| | | video: [], |
| | | car: [], |
| | | face: [] |
| | | }, |
| | | // 设备正常率 |
| | | facilityNormal: [], |
| | | // 人脸考核 |
| | | faceData: [], |
| | | // 视频考核 |
| | | videoData: [], |
| | | // 车辆考核 |
| | | carData: [], |
| | | // 默认选中按钮 1 省厅 2 区县 3 公安 |
| | | btnList: [ |
| | | { |
| | | id: '1', |
| | | bg: require('@/assets/images/st-btn-1.png'), |
| | | bgActiver: require('@/assets/images/st-btn-2.png') |
| | | }, |
| | | { |
| | | id: '2', |
| | | bg: require('@/assets/images/qx-btn-1.png'), |
| | | bgActiver: require('@/assets/images/qx-btn-2.png') |
| | | }, |
| | | { |
| | | id: '3', |
| | | bg: require('@/assets/images/ga-btn-1.png'), |
| | | bgActiver: require('@/assets/images/ga-btn-2.png') |
| | | } |
| | | ], |
| | | activerBtnType: '2', |
| | | statistics: [], |
| | | isFullScreen: false |
| | | } |
| | | }, |
| | | mounted() { |
| | | // 获取部门 |
| | | getDepartmentData() |
| | | .then((res) => { |
| | | this.deptList = res.data; |
| | | }) |
| | | .catch((err) => { |
| | | }); |
| | | // 查询数据 |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | getDeptId(deptName) { |
| | | let deptId = this.deptList.find(item => item.area === deptName).deptId; |
| | | if (deptId === this.deptId) { |
| | | this.deptId = ''; |
| | | } else { |
| | | this.deptId = deptId |
| | | } |
| | | this.getData(); |
| | | }, |
| | | getData() { |
| | | getDeviceData(this.activerBtnType, this.deptId) |
| | | .then((res) => { |
| | | this.facilityData = res.data; |
| | | }) |
| | | .catch((err) => { |
| | | }); |
| | | getWorkOrderData(this.activerBtnType, this.deptId) |
| | | .then((res) => { |
| | | this.workOrderData = res.data; |
| | | }) |
| | | .catch((err) => { |
| | | }); |
| | | getWorkOrderRegion(this.activerBtnType, this.deptId) |
| | | .then((res) => { |
| | | this.workOrderRegion = res.data; |
| | | }) |
| | | .catch((err) => { |
| | | }); |
| | | getNormalRate(this.activerBtnType, this.deptId) |
| | | .then((res) => { |
| | | this.facilityNormal = res.data; |
| | | }) |
| | | .catch((err) => { |
| | | }); |
| | | checkCar(this.activerBtnType, this.deptId) |
| | | .then((res) => { |
| | | this.carData = res.data; |
| | | }) |
| | | .catch((err) => { |
| | | }); |
| | | checkFace(this.activerBtnType, this.deptId) |
| | | .then((res) => { |
| | | this.faceData = res.data; |
| | | }) |
| | | .catch((err) => { |
| | | }); |
| | | checkVideo(this.activerBtnType, this.deptId) |
| | | .then((res) => { |
| | | this.videoData = res.data; |
| | | }) |
| | | .catch((err) => { |
| | | }); |
| | | checkScore(this.activerBtnType, this.deptId) |
| | | .then((res) => { |
| | | if(res.data && Object.keys(res.data).length > 0){ |
| | | this.scoreData = res.data; |
| | | } |
| | | }) |
| | | .catch((err) => { |
| | | }); |
| | | getPlatform(this.activerBtnType, this.deptId) |
| | | .then((res) => { |
| | | if(res.data && Object.keys(res.data).length > 0){ |
| | | this.platformData = res.data; |
| | | } |
| | | }) |
| | | .catch((err) => { |
| | | }); |
| | | }, |
| | | returnPath() { |
| | | this.$router.push("/index"); |
| | | }, |
| | | tabChange(id) { |
| | | this.activerBtnType = id |
| | | this.getData(); |
| | | }, |
| | | // formatter: function (num) { |
| | | // return num.toFixed(2) |
| | | // }, |
| | | }, |
| | | watch: { |
| | | workOrderData() { |
| | | this.statistics = []; |
| | | let item = {value1: 0, value2: 0, title: "", color: ""} |
| | | item.value1 = this.workOrderData.totalNum |
| | | item.value2 = 0 |
| | | item.color = '#e4b54f' |
| | | item.title = '工单总数' |
| | | this.statistics.push(item) |
| | | |
| | | let item1 = {value1: 0, value2: 0, title: "", color: ""} |
| | | item1.value1 = this.workOrderData.doneNum |
| | | item1.value2 = this.workOrderData.totalNum - this.workOrderData.doneNum |
| | | item1.color = '#5cff9a' |
| | | item1.title = '已处理' |
| | | this.statistics.push(item1) |
| | | |
| | | let item2 = {value1: 0, value2: 0, title: "", color: ""} |
| | | item2.value1 = this.workOrderData.todoNum |
| | | item2.value2 = this.workOrderData.totalNum - this.workOrderData.todoNum |
| | | item2.color = '#ff7b72' |
| | | item2.title = '未处理' |
| | | this.statistics.push(item2) |
| | | }, |
| | | |
| | | videoData() { |
| | | this.videoList = []; |
| | | let item = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item.value = this.videoData.platformOnline |
| | | item.name = "平台在线率" |
| | | item.id = 1 |
| | | item.routerUrl = "" |
| | | this.videoList.push(item) |
| | | |
| | | let item1 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item1.value = this.videoData.monitorQualification |
| | | item1.name = "一机一档合格率" |
| | | item1.id = 2 |
| | | item1.routerUrl = "" |
| | | this.videoList.push(item1) |
| | | |
| | | let item2 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item2.value = this.videoData.monitorRegistration |
| | | item2.name = "一机一档注册率" |
| | | item2.id = 3 |
| | | item2.routerUrl = "" |
| | | this.videoList.push(item2) |
| | | |
| | | let item3 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item3.value = this.videoData.archivesRate |
| | | item3.name = "档案考核比" |
| | | item3.id = 4 |
| | | item3.routerUrl = "" |
| | | this.videoList.push(item3) |
| | | |
| | | let item4 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item4.value = this.videoData.siteOnline |
| | | item4.name = "点位在线率" |
| | | item4.id = 5 |
| | | item4.routerUrl = "" |
| | | this.videoList.push(item4) |
| | | |
| | | let item5 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item5.value = this.videoData.videoAvailable |
| | | item5.name = "录像可用率" |
| | | item5.id = 6 |
| | | item5.routerUrl = "" |
| | | this.videoList.push(item5) |
| | | |
| | | let item6 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item6.value = this.videoData.ministrySiteOnline |
| | | item6.name = "部级点位在线率" |
| | | item6.id = 7 |
| | | item6.routerUrl = "" |
| | | this.videoList.push(item6) |
| | | |
| | | let item7 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item7.value = this.videoData.ministryVideoAvailable |
| | | item7.name = "部级巡检录像可用率" |
| | | item7.id = 8 |
| | | item7.routerUrl = "" |
| | | this.videoList.push(item7) |
| | | |
| | | let item8 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item8.value = this.videoData.keySiteOnline |
| | | item8.name = "重点点位在线率" |
| | | item8.id = 9 |
| | | item8.routerUrl = "" |
| | | this.videoList.push(item8) |
| | | |
| | | let item9 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item9.value = this.videoData.keyVideoAvailable |
| | | item9.name = "重点点位录象可用率" |
| | | item9.id = 10 |
| | | item9.routerUrl = "" |
| | | this.videoList.push(item9) |
| | | |
| | | let item10 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item10.value = this.videoData.keyAnnotationAccuracy |
| | | item10.name = "重点点位标注正确率" |
| | | item10.id = 11 |
| | | item10.routerUrl = "" |
| | | this.videoList.push(item10) |
| | | |
| | | let item11 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item11.value = this.videoData.keyTimingAccuracy |
| | | item11.name = "重点点位按时正确率" |
| | | item11.id = 12 |
| | | item11.routerUrl = "" |
| | | this.videoList.push(item11) |
| | | |
| | | let item12 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item12.value = this.videoData.keyCommandImageOnline |
| | | item12.name = "重点指挥图像在线率" |
| | | item12.id = 13 |
| | | item12.routerUrl = "" |
| | | this.videoList.push(item12) |
| | | |
| | | let item13 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item13.value = this.videoData.imageResourceSecurity |
| | | item13.name = "图像资源安全管理" |
| | | item13.id = 14 |
| | | item13.routerUrl = "" |
| | | this.videoList.push(item13) |
| | | }, |
| | | carData() { |
| | | this.carList = []; |
| | | let item = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item.value = this.carData.viewConnectStability |
| | | item.name = "视图库对接稳定性" |
| | | item.id = 1 |
| | | item.routerUrl = "" |
| | | item.style = { |
| | | top: '65%', |
| | | left: '70%' |
| | | } |
| | | this.carList.push(item) |
| | | |
| | | let item1 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item1.value = this.carData.siteOnline |
| | | item1.name = "点位在线率" |
| | | item1.id = 2 |
| | | item1.routerUrl = "" |
| | | item1.style = { |
| | | top: '46%', |
| | | left: '66%' |
| | | } |
| | | this.carList.push(item1) |
| | | |
| | | let item2 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item2.value = this.carData.deviceDirectoryConsistent |
| | | item2.name = "联网卡口目录一致率" |
| | | item2.id = 3 |
| | | item2.routerUrl = "" |
| | | item2.style = { |
| | | top: '26%', |
| | | left: '5%' |
| | | } |
| | | this.carList.push(item2) |
| | | |
| | | let item3 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item3.value = this.carData.vehicleInformationCollectionAccuracy |
| | | item3.name = "信息采集准确率" |
| | | item3.id = 4 |
| | | item3.routerUrl = "" |
| | | item3.style = { |
| | | top: '26%', |
| | | left: '63%' |
| | | } |
| | | this.carList.push(item3) |
| | | |
| | | let item4 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item4.value = this.carData.vehicleCaptureIntegrity |
| | | item4.name = "抓拍数据完整性" |
| | | item4.id = 5 |
| | | item4.routerUrl = "" |
| | | item4.style = { |
| | | top: '46%', |
| | | left: '12%' |
| | | } |
| | | this.carList.push(item4) |
| | | |
| | | let item5 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item5.value = this.carData.vehicleCaptureAccuracy |
| | | item5.name = "抓拍数据准确性" |
| | | item5.id = 6 |
| | | item5.routerUrl = "" |
| | | item5.style = { |
| | | top: '7%', |
| | | left: '59.2%' |
| | | } |
| | | this.carList.push(item5) |
| | | |
| | | let item6 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item6.value = this.carData.vehicleTimingAccuracy |
| | | item6.name = "时钟准确性" |
| | | item6.id = 7 |
| | | item6.routerUrl = "" |
| | | item6.style = { |
| | | top: '65%', |
| | | left: '13%' |
| | | } |
| | | this.carList.push(item6) |
| | | |
| | | let item7 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item7.value = this.carData.vehicleUploadTimeliness |
| | | item7.name = "抓拍数据上传及时性" |
| | | item7.id = 8 |
| | | item7.routerUrl = "" |
| | | item7.style = { |
| | | top: '83%', |
| | | left: '59.5%' |
| | | } |
| | | this.carList.push(item7) |
| | | |
| | | let item8 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item8.value = this.carData.vehicleUrlAvailability |
| | | item8.name = "url可用性" |
| | | item8.id = 9 |
| | | item8.routerUrl = "" |
| | | item8.style = { |
| | | top: '83%', |
| | | left: '18.5%' |
| | | } |
| | | this.carList.push(item8) |
| | | |
| | | let item9 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item9.value = this.carData.vehiclePictureAvailability |
| | | item9.name = "抓拍数据大图可用性" |
| | | item9.id = 10 |
| | | item9.style = { |
| | | top: '7%', |
| | | left: '15%' |
| | | } |
| | | item9.routerUrl = "" |
| | | this.carList.push(item9) |
| | | }, |
| | | faceData() { |
| | | this.faceList = []; |
| | | let item = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item.value = this.faceData.viewConnectStability |
| | | item.name = "视图库对接稳定性" |
| | | item.id = 1 |
| | | item.routerUrl = "" |
| | | item.style = { |
| | | top: '13%', |
| | | left: '2%' |
| | | } |
| | | this.faceList.push(item) |
| | | |
| | | let item1 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item1.value = this.faceData.siteOnline |
| | | item1.name = "点位在线率" |
| | | item1.id = 2 |
| | | item1.routerUrl = "" |
| | | item1.style = { |
| | | top: '23%', |
| | | left: '19%' |
| | | } |
| | | this.faceList.push(item1) |
| | | |
| | | let item2 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item2.value = this.faceData.deviceDirectoryConsistent |
| | | item2.name = "目录一致率" |
| | | item2.id = 3 |
| | | item2.routerUrl = "" |
| | | item2.style = { |
| | | bottom: '18%', |
| | | right: '2%' |
| | | } |
| | | this.faceList.push(item2) |
| | | |
| | | let item3 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item3.value = this.faceData.faceInformationCollectionAccuracy |
| | | item3.name = "信息采集准确率" |
| | | item3.id = 4 |
| | | item3.routerUrl = "" |
| | | item3.style = { |
| | | bottom: '2%', |
| | | left: '19%' |
| | | } |
| | | this.faceList.push(item3) |
| | | |
| | | let item4 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item4.value = this.faceData.facePictureQualification |
| | | item4.name = "抓拍图片合格性" |
| | | item4.id = 5 |
| | | item4.routerUrl = "" |
| | | item4.style = { |
| | | top: '23%', |
| | | right: '19%' |
| | | } |
| | | this.faceList.push(item4) |
| | | |
| | | let item5 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item5.value = this.faceData.faceTimingAccuracy |
| | | item5.name = "抓拍图片时钟准确性" |
| | | item5.id = 6 |
| | | item5.routerUrl = "" |
| | | item5.style = { |
| | | top: '13%', |
| | | right: '2%' |
| | | } |
| | | this.faceList.push(item5) |
| | | |
| | | let item6 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item6.value = this.faceData.faceUploadTimeliness |
| | | item6.name = "抓拍数据上传及时性" |
| | | item6.id = 7 |
| | | item6.routerUrl = "" |
| | | item6.style = { |
| | | bottom: '2%', |
| | | right: '19%' |
| | | } |
| | | this.faceList.push(item6) |
| | | |
| | | let item7 = {value: 0, name: "", id: 0, routerUrl: ""} |
| | | item7.value = this.faceData.facePictureAvailability |
| | | item7.name = "抓拍数据大图可用性" |
| | | item7.id = 8 |
| | | item7.routerUrl = "" |
| | | item7.style = { |
| | | bottom: '18%', |
| | | left: '2%' |
| | | } |
| | | this.faceList.push(item7) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .screen-container { |
| | | user-select: none; |
| | | -webkit-user-select: none; |
| | | } |
| | | .screen { |
| | | background-color: #033c76 !important; |
| | | //background: url('../../assets/images/screen/pageBg1.jpg') !important; |
| | | //background-size: cover !important; |
| | | //background-repeat: no-repeat !important; |
| | | //background-position: center center !important; |
| | | .container { |
| | | width: 100vw; |
| | | height: 100vh; |
| | | // min-width: 1919px; |
| | | background-image: url("../../assets/images/background-img.jpg"); |
| | | background-color: #fff; |
| | | background-repeat: no-repeat; |
| | | background-size: 100% 100%; |
| | | background-position: center; |
| | | display: flex; |
| | | flex-direction: column; |
| | | overflow: hidden; |
| | | position: relative; |
| | | |
| | | header { |
| | | position: relative; |
| | | z-index: 4; |
| | | |
| | | img { |
| | | width: 100%; |
| | | display: block; |
| | | } |
| | | } |
| | | |
| | | .main-contaner { |
| | | flex: 1; |
| | | width: 100%; |
| | | height: 0; |
| | | display: flex; |
| | | flex-direction: row; |
| | | margin-top: -2%; |
| | | position: relative; |
| | | |
| | | .data-statistics-content { |
| | | width: 20.833333%; |
| | | padding-left: 1%; |
| | | padding-right: 1%; |
| | | padding-top: 0.5%; |
| | | box-sizing: border-box; |
| | | height: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .title { |
| | | width: 100%; |
| | | flex-shrink: 0; |
| | | flex-grow: 0; |
| | | display: block; |
| | | } |
| | | |
| | | .main-left-container { |
| | | position: relative; |
| | | height: 100%; |
| | | border-bottom: 1px solid #3e97e4; |
| | | border-left: 1px solid #3e97e4; |
| | | padding: 4% 0 4% 4%; |
| | | box-sizing: border-box; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | &::after { |
| | | width: 2px; |
| | | height: 20px; |
| | | content: ""; |
| | | position: absolute; |
| | | left: -6px; |
| | | top: -18px; |
| | | background-color: #3e97e4; |
| | | transform: rotate(-30deg); |
| | | } |
| | | |
| | | &::before { |
| | | width: 43px; |
| | | height: 40px; |
| | | content: ""; |
| | | position: absolute; |
| | | background-image: url("../../assets/images/border-l-icon.png"); |
| | | bottom: 0; |
| | | left: 0; |
| | | } |
| | | |
| | | .work-order-container { |
| | | height: 40%; |
| | | flex-shrink: 0; |
| | | flex-grow: 0; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .subheading-title { |
| | | width: 97%; |
| | | display: block; |
| | | flex-shrink: 0; |
| | | flex-grow: 0; |
| | | } |
| | | |
| | | .statistics-container { |
| | | display: flex; |
| | | flex-direction: row; |
| | | align-items: center; |
| | | flex: 1; |
| | | margin: 0 -5px; |
| | | |
| | | .item-statistics-container { |
| | | width: calc(33.33% - 10px); |
| | | margin: 0 5px; |
| | | } |
| | | } |
| | | |
| | | .decorate-border { |
| | | width: 100%; |
| | | display: block; |
| | | } |
| | | } |
| | | |
| | | .histogram-container { |
| | | padding-top: 5%; |
| | | box-sizing: border-box; |
| | | height: 60%; |
| | | flex-shrink: 0; |
| | | flex-grow: 0; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .subheading-title { |
| | | width: 97.3%; |
| | | display: block; |
| | | flex-shrink: 0; |
| | | flex-grow: 0; |
| | | } |
| | | |
| | | .statistics-container { |
| | | flex: 1; |
| | | position: relative; |
| | | |
| | | .DrawLine-content { |
| | | position: absolute; |
| | | width: 100%; |
| | | height: 100%; |
| | | left: 0; |
| | | right: 0; |
| | | top: 0; |
| | | bottom: 0; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .facility-container { |
| | | height: 45.9754434%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | flex-shrink: 0; |
| | | flex-grow: 0; |
| | | |
| | | .title { |
| | | width: 100%; |
| | | flex-shrink: 0; |
| | | flex-grow: 0; |
| | | display: block; |
| | | } |
| | | |
| | | .facility-content { |
| | | flex: 1; |
| | | position: relative; |
| | | border-bottom: 1px solid #3e97e4; |
| | | border-right: 1px solid #3e97e4; |
| | | display: flex; |
| | | padding-top: 4%; |
| | | flex-direction: row; |
| | | overflow: hidden; |
| | | |
| | | &::after { |
| | | width: 2px; |
| | | height: 20px; |
| | | content: ""; |
| | | position: absolute; |
| | | right: -6px; |
| | | top: -18px; |
| | | background-color: #3e97e4; |
| | | transform: rotate(30deg); |
| | | } |
| | | |
| | | &::before { |
| | | width: 43px; |
| | | height: 40px; |
| | | content: ""; |
| | | position: absolute; |
| | | background-image: url("../../assets/images/border-icon.png"); |
| | | bottom: 0; |
| | | right: 0; |
| | | } |
| | | |
| | | .item-facility-data { |
| | | width: 33.33%; |
| | | flex-shrink: 0; |
| | | flex-grow: 0; |
| | | background-image: url("../../assets/images/item-facility.png"); |
| | | background-size: 100% auto; |
| | | background-repeat: no-repeat; |
| | | display: flex; |
| | | flex-direction: column; |
| | | //justify-content: center; |
| | | //align-items: center; |
| | | |
| | | .item-facility-icon { |
| | | margin: 0 auto; |
| | | margin-top: 10%; |
| | | width: 73%; |
| | | display: block; |
| | | flex-shrink: 0; |
| | | flex-grow: 0; |
| | | } |
| | | |
| | | ul { |
| | | flex: 1; |
| | | box-sizing: border-box; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-around; |
| | | text-align: center; |
| | | list-style-type: none; |
| | | //font-size: 14px; |
| | | //padding-left: 0; |
| | | |
| | | li:nth-child(1) { |
| | | .value { |
| | | color: #e4b54f; |
| | | } |
| | | |
| | | .title { |
| | | color: #dcf8ff; |
| | | } |
| | | } |
| | | |
| | | li:nth-child(2) { |
| | | .value { |
| | | color: #5cff9a; |
| | | } |
| | | |
| | | .title { |
| | | color: #dcf8ff; |
| | | } |
| | | } |
| | | |
| | | li:nth-child(3) { |
| | | .value { |
| | | color: #ff7b72; |
| | | } |
| | | |
| | | .title { |
| | | color: #dcf8ff; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .normal-container { |
| | | margin-top: 2%; |
| | | flex: 1; |
| | | display: flex; |
| | | flex-direction: column; |
| | | height: 0; |
| | | //overflow: hidden; |
| | | |
| | | .title { |
| | | width: 100%; |
| | | flex-shrink: 0; |
| | | flex-grow: 0; |
| | | display: block; |
| | | } |
| | | |
| | | .normal-statistics-content { |
| | | flex: 1; |
| | | position: relative; |
| | | border-bottom: 1px solid #3e97e4; |
| | | border-right: 1px solid #3e97e4; |
| | | padding: 0 4% 4% 0; |
| | | box-sizing: border-box; |
| | | height: 0; |
| | | |
| | | &::after { |
| | | width: 2px; |
| | | height: 20px; |
| | | content: ""; |
| | | position: absolute; |
| | | right: -6px; |
| | | top: -18px; |
| | | background-color: #3e97e4; |
| | | transform: rotate(30deg); |
| | | } |
| | | |
| | | &::before { |
| | | width: 43px; |
| | | height: 40px; |
| | | content: ""; |
| | | position: absolute; |
| | | background-image: url("../../assets/images/border-icon.png"); |
| | | bottom: 0; |
| | | right: 0; |
| | | } |
| | | |
| | | .list-title-container { |
| | | width: 100%; |
| | | //height: 45px; |
| | | //margin: 4px 0 0 0; |
| | | //line-height: 45px; |
| | | height: 4.17vh; |
| | | line-height: 4.17vh; |
| | | list-style-type: none; |
| | | display: flex; |
| | | flex-direction: row; |
| | | background-color: #09316b; |
| | | box-shadow: inset 0 0 16px rgba(25, 99, 210, 0.1); |
| | | flex-shrink: 0; |
| | | flex-grow: 0; |
| | | position: relative; |
| | | |
| | | &::after { |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | content: ""; |
| | | width: 15px; |
| | | height: 15px; |
| | | background-image: url("../../assets/images/list-t-l-icon.png"); |
| | | } |
| | | |
| | | &::before { |
| | | position: absolute; |
| | | top: 0; |
| | | right: 0; |
| | | content: ""; |
| | | width: 15px; |
| | | height: 15px; |
| | | background-image: url("../../assets/images/list-t-r-icon.png"); |
| | | } |
| | | |
| | | li { |
| | | width: 25%; |
| | | text-align: center; |
| | | font-size: 14px; |
| | | color: #00e6f4; |
| | | flex-shrink: 0; |
| | | flex-grow: 0; |
| | | white-space: nowrap; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | } |
| | | |
| | | .list-content { |
| | | height: calc(100% - 45px); |
| | | |
| | | background-image: url("../../assets/images/list-bg.png"); |
| | | background-size: 100% 100%; |
| | | box-shadow: inset 0 0 20px rgba(25, 99, 210, 0.1); |
| | | position: relative; |
| | | |
| | | &::after { |
| | | position: absolute; |
| | | bottom: 0; |
| | | left: 0; |
| | | content: ""; |
| | | width: 15px; |
| | | height: 15px; |
| | | background-image: url("../../assets/images/list-b-l-icon.png"); |
| | | } |
| | | |
| | | &::before { |
| | | position: absolute; |
| | | bottom: 0; |
| | | right: 0; |
| | | content: ""; |
| | | width: 15px; |
| | | height: 15px; |
| | | background-image: url("../../assets/images/list-b-r-icon.png"); |
| | | } |
| | | |
| | | .list-content-to { |
| | | height: 100%; |
| | | overflow-y: hidden; |
| | | overflow-x: hidden; |
| | | //padding: 10px 0; |
| | | } |
| | | |
| | | .item-list { |
| | | display: flex; |
| | | flex-direction: row; |
| | | align-items: center; |
| | | list-style-type: none; |
| | | border-bottom: 1px dashed #223654; |
| | | margin: 7px 0; |
| | | li { |
| | | width: 25%; |
| | | text-align: center; |
| | | //font-size: 14px; |
| | | font-size: 0.72916667vw !important; |
| | | color: #dcf8ff; |
| | | flex-shrink: 0; |
| | | flex-grow: 0; |
| | | white-space: nowrap; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | //height: 28px; |
| | | //line-height: 28px; |
| | | height: 2.59vh; |
| | | line-height: 2.59vh; |
| | | } |
| | | |
| | | .name { |
| | | color: #00b4ff; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .map-container { |
| | | flex: 1; |
| | | height: 100%; |
| | | margin: 0 1%; |
| | | position: relative; |
| | | overflow: hidden; |
| | | // background-image: url('../assets//images/face-num-bg3.png'); |
| | | // border:1px solid #ddd; |
| | | // box-sizing: border-box; |
| | | |
| | | .main-map { |
| | | height: 100%; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .btn-container { |
| | | width: 60%; |
| | | position: absolute; |
| | | top: 5%; |
| | | left: 50%; |
| | | transform: translateX(-50%); |
| | | z-index: 99; |
| | | |
| | | .bg-img { |
| | | width: 100%; |
| | | } |
| | | |
| | | .btn-list { |
| | | width: 100%; |
| | | height: 100%; |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | padding-top: 3.3%; |
| | | padding-left: 16.4%; |
| | | padding-right: 16.4%; |
| | | box-sizing: border-box; |
| | | display: flex; |
| | | flex-direction: row; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | |
| | | img { |
| | | width: 26.638484%; |
| | | flex-shrink: 0; |
| | | flex-grow: 0; |
| | | display: block; |
| | | cursor: pointer; |
| | | user-select: none; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .video-title { |
| | | width: 60.5208333%; |
| | | position: absolute; |
| | | z-index: 8; |
| | | left: 50%; |
| | | transform: translateX(-50%); |
| | | bottom: 0; |
| | | } |
| | | } |
| | | |
| | | footer { |
| | | .footer-title { |
| | | width: 100%; |
| | | display: block; |
| | | } |
| | | |
| | | .footer-container { |
| | | //height: 220px; |
| | | height: 24.15vh; |
| | | box-sizing: border-box; |
| | | position: relative; |
| | | background-image: url("../../assets/images/footer-bg.png"); |
| | | background-size: cover; |
| | | background-position: center; |
| | | |
| | | .footer-statistics-container { |
| | | width: 100%; |
| | | height: 100%; |
| | | padding-bottom: 24px; |
| | | box-sizing: border-box; |
| | | display: flex; |
| | | flex-direction: row; |
| | | align-items: stretch; |
| | | |
| | | .face-container, |
| | | .car-container { |
| | | flex: 1; |
| | | height: 100%; |
| | | } |
| | | |
| | | .face-container { |
| | | position: relative; |
| | | |
| | | background-image: url("../../assets/images/face-bg.png"); |
| | | //background-size: 500px 200px; |
| | | background-size: 26.04166vw auto; |
| | | background-position: center; |
| | | background-repeat: no-repeat; |
| | | |
| | | .item-face-container { |
| | | position: absolute; |
| | | z-index: 4; |
| | | width: 22.296173%; |
| | | |
| | | .proportion { |
| | | //width: 50px; |
| | | width: 2.60416vw; |
| | | margin: 0 auto; |
| | | color: #00eaff; |
| | | text-shadow: 2px 2px 4px #152944; |
| | | position: relative; |
| | | |
| | | img { |
| | | width: 100%; |
| | | display: block; |
| | | } |
| | | |
| | | .value { |
| | | position: absolute; |
| | | left: 50%; |
| | | top: 53%; |
| | | transform: translate(-50%, -50%); |
| | | //font-size: 14px; |
| | | } |
| | | } |
| | | |
| | | .title { |
| | | text-align: center; |
| | | //font-size: 12px; |
| | | font-size: 0.625vw; |
| | | color: #dcf8ff; |
| | | white-space: nowrap; /* 不换行 */ |
| | | overflow: hidden; /* 隐藏超出的内容 */ |
| | | text-overflow: ellipsis; /* 用省略号表示被隐藏的部分 */ |
| | | } |
| | | } |
| | | } |
| | | |
| | | .car-container { |
| | | position: relative; |
| | | background-image: url("../../assets/images/car-bg2.png"); |
| | | //background-size: 500px 200px; |
| | | background-size: 26.04166vw auto; |
| | | background-position: center; |
| | | background-repeat: no-repeat; |
| | | |
| | | // .car-bj-img { |
| | | // position: absolute; |
| | | // left: 50%; |
| | | // top: 50%; |
| | | // transform: translate(-50%, -50%); |
| | | // width: 83.1946755%; |
| | | // display: block; |
| | | // z-index: 2; |
| | | // } |
| | | |
| | | .item-car-container { |
| | | background-image: url("../../assets/images/item-car-bg.png"); |
| | | background-size: 100% 100%; |
| | | color: #dcf8ff; |
| | | font-size: 12px; |
| | | line-height: 26px; |
| | | padding: 0 15px; |
| | | font-size: 0.625vw; |
| | | position: absolute; |
| | | z-index: 5; |
| | | |
| | | span { |
| | | color: #ffc23e; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .video-container { |
| | | width: 37.6041667%; |
| | | height: 100%; |
| | | flex-shrink: 0; |
| | | flex-grow: 0; |
| | | display: flex; |
| | | flex-direction: row; |
| | | flex-wrap: wrap; |
| | | align-items: self-start; |
| | | box-sizing: border-box; |
| | | |
| | | .item-video-data { |
| | | width: 14.2857143%; |
| | | flex-grow: 0; |
| | | padding: 0 10px; |
| | | box-sizing: border-box; |
| | | height: 50%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .video-data { |
| | | flex: 1; |
| | | position: relative; |
| | | background-image: url("../../assets/images/item-video-bg.png"); |
| | | background-size: 100%; |
| | | background-position: center; |
| | | background-repeat: no-repeat; |
| | | |
| | | img { |
| | | width: 100%; |
| | | display: block; |
| | | } |
| | | |
| | | .proportion { |
| | | position: absolute; |
| | | left: 50%; |
| | | top: 50%; |
| | | transform: translate(-50%, -50%); |
| | | //font-size: 20px; |
| | | font-size: 1.04166vw; |
| | | font-weight: bold; |
| | | color: #00fcff; |
| | | text-shadow: 2px 2px 4px #152944; |
| | | } |
| | | } |
| | | |
| | | .item-video-title { |
| | | text-align: center; |
| | | color: #dcf8ff; |
| | | //height: 32px; |
| | | //font-size: 13px; |
| | | //flex-shrink: 0; |
| | | //flex-grow: 0; |
| | | flex-shrink: 0; |
| | | flex-grow: 0; |
| | | height: 3.51851vh; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; /* 显示的行数 */ |
| | | -webkit-box-orient: vertical; |
| | | overflow: hidden; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .is-scroll-bar::-webkit-scrollbar { |
| | | width: 4px; |
| | | } |
| | | |
| | | .is-scroll-bar::-webkit-scrollbar-thumb { |
| | | border-radius: 0px; |
| | | box-shadow: inset 0 0 5px #1e75d9; |
| | | background-color: #1e75d9; |
| | | opacity: 0.2; |
| | | } |
| | | |
| | | .is-scroll-bar::-webkit-scrollbar-track { |
| | | box-shadow: inset 0 0 5px #0d172c; |
| | | border-radius: 0; |
| | | background-color: #0d172c; |
| | | } |
| | | |
| | | @keyframes rotateImage { |
| | | from { |
| | | transform: rotate(0deg); |
| | | } |
| | | to { |
| | | transform: rotate(360deg); |
| | | } |
| | | } |
| | | |
| | | @keyframes rotateCounterClockwise { |
| | | from { |
| | | transform: rotate(0deg); |
| | | } |
| | | to { |
| | | transform: rotate(-360deg); /* 注意这里是-360deg,表示逆时针旋转 */ |
| | | } |
| | | } |
| | | |
| | | .rotating-image { |
| | | width: 900px; |
| | | height: 900px; |
| | | position: absolute; |
| | | top: calc(50% - 450px); |
| | | left: calc(50% - 450px); |
| | | transform: skewX(-5deg) skewY(-10deg); |
| | | animation: rotateImage 36s linear infinite; |
| | | } |
| | | |
| | | .rotating-image-in { |
| | | width: 850px; |
| | | height: 850px; |
| | | position: absolute; |
| | | top: calc(50% - 425px); |
| | | left: calc(50% - 425px); |
| | | animation: rotateCounterClockwise 48s linear infinite; |
| | | } |
| | | </style> |