From 996ba897101bbc959e035983c44d0bd4c5559fbb Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 20 三月 2024 17:03:01 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/views/index.vue                                                     |    2 
 src/views/screen/components/screen-examine/components/examine-chart.vue |   22 +-
 src/api/system/role.js                                                  |    8 
 src/views/system/check-result/index.vue                                 |    4 
 src/views/system/data-manage/index.vue                                  |  112 +++++++++-
 src/layout/components/Navbar.vue                                        |   57 ++++
 src/views/system/check-template/index.vue                               |   60 ++++
 src/views/screen/components/screen-wrapper/index.vue                    |    4 
 src/views/screen/components/screen-map/index.vue                        |  134 ++++++++++-
 src/views/screen/components/screen-map/test.vue                         |    0 
 src/views/screen/components/select-item/index.vue                       |    6 
 src/router/index.js                                                     |   30 ++
 src/views/system/work-order/index.vue                                   |   13 
 src/views/system/check-result/city/index.vue                            |    4 
 src/views/login.vue                                                     |    3 
 src/views/home/data-view/index.vue                                      |   39 +++
 src/views/screen/components/screen-examine/components/examine-hola.vue  |   18 +
 src/views/screen/components/screen-detection/index.vue                  |    4 
 src/views/system/vehicle-data-monitor/index.vue                         |  107 +++------
 src/views/system/report/index.vue                                       |    2 
 20 files changed, 466 insertions(+), 163 deletions(-)

diff --git a/src/api/system/role.js b/src/api/system/role.js
index f13e6f4..3e28128 100644
--- a/src/api/system/role.js
+++ b/src/api/system/role.js
@@ -56,7 +56,13 @@
     data: data
   })
 }
-
+// 鍒囨崲瑙掕壊
+export function exchangeRole(roleId) {
+  return request({
+    url: '/system/role/exchange/'+ roleId,
+    method: 'get',
+  })
+}
 // 鍒犻櫎瑙掕壊
 export function delRole(roleId) {
   return request({
diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
index c79a894..a122c07 100644
--- a/src/layout/components/Navbar.vue
+++ b/src/layout/components/Navbar.vue
@@ -1,12 +1,17 @@
 <template>
   <div class="navbar">
-    <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
+    <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container"
+      @toggleClick="toggleSideBar" />
 
-    <breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav"/>
-    <top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/>
+    <breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav" />
+    <top-nav id="topmenu-container" class="topmenu-container" v-if="topNav" />
 
     <div class="right-menu">
-      <template v-if="device!=='mobile'">
+
+
+
+
+      <template v-if="device !== 'mobile'">
         <screenfull id="screenfull" class="right-menu-item hover-effect" />
         <el-tooltip content="甯冨眬澶у皬" effect="dark" placement="bottom">
           <size-select id="size-select" class="right-menu-item hover-effect" />
@@ -31,6 +36,17 @@
           </el-dropdown-item>
         </el-dropdown-menu>
       </el-dropdown>
+
+    </div>
+    <div class="test-container">
+      <el-button-group style="vertical-align: text-bottom;">
+        <el-button @click="exchange(100)">鐪佸巺瑙掕壊</el-button>
+        <el-button @click="exchange(103)">鍖哄幙瑙掕壊</el-button>
+        <el-button @click="exchange(2)">杩愮淮瑙掕壊</el-button>
+      </el-button-group>
+    </div>
+    <div class="button-container">
+      <el-button type="primary" @click="toScreen">鍙鍖栧ぇ灞�</el-button>
     </div>
   </div>
 </template>
@@ -45,7 +61,7 @@
 import Search from '@/components/HeaderSearch'
 import RuoYiGit from '@/components/RuoYi/Git'
 import RuoYiDoc from '@/components/RuoYi/Doc'
-
+import { exchangeRole } from "@/api/system/role";
 export default {
   components: {
     Breadcrumb,
@@ -81,6 +97,11 @@
     }
   },
   methods: {
+    exchange(roleId) {
+      exchangeRole(roleId).then(response => {
+        this.$modal.msgSuccess("淇敼鎴愬姛");
+      }).catch(() => { });
+    },
     toggleSideBar() {
       this.$store.dispatch('app/toggleSideBar')
     },
@@ -93,7 +114,13 @@
         this.$store.dispatch('LogOut').then(() => {
           location.href = '/index';
         })
-      }).catch(() => {});
+      }).catch(() => { });
+    },
+
+    toScreen() {
+      this.$router.push({
+        path: '/screen'
+      })
     }
   }
 }
@@ -105,7 +132,7 @@
   overflow: hidden;
   position: relative;
   background: #fff;
-  box-shadow: 0 1px 4px rgba(0,21,41,.08);
+  box-shadow: 0 1px 4px rgba(0, 21, 41, .08);
 
   .hamburger-container {
     line-height: 46px;
@@ -113,7 +140,7 @@
     float: left;
     cursor: pointer;
     transition: background .3s;
-    -webkit-tap-highlight-color:transparent;
+    -webkit-tap-highlight-color: transparent;
 
     &:hover {
       background: rgba(0, 0, 0, .025)
@@ -186,4 +213,18 @@
     }
   }
 }
+.test-container {
+  margin: 0 20px;
+  height: 100%;
+  float: right;
+  display: flex;
+  align-items: center;
+}
+.button-container {
+  margin: 0 20px;
+  height: 100%;
+  float: right;
+  display: flex;
+  align-items: center;
+}
 </style>
