Prechádzať zdrojové kódy

内蒙运维系统2023-7-14版本提交,界面优化

dylan 3 rokov pred
rodič
commit
3fe36e86b4
53 zmenil súbory, kde vykonal 9884 pridanie a 500 odobranie
  1. BIN
      public/favicon.png
  2. BIN
      public/favicon3.png
  3. 12 0
      src/api/business/inspection/inspectionreport.js
  4. 12 0
      src/api/business/order/order.js
  5. 122 0
      src/api/business/warning/warning.js
  6. 48 1
      src/api/home/home.js
  7. 1 1
      src/config/website.js
  8. 363 41
      src/views/baseinfo/rtu/index.vue
  9. 6 2
      src/views/baseinfo/rtu/rtuimport.vue
  10. 29 8
      src/views/business/data/groundDataCache.vue
  11. 45 8
      src/views/business/data/rainDataCache.vue
  12. 30 8
      src/views/business/data/riverDataCache.vue
  13. 8 7
      src/views/business/data/rsvrDataCache.vue
  14. 84 24
      src/views/business/inspection/index.vue
  15. 10 10
      src/views/business/inspection/inspectionreportdetail.vue
  16. 322 0
      src/views/business/inspection/inspectionreportlist.vue
  17. 19 17
      src/views/business/inspection/nonetwork/index.vue
  18. 22 16
      src/views/business/inspection/remainingproblems/index.vue
  19. 26 6
      src/views/business/inspection/todaynspectionrportlist.vue
  20. 13 13
      src/views/business/inspection/unfinishedinspection/index.vue
  21. 1 1
      src/views/business/manage/batteryreplacelist.vue
  22. 1 1
      src/views/business/manage/groundsensorreplacelist.vue
  23. 55 33
      src/views/business/manage/index.vue
  24. 1 1
      src/views/business/manage/rainsensorreplacelist.vue
  25. 60 60
      src/views/business/manage/rtuDetail.vue
  26. 1 1
      src/views/business/manage/rtureplacelist.vue
  27. 1 1
      src/views/business/manage/watersensorreplacelist.vue
  28. 96 131
      src/views/business/order/checkorderhistory.vue
  29. 392 0
      src/views/business/order/checkorderhistory2.vue
  30. 36 21
      src/views/business/order/checkorderlist.vue
  31. 0 1
      src/views/business/order/checkorderprocesslist.vue
  32. 7 6
      src/views/business/order/comfiredelaycheckorderlist.vue
  33. 19 17
      src/views/business/order/nonetworksignal/index.vue
  34. 225 0
      src/views/business/order/processingcheckorderlist.vue
  35. 278 0
      src/views/business/order/rtucheckorderhistorylist.vue
  36. 5 4
      src/views/business/order/todaycheckorderprocesslist.vue
  37. 6 5
      src/views/business/order/uncomfirecheckorderlist.vue
  38. 233 0
      src/views/business/warning/clockwarnlist.vue
  39. 233 0
      src/views/business/warning/hourmissoutwarnlist.vue
  40. 233 0
      src/views/business/warning/hourupdelaywarnlist.vue
  41. 233 0
      src/views/business/warning/minupdelaywarnlist.vue
  42. 233 0
      src/views/business/warning/offlinewarnlist.vue
  43. 233 0
      src/views/business/warning/outlitervaluewarnlist.vue
  44. 233 0
      src/views/business/warning/rainhourmissoutwarnlist.vue
  45. 233 0
      src/views/business/warning/rainhourupdelaywarnlist.vue
  46. 233 0
      src/views/business/warning/riverhourmissoutwarnlist.vue
  47. 233 0
      src/views/business/warning/riverhourupdelaywarnlist.vue
  48. 17 13
      src/views/business/warning/warninglist.vue
  49. 1545 0
      src/views/wel/index-admin.vue
  50. 1452 0
      src/views/wel/index-company.vue
  51. 1884 0
      src/views/wel/index-v2.vue
  52. 298 42
      src/views/wel/index.vue
  53. 2 0
      vue.config.js

BIN
public/favicon.png


BIN
public/favicon3.png


+ 12 - 0
src/api/business/inspection/inspectionreport.js

@@ -1,6 +1,18 @@
 import request from '@/router/axios';
 
 
+export const getPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-business/equipment/inspection/report/page',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
+}
+
 export const todayInspectionReportList = (data) => {
     return request({
         url: '/api/galaxy-business/equipment/inspection/report/today/list',

+ 12 - 0
src/api/business/order/order.js

@@ -24,6 +24,18 @@ export const getConfirmDelayPage = (current, size, params) => {
     })
 }
 
+export const getHistroyPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-business/rtu/check/order/histroy/page',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
+}
+
 
 export const remove = (ids) => {
     return request({

+ 122 - 0
src/api/business/warning/warning.js

@@ -12,6 +12,128 @@ export const getPage = (current, size, params) => {
     })
 }
 
+export const getOfflinePage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-business/rtu/warning/offline/page',
+        method: 'get',
+        params: {
+            current,
+            size,
+            ...params
+        }
+    })
+}
+
+export const getClockPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-business/rtu/warning/clock/page',
+        method: 'get',
+        params: {
+            current,
+            size,
+            ...params
+        }
+    })
+}
+
+
+export const getHourmissoutPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-business/rtu/warning/hourmissout/page',
+        method: 'get',
+        params: {
+            current,
+            size,
+            ...params
+        }
+    })
+}
+
+export const getRainHourmissoutPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-business/rtu/warning/rain/hourmissout/page',
+        method: 'get',
+        params: {
+            current,
+            size,
+            ...params
+        }
+    })
+}
+
+export const getRiverHourmissoutPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-business/rtu/warning/river/hourmissout/page',
+        method: 'get',
+        params: {
+            current,
+            size,
+            ...params
+        }
+    })
+}
+
+export const getMinupdelayPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-business/rtu/warning/minupdelay/page',
+        method: 'get',
+        params: {
+            current,
+            size,
+            ...params
+        }
+    })
+}
+
+export const getHourupdelayPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-business/rtu/warning/hourupdelay/page',
+        method: 'get',
+        params: {
+            current,
+            size,
+            ...params
+        }
+    })
+}
+
+export const getRainHourupdelayPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-business/rtu/warning/rain/hourupdelay/page',
+        method: 'get',
+        params: {
+            current,
+            size,
+            ...params
+        }
+    })
+}
+
+
+export const getRiverHourupdelayPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-business/rtu/warning/river/hourupdelay/page',
+        method: 'get',
+        params: {
+            current,
+            size,
+            ...params
+        }
+    })
+}
+
+export const getOutltervaluePage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-business/rtu/warning/outltervalue/page',
+        method: 'get',
+        params: {
+            current,
+            size,
+            ...params
+        }
+    })
+}
+
 export const getDetail = (id) => {
     return request({
         url: '/api/galaxy-business/rtu/warning/detail',

+ 48 - 1
src/api/home/home.js

@@ -58,12 +58,59 @@ export const getDetail = (id) => {
 }
 
 export const getRealData = () => {
+    return request({
+        url: '/api/galaxy-business/home/real/info',
+        method: 'get',
 
+    })
+}
 
+export const getRtuStatusCountData = () => {
     return request({
-        url: '/api/galaxy-business/home/real/info',
+        url: '/api/galaxy-business/home/rtu/status/count/info',
         method: 'get',
 
     })
 }
 
+export const getCheckOrderCountData = () => {
+    return request({
+        url: '/api/galaxy-business/home/rtu/checkorder/count/info',
+        method: 'get',
+
+    })
+}
+
+export const getInspectionReportCountData = () => {
+    return request({
+        url: '/api/galaxy-business/home/rtu/inspectionreport/count/info',
+        method: 'get',
+
+    })
+}
+
+export const getRtuUpCountData = () => {
+    return request({
+        url: '/api/galaxy-business/home/rtu/up/count/info',
+        method: 'get',
+
+    })
+}
+
+export const getWarnKindCountData = () => {
+    return request({
+        url: '/api/galaxy-business/home/rtu/warn/kind/count/info',
+        method: 'get',
+
+    })
+}
+
+export const getWarnCountList = () => {
+    return request({
+        url: '/api/galaxy-business/home/warn/count/list',
+        method: 'get',
+
+    })
+}
+
+

+ 1 - 1
src/config/website.js

@@ -48,10 +48,10 @@ export default {
     authUrl: 'http://localhost:8000/galaxy-auth/oauth/render',
     // 报表设计器地址(cloud端口为8108,boot端口为80)
     reportUrl: 'http://localhost:8000/ureport',
-
     //文件存储服务器地址,末尾必须/
     //ossServer: 'http://172.9.0.165:80/oss/galaxy/',
     ossServer: 'https://nmwx.dahengsi.com:20001/oss/galaxy/',
+    //ossServer: 'http://111.204.228.227:20002/oss/galaxy/',
     //文件预览服务器地址
     kkfileviewServer: 'http://localhost:8012',
 

+ 363 - 41
src/views/baseinfo/rtu/index.vue

@@ -40,8 +40,8 @@
                                 @click="toRtuImportHistoryHandler">测站导入历史</el-button>
                             <el-button v-if="permissionList.importBtn" type="primary" icon="el-icon-download" size="small"
                                 @click="downloadTemplate">测站信息模板下载</el-button>
-                            <el-button v-if="permissionList.videoSiteAdd" type="primary" icon="el-icon-plus" size="small"
-                                @click="toAddVideoSite">添加视频站</el-button>
+                            <!-- <el-button v-if="permissionList.videoSiteAdd" type="primary" icon="el-icon-plus" size="small"
+                                @click="toAddVideoSite">添加视频站</el-button> -->
                         </template>
 
                     </avue-crud>
@@ -57,13 +57,13 @@
             <rtuImportView :importLoading="importLoading" :visible.sync="rtuImportDialog" ref="rtuImportView">
             </rtuImportView>
         </el-dialog>
-        <el-dialog title="添加视频站" :visible.sync="videoSiteAddDialog" width="60%" height="60%" :close-on-click-modal="false"
+        <!-- <el-dialog title="添加视频站" :visible.sync="videoSiteAddDialog" width="60%" height="60%" :close-on-click-modal="false"
             append-to-body :v-loading="importLoading" v-if="videoSiteAddDialog">
             <videositeadd :importLoading="importLoading" :visible.sync="videoSiteAddDialog" ref="videositeadd"
                 @fevent="update_table">
             </videositeadd>
 
-        </el-dialog>
+        </el-dialog> -->
     </div>
 </template>
 
@@ -143,40 +143,43 @@ export default {
                 selection: false,
                 viewBtn: true,
                 viewTitle: "测站信息",
-                editBtn: false,
-                delBtn: false,
-                addBtn: false,
-                menuWidth: 120,
+                editBtn: true,
+                delBtn: true,
+                addBtn: true,
+                addBtnText: "添加测站",
+                menuWidth: 220,
                 dialogType: "drawer",
                 dialogClickModal: false,
                 columnBtn: false,
                 column: [
                     {
-                        label: "站点名称",
-                        prop: "rtuName",
+                        label: "站点编码",
+                        prop: "rtuCode",
                         search: true,
-                        span: 6,
+                        span: 24,
+                        width: 120,
+                        // tip: '*编码仅支持字母+数字的编码组合,长度为20个字符',
                         rules: [
                             {
                                 required: true,
-                                message: "请录入站点名称",
+                                message: "请录入站点编码",
                                 trigger: "click",
                             },
                         ],
                     },
                     {
-                        label: "站点编码",
-                        prop: "rtuCode",
+                        label: "站点名称",
+                        prop: "rtuName",
                         search: true,
-                        span: 6,
-                        editDisabled: true,
+                        span: 24,
                         rules: [
                             {
                                 required: true,
-                                message: "请录入站点编码",
+                                message: "请录入站点名称",
                                 trigger: "click",
                             },
                         ],
+
                     },
                     {
                         label: "测站类型",
@@ -184,6 +187,7 @@ export default {
                         span: 24,
                         editDisplay: false,
                         addDisplay: false,
+                        display: false,
                     },
                     {
                         label: '测站类型',
@@ -192,6 +196,7 @@ export default {
                         hide: true,
                         editDisplay: false,
                         addDisplay: false,
+                        display: false,
                         search: true,
                         props: {
                             label: 'name',
@@ -210,37 +215,359 @@ export default {
                         }, {
                             name: '视频站',
                             code: 4
-                        }]
+                        }],
                     },
-
-                    // {
-                    //     label: "运维单位",
-                    //     prop: "manageCompany",
-                    //     span: 24,
-                    //     editDisplay: false,
-                    //     addDisplay: false,
-                    // },
                     {
-                        label: "经度",
-                        prop: "lng",
+                        label: '测站类型',
+                        prop: 'siteKind',
+                        type: 'checkbox',
+                        hide: true,
+                        props: {
+                            label: 'name',
+                            value: 'code'
+                        },
+                        span: 24,
+                        dicData: [{
+                            name: '雨量站',
+                            code: "1"
+                        }, {
+                            name: '水位站',
+                            code: "2"
+                        }, {
+                            name: '墒情站',
+                            code: "3"
+                        }, {
+                            name: '视频站',
+                            code: "4"
+                        }],
+                        rules: [
+                            {
+                                message: "请选择站点类型",
+                                trigger: "click",
+                                required: true,
+                            },
+                        ],
+                    },
+                    {
+                        label: "盟市",
+                        prop: "adCity",
                         span: 24,
                         editDisplay: false,
                         addDisplay: false,
                     },
                     {
-                        label: "纬度",
-                        prop: "lat",
+                        label: "盟市",
+                        prop: "adCityCode",
+                        span: 24,
+                        hide: true,
+                        type: 'select',
+                        props: {
+                            label: 'adnm',
+                            value: 'adcd'
+                        },
+                        cascader: ['adCode'],
+                        dicUrl: `api/galaxy-business/baseinfo/region/children/list`,
+                        rules: [
+                            {
+                                required: true,
+                                message: "请录入盟市名称",
+                                trigger: "click",
+                            },
+                        ],
+                    },
+                    {
+                        label: "旗县区",
+                        prop: "adDist",
                         span: 24,
                         editDisplay: false,
                         addDisplay: false,
                     },
+                    {
+                        label: "旗县区",
+                        prop: "adCode",
+                        span: 24,
+                        hide: true,
+                        type: 'select',
+                        props: {
+                            label: 'adnm',
+                            value: 'adcd'
+                        },
+                        dicUrl: `api/galaxy-business/baseinfo/region/children/list/{{adCityCode}}`,
+                        rules: [
+                            {
+                                required: true,
+                                message: "请录入旗县区",
+                                trigger: "click",
+                            },
+                        ],
+                    },
+                    {
+                        label: "运维单位",
+                        prop: "manageCompany",
+                        span: 24,
+                    },
+                    {
+                        label: "经度",
+                        prop: "lng",
+                        span: 12,
+                        hide: true,
+                    },
+                    {
+                        label: "纬度",
+                        prop: "lat",
+                        span: 12,
+                        hide: true,
+                    },
                     {
                         label: "测站位置",
                         prop: "locationDesc",
                         span: 24,
-                        editDisplay: false,
-                        addDisplay: false,
                         overHidden: true,
+                        hide: true,
+                    },
+                    // {
+                    //     label: "是否雨量站",
+                    //     prop: "isRain",
+                    //     span: 8,
+                    //     hide: true,
+                    //     editDisplay: false,
+                    //     addDisplay: false
+                    // },
+                    // {
+                    //     label: "是否河道站",
+                    //     prop: "isRiver",
+                    //     span: 8,
+                    //     hide: true,
+                    //     editDisplay: false,
+                    //     addDisplay: false
+                    // },
+                    // {
+                    //     label: "是否水库站",
+                    //     prop: "isRes",
+                    //     span: 8,
+                    //     hide: true,
+                    //     editDisplay: false,
+                    //     addDisplay: false
+                    // },
+                    // {
+                    //     label: "是否墒情站",
+                    //     prop: "isGround",
+                    //     span: 8,
+                    //     hide: true,
+                    //     editDisplay: false,
+                    //     addDisplay: false
+                    // },
+                    // {
+                    //     label: "是否视频站",
+                    //     prop: "isVideo",
+                    //     span: 8,
+                    //     hide: true,
+                    //     editDisplay: false,
+                    //     addDisplay: false
+                    // },
+
+                    {
+                        label: "RTU品牌",
+                        prop: "rtuBrand",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "RTU型号",
+                        prop: "rtuModel",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "RTU更换时间",
+                        prop: "rtuReplaceDate",
+                        span: 24,
+                        hide: true,
+                        type: "date",
+                        valueFormat: 'yyyy-MM-dd',
+                    },
+                    {
+                        label: "雨量传感器品牌",
+                        prop: "rainSensorBrand",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "雨量传感器型号",
+                        prop: "rainSensorModel",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "雨量传感器更换时间",
+                        prop: "rainSensorReplaceDate",
+                        span: 24,
+                        hide: true,
+                        type: "date",
+                        valueFormat: 'yyyy-MM-dd',
+                    },
+                    {
+                        label: "水位计传感器品牌",
+                        prop: "waterSensorBrand",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "水位计传感器型号",
+                        prop: "waterSensorModel",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "水位计传感器类型",
+                        prop: "waterSensorType",
+                        span: 24,
+                        hide: true,
+                        type: 'radio',
+                        // dicData: [{
+                        //     label: '雷达',
+                        //     value: 1
+                        // }, {
+                        //     label: '超声波',
+                        //     value: 2
+                        // }],
+                        props: {
+                            label: 'dictValue',
+                            value: 'id'
+                        },
+                        dicUrl: '/api/galaxy-system/dict-biz/dictionary?code=water_level_sensor_type',
+                    },
+                    {
+                        label: "水位计传感器更换时间",
+                        prop: "waterSensorReplaceDate",
+                        span: 24,
+                        hide: true,
+                        type: "date",
+                        valueFormat: 'yyyy-MM-dd',
+                    },
+                    {
+                        label: "墒情传感器品牌",
+                        prop: "groundSensorBrand",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "墒情传感器型号",
+                        prop: "groundSensorModel",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "墒情传感器类型",
+                        prop: "groundSensorType",
+                        span: 24,
+                        hide: true,
+                        type: 'radio',
+                        // dicData: [{
+                        //     label: '插针式',
+                        //     value: 1
+                        // }, {
+                        //     label: '导管式',
+                        //     value: 2
+                        // }],
+                        props: {
+                            label: 'dictValue',
+                            value: 'id'
+                        },
+                        dicUrl: '/api/galaxy-system/dict-biz/dictionary?code=ground_water_sensor_type',
+                    },
+                    {
+                        label: "墒情传感器更换时间",
+                        prop: "groundSensorReplaceDate",
+                        span: 24,
+                        hide: true,
+                        type: "date",
+                        valueFormat: 'yyyy-MM-dd',
+                    },
+                    {
+                        label: "供电系统电池型号",
+                        prop: "batteryModel",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "供电系统电池更换时间",
+                        prop: "batteryReplaceDate",
+                        span: 24,
+                        hide: true,
+                        type: "date",
+                        valueFormat: 'yyyy-MM-dd',
+                    },
+                    {
+                        label: "太阳能板型号",
+                        prop: "sunPowerModel",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "太阳能控制器品牌",
+                        prop: "sunPowerControllerBrand",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "太阳能控制器型号",
+                        prop: "sunPowerControllerModel",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "SIN卡号",
+                        prop: "networkSimId",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "开卡单位",
+                        prop: "networkPayer",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "缴费截止时间",
+                        prop: "networkPayEndDate",
+                        span: 24,
+                        hide: true,
+                        type: "date",
+                        valueFormat: 'yyyy-MM-dd',
+                    },
+                    {
+                        label: "是否北斗通信",
+                        prop: "isSatellite",
+                        span: 24,
+                        hide: true,
+                        type: 'radio',
+                        dicData: [{
+                            label: '否',
+                            value: 0
+                        }, {
+                            label: '是',
+                            value: 1
+                        }],
+                    },
+                    {
+                        label: "北斗通讯类型",
+                        prop: "satelliteModel",
+                        span: 24,
+                        hide: true,
+                        type: 'radio',
+                        // dicData: [{
+                        //     label: '北斗2代',
+                        //     value: 1
+                        // }, {
+                        //     label: '北斗3代',
+                        //     value: 2
+                        // }],
+                        props: {
+                            label: 'dictValue',
+                            value: 'id'
+                        },
+                        dicUrl: '/api/galaxy-system/dict-biz/dictionary?code=satellite_model',
                     },
                     {
                         label: "备注说明",
@@ -258,10 +585,10 @@ export default {
         ...mapGetters(["userInfo", "permission"]),
         permissionList() {
             return {
-                // addBtn: this.vaildData(this.permission.rtu_add, false),
+                addBtn: this.vaildData(this.permission.rtu_add, false),
                 viewBtn: this.vaildData(this.permission.rtu_view, false),
-                // delBtn: this.vaildData(this.permission.rtu_del, false),
-                // editBtn: this.vaildData(this.permission.rtu_edit, false),
+                delBtn: this.vaildData(this.permission.rtu_del, false),
+                editBtn: this.vaildData(this.permission.rtu_edit, false),
                 importBtn: this.vaildData(this.permission.rtu_import, false),
                 videoSiteAdd: this.vaildData(this.permission.video_site_add, false),
             };
@@ -348,13 +675,8 @@ export default {
             this.selectionList = [];
             this.$refs.crud.toggleSelection();
         },
-        // initData() {
-        //     getRtuKindList('rtu_kind').then((res) => {
-        //         const column = this.findObject(this.option.column, "rtuKinds");
-        //         column.dicData = res.data.data;
-        //     });
-        // },
         rowSave(row, done, loading) {
+            console.log(JSON.stringify(row))
             add(row).then(
                 () => {
                     this.onLoad(this.page);

+ 6 - 2
src/views/baseinfo/rtu/rtuimport.vue

@@ -110,11 +110,13 @@ export default {
                         width: 120,
                         editDisplay: false,
                         addDisplay: false,
+                        hide: true,
                     },
                     {
                         label: "导入时间",
                         prop: "importTime",
                         span: 24,
+                        width: 160,
                     },
                     {
                         label: "导入说明",
@@ -126,13 +128,15 @@ export default {
                         label: "导入操作类型",
                         prop: "saveType",
                         span: 24,
-                        width: 160,
+                        width: 120,
                         html: true,
                         formatter: (val) => {
                             if (val.saveType === 0) {
                                 return '<b style="color:blue">只新增</b>'
                             } else if (val.saveType === 1) {
-                                return '<b style="color:red">覆盖已有测站</b>'
+                                return '<b style="color:red">只更新</b>'
+                            } else if (val.saveType === 2) {
+                                return '<b style="color:red">新增或更新</b>'
                             } else {
                                 return '';
                             }

+ 29 - 8
src/views/business/data/groundDataCache.vue

@@ -32,7 +32,7 @@
                         @row-update="rowUpdate" @row-save="rowSave" @search-change="searchChange"
                         @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
                         @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"
-                        @select-change="selectChange">
+                        @select-change="selectChange" @sort-change="sortChange">
 
                     </avue-crud>
                 </basic-container>
@@ -55,6 +55,7 @@ export default {
             form: {},
             selectionList: [],
             query: {},
+            sort: {},
             loading: true,
             page: {
                 pageSize: 10,
@@ -106,18 +107,18 @@ export default {
                 columnBtn: false,
                 column: [
                     {
-                        label: "站点名称",
-                        prop: "rtuName",
+                        label: "站点编码",
+                        prop: "rtuCode",
                         search: true,
                         span: 24,
-                        width: 160,
+                        width: 120,
                     },
                     {
-                        label: "站点编码",
-                        prop: "rtuCode",
+                        label: "站点名称",
+                        prop: "rtuName",
                         search: true,
                         span: 24,
-                        width: 120,
+                        width: 160,
                     },
                     {
                         label: "行政区",
@@ -138,6 +139,7 @@ export default {
                         label: "上报时间",
                         prop: "tm",
                         span: 8,
+                        sortable: 'custom',
                     },
                     {
                         label: "含水量",
@@ -316,6 +318,25 @@ export default {
             var params = {};
             this.onLoad(this.page, params);
         },
+        sortChange(val) {
+            console.log(JSON.stringify(val))
+            //prop":"tm","order":"ascending"  descending
+            let prop = val.prop;
+            if (prop === 'tm') {
+                this.page.currentPage = 1;
+                var params = {};
+                let order = val.order;
+                if (order) {
+                    params['order'] = order;
+                    params['prop'] = prop;
+                    this.sort = {};
+                    Object.assign(this.sort, params)
+                } else {
+                    this.sort = {};
+                }
+                this.onLoad(this.page, params);
+            }
+        },
         searchReset() {
             this.page.currentPage = 1;
             this.onLoad(this.page);
@@ -350,7 +371,7 @@ export default {
             getPage(
                 page.currentPage,
                 page.pageSize,
-                Object.assign(params, this.query)
+                Object.assign(params, this.sort, this.query)
             ).then((res) => {
                 const data = res.data.data;
                 this.page.total = data.total;

+ 45 - 8
src/views/business/data/rainDataCache.vue

@@ -32,7 +32,7 @@
                         @row-update="rowUpdate" @row-save="rowSave" @search-change="searchChange"
                         @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
                         @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"
-                        @select-change="selectChange">
+                        @select-change="selectChange" @sort-change="sortChange">
 
                     </avue-crud>
                 </basic-container>
@@ -56,6 +56,7 @@ export default {
             form: {},
             selectionList: [],
             query: {},
+            sort: {},
             loading: true,
             page: {
                 pageSize: 10,
@@ -118,18 +119,20 @@ export default {
                 columnBtn: false,
                 column: [
                     {
-                        label: "站点名称",
-                        prop: "rtuName",
+                        label: "站点编码",
+                        prop: "rtuCode",
                         search: true,
                         span: 24,
-                        width: 160,
+                        width: 120,
+
                     },
                     {
-                        label: "站点编码",
-                        prop: "rtuCode",
+                        label: "站点名称",
+                        prop: "rtuName",
                         search: true,
                         span: 24,
-                        width: 120,
+                        width: 160,
+
                     },
                     {
                         label: "行政区",
@@ -150,6 +153,7 @@ export default {
                         label: "上报时间",
                         prop: "tm",
                         span: 24,
+                        sortable: 'custom',
                     },
                     {
                         label: "时段长",
@@ -170,6 +174,7 @@ export default {
                         label: "时段降水量",
                         prop: "drp",
                         span: 24,
+                        sortable: 'custom',
                         html: true,
                         formatter: (val) => {
                             if (val.drp != null) {
@@ -222,6 +227,38 @@ export default {
                 this.treeCode = this.treeData[0].id;
             });
         },
+        sortChange(val) {
+            console.log(JSON.stringify(val))
+            //prop":"tm","order":"ascending"  descending
+            let prop = val.prop;
+            if (prop === 'tm') {
+                this.page.currentPage = 1;
+                let params = {};
+                let order = val.order;
+                if (order) {
+                    params['order'] = order;
+                    params['prop'] = prop;
+                    this.sort = {};
+                    Object.assign(this.sort, params)
+                } else {
+                    this.sort = {};
+                }
+                this.onLoad(this.page, params);
+            } else if (prop === 'drp') {
+                this.page.currentPage = 1;
+                let params = {};
+                let order = val.order;
+                if (order) {
+                    params['order'] = order;
+                    params['prop'] = prop;
+                    this.sort = {};
+                    Object.assign(this.sort, params)
+                } else {
+                    this.sort = {};
+                }
+                this.onLoad(this.page, params);
+            }
+        },
         nodeClick(data) {
             this.treeCode = data.id;
             this.treeParentCode = data.parentId;
@@ -266,7 +303,7 @@ export default {
             getPage(
                 page.currentPage,
                 page.pageSize,
-                Object.assign(params, this.query)
+                Object.assign(params, this.sort, this.query)
             ).then((res) => {
                 const data = res.data.data;
                 this.page.total = data.total;

+ 30 - 8
src/views/business/data/riverDataCache.vue

@@ -32,7 +32,7 @@
                         @row-update="rowUpdate" @row-save="rowSave" @search-change="searchChange"
                         @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
                         @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"
-                        @select-change="selectChange">
+                        @select-change="selectChange" @sort-change="sortChange">
 
                     </avue-crud>
                 </basic-container>
@@ -55,6 +55,7 @@ export default {
             form: {},
             selectionList: [],
             query: {},
+            sort: {},
             loading: true,
             page: {
                 pageSize: 10,
@@ -117,18 +118,18 @@ export default {
                 columnBtn: false,
                 column: [
                     {
-                        label: "站点名称",
-                        prop: "rtuName",
+                        label: "站点编码",
+                        prop: "rtuCode",
                         search: true,
                         span: 24,
-                        width: 160,
+                        width: 120,
                     },
                     {
-                        label: "站点编码",
-                        prop: "rtuCode",
+                        label: "站点名称",
+                        prop: "rtuName",
                         search: true,
                         span: 24,
-                        width: 120,
+                        width: 160,
                     },
                     {
                         label: "行政区",
@@ -149,6 +150,7 @@ export default {
                         label: "上报时间",
                         prop: "wlTm",
                         span: 8,
+                        sortable: 'custom',
                         html: true,
                         formatter: (val) => {
                             if (val.wlTm) {
@@ -222,6 +224,26 @@ export default {
             var params = {};
             this.onLoad(this.page, params);
         },
+        sortChange(val) {
+            // this.$message.success(JSON.stringify(val));
+            console.log(JSON.stringify(val))
+            //prop":"tm","order":"ascending"  descending
+            let prop = val.prop;
+            if (prop === 'wlTm') {
+                this.page.currentPage = 1;
+                var params = {};
+                let order = val.order;
+                if (order) {
+                    params['order'] = order;
+                    params['prop'] = prop;
+                    this.sort = {};
+                    Object.assign(this.sort, params)
+                } else {
+                    this.sort = {};
+                }
+                this.onLoad(this.page, params);
+            }
+        },
         searchReset() {
             this.page.currentPage = 1;
             this.onLoad(this.page);
@@ -257,7 +279,7 @@ export default {
             getPage(
                 page.currentPage,
                 page.pageSize,
-                Object.assign(params, this.query)
+                Object.assign(params, this.sort, this.query)
             ).then((res) => {
                 const data = res.data.data;
                 this.page.total = data.total;

+ 8 - 7
src/views/business/data/rsvrDataCache.vue

@@ -56,6 +56,7 @@ export default {
             form: {},
             selectionList: [],
             query: {},
+            sort: {},
             loading: true,
             page: {
                 pageSize: 10,
@@ -118,18 +119,18 @@ export default {
                 columnBtn: false,
                 column: [
                     {
-                        label: "站点名称",
-                        prop: "rtuName",
+                        label: "站点编码",
+                        prop: "rtuCode",
                         search: true,
                         span: 24,
-                        width: 160,
+                        width: 120,
                     },
                     {
-                        label: "站点编码",
-                        prop: "rtuCode",
+                        label: "站点名称",
+                        prop: "rtuName",
                         search: true,
                         span: 24,
-                        width: 120,
+                        width: 160,
                     },
                     {
                         label: "行政区",
@@ -253,7 +254,7 @@ export default {
             getPage(
                 page.currentPage,
                 page.pageSize,
-                Object.assign(params, this.query)
+                Object.assign(params, this.sort, this.query)
             ).then((res) => {
                 const data = res.data.data;
                 this.page.total = data.total;

+ 84 - 24
src/views/business/inspection/index.vue

@@ -29,7 +29,7 @@
                         v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
                         @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
                         @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
-                        @refresh-change="refreshChange" @on-load="onLoad">
+                        @refresh-change="refreshChange" @on-load="onLoad" @sort-change="sortChange">
                         <template slot-scope="scope" slot="menuLeft">
                             <div class="line">
                                 <div class="lineText">
@@ -63,11 +63,14 @@
                             </div>
                         </template>
                         <template slot-scope="{ row, index }" slot="menu">
-                            <el-button type="text" size="small" @click="openBeforeRainReportDetail(row)">汛前详情
+                            <el-button type="text" size="small" @click="openBeforeRainReportDetail(row)"
+                                icon="el-icon-edit-outline">汛前详情
                             </el-button>
-                            <el-button type="text" size="small" @click="openRainFirstReportDetail(row)">汛中(一)详情
+                            <el-button type="text" size="small" @click="openRainFirstReportDetail(row)"
+                                icon="el-icon-edit-outline">汛中(一)详情
                             </el-button>
-                            <el-button type="text" size="small" @click="openRainSencodReportDetail(row)">汛中(二)详情
+                            <el-button type="text" size="small" @click="openRainSencodReportDetail(row)"
+                                icon="el-icon-edit-outline">汛中(二)详情
                             </el-button>
                         </template>
                     </avue-crud>
@@ -109,6 +112,7 @@ export default {
             dialogTitle: '',
             selectionList: [],
             query: {},
+            sort: {},
             loading: true,
             page: {
                 pageSize: 10,
@@ -150,42 +154,46 @@ export default {
                 editBtn: false,
                 delBtn: false,
                 viewBtn: false,
-                menuWidth: 200,
+                menuWidth: 300,
                 dialogType: "drawer",
                 dialogClickModal: false,
                 columnBtn: false,
                 column: [
                     {
-                        label: "测站名称",
-                        prop: "rtuName",
+                        label: "测站编码",
+                        prop: "rtuCode",
                         span: 12,
                         search: true,
-                        html: true,
-                        formatter: (val) => {
-                            if (val.rtuName) {
-                                return '<b>' + val.rtuName + '</b>/' + '<b style="color:grey">' + val.rtuCode + '</b>'
-                            } else {
-                                return '<b>' + val.rtuName + '</b>'
-                            }
-                        }
+                        width: 120,
                     },
                     {
-                        label: "测站编码",
-                        prop: "rtuCode",
+                        label: "测站名称",
+                        prop: "rtuName",
                         span: 12,
                         search: true,
-                        hide: true,
+                        minWidth: 160,
+                        overHidden: true,
+                        // html: true,
+                        // formatter: (val) => {
+                        //     if (val.rtuName) {
+                        //         return '<b>' + val.rtuName + '</b>/' + '<b style="color:grey">' + val.rtuCode + '</b>'
+                        //     } else {
+                        //         return '<b>' + val.rtuName + '</b>'
+                        //     }
+                        // }
                     },
                     {
                         label: "汛前巡检ID",
                         prop: "beforeRainSeasonReportId",
                         span: 24,
                         hide: true,
+
                     },
                     {
                         label: "汛前巡检",
                         prop: "beforeRainSeasonStatus",
                         span: 24,
+                        width: 120,
                         html: true,
                         formatter: (val) => {
                             if (val.beforeRainSeasonStatus == 1) {
@@ -199,13 +207,14 @@ export default {
                         label: "汛前填报人",
                         prop: "beforeRainSeasonReportUserName",
                         span: 24,
-                        hide: true,
+                        width: 160,
                     },
                     {
                         label: "汛前填报时间",
                         prop: "beforeRainSeasonReportTime",
                         span: 24,
-
+                        width: 160,
+                        sortable: 'custom',
                     },
                     {
                         label: "汛中巡检(一)ID",
@@ -217,6 +226,7 @@ export default {
                         label: "汛中巡检(一)",
                         prop: "rainSeasonFirstStatus",
                         span: 24,
+                        width: 120,
                         html: true,
                         formatter: (val) => {
                             if (val.rainSeasonFirstStatus == 1) {
@@ -230,13 +240,14 @@ export default {
                         label: "汛中填报人(一)",
                         prop: "rainSeasonFirstReportUserName",
                         span: 24,
-                        hide: true,
+                        width: 160,
                     },
                     {
                         label: "汛中填报时间(一)",
                         prop: "rainSeasonFirstReportTime",
                         span: 24,
-
+                        width: 160,
+                        sortable: 'custom',
                     },
                     {
                         label: "汛中巡检(二)ID",
@@ -248,6 +259,7 @@ export default {
                         label: "汛中巡检(二)",
                         prop: "rainSeasonSecondStatus",
                         span: 24,
+                        width: 120,
                         html: true,
                         formatter: (val) => {
                             if (val.rainSeasonSecondStatus == 1) {
@@ -261,12 +273,15 @@ export default {
                         label: "汛中填报人(二)",
                         prop: "rainSeasonSecondReportUserName",
                         span: 24,
-                        hide: true,
+                        width: 160,
+
                     },
                     {
                         label: "汛中填报时间(二)",
                         prop: "rainSeasonSecondReportTime",
                         span: 24,
+                        width: 160,
+                        sortable: 'custom',
                     },
                 ],
             },
@@ -319,6 +334,51 @@ export default {
             this.onLoad(this.page, params);
             this.getCountInfo(this.treeCode);
         },
+        sortChange(val) {
+            console.log(JSON.stringify(val))
+            //prop":"tm","order":"ascending"  descending
+            let prop = val.prop;
+            if (prop === 'beforeRainSeasonReportTime') {
+                this.page.currentPage = 1;
+                let params = {};
+                let order = val.order;
+                if (order) {
+                    params['order'] = order;
+                    params['prop'] = prop;
+                    this.sort = {};
+                    Object.assign(this.sort, params)
+                } else {
+                    this.sort = {};
+                }
+                this.onLoad(this.page);
+            } else if (prop === 'rainSeasonFirstReportTime') {
+                this.page.currentPage = 1;
+                let params = {};
+                let order = val.order;
+                if (order) {
+                    params['order'] = order;
+                    params['prop'] = prop;
+                    this.sort = {};
+                    Object.assign(this.sort, params)
+                } else {
+                    this.sort = {};
+                }
+                this.onLoad(this.page);
+            } else if (prop === 'rainSeasonSecondReportTime') {
+                this.page.currentPage = 1;
+                let params = {};
+                let order = val.order;
+                if (order) {
+                    params['order'] = order;
+                    params['prop'] = prop;
+                    this.sort = {};
+                    Object.assign(this.sort, params)
+                } else {
+                    this.sort = {};
+                }
+                this.onLoad(this.page);
+            }
+        },
         getCountInfo(adCode) {
             getCountInfo(adCode).then((res) => {
                 this.inspectionCountInfo = res.data.data;
@@ -430,7 +490,7 @@ export default {
             getPage(
                 page.currentPage,
                 page.pageSize,
-                Object.assign(params, this.query)
+                Object.assign(params, this.sort, this.query)
             ).then((res) => {
                 const data = res.data.data;
                 this.page.total = data.total;

+ 10 - 10
src/views/business/inspection/inspectionreportdetail.vue

@@ -57,7 +57,7 @@
                 </el-col>
                 <el-col :span="18" class="item-line-start">
                     <div class="item-content">
-                        <label>{{ data.lng }} / {{ data.lat }}</label>
+                        <label>{{ data.lng }},{{ data.lat }}</label>
                     </div>
                 </el-col>
             </el-row>
@@ -388,14 +388,14 @@
                     </div>
                 </el-col>
             </el-row>
-            <div v-if="data.othersEquipmentCheckPhotos.length > 0" style="width: 100%;">
+            <div v-if="data.otherEquipmentCheckPhotos.length > 0" style="width: 100%;">
 
                 <div class="block-line"
                     style="height: 30px;display: flex;flex-direction: row;justify-content: center;margin-top: 10px;margin-bottom: 10px;">
                     <label>其他设备检查拍摄照片</label>
                 </div>
 
-                <el-row v-for="(item, index) in data.othersEquipmentCheckPhotos" :key="index" type="flex">
+                <el-row v-for="(item, index) in data.otherEquipmentCheckPhotos" :key="index" type="flex">
                     <el-col :span="24">
                         <el-image :src=toOss(item)></el-image>
                     </el-col>
@@ -420,7 +420,7 @@
         <!-- 设备更换信息 -->
         <el-card shadow="hover" style="margin-top: 10px;">
             <div slot="header">
-                <span>其他设备检查信息</span>
+                <span>设备更换信息</span>
             </div>
             <el-card v-if="data.equipmentsReplaceItems.items[0].checked" shadow="hover" style="margin-top: 10px;">
                 <div slot="header">
@@ -667,14 +667,14 @@
                         </div>
                     </el-col>
                 </el-row>
-                <div v-if="data.batteryControlReplacePhotos.length > 0" style="width: 100%;">
+                <div v-if="data.batteryControllerReplacePhotos.length > 0" style="width: 100%;">
 
                     <div class="block-line"
                         style="height: 30px;display: flex;flex-direction: row;justify-content: center;margin-top: 10px;margin-bottom: 10px;">
                         <label>充电控制器更换照片</label>
                     </div>
 
-                    <el-row v-for="(item, index) in data.batteryControlReplacePhotos" :key="index" type="flex">
+                    <el-row v-for="(item, index) in data.batteryControllerReplacePhotos" :key="index" type="flex">
                         <el-col :span="24">
                             <el-image :src=toOss(item)></el-image>
                         </el-col>
@@ -903,7 +903,7 @@ export default {
                     }],
                     current: 0
                 },
-                othersEquipmentCheckPhotos: [],
+                otherEquipmentCheckPhotos: [],
                 othersEquipmentCheckRemark: '',
                 otherEquipmentCheckResult: 1,
                 //设备替换
@@ -956,7 +956,7 @@ export default {
                 sunPowerModelRemark: '',
                 sunPowerReplacePhotos: [],
                 batteryControlModelRemark: '',
-                batteryControlReplacePhotos: [],
+                batteryControllerReplacePhotos: [],
                 otherEquipmentModelRemark: '',
                 otherEquipmentReplacePhotos: [],
                 //巡检遗留问题描述
@@ -972,7 +972,7 @@ export default {
     methods: {
         toOss(path) {
             console.log("oss " + this.website.ossServer + path);
-            // return "/oss/galaxy/" + path;
+            //return "/oss/galaxy/" + path;
             return this.website.ossServer + path;
         },
         init() {
@@ -1060,7 +1060,7 @@ export default {
                     photos = data.data['otherEquipmentCheckPhotos'];
                     if (null != photos && photos.length > 0) {
                         let photoList = photos.split(",");
-                        this.data.othersEquipmentCheckPhotos = photoList;
+                        this.data.otherEquipmentCheckPhotos = photoList;
                     }
                     this.data.othersEquipmentCheckRemark = data.data['otherEquipmentCheckRemark'];
                     this.data.otherEquipmentCheckResult = data.data['otherEquipmentCheckResult'];

+ 322 - 0
src/views/business/inspection/inspectionreportlist.vue

@@ -0,0 +1,322 @@
+<!--
+ * @Title: 
+ * @Description: 巡检上报列表
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :page.sync="page" :data="data" ref="crud"
+                        v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
+                        @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
+                        @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+                        @refresh-change="refreshChange" @on-load="onLoad">
+                        <template slot-scope="{ row, index }" slot="menu">
+                            <el-button type="text" size="small" @click="openReportDetail(row)">查看详情
+                            </el-button>
+                        </template>
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+        <el-drawer title="巡检填报记录" :visible.sync="reportDialog" v-if="reportDialog" :size="drawerSize" :direction="direction"
+            :close-on-click-modal="false" append-to-body>
+            <div slot="title" class="header-title">
+                <span class="name">{{ dialogTitle }}</span>
+            </div>
+            <inspectionreportdetail :id="id" ref="inspectionreportdetail"></inspectionreportdetail>
+        </el-drawer>
+    </div>
+</template>
+<script>
+import {
+    getPage,
+} from "@/api/business/inspection/inspectionreport.js";
+
+import { mapGetters } from "vuex";
+import inspectionreportdetail from "./inspectionreportdetail.vue";
+export default {
+    components: {
+        inspectionreportdetail,
+    },
+    props: {
+        rainSeasonKind: {
+            type: [Number],
+            required: true
+        },
+    },
+    data() {
+        return {
+            id: '',
+            inspectionDate: '',
+            beforeRainSeasonReportId: '',
+            rainSeasonFirstReportId: '',
+            rainSeasonSecondReportId: '',
+            inspectionCountInfo: {
+            },
+            drawerSize: '50%',
+            reportDialog: false,
+            dialogTitle: '',
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            treeCode: '',
+            treeParentCode: '',
+            treeData: [],
+            treeOption: {
+                nodeKey: "id",
+                defaultExpandedKeys: [],
+                lazy: false,
+                addBtn: false,
+                menu: true,
+                size: "small",
+                props: {
+                    labelText: "标题",
+                    label: "title",
+                    value: "value",
+                    children: "children",
+                },
+            },
+            option: {
+                labelWidth: 140,
+                viewLabelWidth: 140,
+                searchlabelWidth: 140,
+                height: "auto",
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: true,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                addBtn: false,
+                border: true,
+                index: true,
+                editBtn: false,
+                delBtn: false,
+                viewBtn: false,
+                menuWidth: 200,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                column: [
+                    {
+                        label: "测站编码",
+                        prop: "rtuCode",
+                        span: 12,
+                        search: true,
+                        width: 120,
+                    },
+                    {
+                        label: "测站名称",
+                        prop: "rtuName",
+                        span: 12,
+                        search: true,
+                        // html: true,
+                        // formatter: (val) => {
+                        //     if (val.rtuName) {
+                        //         return '<b>' + val.rtuName + '</b>/' + '<b style="color:grey">' + val.rtuCode + '</b>'
+                        //     } else {
+                        //         return '<b>' + val.rtuName + '</b>'
+                        //     }
+                        // }
+                    },
+                    {
+                        label: "填报人",
+                        prop: "servicePersonName",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "填报时间",
+                        prop: "createTime",
+                        span: 24,
+
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+
+            };
+        },
+    },
+    created() {
+
+    },
+    watch: {
+        // 'editForm.planId': {
+        //     handler(val) {
+        //         if (val != '' && val != undefined && val != null) {
+        //             this.planId = val;
+        //         }
+        //     },
+        //     immediate: true
+        // }
+    },
+    methods: {
+        init() {
+
+        },
+        openReportDetail(item) {
+            this.reportDialog = true;
+            this.dialogTitle = '设备巡检填报信息';
+            this.id = item.id;
+            this.$nextTick(() => {
+                this.$refs["inspectionreportdetail"].init();
+            });
+        },
+        searchReset() {
+            this.query = {};
+            this.query['adCode'] = this.treeCode;
+            this.page.currentPage = 1;
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                // getDetail(this.form.id).then((res) => {
+                //     this.form = res.data.data;
+                // });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            var params = {};
+            this.onLoad(this.page, params);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+
+<style  lang="scss" scoped>
+.common-dialog {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    overflow: hidden;
+
+    .el-dialog {
+        margin: 0 auto !important;
+        position: relative;
+        overflow: hidden;
+
+        .el-dialog__header {
+            position: absolute;
+            left: 0;
+            right: 0;
+            bottom: 0;
+            width: 100%;
+            height: 60px;
+            z-index: 1;
+        }
+
+        .el-dialog__body {
+            position: relative;
+            left: 0;
+            top: 60px;
+            bottom: 0;
+            right: 0;
+            padding: 0;
+            width: 100%;
+            overflow: hidden;
+            overflow-y: auto;
+            max-height: 90vh;
+            padding-top: 80px;
+            padding-bottom: 100px;
+            z-index: 1;
+        }
+
+        .el-dialog__footer {
+            position: absolute;
+            left: 0;
+            right: 0;
+            bottom: 0;
+            width: 100%;
+            height: 80px;
+            z-index: 1;
+        }
+    }
+}
+
+.line {
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-start;
+}
+
+.line .lineText {
+    margin-left: 10px;
+    margin-right: 0px;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+}
+
+.line .lineText .inspectionCount {
+    color: dodgerblue;
+    font-size: 0.8rem;
+}
+
+.line .lineText .beforeRainInspectionCount {
+    color: darkorange;
+    font-size: 0.8rem;
+}
+
+.line .lineText .rainFirstInspectionCount {
+    color: lightcoral;
+    font-size: 0.8rem;
+}
+
+.line .lineText .rainSencodInspectionCount {
+    color: darkcyan;
+    font-size: 0.8rem;
+}
+</style>

+ 19 - 17
src/views/business/inspection/nonetwork/index.vue

@@ -17,15 +17,17 @@
                         @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
                         @refresh-change="refreshChange" @on-load="onLoad">
                         <template slot-scope="{ row, index }" slot="menu">
-                            <el-button type="text" size="small" @click="openReportDetail(row)">填报详情
+                            <el-button type="text" size="small" @click="openReportDetail(row)"
+                                icon="el-icon-edit-outline">填报详情
                             </el-button>
                             <el-button
                                 v-if="permission.inspection_nonetwork_photo_submit_close == 1 && row.photoSupplementSubmitStatus == 0"
-                                type="text" size="small" @click="toPhotoSubmit(row)">图片补交
+                                type="text" size="small" @click="toPhotoSubmit(row)" icon="el-icon-upload2">图片补交
                             </el-button>
                             <el-button
                                 v-if="permission.inspection_nonetwork_photo_submit_close == 1 && row.photoSupplementSubmitStatus === 0"
-                                type="text" size="small" style="color:lightcoral" @click="closePhotoSubmit(row)">关闭问题
+                                type="text" size="small" style="color:lightcoral" @click="closePhotoSubmit(row)"
+                                icon="el-icon-circle-close">关闭问题
                             </el-button>
                         </template>
                     </avue-crud>
@@ -92,33 +94,33 @@ export default {
                 editBtn: false,
                 delBtn: false,
                 viewBtn: false,
-                menuWidth: 200,
+                menuWidth: 300,
                 dialogType: "drawer",
                 columnBtn: false,
                 dialogClickModal: false,
                 column: [
                     {
-                        label: "测站名称",
-                        prop: "rtuName",
+                        label: "测站编码",
+                        prop: "rtuCode",
                         span: 12,
                         search: true,
                         searchSpan: 4,
-                        html: true,
-                        formatter: (val) => {
-                            if (val.rtuName) {
-                                return '<b>' + val.rtuName + '</b>/' + '<b style="color:grey">' + val.rtuCode + '</b>'
-                            } else {
-                                return '<b>' + val.rtuName + '</b>'
-                            }
-                        }
+                        width: 120,
                     },
                     {
-                        label: "测站编码",
-                        prop: "rtuCode",
+                        label: "测站名称",
+                        prop: "rtuName",
                         span: 12,
                         search: true,
                         searchSpan: 4,
-                        hide: true,
+                        // html: true,
+                        // formatter: (val) => {
+                        //     if (val.rtuName) {
+                        //         return '<b>' + val.rtuName + '</b>/' + '<b style="color:grey">' + val.rtuCode + '</b>'
+                        //     } else {
+                        //         return '<b>' + val.rtuName + '</b>'
+                        //     }
+                        // }
                     },
                     {
                         label: "行政区",

+ 22 - 16
src/views/business/inspection/remainingproblems/index.vue

@@ -23,10 +23,12 @@
                                 @click="uncloseRemainingProblemsExportHandle">导出当前汛期未关闭巡检遗留问题表</el-button>
                         </template>
                         <template slot-scope="{ row, index }" slot="menu">
-                            <el-button type="text" size="small" @click="openReportDetail(row)">填报详情
+                            <el-button type="text" size="small" @click="openReportDetail(row)"
+                                icon="el-icon-edit-outline">填报详情
                             </el-button>
                             <el-button v-if="permission.remainingproblems_close == 1 && row.remainQuestionState == 1"
-                                type="text" size="small" style="color:lightcoral" @click="closeRemainingProblem(row)">关闭问题
+                                type="text" size="small" style="color:lightcoral" @click="closeRemainingProblem(row)"
+                                icon="el-icon-circle-close">关闭问题
                             </el-button>
                         </template>
                     </avue-crud>
@@ -92,32 +94,34 @@ export default {
                 dialogClickModal: false,
                 column: [
                     {
-                        label: "测站名称",
-                        prop: "rtuName",
+                        label: "测站编码",
+                        prop: "rtuCode",
                         span: 12,
                         search: true,
                         searchSpan: 4,
-                        html: true,
-                        formatter: (val) => {
-                            if (val.rtuName) {
-                                return '<b>' + val.rtuName + '</b>/' + '<b style="color:grey">' + val.rtuCode + '</b>'
-                            } else {
-                                return '<b>' + val.rtuName + '</b>'
-                            }
-                        }
+                        width: 120,
                     },
                     {
-                        label: "测站编码",
-                        prop: "rtuCode",
+                        label: "测站名称",
+                        prop: "rtuName",
                         span: 12,
                         search: true,
                         searchSpan: 4,
-                        hide: true,
+                        width: 160,
+                        // html: true,
+                        // formatter: (val) => {
+                        //     if (val.rtuName) {
+                        //         return '<b>' + val.rtuName + '</b>/' + '<b style="color:grey">' + val.rtuCode + '</b>'
+                        //     } else {
+                        //         return '<b>' + val.rtuName + '</b>'
+                        //     }
+                        // }
                     },
                     {
                         label: "行政区",
                         prop: "adCity",
                         span: 12,
+                        width: 160,
                         editDisplay: false,
                         addDisplay: false,
                         html: true,
@@ -147,9 +151,9 @@ export default {
                         search: true,
                         label: "汛期",
                         prop: "rainSeasonKind",
-
                         type: 'select',
                         span: 24,
+                        width: 160,
                         searchSpan: 4,
                         props: {
                             label: 'dictValue',
@@ -215,6 +219,7 @@ export default {
                         prop: "remainQuestion",
                         span: 24,
                         overHidden: true,
+                        minWidth: 160,
                     },
                     {
                         label: "问题处理状态",
@@ -236,6 +241,7 @@ export default {
                         prop: "remainQuestionResolution",
                         span: 24,
                         overHidden: true,
+                        minWidth: 160,
                     },
                 ],
             },

+ 26 - 6
src/views/business/inspection/todaynspectionrportlist.vue

@@ -16,20 +16,32 @@
                         @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
                         @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
                         @refresh-change="refreshChange" @on-load="onLoad">
+                        <template slot-scope="{ row }" slot="menu">
+                            <el-button type="text" size="small" @click="openDetail(row)">查看详情
+                            </el-button>
+                        </template>
                     </avue-crud>
                 </basic-container>
             </el-col>
         </el-row>
+        <el-drawer title="设备巡检详情" :visible.sync="inspectionreportdetailDig" v-if="inspectionreportdetailDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <inspectionreportdetail ref="inspectionreportdetail" :id="id"></inspectionreportdetail>
+        </el-drawer>
     </div>
 </template>
 <script>
 import { todayInspectionReportPage, getDetail } from "@/api/business/inspection/inspectionreport.js";
+import inspectionreportdetail from "./inspectionreportdetail.vue";
 export default {
-    components: {},
+    components: {
+        inspectionreportdetail
+    },
     name: 'todaynspectionrportlist',
     data() {
         return {
             id: "",
+            inspectionreportdetailDig: false,
             form: {},
             selectionList: [],
             query: {},
@@ -61,17 +73,18 @@ export default {
                 dialogType: "drawer",
                 dialogClickModal: false,
                 columnBtn: false,
-                menu: false,
+                menu: true,
                 column: [
                     {
-                        label: "测站名称",
-                        prop: "rtuName",
+                        label: "测站编码",
+                        prop: "rtuCode",
                         span: 24,
                         search: true,
+                        width: 120,
                     },
                     {
-                        label: "测站编码",
-                        prop: "rtuCode",
+                        label: "测站名称",
+                        prop: "rtuName",
                         span: 24,
                         search: true,
                     },
@@ -118,6 +131,13 @@ export default {
         init() {
             this.onLoad(this.page);
         },
+        openDetail(item) {
+            this.id = item.id;
+            this.inspectionreportdetailDig = true;
+            this.$nextTick(() => {
+                this.$refs["inspectionreportdetail"].init();
+            });
+        },
         searchReset() {
             this.query = {};
             this.page.currentPage = 1;

+ 13 - 13
src/views/business/inspection/unfinishedinspection/index.vue

@@ -90,27 +90,27 @@ export default {
                 dialogClickModal: false,
                 column: [
                     {
-                        label: "测站名称",
-                        prop: "rtuName",
+                        label: "测站编码",
+                        prop: "rtuCode",
                         span: 12,
                         search: true,
                         searchSpan: 4,
-                        html: true,
-                        formatter: (val) => {
-                            if (val.rtuName) {
-                                return '<b>' + val.rtuName + '</b>/' + '<b style="color:grey">' + val.rtuCode + '</b>'
-                            } else {
-                                return '<b>' + val.rtuName + '</b>'
-                            }
-                        }
+                        width: 120,
                     },
                     {
-                        label: "测站编码",
-                        prop: "rtuCode",
+                        label: "测站名称",
+                        prop: "rtuName",
                         span: 12,
                         search: true,
                         searchSpan: 4,
-                        hide: true,
+                        // html: true,
+                        // formatter: (val) => {
+                        //     if (val.rtuName) {
+                        //         return '<b>' + val.rtuName + '</b>/' + '<b style="color:grey">' + val.rtuCode + '</b>'
+                        //     } else {
+                        //         return '<b>' + val.rtuName + '</b>'
+                        //     }
+                        // }
                     },
                     {
                         label: "行政区",

+ 1 - 1
src/views/business/manage/batteryreplacelist.vue

@@ -105,7 +105,7 @@ export default {
                         formatter: (val) => {
                             let htmltext = '';
                             if (val.replaceKind === 0) {
-                                htmltext = '<b style="color:blue">初次安装</b>';
+                                htmltext = '<b style="color:blue">更换</b>';
                             } else if (val.replaceKind === 1) {
                                 htmltext = '<b style="color:blue">维修更换</b>';
                             } else if (val.replaceKind === 2) {

+ 1 - 1
src/views/business/manage/groundsensorreplacelist.vue

@@ -105,7 +105,7 @@ export default {
                         formatter: (val) => {
                             let htmltext = '';
                             if (val.replaceKind === 0) {
-                                htmltext = '<b style="color:blue">初次安装</b>';
+                                htmltext = '<b style="color:blue">更换</b>';
                             } else if (val.replaceKind === 1) {
                                 htmltext = '<b style="color:blue">维修更换</b>';
                             } else if (val.replaceKind === 2) {

+ 55 - 33
src/views/business/manage/index.vue

@@ -29,7 +29,8 @@
                         v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
                         @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
                         @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
-                        @refresh-change="refreshChange" @on-load="onLoad" @before-open="beforeOpen" @cell-click="cellClick">
+                        @refresh-change="refreshChange" @on-load="onLoad" @before-open="beforeOpen"
+                        @sort-change="sortChange" @cell-click="cellClick">
                         <template slot-scope="scope" slot="menuLeft">
                             <div class="line">
                                 <el-button type="primary" icon="el-icon-download" size="small"
@@ -65,18 +66,19 @@
                             </div>
                         </template>
                         <template slot-scope="{ row, index }" slot="menu">
-                            <el-button type="text" size="small" @click="openRtuDetail(row)">测站信息
+                            <el-button type="text" size="small" @click="openRtuDetail(row)" icon="el-icon-view">测站信息
                             </el-button>
-                            <el-button type="text" size="small" @click="openWarnInfo(row)">异常信息
+                            <el-button type="text" size="small" @click="openWarnInfo(row)"
+                                icon="el-icon-warning-outline">异常信息
                             </el-button>
-                            <el-button type="text" size="small" @click="openOrder(row)">维修任务
+                            <el-button type="text" size="small" @click="openOrder(row)" icon="el-icon-edit-outline">维修任务
                             </el-button>
-                            <el-button type="text" size="small" @click="openInspection(row)">设备巡检
+                            <el-button type="text" size="small" @click="openInspection(row)" icon="el-icon-date">设备巡检
                             </el-button>
-                            <el-button type="text" size="small" @click="openRealData(row)">实时数据
+                            <el-button type="text" size="small" @click="openRealData(row)" icon="el-icon-s-data">实时数据
                             </el-button>
                             <el-button v-if="permission.rtu_manage_btn_order" type="text" size="small"
-                                @click="toManageCheckOrder(row)">人工派单
+                                @click="toManageCheckOrder(row)" icon="el-icon-position">人工派单
                             </el-button>
                         </template>
                     </avue-crud>
@@ -270,26 +272,26 @@ export default {
                         type: 'input'
                     },
                     {
-                        label: "测站名称",
-                        prop: "rtuName",
+                        label: "测站编码",
+                        prop: "rtuCode",
                         span: 24,
                         readonly: true,
                         clearable: false,
                         rules: [{
                             required: true,
-                            message: "请输入测站名称",
+                            message: "请输入测站编码",
                             trigger: "blur"
                         }]
                     },
                     {
-                        label: "测站编码",
-                        prop: "rtuCode",
+                        label: "测站名称",
+                        prop: "rtuName",
                         span: 24,
                         readonly: true,
                         clearable: false,
                         rules: [{
                             required: true,
-                            message: "请输入测站编码",
+                            message: "请输入测站名称",
                             trigger: "blur"
                         }]
                     },
@@ -308,6 +310,7 @@ export default {
             form: {},
             selectionList: [],
             query: {},
+            sort: {},
             loading: true,
             page: {
                 pageSize: 10,
@@ -352,27 +355,11 @@ export default {
                 editBtn: false,
                 delBtn: false,
                 addBtn: false,
-                menuWidth: 280,
+                menuWidth: 300,
                 dialogType: "drawer",
                 dialogClickModal: false,
                 columnBtn: false,
                 column: [
-                    {
-                        label: "测站名称",
-                        prop: "rtuName",
-                        search: true,
-                        searchSpan: 5,
-                        span: 6,
-                        width: 120,
-                        html: true,
-                        formatter: (val) => {
-                            if (val.rtuName) {
-                                return '<b>' + val.rtuName + '</b>/' + '<b style="color:grey">' + val.rtuCode + '</b>'
-                            } else {
-                                return '<b style="color:grey">' + val.rtuName + '</b>'
-                            }
-                        }
-                    },
                     {
                         label: "测站编码",
                         prop: "rtuCode",
@@ -380,7 +367,22 @@ export default {
                         width: 120,
                         search: true,
                         searchSpan: 5,
-                        hide: true,
+                    },
+                    {
+                        label: "测站名称",
+                        prop: "rtuName",
+                        search: true,
+                        searchSpan: 5,
+                        span: 6,
+                        width: 120,
+                        // html: true,
+                        // formatter: (val) => {
+                        //     if (val.rtuName) {
+                        //         return '<b>' + val.rtuName + '</b>/' + '<b style="color:grey">' + val.rtuCode + '</b>'
+                        //     } else {
+                        //         return '<b style="color:grey">' + val.rtuName + '</b>'
+                        //     }
+                        // }
                     },
                     {
                         label: "运行状态",
@@ -402,7 +404,8 @@ export default {
                         label: "最后上线时间",
                         prop: "lastUpTime",
                         span: 24,
-                        width: 160
+                        width: 160,
+                        sortable: 'custom',
                     },
                     {
                         label: "实时数据",
@@ -804,6 +807,25 @@ export default {
             this.onLoad(this.page, params);
             this.getCountInfo(this.treeCode);
         },
+        sortChange(val) {
+            console.log(JSON.stringify(val))
+            //prop":"tm","order":"ascending"  descending
+            let prop = val.prop;
+            if (prop === 'lastUpTime') {
+                this.page.currentPage = 1;
+                var params = {};
+                let order = val.order;
+                if (order) {
+                    params['order'] = order;
+                    params['prop'] = prop;
+                    this.sort = {};
+                    Object.assign(this.sort, params)
+                } else {
+                    this.sort = {};
+                }
+                this.onLoad(this.page);
+            }
+        },
         cellClick(row, column, cell, event) {
             if (event.isTrusted) {
                 this.rtuCode = row.rtuCode;
@@ -1119,7 +1141,7 @@ export default {
             getList(
                 page.currentPage,
                 page.pageSize,
-                Object.assign(params, this.query)
+                Object.assign(params, this.sort, this.query)
             ).then((res) => {
                 const data = res.data.data;
                 console.log(JSON.stringify(data))

+ 1 - 1
src/views/business/manage/rainsensorreplacelist.vue

@@ -105,7 +105,7 @@ export default {
                         formatter: (val) => {
                             let htmltext = '';
                             if (val.replaceKind === 0) {
-                                htmltext = '<b style="color:blue">初次安装</b>';
+                                htmltext = '<b style="color:blue">更换</b>';
                             } else if (val.replaceKind === 1) {
                                 htmltext = '<b style="color:blue">维修更换</b>';
                             } else if (val.replaceKind === 2) {

+ 60 - 60
src/views/business/manage/rtuDetail.vue

@@ -12,23 +12,23 @@
         <el-form ref="form">
             <el-card shadow="hover" style="margin-top: 10px;">
                 <div slot="header">
-                <span>测站基本信息</span>
+                    <span>测站基本信息</span>
                 </div>
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
                 <el-form-item label="测站名称:" labelWidth="150px">
                     <div style="color: black;">{{ rtuInfo.rtuName }}</div>
                 </el-form-item>
-            <!-- </el-col>
+                <!-- </el-col>
                     </el-row> -->
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
                 <el-form-item label="测站编码:" labelWidth="150px">
                     <div style="color: black;">{{ rtuInfo.rtuCode }}</div>
                 </el-form-item>
-            <!-- </el-col>
+                <!-- </el-col>
                     </el-row> -->
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
                 <el-form-item label="站点类型:" labelWidth="150px">
                     <label style="color: black;">{{ rtuInfo.rtuKindDesc }}</label>
@@ -38,14 +38,14 @@
                 <!-- <el-row type="flex">
                     <el-col :span="24"> -->
                 <el-form-item label="通信网络类型:" labelWidth="150px">
-                <div>
+                    <div>
                         <label v-if="(rtuInfo.isSatellite == 1)" style="color: black;">北斗通信</label>
                         <label v-else style="color: black;">4G/5G移动网络通信</label>
                     </div>
                 </el-form-item>
                 <!-- </el-col>
                     </el-row> -->
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
                 <el-form-item label="运维单位:" labelWidth="150px">
                     <div>
@@ -60,30 +60,30 @@
                 <div slot="header">
                     <span>测站地理位置信息</span>
                 </div>
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
-            <el-form-item label="盟市:" labelWidth="150px">
+                <el-form-item label="盟市:" labelWidth="150px">
                     <div>
                         <label style="color: black;">{{ rtuInfo.adCity }}</label>
                     </div>
                 </el-form-item>
                 <!-- </el-col>
                     </el-row> -->
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
-            <el-form-item label="旗县区:" labelWidth="150px">
+                <el-form-item label="旗县区:" labelWidth="150px">
                     <div>
                         <label style="color: black;">{{ rtuInfo.adDist }}</label>
                     </div>
                 </el-form-item>
                 <!-- </el-col>
                     </el-row> -->
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                     <el-col :span="24"> -->
-                <el-form-item label="经度:" labelWidth="150px">
+                <el-form-item label="经度:" labelWidth="150px">
                     <div class="block">
-                    <label style="color: black;">{{ rtuInfo.lng }}</label>
-                </div>
+                        <label style="color: black;">{{ rtuInfo.lng }},{{ rtuInfo.lat }}</label>
+                    </div>
                 </el-form-item>
                 <!-- </el-col>
 
@@ -92,11 +92,11 @@
                 <!-- <el-row type="flex">
 
                         <el-col :span="24"> -->
-                <el-form-item label="纬度:" labelWidth="150px">
-                <div class="block">
+                <!-- <el-form-item label="纬度:" labelWidth="150px">
+                    <div class="block">
                         <label style="color: black;">{{ rtuInfo.lat }}</label>
                     </div>
-                </el-form-item>
+                </el-form-item> -->
                 <!-- </el-col>
                 </el-row> -->
 
@@ -107,19 +107,19 @@
                 </el-form-item>
                 <!-- </el-col>
                     </el-row> -->
-        </el-card>
+            </el-card>
 
 
             <el-card shadow="hover" style="margin-top: 10px;">
                 <div slot="header">
                     <span>RTU信息</span>
                 </div>
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                     <el-col :span="24"> -->
-            <el-form-item label="RTU品牌:" labelWidth="150px">
+                <el-form-item label="RTU品牌:" labelWidth="150px">
                     <div class="block">
-                    <label style="color: black;"> {{ rtuInfo.rtuBrand }}</label>
-                </div>
+                        <label style="color: black;"> {{ rtuInfo.rtuBrand }}</label>
+                    </div>
                 </el-form-item>
                 <!-- </el-col>
 
@@ -129,17 +129,17 @@
                 <el-row type="flex">
                         <el-col :span="24"> -->
                 <el-form-item label="RTU型号:" labelWidth="150px">
-                <div class="block">
+                    <div class="block">
                         <label style="color: black;">{{ rtuInfo.rtuModel }}</label>
                     </div>
                 </el-form-item>
                 <!-- </el-col>
                     </el-row> -->
 
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
                 <el-form-item label="RTU更换时间:" labelWidth="150px">
-                <div class="block">
+                    <div class="block">
                         <label style="color: black;">{{ rtuInfo.rtuReplaceDate }}</label>
                     </div>
                 </el-form-item>
@@ -154,7 +154,7 @@
                     <label v-else-if="rtuInfo.datagramToSheng = 1 && rtuInfo.datagramToShi == 1"
                         style="color: black;">自治区/盟市</label>
                     <label v-else-if="rtuInfo.datagramToSheng = 1 && rtuInfo.datagramToQu == 1"
-                    style="color: black;">自治区/旗县区</label>
+                        style="color: black;">自治区/旗县区</label>
                     <label v-else-if="rtuInfo.datagramToShi == 1 && rtuInfo.datagramToQu == 1"
                         style="color: black;">盟市/旗县区</label>
                     <label v-else-if="rtuInfo.datagramToSheng = 1" style="color: black;">自治区</label>
@@ -170,67 +170,67 @@
                 <div slot="header">
                     <span>雨量传感器信息</span>
                 </div>
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                     <el-col :span="24"> -->
                 <el-form-item label="雨量计品牌:" labelWidth="150px">
-                <div class="block">
+                    <div class="block">
                         <label style="color: black;">{{ rtuInfo.rainSensorBrand }}</label>
                     </div>
                 </el-form-item>
                 <!-- </el-col>
 
                     </el-row> -->
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
-            <el-form-item label="雨量计型号:" labelWidth="150px">
+                <el-form-item label="雨量计型号:" labelWidth="150px">
                     <div class="block">
                         <label style="color: black;">{{ rtuInfo.rainSensorModel }}</label>
                     </div>
                 </el-form-item>
                 <!-- </el-col>
                     </el-row> -->
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
                 <el-form-item label="雨量计更换时间:" labelWidth="150px">
                     <div class="block">
                         <label style="color: black;">{{ rtuInfo.rainSensorReplaceDate }}</label>
                     </div>
                 </el-form-item>
-            <!-- </el-col>
+                <!-- </el-col>
                     </el-row> -->
             </el-card>
             <el-card v-if="(rtuInfo.isRiver == 1 || rtuInfo.isRes == 1)" shadow="hover" style="margin-top: 10px;">
                 <div slot="header">
                     <span>水位计传感器信息</span>
                 </div>
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
-            <el-form-item label="水位计传感器类型:" labelWidth="150px">
+                <el-form-item label="水位计传感器类型:" labelWidth="150px">
                     <div class="block">
                         <label style="color: black;">{{ rtuInfo.waterSensorTypeText }}</label>
                     </div>
                 </el-form-item>
                 <!-- </el-col>
                     </el-row> -->
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
-            <el-form-item label="水位计品牌:" labelWidth="150px">
+                <el-form-item label="水位计品牌:" labelWidth="150px">
                     <div class="block">
                         <label style="color: black;">{{ rtuInfo.waterSensorBrand }}</label>
                     </div>
                 </el-form-item>
                 <!-- </el-col>
                     </el-row> -->
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
-            <el-form-item label="水位计型号:" labelWidth="150px">
+                <el-form-item label="水位计型号:" labelWidth="150px">
                     <div class="block">
                         <label style="color: black;">{{ rtuInfo.waterSensorModel }}</label>
                     </div>
                 </el-form-item>
                 <!-- </el-col>
                     </el-row> -->
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
                 <el-form-item label="水位计更换时间:" labelWidth="150px">
                     <div class="block">
@@ -239,41 +239,41 @@
                 </el-form-item>
                 <!-- </el-col>
                     </el-row> -->
-        </el-card>
+            </el-card>
 
 
             <el-card v-if="rtuInfo.isGround == 1" shadow="hover" style="margin-top: 10px;">
                 <div slot="header">
                     <span>墒情传感器信息</span>
                 </div>
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
-            <el-form-item label="墒情站传感器类型:" labelWidth="150px">
+                <el-form-item label="墒情站传感器类型:" labelWidth="150px">
                     <div class="block">
                         <label style="color: black;">{{ rtuInfo.groundSensorTypeText }}</label>
                     </div>
                 </el-form-item>
                 <!-- </el-col>
                     </el-row> -->
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
-            <el-form-item label="墒情传感器品牌:" labelWidth="150px">
+                <el-form-item label="墒情传感器品牌:" labelWidth="150px">
                     <div class="block">
                         <label style="color: black;">{{ rtuInfo.groundSensorBrand }}</label>
                     </div>
                 </el-form-item>
                 <!-- </el-col>
                     </el-row> -->
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
-            <el-form-item label="墒情传感器型号:" labelWidth="150px">
+                <el-form-item label="墒情传感器型号:" labelWidth="150px">
                     <div class="block">
                         <label style="color: black;">{{ rtuInfo.groundSensorModel }}</label>
                     </div>
                 </el-form-item>
                 <!-- </el-col>
                     </el-row> -->
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
                 <el-form-item label="墒情传感器更换时间:" labelWidth="150px">
                     <div class="block">
@@ -290,26 +290,26 @@
                 <div slot="header">
                     <span>供电系统信息</span>
                 </div>
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
-            <el-form-item label="蓄电池容量(AH):" labelWidth="150px">
+                <el-form-item label="蓄电池容量(AH):" labelWidth="150px">
                     <div class="block">
                         <label style="color: black;">{{ rtuInfo.batteryModel }}</label>
                     </div>
                 </el-form-item>
                 <!-- </el-col>
                     </el-row> -->
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
                 <el-form-item label="蓄电池更换时间:" labelWidth="150px">
-                <div class="block">
+                    <div class="block">
                         <label style="color: black;">{{ rtuInfo.batteryReplaceDate }}</label>
                     </div>
                 </el-form-item>
                 <!-- </el-col>
                     </el-row> -->
 
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
                 <el-form-item label="太阳能板(w):" labelWidth="150px">
                     <div class="block">
@@ -325,7 +325,7 @@
                 <div slot="header">
                     <span>卫星通讯</span>
                 </div>
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
                 <el-form-item label="通讯模式:" labelWidth="150px">
                     <div class="block">
@@ -340,25 +340,25 @@
                 <div slot="header">
                     <span>SIM卡信息</span>
                 </div>
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
-            <el-form-item label="SIM卡号:" labelWidth="150px">
+                <el-form-item label="SIM卡号:" labelWidth="150px">
                     <div class="block">
                         <label style="color: black;">{{ rtuInfo.networkSimId }}</label>
                     </div>
                 </el-form-item>
                 <!-- </el-col>
                     </el-row> -->
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
-            <el-form-item label="SIM卡开卡单位:" labelWidth="150px">
+                <el-form-item label="SIM卡开卡单位:" labelWidth="150px">
                     <div class="block">
                         <label style="color: black;">{{ rtuInfo.networkPayer }}</label>
                     </div>
                 </el-form-item>
                 <!-- </el-col>
                     </el-row> -->
-            <!-- <el-row type="flex">
+                <!-- <el-row type="flex">
                         <el-col :span="24"> -->
                 <el-form-item label="SIM卡缴费截止时间:" labelWidth="150px">
                     <div class="block">

+ 1 - 1
src/views/business/manage/rtureplacelist.vue

@@ -105,7 +105,7 @@ export default {
                         formatter: (val) => {
                             let htmltext = '';
                             if (val.replaceKind === 0) {
-                                htmltext = '<b style="color:blue">初次安装</b>';
+                                htmltext = '<b style="color:blue">更换</b>';
                             } else if (val.replaceKind === 1) {
                                 htmltext = '<b style="color:blue">维修更换</b>';
                             } else if (val.replaceKind === 2) {

+ 1 - 1
src/views/business/manage/watersensorreplacelist.vue

@@ -105,7 +105,7 @@ export default {
                         formatter: (val) => {
                             let htmltext = '';
                             if (val.replaceKind === 0) {
-                                htmltext = '<b style="color:blue">初次安装</b>';
+                                htmltext = '<b style="color:blue">更换</b>';
                             } else if (val.replaceKind === 1) {
                                 htmltext = '<b style="color:blue">维修更换</b>';
                             } else if (val.replaceKind === 2) {

+ 96 - 131
src/views/business/order/checkorderhistory.vue

@@ -31,8 +31,8 @@
                         v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
                         @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
                         @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
-                        @refresh-change="refreshChange" @on-load="onLoad">
-                        <template slot-scope="scope" slot="menuLeft">
+                        @refresh-change="refreshChange" @on-load="onLoad" @sort-change="sortChange">
+                        <!-- <template slot-scope="scope" slot="menuLeft">
                             <div class="line">
 
                                 <div class="lineText">
@@ -40,51 +40,52 @@
                                         countInfo.reportOrderCount }}</span>
                                 </div>
                             </div>
-                        </template>
+                        </template> -->
 
                         <template slot-scope="{ row, index }" slot="menu">
-                            <el-button type="text" size="small" @click="openProcessList(row)">维修详情
+                            <el-button type="text" size="small" @click="openProcessList(row)"
+                                icon="el-icon-edit-outline">维修历史
                             </el-button>
                         </template>
                     </avue-crud>
                 </basic-container>
             </el-col>
         </el-row>
-        <el-drawer :visible.sync="recordDialog" v-if="recordDialog" title="维修详情" direction="rtl" size="50%"
+        <el-drawer :visible.sync="recordDialog" v-if="recordDialog" title="维修历史" direction="rtl" size="60%"
             append-to-body="true">
             <div slot="title" class="header-title">
                 <span class="name">{{ dialogTitle }}</span>
             </div>
-            <checkorderprocessdetail :orderId="id" ref="checkorderprocessdetail"></checkorderprocessdetail>
+            <rtucheckorderhistorylistvue :rtuCode="rtuCode" ref="rtucheckorderhistorylistvue"></rtucheckorderhistorylistvue>
         </el-drawer>
     </div>
 </template>
 
 <script>
 import {
-    getPage,
+    getHistroyPage,
     getDetail,
-    getCountInfo
 } from "@/api/business/order/order.js";
 import { getTree } from "@/api/baseinfo/region.js";
-import checkorderprocessdetail from "./checkorderprocessdetail.vue";
+import rtucheckorderhistorylistvue from "./rtucheckorderhistorylist.vue";
 import { mapGetters } from "vuex";
 export default {
     components: {
-        checkorderprocessdetail,
+        rtucheckorderhistorylistvue,
     },
     name: 'checkorderhistory',
     data() {
         return {
             dialogTitle: "维修任务历史记录",
             recordDialog: false,
-            id: "",
+            rtuCode: '',
             form: {},
             selectionList: [],
             countInfo: {
                 reportOrderCount: 0
             },
             query: {},
+            sort: {},
             loading: true,
             page: {
                 pageSize: 10,
@@ -132,127 +133,92 @@ export default {
                 columnBtn: false,
                 column: [
                     {
-                        label: "测站名称",
-                        prop: "rtuName",
+                        label: "测站编码",
+                        prop: "rtuCode",
                         span: 12,
                         search: true,
-                        html: true,
-                        formatter: (val) => {
-                            if (val.rtuName) {
-                                return '<b>' + val.rtuName + '</b>/' + '<b style="color:grey">' + val.rtuCode + '</b>'
-                            } else {
-                                return '<b>' + val.rtuName + '</b>'
-                            }
-                        }
+                        width: 120,
                     },
                     {
-                        label: "测站编码",
-                        prop: "rtuCode",
+                        label: "测站名称",
+                        prop: "rtuName",
                         span: 12,
                         search: true,
-                        hide: true,
+                        // html: true,
+                        // formatter: (val) => {
+                        //     if (val.rtuName) {
+                        //         return '<b>' + val.rtuName + '</b>/' + '<b style="color:grey">' + val.rtuCode + '</b>'
+                        //     } else {
+                        //         return '<b>' + val.rtuName + '</b>'
+                        //     }
+                        // }
                     },
                     {
                         label: "行政区",
-                        prop: "areaName",
+                        prop: "adCity",
                         span: 12,
+                        hide: true,
                         editDisplay: false,
                         addDisplay: false,
+                        html: true,
+                        formatter: (val) => {
+                            if (val.adCity) {
+                                return '<b>' + val.adCity + '</b>/' + '<b style="color:grey">' + val.adDist + '</b>'
+                            }
+                        }
                     },
                     {
                         label: "运维单位",
                         prop: "manageCompany",
                         span: 12,
                     },
-                    // {
-                    //     search: true,
-                    //     label: "运维单位",
-                    //     prop: "orgId",
-                    //     hide: true,
-                    //     type: 'select',
-                    //     span: 12,
-                    //     props: {
-                    //         label: 'dictValue',
-                    //         value: 'id'
-                    //     },
-                    //     dicUrl: '/api/galaxy-business/baseinfo/org/list',
-                    // },
-                    // {
-                    //     label: "维修状态",
-                    //     prop: "orderStatusKey",
-                    //     span: 12,
-                    //     props: {
-                    //         label: 'dictValue',
-                    //         value: 'id'
-                    //     },
-                    //     dicUrl: '/api/galaxy-system/dict-biz/dictionary?code=rtu_check_order_status',
-                    // },
-                    // {
-                    //     label: "预警类别",
-                    //     prop: "warnKind",
-                    //     span: 12,
-                    //     props: {
-                    //         label: 'dictValue',
-                    //         value: 'id'
-                    //     },
-                    //     dicUrl: '/api/galaxy-system/dict-biz/dictionary?code=warn_kinds',
-                    // },
-                    // {
-                    //     label: "工单说明",
-                    //     prop: "orderDesc",
-                    //     span: 12,
-                    // },
-                    // {
-                    //     label: "处理人",
-                    //     prop: "processorName",
-                    //     span: 12,
-                    // },
                     {
-                        label: "创建时间",
-                        prop: "createTime",
+                        label: "安装位置",
+                        prop: "locationDesc",
                         span: 12,
+                        overHidden: true,
                     },
                     {
-                        label: "关闭时间",
-                        prop: "updateTime",
+                        label: "测站类型",
+                        prop: "isRain",
                         span: 12,
+                        html: true,
+                        formatter: (val) => {
+                            let html = '';
+                            if (val.isRain && val.isRain == 1) {
+                                html = html + '<b style="color:grey">雨量站</b>'
+                            }
+                            if (val.isRiver && val.isRiver == 1) {
+                                if (html.length > 0) {
+                                    html = html + '<b style="color:grey"> / </b>'
+                                }
+                                html = html + '<b style="color:grey">水位站</b>'
+                            } else if (val.isRes && val.isRes == 1) {
+                                if (html.length > 0) {
+                                    html = html + '<b style="color:grey"> / </b>'
+                                }
+                                html = html + '<b style="color:grey">水位站</b>'
+                            }
+                            if (val.isGround && val.isGround == 1) {
+                                if (html.length > 0) {
+                                    html = html + '<b style="color:grey"> / </b>'
+                                }
+                                html = html + '<b style="color:grey">墒情站</b>'
+                            }
+                            return html;
+                        }
                     },
-                ],
-            },
-            orderTaskChangeDialog: false,
-            orderTaskChangeForm: {
-                orderId: '',
-                servicePersonId: '',
-                contactUserName: '',
-            },
-            orderTaskChangeFormOption: {
-                column: [
                     {
-                        label: "当前任务负责人",
-                        prop: "contactUserName",
-                        labelWidth: 130,
-                        span: 24,
-                        disabled: true,
+                        label: "维修任务次数",
+                        prop: "orderCount",
+                        span: 12,
+                        sortable: 'custom',
                     },
-                    {
-                        span: 24,
-                        labelWidth: 130,
-                        label: '指派到',
-                        prop: 'servicePersonId',
-                        type: 'select',
-                        props: {
-                            label: 'personName',
-                            value: 'id'
-                        },
-                        dicUrl: '/api/galaxy-business/project/person/list',
-                    }]
+                ],
             },
             data: [],
         };
     },
-    prop: {
-        rtuCode: ["String"],
-    },
     computed: {
         ...mapGetters(["userInfo", "permission"]),
         permissionList() {
@@ -276,51 +242,50 @@ export default {
                 })
                 this.treeOption.defaultExpandedKeys.push(this.treeData[0].id);
                 this.treeCode = this.treeData[0].id;
-                this.getCountInfo(this.treeCode);
             });
         },
         nodeClick(data) {
+            this.$refs["crud"].clearSort();
             this.treeCode = data.id;
             this.treeParentCode = data.parentId;
-            this.query = {};
             this.query['adCode'] = this.treeCode;
             this.page.currentPage = 1;
             var params = {};
             this.onLoad(this.page, params);
-            this.getCountInfo(this.treeCode);
         },
-        getCountInfo(adCode) {
-            getCountInfo(
-                adCode
-            ).then((res) => {
-                this.countInfo = res.data.data;
-            });
+        sortChange(val) {
+            console.log(JSON.stringify(val))
+            //prop":"tm","order":"ascending"  descending
+            let prop = val.prop;
+            if (prop === 'orderCount') {
+                this.page.currentPage = 1;
+                var params = {};
+                let order = val.order;
+                if (order) {
+                    params['order'] = order;
+                    params['prop'] = prop;
+                    this.sort = {};
+                    Object.assign(this.sort, params)
+                } else {
+                    this.sort = {};
+                }
+                this.onLoad(this.page, params);
+            }
         },
         openProcessList(item) {
+            this.dialogTitle = "维修任务历史[" + item.rtuName + "_" + item.rtuCode + "]";
+            this.rtuCode = item.rtuCode;
             this.recordDialog = true;
-            this.dialogTitle = "维修任务详情[" + item.rtuName + "_" + item.rtuCode + "]";
-            this.id = item.id;
             this.$nextTick(() => {
-                this.$refs["checkorderprocessdetail"].init();
+                this.$refs["rtucheckorderhistorylistvue"].init();
             });
         },
-        orderChange(item) {
-            if (item.isConfirm == 1) {
-                this.orderTaskChangeForm.contactUserName = item.contactUserName;
-            } else {
-                this.orderTaskChangeForm.contactUserName = '无';
-            }
-            this.orderTaskChangeForm.orderId = item.id;
-            this.orderTaskChangeDialog = true;
-        },
         searchReset() {
-            this.query = {};
-            this.query['adCode'] = this.treeCode;
             this.page.currentPage = 1;
-            this.onLoad(this.page);
+            let params = {};
+            this.onLoad(this.page, params);
         },
         searchChange(params, done) {
-            this.query = params;
             this.page.currentPage = 1;
             this.onLoad(this.page, params);
             done();
@@ -347,17 +312,17 @@ export default {
             this.page.pageSize = pageSize;
         },
         refreshChange() {
+            this.page.currentPage = 1;
             var params = {};
             this.onLoad(this.page, params);
         },
         onLoad(page, params = {}) {
             this.loading = true;
-            params['orderConfirm'] = 1;
-            params['orderClose'] = 1;
-            getPage(
+            console.log("load" + JSON.stringify(params))
+            getHistroyPage(
                 page.currentPage,
                 page.pageSize,
-                Object.assign(params, this.query)
+                Object.assign(params, this.sort, this.query)
             ).then((res) => {
                 const data = res.data.data;
                 this.page.total = data.total;

+ 392 - 0
src/views/business/order/checkorderhistory2.vue

@@ -0,0 +1,392 @@
+<!--
+ * @Title: 
+ * @Description:  历史维修任务
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="4">
+                <div class="box">
+                    <el-scrollbar>
+                        <basic-container>
+                            <avue-tree :option="treeOption" :data="treeData" @node-click="nodeClick">
+                                <span class="el-tree-node__label" slot-scope="{ node, data }">
+                                    <span>
+                                        <i class="el-icon-office-building"></i>
+                                        {{ (node || {}).label }}
+                                    </span>
+                                </span>
+                            </avue-tree>
+                        </basic-container>
+                    </el-scrollbar>
+                </div>
+            </el-col>
+            <el-col :span="20">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :page.sync="page" :data="data" ref="crud"
+                        v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
+                        @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
+                        @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+                        @refresh-change="refreshChange" @on-load="onLoad">
+                        <template slot-scope="scope" slot="menuLeft">
+                            <div class="line">
+
+                                <div class="lineText">
+                                    <span class="orderProcessing">完成任务数量: {{
+                                        countInfo.reportOrderCount }}</span>
+                                </div>
+                            </div>
+                        </template>
+
+                        <template slot-scope="{ row, index }" slot="menu">
+                            <el-button type="text" size="small" @click="openProcessList(row)">维修详情
+                            </el-button>
+                        </template>
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+        <el-drawer :visible.sync="recordDialog" v-if="recordDialog" title="维修详情" direction="rtl" size="50%"
+            append-to-body="true">
+            <div slot="title" class="header-title">
+                <span class="name">{{ dialogTitle }}</span>
+            </div>
+            <checkorderprocessdetail :orderId="id" ref="checkorderprocessdetail"></checkorderprocessdetail>
+        </el-drawer>
+    </div>
+</template>
+
+<script>
+import {
+    getPage,
+    getDetail,
+    getCountInfo
+} from "@/api/business/order/order.js";
+import { getTree } from "@/api/baseinfo/region.js";
+import checkorderprocessdetail from "./checkorderprocessdetail.vue";
+import { mapGetters } from "vuex";
+export default {
+    components: {
+        checkorderprocessdetail,
+    },
+    name: 'checkorderhistory',
+    data() {
+        return {
+            dialogTitle: "维修任务历史记录",
+            recordDialog: false,
+            id: "",
+            form: {},
+            selectionList: [],
+            countInfo: {
+                reportOrderCount: 0
+            },
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            treeCode: '',
+            treeParentCode: '',
+            treeData: [],
+            treeOption: {
+                nodeKey: "id",
+                defaultExpandedKeys: [],
+                lazy: false,
+                addBtn: false,
+                menu: true,
+                size: "small",
+                props: {
+                    labelText: "标题",
+                    label: "title",
+                    value: "value",
+                    children: "children",
+                },
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                height: "auto",
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                addBtn: false,
+                tree: true,
+                border: true,
+                index: true,
+                editBtn: false,
+                delBtn: false,
+                menuWidth: 200,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                column: [
+                    {
+                        label: "测站名称",
+                        prop: "rtuName",
+                        span: 12,
+                        search: true,
+                        html: true,
+                        formatter: (val) => {
+                            if (val.rtuName) {
+                                return '<b>' + val.rtuName + '</b>/' + '<b style="color:grey">' + val.rtuCode + '</b>'
+                            } else {
+                                return '<b>' + val.rtuName + '</b>'
+                            }
+                        }
+                    },
+                    {
+                        label: "测站编码",
+                        prop: "rtuCode",
+                        span: 12,
+                        search: true,
+                        hide: true,
+                    },
+                    {
+                        label: "行政区",
+                        prop: "areaName",
+                        span: 12,
+                        editDisplay: false,
+                        addDisplay: false,
+                    },
+                    {
+                        label: "运维单位",
+                        prop: "manageCompany",
+                        span: 12,
+                    },
+                    // {
+                    //     search: true,
+                    //     label: "运维单位",
+                    //     prop: "orgId",
+                    //     hide: true,
+                    //     type: 'select',
+                    //     span: 12,
+                    //     props: {
+                    //         label: 'dictValue',
+                    //         value: 'id'
+                    //     },
+                    //     dicUrl: '/api/galaxy-business/baseinfo/org/list',
+                    // },
+                    // {
+                    //     label: "维修状态",
+                    //     prop: "orderStatusKey",
+                    //     span: 12,
+                    //     props: {
+                    //         label: 'dictValue',
+                    //         value: 'id'
+                    //     },
+                    //     dicUrl: '/api/galaxy-system/dict-biz/dictionary?code=rtu_check_order_status',
+                    // },
+                    // {
+                    //     label: "预警类别",
+                    //     prop: "warnKind",
+                    //     span: 12,
+                    //     props: {
+                    //         label: 'dictValue',
+                    //         value: 'id'
+                    //     },
+                    //     dicUrl: '/api/galaxy-system/dict-biz/dictionary?code=warn_kinds',
+                    // },
+                    // {
+                    //     label: "工单说明",
+                    //     prop: "orderDesc",
+                    //     span: 12,
+                    // },
+                    // {
+                    //     label: "处理人",
+                    //     prop: "processorName",
+                    //     span: 12,
+                    // },
+                    {
+                        label: "创建时间",
+                        prop: "createTime",
+                        span: 12,
+                    },
+                    {
+                        label: "关闭时间",
+                        prop: "updateTime",
+                        span: 12,
+                    },
+                ],
+            },
+            orderTaskChangeDialog: false,
+            orderTaskChangeForm: {
+                orderId: '',
+                servicePersonId: '',
+                contactUserName: '',
+            },
+            orderTaskChangeFormOption: {
+                column: [
+                    {
+                        label: "当前任务负责人",
+                        prop: "contactUserName",
+                        labelWidth: 130,
+                        span: 24,
+                        disabled: true,
+                    },
+                    {
+                        span: 24,
+                        labelWidth: 130,
+                        label: '指派到',
+                        prop: 'servicePersonId',
+                        type: 'select',
+                        props: {
+                            label: 'personName',
+                            value: 'id'
+                        },
+                        dicUrl: '/api/galaxy-business/project/person/list',
+                    }]
+            },
+            data: [],
+        };
+    },
+    prop: {
+        rtuCode: ["String"],
+    },
+    computed: {
+        ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                // closeBtn: this.vaildData(this.permission.order_close, false),
+            };
+        },
+    },
+    created() {
+        this.initTree();
+    },
+    methods: {
+        initTree() {
+            this.treeData = [];
+            getTree().then(res => {
+                this.treeData = res.data.data.map(item => {
+                    return {
+                        ...item,
+                        leaf: !item.hasChildren
+                    }
+                })
+                this.treeOption.defaultExpandedKeys.push(this.treeData[0].id);
+                this.treeCode = this.treeData[0].id;
+                this.getCountInfo(this.treeCode);
+            });
+        },
+        nodeClick(data) {
+            this.treeCode = data.id;
+            this.treeParentCode = data.parentId;
+            this.query = {};
+            this.query['adCode'] = this.treeCode;
+            this.page.currentPage = 1;
+            var params = {};
+            this.onLoad(this.page, params);
+            this.getCountInfo(this.treeCode);
+        },
+        getCountInfo(adCode) {
+            getCountInfo(
+                adCode
+            ).then((res) => {
+                this.countInfo = res.data.data;
+            });
+        },
+        openProcessList(item) {
+            this.recordDialog = true;
+            this.dialogTitle = "维修任务详情[" + item.rtuName + "_" + item.rtuCode + "]";
+            this.id = item.id;
+            this.$nextTick(() => {
+                this.$refs["checkorderprocessdetail"].init();
+            });
+        },
+        orderChange(item) {
+            if (item.isConfirm == 1) {
+                this.orderTaskChangeForm.contactUserName = item.contactUserName;
+            } else {
+                this.orderTaskChangeForm.contactUserName = '无';
+            }
+            this.orderTaskChangeForm.orderId = item.id;
+            this.orderTaskChangeDialog = true;
+        },
+        searchReset() {
+            this.query = {};
+            this.query['adCode'] = this.treeCode;
+            this.page.currentPage = 1;
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            var params = {};
+            this.onLoad(this.page, params);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['orderConfirm'] = 1;
+            params['orderClose'] = 1;
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+<style  lang="scss" scoped>
+.line {
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-start;
+}
+
+.line .lineText {
+    margin-left: 10px;
+    margin-right: 0px;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+}
+
+.line .lineText .orderProcessing {
+
+    color: dodgerblue;
+    font-size: 0.8rem;
+}
+</style>

+ 36 - 21
src/views/business/order/checkorderlist.vue

@@ -51,7 +51,7 @@
                         <template slot-scope="scope" slot="menuLeft">
                             <div class="line">
                                 <div class="lineText">
-                                    <span class="rtuCount">测站数量: {{ page.total }}</span>
+                                    <span class="rtuCount">测站数量: {{ countInfo.rtuCount }}</span>
                                 </div>
                                 <div class="lineText">
                                     <span class="orderCount">任务数量: {{ countInfo.orderCount }}</span>
@@ -73,16 +73,18 @@
                             </div>
                         </template>
                         <template slot-scope="{ row, index }" slot="menu">
-                            <el-button type="text" size="small" @click="openWarnInfo(row)">异常信息
+                            <el-button type="text" size="small" @click="openWarnInfo(row)"
+                                icon="el-icon-warning-outline">异常信息
                             </el-button>
-                            <el-button type="text" size="small" @click="openProcessList(row)">维修详情
+                            <el-button type="text" size="small" @click="openProcessList(row)"
+                                icon="el-icon-edit-outline">维修详情
                             </el-button>
                             <el-button v-if="permission.order_close && row.orderClose == 0" style="color:lightcoral"
-                                type="text" size="small" @click="orderOff(row)">
+                                type="text" size="small" @click="orderOff(row)" icon="el-icon-circle-close">
                                 人工关闭
                             </el-button>
                             <el-button v-if="permission.order_change && row.orderClose == 0" style="color:orange"
-                                type="text" size="small" @click="orderChange(row)">
+                                type="text" size="small" @click="orderChange(row)" icon="el-icon-position">
                                 任务转派
                             </el-button>
                         </template>
@@ -131,7 +133,7 @@ export default {
         checkorderprocessdetail,
         rtuwarninglist
     },
-    name: 'checkorderlist',
+    name: 'checkordermanagepage',
     data() {
         return {
             dialogTitle: "维修任务处理记录",
@@ -143,6 +145,7 @@ export default {
             selectionList: [],
             query: {},
             countInfo: {
+                rtuCount: 0,
                 orderCount: 0,
                 orderUnconfirm: 0,
                 orderProcessing: 0
@@ -188,36 +191,39 @@ export default {
                 index: true,
                 editBtn: false,
                 delBtn: false,
-                menuWidth: 200,
+                menuWidth: 300,
                 dialogType: "drawer",
                 dialogClickModal: false,
                 columnBtn: false,
                 column: [
                     {
-                        label: "测站名称",
-                        prop: "rtuName",
+                        label: "测站编码",
+                        prop: "rtuCode",
                         span: 24,
                         search: true,
-                        html: true,
-                        formatter: (val) => {
-                            if (val.rtuName) {
-                                return '<b>' + val.rtuName + '</b>/' + '<b style="color:grey">' + val.rtuCode + '</b>'
-                            } else {
-                                return '<b>' + val.rtuName + '</b>'
-                            }
-                        }
+                        width: 120,
                     },
                     {
-                        label: "测站编码",
-                        prop: "rtuCode",
+                        label: "测站名称",
+                        prop: "rtuName",
                         span: 24,
+                        width: 120,
+                        overHidden: true,
                         search: true,
-                        hide: true,
+                        // html: true,
+                        // formatter: (val) => {
+                        //     if (val.rtuName) {
+                        //         return '<b>' + val.rtuName + '</b>/' + '<b style="color:grey">' + val.rtuCode + '</b>'
+                        //     } else {
+                        //         return '<b>' + val.rtuName + '</b>'
+                        //     }
+                        // }
                     },
                     {
                         label: "测站类型",
                         prop: "isRain",
                         span: 24,
+                        width: 160,
                         html: true,
                         formatter: (val) => {
                             let html = '';
@@ -289,6 +295,9 @@ export default {
                         label: "行政区",
                         prop: "areaName",
                         span: 12,
+                        width: 160,
+                        hide: true,
+                        overHidden: true,
                         editDisplay: false,
                         addDisplay: false,
                     },
@@ -296,6 +305,8 @@ export default {
                         label: "运维单位",
                         prop: "manageCompany",
                         span: 12,
+                        width: 160,
+                        overHidden: true,
                     },
                     // {
                     //     search: true,
@@ -324,22 +335,26 @@ export default {
                         label: "异常类别",
                         prop: "warnKindInfo",
                         span: 12,
+                        width: 120,
                     },
 
                     {
                         label: "维修状态",
                         prop: "orderStatus",
                         span: 24,
+                        width: 120,
                     },
                     {
                         label: "任务确认时间",
                         prop: "orderConfirmTime",
                         span: 24,
+                        width: 120,
                     },
                     {
                         label: "维修时长",
                         prop: "taskProcessDuration",
                         span: 24,
+                        width: 120,
                     },
                 ],
             },
@@ -487,7 +502,7 @@ export default {
             this.onLoad(this.page);
         },
         searchChange(params, done) {
-            this.query = params;
+            // this.query = params;
             this.page.currentPage = 1;
             this.onLoad(this.page, params);
             done();

+ 0 - 1
src/views/business/order/checkorderprocesslist.vue

@@ -125,7 +125,6 @@ export default {
     },
     methods: {
         init() {
-
             this.onLoad(this.page);
             this.$refs.crud.doLayout();
         },

+ 7 - 6
src/views/business/order/comfiredelaycheckorderlist.vue

@@ -34,7 +34,7 @@ import {
 import { mapGetters } from "vuex";
 export default {
     components: {
-      
+
     },
     name: 'comfiredelaycheckorderlist',
     data() {
@@ -75,14 +75,15 @@ export default {
                 menu: false,
                 column: [
                     {
-                        label: "测站名称",
-                        prop: "rtuName",
+                        label: "测站编码",
+                        prop: "rtuCode",
                         span: 24,
                         search: true,
+                        width: 120,
                     },
                     {
-                        label: "测站编码",
-                        prop: "rtuCode",
+                        label: "测站名称",
+                        prop: "rtuName",
                         span: 24,
                         search: true,
                     },
@@ -148,7 +149,7 @@ export default {
         },
         selectionClear() {
             this.selectionList = [];
-            this.$refs.crud.toggleSelection();
+            //  this.$refs.crud.toggleSelection();
         },
         beforeOpen(done, type) {
             if (["edit", "view"].includes(type)) {

+ 19 - 17
src/views/business/order/nonetworksignal/index.vue

@@ -17,15 +17,17 @@
                         @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
                         @refresh-change="refreshChange" @on-load="onLoad">
                         <template slot-scope="{ row, index }" slot="menu">
-                            <el-button type="text" size="small" @click="openReportDetail(row)">维修详情
+                            <el-button type="text" size="small" @click="openReportDetail(row)"
+                                icon="el-icon-edit-outline">维修详情
                             </el-button>
                             <el-button
                                 v-if="permission.checkorder_photo_submit_close == 1 && row.photoSupplementSubmitStatus == 0"
-                                type="text" size="small" @click="toPhotoSubmit(row)">图片补交
+                                type="text" size="small" @click="toPhotoSubmit(row)" icon="el-icon-upload2">图片补交
                             </el-button>
                             <el-button
                                 v-if="permission.checkorder_photo_submit_close == 1 && row.photoSupplementSubmitStatus === 0"
-                                type="text" size="small" style="color:lightcoral" @click="closePhotoSubmit(row)">关闭问题
+                                type="text" size="small" style="color:lightcoral" @click="closePhotoSubmit(row)"
+                                icon="el-icon-circle-close">关闭问题
                             </el-button>
                         </template>
                     </avue-crud>
@@ -97,33 +99,33 @@ export default {
                 editBtn: false,
                 delBtn: false,
                 viewBtn: false,
-                menuWidth: 200,
+                menuWidth: 300,
                 dialogType: "drawer",
                 columnBtn: false,
                 dialogClickModal: false,
                 column: [
                     {
-                        label: "测站名称",
-                        prop: "rtuName",
+                        label: "测站编码",
+                        prop: "rtuCode",
                         span: 12,
                         search: true,
                         searchSpan: 4,
-                        html: true,
-                        formatter: (val) => {
-                            if (val.rtuName) {
-                                return '<b>' + val.rtuName + '</b>/' + '<b style="color:grey">' + val.rtuCode + '</b>'
-                            } else {
-                                return '<b>' + val.rtuName + '</b>'
-                            }
-                        }
+                        width: 120,
                     },
                     {
-                        label: "测站编码",
-                        prop: "rtuCode",
+                        label: "测站名称",
+                        prop: "rtuName",
                         span: 12,
                         search: true,
                         searchSpan: 4,
-                        hide: true,
+                        // html: true,
+                        // formatter: (val) => {
+                        //     if (val.rtuName) {
+                        //         return '<b>' + val.rtuName + '</b>/' + '<b style="color:grey">' + val.rtuCode + '</b>'
+                        //     } else {
+                        //         return '<b>' + val.rtuName + '</b>'
+                        //     }
+                        // }
                     },
                     {
                         label: "行政区",

+ 225 - 0
src/views/business/order/processingcheckorderlist.vue

@@ -0,0 +1,225 @@
+<!--
+ * @Title: 
+ * @Description: 维修中任务列表
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :page.sync="page" :data="data" ref="crud"
+                        v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
+                        @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
+                        @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+                        @refresh-change="refreshChange" @on-load="onLoad">
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+    </div>
+</template>
+
+<script>
+
+import {
+    getPage,
+    getDetail,
+} from "@/api/business/order/order.js";
+
+import { mapGetters } from "vuex";
+export default {
+    components: {
+
+    },
+    name: 'processingcheckorderlist',
+    data() {
+        return {
+            dialogTitle: "维修中任务",
+            id: "",
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                height: "auto",
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                addBtn: false,
+                tree: true,
+                border: true,
+                index: true,
+                editBtn: false,
+                delBtn: false,
+                menuWidth: 200,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                menu: false,
+                column: [
+                    {
+                        label: "测站编码",
+                        prop: "rtuCode",
+                        span: 24,
+                        search: true,
+                        width: 120,
+                    },
+                    {
+                        label: "测站名称",
+                        prop: "rtuName",
+                        span: 24,
+                        search: true,
+                    },
+                    {
+                        label: "行政区",
+                        prop: "areaName",
+                        span: 12,
+                        editDisplay: false,
+                        addDisplay: false,
+                    },
+                    {
+                        label: "运维单位",
+                        prop: "manageCompany",
+                        span: 12,
+                    },
+                    {
+                        label: "任务确认时间",
+                        prop: "orderConfirmTime",
+                        span: 24,
+                    },
+                    {
+                        label: "维修时长",
+                        prop: "taskProcessDuration",
+                        span: 24,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    prop: {
+
+    },
+    computed: {
+        ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                closeBtn: this.vaildData(this.permission.order_close, false),
+                changeBtn: this.vaildData(this.permission.order_change, false),
+            };
+        },
+    },
+    created() {
+
+    },
+    methods: {
+        init() {
+            this.onLoad(this.page);
+        },
+        searchReset() {
+            this.query = {};
+            this.page.currentPage = 1;
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            //this.$refs.crud.toggleSelection();
+        },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            var params = {};
+            this.onLoad(this.page, params);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['orderConfirm'] = 1;
+            params['orderClose'] = 0;
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+
+<style  lang="scss" scoped>
+.line {
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-start;
+}
+
+.line .lineText {
+    margin-left: 10px;
+    margin-right: 0px;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+}
+
+.line .lineText .orderCount {
+    color: green;
+    font-size: 0.8rem;
+}
+
+.line .lineText .spliteLine {
+    color: gray;
+    font-size: 0.8rem;
+}
+
+.line .lineText .orderUnconfirm {
+    color: lightcoral;
+    font-size: 0.8rem;
+}
+
+.line .lineText .orderProcessing {
+    color: dodgerblue;
+    font-size: 0.8rem;
+}
+</style>

+ 278 - 0
src/views/business/order/rtucheckorderhistorylist.vue

@@ -0,0 +1,278 @@
+<!--
+ * @Title: 
+ * @Description:  历史维修任务
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :page.sync="page" :data="data" ref="crud"
+                        v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
+                        @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
+                        @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+                        @refresh-change="refreshChange" @on-load="onLoad">
+                        <!-- <template slot-scope="scope" slot="menuLeft">
+                            <div class="line">
+
+                                <div class="lineText">
+                                    <span class="orderProcessing">完成任务数量: {{
+                                        countInfo.reportOrderCount }}</span>
+                                </div>
+                            </div>
+                        </template> -->
+
+                        <template slot-scope="{ row, index }" slot="menu">
+                            <el-button type="text" size="small" @click="openProcessList(row)">查看详情
+                            </el-button>
+                        </template>
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+        <el-drawer :visible.sync="recordDialog" v-if="recordDialog" title="维修详情" direction="rtl" size="60%"
+            append-to-body="true">
+            <div slot="title" class="header-title">
+                <span class="name">{{ dialogTitle }}</span>
+            </div>
+            <checkorderprocessdetail :orderId="id" ref="checkorderprocessdetail"></checkorderprocessdetail>
+        </el-drawer>
+    </div>
+</template>
+
+<script>
+import {
+    getPage,
+    getDetail,
+} from "@/api/business/order/order.js";
+import checkorderprocessdetail from "./checkorderprocessdetail.vue";
+import { mapGetters } from "vuex";
+export default {
+    components: {
+        checkorderprocessdetail,
+    },
+    name: 'rtucheckorderhistorylist',
+    props: {
+        rtuCode: {
+            type: [String],
+            required: true
+        },
+    },
+    data() {
+        return {
+            dialogTitle: "维修任务历史记录",
+            recordDialog: false,
+            id: "",
+            form: {},
+            selectionList: [],
+            countInfo: {
+                reportOrderCount: 0
+            },
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            treeCode: '',
+            treeParentCode: '',
+            treeData: [],
+            treeOption: {
+                nodeKey: "id",
+                defaultExpandedKeys: [],
+                lazy: false,
+                addBtn: false,
+                menu: true,
+                size: "small",
+                props: {
+                    labelText: "标题",
+                    label: "title",
+                    value: "value",
+                    children: "children",
+                },
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                height: "auto",
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                addBtn: false,
+                tree: true,
+                border: true,
+                index: true,
+                editBtn: false,
+                delBtn: false,
+                menuWidth: 200,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                column: [
+                    {
+                        label: "测站编码",
+                        prop: "rtuCode",
+                        span: 12,
+                        hide: true,
+                        width: 120,
+                    },
+                    {
+                        label: "测站名称",
+                        prop: "rtuName",
+                        span: 12,
+                        html: true,
+                        formatter: (val) => {
+                            if (val.rtuName) {
+                                return '<b>' + val.rtuName + '</b>/' + '<b style="color:grey">' + val.rtuCode + '</b>'
+                            } else {
+                                return '<b>' + val.rtuName + '</b>'
+                            }
+                        }
+                    },
+                    {
+                        label: "处理人",
+                        prop: "processorName",
+                        span: 12,
+                    },
+                    {
+                        label: "任务创建时间",
+                        prop: "createTime",
+                        span: 12,
+                    },
+                    {
+                        label: "任务确认时间",
+                        prop: "orderConfirmTime",
+                        span: 12,
+                    },
+                    {
+                        label: "任务关闭时间",
+                        prop: "updateTime",
+                        span: 12,
+                    },
+                    {
+                        label: "维修时长",
+                        prop: "taskProcessDuration",
+                        span: 12,
+                    }, {
+                        label: "异常信息",
+                        prop: "warnKindInfo",
+                        span: 12,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                // closeBtn: this.vaildData(this.permission.order_close, false),
+            };
+        },
+    },
+    created() {
+        console.log("rtuCode " + this.rtuCode)
+    },
+    methods: {
+        init() {
+            console.log("rtuCode " + this.rtuCode)
+            this.onLoad(this.page);
+            this.$refs.crud.doLayout();
+        },
+        openProcessList(item) {
+            this.recordDialog = true;
+            this.dialogTitle = "维修任务详情[" + item.rtuName + "_" + item.rtuCode + "]";
+            this.id = item.id;
+            this.$nextTick(() => {
+                this.$refs["checkorderprocessdetail"].init();
+            });
+        },
+        searchReset() {
+            this.query = {};
+            this.page.currentPage = 1;
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            var params = {};
+            this.onLoad(this.page, params);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['rtuCode'] = this.rtuCode;
+            params['orderClose'] = 1;
+            params['orderConfirm'] = 1;
+            console.log("rtuCode " + this.rtuCode)
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+<style  lang="scss" scoped>
+.line {
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-start;
+}
+
+.line .lineText {
+    margin-left: 10px;
+    margin-right: 0px;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+}
+
+.line .lineText .orderProcessing {
+
+    color: dodgerblue;
+    font-size: 0.8rem;
+}
+</style>

+ 5 - 4
src/views/business/order/todaycheckorderprocesslist.vue

@@ -94,14 +94,15 @@ export default {
                 menu: true,
                 column: [
                     {
-                        label: "测站名称",
-                        prop: "rtuName",
+                        label: "测站编码",
+                        prop: "rtuCode",
                         span: 24,
                         search: true,
+                        width: 120,
                     },
                     {
-                        label: "测站编码",
-                        prop: "rtuCode",
+                        label: "测站名称",
+                        prop: "rtuName",
                         span: 24,
                         search: true,
                     },

+ 6 - 5
src/views/business/order/uncomfirecheckorderlist.vue

@@ -74,14 +74,15 @@ export default {
                 menu: false,
                 column: [
                     {
-                        label: "测站名称",
-                        prop: "rtuName",
+                        label: "测站编码",
+                        prop: "rtuCode",
                         span: 24,
                         search: true,
+                        width: 120,
                     },
                     {
-                        label: "测站编码",
-                        prop: "rtuCode",
+                        label: "测站名称",
+                        prop: "rtuName",
                         span: 24,
                         search: true,
                     },
@@ -147,7 +148,7 @@ export default {
         },
         selectionClear() {
             this.selectionList = [];
-            this.$refs.crud.toggleSelection();
+            //  this.$refs.crud.toggleSelection();
         },
         beforeOpen(done, type) {
             if (["edit", "view"].includes(type)) {

+ 233 - 0
src/views/business/warning/clockwarnlist.vue

@@ -0,0 +1,233 @@
+<!--
+ * @Title: 
+ * @Description: 预警测站列表,按测站统计
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :page.sync="page" :data="data" ref="crud"
+                        v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
+                        @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
+                        @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+                        @refresh-change="refreshChange" @on-load="onLoad">
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+    </div>
+</template>
+
+<script>
+
+import { getClockPage, getDetail } from "@/api/business/warning/warning.js";
+
+import { mapGetters } from "vuex";
+export default {
+    components: {
+
+    },
+    props: {
+        deptId: {
+            type: [Number],
+            required: true
+        },
+    },
+    name: 'warninglist',
+    data() {
+        return {
+            dialogTitle: "异常测站列表",
+            id: "",
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                height: "auto",
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                addBtn: false,
+                tree: true,
+                border: true,
+                index: true,
+                editBtn: false,
+                delBtn: false,
+                menuWidth: 200,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                menu: false,
+                column: [
+                    {
+                        label: "测站编码",
+                        prop: "rtuCode",
+                        span: 24,
+                        search: true,
+                    },
+                    {
+                        label: "测站名称",
+                        prop: "rtuName",
+                        span: 24,
+                        search: true,
+                    },
+                    {
+                        label: "行政区",
+                        prop: "adCity",
+                        span: 12,
+                        html: true,
+                        formatter: (val) => {
+                            if (val.adDist) {
+                                return '<b>' + val.adCity + '</b>/' + '<b>' + val.adDist + '</b>'
+                            } else {
+                                return '<b>' + val.adCity + '</b>'
+                            }
+                        }
+                    },
+                    {
+                        label: "运维单位",
+                        prop: "manageCompany",
+                        span: 12,
+                    },
+                    {
+                        label: "异常信息",
+                        prop: "warningDesc",
+                        span: 12,
+                    },
+                    {
+                        label: "发生时间",
+                        prop: "warningHappenTime",
+                        span: 12,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                // closeBtn: this.vaildData(this.permission.order_close, false),
+                // changeBtn: this.vaildData(this.permission.order_change, false),
+            };
+        },
+    },
+    created() {
+
+    },
+    methods: {
+        init() {
+            //  this.onLoad(this.page);
+        },
+        searchReset() {
+            this.query = {};
+            this.page.currentPage = 1;
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            var params = {};
+            this.onLoad(this.page, params);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['deptId'] = this.deptId;
+            console.log("load " + JSON.stringify(params))
+            getClockPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+
+<style  lang="scss" scoped>
+.line {
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-start;
+}
+
+.line .lineText {
+    margin-left: 10px;
+    margin-right: 0px;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+}
+
+.line .lineText .orderCount {
+
+    color: green;
+    font-size: 0.8rem;
+}
+
+.line .lineText .spliteLine {
+    color: gray;
+    font-size: 0.8rem;
+}
+
+.line .lineText .orderUnconfirm {
+
+    color: lightcoral;
+    font-size: 0.8rem;
+}
+
+.line .lineText .orderProcessing {
+
+    color: dodgerblue;
+    font-size: 0.8rem;
+}
+</style>

+ 233 - 0
src/views/business/warning/hourmissoutwarnlist.vue

@@ -0,0 +1,233 @@
+<!--
+ * @Title: 
+ * @Description: 预警测站列表,按测站统计
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :page.sync="page" :data="data" ref="crud"
+                        v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
+                        @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
+                        @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+                        @refresh-change="refreshChange" @on-load="onLoad">
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+    </div>
+</template>
+
+<script>
+
+import { getHourmissoutPage, getDetail } from "@/api/business/warning/warning.js";
+
+import { mapGetters } from "vuex";
+export default {
+    components: {
+
+    },
+    props: {
+        deptId: {
+            type: [Number],
+            required: true
+        },
+    },
+    name: 'warninglist',
+    data() {
+        return {
+            dialogTitle: "异常测站列表",
+            id: "",
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                height: "auto",
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                addBtn: false,
+                tree: true,
+                border: true,
+                index: true,
+                editBtn: false,
+                delBtn: false,
+                menuWidth: 200,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                menu: false,
+                column: [
+                    {
+                        label: "测站编码",
+                        prop: "rtuCode",
+                        span: 24,
+                        search: true,
+                    },
+                    {
+                        label: "测站名称",
+                        prop: "rtuName",
+                        span: 24,
+                        search: true,
+                    },
+                    {
+                        label: "行政区",
+                        prop: "adCity",
+                        span: 12,
+                        html: true,
+                        formatter: (val) => {
+                            if (val.adDist) {
+                                return '<b>' + val.adCity + '</b>/' + '<b>' + val.adDist + '</b>'
+                            } else {
+                                return '<b>' + val.adCity + '</b>'
+                            }
+                        }
+                    },
+                    {
+                        label: "运维单位",
+                        prop: "manageCompany",
+                        span: 12,
+                    },
+                    {
+                        label: "异常信息",
+                        prop: "warningDesc",
+                        span: 12,
+                    },
+                    {
+                        label: "发生时间",
+                        prop: "warningHappenTime",
+                        span: 12,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                // closeBtn: this.vaildData(this.permission.order_close, false),
+                // changeBtn: this.vaildData(this.permission.order_change, false),
+            };
+        },
+    },
+    created() {
+
+    },
+    methods: {
+        init() {
+            //  this.onLoad(this.page);
+        },
+        searchReset() {
+            this.query = {};
+            this.page.currentPage = 1;
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            var params = {};
+            this.onLoad(this.page, params);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['deptId'] = this.deptId;
+            console.log("load " + JSON.stringify(params))
+            getHourmissoutPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+
+<style  lang="scss" scoped>
+.line {
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-start;
+}
+
+.line .lineText {
+    margin-left: 10px;
+    margin-right: 0px;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+}
+
+.line .lineText .orderCount {
+
+    color: green;
+    font-size: 0.8rem;
+}
+
+.line .lineText .spliteLine {
+    color: gray;
+    font-size: 0.8rem;
+}
+
+.line .lineText .orderUnconfirm {
+
+    color: lightcoral;
+    font-size: 0.8rem;
+}
+
+.line .lineText .orderProcessing {
+
+    color: dodgerblue;
+    font-size: 0.8rem;
+}
+</style>

+ 233 - 0
src/views/business/warning/hourupdelaywarnlist.vue

@@ -0,0 +1,233 @@
+<!--
+ * @Title: 
+ * @Description: 预警测站列表,按测站统计
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :page.sync="page" :data="data" ref="crud"
+                        v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
+                        @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
+                        @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+                        @refresh-change="refreshChange" @on-load="onLoad">
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+    </div>
+</template>
+
+<script>
+
+import { getHourupdelayPage, getDetail } from "@/api/business/warning/warning.js";
+
+import { mapGetters } from "vuex";
+export default {
+    components: {
+
+    },
+    props: {
+        deptId: {
+            type: [Number],
+            required: true
+        },
+    },
+    name: 'warninglist',
+    data() {
+        return {
+            dialogTitle: "异常测站列表",
+            id: "",
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                height: "auto",
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                addBtn: false,
+                tree: true,
+                border: true,
+                index: true,
+                editBtn: false,
+                delBtn: false,
+                menuWidth: 200,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                menu: false,
+                column: [
+                    {
+                        label: "测站编码",
+                        prop: "rtuCode",
+                        span: 24,
+                        search: true,
+                    },
+                    {
+                        label: "测站名称",
+                        prop: "rtuName",
+                        span: 24,
+                        search: true,
+                    },
+                    {
+                        label: "行政区",
+                        prop: "adCity",
+                        span: 12,
+                        html: true,
+                        formatter: (val) => {
+                            if (val.adDist) {
+                                return '<b>' + val.adCity + '</b>/' + '<b>' + val.adDist + '</b>'
+                            } else {
+                                return '<b>' + val.adCity + '</b>'
+                            }
+                        }
+                    },
+                    {
+                        label: "运维单位",
+                        prop: "manageCompany",
+                        span: 12,
+                    },
+                    {
+                        label: "异常信息",
+                        prop: "warningDesc",
+                        span: 12,
+                    },
+                    {
+                        label: "发生时间",
+                        prop: "warningHappenTime",
+                        span: 12,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                // closeBtn: this.vaildData(this.permission.order_close, false),
+                // changeBtn: this.vaildData(this.permission.order_change, false),
+            };
+        },
+    },
+    created() {
+
+    },
+    methods: {
+        init() {
+            //  this.onLoad(this.page);
+        },
+        searchReset() {
+            this.query = {};
+            this.page.currentPage = 1;
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            var params = {};
+            this.onLoad(this.page, params);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['deptId'] = this.deptId;
+            console.log("load " + JSON.stringify(params))
+            getHourupdelayPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+
+<style  lang="scss" scoped>
+.line {
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-start;
+}
+
+.line .lineText {
+    margin-left: 10px;
+    margin-right: 0px;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+}
+
+.line .lineText .orderCount {
+
+    color: green;
+    font-size: 0.8rem;
+}
+
+.line .lineText .spliteLine {
+    color: gray;
+    font-size: 0.8rem;
+}
+
+.line .lineText .orderUnconfirm {
+
+    color: lightcoral;
+    font-size: 0.8rem;
+}
+
+.line .lineText .orderProcessing {
+
+    color: dodgerblue;
+    font-size: 0.8rem;
+}
+</style>

+ 233 - 0
src/views/business/warning/minupdelaywarnlist.vue

@@ -0,0 +1,233 @@
+<!--
+ * @Title: 
+ * @Description: 预警测站列表,按测站统计
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :page.sync="page" :data="data" ref="crud"
+                        v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
+                        @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
+                        @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+                        @refresh-change="refreshChange" @on-load="onLoad">
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+    </div>
+</template>
+
+<script>
+
+import { getMinupdelayPage, getDetail } from "@/api/business/warning/warning.js";
+
+import { mapGetters } from "vuex";
+export default {
+    components: {
+
+    },
+    props: {
+        deptId: {
+            type: [Number],
+            required: true
+        },
+    },
+    name: 'warninglist',
+    data() {
+        return {
+            dialogTitle: "异常测站列表",
+            id: "",
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                height: "auto",
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                addBtn: false,
+                tree: true,
+                border: true,
+                index: true,
+                editBtn: false,
+                delBtn: false,
+                menuWidth: 200,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                menu: false,
+                column: [
+                    {
+                        label: "测站编码",
+                        prop: "rtuCode",
+                        span: 24,
+                        search: true,
+                    },
+                    {
+                        label: "测站名称",
+                        prop: "rtuName",
+                        span: 24,
+                        search: true,
+                    },
+                    {
+                        label: "行政区",
+                        prop: "adCity",
+                        span: 12,
+                        html: true,
+                        formatter: (val) => {
+                            if (val.adDist) {
+                                return '<b>' + val.adCity + '</b>/' + '<b>' + val.adDist + '</b>'
+                            } else {
+                                return '<b>' + val.adCity + '</b>'
+                            }
+                        }
+                    },
+                    {
+                        label: "运维单位",
+                        prop: "manageCompany",
+                        span: 12,
+                    },
+                    {
+                        label: "异常信息",
+                        prop: "warningDesc",
+                        span: 12,
+                    },
+                    {
+                        label: "发生时间",
+                        prop: "warningHappenTime",
+                        span: 12,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                // closeBtn: this.vaildData(this.permission.order_close, false),
+                // changeBtn: this.vaildData(this.permission.order_change, false),
+            };
+        },
+    },
+    created() {
+
+    },
+    methods: {
+        init() {
+            //  this.onLoad(this.page);
+        },
+        searchReset() {
+            this.query = {};
+            this.page.currentPage = 1;
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            var params = {};
+            this.onLoad(this.page, params);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['deptId'] = this.deptId;
+            console.log("load " + JSON.stringify(params))
+            getMinupdelayPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+
+<style  lang="scss" scoped>
+.line {
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-start;
+}
+
+.line .lineText {
+    margin-left: 10px;
+    margin-right: 0px;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+}
+
+.line .lineText .orderCount {
+
+    color: green;
+    font-size: 0.8rem;
+}
+
+.line .lineText .spliteLine {
+    color: gray;
+    font-size: 0.8rem;
+}
+
+.line .lineText .orderUnconfirm {
+
+    color: lightcoral;
+    font-size: 0.8rem;
+}
+
+.line .lineText .orderProcessing {
+
+    color: dodgerblue;
+    font-size: 0.8rem;
+}
+</style>

+ 233 - 0
src/views/business/warning/offlinewarnlist.vue

@@ -0,0 +1,233 @@
+<!--
+ * @Title: 
+ * @Description: 预警测站列表,按测站统计
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :page.sync="page" :data="data" ref="crud"
+                        v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
+                        @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
+                        @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+                        @refresh-change="refreshChange" @on-load="onLoad">
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+    </div>
+</template>
+
+<script>
+
+import { getOfflinePage, getDetail } from "@/api/business/warning/warning.js";
+
+import { mapGetters } from "vuex";
+export default {
+    components: {
+
+    },
+    props: {
+        deptId: {
+            type: [Number],
+            required: true
+        },
+    },
+    name: 'warninglist',
+    data() {
+        return {
+            dialogTitle: "异常测站列表",
+            id: "",
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                height: "auto",
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                addBtn: false,
+                tree: true,
+                border: true,
+                index: true,
+                editBtn: false,
+                delBtn: false,
+                menuWidth: 200,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                menu: false,
+                column: [
+                    {
+                        label: "测站编码",
+                        prop: "rtuCode",
+                        span: 24,
+                        search: true,
+                    },
+                    {
+                        label: "测站名称",
+                        prop: "rtuName",
+                        span: 24,
+                        search: true,
+                    },
+                    {
+                        label: "行政区",
+                        prop: "adCity",
+                        span: 12,
+                        html: true,
+                        formatter: (val) => {
+                            if (val.adDist) {
+                                return '<b>' + val.adCity + '</b>/' + '<b>' + val.adDist + '</b>'
+                            } else {
+                                return '<b>' + val.adCity + '</b>'
+                            }
+                        }
+                    },
+                    {
+                        label: "运维单位",
+                        prop: "manageCompany",
+                        span: 12,
+                    },
+                    {
+                        label: "异常信息",
+                        prop: "warningDesc",
+                        span: 12,
+                    },
+                    {
+                        label: "发生时间",
+                        prop: "warningHappenTime",
+                        span: 12,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                // closeBtn: this.vaildData(this.permission.order_close, false),
+                // changeBtn: this.vaildData(this.permission.order_change, false),
+            };
+        },
+    },
+    created() {
+
+    },
+    methods: {
+        init() {
+            //  this.onLoad(this.page);
+        },
+        searchReset() {
+            this.query = {};
+            this.page.currentPage = 1;
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            var params = {};
+            this.onLoad(this.page, params);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['deptId'] = this.deptId;
+            console.log("load " + JSON.stringify(params))
+            getOfflinePage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+
+<style  lang="scss" scoped>
+.line {
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-start;
+}
+
+.line .lineText {
+    margin-left: 10px;
+    margin-right: 0px;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+}
+
+.line .lineText .orderCount {
+
+    color: green;
+    font-size: 0.8rem;
+}
+
+.line .lineText .spliteLine {
+    color: gray;
+    font-size: 0.8rem;
+}
+
+.line .lineText .orderUnconfirm {
+
+    color: lightcoral;
+    font-size: 0.8rem;
+}
+
+.line .lineText .orderProcessing {
+
+    color: dodgerblue;
+    font-size: 0.8rem;
+}
+</style>

+ 233 - 0
src/views/business/warning/outlitervaluewarnlist.vue

@@ -0,0 +1,233 @@
+<!--
+ * @Title: 
+ * @Description: 预警测站列表,按测站统计
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :page.sync="page" :data="data" ref="crud"
+                        v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
+                        @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
+                        @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+                        @refresh-change="refreshChange" @on-load="onLoad">
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+    </div>
+</template>
+
+<script>
+
+import { getOutltervaluePage, getDetail } from "@/api/business/warning/warning.js";
+
+import { mapGetters } from "vuex";
+export default {
+    components: {
+
+    },
+    props: {
+        deptId: {
+            type: [Number],
+            required: true
+        },
+    },
+    name: 'warninglist',
+    data() {
+        return {
+            dialogTitle: "异常测站列表",
+            id: "",
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                height: "auto",
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                addBtn: false,
+                tree: true,
+                border: true,
+                index: true,
+                editBtn: false,
+                delBtn: false,
+                menuWidth: 200,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                menu: false,
+                column: [
+                    {
+                        label: "测站编码",
+                        prop: "rtuCode",
+                        span: 24,
+                        search: true,
+                    },
+                    {
+                        label: "测站名称",
+                        prop: "rtuName",
+                        span: 24,
+                        search: true,
+                    },
+                    {
+                        label: "行政区",
+                        prop: "adCity",
+                        span: 12,
+                        html: true,
+                        formatter: (val) => {
+                            if (val.adDist) {
+                                return '<b>' + val.adCity + '</b>/' + '<b>' + val.adDist + '</b>'
+                            } else {
+                                return '<b>' + val.adCity + '</b>'
+                            }
+                        }
+                    },
+                    {
+                        label: "运维单位",
+                        prop: "manageCompany",
+                        span: 12,
+                    },
+                    {
+                        label: "异常信息",
+                        prop: "warningDesc",
+                        span: 12,
+                    },
+                    {
+                        label: "发生时间",
+                        prop: "warningHappenTime",
+                        span: 12,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                // closeBtn: this.vaildData(this.permission.order_close, false),
+                // changeBtn: this.vaildData(this.permission.order_change, false),
+            };
+        },
+    },
+    created() {
+
+    },
+    methods: {
+        init() {
+            //  this.onLoad(this.page);
+        },
+        searchReset() {
+            this.query = {};
+            this.page.currentPage = 1;
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            var params = {};
+            this.onLoad(this.page, params);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['deptId'] = this.deptId;
+            console.log("load " + JSON.stringify(params))
+            getOutltervaluePage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+
+<style  lang="scss" scoped>
+.line {
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-start;
+}
+
+.line .lineText {
+    margin-left: 10px;
+    margin-right: 0px;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+}
+
+.line .lineText .orderCount {
+
+    color: green;
+    font-size: 0.8rem;
+}
+
+.line .lineText .spliteLine {
+    color: gray;
+    font-size: 0.8rem;
+}
+
+.line .lineText .orderUnconfirm {
+
+    color: lightcoral;
+    font-size: 0.8rem;
+}
+
+.line .lineText .orderProcessing {
+
+    color: dodgerblue;
+    font-size: 0.8rem;
+}
+</style>

+ 233 - 0
src/views/business/warning/rainhourmissoutwarnlist.vue

@@ -0,0 +1,233 @@
+<!--
+ * @Title: 
+ * @Description: 预警测站列表,按测站统计
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :page.sync="page" :data="data" ref="crud"
+                        v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
+                        @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
+                        @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+                        @refresh-change="refreshChange" @on-load="onLoad">
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+    </div>
+</template>
+
+<script>
+
+import { getRainHourmissoutPage, getDetail } from "@/api/business/warning/warning.js";
+
+import { mapGetters } from "vuex";
+export default {
+    components: {
+
+    },
+    props: {
+        deptId: {
+            type: [Number],
+            required: true
+        },
+    },
+    name: 'warninglist',
+    data() {
+        return {
+            dialogTitle: "异常测站列表",
+            id: "",
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                height: "auto",
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                addBtn: false,
+                tree: true,
+                border: true,
+                index: true,
+                editBtn: false,
+                delBtn: false,
+                menuWidth: 200,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                menu: false,
+                column: [
+                    {
+                        label: "测站编码",
+                        prop: "rtuCode",
+                        span: 24,
+                        search: true,
+                    },
+                    {
+                        label: "测站名称",
+                        prop: "rtuName",
+                        span: 24,
+                        search: true,
+                    },
+                    {
+                        label: "行政区",
+                        prop: "adCity",
+                        span: 12,
+                        html: true,
+                        formatter: (val) => {
+                            if (val.adDist) {
+                                return '<b>' + val.adCity + '</b>/' + '<b>' + val.adDist + '</b>'
+                            } else {
+                                return '<b>' + val.adCity + '</b>'
+                            }
+                        }
+                    },
+                    {
+                        label: "运维单位",
+                        prop: "manageCompany",
+                        span: 12,
+                    },
+                    {
+                        label: "异常信息",
+                        prop: "warningDesc",
+                        span: 12,
+                    },
+                    {
+                        label: "发生时间",
+                        prop: "warningHappenTime",
+                        span: 12,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                // closeBtn: this.vaildData(this.permission.order_close, false),
+                // changeBtn: this.vaildData(this.permission.order_change, false),
+            };
+        },
+    },
+    created() {
+
+    },
+    methods: {
+        init() {
+            //  this.onLoad(this.page);
+        },
+        searchReset() {
+            this.query = {};
+            this.page.currentPage = 1;
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            var params = {};
+            this.onLoad(this.page, params);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['deptId'] = this.deptId;
+            console.log("load " + JSON.stringify(params))
+            getRainHourmissoutPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+
+<style  lang="scss" scoped>
+.line {
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-start;
+}
+
+.line .lineText {
+    margin-left: 10px;
+    margin-right: 0px;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+}
+
+.line .lineText .orderCount {
+
+    color: green;
+    font-size: 0.8rem;
+}
+
+.line .lineText .spliteLine {
+    color: gray;
+    font-size: 0.8rem;
+}
+
+.line .lineText .orderUnconfirm {
+
+    color: lightcoral;
+    font-size: 0.8rem;
+}
+
+.line .lineText .orderProcessing {
+
+    color: dodgerblue;
+    font-size: 0.8rem;
+}
+</style>

+ 233 - 0
src/views/business/warning/rainhourupdelaywarnlist.vue

@@ -0,0 +1,233 @@
+<!--
+ * @Title: 
+ * @Description: 预警测站列表,按测站统计
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :page.sync="page" :data="data" ref="crud"
+                        v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
+                        @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
+                        @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+                        @refresh-change="refreshChange" @on-load="onLoad">
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+    </div>
+</template>
+
+<script>
+
+import { getRainHourupdelayPage, getDetail } from "@/api/business/warning/warning.js";
+
+import { mapGetters } from "vuex";
+export default {
+    components: {
+
+    },
+    props: {
+        deptId: {
+            type: [Number],
+            required: true
+        },
+    },
+    name: 'warninglist',
+    data() {
+        return {
+            dialogTitle: "异常测站列表",
+            id: "",
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                height: "auto",
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                addBtn: false,
+                tree: true,
+                border: true,
+                index: true,
+                editBtn: false,
+                delBtn: false,
+                menuWidth: 200,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                menu: false,
+                column: [
+                    {
+                        label: "测站编码",
+                        prop: "rtuCode",
+                        span: 24,
+                        search: true,
+                    },
+                    {
+                        label: "测站名称",
+                        prop: "rtuName",
+                        span: 24,
+                        search: true,
+                    },
+                    {
+                        label: "行政区",
+                        prop: "adCity",
+                        span: 12,
+                        html: true,
+                        formatter: (val) => {
+                            if (val.adDist) {
+                                return '<b>' + val.adCity + '</b>/' + '<b>' + val.adDist + '</b>'
+                            } else {
+                                return '<b>' + val.adCity + '</b>'
+                            }
+                        }
+                    },
+                    {
+                        label: "运维单位",
+                        prop: "manageCompany",
+                        span: 12,
+                    },
+                    {
+                        label: "异常信息",
+                        prop: "warningDesc",
+                        span: 12,
+                    },
+                    {
+                        label: "发生时间",
+                        prop: "warningHappenTime",
+                        span: 12,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                // closeBtn: this.vaildData(this.permission.order_close, false),
+                // changeBtn: this.vaildData(this.permission.order_change, false),
+            };
+        },
+    },
+    created() {
+
+    },
+    methods: {
+        init() {
+            //  this.onLoad(this.page);
+        },
+        searchReset() {
+            this.query = {};
+            this.page.currentPage = 1;
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            var params = {};
+            this.onLoad(this.page, params);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['deptId'] = this.deptId;
+            console.log("load " + JSON.stringify(params))
+            getRainHourupdelayPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+
+<style  lang="scss" scoped>
+.line {
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-start;
+}
+
+.line .lineText {
+    margin-left: 10px;
+    margin-right: 0px;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+}
+
+.line .lineText .orderCount {
+
+    color: green;
+    font-size: 0.8rem;
+}
+
+.line .lineText .spliteLine {
+    color: gray;
+    font-size: 0.8rem;
+}
+
+.line .lineText .orderUnconfirm {
+
+    color: lightcoral;
+    font-size: 0.8rem;
+}
+
+.line .lineText .orderProcessing {
+
+    color: dodgerblue;
+    font-size: 0.8rem;
+}
+</style>

+ 233 - 0
src/views/business/warning/riverhourmissoutwarnlist.vue

@@ -0,0 +1,233 @@
+<!--
+ * @Title: 
+ * @Description: 预警测站列表,按测站统计
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :page.sync="page" :data="data" ref="crud"
+                        v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
+                        @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
+                        @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+                        @refresh-change="refreshChange" @on-load="onLoad">
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+    </div>
+</template>
+
+<script>
+
+import { getRiverHourmissoutPage, getDetail } from "@/api/business/warning/warning.js";
+
+import { mapGetters } from "vuex";
+export default {
+    components: {
+
+    },
+    props: {
+        deptId: {
+            type: [Number],
+            required: true
+        },
+    },
+    name: 'warninglist',
+    data() {
+        return {
+            dialogTitle: "异常测站列表",
+            id: "",
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                height: "auto",
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                addBtn: false,
+                tree: true,
+                border: true,
+                index: true,
+                editBtn: false,
+                delBtn: false,
+                menuWidth: 200,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                menu: false,
+                column: [
+                    {
+                        label: "测站编码",
+                        prop: "rtuCode",
+                        span: 24,
+                        search: true,
+                    },
+                    {
+                        label: "测站名称",
+                        prop: "rtuName",
+                        span: 24,
+                        search: true,
+                    },
+                    {
+                        label: "行政区",
+                        prop: "adCity",
+                        span: 12,
+                        html: true,
+                        formatter: (val) => {
+                            if (val.adDist) {
+                                return '<b>' + val.adCity + '</b>/' + '<b>' + val.adDist + '</b>'
+                            } else {
+                                return '<b>' + val.adCity + '</b>'
+                            }
+                        }
+                    },
+                    {
+                        label: "运维单位",
+                        prop: "manageCompany",
+                        span: 12,
+                    },
+                    {
+                        label: "异常信息",
+                        prop: "warningDesc",
+                        span: 12,
+                    },
+                    {
+                        label: "发生时间",
+                        prop: "warningHappenTime",
+                        span: 12,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                // closeBtn: this.vaildData(this.permission.order_close, false),
+                // changeBtn: this.vaildData(this.permission.order_change, false),
+            };
+        },
+    },
+    created() {
+
+    },
+    methods: {
+        init() {
+            //  this.onLoad(this.page);
+        },
+        searchReset() {
+            this.query = {};
+            this.page.currentPage = 1;
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            var params = {};
+            this.onLoad(this.page, params);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['deptId'] = this.deptId;
+            console.log("load " + JSON.stringify(params))
+            getRiverHourmissoutPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+
+<style  lang="scss" scoped>
+.line {
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-start;
+}
+
+.line .lineText {
+    margin-left: 10px;
+    margin-right: 0px;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+}
+
+.line .lineText .orderCount {
+
+    color: green;
+    font-size: 0.8rem;
+}
+
+.line .lineText .spliteLine {
+    color: gray;
+    font-size: 0.8rem;
+}
+
+.line .lineText .orderUnconfirm {
+
+    color: lightcoral;
+    font-size: 0.8rem;
+}
+
+.line .lineText .orderProcessing {
+
+    color: dodgerblue;
+    font-size: 0.8rem;
+}
+</style>

+ 233 - 0
src/views/business/warning/riverhourupdelaywarnlist.vue

@@ -0,0 +1,233 @@
+<!--
+ * @Title: 
+ * @Description: 预警测站列表,按测站统计
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :page.sync="page" :data="data" ref="crud"
+                        v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
+                        @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
+                        @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+                        @refresh-change="refreshChange" @on-load="onLoad">
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+    </div>
+</template>
+
+<script>
+
+import { getRiverHourupdelayPage, getDetail } from "@/api/business/warning/warning.js";
+
+import { mapGetters } from "vuex";
+export default {
+    components: {
+
+    },
+    props: {
+        deptId: {
+            type: [Number],
+            required: true
+        },
+    },
+    name: 'warninglist',
+    data() {
+        return {
+            dialogTitle: "异常测站列表",
+            id: "",
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                height: "auto",
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                addBtn: false,
+                tree: true,
+                border: true,
+                index: true,
+                editBtn: false,
+                delBtn: false,
+                menuWidth: 200,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                menu: false,
+                column: [
+                    {
+                        label: "测站编码",
+                        prop: "rtuCode",
+                        span: 24,
+                        search: true,
+                    },
+                    {
+                        label: "测站名称",
+                        prop: "rtuName",
+                        span: 24,
+                        search: true,
+                    },
+                    {
+                        label: "行政区",
+                        prop: "adCity",
+                        span: 12,
+                        html: true,
+                        formatter: (val) => {
+                            if (val.adDist) {
+                                return '<b>' + val.adCity + '</b>/' + '<b>' + val.adDist + '</b>'
+                            } else {
+                                return '<b>' + val.adCity + '</b>'
+                            }
+                        }
+                    },
+                    {
+                        label: "运维单位",
+                        prop: "manageCompany",
+                        span: 12,
+                    },
+                    {
+                        label: "异常信息",
+                        prop: "warningDesc",
+                        span: 12,
+                    },
+                    {
+                        label: "发生时间",
+                        prop: "warningHappenTime",
+                        span: 12,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                // closeBtn: this.vaildData(this.permission.order_close, false),
+                // changeBtn: this.vaildData(this.permission.order_change, false),
+            };
+        },
+    },
+    created() {
+
+    },
+    methods: {
+        init() {
+            //  this.onLoad(this.page);
+        },
+        searchReset() {
+            this.query = {};
+            this.page.currentPage = 1;
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            var params = {};
+            this.onLoad(this.page, params);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['deptId'] = this.deptId;
+            console.log("load " + JSON.stringify(params))
+            getRiverHourupdelayPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+
+<style  lang="scss" scoped>
+.line {
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-start;
+}
+
+.line .lineText {
+    margin-left: 10px;
+    margin-right: 0px;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+}
+
+.line .lineText .orderCount {
+
+    color: green;
+    font-size: 0.8rem;
+}
+
+.line .lineText .spliteLine {
+    color: gray;
+    font-size: 0.8rem;
+}
+
+.line .lineText .orderUnconfirm {
+
+    color: lightcoral;
+    font-size: 0.8rem;
+}
+
+.line .lineText .orderProcessing {
+
+    color: dodgerblue;
+    font-size: 0.8rem;
+}
+</style>

+ 17 - 13
src/views/business/warning/warninglist.vue

@@ -16,14 +16,14 @@
                         @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
                         @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
                         @refresh-change="refreshChange" @on-load="onLoad">
-                        <template slot="warningStatus" slot-scope="row">
+                        <!-- <template slot="warningStatus" slot-scope="row">
                             <div v-if="row.row.warningStatus == 0" style="color: orangered;">
                                 预警中
                             </div>
                             <div v-else style="color: blue;">
                                 已关闭
                             </div>
-                        </template>
+                        </template> -->
                     </avue-crud>
                 </basic-container>
             </el-col>
@@ -40,8 +40,11 @@ export default {
     components: {
 
     },
-    prop: {
-
+    props: {
+        deptId: {
+            type: [Number],
+            required: true
+        },
     },
     name: 'warninglist',
     data() {
@@ -82,14 +85,14 @@ export default {
                 menu: false,
                 column: [
                     {
-                        label: "测站名称",
-                        prop: "rtuName",
+                        label: "测站编码",
+                        prop: "rtuCode",
                         span: 24,
                         search: true,
                     },
                     {
-                        label: "测站编码",
-                        prop: "rtuCode",
+                        label: "测站名称",
+                        prop: "rtuName",
                         span: 24,
                         search: true,
                     },
@@ -156,11 +159,11 @@ export default {
                         prop: "warningHappenTime",
                         span: 12,
                     },
-                    {
-                        label: "恢复时间",
-                        prop: "warningRecoveryTime",
-                        span: 12,
-                    },
+                    // {
+                    //     label: "恢复时间",
+                    //     prop: "warningRecoveryTime",
+                    //     span: 12,
+                    // },
                 ],
             },
             data: [],
@@ -221,6 +224,7 @@ export default {
         onLoad(page, params = {}) {
             this.loading = true;
             params['warningStatus'] = 0;
+            params['deptId'] = this.deptId;
             getPage(
                 page.currentPage,
                 page.pageSize,

+ 1545 - 0
src/views/wel/index-admin.vue

@@ -0,0 +1,1545 @@
+<template>
+    <div>
+        <el-row :gutter="10">
+            <el-col :span="6">
+                <el-card shadow="always" style="height:280px">
+                    <div ref="rtuInfoCountPieChart" style="width: 100%;height: 280px;">
+                    </div>
+                </el-card>
+            </el-col>
+            <el-col :span="6">
+                <el-card shadow="always" style="height:280px">
+                    <div ref="rtuDataUpCountChart" style="width: 100%;height: 280px;">
+                    </div>
+                </el-card>
+            </el-col>
+            <el-col :span="6">
+                <el-card shadow="always" style="height:280px">
+                    <div ref="checkOrderChart" style="width: 100%;height: 280px;">
+                    </div>
+                </el-card>
+            </el-col>
+            <el-col :span="6">
+                <el-card shadow="always" style="height:280px">
+                    <div ref="equipmentInspectionCountChart" style="width: 100%;height: 280px;">
+                    </div>
+                </el-card>
+            </el-col>
+        </el-row>
+        <el-row :gutter="10">
+            <el-col :span="12">
+                <el-card shadow="always" style="height: 500px;">
+                    <div slot="header" class="clearfix">
+                        <span>测站异常分布统计信息</span>
+                    </div>
+                    <avue-crud :option="option" :table-loading="loading" :page.sync="page" :data="data" ref="crud"
+                        v-model="form" @on-load="onLoad">
+                    </avue-crud>
+                </el-card>
+            </el-col>
+
+            <el-col :span="6">
+                <el-row>
+                    <el-col :span="24">
+                        <el-card class="box-small-card">
+                            <div slot="header" class="clearfix">
+                                <span>今日维修任务动态</span>
+                                <el-button style="float: right; padding: 3px 0" type="text"
+                                    @click="openMoreTodayOrderProcess">更多</el-button>
+                            </div>
+                            <div v-for="(item, index) in todayOrderList" :key="index" class="list-item">
+                                <el-row type="flex">
+                                    <el-col :span="19">
+                                        <div style="padding-right: 5px;">
+
+                                            <div style="display: flex; flex-direction: row;align-items: center;">
+                                                <label>{{ item.rtuName }}</label>
+                                                <label style="margin-left: 5px;color: gray;"> / {{ item.rtuCode }}</label>
+                                            </div>
+                                            <div
+                                                style="display: flex; flex-direction: row;align-items: center;margin-top: 4px;">
+                                                <label>维修状态:<span style="color:gray">{{
+                                                    item.orderStatusName }}</span></label>
+                                            </div>
+                                            <div
+                                                style="display: flex; flex-direction: row;align-items: center;margin-top: 4px;">
+                                                <label>更新时间:<span style="color:gray">{{ item.updateTime }}</span></label>
+                                            </div>
+                                            <div style="margin-top: 4px;margin-bottom: 5px;">
+                                                <label>备注:<span style="color:gray">{{ item.processDesc }}</span></label>
+                                            </div>
+                                        </div>
+                                    </el-col>
+                                    <el-col :span="5" style="display: flex;flex-direction: column;justify-content: center;">
+                                        <el-button style="font-size: 0.7rem;" size="mini" type="info" round
+                                            @click="openCheckOrderReportDetail(item)">查看详情</el-button>
+                                    </el-col>
+                                </el-row>
+                            </div>
+                        </el-card>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="24">
+                        <el-card class="box-card-news">
+                            <div slot="header" class="clearfix">
+                                <span>通知公告</span>
+                                <el-button style="float: right; padding: 3px 0" type="text"
+                                    @click="openMoreNotice">更多</el-button>
+                            </div>
+                            <div v-for="(item, index) in noticeList" :key="index" class="notice-item">
+                                <div>
+                                    <label>{{ item.title }}</label>
+                                </div>
+                                <div style="margin-top: 4px;">
+                                    <label class="notice-time">发布时间: {{ item.releaseTime }}</label>
+                                </div>
+                                <div style="margin-top: 4px;margin-bottom: 2px;">
+                                    <label>{{
+                                        item.content
+                                    }}</label>
+                                </div>
+                            </div>
+                        </el-card>
+                    </el-col>
+                </el-row>
+            </el-col>
+            <el-col :span="6">
+                <el-row>
+                    <el-col :span="24">
+                        <el-card class="box-small-card">
+                            <div slot="header" class="clearfix">
+                                <span>今日巡检动态</span>
+                                <el-button style="float: right; padding: 3px 0" type="text"
+                                    @click="openMoreTodayInspectionReport">更多</el-button>
+                            </div>
+                            <div v-for="(item, index) in todayInspectionReportList" :key="index" class="list-item">
+                                <el-row type="flex">
+                                    <el-col :span="19">
+                                        <div style="display: flex; flex-direction: row;align-items: center;">
+                                            <label>{{ item.rtuName }}</label>
+                                            <label style="margin-left: 5px;color: gray;"> / {{ item.rtuCode }}</label>
+                                        </div>
+                                        <div
+                                            style="display: flex; flex-direction: row;align-items: center;margin-top: 4px;">
+                                            <label>填报人:<span style="color:gray">{{
+                                                item.servicePersonName
+                                            }}</span></label>
+                                        </div>
+                                        <div
+                                            style="display: flex; flex-direction: row;align-items: center;margin-top: 4px;margin-bottom: 5px;">
+                                            <label>填报时间:<span style="color:gray">{{ item.updateTime }}</span></label>
+                                        </div>
+                                    </el-col>
+                                    <el-col :span="5" style="display: flex;flex-direction: column;justify-content: center;">
+                                        <el-button style="font-size: 0.7rem;" size="mini" type="info" round
+                                            @click="openInspectionReportDetail(item)">查看详情</el-button>
+                                    </el-col>
+                                </el-row>
+                            </div>
+                        </el-card>
+
+
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="24">
+                        <el-card class="box-card-apk">
+                            <div slot="header" class="clearfix">
+                                <span>手机客户端下载</span>
+                            </div>
+                            <div>
+                                <img style="width: 100px;height: 100px;" :src="appinfo.apkQrUrl" />
+                            </div>
+                            <div style="margin-top: 4px;">
+                                <label style="padding-left: 5px;font-size: 0.8rem;">版本号 {{ appinfo.version }}</label>
+                            </div>
+                            <div style="margin-top: 4px;">
+                                <el-button type="text" @click="downloadApk">下载安卓客户端</el-button>
+                            </div>
+                        </el-card>
+                    </el-col>
+                </el-row>
+            </el-col>
+        </el-row>
+        <el-drawer title="今日维修任务动态" :visible.sync="moreTodayOrderProcessDig" v-if="moreTodayOrderProcessDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <todaycheckorderprocesslist ref="todaycheckorderprocesslist">
+            </todaycheckorderprocesslist>
+        </el-drawer>
+        <el-drawer title="今日巡检动态" :visible.sync="moreTodayInspectionReportDig" v-if="moreTodayInspectionReportDig"
+            size="50%" :close-on-click-modal="false" append-to-body>
+            <todaynspectionrportlist ref="todaynspectionrportlist"></todaynspectionrportlist>
+        </el-drawer>
+        <el-drawer title="通知公告" :visible.sync="moreNoticeDig" v-if="moreNoticeDig" size="50%" :close-on-click-modal="false"
+            append-to-body>
+            <todaynoticelist ref="todaynoticelist"></todaynoticelist>
+        </el-drawer>
+        <el-drawer title="异常测站信息" :visible.sync="warninglistDig" v-if="warninglistDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <warninglist ref="warninglist"></warninglist>
+        </el-drawer>
+        <el-drawer title="未确认维修任务" :visible.sync="uncomfireCheckOrderDig" v-if="uncomfireCheckOrderDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <uncomfirecheckorderlist ref="uncomfirecheckorderlist"></uncomfirecheckorderlist>
+        </el-drawer>
+        <el-drawer title="确认超时维修任务" :visible.sync="comfireDelayCheckOrderDig" v-if="comfireDelayCheckOrderDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <comfiredelaycheckorderlist ref="comfiredelaycheckorderlist"></comfiredelaycheckorderlist>
+        </el-drawer>
+        <el-drawer title="维修任务详情" :visible.sync="checkorderprocessdetailDig" v-if="checkorderprocessdetailDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <checkorderprocessdetail ref="checkorderprocessdetail" :orderId="checkOrderReportId"></checkorderprocessdetail>
+        </el-drawer>
+        <el-drawer title="设备巡检详情" :visible.sync="inspectionreportdetailDig" v-if="inspectionreportdetailDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <inspectionreportdetail ref="inspectionreportdetail" :id="inspectionReportId"></inspectionreportdetail>
+        </el-drawer>
+    </div>
+</template>
+
+<script>
+import { getRealData } from "@/api/home/home.js";
+import { todayOrderProcessList } from "@/api/business/order/process.js";
+import { todayInspectionReportList } from "@/api/business/inspection/inspectionreport.js";
+import { getLastList } from "@/api/notice/notice.js";
+import { getStore } from '@/util/store.js';
+import { getAppInfo } from "@/api/versionmanage/version.js";
+import todaycheckorderprocesslist from "../business/order/todaycheckorderprocesslist.vue";
+import uncomfirecheckorderlist from "../business/order/uncomfirecheckorderlist.vue";
+import comfiredelaycheckorderlist from "../business/order/comfiredelaycheckorderlist.vue";
+import todaynspectionrportlist from "../business/inspection/todaynspectionrportlist.vue";
+import todaynoticelist from "../notice/todaynoticelist.vue";
+import warninglist from "../business/warning/warninglist.vue";
+import checkorderprocessdetail from "../business/order/checkorderprocessdetail.vue";
+import inspectionreportdetail from "../business/inspection/inspectionreportdetail.vue";
+import { mapGetters } from "vuex";
+export default {
+    name: "home",
+    components: {
+        todaycheckorderprocesslist,
+        todaynspectionrportlist,
+        todaynoticelist,
+        warninglist,
+        uncomfirecheckorderlist,
+        comfiredelaycheckorderlist,
+        checkorderprocessdetail,
+        inspectionreportdetail
+    },
+    data() {
+        return {
+            adminPageStyle: false,
+            warninglistDig: false,
+            uncomfireCheckOrderDig: false,
+            comfireDelayCheckOrderDig: false,
+            moreTodayOrderProcessDig: false,
+            moreTodayInspectionReportDig: false,
+            moreNoticeDig: false,
+            checkorderprocessdetailDig: false,
+            inspectionreportdetailDig: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            data: [],
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                height: "auto",
+
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                addBtn: false,
+                tree: true,
+                border: true,
+                index: true,
+                editBtn: false,
+                delBtn: false,
+                menu: false,
+                menuWidth: 200,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                refreshBtn: false,
+                header: false,
+                column: [
+                    {
+                        label: "盟市",
+                        prop: "adCity",
+                        span: 24,
+                    },
+                    {
+                        label: "测站数量",
+                        prop: "rtus",
+                        span: 12,
+                    },
+                    {
+                        label: "测站离线",
+                        prop: "warnOffline",
+                        span: 12,
+                        html: true,
+                        formatter: (val) => {
+                            if (val.warnOffline && val.warnOffline > 0) {
+                                let n = val.warnOffline / val.rtus * 100;
+                                let num = new Number(n);
+                                return '<b>' + val.warnOffline + '</b>/' + '<b style="color:lightblue">' + num.toFixed(2) + '%</b>'
+                            } else {
+                                return '<b></b>'
+                            }
+                        }
+                    }, {
+                        label: "小时报漏报",
+                        prop: "warnMissOut",
+                        span: 12,
+                        html: true,
+                        formatter: (val) => {
+                            if (val.warnMissOut && val.warnMissOut > 0) {
+                                let n = val.warnMissOut / val.rtus * 100;
+                                let num = new Number(n);
+                                return '<b>' + val.warnMissOut + '</b>/' + '<b style="color:lightblue">' + num.toFixed(2) + '%</b>'
+                            } else {
+                                return '<b></b>'
+                            }
+                        }
+                    }, {
+                        label: "5分钟上报延时",
+                        prop: "warnUpMinDelay",
+                        span: 12,
+                        html: true,
+                        formatter: (val) => {
+                            if (val.warnUpMinDelay && val.warnUpMinDelay > 0) {
+                                let n = val.warnUpMinDelay / val.rtus * 100;
+                                let num = new Number(n);
+                                return '<b>' + val.warnUpMinDelay + '</b>/' + '<b style="color:lightblue">' + num.toFixed(2) + '%</b>'
+                            } else {
+                                return '<b></b>'
+                            }
+                        }
+                    }, {
+                        label: "小时上报延时",
+                        prop: "warnUpHourDelay",
+                        span: 12,
+                        html: true,
+                        formatter: (val) => {
+                            if (val.warnUpHourDelay && val.warnUpHourDelay > 0) {
+                                let n = val.warnUpHourDelay / val.rtus * 100;
+                                let num = new Number(n);
+                                return '<span style="cursor:pointer;text-decoration-line: underline;"><b>' + val.warnUpHourDelay + '</b> / ' + '<b style="color:blue">' + num.toFixed(2) + '%</b></span>'
+                            } else {
+                                return '<b></b>'
+                            }
+                        }
+                    },
+                ],
+            },
+            appinfo: {
+                apkUrl: '',
+                apkQrUrl: '',
+                version: ''
+            },
+            checkOrderReportId: '',
+            inspectionReportId: '',
+            realData: {
+            },
+            stompClient: null,
+            layout: [],
+            cache: [],
+            editSw: false,
+            dialog: false,
+            id: "",
+            guideForm: {},
+            second: 0,
+            timer: null,
+            state: 5,
+            todayOrderList: [],
+            todayInspectionReportList: [],
+            noticeList: [],
+            userInfo: getStore({ name: 'userInfo' }) || [],
+            rtuInfoCountPieMap: null,
+            rtuInfoCountPieOption: {
+                title: {
+                    text: '测站状态统计信息',
+                    subtext: '测站总数量',
+                    left: 'center'
+                },
+                tooltip: {
+                    trigger: 'item',
+                    formatter: '{a} <br/>{b} : {c} ({d}%)',
+                    textStyle: {
+                        fontSize: 12
+                    }
+                },
+                legend: {
+                    bottom: 20,
+                    left: 'center',
+                    data: ['运行正常', '测站离线', '其他异常']
+                },
+                series: [
+                    {
+                        name: '状态信息',
+                        type: 'pie',
+                        radius: '40%',
+                        center: ['50%', '50%'],
+                        selectedMode: 'single',
+                        data: [
+                            {
+                                value: 10,
+                                name: '运行正常',
+                                label: {
+                                    show: true,
+                                    formatter(param) {
+                                        // correct the percentage
+                                        return ' (' + param.value + '/' + param.percent + '%)';
+                                    }
+                                },
+                                itemStyle: {
+                                    color: '#547bc9'
+                                }
+                            },
+                            {
+                                value: 20,
+                                name: '测站离线',
+                                label: {
+                                    show: true,
+                                    formatter(param) {
+                                        // correct the percentage
+                                        return ' (' + param.value + '/' + param.percent + '%)';
+                                    }
+                                },
+                                itemStyle: {
+                                    color: '#ff0000'
+                                }
+                            },
+                            {
+                                value: 20,
+                                name: '其他异常',
+                                label: {
+                                    show: true,
+                                    formatter(param) {
+                                        // correct the percentage
+                                        return ' (' + param.value + '/' + param.percent + '%)';
+                                    }
+                                },
+                                itemStyle: {
+                                    color: '#ee7070'
+                                }
+                            },
+                        ],
+                        emphasis: {
+                            itemStyle: {
+                                shadowBlur: 10,
+                                shadowOffsetX: 0,
+                                shadowColor: 'rgba(0, 0, 0, 0.5)'
+                            }
+                        }
+                    }
+                ]
+            },
+            rtuDataUpCountMap: null,
+            rtuDataUpCountOption: {
+                title: {
+                    text: '测站上报率统计信息',
+                    subtext: '统计口径为上一个自然天',
+                    left: 'center'
+                },
+                tooltip: {
+                    trigger: 'axis',
+                    axisPointer: {
+                        type: 'shadow'
+                    },
+
+                },
+                legend: {
+                    show: false,
+                    left: 'right',
+                },
+                grid: {
+                    left: '3%',
+                    right: '4%',
+                    bottom: '10%',
+                    containLabel: true
+                },
+                xAxis: {
+                    type: 'value',
+                    boundaryGap: [0, 0.01]
+                },
+                yAxis: {
+                    type: 'category',
+                    data: ['墒情站', '水位站', '雨量站']
+                },
+                series: [
+                    {
+                        name: '测站数量',
+                        type: 'bar',
+                        data: [{
+                            value: 100,
+                            showpercent: false,
+                            percent: 0
+                        }, {
+                            value: 200,
+                            showpercent: false,
+                            percent: 0
+                        }, {
+                            value: 300,
+                            showpercent: false,
+                            percent: 0
+                        }],
+                        itemStyle: {
+                            color: 'rgba(84, 112, 198,1.0)'
+                        },
+                        label: {
+                            show: true,
+                            position: 'insideLeft',
+                            formatter(params) {
+                                if (params.data.showpercent) {
+                                    return '    ' + params.data.value + '/' + params.data.percent + '%';
+                                } else {
+                                    return '    ' + params.data.value;
+                                }
+
+
+
+                            }
+                        },
+                    },
+                    {
+                        name: '上报数量',
+                        type: 'bar',
+                        data: [{
+                            value: 34,
+                            showpercent: true,
+                            percent: 10
+                        }, {
+                            value: 45,
+                            showpercent: true,
+                            percent: 20
+                        }, {
+                            value: 23,
+                            showpercent: true,
+                            percent: 30
+                        }],
+                        itemStyle: {
+                            color: 'rgba(145, 204, 122,1.0)'
+                        },
+                        label: {
+                            show: true,
+                            position: 'insideLeft',
+                            formatter(params) {
+
+                                if (params.data.showpercent) {
+                                    return '    ' + params.data.value + '/' + params.data.percent + '%';
+                                } else {
+                                    return '    ' + params.data.value;
+                                }
+
+
+
+                            }
+                        },
+                    }
+                ]
+            },
+            checkOrderMap: null,
+            checkOrderCountOption: {
+                tooltip: {
+                    trigger: 'axis',
+                    axisPointer: {
+                        type: 'shadow',
+                    },
+                    showContent: true,
+                    formatter: function (params) {
+                        console.log(JSON.stringify(params))
+                        if (params[0].data.showpercent) {
+                            return "点击柱状图可查看详情";
+                        } else {
+                            return "";
+                        }
+                    },
+                    textStyle: {
+                        fontSize: 12
+                    }
+                },
+                title: {
+                    text: '维修任务统计信息',
+                    left: 'center'
+                    // textStyle: {
+                    //     fontSize: 16,
+                    //     fontWeight: "bold",
+                    //     color: "#464646",
+                    // }
+                },
+                color: ['#5470c6'],
+                yAxis: {
+                    type: 'category',
+                    data: ['超时未确认任务', '未确认任务', '维修中', '维修任务数量']
+                },
+                xAxis: {
+                    type: 'value',
+
+                },
+                grid: {
+                    left: '3%',
+                    right: '4%',
+                    bottom: '10%',
+                    containLabel: true
+                },
+                series: [
+                    {
+                        data: [
+                            {
+                                value: 20,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 30,
+                                itemStyle: {
+                                    color: 'rgba(250, 200, 88,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 40,
+                                itemStyle: {
+                                    color: 'rgba(145, 204, 122,1.0)'
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 200,
+                                itemStyle: {
+
+                                    color: 'rgba(84, 112, 198,1.0)'
+                                },
+                                showpercent: false,
+                                percent: 0
+                            },
+                        ],
+                        type: 'bar',
+                        barWidth: 20,
+                        label: {
+                            show: true,
+                            position: 'insideLeft',
+                            formatter(params) {
+                                if (params.data.showpercent) {
+                                    return '    ' + params.data.value + ' / ' + params.data.percent + '%';
+                                } else {
+                                    return '    ' + params.data.value;
+                                }
+
+                            }
+                        },
+                    }
+                ]
+            },
+            equipmentInspectionChartMap: null,
+            equipmentInspectionCountOption: {
+                tooltip: {
+                    trigger: 'axis',
+                    axisPointer: {
+                        type: 'shadow',
+                    },
+                    showContent: true,
+                    formatter: function (params) {
+                        console.log(JSON.stringify(params))
+                        if (params[0].data.showpercent) {
+                            return "点击柱状图可查看详情";
+                        } else {
+                            return "";
+                        }
+                    }
+                },
+                title: {
+                    text: '本年度设备巡检统计信息',
+                    left: 'center',
+                    // subtext: '待巡检设备数量'
+                    // textStyle: {
+                    //     fontSize: 16,
+                    //     fontWeight: "bold",
+                    //     color: "#464646",
+                    // }
+                },
+                color: ['#5470c6'],
+                yAxis: {
+                    type: 'category',
+                    data: ['汛中(二)已巡检', '汛中(一)已巡检', '汛前已巡检', '需巡检站点数量']
+                },
+                xAxis: {
+                    type: 'value',
+
+                },
+                grid: {
+                    left: '3%',
+                    right: '4%',
+                    bottom: '10%',
+                    containLabel: true
+                },
+                series: [
+                    {
+                        data: [
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(145, 204, 122,1.0)'
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(145, 204, 122,1.0)'
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 100,
+                                itemStyle: {
+                                    color: 'rgba(145, 204, 122,1.0)'
+                                },
+                                showpercent: true,
+                                percent: 4
+                            },
+                            {
+                                value: 500,
+                                itemStyle: {
+                                    color: 'rgba(84, 112, 198,1.0)'
+                                },
+                                showpercent: false,
+                                percent: 0
+                            },
+                        ],
+                        type: 'bar',
+                        barWidth: 20,
+                        label: {
+                            show: true,
+                            position: 'insideLeft',
+                            formatter(params) {
+                                if (params.data.showpercent) {
+                                    return '    ' + params.data.value + ' / ' + params.data.percent + '%';
+                                } else {
+                                    return '    ' + params.data.value;
+                                }
+
+                            }
+                        },
+                    }
+                ]
+            },
+            rtuWarnCountMap: null,
+            rtuWarnCountOption: {
+                tooltip: {
+                    trigger: 'axis',
+                    axisPointer: {
+                        type: 'shadow',
+                    },
+                    showContent: true,
+                    formatter: function (params) {
+                        console.log(JSON.stringify(params))
+                        if (params[0].data.showpercent) {
+                            return "点击柱状图可查看详情";
+                        } else {
+                            return "";
+                        }
+                    },
+                    textStyle: {
+                        fontSize: 12
+                    }
+                },
+                title: {
+
+                    text: '测站异常分类统计信息',
+                    left: 'center'
+                    // textStyle: {
+                    //     fontSize: 16,
+                    //     fontWeight: "bold",
+                    //     color: "#464646",
+                    // }
+                },
+                color: ['#5470c6'],
+                yAxis: {
+                    type: 'category',
+                    data: ['雨量疑似异常值', '水位站小时上报延时', '雨量站小时上报延时', '5分钟上报延时', '水位小时报漏报', '雨量小时报漏报', '时钟异常', '离线', '异常设备总数']
+                },
+                xAxis: {
+                    type: 'value',
+                },
+                grid: {
+                    left: '3%',
+                    right: '4%',
+                    bottom: '10%',
+                    containLabel: true
+                },
+                series: [
+                    {
+                        data: [
+                            {
+                                value: 20,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 20,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 20,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 20,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 20,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 20,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 30,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 40,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 200,
+                                itemStyle: {
+
+                                    color: 'rgba(84, 112, 198,1.0)'
+                                },
+                                showpercent: false,
+                                percent: 0
+                            },
+                        ],
+                        type: 'bar',
+                        barWidth: 20,
+                        label: {
+                            show: true,
+                            position: 'insideLeft',
+                            formatter(params) {
+                                if (params.data.showpercent) {
+                                    return '    ' + params.data.value + ' / ' + params.data.percent + '%';
+                                } else {
+                                    return '    ' + params.data.value;
+                                }
+
+                            }
+                        },
+                    }
+                ]
+            },
+        };
+    },
+    created() {
+        let u = getStore({ name: 'userInfo' });
+        console.log(JSON.stringify(u));
+        // this.getData();
+        if (u.role_name === "sys_admin") {
+            this.adminPageStyle = true;
+        }
+    },
+    computed: {
+        ...mapGetters(["userInfo"]),
+    },
+    mounted() {
+        console.log("mounted ++++++++++++++++++++");
+
+        let d = {
+            'adCity': '合计',
+            'rtus': 2000,
+            'warnOffline': 500,
+            'warnMissOut': 200,
+            'warnUpMinDelay': 0,
+            'warnUpHourDelay': 20
+        };
+
+        let data = [];
+        data.push(d);
+
+        d = {
+            'adCity': '呼和浩特市',
+            'rtus': 400,
+            'warnOffline': 56,
+            'warnMissOut': 36,
+            'warnUpMinDelay': 0,
+            'warnUpHourDelay': 20
+        };
+        data.push(d);
+
+        d = {
+            'adCity': '包头市',
+            'rtus': 300,
+            'warnOffline': 24,
+            'warnMissOut': 16,
+            'warnUpMinDelay': 0,
+            'warnUpHourDelay': 10
+        };
+        data.push(d);
+
+        this.data = data;
+
+
+        // this.initWebsocket();
+        var that = this;
+        let chart = this.$refs.rtuInfoCountPieChart;
+        if (chart) {
+            this.rtuInfoCountPieMap = this.$echarts.init(chart);
+            this.rtuInfoCountPieMap.setOption(this.rtuInfoCountPieOption);
+            this.rtuInfoCountPieMap.off('click');
+            this.rtuInfoCountPieMap.on('click', function (p) {
+                console.log(p)
+                if (p.name === '设备异常') {
+                    that.warninglistDig = true;
+                    that.$nextTick(() => {
+                        that.$refs['warninglist'].init();
+                    });
+                }
+            })
+        }
+
+        chart = this.$refs.rtuDataUpCountChart;
+        if (chart) {
+            this.rtuDataUpCountMap = this.$echarts.init(chart);
+            this.rtuDataUpCountMap.setOption(this.rtuDataUpCountOption);
+            this.rtuDataUpCountMap.off('click');
+            this.rtuDataUpCountMap.on('click', function (p) {
+                console.log(p)
+
+            })
+        }
+
+
+        chart = this.$refs.checkOrderChart;
+        if (chart) {
+            this.checkOrderMap = this.$echarts.init(chart);
+            this.checkOrderMap.setOption(this.checkOrderCountOption);
+            this.checkOrderMap.off('click');
+            this.checkOrderMap.on('click', function (p) {
+                console.log(p)
+                if (p.name === '未确认任务') {
+                    that.uncomfireCheckOrderDig = true;
+                    that.$nextTick(() => {
+                        that.$refs["uncomfirecheckorderlist"].init();
+                    });
+                } else if (p.name === '超时未确认任务') {
+                    that.comfireDelayCheckOrderDig = true;
+                    that.$nextTick(() => {
+                        that.$refs["comfiredelaycheckorderlist"].init();
+                    });
+                }
+            })
+        }
+        chart = this.$refs.equipmentInspectionCountChart;
+        if (chart) {
+            this.equipmentInspectionChartMap = this.$echarts.init(chart);
+            this.equipmentInspectionChartMap.setOption(this.equipmentInspectionCountOption);
+
+            this.equipmentInspectionChartMap.off('click')
+            this.equipmentInspectionChartMap.on('click', function (p) {
+                console.log(p)
+            })
+        }
+
+        chart = this.$refs.rtuWarnCountChart;
+        if (chart) {
+            this.rtuWarnCountMap = this.$echarts.init(chart);
+            this.rtuWarnCountMap.setOption(this.rtuWarnCountOption);
+
+            this.rtuWarnCountMap.off('click')
+            this.rtuWarnCountMap.on('click', function (p) {
+                console.log(p)
+            })
+        }
+
+        let n = {
+            'title': '2023年设备巡检工作通知',
+            'content': '6月1日开始进行设备巡检工作,请各运维单位进行工作计划安排',
+            'releaseTime': '2023-06-20'
+        };
+        let news = [];
+        news.push(n);
+        this.noticeList = news;
+
+        n = {
+            'rtuCode': '0082828822',
+            'rtuName': '小水库一体站',
+            'updateTime': '2023-06-20 12:00:00',
+            'servicePersonName': '张工'
+        }
+        let list = [];
+        list.push(n);
+        this.todayInspectionReportList = list;
+
+        n = {
+            'rtuCode': '0082828822',
+            'rtuName': '小水库一体站',
+            'updateTime': '2023-06-20 12:00:00',
+            'orderStatusName': '已确认',
+            'processDesc': '连续上报延时,检查时间 2023-06-20 12:00:00 , 最近上报时间2023-06-20 12:00:00 ,接收时间2023-06-20 12:00:00'
+        }
+        list = [];
+        list.push(n);
+        this.todayOrderList = list;
+
+        // this.initRtuInfoCountMap();
+        // this.initCheckOrderCountMap();
+        // this.initEquipmentInspectionCountMap();
+        // if (this.timer == null) {
+        //     this.timer = setInterval(this.timeCall, 10000);
+        // }
+    },
+    beforeDestroy() {
+        console.log("beforeDestroy ++++++++++++++++++++");
+        //  this.closeSocket();
+        if (this.timer != null) {
+            console.log("clear timer ++++++++++++++ ")
+            clearInterval(this.timer);
+            this.timer = null;
+        }
+    },
+    methods: {
+        onLoad(page, params = {}) {
+            this.loading = false;
+            params['orderClose'] = 0;
+            // getPage(
+            //     page.currentPage,
+            //     page.pageSize,
+            //     Object.assign(params, this.query)
+            // ).then((res) => {
+            //     const data = res.data.data;
+            //     this.page.total = data.total;
+            //     this.data = data.records;
+            //     this.loading = false;
+            //     this.selectionClear();
+            // });
+        },
+        timeCall() {
+            console.log("time ++++++++++++++++++++");
+            this.getData();
+        },
+        initRtuInfoCountMap() {
+            var that = this;
+
+            let chart = this.$refs.rtuInfoChart;
+            if (chart) {
+                this.rtuInfoMap = this.$echarts.init(chart);
+                this.rtuInfoMap.setOption(this.rtuInfoCountOption);
+                // window.addEventListener("resize", function () {
+                //     that.$refs['rtuInfoChart'].resize();
+                // })
+
+                // this.$on('hook:destroyed', () => {
+                //     window.removeEventListener("resize", function () {
+                //         that.$refs['rtuInfoChart'].resize();
+                //     })
+                // })
+
+                //  this.rtuInfoMap.clear();
+                this.rtuInfoMap.off('click');
+                this.rtuInfoMap.on('click', function (p) {
+                    console.log(p)
+                    if (p.name === '设备异常') {
+                        that.warninglistDig = true;
+                        that.$nextTick(() => {
+                            that.$refs['warninglist'].init();
+                        });
+                    }
+                })
+            }
+        },
+        initCheckOrderCountMap() {
+            let chart = this.$refs.checkOrderChart;
+            if (chart) {
+                this.checkOrderMap = this.$echarts.init(chart);
+                this.checkOrderMap.setOption(this.checkOrderCountOption);
+                // window.addEventListener("resize", function () {
+                //     this.$refs.checkOrderChart.resize();
+                // })
+
+                // this.$on('hook:destroyed', () => {
+                //     window.removeEventListener("resize", function () {
+                //         this.$refs.checkOrderChart.resize();
+                //     })
+                // })
+
+                var that = this;
+                this.checkOrderMap.clear();
+                this.checkOrderMap.off('click');
+                this.checkOrderMap.on('click', function (p) {
+                    console.log(p)
+                    if (p.name === '未确认任务') {
+                        that.uncomfireCheckOrderDig = true;
+                        that.$nextTick(() => {
+                            that.$refs["uncomfirecheckorderlist"].init();
+                        });
+                    } else if (p.name === '超时未确认任务') {
+                        that.comfireDelayCheckOrderDig = true;
+                        that.$nextTick(() => {
+                            that.$refs["comfiredelaycheckorderlist"].init();
+                        });
+                    }
+                })
+            }
+        },
+        initEquipmentInspectionCountMap() {
+            let chart = this.$refs.equipmentInspectionCountChart;
+            if (chart) {
+                this.equipmentInspectionChartMap = this.$echarts.init(chart);
+                this.equipmentInspectionChartMap.setOption(this.equipmentInspectionCountOption);
+                // window.addEventListener("resize", function () {
+                //     this.$refs.equipmentInspectionCountChart.resize();
+                // })
+
+                // this.$on('hook:destroyed', () => {
+                //     window.removeEventListener("resize", function () {
+                //         this.$refs.equipmentInspectionCountChart.resize();
+                //     })
+                // })
+                this.equipmentInspectionChartMap.off('click')
+                this.equipmentInspectionChartMap.on('click', function (p) {
+                    console.log(p)
+                })
+            }
+        },
+        close() {
+            this.dialog = false;
+        },
+        openMoreTodayOrderProcess() {
+            this.moreTodayOrderProcessDig = true;
+            this.$nextTick(() => {
+                this.$refs["todaycheckorderprocesslist"].init();
+            });
+        },
+        openMoreTodayInspectionReport() {
+            this.moreTodayInspectionReportDig = true;
+            this.$nextTick(() => {
+                this.$refs["todaynspectionrportlist"].init();
+            });
+        },
+        openMoreNotice() {
+            this.moreNoticeDig = true;
+            this.$nextTick(() => {
+                this.$refs["todaynoticelist"].init();
+            });
+        },
+        openCheckOrderReportDetail(item) {
+            this.checkOrderReportId = item.orderId;
+            this.checkorderprocessdetailDig = true;
+            this.$nextTick(() => {
+                this.$refs["checkorderprocessdetail"].init();
+            });
+        },
+        openInspectionReportDetail(item) {
+            this.inspectionReportId = item.id;
+            this.inspectionreportdetailDig = true;
+            this.$nextTick(() => {
+                this.$refs["inspectionreportdetail"].init();
+            });
+        },
+        downloadApk() {
+            if (this.appinfo.apkUrl !== '') {
+                window.open(this.appinfo.apkUrl);
+            }
+        },
+        getData() {
+            getRealData().then((res) => {
+                if (res.data.code === 200) {
+                    this.realData = res.data.data;
+
+                    this.option.title.subtext = "测站总数量:" + this.realData.rtus;
+                    this.option.series[0].data[0].value = this.realData.rtus - this.realData.warningRtus;
+                    this.option.series[0].data[1].value = this.realData.warningRtus;
+                    this.rtuInfoCountPieMap.setOption(this.option);
+
+                    // let data = [];
+                    // let num = new Number(this.realData.warningRtus / this.realData.rtus * 100);
+
+                    // let bar = {
+                    //     value: this.realData.warningRtus,
+                    //     itemStyle: {
+                    //         color: 'rgba(255, 0, 0,1.0)'
+                    //     },
+                    //     showpercent: true,
+                    //     percent: num.toFixed(2),
+                    // }
+                    // data.push(bar)
+                    // bar = {
+                    //     value: this.realData.rtus,
+                    //     itemStyle: {
+                    //         color: 'rgba(84, 112, 198,1.0)'
+                    //     },
+                    //     showpercent: false,
+                    //     percent: 0
+                    // }
+                    // data.push(bar)
+                    // this.rtuInfoCountOption.series[0].data = data;
+                    // this.rtuInfoMap.setOption(this.rtuInfoCountOption);
+                    let num = new Number(this.realData.delayComfireOrders / this.realData.orderCount * 100);
+                    this.checkOrderCountOption.series[0].data[0].value = this.realData.delayComfireOrders;
+                    this.checkOrderCountOption.series[0].data[0].showpercent = true;
+                    this.checkOrderCountOption.series[0].data[0].percent = num.toFixed(2);
+
+                    num = new Number(this.realData.unconfirmOrderCount / this.realData.orderCount * 100);
+                    this.checkOrderCountOption.series[0].data[1].value = this.realData.unconfirmOrderCount;
+                    this.checkOrderCountOption.series[0].data[1].showpercent = true;
+                    this.checkOrderCountOption.series[0].data[1].percent = num.toFixed(2);
+
+                    num = new Number((this.realData.orderCount - this.realData.unconfirmOrderCount) / this.realData.orderCount * 100);
+                    this.checkOrderCountOption.series[0].data[2].value = this.realData.orderCount - this.realData.unconfirmOrderCount;
+                    this.checkOrderCountOption.series[0].data[2].showpercent = true;
+                    this.checkOrderCountOption.series[0].data[2].percent = num.toFixed(2);
+
+
+                    this.checkOrderCountOption.series[0].data[3].value = this.realData.orderCount;
+                    this.checkOrderCountOption.series[0].data[3].showpercent = false;
+                    this.checkOrderCountOption.series[0].data[3].percent = num.toFixed(2);
+
+                    // let data = [];
+                    // num = new Number(this.realData.delayComfireOrders / this.realData.orderCount * 100);
+                    // bar = {
+                    //     value: this.realData.delayComfireOrders,
+                    //     itemStyle: {
+                    //         color: 'rgba(255, 0, 0,1.0)'
+                    //     },
+                    //     showpercent: true,
+                    //     percent: num.toFixed(2),
+                    // }
+                    // data.push(bar)
+                    // let num = new Number(this.realData.unconfirmOrderCount / this.realData.orderCount * 100);
+                    // let bar = {
+                    //     value: this.realData.unconfirmOrderCount,
+                    //     itemStyle: {
+                    //         color: 'rgba(255, 0, 0,1.0)'
+                    //     },
+                    //     showpercent: true,
+                    //     percent: num.toFixed(2),
+                    // }
+                    // data.push(bar)
+                    // bar = {
+                    //     value: this.realData.orderCount,
+                    //     itemStyle: {
+                    //         color: 'rgba(84, 112, 198,1.0)'
+                    //     },
+                    //     showpercent: false,
+                    //     percent: 0
+                    // }
+                    // data.push(bar)
+                    // this.checkOrderCountOption.series[0].data = data;
+                    this.checkOrderMap.setOption(this.checkOrderCountOption);
+                    // let data = [];
+                    // num = new Number(this.realData.equipmentInspectionRainSecondReports / this.realData.equipmentInspectionCount * 100);
+                    // bar = {
+                    //     value: this.realData.equipmentInspectionRainSecondReports,
+                    //     itemStyle: {
+                    //         color: 'rgba(0, 133, 133,1.0)'
+                    //     },
+                    //     showpercent: true,
+                    //     percent: num.toFixed(2),
+                    // }
+                    // data.push(bar)
+                    // num = new Number(this.realData.equipmentInspectionRainFirstReports / this.realData.equipmentInspectionCount * 100);
+                    // bar = {
+                    //     value: this.realData.equipmentInspectionRainFirstReports,
+                    //     itemStyle: {
+                    //         color: 'rgba(0, 133, 133,1.0)'
+                    //     },
+                    //     showpercent: true,
+                    //     percent: num.toFixed(2),
+                    // }
+                    // data.push(bar)
+                    // num = new Number(this.realData.equipmentInspectionBeforeRainReports / this.realData.equipmentInspectionCount * 100);
+                    // bar = {
+                    //     value: this.realData.equipmentInspectionBeforeRainReports,
+                    //     itemStyle: {
+                    //         color: 'rgba(0, 133, 133,1.0)'
+                    //     },
+                    //     showpercent: true,
+                    //     percent: num.toFixed(2),
+                    // }
+                    // data.push(bar)
+                    // bar = {
+                    //     value: this.realData.equipmentInspectionCount,
+                    //     itemStyle: {
+                    //         color: 'rgba(84, 112, 198,1.0)'
+                    //     },
+                    //     showpercent: false,
+                    //     percent: 0,
+                    // }
+                    // data.push(bar)
+                    // this.equipmentInspectionCountOption.series[0].label.position = 'insideLeft';
+                    //  this.equipmentInspectionCountOption.series[0].data = data;
+                    // this.equipmentInspectionChartMap.setOption(this.equipmentInspectionCountOption);
+                }
+            });
+            todayOrderProcessList().then((res) => {
+                this.todayOrderList = [];
+                for (let i = 0; i < 1 && i < res.data.data.length; i++) {
+                    this.todayOrderList.push(res.data.data[i]);
+                }
+            });
+            todayInspectionReportList().then((res) => {
+                this.todayInspectionReportList = [];
+                for (let i = 0; i < 1 && i < res.data.data.length; i++) {
+                    this.todayInspectionReportList.push(res.data.data[i]);
+                }
+            });
+            getLastList(1).then((res) => {
+                this.noticeList = [];
+                this.noticeList = res.data.data;
+            });
+            getAppInfo().then((res) => {
+                console.log(JSON.stringify(res.data.data))
+                this.appinfo = res.data.data;
+            });
+        },
+        changeState(state) {
+            this.state = state;
+
+            if (state != 5) {
+                if (this.timer) clearInterval(this.timer);
+                this.timer = setInterval(() => {
+                    this.second++;
+                }, 1000);
+            } else {
+                if (this.timer) {
+                    clearInterval(this.timer);
+                }
+                this.second = 0;
+            }
+        },
+        confirm() {
+            // let arr = this.layout.map((e) => {
+            //   return {
+            //     x: e.x,
+            //     y: e.y,
+            //     width: e.w,
+            //     height: e.h,
+            //     isShow: e.isShow,
+            //     moduleName: e.i,
+            //     moduleCode: e.i,
+            //   };
+            // });
+            // let params = {
+            //   layoutId: "",
+            //   homeLayoutDetailEntityList: arr,
+            // };
+            // insertCustom(params).then((res) => {});
+            // this.cache = [...this.layout];
+            // this.editSw = false;
+        },
+
+        /**
+         * 建立websocket连接
+         */
+        // initWebsocket: function () {
+        //     console.log("WebSocket 准备建立连接");
+        //     const socket = new SockJS("/api/galaxy-yjjcpt/ws");
+        //     this.stompClient = Stomp.over(socket);
+        //     this.stompClient.connect({}, this.onConnected, this.onError);
+        // },
+
+        /**
+         * 连接成功: 订阅服务器的地址。为了浏览器可以接收到消息,必须先订阅服务器的地址
+         */
+        // onConnected: function () {
+        //     console.log("WebSocket 连接成功");
+
+        //     // 设置心跳发送接受频率(ms)默认为10000ms。 heart-beating是利用window.setInterval()去规律地发送heart-beats或者检查服务端的heart-beats。
+        //     this.stompClient.heartbeat.outgoing = 10000;
+        //     this.stompClient.heartbeat.incoming = 0;
+
+        //     // 订阅
+        //     this.stompClient.subscribe("/topic/event", this.onMessageReceived);
+        // },
+
+        /**
+         * 连接失败
+         */
+        // onError: function (error) {
+        //     console.log("WebSocket 连接失败", error);
+        // },
+
+        /**
+         * 接收消息
+         */
+        // onMessageReceived: function (res) {
+        //     console.log(res.body);
+
+        //     console.log("WebSocket 接收消息-----------------------------------");
+        // },
+
+        /**
+         * 发送消息
+         */
+        // sendMessage: function () {
+        //     const chatMessage = {
+        //         sender: "",
+        //         content: "",
+        //         type: "CHAT",
+        //     };
+        //     this.stompClient.send(
+        //         "/app/chat.sendMessage",
+        //         {},
+        //         JSON.stringify(chatMessage)
+        //     );
+        // },
+
+        /**
+         * 关闭websocket连接
+         */
+        // closeSocket: function () {
+        //     if (this.stompClient != null) {
+        //         // this.stompClient.disconnect();
+        //         this.stompClient.disconnect(() => {
+        //             console.log("连接关闭");
+        //         });
+        //     }
+        // },
+    },
+};
+</script>
+  
+<style>
+.box-card {
+    width: 100%;
+    height: 220px;
+    overflow-y: auto;
+}
+
+.box-small-card {
+    width: 100%;
+    height: 235px;
+    overflow-y: auto;
+}
+
+.box-card-news {
+    width: 100%;
+    height: 235px;
+    overflow-y: auto;
+}
+
+.box-card-apk {
+    width: 100%;
+    height: 235px;
+}
+
+.el-row {
+    margin-bottom: 20px;
+}
+
+.el-col {
+    border-radius: 4px;
+}
+
+.bg-purple-dark {
+    background: #99a9bf;
+}
+
+.bg-purple {
+    background: #d3dce6;
+}
+
+.bg-purple-light {
+    background: #e5e9f2;
+}
+
+.grid-content {
+    border-radius: 4px;
+    min-height: 36px;
+}
+
+.row-bg {
+    padding: 10px 0;
+    background-color: #f9fafc;
+}
+
+.list-item {
+    padding-top: 5px;
+    padding-left: 2px;
+    border-width: thin;
+    border-bottom-style: solid;
+    border-bottom-color: lightgray;
+}
+
+.notice-item {
+    padding-top: 5px;
+    padding-left: 2px;
+    border-width: thin;
+    border-bottom-style: solid;
+    border-bottom-color: lightgray;
+}
+
+.notice-time {
+    font-size: 0.8rem;
+    color: gray;
+}
+
+.notice-content {
+    font-size: 0.9rem;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+}
+</style>

+ 1452 - 0
src/views/wel/index-company.vue

@@ -0,0 +1,1452 @@
+<template>
+    <div>
+        <el-row :gutter="10">
+            <el-col :span="6">
+                <el-card shadow="always" style="height:280px">
+                    <div ref="rtuInfoCountPieChart" style="width: 100%;height: 280px;">
+                    </div>
+                </el-card>
+            </el-col>
+            <el-col :span="6">
+                <el-card shadow="always" style="height:280px">
+                    <div ref="rtuDataUpCountChart" style="width: 100%;height: 280px;">
+                    </div>
+                </el-card>
+            </el-col>
+            <el-col :span="6">
+                <el-card shadow="always" style="height:280px">
+                    <div ref="checkOrderChart" style="width: 100%;height: 280px;">
+                    </div>
+                </el-card>
+            </el-col>
+            <el-col :span="6">
+                <el-card shadow="always" style="height:280px">
+                    <div ref="equipmentInspectionCountChart" style="width: 100%;height: 280px;">
+                    </div>
+                </el-card>
+            </el-col>
+        </el-row>
+        <el-row :gutter="10">
+            <el-col :span="6">
+                <el-card shadow="always" style="height: 500px;">
+                    <div ref="rtuWarnCountChart" style="width: 100%;height: 500px;">
+                    </div>
+                </el-card>
+            </el-col>
+            <el-col :span="6">
+                <el-card class="box-card">
+                    <div slot="header" class="clearfix">
+                        <span>今日维修任务动态</span>
+                        <el-button style="float: right; padding: 3px 0" type="text"
+                            @click="openMoreTodayOrderProcess">更多</el-button>
+                    </div>
+                    <div v-for="(item, index) in todayOrderList" :key="index" class="list-item">
+                        <el-row type="flex">
+                            <el-col :span="19">
+                                <div style="padding-right: 5px;">
+
+                                    <div style="display: flex; flex-direction: row;align-items: center;">
+                                        <label>{{ item.rtuName }}</label>
+                                        <label style="margin-left: 5px;color: gray;"> / {{ item.rtuCode }}</label>
+                                    </div>
+                                    <div style="display: flex; flex-direction: row;align-items: center;margin-top: 4px;">
+                                        <label>维修状态:<span style="color:gray">{{
+                                            item.orderStatusName }}</span></label>
+                                    </div>
+                                    <div style="display: flex; flex-direction: row;align-items: center;margin-top: 4px;">
+                                        <label>更新时间:<span style="color:gray">{{ item.updateTime }}</span></label>
+                                    </div>
+                                    <div style="margin-top: 4px;margin-bottom: 5px;">
+                                        <label>备注:<span style="color:gray">{{ item.processDesc }}</span></label>
+                                    </div>
+                                </div>
+                            </el-col>
+                            <el-col :span="5" style="display: flex;flex-direction: column;justify-content: center;">
+                                <el-button style="font-size: 0.7rem;" size="mini" type="info" round
+                                    @click="openCheckOrderReportDetail(item)">查看详情</el-button>
+                            </el-col>
+                        </el-row>
+                    </div>
+                </el-card>
+            </el-col>
+            <el-col :span="6">
+                <el-row>
+                    <el-col :span="24">
+                        <el-card class="box-card">
+                            <div slot="header" class="clearfix">
+                                <span>今日巡检动态</span>
+                                <el-button style="float: right; padding: 3px 0" type="text"
+                                    @click="openMoreTodayInspectionReport">更多</el-button>
+                            </div>
+                            <div v-for="(item, index) in todayInspectionReportList" :key="index" class="list-item">
+                                <el-row type="flex">
+                                    <el-col :span="19">
+                                        <div style="padding-right: 5px;">
+                                            <div style="display: flex; flex-direction: row;align-items: center;">
+                                                <label>{{ item.rtuName }}</label>
+                                                <label style="margin-left: 5px;color: gray;"> / {{ item.rtuCode }}</label>
+                                            </div>
+                                            <div
+                                                style="display: flex; flex-direction: row;align-items: center;margin-top: 4px;">
+                                                <label>填报人:<span style="color:gray">{{
+                                                    item.servicePersonName
+                                                }}</span></label>
+                                            </div>
+                                            <div
+                                                style="display: flex; flex-direction: row;align-items: center;margin-top: 4px;margin-bottom: 5px;">
+                                                <label>填报时间:<span style="color:gray">{{ item.updateTime }}</span></label>
+                                            </div>
+                                        </div>
+                                    </el-col>
+                                    <el-col :span="5" style="display: flex;flex-direction: column;justify-content: center;">
+                                        <el-button style="font-size: 0.7rem;" size="mini" type="info" round
+                                            @click="openInspectionReportDetail(item)">查看详情</el-button>
+                                    </el-col>
+                                </el-row>
+                            </div>
+                        </el-card>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="24">
+
+                    </el-col>
+                </el-row>
+            </el-col>
+            <el-col :span="6">
+                <el-row>
+                    <el-col :span="24">
+                        <el-card class="box-card-news">
+                            <div slot="header" class="clearfix">
+                                <span>通知公告</span>
+                                <el-button style="float: right; padding: 3px 0" type="text"
+                                    @click="openMoreNotice">更多</el-button>
+                            </div>
+                            <div v-for="(item, index) in noticeList" :key="index" class="notice-item">
+                                <div>
+                                    <label>{{ item.title }}</label>
+                                </div>
+                                <div style="margin-top: 4px;">
+                                    <label class="notice-time">发布时间: {{ item.releaseTime }}</label>
+                                </div>
+                                <div style="margin-top: 4px;margin-bottom: 2px;">
+                                    <label>{{
+                                        item.content
+                                    }}</label>
+                                </div>
+                            </div>
+                        </el-card>
+
+
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="24">
+                        <el-card class="box-card-apk">
+                            <div slot="header" class="clearfix">
+                                <span>手机客户端下载</span>
+                            </div>
+                            <div>
+                                <img style="width: 100px;height: 100px;" :src="appinfo.apkQrUrl" />
+                            </div>
+                            <div style="margin-top: 4px;">
+                                <label style="padding-left: 5px;font-size: 0.8rem;">版本号 {{ appinfo.version }}</label>
+                            </div>
+                            <div style="margin-top: 4px;">
+                                <el-button type="text" @click="downloadApk">下载安卓客户端</el-button>
+                            </div>
+                        </el-card>
+                    </el-col>
+                </el-row>
+            </el-col>
+        </el-row>
+        <el-drawer title="今日维修任务动态" :visible.sync="moreTodayOrderProcessDig" v-if="moreTodayOrderProcessDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <todaycheckorderprocesslist ref="todaycheckorderprocesslist">
+            </todaycheckorderprocesslist>
+        </el-drawer>
+        <el-drawer title="今日巡检动态" :visible.sync="moreTodayInspectionReportDig" v-if="moreTodayInspectionReportDig"
+            size="50%" :close-on-click-modal="false" append-to-body>
+            <todaynspectionrportlist ref="todaynspectionrportlist"></todaynspectionrportlist>
+        </el-drawer>
+        <el-drawer title="通知公告" :visible.sync="moreNoticeDig" v-if="moreNoticeDig" size="50%" :close-on-click-modal="false"
+            append-to-body>
+            <todaynoticelist ref="todaynoticelist"></todaynoticelist>
+        </el-drawer>
+        <el-drawer title="异常测站信息" :visible.sync="warninglistDig" v-if="warninglistDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <warninglist ref="warninglist"></warninglist>
+        </el-drawer>
+        <el-drawer title="未确认维修任务" :visible.sync="uncomfireCheckOrderDig" v-if="uncomfireCheckOrderDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <uncomfirecheckorderlist ref="uncomfirecheckorderlist"></uncomfirecheckorderlist>
+        </el-drawer>
+        <el-drawer title="确认超时维修任务" :visible.sync="comfireDelayCheckOrderDig" v-if="comfireDelayCheckOrderDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <comfiredelaycheckorderlist ref="comfiredelaycheckorderlist"></comfiredelaycheckorderlist>
+        </el-drawer>
+        <el-drawer title="维修任务详情" :visible.sync="checkorderprocessdetailDig" v-if="checkorderprocessdetailDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <checkorderprocessdetail ref="checkorderprocessdetail" :orderId="checkOrderReportId"></checkorderprocessdetail>
+        </el-drawer>
+        <el-drawer title="设备巡检详情" :visible.sync="inspectionreportdetailDig" v-if="inspectionreportdetailDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <inspectionreportdetail ref="inspectionreportdetail" :id="inspectionReportId"></inspectionreportdetail>
+        </el-drawer>
+    </div>
+</template>
+
+<script>
+import { getRealData } from "@/api/home/home.js";
+import { todayOrderProcessList } from "@/api/business/order/process.js";
+import { todayInspectionReportList } from "@/api/business/inspection/inspectionreport.js";
+import { getLastList } from "@/api/notice/notice.js";
+import { getStore } from '@/util/store.js';
+import { getAppInfo } from "@/api/versionmanage/version.js";
+import todaycheckorderprocesslist from "../business/order/todaycheckorderprocesslist.vue";
+import uncomfirecheckorderlist from "../business/order/uncomfirecheckorderlist.vue";
+import comfiredelaycheckorderlist from "../business/order/comfiredelaycheckorderlist.vue";
+import todaynspectionrportlist from "../business/inspection/todaynspectionrportlist.vue";
+import todaynoticelist from "../notice/todaynoticelist.vue";
+import warninglist from "../business/warning/warninglist.vue";
+import checkorderprocessdetail from "../business/order/checkorderprocessdetail.vue";
+import inspectionreportdetail from "../business/inspection/inspectionreportdetail.vue";
+export default {
+    name: "home",
+    components: {
+        todaycheckorderprocesslist,
+        todaynspectionrportlist,
+        todaynoticelist,
+        warninglist,
+        uncomfirecheckorderlist,
+        comfiredelaycheckorderlist,
+        checkorderprocessdetail,
+        inspectionreportdetail
+    },
+    data() {
+        return {
+            warninglistDig: false,
+            uncomfireCheckOrderDig: false,
+            comfireDelayCheckOrderDig: false,
+            moreTodayOrderProcessDig: false,
+            moreTodayInspectionReportDig: false,
+            moreNoticeDig: false,
+            checkorderprocessdetailDig: false,
+            inspectionreportdetailDig: false,
+            appinfo: {
+                apkUrl: '',
+                apkQrUrl: '',
+                version: ''
+            },
+            checkOrderReportId: '',
+            inspectionReportId: '',
+            realData: {
+            },
+            stompClient: null,
+            layout: [],
+            cache: [],
+            editSw: false,
+            dialog: false,
+            id: "",
+            guideForm: {},
+            second: 0,
+            timer: null,
+            state: 5,
+            todayOrderList: [],
+            todayInspectionReportList: [],
+            noticeList: [],
+            userInfo: getStore({ name: 'userInfo' }) || [],
+            rtuInfoCountPieMap: null,
+            rtuInfoCountPieOption: {
+                title: {
+                    text: '测站状态统计信息',
+                    subtext: '测站总数量',
+                    left: 'center'
+                },
+                tooltip: {
+                    trigger: 'item',
+                    formatter: '{a} <br/>{b} : {c} ({d}%)',
+                    textStyle: {
+                        fontSize: 12
+                    }
+                },
+                legend: {
+                    bottom: 20,
+                    left: 'center',
+                    data: ['运行正常', '测站离线', '其他异常']
+                },
+                series: [
+                    {
+                        name: '状态信息',
+                        type: 'pie',
+                        radius: '40%',
+                        center: ['50%', '50%'],
+                        selectedMode: 'single',
+                        data: [
+                            {
+                                value: 10,
+                                name: '运行正常',
+                                label: {
+                                    show: true,
+                                    formatter(param) {
+                                        // correct the percentage
+                                        return ' (' + param.value + '/' + param.percent + '%)';
+                                    }
+                                },
+                                itemStyle: {
+                                    color: '#547bc9'
+                                }
+                            },
+                            {
+                                value: 20,
+                                name: '测站离线',
+                                label: {
+                                    show: true,
+                                    formatter(param) {
+                                        // correct the percentage
+                                        return ' (' + param.value + '/' + param.percent + '%)';
+                                    }
+                                },
+                                itemStyle: {
+                                    color: '#ff0000'
+                                }
+                            },
+                            {
+                                value: 20,
+                                name: '其他异常',
+                                label: {
+                                    show: true,
+                                    formatter(param) {
+                                        // correct the percentage
+                                        return ' (' + param.value + '/' + param.percent + '%)';
+                                    }
+                                },
+                                itemStyle: {
+                                    color: '#ee7070'
+                                }
+                            },
+                        ],
+                        emphasis: {
+                            itemStyle: {
+                                shadowBlur: 10,
+                                shadowOffsetX: 0,
+                                shadowColor: 'rgba(0, 0, 0, 0.5)'
+                            }
+                        }
+                    }
+                ]
+            },
+            rtuDataUpCountMap: null,
+            rtuDataUpCountOption: {
+                title: {
+                    text: '测站上报率统计信息',
+                    subtext: '统计口径为上一个自然天',
+                    left: 'center'
+                },
+                tooltip: {
+                    trigger: 'axis',
+                    axisPointer: {
+                        type: 'shadow'
+                    },
+
+                },
+                legend: {
+                    show: false,
+                    left: 'right',
+                },
+                grid: {
+                    left: '3%',
+                    right: '4%',
+                    bottom: '10%',
+                    containLabel: true
+                },
+                xAxis: {
+                    type: 'value',
+                    boundaryGap: [0, 0.01]
+                },
+                yAxis: {
+                    type: 'category',
+                    data: ['墒情站', '水位站', '雨量站']
+                },
+                series: [
+                    {
+                        name: '测站数量',
+                        type: 'bar',
+                        data: [{
+                            value: 100,
+                            showpercent: false,
+                            percent: 0
+                        }, {
+                            value: 200,
+                            showpercent: false,
+                            percent: 0
+                        }, {
+                            value: 300,
+                            showpercent: false,
+                            percent: 0
+                        }],
+                        itemStyle: {
+                            color: 'rgba(84, 112, 198,1.0)'
+                        },
+                        label: {
+                            show: true,
+                            position: 'insideLeft',
+                            formatter(params) {
+                                if (params.data.showpercent) {
+                                    return '    ' + params.data.value + '/' + params.data.percent + '%';
+                                } else {
+                                    return '    ' + params.data.value;
+                                }
+
+
+
+                            }
+                        },
+                    },
+                    {
+                        name: '上报数量',
+                        type: 'bar',
+                        data: [{
+                            value: 34,
+                            showpercent: true,
+                            percent: 10
+                        }, {
+                            value: 45,
+                            showpercent: true,
+                            percent: 20
+                        }, {
+                            value: 23,
+                            showpercent: true,
+                            percent: 30
+                        }],
+                        itemStyle: {
+                            color: 'rgba(145, 204, 122,1.0)'
+                        },
+                        label: {
+                            show: true,
+                            position: 'insideLeft',
+                            formatter(params) {
+
+                                if (params.data.showpercent) {
+                                    return '    ' + params.data.value + '/' + params.data.percent + '%';
+                                } else {
+                                    return '    ' + params.data.value;
+                                }
+
+
+
+                            }
+                        },
+                    }
+                ]
+            },
+            checkOrderMap: null,
+            checkOrderCountOption: {
+                tooltip: {
+                    trigger: 'axis',
+                    axisPointer: {
+                        type: 'shadow',
+                    },
+                    showContent: true,
+                    formatter: function (params) {
+                        console.log(JSON.stringify(params))
+                        if (params[0].data.showpercent) {
+                            return "点击柱状图可查看详情";
+                        } else {
+                            return "";
+                        }
+                    },
+                    textStyle: {
+                        fontSize: 12
+                    }
+                },
+                title: {
+                    text: '维修任务统计信息',
+                    left: 'center'
+                    // textStyle: {
+                    //     fontSize: 16,
+                    //     fontWeight: "bold",
+                    //     color: "#464646",
+                    // }
+                },
+                color: ['#5470c6'],
+                yAxis: {
+                    type: 'category',
+                    data: ['超时未确认任务', '未确认任务', '维修中', '维修任务数量']
+                },
+                xAxis: {
+                    type: 'value',
+
+                },
+                grid: {
+                    left: '3%',
+                    right: '4%',
+                    bottom: '10%',
+                    containLabel: true
+                },
+                series: [
+                    {
+                        data: [
+                            {
+                                value: 20,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 30,
+                                itemStyle: {
+                                    color: 'rgba(250, 200, 88,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 40,
+                                itemStyle: {
+                                    color: 'rgba(145, 204, 122,1.0)'
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 200,
+                                itemStyle: {
+
+                                    color: 'rgba(84, 112, 198,1.0)'
+                                },
+                                showpercent: false,
+                                percent: 0
+                            },
+                        ],
+                        type: 'bar',
+                        barWidth: 20,
+                        label: {
+                            show: true,
+                            position: 'insideLeft',
+                            formatter(params) {
+                                if (params.data.showpercent) {
+                                    return '    ' + params.data.value + ' / ' + params.data.percent + '%';
+                                } else {
+                                    return '    ' + params.data.value;
+                                }
+
+                            }
+                        },
+                    }
+                ]
+            },
+            equipmentInspectionChartMap: null,
+            equipmentInspectionCountOption: {
+                tooltip: {
+                    trigger: 'axis',
+                    axisPointer: {
+                        type: 'shadow',
+                    },
+                    showContent: true,
+                    formatter: function (params) {
+                        console.log(JSON.stringify(params))
+                        if (params[0].data.showpercent) {
+                            return "点击柱状图可查看详情";
+                        } else {
+                            return "";
+                        }
+                    }
+                },
+                title: {
+                    text: '本年度设备巡检统计信息',
+                    left: 'center',
+                    // subtext: '待巡检设备数量'
+                    // textStyle: {
+                    //     fontSize: 16,
+                    //     fontWeight: "bold",
+                    //     color: "#464646",
+                    // }
+                },
+                color: ['#5470c6'],
+                yAxis: {
+                    type: 'category',
+                    data: ['汛中(二)已巡检', '汛中(一)已巡检', '汛前已巡检', '需巡检站点数量']
+                },
+                xAxis: {
+                    type: 'value',
+
+                },
+                grid: {
+                    left: '3%',
+                    right: '4%',
+                    bottom: '10%',
+                    containLabel: true
+                },
+                series: [
+                    {
+                        data: [
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(145, 204, 122,1.0)'
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(145, 204, 122,1.0)'
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 100,
+                                itemStyle: {
+                                    color: 'rgba(145, 204, 122,1.0)'
+                                },
+                                showpercent: true,
+                                percent: 4
+                            },
+                            {
+                                value: 500,
+                                itemStyle: {
+                                    color: 'rgba(84, 112, 198,1.0)'
+                                },
+                                showpercent: false,
+                                percent: 0
+                            },
+                        ],
+                        type: 'bar',
+                        barWidth: 20,
+                        label: {
+                            show: true,
+                            position: 'insideLeft',
+                            formatter(params) {
+                                if (params.data.showpercent) {
+                                    return '    ' + params.data.value + ' / ' + params.data.percent + '%';
+                                } else {
+                                    return '    ' + params.data.value;
+                                }
+
+                            }
+                        },
+                    }
+                ]
+            },
+            rtuWarnCountMap: null,
+            rtuWarnCountOption: {
+                tooltip: {
+                    trigger: 'axis',
+                    axisPointer: {
+                        type: 'shadow',
+                    },
+                    showContent: true,
+                    formatter: function (params) {
+                        console.log(JSON.stringify(params))
+                        if (params[0].data.showpercent) {
+                            return "点击柱状图可查看详情";
+                        } else {
+                            return "";
+                        }
+                    },
+                    textStyle: {
+                        fontSize: 12
+                    }
+                },
+                title: {
+
+                    text: '测站异常分类统计信息',
+                    left: 'center'
+                    // textStyle: {
+                    //     fontSize: 16,
+                    //     fontWeight: "bold",
+                    //     color: "#464646",
+                    // }
+                },
+                color: ['#5470c6'],
+                yAxis: {
+                    type: 'category',
+                    data: ['雨量疑似异常值', '水位站小时上报延时', '雨量站小时上报延时', '5分钟上报延时', '水位小时报漏报', '雨量小时报漏报', '时钟异常', '离线', '异常设备总数']
+                },
+                xAxis: {
+                    type: 'value',
+                },
+                grid: {
+                    left: '3%',
+                    right: '4%',
+                    bottom: '10%',
+                    containLabel: true
+                },
+                series: [
+                    {
+                        data: [
+                            {
+                                value: 20,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 20,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 20,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 20,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 20,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 20,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 30,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 40,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 200,
+                                itemStyle: {
+
+                                    color: 'rgba(84, 112, 198,1.0)'
+                                },
+                                showpercent: false,
+                                percent: 0
+                            },
+                        ],
+                        type: 'bar',
+                        barWidth: 20,
+                        label: {
+                            show: true,
+                            position: 'insideLeft',
+                            formatter(params) {
+                                if (params.data.showpercent) {
+                                    return '    ' + params.data.value + ' / ' + params.data.percent + '%';
+                                } else {
+                                    return '    ' + params.data.value;
+                                }
+
+                            }
+                        },
+                    }
+                ]
+            },
+        };
+    },
+    created() {
+        // let u = getStore({ name: 'userInfo' });
+        // console.log(JSON.stringify(u));
+        // this.getData();
+
+    },
+    computed: {
+        // ...mapGetters(["userInfo"]),
+    },
+    mounted() {
+        console.log("mounted ++++++++++++++++++++");
+        // this.initWebsocket();
+        var that = this;
+        let chart = this.$refs.rtuInfoCountPieChart;
+        if (chart) {
+            this.rtuInfoCountPieMap = this.$echarts.init(chart);
+
+            this.rtuInfoCountPieOption.title.subtext = '测站总数量: ' + 200
+            this.rtuInfoCountPieMap.setOption(this.rtuInfoCountPieOption);
+            this.rtuInfoCountPieMap.off('click');
+            this.rtuInfoCountPieMap.on('click', function (p) {
+                console.log(p)
+                if (p.name === '设备异常') {
+                    that.warninglistDig = true;
+                    that.$nextTick(() => {
+                        that.$refs['warninglist'].init();
+                    });
+                }
+            })
+        }
+
+        chart = this.$refs.rtuDataUpCountChart;
+        if (chart) {
+            this.rtuDataUpCountMap = this.$echarts.init(chart);
+            this.rtuDataUpCountMap.setOption(this.rtuDataUpCountOption);
+            this.rtuDataUpCountMap.off('click');
+            this.rtuDataUpCountMap.on('click', function (p) {
+                console.log(p)
+
+            })
+        }
+
+
+        chart = this.$refs.checkOrderChart;
+        if (chart) {
+            this.checkOrderMap = this.$echarts.init(chart);
+            this.checkOrderMap.setOption(this.checkOrderCountOption);
+            this.checkOrderMap.off('click');
+            this.checkOrderMap.on('click', function (p) {
+                console.log(p)
+                if (p.name === '未确认任务') {
+                    that.uncomfireCheckOrderDig = true;
+                    that.$nextTick(() => {
+                        that.$refs["uncomfirecheckorderlist"].init();
+                    });
+                } else if (p.name === '超时未确认任务') {
+                    that.comfireDelayCheckOrderDig = true;
+                    that.$nextTick(() => {
+                        that.$refs["comfiredelaycheckorderlist"].init();
+                    });
+                }
+            })
+        }
+        chart = this.$refs.equipmentInspectionCountChart;
+        if (chart) {
+            this.equipmentInspectionChartMap = this.$echarts.init(chart);
+            this.equipmentInspectionChartMap.setOption(this.equipmentInspectionCountOption);
+
+            this.equipmentInspectionChartMap.off('click')
+            this.equipmentInspectionChartMap.on('click', function (p) {
+                console.log(p)
+            })
+        }
+
+        chart = this.$refs.rtuWarnCountChart;
+        if (chart) {
+            this.rtuWarnCountMap = this.$echarts.init(chart);
+            this.rtuWarnCountMap.setOption(this.rtuWarnCountOption);
+
+            this.rtuWarnCountMap.off('click')
+            this.rtuWarnCountMap.on('click', function (p) {
+                console.log(p)
+            })
+        }
+
+
+        let n = {
+            'title': '2023年设备巡检工作通知',
+            'content': '6月1日开始进行设备巡检工作,请各运维单位进行工作计划安排',
+            'releaseTime': '2023-06-20'
+        };
+        let news = [];
+        news.push(n);
+        this.noticeList = news;
+
+        n = {
+            'rtuCode': '0082828822',
+            'rtuName': '小水库一体站',
+            'updateTime': '2023-06-20 12:00:00',
+            'servicePersonName': '张工'
+        }
+        let list = [];
+        list.push(n);
+        n = {
+            'rtuCode': '0082828822',
+            'rtuName': '小水库一体站',
+            'updateTime': '2023-06-20 12:00:00',
+            'servicePersonName': '张工'
+        }
+        list.push(n);
+        n = {
+            'rtuCode': '0082828822',
+            'rtuName': '小水库一体站',
+            'updateTime': '2023-06-20 12:00:00',
+            'servicePersonName': '张工'
+        }
+        list.push(n);
+        n = {
+            'rtuCode': '0082828822',
+            'rtuName': '小水库一体站',
+            'updateTime': '2023-06-20 12:00:00',
+            'servicePersonName': '张工'
+        }
+        list.push(n);
+        n = {
+            'rtuCode': '0082828822',
+            'rtuName': '小水库一体站',
+            'updateTime': '2023-06-20 12:00:00',
+            'servicePersonName': '张工'
+        }
+        list.push(n);
+        n = {
+            'rtuCode': '0082828822',
+            'rtuName': '小水库一体站',
+            'updateTime': '2023-06-20 12:00:00',
+            'servicePersonName': '张工'
+        }
+        list.push(n);
+        this.todayInspectionReportList = list;
+
+        n = {
+            'rtuCode': '0082828822',
+            'rtuName': '小水库一体站',
+            'updateTime': '2023-06-20 12:00:00',
+            'orderStatusName': '已确认',
+            'processDesc': '连续上报延时,检查时间 2023-06-20 12:00:00 , 最近上报时间2023-06-20 12:00:00 ,接收时间2023-06-20 12:00:00'
+        }
+        list = [];
+        list.push(n);
+        n = {
+            'rtuCode': '0082828822',
+            'rtuName': '小水库一体站',
+            'updateTime': '2023-06-20 12:00:00',
+            'orderStatusName': '已确认',
+            'processDesc': '连续上报延时,检查时间 2023-06-20 12:00:00 , 最近上报时间2023-06-20 12:00:00 ,接收时间2023-06-20 12:00:00'
+        }
+        list.push(n);
+        n = {
+            'rtuCode': '0082828822',
+            'rtuName': '小水库一体站',
+            'updateTime': '2023-06-20 12:00:00',
+            'orderStatusName': '已确认',
+            'processDesc': '连续上报延时,检查时间 2023-06-20 12:00:00 , 最近上报时间2023-06-20 12:00:00 ,接收时间2023-06-20 12:00:00'
+        }
+        list.push(n);
+        n = {
+            'rtuCode': '0082828822',
+            'rtuName': '小水库一体站',
+            'updateTime': '2023-06-20 12:00:00',
+            'orderStatusName': '已确认',
+            'processDesc': '连续上报延时,检查时间 2023-06-20 12:00:00 , 最近上报时间2023-06-20 12:00:00 ,接收时间2023-06-20 12:00:00'
+        }
+        list.push(n);
+        n = {
+            'rtuCode': '0082828822',
+            'rtuName': '小水库一体站',
+            'updateTime': '2023-06-20 12:00:00',
+            'orderStatusName': '已确认',
+            'processDesc': '连续上报延时,检查时间 2023-06-20 12:00:00 , 最近上报时间2023-06-20 12:00:00 ,接收时间2023-06-20 12:00:00'
+        }
+        list.push(n);
+        this.todayOrderList = list;
+
+        // this.initRtuInfoCountMap();
+        // this.initCheckOrderCountMap();
+        // this.initEquipmentInspectionCountMap();
+        // if (this.timer == null) {
+        //     this.timer = setInterval(this.timeCall, 10000);
+        // }
+    },
+    beforeDestroy() {
+        console.log("beforeDestroy ++++++++++++++++++++");
+        //  this.closeSocket();
+        if (this.timer != null) {
+            console.log("clear timer ++++++++++++++ ")
+            clearInterval(this.timer);
+            this.timer = null;
+        }
+    },
+    methods: {
+        timeCall() {
+            console.log("time ++++++++++++++++++++");
+            this.getData();
+        },
+        initRtuInfoCountMap() {
+            var that = this;
+
+            let chart = this.$refs.rtuInfoChart;
+            if (chart) {
+                this.rtuInfoMap = this.$echarts.init(chart);
+                this.rtuInfoMap.setOption(this.rtuInfoCountOption);
+                // window.addEventListener("resize", function () {
+                //     that.$refs['rtuInfoChart'].resize();
+                // })
+
+                // this.$on('hook:destroyed', () => {
+                //     window.removeEventListener("resize", function () {
+                //         that.$refs['rtuInfoChart'].resize();
+                //     })
+                // })
+
+                //  this.rtuInfoMap.clear();
+                this.rtuInfoMap.off('click');
+                this.rtuInfoMap.on('click', function (p) {
+                    console.log(p)
+                    if (p.name === '设备异常') {
+                        that.warninglistDig = true;
+                        that.$nextTick(() => {
+                            that.$refs['warninglist'].init();
+                        });
+                    }
+                })
+            }
+        },
+        initCheckOrderCountMap() {
+            let chart = this.$refs.checkOrderChart;
+            if (chart) {
+                this.checkOrderMap = this.$echarts.init(chart);
+                this.checkOrderMap.setOption(this.checkOrderCountOption);
+                // window.addEventListener("resize", function () {
+                //     this.$refs.checkOrderChart.resize();
+                // })
+
+                // this.$on('hook:destroyed', () => {
+                //     window.removeEventListener("resize", function () {
+                //         this.$refs.checkOrderChart.resize();
+                //     })
+                // })
+
+                var that = this;
+                this.checkOrderMap.clear();
+                this.checkOrderMap.off('click');
+                this.checkOrderMap.on('click', function (p) {
+                    console.log(p)
+                    if (p.name === '未确认任务') {
+                        that.uncomfireCheckOrderDig = true;
+                        that.$nextTick(() => {
+                            that.$refs["uncomfirecheckorderlist"].init();
+                        });
+                    } else if (p.name === '超时未确认任务') {
+                        that.comfireDelayCheckOrderDig = true;
+                        that.$nextTick(() => {
+                            that.$refs["comfiredelaycheckorderlist"].init();
+                        });
+                    }
+                })
+            }
+        },
+        initEquipmentInspectionCountMap() {
+            let chart = this.$refs.equipmentInspectionCountChart;
+            if (chart) {
+                this.equipmentInspectionChartMap = this.$echarts.init(chart);
+                this.equipmentInspectionChartMap.setOption(this.equipmentInspectionCountOption);
+                // window.addEventListener("resize", function () {
+                //     this.$refs.equipmentInspectionCountChart.resize();
+                // })
+
+                // this.$on('hook:destroyed', () => {
+                //     window.removeEventListener("resize", function () {
+                //         this.$refs.equipmentInspectionCountChart.resize();
+                //     })
+                // })
+                this.equipmentInspectionChartMap.off('click')
+                this.equipmentInspectionChartMap.on('click', function (p) {
+                    console.log(p)
+                })
+            }
+        },
+        close() {
+            this.dialog = false;
+        },
+        openMoreTodayOrderProcess() {
+            this.moreTodayOrderProcessDig = true;
+            this.$nextTick(() => {
+                this.$refs["todaycheckorderprocesslist"].init();
+            });
+        },
+        openMoreTodayInspectionReport() {
+            this.moreTodayInspectionReportDig = true;
+            this.$nextTick(() => {
+                this.$refs["todaynspectionrportlist"].init();
+            });
+        },
+        openMoreNotice() {
+            this.moreNoticeDig = true;
+            this.$nextTick(() => {
+                this.$refs["todaynoticelist"].init();
+            });
+        },
+        openCheckOrderReportDetail(item) {
+            this.checkOrderReportId = item.orderId;
+            this.checkorderprocessdetailDig = true;
+            this.$nextTick(() => {
+                this.$refs["checkorderprocessdetail"].init();
+            });
+        },
+        openInspectionReportDetail(item) {
+            this.inspectionReportId = item.id;
+            this.inspectionreportdetailDig = true;
+            this.$nextTick(() => {
+                this.$refs["inspectionreportdetail"].init();
+            });
+        },
+        downloadApk() {
+            if (this.appinfo.apkUrl !== '') {
+                window.open(this.appinfo.apkUrl);
+            }
+        },
+        getData() {
+            getRealData().then((res) => {
+                if (res.data.code === 200) {
+                    this.realData = res.data.data;
+
+                    this.option.title.subtext = "测站总数量:" + this.realData.rtus;
+                    this.option.series[0].data[0].value = this.realData.rtus - this.realData.warningRtus;
+                    this.option.series[0].data[1].value = this.realData.warningRtus;
+                    this.rtuInfoCountPieMap.setOption(this.option);
+
+                    // let data = [];
+                    // let num = new Number(this.realData.warningRtus / this.realData.rtus * 100);
+
+                    // let bar = {
+                    //     value: this.realData.warningRtus,
+                    //     itemStyle: {
+                    //         color: 'rgba(255, 0, 0,1.0)'
+                    //     },
+                    //     showpercent: true,
+                    //     percent: num.toFixed(2),
+                    // }
+                    // data.push(bar)
+                    // bar = {
+                    //     value: this.realData.rtus,
+                    //     itemStyle: {
+                    //         color: 'rgba(84, 112, 198,1.0)'
+                    //     },
+                    //     showpercent: false,
+                    //     percent: 0
+                    // }
+                    // data.push(bar)
+                    // this.rtuInfoCountOption.series[0].data = data;
+                    // this.rtuInfoMap.setOption(this.rtuInfoCountOption);
+                    let num = new Number(this.realData.delayComfireOrders / this.realData.orderCount * 100);
+                    this.checkOrderCountOption.series[0].data[0].value = this.realData.delayComfireOrders;
+                    this.checkOrderCountOption.series[0].data[0].showpercent = true;
+                    this.checkOrderCountOption.series[0].data[0].percent = num.toFixed(2);
+
+                    num = new Number(this.realData.unconfirmOrderCount / this.realData.orderCount * 100);
+                    this.checkOrderCountOption.series[0].data[1].value = this.realData.unconfirmOrderCount;
+                    this.checkOrderCountOption.series[0].data[1].showpercent = true;
+                    this.checkOrderCountOption.series[0].data[1].percent = num.toFixed(2);
+
+                    num = new Number((this.realData.orderCount - this.realData.unconfirmOrderCount) / this.realData.orderCount * 100);
+                    this.checkOrderCountOption.series[0].data[2].value = this.realData.orderCount - this.realData.unconfirmOrderCount;
+                    this.checkOrderCountOption.series[0].data[2].showpercent = true;
+                    this.checkOrderCountOption.series[0].data[2].percent = num.toFixed(2);
+
+
+                    this.checkOrderCountOption.series[0].data[3].value = this.realData.orderCount;
+                    this.checkOrderCountOption.series[0].data[3].showpercent = false;
+                    this.checkOrderCountOption.series[0].data[3].percent = num.toFixed(2);
+
+                    // let data = [];
+                    // num = new Number(this.realData.delayComfireOrders / this.realData.orderCount * 100);
+                    // bar = {
+                    //     value: this.realData.delayComfireOrders,
+                    //     itemStyle: {
+                    //         color: 'rgba(255, 0, 0,1.0)'
+                    //     },
+                    //     showpercent: true,
+                    //     percent: num.toFixed(2),
+                    // }
+                    // data.push(bar)
+                    // let num = new Number(this.realData.unconfirmOrderCount / this.realData.orderCount * 100);
+                    // let bar = {
+                    //     value: this.realData.unconfirmOrderCount,
+                    //     itemStyle: {
+                    //         color: 'rgba(255, 0, 0,1.0)'
+                    //     },
+                    //     showpercent: true,
+                    //     percent: num.toFixed(2),
+                    // }
+                    // data.push(bar)
+                    // bar = {
+                    //     value: this.realData.orderCount,
+                    //     itemStyle: {
+                    //         color: 'rgba(84, 112, 198,1.0)'
+                    //     },
+                    //     showpercent: false,
+                    //     percent: 0
+                    // }
+                    // data.push(bar)
+                    // this.checkOrderCountOption.series[0].data = data;
+                    this.checkOrderMap.setOption(this.checkOrderCountOption);
+                    // let data = [];
+                    // num = new Number(this.realData.equipmentInspectionRainSecondReports / this.realData.equipmentInspectionCount * 100);
+                    // bar = {
+                    //     value: this.realData.equipmentInspectionRainSecondReports,
+                    //     itemStyle: {
+                    //         color: 'rgba(0, 133, 133,1.0)'
+                    //     },
+                    //     showpercent: true,
+                    //     percent: num.toFixed(2),
+                    // }
+                    // data.push(bar)
+                    // num = new Number(this.realData.equipmentInspectionRainFirstReports / this.realData.equipmentInspectionCount * 100);
+                    // bar = {
+                    //     value: this.realData.equipmentInspectionRainFirstReports,
+                    //     itemStyle: {
+                    //         color: 'rgba(0, 133, 133,1.0)'
+                    //     },
+                    //     showpercent: true,
+                    //     percent: num.toFixed(2),
+                    // }
+                    // data.push(bar)
+                    // num = new Number(this.realData.equipmentInspectionBeforeRainReports / this.realData.equipmentInspectionCount * 100);
+                    // bar = {
+                    //     value: this.realData.equipmentInspectionBeforeRainReports,
+                    //     itemStyle: {
+                    //         color: 'rgba(0, 133, 133,1.0)'
+                    //     },
+                    //     showpercent: true,
+                    //     percent: num.toFixed(2),
+                    // }
+                    // data.push(bar)
+                    // bar = {
+                    //     value: this.realData.equipmentInspectionCount,
+                    //     itemStyle: {
+                    //         color: 'rgba(84, 112, 198,1.0)'
+                    //     },
+                    //     showpercent: false,
+                    //     percent: 0,
+                    // }
+                    // data.push(bar)
+                    // this.equipmentInspectionCountOption.series[0].label.position = 'insideLeft';
+                    //  this.equipmentInspectionCountOption.series[0].data = data;
+                    // this.equipmentInspectionChartMap.setOption(this.equipmentInspectionCountOption);
+                }
+            });
+            todayOrderProcessList().then((res) => {
+                this.todayOrderList = [];
+                for (let i = 0; i < 5 && i < res.data.data.length; i++) {
+                    this.todayOrderList.push(res.data.data[i]);
+                }
+            });
+            todayInspectionReportList().then((res) => {
+                this.todayInspectionReportList = [];
+                for (let i = 0; i < 5 && i < res.data.data.length; i++) {
+                    this.todayInspectionReportList.push(res.data.data[i]);
+                }
+            });
+            getLastList(1).then((res) => {
+                this.noticeList = [];
+                this.noticeList = res.data.data;
+            });
+            getAppInfo().then((res) => {
+                console.log(JSON.stringify(res.data.data))
+                this.appinfo = res.data.data;
+            });
+        },
+        changeState(state) {
+            this.state = state;
+
+            if (state != 5) {
+                if (this.timer) clearInterval(this.timer);
+                this.timer = setInterval(() => {
+                    this.second++;
+                }, 1000);
+            } else {
+                if (this.timer) {
+                    clearInterval(this.timer);
+                }
+                this.second = 0;
+            }
+        },
+        confirm() {
+            // let arr = this.layout.map((e) => {
+            //   return {
+            //     x: e.x,
+            //     y: e.y,
+            //     width: e.w,
+            //     height: e.h,
+            //     isShow: e.isShow,
+            //     moduleName: e.i,
+            //     moduleCode: e.i,
+            //   };
+            // });
+            // let params = {
+            //   layoutId: "",
+            //   homeLayoutDetailEntityList: arr,
+            // };
+            // insertCustom(params).then((res) => {});
+            // this.cache = [...this.layout];
+            // this.editSw = false;
+        },
+
+        /**
+         * 建立websocket连接
+         */
+        // initWebsocket: function () {
+        //     console.log("WebSocket 准备建立连接");
+        //     const socket = new SockJS("/api/galaxy-yjjcpt/ws");
+        //     this.stompClient = Stomp.over(socket);
+        //     this.stompClient.connect({}, this.onConnected, this.onError);
+        // },
+
+        /**
+         * 连接成功: 订阅服务器的地址。为了浏览器可以接收到消息,必须先订阅服务器的地址
+         */
+        // onConnected: function () {
+        //     console.log("WebSocket 连接成功");
+
+        //     // 设置心跳发送接受频率(ms)默认为10000ms。 heart-beating是利用window.setInterval()去规律地发送heart-beats或者检查服务端的heart-beats。
+        //     this.stompClient.heartbeat.outgoing = 10000;
+        //     this.stompClient.heartbeat.incoming = 0;
+
+        //     // 订阅
+        //     this.stompClient.subscribe("/topic/event", this.onMessageReceived);
+        // },
+
+        /**
+         * 连接失败
+         */
+        // onError: function (error) {
+        //     console.log("WebSocket 连接失败", error);
+        // },
+
+        /**
+         * 接收消息
+         */
+        // onMessageReceived: function (res) {
+        //     console.log(res.body);
+
+        //     console.log("WebSocket 接收消息-----------------------------------");
+        // },
+
+        /**
+         * 发送消息
+         */
+        // sendMessage: function () {
+        //     const chatMessage = {
+        //         sender: "",
+        //         content: "",
+        //         type: "CHAT",
+        //     };
+        //     this.stompClient.send(
+        //         "/app/chat.sendMessage",
+        //         {},
+        //         JSON.stringify(chatMessage)
+        //     );
+        // },
+
+        /**
+         * 关闭websocket连接
+         */
+        // closeSocket: function () {
+        //     if (this.stompClient != null) {
+        //         // this.stompClient.disconnect();
+        //         this.stompClient.disconnect(() => {
+        //             console.log("连接关闭");
+        //         });
+        //     }
+        // },
+    },
+};
+</script>
+  
+<style>
+.box-card {
+    width: 100%;
+    height: 500px;
+    overflow-y: auto;
+}
+
+.box-small-card {
+    width: 100%;
+    height: 235px;
+    overflow-y: auto;
+}
+
+.box-card-news {
+    width: 100%;
+    height: 235px;
+    overflow-y: auto;
+}
+
+.box-card-apk {
+    width: 100%;
+    height: 235px;
+}
+
+.el-row {
+    margin-bottom: 20px;
+}
+
+.el-col {
+    border-radius: 4px;
+}
+
+.bg-purple-dark {
+    background: #99a9bf;
+}
+
+.bg-purple {
+    background: #d3dce6;
+}
+
+.bg-purple-light {
+    background: #e5e9f2;
+}
+
+.grid-content {
+    border-radius: 4px;
+    min-height: 36px;
+}
+
+.row-bg {
+    padding: 10px 0;
+    background-color: #f9fafc;
+}
+
+.list-item {
+    padding-top: 5px;
+    padding-left: 2px;
+    border-width: thin;
+    border-bottom-style: solid;
+    border-bottom-color: lightgray;
+}
+
+.notice-item {
+    padding-top: 5px;
+    padding-left: 2px;
+    border-width: thin;
+    border-bottom-style: solid;
+    border-bottom-color: lightgray;
+}
+
+.notice-time {
+    font-size: 0.8rem;
+    color: gray;
+}
+
+.notice-content {
+    font-size: 0.9rem;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+}
+</style>

+ 1884 - 0
src/views/wel/index-v2.vue

@@ -0,0 +1,1884 @@
+<template>
+    <div>
+        <el-row :gutter="10">
+            <el-col :span="6">
+                <el-card shadow="always" style="height:280px">
+                    <div ref="rtuInfoCountPieChart" style="width: 100%;height: 280px;">
+                    </div>
+                </el-card>
+            </el-col>
+            <el-col :span="6">
+                <el-card shadow="always" style="height:280px">
+                    <div ref="rtuDataUpCountChart" style="width: 100%;height: 280px;">
+                    </div>
+                </el-card>
+            </el-col>
+            <el-col :span="6">
+                <el-card shadow="always" style="height:280px">
+                    <div ref="checkOrderChart" style="width: 100%;height: 280px;">
+                    </div>
+                </el-card>
+            </el-col>
+            <el-col :span="6">
+                <el-card shadow="always" style="height:280px">
+                    <div ref="equipmentInspectionCountChart" style="width: 100%;height: 280px;">
+                    </div>
+                </el-card>
+            </el-col>
+
+        </el-row>
+        <el-row v-if="adminPageStyle" :gutter="10">
+            <el-col :span="12">
+                <el-card shadow="always" style="height: 500px;">
+                    <div slot="header" class="clearfix">
+                        <span>测站异常分布统计信息</span>
+                    </div>
+                    <avue-crud :option="option" :table-loading="loading" :data="data" ref="crud" v-model="form"
+                        @on-load="onLoad" @cell-click="cellClick">
+                    </avue-crud>
+                </el-card>
+            </el-col>
+            <el-col :span="6">
+                <el-row>
+                    <el-col :span="24">
+                        <el-card class="box-small-card">
+                            <div slot="header" class="clearfix">
+                                <span>今日维修任务动态</span>
+                                <el-button style="float: right; padding: 3px 0" type="text"
+                                    @click="openMoreTodayOrderProcess">更多</el-button>
+                            </div>
+                            <div v-for="(item, index) in todayOrderList" :key="index" class="list-item">
+                                <el-row type="flex">
+                                    <el-col :span="19">
+                                        <div style="padding-right: 5px;">
+
+                                            <div style="display: flex; flex-direction: row;align-items: center;">
+                                                <label>{{ item.rtuName }}</label>
+                                                <label style="margin-left: 5px;color: gray;"> / {{ item.rtuCode }}</label>
+                                            </div>
+                                            <div
+                                                style="display: flex; flex-direction: row;align-items: center;margin-top: 4px;">
+                                                <label>维修状态:<span style="color:gray">{{
+                                                    item.orderStatusName }}</span></label>
+                                            </div>
+                                            <div
+                                                style="display: flex; flex-direction: row;align-items: center;margin-top: 4px;">
+                                                <label>更新时间:<span style="color:gray">{{ item.updateTime }}</span></label>
+                                            </div>
+                                            <div style="margin-top: 4px;margin-bottom: 5px;">
+                                                <label>备注:<span style="color:gray">{{ item.processDesc }}</span></label>
+                                            </div>
+                                        </div>
+                                    </el-col>
+                                    <el-col :span="5" style="display: flex;flex-direction: column;justify-content: center;">
+                                        <el-button style="font-size: 0.7rem;" size="mini" type="info" round
+                                            @click="openCheckOrderReportDetail(item)">查看详情</el-button>
+                                    </el-col>
+                                </el-row>
+                            </div>
+                        </el-card>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="24">
+                        <el-card class="box-card-news">
+                            <div slot="header" class="clearfix">
+                                <span>通知公告</span>
+                                <el-button style="float: right; padding: 3px 0" type="text"
+                                    @click="openMoreNotice">更多</el-button>
+                            </div>
+                            <div v-for="(item, index) in noticeList" :key="index" class="notice-item">
+                                <div>
+                                    <label>{{ item.title }}</label>
+                                </div>
+                                <div style="margin-top: 4px;">
+                                    <label class="notice-time">发布时间: {{ item.releaseTime }}</label>
+                                </div>
+                                <div style="margin-top: 4px;margin-bottom: 2px;">
+                                    <label>{{
+                                        item.content
+                                    }}</label>
+                                </div>
+                            </div>
+                        </el-card>
+                    </el-col>
+                </el-row>
+            </el-col>
+            <el-col :span="6">
+                <el-row>
+                    <el-col :span="24">
+                        <el-card class="box-small-card">
+                            <div slot="header" class="clearfix">
+                                <span>今日巡检动态</span>
+                                <el-button style="float: right; padding: 3px 0" type="text"
+                                    @click="openMoreTodayInspectionReport">更多</el-button>
+                            </div>
+                            <div v-for="(item, index) in todayInspectionReportList" :key="index" class="list-item">
+                                <el-row type="flex">
+                                    <el-col :span="19">
+                                        <div style="display: flex; flex-direction: row;align-items: center;">
+                                            <label>{{ item.rtuName }}</label>
+                                            <label style="margin-left: 5px;color: gray;"> / {{ item.rtuCode }}</label>
+                                        </div>
+                                        <div
+                                            style="display: flex; flex-direction: row;align-items: center;margin-top: 4px;">
+                                            <label>填报人:<span style="color:gray">{{
+                                                item.servicePersonName
+                                            }}</span></label>
+                                        </div>
+                                        <div
+                                            style="display: flex; flex-direction: row;align-items: center;margin-top: 4px;margin-bottom: 5px;">
+                                            <label>填报时间:<span style="color:gray">{{ item.updateTime }}</span></label>
+                                        </div>
+                                    </el-col>
+                                    <el-col :span="5" style="display: flex;flex-direction: column;justify-content: center;">
+                                        <el-button style="font-size: 0.7rem;" size="mini" type="info" round
+                                            @click="openInspectionReportDetail(item)">查看详情</el-button>
+                                    </el-col>
+                                </el-row>
+                            </div>
+                        </el-card>
+
+
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="24">
+                        <el-card class="box-card-apk">
+                            <div slot="header" class="clearfix">
+                                <span>手机客户端下载</span>
+                            </div>
+                            <div>
+                                <img style="width: 100px;height: 100px;" :src="appinfo.apkQrUrl" />
+                            </div>
+                            <div style="margin-top: 4px;">
+                                <label style="padding-left: 5px;font-size: 0.8rem;">版本号 {{ appinfo.version }}</label>
+                            </div>
+                            <div style="margin-top: 4px;">
+                                <el-button type="text" @click="downloadApk">下载安卓客户端</el-button>
+                            </div>
+                        </el-card>
+                    </el-col>
+                </el-row>
+            </el-col>
+        </el-row>
+        <el-row v-else :gutter="10">
+            <el-col :span="6">
+                <el-card shadow="always" style="height: 500px;">
+                    <div ref="rtuWarnCountChart" style="width: 100%;height: 500px;">
+                    </div>
+                </el-card>
+            </el-col>
+            <el-col :span="6">
+                <el-card class="box-high-card">
+                    <div slot="header" class="clearfix">
+                        <span>今日维修任务动态</span>
+                        <el-button style="float: right; padding: 3px 0" type="text"
+                            @click="openMoreTodayOrderProcess">更多</el-button>
+                    </div>
+                    <div v-for="(item, index) in todayOrderList" :key="index" class="list-item">
+                        <el-row type="flex">
+                            <el-col :span="19">
+                                <div style="padding-right: 5px;">
+
+                                    <div style="display: flex; flex-direction: row;align-items: center;">
+                                        <label>{{ item.rtuName }}</label>
+                                        <label style="margin-left: 5px;color: gray;"> / {{ item.rtuCode }}</label>
+                                    </div>
+                                    <div style="display: flex; flex-direction: row;align-items: center;margin-top: 4px;">
+                                        <label>维修状态:<span style="color:gray">{{
+                                            item.orderStatusName }}</span></label>
+                                    </div>
+                                    <div style="display: flex; flex-direction: row;align-items: center;margin-top: 4px;">
+                                        <label>更新时间:<span style="color:gray">{{ item.updateTime }}</span></label>
+                                    </div>
+                                    <div style="margin-top: 4px;margin-bottom: 5px;">
+                                        <label>备注:<span style="color:gray">{{ item.processDesc }}</span></label>
+                                    </div>
+                                </div>
+                            </el-col>
+                            <el-col :span="5" style="display: flex;flex-direction: column;justify-content: center;">
+                                <el-button style="font-size: 0.7rem;" size="mini" type="info" round
+                                    @click="openCheckOrderReportDetail(item)">查看详情</el-button>
+                            </el-col>
+                        </el-row>
+                    </div>
+                </el-card>
+            </el-col>
+            <el-col :span="6">
+                <el-row>
+                    <el-col :span="24">
+                        <el-card class="box-high-card">
+                            <div slot="header" class="clearfix">
+                                <span>今日巡检动态</span>
+                                <el-button style="float: right; padding: 3px 0" type="text"
+                                    @click="openMoreTodayInspectionReport">更多</el-button>
+                            </div>
+                            <div v-for="(item, index) in todayInspectionReportList" :key="index" class="list-item">
+                                <el-row type="flex">
+                                    <el-col :span="19">
+                                        <div style="padding-right: 5px;">
+                                            <div style="display: flex; flex-direction: row;align-items: center;">
+                                                <label>{{ item.rtuName }}</label>
+                                                <label style="margin-left: 5px;color: gray;"> / {{ item.rtuCode }}</label>
+                                            </div>
+                                            <div
+                                                style="display: flex; flex-direction: row;align-items: center;margin-top: 4px;">
+                                                <label>填报人:<span style="color:gray">{{
+                                                    item.servicePersonName
+                                                }}</span></label>
+                                            </div>
+                                            <div
+                                                style="display: flex; flex-direction: row;align-items: center;margin-top: 4px;margin-bottom: 5px;">
+                                                <label>填报时间:<span style="color:gray">{{ item.updateTime }}</span></label>
+                                            </div>
+                                        </div>
+                                    </el-col>
+                                    <el-col :span="5" style="display: flex;flex-direction: column;justify-content: center;">
+                                        <el-button style="font-size: 0.7rem;" size="mini" type="info" round
+                                            @click="openInspectionReportDetail(item)">查看详情</el-button>
+                                    </el-col>
+                                </el-row>
+                            </div>
+                        </el-card>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="24">
+
+                    </el-col>
+                </el-row>
+            </el-col>
+            <el-col :span="6">
+                <el-row>
+                    <el-col :span="24">
+                        <el-card class="box-card-news">
+                            <div slot="header" class="clearfix">
+                                <span>通知公告</span>
+                                <el-button style="float: right; padding: 3px 0" type="text"
+                                    @click="openMoreNotice">更多</el-button>
+                            </div>
+                            <div v-for="(item, index) in noticeList" :key="index" class="notice-item">
+                                <div>
+                                    <label>{{ item.title }}</label>
+                                </div>
+                                <div style="margin-top: 4px;">
+                                    <label class="notice-time">发布时间: {{ item.releaseTime }}</label>
+                                </div>
+                                <div style="margin-top: 4px;margin-bottom: 2px;">
+                                    <label>{{
+                                        item.content
+                                    }}</label>
+                                </div>
+                            </div>
+                        </el-card>
+
+
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="24">
+                        <el-card class="box-card-apk">
+                            <div slot="header" class="clearfix">
+                                <span>手机客户端下载</span>
+                            </div>
+                            <div>
+                                <img style="width: 100px;height: 100px;" :src="appinfo.apkQrUrl" />
+                            </div>
+                            <div style="margin-top: 4px;">
+                                <label style="padding-left: 5px;font-size: 0.8rem;">版本号 {{ appinfo.version }}</label>
+                            </div>
+                            <div style="margin-top: 4px;">
+                                <el-button type="text" @click="downloadApk">下载安卓客户端</el-button>
+                            </div>
+                        </el-card>
+                    </el-col>
+                </el-row>
+            </el-col>
+        </el-row>
+        <el-drawer title="今日维修任务动态信息" :visible.sync="moreTodayOrderProcessDig" v-if="moreTodayOrderProcessDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <todaycheckorderprocesslist ref="todaycheckorderprocesslist">
+            </todaycheckorderprocesslist>
+        </el-drawer>
+        <el-drawer title="今日巡检动态信息" :visible.sync="moreTodayInspectionReportDig" v-if="moreTodayInspectionReportDig"
+            size="50%" :close-on-click-modal="false" append-to-body>
+            <todaynspectionrportlist ref="todaynspectionrportlist"></todaynspectionrportlist>
+        </el-drawer>
+        <el-drawer title="通知公告信息" :visible.sync="moreNoticeDig" v-if="moreNoticeDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <todaynoticelist ref="todaynoticelist"></todaynoticelist>
+        </el-drawer>
+        <el-drawer title="异常测站信息" :visible.sync="warninglistDig" v-if="warninglistDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <warninglist ref="warninglist" :deptId="deptId"></warninglist>
+        </el-drawer>
+        <el-drawer title="离线测站信息" :visible.sync="offlineWarnListDig" v-if="offlineWarnListDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <offlinewarnlist ref="offlinewarnlist" :deptId="deptId"></offlinewarnlist>
+        </el-drawer>
+        <el-drawer title="时钟异常测站信息" :visible.sync="clockWarnListDig" v-if="clockWarnListDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <clockwarnlist ref="clockwarnlist" :deptId="deptId"></clockwarnlist>
+        </el-drawer>
+        <el-drawer title="小时报漏报测站信息" :visible.sync="hourmissoutWarnListDig" v-if="hourmissoutWarnListDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <hourmissoutwarnlist ref="hourmissoutwarnlist" :deptId="deptId"></hourmissoutwarnlist>
+        </el-drawer>
+        <el-drawer title="雨量站小时报漏报测站信息" :visible.sync="rainHourmissoutWarnListDig" v-if="rainHourmissoutWarnListDig"
+            size="50%" :close-on-click-modal="false" append-to-body>
+            <rainHourmissoutWarnListVue ref="rainHourmissoutWarnList" :deptId="deptId"></rainHourmissoutWarnListVue>
+        </el-drawer>
+        <el-drawer title="水位站小时报漏报测站信息" :visible.sync="riverHourmissoutWarnListDig" v-if="riverHourmissoutWarnListDig"
+            size="50%" :close-on-click-modal="false" append-to-body>
+            <riverHourmissoutWarnListVue ref="riverHourmissoutWarnList" :deptId="deptId"></riverHourmissoutWarnListVue>
+        </el-drawer>
+        <el-drawer title="5分钟报延时测站信息" :visible.sync="minupdelayWarnListDig" v-if="minupdelayWarnListDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <minupdelaywarnlist ref="minupdelaywarnlist" :deptId="deptId"></minupdelaywarnlist>
+        </el-drawer>
+        <el-drawer title="小时报延时测站信息" :visible.sync="hourupdelayWarnListDig" v-if="hourupdelayWarnListDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <hourupdelaywarnlist ref="hourupdelaywarnlist" :deptId="deptId"></hourupdelaywarnlist>
+        </el-drawer>
+        <el-drawer title="雨量站小时报延时测站信息" :visible.sync="rainHourupdelayWarnListDig" v-if="rainHourupdelayWarnListDig"
+            size="50%" :close-on-click-modal="false" append-to-body>
+            <rainhourupdelaywarnlistVue ref="rainhourupdelaywarnlist" :deptId="deptId"></rainhourupdelaywarnlistVue>
+        </el-drawer>
+        <el-drawer title="水位站小时报延时测站信息" :visible.sync="riverHourupdelayWarnListDig" v-if="riverHourupdelayWarnListDig"
+            size="50%" :close-on-click-modal="false" append-to-body>
+            <riverhourupdelaywarnlistVue ref="riverhourupdelaywarnlist" :deptId="deptId"></riverhourupdelaywarnlistVue>
+        </el-drawer>
+        <el-drawer title="疑似异常值测站信息" :visible.sync="outlterValueWarnListDig" v-if="outlterValueWarnListDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <outlitervaluewarnlist ref="outlitervaluewarnlist" :deptId="deptId"></outlitervaluewarnlist>
+        </el-drawer>
+        <el-drawer title="维修中任务信息" :visible.sync="processingcheckorderlistDig" v-if="processingcheckorderlistDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <processingcheckorderlist ref="processingcheckorderlist"></processingcheckorderlist>
+        </el-drawer>
+        <el-drawer title="未确认维修任务信息" :visible.sync="uncomfireCheckOrderDig" v-if="uncomfireCheckOrderDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <uncomfirecheckorderlist ref="uncomfirecheckorderlist"></uncomfirecheckorderlist>
+        </el-drawer>
+        <el-drawer title="确认超时维修任务信息" :visible.sync="comfireDelayCheckOrderDig" v-if="comfireDelayCheckOrderDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <comfiredelaycheckorderlist ref="comfiredelaycheckorderlist"></comfiredelaycheckorderlist>
+        </el-drawer>
+        <el-drawer title="维修任务详情" :visible.sync="checkorderprocessdetailDig" v-if="checkorderprocessdetailDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <checkorderprocessdetail ref="checkorderprocessdetail" :orderId="checkOrderReportId"></checkorderprocessdetail>
+        </el-drawer>
+        <el-drawer title="设备巡检详情" :visible.sync="inspectionreportdetailDig" v-if="inspectionreportdetailDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <inspectionreportdetail ref="inspectionreportdetail" :id="inspectionReportId"></inspectionreportdetail>
+        </el-drawer>
+        <el-drawer :visible.sync="inspectionreportlistDig" v-if="inspectionreportlistDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <div slot="title" class="header-title">
+                <span class="name">{{ dialogTitle }}</span>
+            </div>
+            <inspectionreportlistVue ref="inspectionreportlist" :rainSeasonKind="rainSeasonKind"></inspectionreportlistVue>
+        </el-drawer>
+    </div>
+</template>
+
+<script>
+import { getRtuStatusCountData, getRtuUpCountData, getCheckOrderCountData, getInspectionReportCountData, getWarnKindCountData, getWarnCountList } from "@/api/home/home.js";
+import { todayOrderProcessList } from "@/api/business/order/process.js";
+import { todayInspectionReportList } from "@/api/business/inspection/inspectionreport.js";
+import { getLastList } from "@/api/notice/notice.js";
+import { getStore } from '@/util/store.js';
+import { getAppInfo } from "@/api/versionmanage/version.js";
+import todaycheckorderprocesslist from "../business/order/todaycheckorderprocesslist.vue";
+import uncomfirecheckorderlist from "../business/order/uncomfirecheckorderlist.vue";
+import comfiredelaycheckorderlist from "../business/order/comfiredelaycheckorderlist.vue";
+import processingcheckorderlist from "../business/order/processingcheckorderlist.vue";
+import todaynspectionrportlist from "../business/inspection/todaynspectionrportlist.vue";
+import todaynoticelist from "../notice/todaynoticelist.vue";
+import warninglist from "../business/warning/warninglist.vue";
+import offlinewarnlist from "../business/warning/offlinewarnlist.vue";
+import clockwarnlist from "../business/warning/clockwarnlist.vue";
+import hourmissoutwarnlist from "../business/warning/hourmissoutwarnlist.vue";
+import rainHourmissoutWarnListVue from "../business/warning/rainhourmissoutwarnlist.vue";
+import riverHourmissoutWarnListVue from "../business/warning/riverhourmissoutwarnlist.vue";
+import minupdelaywarnlist from "../business/warning/minupdelaywarnlist.vue";
+import hourupdelaywarnlist from "../business/warning/hourupdelaywarnlist.vue";
+import rainhourupdelaywarnlistVue from "../business/warning/rainhourupdelaywarnlist.vue";
+import riverhourupdelaywarnlistVue from "../business/warning/riverhourupdelaywarnlist.vue";
+import outlitervaluewarnlist from "../business/warning/outlitervaluewarnlist.vue";
+import checkorderprocessdetail from "../business/order/checkorderprocessdetail.vue";
+import inspectionreportdetail from "../business/inspection/inspectionreportdetail.vue";
+import inspectionreportlistVue from "../business/inspection/inspectionreportlist.vue";
+import { mapGetters } from "vuex";
+export default {
+    name: "home",
+    components: {
+        todaycheckorderprocesslist,
+        todaynspectionrportlist,
+        todaynoticelist,
+        warninglist,
+        offlinewarnlist,
+        hourmissoutwarnlist,
+        minupdelaywarnlist,
+        hourupdelaywarnlist,
+        uncomfirecheckorderlist,
+        comfiredelaycheckorderlist,
+        checkorderprocessdetail,
+        inspectionreportdetail,
+        inspectionreportlistVue,
+        clockwarnlist,
+        rainHourmissoutWarnListVue,
+        riverHourmissoutWarnListVue,
+        rainhourupdelaywarnlistVue,
+        riverhourupdelaywarnlistVue,
+        outlitervaluewarnlist,
+        processingcheckorderlist
+    },
+    data() {
+        return {
+            adminPageStyle: false,
+            warninglistDig: false,
+            offlineWarnListDig: false,
+            clockWarnListDig: false,
+            hourmissoutWarnListDig: false,
+            rainHourmissoutWarnListDig: false,
+            riverHourmissoutWarnListDig: false,
+            minupdelayWarnListDig: false,
+            hourupdelayWarnListDig: false,
+            rainHourupdelayWarnListDig: false,
+            riverHourupdelayWarnListDig: false,
+            outlterValueWarnListDig: false,
+            uncomfireCheckOrderDig: false,
+            comfireDelayCheckOrderDig: false,
+            processingcheckorderlistDig: false,
+            moreTodayOrderProcessDig: false,
+            moreTodayInspectionReportDig: false,
+            moreNoticeDig: false,
+            checkorderprocessdetailDig: false,
+            inspectionreportdetailDig: false,
+            inspectionreportlistDig: false,
+            dialogTitle: '',
+            deptId: 0,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            data: [],
+            option: {
+                height: "420",
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: false,
+                searchMenuSpan: 6,
+                addBtn: false,
+                tree: true,
+                border: true,
+                index: true,
+                editBtn: false,
+                delBtn: false,
+                menu: false,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                refreshBtn: false,
+                header: false,
+                column: [
+                    {
+                        label: "盟市",
+                        prop: "adCity",
+                        span: 24,
+                    },
+                    {
+                        label: "测站数量",
+                        prop: "rtus",
+                        span: 12,
+                    },
+                    {
+                        label: "测站离线",
+                        prop: "warnOffline",
+                        span: 12,
+                        html: true,
+                        formatter: (val) => {
+                            if (val.warnOffline && val.warnOffline > 0) {
+                                let n = val.warnOffline / val.rtus * 100;
+                                let num = new Number(n);
+                                // if (val.deptId == 0) {
+                                //     return '<span><b style="color:rgb(238,112,112)">' + val.warnOffline + '</b> / ' + '<b style="color:rgb(84,123,201)">' + num.toFixed(2) + '%</b></span>'
+                                // } else {
+                                return '<span style="cursor:pointer;text-decoration-line: underline;"><b style="color:rgb(238,112,112)">' + val.warnOffline + '</b> / ' + '<b style="color:rgb(84,123,201)">' + num.toFixed(2) + '%</b></span>'
+                                // }
+                            } else {
+                                return '<b></b>'
+                            }
+
+                        }
+                    }, {
+                        label: "小时报漏报",
+                        prop: "warnMissOut",
+                        span: 12,
+                        html: true,
+                        formatter: (val) => {
+                            if (val.warnMissOut && val.warnMissOut > 0) {
+                                let n = val.warnMissOut / val.rtus * 100;
+                                let num = new Number(n);
+                                // if (val.deptId == 0) {
+                                //     return '<span><b style="color:rgb(238,112,112)">' + val.warnMissOut + '</b> / ' + '<b style="color:rgb(84,123,201)">' + num.toFixed(2) + '%</b></span>'
+                                // } else {
+                                return '<span style="cursor:pointer;text-decoration-line: underline;"><b style="color:rgb(238,112,112)">' + val.warnMissOut + '</b> / ' + '<b style="color:rgb(84,123,201)">' + num.toFixed(2) + '%</b></span>'
+                                // }
+                            } else {
+                                return '<b></b>'
+                            }
+                        }
+                    }, {
+                        label: "5分钟上报延时",
+                        prop: "warnUpMinDelay",
+                        span: 12,
+                        html: true,
+                        formatter: (val) => {
+                            if (val.warnUpMinDelay && val.warnUpMinDelay > 0) {
+                                let n = val.warnUpMinDelay / val.rtus * 100;
+                                let num = new Number(n);
+                                // if (val.deptId == 0) {
+                                //     return '<span><b style="color:rgb(238,112,112)">' + val.warnUpMinDelay + '</b> / ' + '<b style="color:rgb(84,123,201)">' + num.toFixed(2) + '%</b></span>'
+                                // } else {
+                                return '<span style="cursor:pointer;text-decoration-line: underline;"><b style="color:rgb(238,112,112)">' + val.warnUpMinDelay + '</b> / ' + '<b style="color:rgb(84,123,201)">' + num.toFixed(2) + '%</b></span>'
+                                // }
+
+                            } else {
+                                return '<b></b>'
+                            }
+                        }
+                    }, {
+                        label: "小时上报延时",
+                        prop: "warnUpHourDelay",
+                        span: 12,
+                        html: true,
+                        formatter: (val) => {
+                            if (val.warnUpHourDelay && val.warnUpHourDelay > 0) {
+                                let n = val.warnUpHourDelay / val.rtus * 100;
+                                let num = new Number(n);
+                                // if (val.deptId == 0) {
+                                //     return '<span><b style="color:rgb(238,112,112)">' + val.warnUpHourDelay + '</b> / ' + '<b style="color:rgb(84,123,201)">' + num.toFixed(2) + '%</b></span>'
+                                // } else {
+                                return '<span style="cursor:pointer;text-decoration-line: underline;"><b style="color:rgb(238,112,112)">' + val.warnUpHourDelay + '</b> / ' + '<b style="color:rgb(84,123,201)">' + num.toFixed(2) + '%</b></span>'
+                                // }
+
+                            } else {
+                                return '<b></b>'
+                            }
+                        }
+                    },
+                ],
+            },
+            appinfo: {
+                apkUrl: '',
+                apkQrUrl: '',
+                version: ''
+            },
+            checkOrderReportId: '',
+            inspectionReportId: '',
+            realData: {
+            },
+            stompClient: null,
+            layout: [],
+            cache: [],
+            editSw: false,
+            dialog: false,
+            id: "",
+            guideForm: {},
+            second: 0,
+            timer: null,
+            state: 5,
+            todayOrderList: [],
+            todayInspectionReportList: [],
+            noticeList: [],
+            userInfo: getStore({ name: 'userInfo' }) || [],
+            rtuInfoCountPieMap: null,
+            rtuInfoCountPieOption: {
+                title: {
+                    text: '测站状态统计信息',
+                    subtext: '测站总数量',
+                    left: 'center'
+                },
+                tooltip: {
+                    trigger: 'item',
+                    formatter: '{a} <br/>{b} : {c} ({d}%)',
+                    textStyle: {
+                        fontSize: 12
+                    }
+                },
+                legend: {
+                    bottom: 20,
+                    left: 'center',
+                    data: ['运行正常', '测站离线', '其他异常']
+                },
+                series: [
+                    {
+                        name: '状态信息',
+                        type: 'pie',
+                        radius: '40%',
+                        center: ['50%', '50%'],
+                        selectedMode: 'single',
+                        data: [
+                            {
+                                value: 0,
+                                name: '运行正常',
+                                label: {
+                                    show: true,
+                                    formatter(param) {
+                                        // correct the percentage
+                                        return ' (' + param.value + ' / ' + param.percent + '%)';
+                                    }
+                                },
+                                itemStyle: {
+                                    color: '#547bc9'
+                                }
+                            },
+                            {
+                                value: 0,
+                                name: '测站离线',
+                                label: {
+                                    show: true,
+                                    formatter(param) {
+                                        // correct the percentage
+                                        return ' (' + param.value + ' / ' + param.percent + '%)';
+                                    }
+                                },
+                                itemStyle: {
+                                    color: '#ff0000'
+                                }
+                            },
+                            {
+                                value: 0,
+                                name: '其他异常',
+                                label: {
+                                    show: true,
+                                    formatter(param) {
+                                        // correct the percentage
+                                        return ' (' + param.value + ' / ' + param.percent + '%)';
+                                    }
+                                },
+                                itemStyle: {
+                                    color: '#ee7070'
+                                }
+                            },
+                        ],
+                        emphasis: {
+                            itemStyle: {
+                                shadowBlur: 10,
+                                shadowOffsetX: 0,
+                                shadowColor: 'rgba(0, 0, 0, 0.5)'
+                            }
+                        }
+                    }
+                ]
+            },
+            rtuDataUpCountMap: null,
+            rtuDataUpCountOption: {
+                title: {
+                    text: '测站上报率统计信息',
+                    subtext: '统计口径为上一个自然天',
+                    left: 'center'
+                },
+                tooltip: {
+                    trigger: 'axis',
+                    axisPointer: {
+                        type: 'shadow'
+                    },
+                    showContent: true,
+                    formatter: function (params) {
+                        console.log(JSON.stringify(params))
+                        return '<b>' + params[0].name + '数量:' + params[0].data.value + '</b><br/><b>上报数量:' + params[1].data.value + '/' + params[1].data.percent + '</b><br/><b>点击打开列表页</b>';
+                    },
+                    textStyle: {
+                        fontSize: 10,
+                    }
+                },
+                legend: {
+                    show: true,
+                    bottom: 20,
+
+                },
+                grid: {
+                    left: '3%',
+                    right: '4%',
+                    bottom: '18%',
+                    containLabel: true
+                },
+                xAxis: {
+                    type: 'value',
+                    boundaryGap: [0, 0.01]
+                },
+                yAxis: {
+                    type: 'category',
+                    data: ['墒情站', '水位站', '雨量站']
+                },
+                series: [
+                    {
+                        name: '测站数量',
+                        type: 'bar',
+                        data: [{
+                            value: 0,
+                            showpercent: false,
+                            percent: 0
+                        }, {
+                            value: 0,
+                            showpercent: false,
+                            percent: 0
+                        }, {
+                            value: 0,
+                            showpercent: false,
+                            percent: 0
+                        }],
+                        itemStyle: {
+                            color: 'rgba(84, 112, 198,1.0)'
+                        },
+                        label: {
+                            show: true,
+                            position: 'insideLeft',
+                            formatter(params) {
+                                if (params.data.showpercent) {
+                                    return '    ' + params.data.value + ' / ' + params.data.percent + '%';
+                                } else {
+                                    return '    ' + params.data.value;
+                                }
+
+
+
+                            }
+                        },
+                    },
+                    {
+                        name: '上报数量',
+                        type: 'bar',
+                        data: [{
+                            value: 0,
+                            showpercent: true,
+                            percent: 0
+                        }, {
+                            value: 0,
+                            showpercent: true,
+                            percent: 0
+                        }, {
+                            value: 0,
+                            showpercent: true,
+                            percent: 0
+                        }],
+                        itemStyle: {
+                            color: 'rgba(145, 204, 122,1.0)'
+                        },
+                        label: {
+                            show: true,
+                            position: 'insideLeft',
+                            formatter(params) {
+
+                                if (params.data.showpercent) {
+                                    return '    ' + params.data.value + ' / ' + params.data.percent + '%';
+                                } else {
+                                    return '    ' + params.data.value;
+                                }
+
+
+
+                            }
+                        },
+                    }
+                ]
+            },
+            checkOrderMap: null,
+            checkOrderCountOption: {
+                tooltip: {
+                    trigger: 'axis',
+                    axisPointer: {
+                        type: 'shadow',
+                    },
+                    showContent: true,
+                    formatter: function (params) {
+                        //console.log(JSON.stringify(params))
+                        if (params[0].data.showpercent) {
+
+                            return '<b>' + params[0].name + ':' + params[0].data.value + '</b><br/><b>百分比:' + params[0].data.percent + '</b><br/><b>点击打开列表页</b>';
+                        } else {
+                            return "点击跳转到维修任务管理页面";
+                        }
+                    },
+                    textStyle: {
+                        fontSize: 10
+                    }
+                },
+                title: {
+                    text: '维修任务统计信息',
+                    left: 'center',
+                    subtext: '实时统计'
+                    // textStyle: {
+                    //     fontSize: 16,
+                    //     fontWeight: "bold",
+                    //     color: "#464646",
+                    // }
+                },
+                color: ['#5470c6'],
+                yAxis: {
+                    type: 'category',
+                    data: ['超时未确认任务', '未确认任务', '维修中', '维修任务总量']
+                },
+                xAxis: {
+                    type: 'value',
+
+                },
+                grid: {
+                    left: '3%',
+                    right: '4%',
+                    bottom: '18%',
+                    containLabel: true
+                },
+                series: [
+                    {
+                        data: [
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(250, 200, 88,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(145, 204, 122,1.0)'
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 0,
+                                itemStyle: {
+
+                                    color: 'rgba(84, 112, 198,1.0)'
+                                },
+                                showpercent: false,
+                                percent: 0
+                            },
+                        ],
+                        type: 'bar',
+                        barWidth: 20,
+                        label: {
+                            show: true,
+                            position: 'insideLeft',
+                            formatter(params) {
+                                if (params.data.showpercent) {
+                                    return '    ' + params.data.value + ' / ' + params.data.percent + '%';
+                                } else {
+                                    return '    ' + params.data.value;
+                                }
+
+                            }
+                        },
+                    }
+                ]
+            },
+            equipmentInspectionChartMap: null,
+            equipmentInspectionCountOption: {
+                tooltip: {
+                    trigger: 'axis',
+                    axisPointer: {
+                        type: 'shadow',
+                    },
+                    showContent: true,
+                    formatter: function (params) {
+                        // console.log(JSON.stringify(params))
+                        if (params[0].data.showpercent) {
+                            // return "点击柱状图可查看详情";
+                            return '<b>已巡检:' + params[0].data.value + '</b><br/><b>百分比:' + params[0].data.percent + '</b><br/><b>点击打开列表页</b>';
+                        } else {
+                            return "点击跳转到设备巡检管理页面";
+                        }
+                    },
+                    textStyle: {
+                        fontSize: 10
+                    }
+                },
+                title: {
+                    text: '本年度设备巡检统计信息',
+                    left: 'center',
+                    subtext: '实时统计'
+                    // textStyle: {
+                    //     fontSize: 16,
+                    //     fontWeight: "bold",
+                    //     color: "#464646",
+                    // }
+                },
+                color: ['#5470c6'],
+                yAxis: {
+                    type: 'category',
+                    data: ['汛中(二)已巡检', '汛中(一)已巡检', '汛前已巡检', '需巡检站点数量']
+                },
+                xAxis: {
+                    type: 'value',
+
+                },
+                grid: {
+                    left: '3%',
+                    right: '4%',
+                    bottom: '18%',
+                    containLabel: true
+                },
+                series: [
+                    {
+                        data: [
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(145, 204, 122,1.0)'
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(145, 204, 122,1.0)'
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(145, 204, 122,1.0)'
+                                },
+                                showpercent: true,
+                                percent: 4
+                            },
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(84, 112, 198,1.0)'
+                                },
+                                showpercent: false,
+                                percent: 0
+                            },
+                        ],
+                        type: 'bar',
+                        barWidth: 20,
+                        label: {
+                            show: true,
+                            position: 'insideLeft',
+                            formatter(params) {
+                                if (params.data.showpercent) {
+                                    return '    ' + params.data.value + ' / ' + params.data.percent + '%';
+                                } else {
+                                    return '    ' + params.data.value;
+                                }
+
+                            }
+                        },
+                    }
+                ]
+            },
+            rtuWarnCountMap: null,
+            rtuWarnCountOption: {
+                tooltip: {
+                    trigger: 'axis',
+                    axisPointer: {
+                        type: 'shadow',
+                    },
+                    showContent: true,
+                    formatter: function (params) {
+                        // console.log(JSON.stringify(params))
+                        if (params[0].data.showpercent) {
+                            //return "点击柱状图可查看详情";
+                            return '<b>' + params[0].name + ':' + params[0].data.value + '</b><br/><b>百分比:' + params[0].data.percent + '</b><br/><b>点击打开列表页</b>';
+                        } else {
+                            return '<b>' + params[0].name + ':' + params[0].data.value + '</b><br/><b>点击打开列表页</b>';
+                        }
+                    },
+                    textStyle: {
+                        fontSize: 10
+                    }
+                },
+                title: {
+
+                    text: '测站异常分类统计信息',
+                    left: 'center',
+                    subtext: '实时统计'
+                    // textStyle: {
+                    //     fontSize: 16,
+                    //     fontWeight: "bold",
+                    //     color: "#464646",
+                    // }
+                },
+                color: ['#5470c6'],
+                yAxis: {
+                    type: 'category',
+                    data: ['疑似异常值', '水位站小时报上报延时', '雨量站小时报上报延时', '5分钟上报延时', '水位站小时报漏报', '雨量站小时报漏报', '时钟异常', '离线', '异常测站总数']
+                },
+                xAxis: {
+                    type: 'value',
+                },
+                grid: {
+                    left: '3%',
+                    right: '4%',
+                    bottom: '10%',
+                    containLabel: true
+                },
+                series: [
+                    {
+                        data: [
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 0,
+                                itemStyle: {
+
+                                    color: 'rgba(84, 112, 198,1.0)'
+                                },
+                                showpercent: false,
+                                percent: 0
+                            },
+                        ],
+                        type: 'bar',
+                        barWidth: 20,
+                        label: {
+                            show: true,
+                            position: 'insideLeft',
+                            formatter(params) {
+                                if (params.data.showpercent) {
+                                    return '    ' + params.data.value + ' / ' + params.data.percent + '%';
+                                } else {
+                                    return '    ' + params.data.value;
+                                }
+
+                            }
+                        },
+                    }
+                ]
+            },
+        };
+    },
+    created() {
+        // let u = getStore({ name: 'userInfo' });
+        console.log(JSON.stringify(this.userInfo));
+        // this.getData();
+        if (this.userInfo.role_name === "sys_admin") {
+            this.adminPageStyle = true;
+        }
+    },
+    computed: {
+        ...mapGetters(["userInfo"]),
+    },
+    mounted() {
+        console.log("mounted ++++++++++++++++++++");
+        // this.initWebsocket();
+        var that = this;
+        let chart = this.$refs.rtuInfoCountPieChart;
+        if (chart) {
+            this.rtuInfoCountPieMap = this.$echarts.init(chart);
+            this.rtuInfoCountPieMap.setOption(this.rtuInfoCountPieOption);
+            // this.rtuInfoCountPieMap.off('click');
+            // this.rtuInfoCountPieMap.on('click', function (p) {
+            //     console.log(p)
+            //     if (p.name === '设备异常') {
+            //         that.warninglistDig = true;
+            //         that.$nextTick(() => {
+            //             that.$refs['warninglist'].init();
+            //         });
+            //     }
+            // })
+        }
+
+        chart = this.$refs.rtuDataUpCountChart;
+        if (chart) {
+            this.rtuDataUpCountMap = this.$echarts.init(chart);
+            this.rtuDataUpCountMap.setOption(this.rtuDataUpCountOption);
+            // this.rtuDataUpCountMap.off('click');
+            // this.rtuDataUpCountMap.on('click', function (p) {
+            //     console.log(p)
+
+            // })
+            this.rtuDataUpCountMap.getZr().off('click');
+            this.rtuDataUpCountMap.getZr().on('click', function (p) {
+                let pointInPixel = [p.offsetX, p.offsetY];
+                if (that.rtuDataUpCountMap.containPixel('grid', pointInPixel)) {
+                    let yIndex = that.rtuDataUpCountMap.convertFromPixel({ seriesIndex: 0 }, [p.offsetX, p.offsetY])[1];
+                    //let  yData=that.checkOrderCountOption.yAxis.data[yIndex];//当前点击柱子的数据
+                    //   let value = that.rtuDataUpCountOption.series[0].data[yIndex].value;
+                    if (yIndex == 2) {
+                        that.$router.push({ path: '/business/data/rainDataCache' });
+                    } else if (yIndex == 1) {
+                        that.$router.push({ path: '/business/data/riverDataCache' });
+                    } else if (yIndex == 0) {
+                        that.$router.push({ path: '/business/data/groundDataCache' });
+                    }
+                }
+            });
+        }
+
+        chart = this.$refs.checkOrderChart;
+        if (chart) {
+            this.checkOrderMap = this.$echarts.init(chart);
+            this.checkOrderMap.setOption(this.checkOrderCountOption);
+            this.checkOrderMap.getZr().off('click');
+            this.checkOrderMap.getZr().on('click', function (p) {
+                console.log("checkOrderChart  zr ++++++++++++++++++++++++++++++++++++")
+                let pointInPixel = [p.offsetX, p.offsetY];
+                if (that.checkOrderMap.containPixel('grid', pointInPixel)) {
+                    let yIndex = that.checkOrderMap.convertFromPixel({ seriesIndex: 0 }, [p.offsetX, p.offsetY])[1];
+                    //let  yData=that.checkOrderCountOption.yAxis.data[yIndex];//当前点击柱子的数据
+                    let value = that.checkOrderCountOption.series[0].data[yIndex].value;
+                    if (yIndex == 3) {
+                        console.log("维修数量 index " + yIndex)
+                        that.$router.push({ path: '/business/order/checkorderlist' });
+                    } else if (yIndex == 2) {
+                        if (value > 0) {
+                            console.log("维修中 index " + yIndex)
+                            that.processingcheckorderlistDig = true;
+                            that.$nextTick(() => {
+                                that.$refs["processingcheckorderlist"].init();
+                            });
+                        } else {
+                            that.$message.warning("维修中暂无数据");
+                        }
+                    } else if (yIndex == 1) {
+                        if (value > 0) {
+                            console.log("未确认 index " + yIndex)
+                            that.uncomfireCheckOrderDig = true;
+                            that.$nextTick(() => {
+                                that.$refs["uncomfirecheckorderlist"].init();
+                            });
+                        } else {
+                            that.$message.warning("未确认维修任务暂无数据");
+                        }
+                    } else if (yIndex == 0) {
+                        if (value > 0) {
+                            console.log("超时未确认 index " + yIndex)
+                            that.comfireDelayCheckOrderDig = true;
+                            that.$nextTick(() => {
+                                that.$refs["comfiredelaycheckorderlist"].init();
+                            });
+                        } else {
+                            that.$message.warning("超时未确认维修任务暂无数据");
+                        }
+                    }
+                }
+            });
+
+            // this.checkOrderMap.off('click');
+            // this.checkOrderMap.on('click', function (p) {
+            //     console.log("checkOrderChart++++++++++++++++++++++++++++++++++++")
+            //     if (p.name === '维修任务数量') {
+            //         that.$router.push({ name: 'checkordermanagepage' });
+            //     } else if (p.name === '维修中') {
+            //     } else if (p.name === '未确认任务') {
+            //         that.uncomfireCheckOrderDig = true;
+            //         that.$nextTick(() => {
+            //             that.$refs["uncomfirecheckorderlist"].init();
+            //         });
+            //     } else if (p.name === '超时未确认任务') {
+            //         that.comfireDelayCheckOrderDig = true;
+            //         that.$nextTick(() => {
+            //             that.$refs["comfiredelaycheckorderlist"].init();
+            //         });
+            //     }
+            // })
+        }
+        chart = this.$refs.equipmentInspectionCountChart;
+        if (chart) {
+            this.equipmentInspectionChartMap = this.$echarts.init(chart);
+            this.equipmentInspectionChartMap.setOption(this.equipmentInspectionCountOption);
+            this.equipmentInspectionChartMap.getZr().off('click');
+            this.equipmentInspectionChartMap.getZr().on('click', function (p) {
+                console.log("checkOrderChart  zr ++++++++++++++++++++++++++++++++++++")
+                let pointInPixel = [p.offsetX, p.offsetY];
+                if (that.equipmentInspectionChartMap.containPixel('grid', pointInPixel)) {
+                    let yIndex = that.equipmentInspectionChartMap.convertFromPixel({ seriesIndex: 0 }, [p.offsetX, p.offsetY])[1];
+                    //let yData = that.equipmentInspectionCountOption.yAxis.data[yIndex];//当前点击柱子的数据
+                    let value = that.equipmentInspectionCountOption.series[0].data[yIndex].value;
+                    console.log(" yData " + value)
+                    if (yIndex == 3) {
+                        console.log("巡检数量 index " + yIndex)
+                        that.$router.push({ path: '/business/inspection/index' });
+                    } else if (yIndex == 2) {
+
+                        if (value > 0) {
+                            console.log("汛前 index " + yIndex)
+                            that.rainSeasonKind = 1;
+                            that.inspectionreportlistDig = true;
+                            that.dialogTitle = '汛前已巡检信息';
+                            that.$nextTick(() => {
+                                that.$refs["inspectionreportlist"].init();
+                            });
+
+                        } else {
+                            that.$message.warning("汛前巡检暂无上报数据");
+                        }
+                    } else if (yIndex == 1) {
+                        if (value > 0) {
+                            console.log("汛中一 index " + yIndex)
+                            that.rainSeasonKind = 2;
+                            that.inspectionreportlistDig = true;
+                            that.dialogTitle = '汛中(一)已巡检信息';
+                            that.$nextTick(() => {
+                                that.$refs["inspectionreportlist"].init();
+                            });
+                        } else {
+                            that.$message.warning("汛中第一次巡检暂无上报数据");
+                        }
+                    } else if (yIndex == 0) {
+                        if (value > 0) {
+                            console.log("汛中二 index " + yIndex)
+                            that.rainSeasonKind = 3;
+                            that.inspectionreportlistDig = true;
+                            that.dialogTitle = '汛中(二)已巡检信息';
+                            that.$nextTick(() => {
+                                that.$refs["inspectionreportlist"].init();
+                            });
+                        } else {
+                            that.$message.warning("汛中第二次巡检暂无上报数据");
+                        }
+                    }
+                }
+            });
+
+            // this.equipmentInspectionChartMap.off('click')
+            // this.equipmentInspectionChartMap.on('click', function (p) {
+            //     console.log(p)
+            // })
+        }
+
+        chart = this.$refs.rtuWarnCountChart;
+        if (chart) {
+            this.rtuWarnCountMap = this.$echarts.init(chart);
+            this.rtuWarnCountMap.setOption(this.rtuWarnCountOption);
+            this.rtuWarnCountMap.getZr().off('click');
+            this.rtuWarnCountMap.getZr().on('click', function (p) {
+                console.log(p)
+                let pointInPixel = [p.offsetX, p.offsetY];
+                if (that.rtuWarnCountMap.containPixel('grid', pointInPixel)) {
+                    let yIndex = that.rtuWarnCountMap.convertFromPixel({ seriesIndex: 0 }, [p.offsetX, p.offsetY])[1];
+                    let name = that.rtuWarnCountOption.yAxis.data[yIndex];
+                    let value = that.rtuWarnCountOption.series[0].data[yIndex].value;
+                    if (name === '异常测站总数') {
+                        if (value > 0) {
+                            that.warninglistDig = true;
+                            that.$nextTick(() => {
+                                that.$refs["warninglist"].init();
+                            });
+                        } else {
+                            that.$message.warning("暂无异常数据");
+                        }
+                    } else if (name === '离线') {
+                        if (value > 0) {
+                            that.offlineWarnListDig = true;
+                            that.$nextTick(() => {
+                                that.$refs["offlinewarnlist"].init();
+                            });
+                        } else {
+                            that.$message.warning("暂无异常数据");
+                        }
+                    } else if (name === '时钟异常') {
+                        if (value > 0) {
+                            that.clockWarnListDig = true;
+                            that.$nextTick(() => {
+                                that.$refs["clockwarnlist"].init();
+                            });
+                        } else {
+                            that.$message.warning("暂无异常数据");
+                        }
+                    } else if (name === '雨量站小时报漏报') {
+                        if (value > 0) {
+                            that.rainHourmissoutWarnListDig = true;
+                            that.$nextTick(() => {
+                                that.$refs["rainHourmissoutWarnList"].init();
+                            });
+                        } else {
+                            that.$message.warning("暂无异常数据");
+                        }
+                    } else if (name === '水位站小时报漏报') {
+                        if (value > 0) {
+                            that.riverHourmissoutWarnListDig = true;
+                            that.$nextTick(() => {
+                                that.$refs["riverHourmissoutWarnList"].init();
+                            });
+                        } else {
+                            that.$message.warning("暂无异常数据");
+                        }
+                    } else if (name === '5分钟上报延时') {
+                        if (value > 0) {
+                            that.minupdelayWarnListDig = true;
+                            that.$nextTick(() => {
+                                that.$refs["minupdelaywarnlist"].init();
+                            });
+                        } else {
+                            that.$message.warning("暂无异常数据");
+                        }
+                    } else if (name === '雨量站小时报上报延时') {
+                        if (value > 0) {
+                            that.rainHourupdelayWarnListDig = true;
+                            that.$nextTick(() => {
+                                that.$refs["rainhourupdelaywarnlist"].init();
+                            });
+                        } else {
+                            that.$message.warning("暂无异常数据");
+                        }
+                    } else if (name === '水位站小时报上报延时') {
+                        if (value > 0) {
+                            that.riverHourupdelayWarnListDig = true;
+                            that.$nextTick(() => {
+                                that.$refs["riverhourupdelaywarnlist"].init();
+                            });
+                        } else {
+                            that.$message.warning("暂无异常数据");
+                        }
+                    } else if (name === '疑似异常值') {
+                        if (value > 0) {
+                            that.outlterValueWarnListDig = true;
+                            that.$nextTick(() => {
+                                that.$refs["outlitervaluewarnlist"].init();
+                            });
+                        } else {
+                            that.$message.warning("暂无异常数据");
+                        }
+                    }
+                }
+            })
+        }
+
+        this.$nextTick(() => {
+            this.loadData();
+        });
+    },
+    beforeDestroy() {
+        console.log("beforeDestroy ++++++++++++++++++++");
+        //  this.closeSocket();
+        if (this.timer != null) {
+            console.log("clear timer ++++++++++++++ ")
+            clearInterval(this.timer);
+            this.timer = null;
+        }
+    },
+    methods: {
+        loadData() {
+            this.getCountData();
+            if (this.timer == null) {
+                this.timer = setInterval(this.timeCall, 10000);
+            }
+        },
+        onLoad() {
+            this.loading = true;
+            getWarnCountList().then((res) => {
+                this.data = res.data.data;
+                this.loading = false;
+            });
+        },
+        timeCall() {
+            console.log("time ++++++++++++++++++++");
+            this.getCountData();
+            this.getWarnCountList().then((res) => {
+                this.data = res.data.data;
+            });
+        },
+        close() {
+            this.dialog = false;
+        },
+        cellClick(row, column, cell, event) {
+            if (event.isTrusted) {
+                if (column.label === '测站离线') {
+                    if (row.warnOffline) {
+                        this.deptId = row.deptId;
+                        this.offlineWarnListDig = true;
+                        console.log("warn offline " + this.deptId)
+                        this.$nextTick(() => {
+                            this.$refs["offlinewarnlist"].init();
+                        });
+                    }
+                } else if (column.label === '小时报漏报') {
+                    if (row.warnMissOut) {
+                        this.deptId = row.deptId;
+                        this.hourmissoutWarnListDig = true;
+                        this.$nextTick(() => {
+                            this.$refs["hourmissoutwarnlist"].init();
+                        });
+                    }
+                } else if (column.label === '5分钟上报延时') {
+                    if (row.warnUpMinDelay) {
+                        this.deptId = row.deptId;
+                        this.minupdelayWarnListDig = true;
+                        this.$nextTick(() => {
+                            this.$refs["minupdelaywarnlist"].init();
+                        });
+                    }
+                } else if (column.label === '小时上报延时') {
+                    if (row.warnUpHourDelay) {
+                        this.deptId = row.deptId;
+                        this.hourupdelayWarnListDig = true;
+                        this.$nextTick(() => {
+                            this.$refs["hourupdelaywarnlist"].init();
+                        });
+                    }
+                }
+            }
+        },
+        openMoreTodayOrderProcess() {
+            this.moreTodayOrderProcessDig = true;
+            this.$nextTick(() => {
+                this.$refs["todaycheckorderprocesslist"].init();
+            });
+        },
+        openMoreTodayInspectionReport() {
+            this.moreTodayInspectionReportDig = true;
+            this.$nextTick(() => {
+                this.$refs["todaynspectionrportlist"].init();
+            });
+        },
+        openMoreNotice() {
+            this.moreNoticeDig = true;
+            this.$nextTick(() => {
+                this.$refs["todaynoticelist"].init();
+            });
+        },
+        openCheckOrderReportDetail(item) {
+            this.checkOrderReportId = item.orderId;
+            this.checkorderprocessdetailDig = true;
+            this.$nextTick(() => {
+                this.$refs["checkorderprocessdetail"].init();
+            });
+        },
+        openInspectionReportDetail(item) {
+            this.inspectionReportId = item.id;
+            this.inspectionreportdetailDig = true;
+            this.$nextTick(() => {
+                this.$refs["inspectionreportdetail"].init();
+            });
+        },
+        downloadApk() {
+            if (this.appinfo.apkUrl !== '') {
+                window.open(this.appinfo.apkUrl);
+            }
+        },
+        getCountData() {
+            getRtuStatusCountData().then((res) => {
+                console.log("status count " + JSON.stringify(res.data))
+                if (res.data.code === 200) {
+                    let data = res.data.data;
+                    let num = new Number((data.rtus - data.warningRtus) / data.rtus * 100);
+                    this.rtuInfoCountPieOption.series[0].data[0].value = data.rtus - data.warningRtus;
+                    this.rtuInfoCountPieOption.series[0].data[0].percent = num.toFixed(2);
+                    num = new Number(data.offlineRtus / data.rtus * 100);
+                    this.rtuInfoCountPieOption.series[0].data[1].value = data.offlineRtus;
+                    this.rtuInfoCountPieOption.series[0].data[1].percent = num.toFixed(2);
+                    num = new Number((data.warningRtus - data.offlineRtus) / data.rtus * 100);
+                    this.rtuInfoCountPieOption.series[0].data[0].value = data.warningRtus - data.offlineRtus;
+                    this.rtuInfoCountPieOption.series[0].data[0].percent = num.toFixed(2);
+                    this.rtuInfoCountPieMap.setOption(this.rtuInfoCountPieOption);
+                }
+            });
+
+
+            getRtuUpCountData().then((res) => {
+                console.log("up count " + JSON.stringify(res.data))
+                if (res.data.code === 200) {
+                    let data = res.data.data;
+                    this.rtuDataUpCountOption.series[0].data[2].value = data.rainRtuCount;
+                    this.rtuDataUpCountOption.series[0].data[1].value = data.riverRtuCount;
+                    this.rtuDataUpCountOption.series[0].data[0].value = data.groundRtuCount;
+                    let num = new Number(data.rainUpDataCount / data.rainRtuCount * 100);
+                    this.rtuDataUpCountOption.series[1].data[2].value = data.rainUpDataCount;
+                    this.rtuDataUpCountOption.series[1].data[2].percent = num.toFixed(2);
+                    num = new Number(data.riverUpDataCount / data.riverRtuCount * 100);
+                    this.rtuDataUpCountOption.series[1].data[1].value = data.riverUpDataCount;
+                    this.rtuDataUpCountOption.series[1].data[1].percent = num.toFixed(2);
+                    num = new Number(data.groundUpDataCount / data.groundRtuCount * 100);
+                    this.rtuDataUpCountOption.series[1].data[0].value = data.groundUpDataCount;
+                    this.rtuDataUpCountOption.series[1].data[0].percent = num.toFixed(2);
+                    this.rtuDataUpCountMap.setOption(this.rtuDataUpCountOption);
+                }
+            });
+
+            getCheckOrderCountData().then((res) => {
+                console.log("CheckOrder count " + JSON.stringify(res.data))
+                if (res.data.code === 200) {
+                    let data = res.data.data;
+                    this.checkOrderCountOption.series[0].data[3].value = data.orderCount;
+                    let num = new Number((data.orderCount - data.unconfirmOrderCount) / data.orderCount * 100);
+                    this.checkOrderCountOption.series[0].data[2].value = data.orderCount - data.unconfirmOrderCount;
+                    this.checkOrderCountOption.series[0].data[2].percent = num.toFixed(2);
+                    num = new Number(data.unconfirmOrderCount / data.orderCount * 100);
+                    this.checkOrderCountOption.series[0].data[1].value = data.unconfirmOrderCount;
+                    this.checkOrderCountOption.series[0].data[1].percent = num.toFixed(2);
+                    num = new Number(data.delayComfireOrders / data.orderCount * 100);
+                    this.checkOrderCountOption.series[0].data[0].value = data.delayComfireOrders;
+                    this.checkOrderCountOption.series[0].data[0].percent = num.toFixed(2);
+                    this.checkOrderMap.setOption(this.checkOrderCountOption);
+                }
+            });
+
+            getInspectionReportCountData().then((res) => {
+                console.log("InspectionReport count " + JSON.stringify(res.data))
+                if (res.data.code === 200) {
+                    let data = res.data.data;
+                    this.equipmentInspectionCountOption.series[0].data[3].value = data.equipmentInspectionCount;
+                    let num = new Number(data.equipmentInspectionBeforeRainReports / data.equipmentInspectionCount * 100);
+                    this.equipmentInspectionCountOption.series[0].data[2].value = data.equipmentInspectionBeforeRainReports;
+                    this.equipmentInspectionCountOption.series[0].data[2].percent = num.toFixed(2);
+                    num = new Number(data.equipmentInspectionRainFirstReports / data.equipmentInspectionCount * 100);
+                    this.equipmentInspectionCountOption.series[0].data[1].value = data.equipmentInspectionRainFirstReports;
+                    this.equipmentInspectionCountOption.series[0].data[1].percent = num.toFixed(2);
+                    num = new Number(data.equipmentInspectionRainSecondReports / data.equipmentInspectionCount * 100);
+                    this.equipmentInspectionCountOption.series[0].data[0].value = data.equipmentInspectionRainSecondReports;
+                    this.equipmentInspectionCountOption.series[0].data[0].percent = num.toFixed(2);
+                    this.equipmentInspectionChartMap.setOption(this.equipmentInspectionCountOption);
+                }
+            });
+
+            getWarnKindCountData().then((res) => {
+                console.log("warn kind count " + JSON.stringify(res.data))
+                if (res.data.code === 200) {
+                    let data = res.data.data;
+                    this.rtuWarnCountOption.series[0].data[8].value = data.warnRtus;
+
+                    let num = new Number(data.offlineRtus / data.warnRtus * 100);
+                    this.rtuWarnCountOption.series[0].data[7].value = data.offlineRtus;
+                    this.rtuWarnCountOption.series[0].data[7].percent = num.toFixed(2);
+
+                    num = new Number(data.clockWarn / data.warnRtus * 100);
+                    this.rtuWarnCountOption.series[0].data[6].value = data.clockWarn;
+                    this.rtuWarnCountOption.series[0].data[6].percent = num.toFixed(2);
+
+                    num = new Number(data.rainUpMissOut / data.warnRtus * 100);
+                    this.rtuWarnCountOption.series[0].data[5].value = data.rainUpMissOut;
+                    this.rtuWarnCountOption.series[0].data[5].percent = num.toFixed(2);
+
+                    num = new Number(data.riverUpMissOut / data.warnRtus * 100);
+                    this.rtuWarnCountOption.series[0].data[4].value = data.riverUpMissOut;
+                    this.rtuWarnCountOption.series[0].data[4].percent = num.toFixed(2);
+
+
+                    num = new Number(data.minUpDelay / data.warnRtus * 100);
+                    this.rtuWarnCountOption.series[0].data[3].value = data.minUpDelay;
+                    this.rtuWarnCountOption.series[0].data[3].percent = num.toFixed(2);
+
+
+                    num = new Number(data.rainHourUpDelay / data.warnRtus * 100);
+                    this.rtuWarnCountOption.series[0].data[2].value = data.rainHourUpDelay;
+                    this.rtuWarnCountOption.series[0].data[2].percent = num.toFixed(2);
+
+                    num = new Number(data.riverHourUpDelay / data.warnRtus * 100);
+                    this.rtuWarnCountOption.series[0].data[1].value = data.riverHourUpDelay;
+                    this.rtuWarnCountOption.series[0].data[1].percent = num.toFixed(2);
+
+                    num = new Number(data.outlierValue / data.warnRtus * 100);
+                    this.rtuWarnCountOption.series[0].data[0].value = data.outlierValue;
+                    this.rtuWarnCountOption.series[0].data[0].percent = num.toFixed(2);
+
+                    this.rtuWarnCountMap.setOption(this.rtuWarnCountOption);
+                }
+            });
+
+
+            todayOrderProcessList().then((res) => {
+                this.todayOrderList = [];
+                let showCount = 3;
+                if (this.adminPageStyle) {
+                    showCount = 1;
+                }
+                for (let i = 0; i < showCount && i < res.data.data.length; i++) {
+                    this.todayOrderList.push(res.data.data[i]);
+                }
+            });
+            todayInspectionReportList().then((res) => {
+                this.todayInspectionReportList = [];
+                let showCount = 3;
+                if (this.adminPageStyle) {
+                    showCount = 1;
+                }
+                for (let i = 0; i < showCount && i < res.data.data.length; i++) {
+                    this.todayInspectionReportList.push(res.data.data[i]);
+                }
+            });
+            getLastList(1).then((res) => {
+                this.noticeList = [];
+                this.noticeList = res.data.data;
+            });
+            getAppInfo().then((res) => {
+                console.log(JSON.stringify(res.data.data))
+                this.appinfo = res.data.data;
+            });
+        },
+        changeState(state) {
+            this.state = state;
+            if (state != 5) {
+                if (this.timer) clearInterval(this.timer);
+                this.timer = setInterval(() => {
+                    this.second++;
+                }, 1000);
+            } else {
+                if (this.timer) {
+                    clearInterval(this.timer);
+                }
+                this.second = 0;
+            }
+        },
+        confirm() {
+            // let arr = this.layout.map((e) => {
+            //   return {
+            //     x: e.x,
+            //     y: e.y,
+            //     width: e.w,
+            //     height: e.h,
+            //     isShow: e.isShow,
+            //     moduleName: e.i,
+            //     moduleCode: e.i,
+            //   };
+            // });
+            // let params = {
+            //   layoutId: "",
+            //   homeLayoutDetailEntityList: arr,
+            // };
+            // insertCustom(params).then((res) => {});
+            // this.cache = [...this.layout];
+            // this.editSw = false;
+        },
+
+        /**
+         * 建立websocket连接
+         */
+        // initWebsocket: function () {
+        //     console.log("WebSocket 准备建立连接");
+        //     const socket = new SockJS("/api/galaxy-yjjcpt/ws");
+        //     this.stompClient = Stomp.over(socket);
+        //     this.stompClient.connect({}, this.onConnected, this.onError);
+        // },
+
+        /**
+         * 连接成功: 订阅服务器的地址。为了浏览器可以接收到消息,必须先订阅服务器的地址
+         */
+        // onConnected: function () {
+        //     console.log("WebSocket 连接成功");
+
+        //     // 设置心跳发送接受频率(ms)默认为10000ms。 heart-beating是利用window.setInterval()去规律地发送heart-beats或者检查服务端的heart-beats。
+        //     this.stompClient.heartbeat.outgoing = 10000;
+        //     this.stompClient.heartbeat.incoming = 0;
+
+        //     // 订阅
+        //     this.stompClient.subscribe("/topic/event", this.onMessageReceived);
+        // },
+
+        /**
+         * 连接失败
+         */
+        // onError: function (error) {
+        //     console.log("WebSocket 连接失败", error);
+        // },
+
+        /**
+         * 接收消息
+         */
+        // onMessageReceived: function (res) {
+        //     console.log(res.body);
+
+        //     console.log("WebSocket 接收消息-----------------------------------");
+        // },
+
+        /**
+         * 发送消息
+         */
+        // sendMessage: function () {
+        //     const chatMessage = {
+        //         sender: "",
+        //         content: "",
+        //         type: "CHAT",
+        //     };
+        //     this.stompClient.send(
+        //         "/app/chat.sendMessage",
+        //         {},
+        //         JSON.stringify(chatMessage)
+        //     );
+        // },
+
+        /**
+         * 关闭websocket连接
+         */
+        // closeSocket: function () {
+        //     if (this.stompClient != null) {
+        //         // this.stompClient.disconnect();
+        //         this.stompClient.disconnect(() => {
+        //             console.log("连接关闭");
+        //         });
+        //     }
+        // },
+    },
+};
+</script>
+  
+<style>
+.box-card {
+    width: 100%;
+    height: 220px;
+    overflow-y: auto;
+}
+
+.box-high-card {
+    width: 100%;
+    height: 500px;
+    overflow-y: auto;
+}
+
+.box-small-card {
+    width: 100%;
+    height: 235px;
+    overflow-y: auto;
+}
+
+.box-card-news {
+    width: 100%;
+    height: 235px;
+    overflow-y: auto;
+}
+
+.box-card-apk {
+    width: 100%;
+    height: 235px;
+}
+
+.el-row {
+    margin-bottom: 20px;
+}
+
+.el-col {
+    border-radius: 4px;
+}
+
+.bg-purple-dark {
+    background: #99a9bf;
+}
+
+.bg-purple {
+    background: #d3dce6;
+}
+
+.bg-purple-light {
+    background: #e5e9f2;
+}
+
+.grid-content {
+    border-radius: 4px;
+    min-height: 36px;
+}
+
+.row-bg {
+    padding: 10px 0;
+    background-color: #f9fafc;
+}
+
+.list-item {
+    padding-top: 5px;
+    padding-left: 2px;
+    border-width: thin;
+    border-bottom-style: solid;
+    border-bottom-color: lightgray;
+}
+
+.notice-item {
+    padding-top: 5px;
+    padding-left: 2px;
+    border-width: thin;
+    border-bottom-style: solid;
+    border-bottom-color: lightgray;
+}
+
+.notice-time {
+    font-size: 0.8rem;
+    color: gray;
+}
+
+.notice-content {
+    font-size: 0.9rem;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+}
+</style>

+ 298 - 42
src/views/wel/index.vue

@@ -1,9 +1,9 @@
 <template>
     <div>
-        <el-row :gutter="20">
+        <el-row :gutter="10">
             <el-col :span="8">
                 <el-card shadow="always" style="height:280px">
-                    <div ref="rtuInfoChart" style="width: 100%;height: 280px;">
+                    <div ref="rtuInfoCountChart" style="width: 100%;height: 280px;">
                     </div>
                 </el-card>
             </el-col>
@@ -20,7 +20,7 @@
                 </el-card>
             </el-col>
         </el-row>
-        <el-row :gutter="20">
+        <el-row :gutter="10">
             <el-col :span="8">
                 <el-card class="box-card">
                     <div slot="header" class="clearfix">
@@ -164,6 +164,13 @@
             :close-on-click-modal="false" append-to-body>
             <inspectionreportdetail ref="inspectionreportdetail" :id="inspectionReportId"></inspectionreportdetail>
         </el-drawer>
+        <el-drawer :visible.sync="inspectionreportlistDig" v-if="inspectionreportlistDig" size="50%"
+            :close-on-click-modal="false" append-to-body>
+            <div slot="title" class="header-title">
+                <span class="name">{{ dialogTitle }}</span>
+            </div>
+            <inspectionreportlistVue ref="inspectionreportlist" :rainSeasonKind="rainSeasonKind"></inspectionreportlistVue>
+        </el-drawer>
     </div>
 </template>
 
@@ -182,6 +189,8 @@ import todaynoticelist from "../notice/todaynoticelist.vue";
 import warninglist from "../business/warning/warninglist.vue";
 import checkorderprocessdetail from "../business/order/checkorderprocessdetail.vue";
 import inspectionreportdetail from "../business/inspection/inspectionreportdetail.vue";
+import inspectionreportlistVue from "../business/inspection/inspectionreportlist.vue";
+
 export default {
     name: "home",
     components: {
@@ -192,7 +201,8 @@ export default {
         uncomfirecheckorderlist,
         comfiredelaycheckorderlist,
         checkorderprocessdetail,
-        inspectionreportdetail
+        inspectionreportdetail,
+        inspectionreportlistVue
     },
     data() {
         return {
@@ -204,6 +214,7 @@ export default {
             moreNoticeDig: false,
             checkorderprocessdetailDig: false,
             inspectionreportdetailDig: false,
+            inspectionreportlistDig: false,
             appinfo: {
                 apkUrl: '',
                 apkQrUrl: '',
@@ -218,6 +229,7 @@ export default {
             cache: [],
             editSw: false,
             dialog: false,
+            dialogTitle: '',
             id: "",
             guideForm: {},
             second: 0,
@@ -227,8 +239,24 @@ export default {
             todayInspectionReportList: [],
             noticeList: [],
             userInfo: getStore({ name: 'userInfo' }) || [],
+            rainSeasonKind: 0,
             rtuInfoMap: null,
             rtuInfoCountOption: {
+                tooltip: {
+                    trigger: 'axis',
+                    axisPointer: {
+                        type: 'shadow',
+                    },
+                    showContent: true,
+                    formatter: function (params) {
+                        console.log(JSON.stringify(params))
+                        if (params[0].data.showpercent) {
+                            return "点击柱状图可查看详情";
+                        } else {
+                            return "";
+                        }
+                    }
+                },
                 title: {
                     text: '测站统计信息',
                     textStyle: {
@@ -253,20 +281,74 @@ export default {
                 series: [
                     {
                         data: [
-                            0,
-                            0,
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(84, 112, 198,1.0)'
+                                },
+                                showpercent: false,
+                                percent: 0
+                            },
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(84, 112, 198,1.0)'
+                                },
+                                showpercent: false,
+                                percent: 0
+                            },
                         ],
                         type: 'bar',
                         barWidth: 20,
                         label: {
                             show: true,
-                            position: 'inside'
+                            position: 'insideLeft',
+                            rich: {
+                                a: {
+                                    color: 'red',
+                                    width: 20,
+                                    padding: [0, 0, 4, 0]
+                                },
+                                b: {
+                                    color: 'red',
+                                    width: 50,
+                                    height: 0,
+                                    borderWidth: 1,
+                                    borderColor: 'red'
+                                }
+                            },
+                            formatter(params) {
+                                if (params.data.showpercent) {
+                                    return '    ' + params.data.value + ' / ' + params.data.percent + '%';
+                                } else {
+                                    return '    ' + params.data.value;
+                                }
+
+                            }
                         },
                     }
                 ]
             },
             checkOrderMap: null,
             checkOrderCountOption: {
+                tooltip: {
+                    trigger: 'axis',
+                    axisPointer: {
+                        type: 'shadow',
+                    },
+                    showContent: true,
+                    formatter: function (params) {
+                        console.log(JSON.stringify(params))
+                        if (params[0].data.showpercent) {
+                            return "点击柱状图可查看详情";
+                        } else {
+                            return "";
+                        }
+                    },
+                    textStyle: {
+                        fontSize: 12
+                    }
+                },
                 title: {
                     text: '维修任务统计信息',
                     textStyle: {
@@ -291,21 +373,68 @@ export default {
                 series: [
                     {
                         data: [
-                            0,
-                            0,
-                            0
+                            {
+                                value: 20,
+                                itemStyle: {
+                                    color: 'rgba(238, 122, 122,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 30,
+                                itemStyle: {
+                                    color: 'rgba(250, 200, 88,1.0)'
+
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
+                            {
+                                value: 200,
+                                itemStyle: {
+
+                                    color: 'rgba(84, 112, 198,1.0)'
+                                },
+                                showpercent: true,
+                                percent: 0
+                            },
                         ],
                         type: 'bar',
                         barWidth: 20,
                         label: {
                             show: true,
-                            position: 'inside'
+                            position: 'insideLeft',
+                            formatter(params) {
+                                if (params.data.showpercent) {
+                                    return '    ' + params.data.value + ' / ' + params.data.percent + '%';
+                                } else {
+                                    return '    ' + params.data.value;
+                                }
+
+                            }
                         },
                     }
                 ]
             },
             equipmentInspectionChartMap: null,
             equipmentInspectionCountOption: {
+                tooltip: {
+                    trigger: 'axis',
+                    axisPointer: {
+                        type: 'shadow',
+                    },
+                    showContent: true,
+                    formatter: function (params) {
+                        // console.log(JSON.stringify(params))
+                        if (params[0].data.showpercent) {
+                            return "点击柱状图可查看详情";
+                        } else {
+                            return "";
+                        }
+                    }
+                },
                 title: {
                     text: '本年度设备巡检统计信息',
                     textStyle: {
@@ -330,16 +459,52 @@ export default {
                 series: [
                     {
                         data: [
-                            0,
-                            0,
-                            0,
-                            0,
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(84, 112, 198,1.0)'
+                                },
+                                showpercent: false,
+                                percent: 0
+                            },
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(84, 112, 198,1.0)'
+                                },
+                                showpercent: false,
+                                percent: 0
+                            },
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(84, 112, 198,1.0)'
+                                },
+                                showpercent: false,
+                                percent: 0
+                            },
+                            {
+                                value: 0,
+                                itemStyle: {
+                                    color: 'rgba(84, 112, 198,1.0)'
+                                },
+                                showpercent: false,
+                                percent: 0
+                            },
                         ],
                         type: 'bar',
                         barWidth: 20,
                         label: {
                             show: true,
-                            position: 'inside'
+                            position: 'insideLeft',
+                            formatter(params) {
+                                if (params.data.showpercent) {
+                                    return '    ' + params.data.value + ' / ' + params.data.percent + '%';
+                                } else {
+                                    return '    ' + params.data.value;
+                                }
+
+                            }
                         },
                     }
                 ]
@@ -358,6 +523,7 @@ export default {
     mounted() {
         console.log("mounted ++++++++++++++++++++");
         // this.initWebsocket();
+
         this.initRtuInfoCountMap();
         this.initCheckOrderCountMap();
         this.initEquipmentInspectionCountMap();
@@ -381,7 +547,8 @@ export default {
         },
         initRtuInfoCountMap() {
             var that = this;
-            let chart = this.$refs.rtuInfoChart;
+
+            let chart = this.$refs.rtuInfoCountChart;
             if (chart) {
                 this.rtuInfoMap = this.$echarts.init(chart);
                 this.rtuInfoMap.setOption(this.rtuInfoCountOption);
@@ -398,7 +565,7 @@ export default {
                 //  this.rtuInfoMap.clear();
                 this.rtuInfoMap.off('click');
                 this.rtuInfoMap.on('click', function (p) {
-                    console.log(p)
+                    //  console.log(p)
                     if (p.name === '设备异常') {
                         that.warninglistDig = true;
                         that.$nextTick(() => {
@@ -427,7 +594,7 @@ export default {
                 this.checkOrderMap.clear();
                 this.checkOrderMap.off('click');
                 this.checkOrderMap.on('click', function (p) {
-                    console.log(p)
+                    //  console.log(p)
                     if (p.name === '未确认任务') {
                         that.uncomfireCheckOrderDig = true;
                         that.$nextTick(() => {
@@ -456,9 +623,35 @@ export default {
                 //         this.$refs.equipmentInspectionCountChart.resize();
                 //     })
                 // })
-                this.equipmentInspectionChartMap.off('click')
+                var that = this;
+                this.equipmentInspectionChartMap.off('click');
                 this.equipmentInspectionChartMap.on('click', function (p) {
+                    console.log("equipmentInspectionChartMap**********************************")
+
                     console.log(p)
+
+                    if (p.name === '汛前已巡检') {
+                        that.rainSeasonKind = 1;
+                        that.inspectionreportlistDig = true;
+                        that.dialogTitle = '汛前已巡检信息';
+                        that.$nextTick(() => {
+                            that.$refs["inspectionreportlist"].init();
+                        });
+                    } else if (p.name === '汛中(一)已巡检') {
+                        that.rainSeasonKind = 2;
+                        that.inspectionreportlistDig = true;
+                        that.dialogTitle = '汛中(一)已巡检信息';
+                        that.$nextTick(() => {
+                            that.$refs["inspectionreportlist"].init();
+                        });
+                    } else if (p.name === '汛中(二)已巡检') {
+                        that.rainSeasonKind = 3;
+                        that.inspectionreportlistDig = true;
+                        that.dialogTitle = '汛中(二)已巡检信息';
+                        that.$nextTick(() => {
+                            that.$refs["inspectionreportlist"].init();
+                        });
+                    }
                 })
             }
         },
@@ -507,57 +700,120 @@ export default {
                 if (res.data.code === 200) {
                     this.realData = res.data.data;
                     let data = [];
+                    let num = new Number(this.realData.warningRtus / this.realData.rtus * 100);
                     let bar = {
                         value: this.realData.warningRtus,
                         itemStyle: {
                             color: 'rgba(255, 0, 0,1.0)'
-                        }
-                    }
-                    data.push(bar)
-                    data.push(this.realData.rtus)
-                    this.rtuInfoCountOption.series[0].data = data;
-                    this.rtuInfoMap.setOption(this.rtuInfoCountOption);
-                    data = [];
-                    bar = {
-                        value: this.realData.delayComfireOrders,
-                        itemStyle: {
-                            color: 'rgba(255, 0, 0,1.0)'
-                        }
+                        },
+                        showpercent: true,
+                        percent: num.toFixed(2),
                     }
                     data.push(bar)
                     bar = {
-                        value: this.realData.unconfirmOrderCount,
+                        value: this.realData.rtus,
                         itemStyle: {
-                            color: 'rgba(255, 0, 0,1.0)'
-                        }
+                            color: 'rgba(84, 112, 198,1.0)'
+                        },
+                        showpercent: false,
+                        percent: 0
                     }
                     data.push(bar)
-                    data.push(this.realData.orderCount)
-                    this.checkOrderCountOption.series[0].data = data;
+                    this.rtuInfoCountOption.series[0].data = data;
+                    this.rtuInfoMap.setOption(this.rtuInfoCountOption);
+                    num = new Number(this.realData.delayComfireOrders / this.realData.orderCount * 100);
+                    this.checkOrderCountOption.series[0].data[0].value = this.realData.delayComfireOrders;
+                    this.checkOrderCountOption.series[0].data[0].showpercent = true;
+                    this.checkOrderCountOption.series[0].data[0].percent = num.toFixed(2);
+
+                    num = new Number(this.realData.unconfirmOrderCount / this.realData.orderCount * 100);
+                    this.checkOrderCountOption.series[0].data[1].value = this.realData.unconfirmOrderCount;
+                    this.checkOrderCountOption.series[0].data[1].showpercent = true;
+                    this.checkOrderCountOption.series[0].data[1].percent = num.toFixed(2);
+
+                    // num = new Number((this.realData.orderCount - this.realData.unconfirmOrderCount) / this.realData.orderCount * 100);
+                    // this.checkOrderCountOption.series[0].data[2].value = this.realData.orderCount - this.realData.unconfirmOrderCount;
+                    // this.checkOrderCountOption.series[0].data[2].showpercent = true;
+                    // this.checkOrderCountOption.series[0].data[2].percent = num.toFixed(2);
+
+
+                    this.checkOrderCountOption.series[0].data[2].value = this.realData.orderCount;
+                    this.checkOrderCountOption.series[0].data[2].showpercent = false;
+                    this.checkOrderCountOption.series[0].data[2].percent = num.toFixed(2);
+
+                    // let data = [];
+                    // num = new Number(this.realData.delayComfireOrders / this.realData.orderCount * 100);
+                    // bar = {
+                    //     value: this.realData.delayComfireOrders,
+                    //     itemStyle: {
+                    //         color: 'rgba(255, 0, 0,1.0)'
+                    //     },
+                    //     showpercent: true,
+                    //     percent: num.toFixed(2),
+                    // }
+                    // data.push(bar)
+                    // let num = new Number(this.realData.unconfirmOrderCount / this.realData.orderCount * 100);
+                    // let bar = {
+                    //     value: this.realData.unconfirmOrderCount,
+                    //     itemStyle: {
+                    //         color: 'rgba(255, 0, 0,1.0)'
+                    //     },
+                    //     showpercent: true,
+                    //     percent: num.toFixed(2),
+                    // }
+                    // data.push(bar)
+                    // bar = {
+                    //     value: this.realData.orderCount,
+                    //     itemStyle: {
+                    //         color: 'rgba(84, 112, 198,1.0)'
+                    //     },
+                    //     showpercent: false,
+                    //     percent: 0
+                    // }
+                    // data.push(bar)
+                    // this.checkOrderCountOption.series[0].data = data;
                     this.checkOrderMap.setOption(this.checkOrderCountOption);
                     data = [];
+                    num = new Number(this.realData.equipmentInspectionRainSecondReports / this.realData.equipmentInspectionCount * 100);
                     bar = {
                         value: this.realData.equipmentInspectionRainSecondReports,
                         itemStyle: {
                             color: 'rgba(0, 133, 133,1.0)'
-                        }
+                        },
+                        showpercent: true,
+                        percent: num.toFixed(2),
                     }
                     data.push(bar)
+                    num = new Number(this.realData.equipmentInspectionRainFirstReports / this.realData.equipmentInspectionCount * 100);
                     bar = {
                         value: this.realData.equipmentInspectionRainFirstReports,
                         itemStyle: {
                             color: 'rgba(0, 133, 133,1.0)'
-                        }
+                        },
+                        showpercent: true,
+                        percent: num.toFixed(2),
                     }
                     data.push(bar)
+                    num = new Number(this.realData.equipmentInspectionBeforeRainReports / this.realData.equipmentInspectionCount * 100);
                     bar = {
                         value: this.realData.equipmentInspectionBeforeRainReports,
                         itemStyle: {
                             color: 'rgba(0, 133, 133,1.0)'
-                        }
+                        },
+                        showpercent: true,
+                        percent: num.toFixed(2),
+                    }
+                    data.push(bar)
+                    bar = {
+                        value: this.realData.equipmentInspectionCount,
+                        itemStyle: {
+                            color: 'rgba(84, 112, 198,1.0)'
+                        },
+                        showpercent: false,
+                        percent: 0,
                     }
                     data.push(bar)
-                    data.push(this.realData.equipmentInspectionCount)
+                    this.equipmentInspectionCountOption.series[0].label.position = 'insideLeft';
                     this.equipmentInspectionCountOption.series[0].data = data;
                     this.equipmentInspectionChartMap.setOption(this.equipmentInspectionCountOption);
                 }
@@ -574,7 +830,7 @@ export default {
                     this.todayInspectionReportList.push(res.data.data[i]);
                 }
             });
-            getLastList(2).then((res) => {
+            getLastList(1).then((res) => {
                 this.noticeList = [];
                 this.noticeList = res.data.data;
             });

+ 2 - 0
vue.config.js

@@ -36,6 +36,7 @@ module.exports = {
                 //远程演示服务地址,可用于直接启动项目
                 //target: 'http://172.1.0.218:40004',
                 //target: 'http://111.204.228.227:20002',
+                //target: 'https://nmwx.dahengsi.com:20001',
 
                 ws: true,
                 pathRewrite: {
@@ -44,6 +45,7 @@ module.exports = {
             },
             '/oss/galaxy': {
                 target: 'http://111.204.228.227:20002',
+                //target: 'https://nmwx.dahengsi.com:20001',
             },
             '/file/download': {
                 target: 'http://172.9.0.165:80',