xiangpei
2024-08-09 923446fa3ce8fe19be88c710b52a84b522973492
Merge remote-tracking branch 'origin/master'
7个文件已修改
1个文件已添加
336 ■■■■■ 已修改文件
src/api/newpage.js 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/home/data-view/components/data-icon.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/screen/components/screen-data/index.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/screen/components/screen-table/index.vue 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/screen/newPage/index.vue 134 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/point/region/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/newpage.js
New file
@@ -0,0 +1,25 @@
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",
  });
}
src/main.js
@@ -107,7 +107,7 @@
      duration: 1,
      ease: "power2.out",
      onUpdate: () => {
        el.innerText = formatNumber(target.count.toFixed(0));
        // el.innerText = formatNumber(target.count.toFixed(0));
      }
    })
@@ -122,7 +122,7 @@
      duration: 1,
      ease: "power2.out",
      onUpdate: () => {
        el.innerText = formatNumber(target.count.toFixed(0));
        // el.innerText = formatNumber(target.count.toFixed(0));
      }
    })
  }
src/views/home/data-view/components/data-icon.vue
@@ -85,7 +85,7 @@
          duration: 1,
          ease: "power2.out",
          onUpdate: () => {
            el.innerText = target.count.toFixed(0);
            // el.innerText = target.count.toFixed(0);
          }
        })
      },
@@ -99,7 +99,7 @@
          duration: 1,
          ease: "power2.out",
          onUpdate: () => {
            el.innerText = target.count.toFixed(0);
            // el.innerText = target.count.toFixed(0);
          }
        })
      }
src/views/screen/components/screen-data/index.vue
@@ -7,7 +7,7 @@
    <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>
@@ -17,28 +17,28 @@
          <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>
@@ -63,6 +63,12 @@
    WrapperTitle,
    DataHola,
  },
  props: {
    workOrderData: {
      type: Object,
      default: null,
    },
  },
  data() {
    return {
      dataList: {
src/views/screen/components/screen-table/index.vue
@@ -13,7 +13,7 @@
          :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">
@@ -22,14 +22,25 @@
                <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>
@@ -40,14 +51,25 @@
                <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>
@@ -58,14 +80,25 @@
                <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>
@@ -80,57 +113,62 @@
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: {
src/views/screen/newPage/index.vue
@@ -3,7 +3,7 @@
    <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"
@@ -22,7 +22,7 @@
        </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">
@@ -35,89 +35,35 @@
            <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>
@@ -128,7 +74,7 @@
          <div class="card_header">
            <div class="title">设备正常率</div>
            <div style="margin: 10px 10px">
              <ScreenTable></ScreenTable>
              <ScreenTable :tableData="tableData"></ScreenTable>
            </div>
          </div>
        </div>
@@ -179,6 +125,7 @@
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: {
@@ -199,7 +146,7 @@
          value: "1",
        },
        {
          name: "市局数据",
          name: "区县数据",
          value: "2",
        },
        {
@@ -207,9 +154,37 @@
          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");
@@ -217,6 +192,29 @@
    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>
src/views/system/point/region/index.vue
@@ -86,7 +86,6 @@
    <el-table v-loading="loading"
              :data="regionList"
              row-key="id"
              border
              default-expand-all
              :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
              @selection-change="handleSelectionChange">
vue.config.js
@@ -38,10 +38,10 @@
        // 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`,