diff --git a/src/router/index.js b/src/router/index.js
index 8850356..58389a7 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -51,13 +51,13 @@
     component: Layout,
     hidden: true,
     children: [
-    {
-      path: 'index',
-      name: 'vehicle-data-monitor',
-      component: () => import('@/views/system/vehicle-data-monitor/index'),
-      meta: { title: '杞﹁締杩囧崱鍙f暟鎹竴鑷存��', activeMenu: '/system/vehicle-data-monitor' }
-    }
-  ]
+      {
+        path: 'index',
+        name: 'vehicle-data-monitor',
+        component: () => import('@/views/system/vehicle-data-monitor/index'),
+        meta: { title: '杞﹁締杩囧崱鍙f暟鎹竴鑷存��', activeMenu: '/system/vehicle-data-monitor' }
+      }
+    ]
   },
   {
     path: '/register',
@@ -77,7 +77,7 @@
   {
     path: '',
     component: Layout,
-    redirect: 'index',
+    redirect: 'screen',
     children: [
       {
         path: 'index',
@@ -87,6 +87,20 @@
       }
     ]
   },
+
+  // {
+  //   path: '',
+  //   component: Layout,
+  //   redirect: 'index',
+  //   children: [
+  //     {
+  //       path: 'index',
+  //       component: () => import('@/views/index'),
+  //       name: 'Index',
+  //       meta: { title: '棣栭〉', icon: 'dashboard', affix: true }
+  //     }
+  //   ]
+  // },
   {
     path: '/screen',
     hidden: true,
diff --git a/src/views/home/data-view/index.vue b/src/views/home/data-view/index.vue
index 54e595c..01aa966 100644
--- a/src/views/home/data-view/index.vue
+++ b/src/views/home/data-view/index.vue
@@ -9,11 +9,20 @@
 
     <el-card class="map-wrapper">
       <el-row>
-        <el-col :offset="21" :span="3">
-          <el-select v-model="selectOption" placeholder="璇烽�夋嫨">
-            <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
-            </el-option>
-          </el-select>
+        <el-col :span="5">
+          <div class="select-container">
+            <div class="select-label">
+              鏁版嵁婧�
+            </div>
+            <el-select v-model="selectOption" placeholder="璇烽�夋嫨">
+              <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
+              </el-option>
+            </el-select>
+          </div>
+
+        </el-col>
+        <el-col :offset="17" :span="2">
+          <el-button type="primary" @click="toScreen">鍙鍖栧ぇ灞�</el-button>
         </el-col>
       </el-row>
       <el-row :gutter="40" class="data-plane" style="height: 100%;">
@@ -123,6 +132,10 @@
           value: 2,
           label: '甯傚眬鏁版嵁'
         },
+        {
+          value: 3,
+          label: '鍏畨閮ㄦ暟鎹�'
+        },
       ],
       selectOption: 1
     }
@@ -145,6 +158,12 @@
       });
       data.name = '鑷础甯�';
       this.activeData = data;
+    },
+
+    toScreen() {
+      this.$router.push({
+        path: '/screen'
+      })
     }
   },
   created() {
@@ -179,6 +198,16 @@
   aspect-ratio: 6/2;
 }
 
