Merge remote-tracking branch 'origin/master'
New file |
| | |
| | | import request from "@/utils/request"; |
| | | |
| | | // 设备数据 |
| | | export function getDeviceData() { |
| | | return request({ |
| | | url: "/dashboard/monitor/total", |
| | | method: "get", |
| | | }); |
| | | } |
| | | |
| | | // 工单数据 |
| | | export function getWorkOrderData() { |
| | | return request({ |
| | | url: "/dashboard/workOrder/total", |
| | | method: "get", |
| | | }); |
| | | } |
| | | |
| | | //设备正常率 |
| | | export function getNormalRate(id) { |
| | | return request({ |
| | | url: "/dashboard/monitor/rate?dataScope=" + id, |
| | | method: "get", |
| | | }); |
| | | } |
| | |
| | | duration: 1, |
| | | ease: "power2.out", |
| | | onUpdate: () => { |
| | | el.innerText = formatNumber(target.count.toFixed(0)); |
| | | // el.innerText = formatNumber(target.count.toFixed(0)); |
| | | } |
| | | }) |
| | | |
| | |
| | | duration: 1, |
| | | ease: "power2.out", |
| | | onUpdate: () => { |
| | | el.innerText = formatNumber(target.count.toFixed(0)); |
| | | // el.innerText = formatNumber(target.count.toFixed(0)); |
| | | } |
| | | }) |
| | | } |
| | |
| | | duration: 1, |
| | | ease: "power2.out", |
| | | onUpdate: () => { |
| | | el.innerText = target.count.toFixed(0); |
| | | // el.innerText = target.count.toFixed(0); |
| | | } |
| | | }) |
| | | }, |
| | |
| | | duration: 1, |
| | | ease: "power2.out", |
| | | onUpdate: () => { |
| | | el.innerText = target.count.toFixed(0); |
| | | // el.innerText = target.count.toFixed(0); |
| | | } |
| | | }) |
| | | } |
| | |
| | | |
| | | <div class="data-content"> |
| | | <div class="data-panel"> |
| | | <div class="panel-title" style="margin-bottom: 30px;"> |
| | | <div class="panel-title" style="margin-bottom: 30px"> |
| | | <div class="icon"> |
| | | <img src="@/assets/icons/arrow.png" alt="" /> |
| | | </div> |
| | |
| | | <div class="panel-item"> |
| | | <data-hola |
| | | :holaTitle="`工单总数`" |
| | | :centerValue="3000" |
| | | :centerValue="workOrderData.workOrderTotal.totalNum" |
| | | :holaColor="`#4ea8ff`" |
| | | ></data-hola> |
| | | </div> |
| | | <div class="panel-item"> |
| | | <data-hola |
| | | :holaTitle="`已处理工单数`" |
| | | :centerValue="1600" |
| | | :centerValue="workOrderData.workOrderTotal.todolNum" |
| | | :holaColor="`#5dec24`" |
| | | ></data-hola> |
| | | </div> |
| | | <div class="panel-item"> |
| | | <data-hola |
| | | :holaTitle="`未处理工单数`" |
| | | :centerValue="200" |
| | | :centerValue="workOrderData.workOrderTotal.doneNum" |
| | | :holaColor="`#dfc639`" |
| | | ></data-hola> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="data-panel"> |
| | | <div class="panel-title" style="margin: 50px 0 30px 0;"> |
| | | <div class="panel-title" style="margin: 50px 0 30px 0"> |
| | | <div class="icon"> |
| | | <img src="@/assets/icons/arrow.png" alt="" /> |
| | | </div> |
| | |
| | | WrapperTitle, |
| | | DataHola, |
| | | }, |
| | | props: { |
| | | workOrderData: { |
| | | type: Object, |
| | | default: null, |
| | | }, |
| | | }, |
| | | data() { |
| | | return { |
| | | dataList: { |
| | |
| | | :max-height="tableHeight" |
| | | class="rank-table" |
| | | > |
| | | <el-table-column prop="name" label="地区" align="center" width="100"> |
| | | <el-table-column prop="area" label="地区" align="center" width="100"> |
| | | </el-table-column> |
| | | |
| | | <el-table-column label="人脸设备" align="center"> |
| | |
| | | <div slot="content"> |
| | | <div class="tip-item"> |
| | | <div class="tip-label">设备正常数:</div> |
| | | <div class="tip-info tip-success">12</div> |
| | | <div class="tip-info tip-success"> |
| | | {{ scope.row.faceNormalNum }} |
| | | </div> |
| | | </div> |
| | | <div class="tip-item"> |
| | | <div class="tip-label">设备异常数:</div> |
| | | <div class="tip-info tip-danger">4</div> |
| | | <div class="tip-info tip-danger"> |
| | | {{ scope.row.faceErrorNum }} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="tip-num">75%</div> |
| | | <div class="tip-num"> |
| | | {{ |
| | | scope.row.faceRate?( |
| | | (scope.row.faceNormalNum / scope.row.faceRate) * |
| | | 100 |
| | | ).toFixed(0)+'%':'--' |
| | | }} |
| | | </div> |
| | | </el-tooltip> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | <div slot="content"> |
| | | <div class="tip-item"> |
| | | <div class="tip-label">设备正常数:</div> |
| | | <div class="tip-info tip-success">12</div> |
| | | <div class="tip-info tip-success"> |
| | | {{ scope.row.carNormalNum }} |
| | | </div> |
| | | </div> |
| | | <div class="tip-item"> |
| | | <div class="tip-label">设备异常数:</div> |
| | | <div class="tip-info tip-danger">4</div> |
| | | <div class="tip-info tip-danger"> |
| | | {{ scope.row.carNormalNum }} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="tip-num">75%</div> |
| | | <div class="tip-num"> |
| | | {{ |
| | | scope.row.carRate?( |
| | | (scope.row.carNormalNum / scope.row.carRate) * |
| | | 100 |
| | | ).toFixed(0)+'%':'--' |
| | | }} |
| | | </div> |
| | | </el-tooltip> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | <div slot="content"> |
| | | <div class="tip-item"> |
| | | <div class="tip-label">设备正常数:</div> |
| | | <div class="tip-info tip-success">12</div> |
| | | <div class="tip-info tip-success"> |
| | | {{ scope.row.videoNormalNum }} |
| | | </div> |
| | | </div> |
| | | <div class="tip-item"> |
| | | <div class="tip-label">设备异常数:</div> |
| | | <div class="tip-info tip-danger">4</div> |
| | | <div class="tip-info tip-danger"> |
| | | {{ scope.row.videoNormalNum }} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="tip-num">75%</div> |
| | | <div class="tip-num"> |
| | | {{ |
| | | scope.row.videoRate?( |
| | | (scope.row.videoNormalNum / scope.row.videoRate) * |
| | | 100 |
| | | ).toFixed(0)+'%':'--' |
| | | }} |
| | | </div> |
| | | </el-tooltip> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | |
| | | export default { |
| | | name: "ScreenTable", |
| | | |
| | | props: { |
| | | tableData: { |
| | | type: Array, |
| | | default: null, |
| | | }, |
| | | }, |
| | | components: { |
| | | WrapperTitle, |
| | | }, |
| | | data() { |
| | | return { |
| | | tableHeight: 40, |
| | | tableData: [ |
| | | { |
| | | name: "富顺县", |
| | | data1: 1123, |
| | | data2: 1123, |
| | | data3: 1123, |
| | | }, |
| | | { |
| | | name: "荣县", |
| | | data1: 1123, |
| | | data2: 1123, |
| | | data3: 1123, |
| | | }, |
| | | { |
| | | name: "高新区", |
| | | data1: 1123, |
| | | data2: 1123, |
| | | data3: 1123, |
| | | }, |
| | | { |
| | | name: "自流井区", |
| | | data1: 1123, |
| | | data2: 1123, |
| | | data3: 1123, |
| | | }, |
| | | { |
| | | name: "贡井区", |
| | | data1: 1123, |
| | | data2: 1123, |
| | | data3: 1123, |
| | | }, |
| | | { |
| | | name: "大安区", |
| | | data1: 1123, |
| | | data2: 1123, |
| | | data3: 1123, |
| | | }, |
| | | { |
| | | name: "沿滩区", |
| | | data1: 1123, |
| | | data2: 1123, |
| | | data3: 1123, |
| | | }, |
| | | ], |
| | | // tableData: [ |
| | | // { |
| | | // name: "富顺县", |
| | | // data1: 1123, |
| | | // data2: 1123, |
| | | // data3: 1123, |
| | | // }, |
| | | // { |
| | | // name: "荣县", |
| | | // data1: 1123, |
| | | // data2: 1123, |
| | | // data3: 1123, |
| | | // }, |
| | | // { |
| | | // name: "高新区", |
| | | // data1: 1123, |
| | | // data2: 1123, |
| | | // data3: 1123, |
| | | // }, |
| | | // { |
| | | // name: "自流井区", |
| | | // data1: 1123, |
| | | // data2: 1123, |
| | | // data3: 1123, |
| | | // }, |
| | | // { |
| | | // name: "贡井区", |
| | | // data1: 1123, |
| | | // data2: 1123, |
| | | // data3: 1123, |
| | | // }, |
| | | // { |
| | | // name: "大安区", |
| | | // data1: 1123, |
| | | // data2: 1123, |
| | | // data3: 1123, |
| | | // }, |
| | | // { |
| | | // name: "沿滩区", |
| | | // data1: 1123, |
| | | // data2: 1123, |
| | | // data3: 1123, |
| | | // }, |
| | | // ], |
| | | }; |
| | | }, |
| | | methods: { |
| | |
| | | <div style="display: flex; justify-content: center"> |
| | | <div class="header_box"> |
| | | <div class="tabs-box"> |
| | | <el-tabs v-model="activeName" @tab-click="handleClick"> |
| | | <el-tabs v-model="activeName" @tab-click="tabChange"> |
| | | <el-tab-pane |
| | | v-for="item in testData1" |
| | | :label="item.name" |
| | |
| | | </div> |
| | | <div class="card" style="height: 622px"> |
| | | <div class="card_header"><div class="title">工单数据</div></div> |
| | | <div><ScreenData></ScreenData></div> |
| | | <div><ScreenData :workOrderData="workOrderData"></ScreenData></div> |
| | | </div> |
| | | </div> |
| | | <div class="large_screen_box"> |
| | |
| | | <div class="title">设备数据</div> |
| | | </div> |
| | | <div> |
| | | <div class="device_data"> |
| | | <div |
| | | class="device_data" |
| | | v-for="(item, index) in deviceList" |
| | | :key="index" |
| | | > |
| | | <img |
| | | src="../../../assets/images/screen/lxicon.png" |
| | | alt="" |
| | | style="height: 25px" |
| | | /> |
| | | <div style="margin: 0 10px">人脸</div> |
| | | <div style="margin: 0 10px">{{ item.type }}</div> |
| | | <div class="data-info"> |
| | | <div class="data-lable">设备总数</div> |
| | | <div class="data-num type1"> |
| | | <span v-roll>{{ 1123 }}</span |
| | | <span v-roll>{{ item.totalNum }}</span |
| | | ><i class="el-icon-top"></i> |
| | | </div> |
| | | </div> |
| | | <div class="data-info"> |
| | | <div class="data-lable">设备正常数</div> |
| | | <div class="data-num type2"> |
| | | <span v-roll>{{ 1123 }}</span |
| | | <span v-roll>{{ item.normalNum }}</span |
| | | ><i class="el-icon-top"></i> |
| | | </div> |
| | | </div> |
| | | <div class="data-info"> |
| | | <div class="data-lable">设备异常数</div> |
| | | <div class="data-num type3"> |
| | | <span v-roll>{{ 1123 }}</span |
| | | ><i class="el-icon-bottom"></i> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="device_data"> |
| | | <img |
| | | src="../../../assets/images/screen/lxicon.png" |
| | | alt="" |
| | | style="height: 25px" |
| | | /> |
| | | <div style="margin: 0 10px">车辆</div> |
| | | <div class="data-info"> |
| | | <div class="data-lable">设备总数</div> |
| | | <div class="data-num type1"> |
| | | <span v-roll>{{ 1123 }}</span |
| | | ><i class="el-icon-bottom"></i> |
| | | </div> |
| | | </div> |
| | | <div class="data-info"> |
| | | <div class="data-lable">设备正常数</div> |
| | | <div class="data-num type2"> |
| | | <span v-roll>{{ 1123 }}</span |
| | | ><i class="el-icon-bottom"></i> |
| | | </div> |
| | | </div> |
| | | <div class="data-info"> |
| | | <div class="data-lable">设备异常数</div> |
| | | <div class="data-num type3"> |
| | | <span v-roll>{{ 1123 }}</span |
| | | ><i class="el-icon-bottom"></i> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="device_data"> |
| | | <img |
| | | src="../../../assets/images/screen/lxicon.png" |
| | | alt="" |
| | | style="height: 25px" |
| | | /> |
| | | <div style="margin: 0 10px">视频</div> |
| | | <div class="data-info"> |
| | | <div class="data-lable">设备总数</div> |
| | | <div class="data-num type1"> |
| | | <span v-roll>{{ 1123 }}</span |
| | | ><i class="el-icon-bottom"></i> |
| | | </div> |
| | | </div> |
| | | <div class="data-info"> |
| | | <div class="data-lable">设备正常数</div> |
| | | <div class="data-num type2"> |
| | | <span v-roll>{{ 1123 }}</span |
| | | ><i class="el-icon-bottom"></i> |
| | | </div> |
| | | </div> |
| | | <div class="data-info"> |
| | | <div class="data-lable">设备异常数</div> |
| | | <div class="data-num type3"> |
| | | <span v-roll>{{ 1123 }}</span |
| | | <span v-roll>{{ item.errorNum }}</span |
| | | ><i class="el-icon-bottom"></i> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="card_header"> |
| | | <div class="title">设备正常率</div> |
| | | <div style="margin: 10px 10px"> |
| | | <ScreenTable></ScreenTable> |
| | | <ScreenTable :tableData="tableData"></ScreenTable> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | import ExamineChart from "../components/screen-examine/components/examine-chart.vue"; |
| | | import ScreenData from "../components/screen-data/index.vue"; |
| | | import NewMap from "./components/newMap.vue"; |
| | | import { getDeviceData, getWorkOrderData, getNormalRate } from "@/api/newpage"; |
| | | export default { |
| | | name: "Newpage", |
| | | components: { |
| | |
| | | value: "1", |
| | | }, |
| | | { |
| | | name: "市局数据", |
| | | name: "区县数据", |
| | | value: "2", |
| | | }, |
| | | { |
| | |
| | | value: "3", |
| | | }, |
| | | ], |
| | | deviceList: [], |
| | | workOrderData: { |
| | | workOrderRegion: { |
| | | create_time: "2024-03-05T19:04:24", |
| | | deleted: 0, |
| | | error_type: "网络故障,无光", |
| | | id: 1, |
| | | serial_number: 0, |
| | | source: "中山大道与宝善巷交叉口东", |
| | | status: "DISTRIBUTED", |
| | | unit_id: 2, |
| | | update_time: "2024-04-15T17:07:54", |
| | | work_order_no: "202403051212", |
| | | yw_check_result: "/profile/upload/2024/03/26/20240326100819A001.jpg", |
| | | yw_condition: "修复完成", |
| | | yw_handle_time: "2024-03-05T19:04:06", |
| | | yw_people_id: 1, |
| | | yw_result: "OK", |
| | | }, |
| | | workOrderTotal: { |
| | | doneNum: 8, |
| | | todoNum: 20, |
| | | totalNum: 28, |
| | | }, |
| | | }, |
| | | tableData: [], |
| | | }; |
| | | }, |
| | | mounted() {}, |
| | | mounted() { |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | returnPath() { |
| | | this.$router.push("/index"); |
| | |
| | | handleClick(tab, event) { |
| | | console.log(tab, event); |
| | | }, |
| | | getData() { |
| | | getDeviceData() |
| | | .then((res) => { |
| | | this.deviceList = res.data; |
| | | }) |
| | | .catch((err) => {}); |
| | | getWorkOrderData() |
| | | .then((res) => { |
| | | this.workOrderData = res.data; |
| | | }) |
| | | .catch((err) => {}); |
| | | this.getTableList(); |
| | | }, |
| | | getTableList() { |
| | | getNormalRate(this.activeName) |
| | | .then((res) => { |
| | | this.tableData = res.data; |
| | | }) |
| | | .catch((err) => {}); |
| | | }, |
| | | tabChange(){ |
| | | this. getTableList() |
| | | } |
| | | }, |
| | | }; |
| | | </script> |
| | |
| | | <el-table v-loading="loading" |
| | | :data="regionList" |
| | | row-key="id" |
| | | border |
| | | default-expand-all |
| | | :tree-props="{children: 'children', hasChildren: 'hasChildren'}" |
| | | @selection-change="handleSelectionChange"> |
| | |
| | | // target: `http://localhost:8080`, |
| | | |
| | | // 付立麒 |
| | | target: `http://192.168.3.64:8080`, |
| | | // target: `http://192.168.3.64:8080`, |
| | | |
| | | // 龚焕茏 |
| | | // target: `http://192.168.3.87:8080`, |
| | | target: `http://192.168.137.227:8080`, |
| | | |
| | | // 向培 |
| | | // target: `http://192.168.3.88:8085`, |