+.select-container {
+  display: flex;
+  align-items: center;
+  .select-label {
+    color: #666;
+    margin-right: 20px;
+    font-size: 16px;
+  }
+}
+
 @media screen and (min-width: 1200px) {
   .el-col-md-6 {
     width: 20%;
diff --git a/src/views/index.vue b/src/views/index.vue
index d64cd44..9821ea7 100644
--- a/src/views/index.vue
+++ b/src/views/index.vue
@@ -1,6 +1,6 @@
 <template>
   <div class="app-container home">
-    <data-view></data-view>
+    <!-- <data-view></data-view> -->
     <data-wrapper></data-wrapper>
   </div>
 </template>
diff --git a/src/views/login.vue b/src/views/login.vue
index e604abf..e855493 100644
--- a/src/views/login.vue
+++ b/src/views/login.vue
@@ -149,6 +149,7 @@
   watch: {
     $route: {
       handler: function(route) {
+        console.log(route);
         this.redirect = route.query && route.query.redirect;
       },
       immediate: true
@@ -198,6 +199,8 @@
               this.loginInfo = loginInfo.user
               //濡傛灉杩斿洖涓�1姝e父璺宠浆
               if(this.loginInfo.firstLogin == 1){
+                this.$router.push({ path: "/" }).catch(()=>{});
+                return;
                 this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
               } else {
                  localStorage.setItem('firstLogin',0)
diff --git a/src/views/screen/components/screen-detection/index.vue b/src/views/screen/components/screen-detection/index.vue
index 1eccea9..3f396f7 100644
--- a/src/views/screen/components/screen-detection/index.vue
+++ b/src/views/screen/components/screen-detection/index.vue
@@ -41,12 +41,12 @@
         waveHeight: 5
       },
       config2: {
-        data: [99.77],
+        data: [70.77],
         shape: 'round',
         waveHeight: 5
       },
       config3: {
-        data: [95.39],
+        data: [60.39],
         shape: 'round',
         waveHeight: 5
       },
diff --git a/src/views/screen/components/screen-examine/components/examine-chart.vue b/src/views/screen/components/screen-examine/components/examine-chart.vue
index 6b4b7f9..74c3413 100644
--- a/src/views/screen/components/screen-examine/components/examine-chart.vue
+++ b/src/views/screen/components/screen-examine/components/examine-chart.vue
@@ -3,7 +3,7 @@
     <div class="rank-chart">
       <div class="hola-item" v-for="item in dataList" :key="item.id">
         <examine-hola :startColor="'#02C77E'" :endColor="'#017770'" :centerValue="item.value"
-          :bottomTitle="item.name"></examine-hola>
+          :bottomTitle="item.name" :routerPath="item.routerUrl" ></examine-hola>
       </div>
     </div>
   </div>
@@ -20,15 +20,15 @@
   data() {
     return {
       dataList: [
-        {id: 1,name: '骞冲彴鍦ㄧ嚎鐜�', value: 60},
-        {id: 2,name: '涓�鏈轰竴妗e悎鏍肩巼', value: 20},
-        {id: 3,name: '妗f鑰冩牳姣�', value: 60},
-        {id: 4,name: '鐐逛綅鍦ㄧ嚎鐜�', value: 40},
-        {id: 5,name: '褰曞儚鍙敤鐜�', value: 80},
-        {id: 6,name: '閲嶇偣鐐逛綅褰曞儚鍙敤鐜�', value: 20},
-        {id: 7,name: '淇℃伅閲囬泦鍑嗙‘鐜�', value: 60},
-        {id: 8,name: '鍗¢棬杩囪溅鏁版嵁涓�鑷存��', value: 40},
-        
+        {id: 1,name: '骞冲彴鍦ㄧ嚎鐜�', value: 60,routerUrl: '/car/vehicle-data-monitor/index'},
+        {id: 2,name: '涓�鏈轰竴妗e悎鏍肩巼', value: 20,routerUrl: '/car/vehicle-data-monitor/index'},
+        {id: 3,name: '妗f鑰冩牳姣�', value: 60,routerUrl: '/car/vehicle-data-monitor/index'},
+        {id: 4,name: '鐐逛綅鍦ㄧ嚎鐜�', value: 40,routerUrl: '/car/vehicle-data-monitor/index'},
+        {id: 5,name: '褰曞儚鍙敤鐜�', value: 80,routerUrl: '/car/vehicle-data-monitor/index'},
+        {id: 6,name: '閲嶇偣鐐逛綅褰曞儚鍙敤鐜�', value: 20,routerUrl: '/car/vehicle-data-monitor/index'},
+        {id: 7,name: '淇℃伅閲囬泦鍑嗙‘鐜�', value: 60,routerUrl: '/car/vehicle-data-monitor/index'},
+        {id: 8,name: '杞﹁締杩囧崱鍙f暟鎹竴鑷存��', value: 40,routerUrl: '/car/vehicle-data-monitor/index'},
+
       ]
     }
   },
@@ -65,4 +65,4 @@
     }
   }
 }
-</style>
\ No newline at end of file
+</style>
diff --git a/src/views/screen/components/screen-examine/components/examine-hola.vue b/src/views/screen/components/screen-examine/components/examine-hola.vue
index e034ab7..a4c2d87 100644
--- a/src/views/screen/components/screen-examine/components/examine-hola.vue
+++ b/src/views/screen/components/screen-examine/components/examine-hola.vue
@@ -2,7 +2,9 @@
   <!-- 杩涘害鏉$被鍨嬬粍浠� -->
   <div class="progressChart">
     <div class="chart" id="progressChart" ref="chartRef"></div>
-    <label class="bottom le-0-font">{{ bottomTitle }}</label>
+    <el-link class="bottom le-0-font" :underline="false" @click="handleDetail(routerPath)">
+    <label >{{ bottomTitle }}</label>
+    </el-link>
   </div>
 </template>
 <script>
@@ -120,12 +122,22 @@
       type: [Number, String],
       default: 0
     },
+    routerPath: {
+      type: String,
+      default: ''
+    },
     bottomTitle: {
       type: String,
       default: ''
     }
   },
-  methods: {},
+  methods: {
+    handleDetail(routerUrl) {
+      this.$router.push({
+        path: routerUrl,
+      })
+    }
+  },
   created() { },
   mounted() {
     let myChart = echarts.init(this.$refs['chartRef']) // 浣跨敤Id鏃犳硶瀹炵幇
@@ -154,4 +166,4 @@
     margin-top: 10px;
   }
 }
-</style>
\ No newline at end of file
+</style>
diff --git a/src/views/screen/components/screen-map/index.vue b/src/views/screen/components/screen-map/index.vue
index 8a263a0..e1b84bc 100644
--- a/src/views/screen/components/screen-map/index.vue
+++ b/src/views/screen/components/screen-map/index.vue
@@ -15,18 +15,18 @@
 import WrapperTitle from '../wrapper-title/index';
 
 echarts.registerMap('zigong', mapData);
-console.log(mapData);
 let mapChart = null;
 let tempName = '';
 let observer = null;
 const mapConfig = {
-  series: [{
-    map: "zigong", //娉ㄥ唽鍦板浘鐨勫悕瀛�
-    type: "map3D",
+  geo3D: {
+    map: 'zigong',
+    show: true,
     bottom: 0,
     left: 0,
     top: 0,
     right: 0,
+    zlevel: 1,
     itemStyle: {
       color: "#4189f2", // 鑳屾櫙
       opacity: 1, //閫忔槑搴�
@@ -44,28 +44,112 @@
     // 鎺у埗鍣�
     viewControl: {
       beta: -30,
-      alpha: 90,
-      distance: 100,
+      alpha: 50,
+      distance: 105,
       maxBeta: 180,
-      panSensitivity: 0
+      panSensitivity: 0,
+      zoomSensitivity: 1,
+      rotateSensitivity: 0,
     },
     // 榧犳爣绉诲叆鏃舵牱寮�
     emphasis: {
       itemStyle: {
-        color: "#F63545"
+        color: "#F63545",
       }
     },
+    // regions: mapData.features.map((item) => {
+    //   return {
+    //     name: item.properties.name,
+    //     itemStyle: {
+    //       color: "#4189f2"
+    //     }
+    //   }
+    // })
+  },
+  series: [
+    {
+      map: "zigong", //娉ㄥ唽鍦板浘鐨勫悕瀛�
+      type: "map3D",
+      bottom: 0,
+      left: 0,
+      top: 0,
+      right: 0,
+      zlevel: 2,
+      itemStyle: {
+        color: "#4189f2", // 鑳屾櫙
+        opacity: 0, //閫忔槑搴�
+        borderWidth: 0, // 杈规瀹藉害
+        borderColor: "#fff", // 杈规棰滆壊
+        fontSize: 18, //
+      },
 
-    // 鏁版嵁
-    data: mapData.features.map((item) => {
-      return {
-        name: item.properties.name,
-        itemStyle: {
-          color: "#4189f2"
+      // 鏍囩
+      label: {
+        show: false,
+        color: "#fff", //鍦板浘鍒濆鍖栧尯鍩熷瓧浣撻鑹�
+        fontSize: 18,
+      },
+      // 鎺у埗鍣�
+      viewControl: {
+        beta: -30,
+        alpha: 50,
+        distance: 105,
+        maxBeta: 180,
+        panSensitivity: 0,
+        zoomSensitivity: 1,
+        rotateSensitivity: 0,
+      },
+      
+      // 鏁版嵁
+      data: mapData.features.map((item) => {
+        return {
+          name: item.properties.name,
+          itemStyle: {
+            color: "#4189f2"
+          }
         }
-      }
-    }),
-  }
+      }),
+
+    },
+    {
+      type: 'lines3D',
+      coordinateSystem: 'geo3D',
+      zlevel: 15,
+
+      effect: {
+        show: true,
+        period: 5,
+        trailLength: 0.2,
+        color: '#01AAED',
+      },
+      lineStyle: {
+        width: 3,
+        opacity: 0.6,
+        color: '#FFB800'
+      },
+      data: [
+        [
+          [104.343914,29.470778],
+          [104.766432,29.328016]
+        ],
+        [
+          [104.603116,29.347364],
+          [104.766432,29.328016]
+        ],
+        [
+          [104.873139,29.30861],
+          [104.766432,29.328016]
+        ],
+        [
+          [105.058792,29.1521],
+          [104.766432,29.328016]
+        ],
+        [
+          [104.848535,29.410526],
+          [104.766432,29.328016]
+        ],
+      ]
+    }
   ]
 
 };
@@ -82,13 +166,21 @@
   methods: {
     filterData(name) {
       this.initConfig();
-      let temp = mapConfig.series[0].data.find(item => item.name === name);
+      let temp = mapConfig.geo3D.regions.find(item => item.name === name);
+
+      // mapConfig.geo3D.regions.push({
+      //   name: name,
+      //   itemStyle: {
+      //     color: '#F63545'
+      //   }
+      // });
       temp.itemStyle.color = '#F63545';
       mapChart.setOption(mapConfig, true);
       this.$emit('filterData', name);
     },
     initConfig() {
-      mapConfig.series[0].data.forEach(item => {
+      // mapConfig.geo3D.regions = [];
+      mapConfig.geo3D.regions.forEach(item => {
         item.itemStyle.color = '#4189f2';
       });
     },
@@ -112,6 +204,7 @@
     mapChart = echarts.init(this.$refs.map);
     mapChart.setOption(mapConfig, true);
     mapChart.on('click', (params) => {
+      return;
       if (tempName === params.name) {
         tempName = '';
         this.initConfig();
@@ -144,8 +237,9 @@
   .map-content {
     flex: 1;
     background: rgba(67, 102, 155, 0.3);
-  border: 1px solid rgba(47, 91, 157, 0.8);
+    border: 1px solid rgba(47, 91, 157, 0.8);
   }
+
   .map-style {
     width: 100%;
     height: 100%;
diff --git a/src/views/screen/components/screen-map/test.vue b/src/views/screen/components/screen-map/test.vue
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/views/screen/components/screen-map/test.vue
diff --git a/src/views/screen/components/screen-wrapper/index.vue b/src/views/screen/components/screen-wrapper/index.vue
index 6cbb50e..35e0763 100644
--- a/src/views/screen/components/screen-wrapper/index.vue
+++ b/src/views/screen/components/screen-wrapper/index.vue
@@ -2,7 +2,7 @@
   <div class="wrapper-container">
     <select-item></select-item>
     <div class="return-button">
-      <el-button type="primary" @click="returnPath">杩斿洖</el-button>
+      <el-button type="primary" @click="returnPath">绠$悊绯荤粺</el-button>
     </div>
     <div class="wrapper-content">
       <div class="left-container wrapper">
@@ -43,7 +43,7 @@
   },
   methods: {
     returnPath() {
-      this.$router.go(-1);
+      this.$router.push('/index');
     }
   }
 }
diff --git a/src/views/screen/components/select-item/index.vue b/src/views/screen/components/select-item/index.vue
index 4bd541b..168db2c 100644
--- a/src/views/screen/components/select-item/index.vue
+++ b/src/views/screen/components/select-item/index.vue
@@ -24,15 +24,15 @@
       dateValue: new Date(),
       testData1: [
         {
-          name: '鐪佸巺',
+          name: '鐪佸巺鏁版嵁',
           value: 1
         },
         {
-          name: '甯傚巺',
+          name: '甯傚眬鏁版嵁',
           value: 2
         },
         {
-          name: '鍏畨閮�',
+          name: '鍏畨閮ㄦ暟鎹�',
           value: 3
         }
       ]
diff --git a/src/views/system/check-result/city/index.vue b/src/views/system/check-result/city/index.vue
index 20982a9..781a138 100644
--- a/src/views/system/check-result/city/index.vue
+++ b/src/views/system/check-result/city/index.vue
@@ -94,8 +94,8 @@
       <div class="text item">鑰冩牳棰戠巼<span class="time">{{ "瀛e害" }}</span></div>
       <div class="text item">鑰冩牳鏃堕棿
         <span class="time">{{ item.checkTime }}</span>
-        <el-button size="small" round style="float: right;" @click="handlePublish(item)" v-show="item.publish != 1">纭鍙戝竷</el-button>
-        <el-button size="small" round style="float: right;" v-show="item.publish == 1" disabled="true">宸插彂甯�</el-button>
+        <el-button size="small" round style="float: right;" @click="handlePublish(item)" v-show="item.publish != 1"  v-hasPermi="['result:city:publish']">纭鍙戝竷</el-button>
+        <el-button size="small" round style="float: right;" v-show="item.publish == 1" disabled="true"  v-hasPermi="['result:city:publish']">宸插彂甯�</el-button>
       </div>
     </el-card>
 
diff --git a/src/views/system/check-result/index.vue b/src/views/system/check-result/index.vue
index 0817e2b..536bd3a 100644
--- a/src/views/system/check-result/index.vue
+++ b/src/views/system/check-result/index.vue
@@ -94,8 +94,8 @@
       <div class="text item">鑰冩牳鍒嗘暟<span class="time">{{ item.checkScore }}</span></div>
       <div class="text item">鑰冩牳鏃堕棿
         <span class="time">{{ item.checkTime }}</span>
-        <el-button size="small" round style="float: right;" @click="handlePublish(item)" v-show="item.publish != 1">纭鍙戝竷</el-button>
-        <el-button size="small" round style="float: right;" @click="handlePublish(item)" v-show="item.publish == 1">宸插彂甯�</el-button>
+        <el-button size="small" round style="float: right;" @click="handlePublish(item)" v-show="item.publish != 1"  v-hasPermi="['result:contract:publish']">纭鍙戝竷</el-button>
+        <el-button size="small" round style="float: right;" @click="handlePublish(item)" v-show="item.publish == 1"  v-hasPermi="['result:contract:publish']">宸插彂甯�</el-button>
       </div>
     </el-card>
 
diff --git a/src/views/system/check-template/index.vue b/src/views/system/check-template/index.vue
index 70c8f5c..52dc255 100644
--- a/src/views/system/check-template/index.vue
+++ b/src/views/system/check-template/index.vue
@@ -116,14 +116,15 @@
           <el-input v-model="form.templateName" placeholder="璇疯緭鍏ユā鏉垮悕绉�" />
         </el-form-item>
         <el-form-item label="鑰冩牳瀵硅薄" prop="unitName">
-          <el-select v-model="form.unitName" placeholder="璇烽�夋嫨">
-            <el-option
-              v-for="item in unitList"
-              :key="item.id"
-              :label="item.value"
-              :value="item.id">
-            </el-option>
-          </el-select>
+          <div class="block">
+            <span class="demonstration"></span>
+            <el-cascader
+              v-model="value"
+              :options="options"
+              :props = "props"
+              @change="handleChange"></el-cascader>
+          </div>
+
         </el-form-item>
         <el-form-item label="鑰冩牳瑙勫垯" prop="tempRuleFormList">
           <div class="row-warp">
@@ -193,6 +194,46 @@
   name: "CheckTemplate",
   data() {
     return {
+      props: { multiple: true },
+      value: [],
+      options: [{
+        value: 'city',
+        label: '鍖哄幙',
+        children: [{
+          value: 'fushun',
+          label: '瀵岄『鍘�',
+        }, {
+          value: 'rong',
+          label: '鑽e幙',
+        },{
+          value: 'gaoxin',
+          label: '楂樻柊鍖�',
+        },{
+          value: 'ziliujing',
+          label: '鑷祦浜曞尯',
+        },{
+          value: 'gongjing',
+          label: '璐′簳鍖�',
+        },{
+          value: 'daan',
+          label: '澶у畨鍖�',
+        },{
+          value: 'yantan',
+          label: '娌挎哗鍖�',
+        },
+        ]
+      }, {
+        value: 'company',
+        label: '鍏徃',
+        children: [{
+          value: 'yunwei',
+          label: '鎴愰兘x杩愮淮',
+        }, {
+          value: 'yunwei2',
+          label: '鑷础x杩愮淮',
+        }, ]
+      },
+      ],
       ruleList: [],
       unitList: [],
       // 涓存椂瑙勫垯琛ㄥ崟
@@ -250,6 +291,9 @@
     this.selectUnit();
   },
   methods: {
+    handleChange(value) {
+      console.log(value);
+    },
     removeRule(form) {
       console.log(form)
       this.ruleFormList = this.ruleFormList.filter(item => item !== form);
diff --git a/src/views/system/data-manage/index.vue b/src/views/system/data-manage/index.vue
index eef8562..f0228ea 100644
--- a/src/views/system/data-manage/index.vue
+++ b/src/views/system/data-manage/index.vue
@@ -3,13 +3,24 @@
     <div class="container">
       <el-row type="flex" justify="center">
         <el-col :span="24">
-          <h3 style="color: rgb(104,104,103);padding-top: 20px;padding-bottom: 20px;">浜鸿劯鏁版嵁寮傚父妫�娴�</h3>
+          <h3 style="color: rgb(104,104,103);padding-top: 20px;padding-bottom: 20px;">瑙嗛杩愯鐩戞帶</h3>
         </el-col>
       </el-row>
 
       <el-row type="flex" justify="center">
-        <el-col :span="6" v-for="(item, index) in faceData" :key="index">
+        <el-col :span="6" v-for="(item, index) in videoData" :key="index">
           <el-link @click="handleDetail(item)">
+            <el-card style="width:150px;height: 150px;text-align: center;">
+              <i style="font-size: 40px;padding: 15px;" :class="item.icon"></i>
+              <div>{{ item.name }}</div>
+            </el-card>
+          </el-link>
+        </el-col>
+      </el-row>
+      <br/>
+      <el-row type="flex" justify="center">
+        <el-col :span="6" v-for="(item, index) in videoData2" :key="index">
+          <el-link @click="handleDetail(item)" :style="item.name == '' ? 'display:none' : ''">
             <el-card style="width:150px;height: 150px;text-align: center;">
               <i style="font-size: 40px;padding: 15px;" :class="item.icon"></i>
               <div>{{ item.name }}</div>
@@ -22,7 +33,7 @@
     <div class="container">
       <el-row type="flex" justify="center">
         <el-col :span="24">
-          <h3 style="color: rgb(104,104,103);padding-top: 20px;padding-bottom: 20px;">杞︿咯鏁版嵁寮傚父妫�娴�</h3>
+          <h3 style="color: rgb(104,104,103);padding-top: 20px;padding-bottom: 20px;">杞﹁締杩愯鐩戞帶</h3>
         </el-col>
       </el-row>
 
@@ -36,7 +47,49 @@
           </el-link>
         </el-col>
       </el-row>
+      <br/>
+      <el-row type="flex" justify="center">
+        <el-col :span="6" v-for="(item, index) in carData2" :key="index">
+          <el-link @click="handleDetail(item)" :style="item.name == '' ? 'display:none' : ''">
+            <el-card style="width:150px;height: 150px;text-align: center;">
+              <i style="font-size: 40px;padding: 15px;" :class="item.icon"></i>
+              <div>{{ item.name }}</div>
+            </el-card>
+          </el-link>
+        </el-col>
+      </el-row>
     </div>
+
+    <div class="container">
+      <el-row type="flex" justify="center">
+        <el-col :span="24">
+          <h3 style="color: rgb(104,104,103);padding-top: 20px;padding-bottom: 20px;">浜鸿劯杩愯鐩戞帶</h3>
+        </el-col>
+      </el-row>
+
+      <el-row type="flex" justify="center">
+        <el-col :span="6" v-for="(item, index) in faceData" :key="index">
+          <el-link @click="handleDetail(item)">
+            <el-card style="width:150px;height: 150px;text-align: center;">
+              <i style="font-size: 40px;padding: 15px;" :class="item.icon"></i>
+              <div>{{ item.name }}</div>
+            </el-card>
+          </el-link>
+        </el-col>
+      </el-row>
+      <br/>
+      <el-row type="flex" justify="center">
+        <el-col :span="6" v-for="(item, index) in faceData2" :key="index">
+          <el-link @click="handleDetail(item)" :style="item.name == '' ? 'display:none' : ''">
+            <el-card style="width:150px;height: 150px;text-align: center;">
+              <i style="font-size: 40px;padding: 15px;" :class="item.icon"></i>
+              <div>{{ item.name }}</div>
+            </el-card>
+          </el-link>
+        </el-col>
+      </el-row>
+    </div>
+    <br/><br/><br/><br/>
   </div>
 </template>
 
@@ -44,16 +97,53 @@
 export default {
   data() {
     return {
-      faceData: [
-        { name: '浜鸿劯璇嗗埆鏃堕挓鍑嗙‘鎬�', icon: 'el-icon-alarm-clock', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
-        { name: '浜鸿劯鎶撴媿鏁版嵁鐩戞祴', icon: 'el-icon-user', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
-        { name: '浜鸿劯鏁版嵁瓒嬪娍鍒嗘瀽', icon: 'el-icon-data-line', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
-        { name: '浜鸿劯鎶撴媿璁惧娲昏穬鎬�', icon: 'el-icon-timer', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
-        { name: '浜鸿劯鎶撴媿涓婁紶鍙婃椂鎬�', icon: 'el-icon-money', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
-        { name: '浜鸿劯鎶撴媿澶у浘鍙敤鎬�', icon: 'el-icon-data-analysis', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+      videoData: [
+        { name: '骞冲彴鍦ㄧ嚎', icon: 'el-icon-connection', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '涓�鏈轰竴妗�', icon: 'el-icon-folder', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '鐐逛綅鍦ㄧ嚎', icon: 'el-icon-search', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '褰曞儚鍙敤', icon: 'el-icon-turn-off', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '瑙嗛鏍囨敞', icon: 'el-icon-place', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '閲嶇偣鎸囨尌鍥惧儚鍦ㄧ嚎鐜�', icon: 'el-icon-film', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+      ],
+      videoData2: [
+        { name: '瑙嗛鍥惧儚璧勬簮瀹夊叏绠$悊', icon: 'el-icon-house', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '瑙嗛鍥惧儚璐ㄩ噺', icon: 'el-icon-set-up', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '', icon: 'el-icon-connection', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '', icon: 'el-icon-connection', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '', icon: 'el-icon-connection', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '', icon: 'el-icon-connection', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' }
       ],
       carData: [
-        { name: '鍗″彛杩囪溅鏁版嵁涓�鑷存��', icon: 'el-icon-truck', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' }
+        { name: '瑙嗗浘搴撳鎺ョǔ瀹氭��1', icon: 'el-icon-truck', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '鐐逛綅鍦ㄧ嚎鐜�', icon: 'el-icon-truck', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '鑱旂綉鍗″彛璁惧鐩綍涓�鑷寸巼', icon: 'el-icon-truck', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '杞﹁締鍗″彛淇℃伅閲囬泦鍑嗙‘鐜�', icon: 'el-icon-truck', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '杞﹁締鍗″彛璁惧鎶撴媿鏁版嵁瀹屾暣鎬�', icon: 'el-icon-truck', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '杞﹁締鍗″彛璁惧鎶撴媿鏁版嵁鍑嗙‘鎬�', icon: 'el-icon-truck', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' }
+      ],
+      carData2: [
+        { name: '杞﹁締鍗″彛璁惧鏃堕挓鍑嗙‘鎬�', icon: 'el-icon-truck', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '杞﹁締鍗″彛璁惧鎶撴媿鏁版嵁涓婁紶鍙婃椂鎬�', icon: 'el-icon-truck', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '杞﹁締鍗″彛璁惧url鍙敤鎬�0.5', icon: 'el-icon-truck', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '杞﹁締鍗″彛璁惧鎶撴媿鏁版嵁澶у浘鍙敤鎬�', icon: 'el-icon-truck', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '', icon: 'el-icon-truck', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '', icon: 'el-icon-truck', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' }
+      ],
+      faceData: [
+        { name: '瑙嗗浘搴撳鎺ョǔ瀹氭��', icon: 'el-icon-alarm-clock', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '鐐逛綅鍦ㄧ嚎鐜�', icon: 'el-icon-user', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '鐩綍涓�鑷寸巼', icon: 'el-icon-data-line', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '浜鸿劯鍗″彛淇℃伅閲囬泦鍑嗙‘鐜�', icon: 'el-icon-timer', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '璁惧鎶撴媿鍥剧墖鍚堟牸鎬�', icon: 'el-icon-money', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '璁惧鎶撴媿鍥剧墖鏃堕挓鍑嗙‘鎬�', icon: 'el-icon-data-analysis', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+      ],
+      faceData2: [
+        { name: '鎶撴媿浜鸿劯鏁版嵁涓婁紶鍙婃椂鎬�', icon: 'el-icon-thumb', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '浜鸿劯鍗″彛璁惧鎶撴媿鏁版嵁澶у浘鍙敤鎬�', icon: 'el-icon-pie-chart', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '', icon: 'el-icon-data-line', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '', icon: 'el-icon-timer', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '', icon: 'el-icon-money', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
+        { name: '', icon: 'el-icon-data-analysis', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' },
       ]
     }
   },
diff --git a/src/views/system/report/index.vue b/src/views/system/report/index.vue
index aff69e5..458bf4d 100644
--- a/src/views/system/report/index.vue
+++ b/src/views/system/report/index.vue
@@ -104,7 +104,7 @@
             type="text"
             icon="el-icon-edit"
             @click="handleAuditing(scope.row)"
-            v-hasPermi="['system:report:auditing']"
+            v-hasPermi="['system:report:audit']"
           >瀹℃牳</el-button>
           <el-button
             size="mini"
diff --git a/src/views/system/vehicle-data-monitor/index.vue b/src/views/system/vehicle-data-monitor/index.vue
index 44cac60..75bddb3 100644
--- a/src/views/system/vehicle-data-monitor/index.vue
+++ b/src/views/system/vehicle-data-monitor/index.vue
@@ -1,79 +1,51 @@
 <template>
   <div class="app-container">
-    <!-- <div class="top">
-      <el-row type="flex" justify="space-between" style="width: 60%;">
-        <el-col :span="6">
-          <el-card class="card">
-            <i style="font-size: 40px;padding: 15px;" class="el-icon-wind-power"></i>
-          </el-card>
-        </el-col>
-
-        <el-col :span="6" class="mod">
-          <div class="number">{{ totalKiosks }}</div>
-          <div>鍗″彛鎬绘暟</div>
-        </el-col>
-
-        <el-col :span="6" class="mod">
-          <div class="numberTwo">{{ uniqueKiosks }}</div>
-          <div>涓嶅敮涓�鍗″彛鏁�</div>
-        </el-col>
-
-        <div style="width: 1px;height: 60px;border: 1px solid #D7EBFA;margin: 40px;"></div>
-
-
-        <el-col :span="6">
-          <el-card class="card">
-            <i style="font-size: 40px;padding: 15px;" class="el-icon-truck"></i>
-          </el-card>
-        </el-col>
-        <el-col :span="6" class="mod">
-          <div class="number">{{ totalCarData }}</div>
-          <div>杩囪溅鏁版嵁鎬婚噺</div>
-        </el-col>
-
-        <el-col :span="6" class="mod">
-          <div class="numberTwo">{{ uniqueCarData }}</div>
-          <div>涓嶅敮涓�鏁版嵁閲�</div>
-        </el-col>
-      </el-row>
-
-    </div> -->
-
-
     <el-card class="box-card">
       <el-row type="flex" align="middle" justify="space-between">
-        <el-col :xl="8" :lg="8" :md="10" :sm="8" :xs="6">
-          <div class="icon-container" style="background-color: #5599F7;font-size: 50px;color: #FFF;">
+        <el-col :span="2">
+          <div class="icon-container">
             <i class="el-icon-wind-power"></i>
           </div>
         </el-col>
-        <el-col :xl="14" :lg="14" :md="12" :sm="14" :xs="16">
-          <div class="dashboard">
+        <el-col :span="2">
+          <div>
             <div class="dashboard-item">
               <h3 style="color: #5C9BF8">{{ totalKiosks }}</h3>
               <p>鍗″彛鎬绘暟</p>
             </div>
-            <div class="dashboard-item">
-              <h3>{{ uniqueKiosks }}</h3>
-              <p>涓嶅敮涓�鍗″彛鏁�</p>
-            </div>
-            <div class="dashboard-item">
-              <div style="width: 1px;height: 55px;border: 1px solid #D7EBFA;"></div>
-            </div>
-            <div class="dashboard-item">
-              <h3 style="color: #5C9BF8">{{ totalCarData }}</h3>
-              <p>杩囪溅鏁版嵁鎬婚噺</p>
-            </div>
-            <div class="dashboard-item">
-              <h3>{{ uniqueCarData }}</h3>
-              <p>涓嶅敮涓�鏁版嵁閲�</p>
-            </div>
           </div>
         </el-col>
+        <el-col :span="2">
+          <div class="dashboard-item">
+            <h3>{{ uniqueKiosks }}</h3>
+            <p>涓嶅敮涓�鍗″彛鏁�</p>
+          </div>
+        </el-col>
+        <el-col :span="1">
+          <div class="dashboard-item">
+            <div style="width: 1px;height: 55px;border: 1px solid #D7EBFA;margin: 20px;"></div>
+          </div>
+        </el-col>
+        <el-col :span="2">
+          <div class="icon-container">
+            <i class="el-icon-truck"></i>
+          </div>
+        </el-col>
+        <el-col :span="2">
+          <div class="dashboard-item">
+            <h3 style="color: #5C9BF8">{{ totalCarData }}</h3>
+            <p>杩囪溅鏁版嵁鎬婚噺</p>
+          </div>
+        </el-col>
+        <el-col :span="2">
+          <div class="dashboard-item">
+            <h3>{{ uniqueCarData }}</h3>
+            <p>涓嶅敮涓�鏁版嵁閲�</p>
+          </div>
+        </el-col>
+        <el-col :span="8"></el-col>
       </el-row>
     </el-card>
-
-
 
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label="鍗″彛缂栧彿" prop="bayonetNumber">
@@ -165,7 +137,7 @@
     return {
       totalKiosks: 1157,
       uniqueKiosks: 580,
-      totalCarData: 77422,
+      totalCarData: 1477422,
       uniqueCarData: 431163,
       // 閬僵灞�
       loading: true,
@@ -327,18 +299,15 @@
   width: 20%;
   height: 80px;
   margin-left: 5%;
+  background-color: #5599F7;
+  font-size: 50px;
+  color: #FFF;
+  width: 85px;
 }
 
 .el-icon-refresh-left {
   font-size: 50px;
   color: #FFFFFF;
-}
-
-.dashboard {
-  display: flex;
-  gap: 10%;
-  align-items: center;
-  margin-left: -50%;
 }
 
 .dashboard-item {
diff --git a/src/views/system/work-order/index.vue b/src/views/system/work-order/index.vue
index f04eb76..a40125e 100644
--- a/src/views/system/work-order/index.vue
+++ b/src/views/system/work-order/index.vue
@@ -107,15 +107,16 @@
             type="text"
             @click="handleYwCondition(scope.row)"
           >杩愮淮鎯呭喌</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            @click="handleYwResult(scope.row)"
-          >杩愮淮缁撴灉</el-button>
+<!--          <el-button-->
+<!--            size="mini"-->
+<!--            type="text"-->
+<!--            @click="handleYwResult(scope.row)"-->
+<!--          >杩愮淮缁撴灉</el-button>-->
           <el-button
             size="mini"
             type="text"
             @click="handleCheckResult(scope.row)"
+            v-hasPermi="['work:order:result']"
           >妫�娴嬬粨鏋�</el-button>
           <el-button
             size="mini"
@@ -281,7 +282,7 @@
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitYwResult">纭� 瀹�</el-button>
-        <el-button @click="cancelYwResult">鍙� 娑�</el-button>
+        <el-button @click="cancelCheckResult">鍙� 娑�</el-button>
       </div>
     </el-dialog>
 

--
Gitblit v1.8.0