guoxiaohuan před 4 roky
rodič
revize
2204cfd7f4

+ 4 - 2
package.json

@@ -8,6 +8,7 @@
         "lint": "vue-cli-service lint"
     },
     "dependencies": {
+        "@mapbox/geojson-merge": "^1.1.1",
         "@saga-web/base": "2.1.22",
         "@saga-web/big": "1.0.67",
         "@saga-web/draw": "2.1.100",
@@ -15,11 +16,12 @@
         "@saga-web/graph": "2.1.102",
         "ant-design-vue": "^1.4.10",
         "axios": "^0.19.2",
-        "leaflet-contextmenu": "^1.4.0",
-        "meri-design": "^1.3.4",
         "core-js": "^3.4.4",
         "element-ui": "^2.13.2",
         "leaflet": "^1.6.0",
+        "leaflet-contextmenu": "^1.4.0",
+        "lodash": "^4.17.19",
+        "meri-design": "^1.2.8",
         "moment": "^2.24.0",
         "quill": "^1.3.7",
         "vue": "^2.6.10",

+ 3 - 56
src/App.vue

@@ -17,8 +17,7 @@ export default {
             canvasID: '',
             key: '23f30a832a862c58637a4aadbf50a566',
             appName: '万达可视化系统',
-            mapServerURL: `http://map.wanda.cn/editor`,
-            mapthemeUrl: `http://map.wanda.cn/editor/webtheme`
+            mapServerURL: `http://map.wanda.cn/editor`
         }
     },
     mounted() {
@@ -27,7 +26,7 @@ export default {
         // 页面加载完成后,移除session里的存储的信息
         window.addEventListener('load', this.load)
         // 请求该项目下的楼层数据
-        this.getFengMap()
+        // this.getFengMap();
     },
     computed: {
         ...mapGetters(['plazaId', 'fmapID', 'haveFengMap'])
@@ -39,61 +38,9 @@ export default {
             // const { userInfo, projectId, menuStatus,manualAutoMode } = this.$store.state;
             const state = this.$store.state
             sessionStorage.setItem('state', JSON.stringify(state))
-        },
-        load() {
-            sessionStorage.clear()
-        },
-        getFengMap() {
-            if (!this.fmapID) {
-                this.getfmapID().then(() => {
-                    this.getMap()
-                })
-                return
-            }
-            this.getMap()
-        },
-        getMap() {
-            if (!window.fengmapData) {
-                window.fengmapData = new SFengParser(
-                    `fengMap${this.id}`,
-                    `${this.mapServerURL}/fmap/${this.fmapID}`,
-                    this.key,
-                    this.appName,
-                    null,
-                    this.mapthemeUrl
-                )
-                window.fengmapData.loadMap(this.fmapID, () => {
-                    // 获取主题数据
-                    window.fengmapData.loadTheme(`${this.mapServerURL}/webtheme/${this.fmapID}/${this.fmapID}.theme`).then(res => {
-                        this.SETHAVEFENGMAP()
-                    })
-                })
-            }
         }
     }
 }
-// getMap() {
-//   if (!window.fengmapData) {
-//     window.fengmapData = new SFengParser(
-//       `fengMap${this.id}`,
-//       `${this.mapServerURL}/fmap/${this.fmapID}`,
-//       this.key,
-//       this.appName,
-//       null,
-//       this.mapthemeUrl
-//     );
-//     window.fengmapData.loadMap(this.fmapID, () => {
-//       // 获取主题数据
-//       window.fengmapData
-//         .loadTheme(
-//           `${this.mapServerURL}/webtheme/${this.fmapID}/${this.fmapID}.theme`
-//         )
-//         .then(res => {
-//           this.SETHAVEFENGMAP();
-//         });
-//     });
-//   }
-// }
 </script>
 <style lang="less">
 body,
@@ -293,4 +240,4 @@ body {
         line-height: 26px;
     }
 }
-</style>
+</style>

+ 6 - 0
src/api/coreDeviceReport.js

@@ -15,6 +15,12 @@ import httputils from '@/api/httputils'
 //     return httputils.getJson(`/data/v_glsms_systemcfg/querySmsxt`)
 // }
 /**
+ * 系统列表
+ */
+export function querySystemList() {
+  return httputils.getJson(`/data/v_glsms_systemcfg/querySmsxt`);
+}
+/**
  * 系统下的设备
  * @param { 接口地址 } url
  * @param { 接口参数 } getParams

+ 4 - 1
src/api/legendLibrary.js

@@ -72,7 +72,10 @@ export function graphElementSearch({ postParams }) {
 // }
 
 // 业下设备分类和位置分类树形结构
-export function queryDeviceAndPOsition({ postParams }) {
+
+export function queryDeviceAndPOsition({
+    postParams
+}) {
     return httputils.postJson(`/data/t_system_wzfl/query`, postParams)
 }
 

+ 36 - 34
src/router/index.js

@@ -3,7 +3,6 @@ import store from '@/store'
 import VueRouter from 'vue-router'
 import { query } from '@/utils/query'
 Vue.use(VueRouter)
-
 const routes = [
     // 登陆页面
     {
@@ -14,6 +13,10 @@ const routes = [
         path: '/404',
         component: () => import('../components/404'),
     },
+    {
+        path: '/group',
+        component: () => import('../views/statistics/index'),
+    },
     // home
     {
         path: '/home',
@@ -70,37 +73,36 @@ const router = new VueRouter({
 })
 //不需要token的路由
 const ignore = ['/404', '/legendLibrary', '/legendRules']
-router.beforeEach(async (to, from, next) => {
-    // if (!ignore.includes(to.path)) {
-    //     const token = query().token
-    //     const ssoToken = store.getters["ssoToken"]
-    //     if (ssoToken) {
-    //         store.commit("SETSSOTOKEN", ssoToken)
-    // await store.dispatch('getUserInfo', router)
-    await store.dispatch('getFloors')
-    await store.dispatch('getBrand')
-    //         next()
-    //     } else if (token) {
-    //         store.commit("SETSSOTOKEN", token)
-    //         await store.dispatch("getUserInfo", router)
-    //         next()
-    //     } else {
-    //         let lastRoute = {
-    //             path: to.path,
-    //             params: to.params,
-    //             query: to.query,
-    //         }
-    //         store.commit("SETLASTROUTER", lastRoute)
-    //         let ssoServer = "http://oauth.wanda-dev.cn"
-    //         let systemcode = "CAD156",
-    //             signal = new Date().getTime(),
-    //             version = "1.0.0"
-    //         window.location.href = `${ssoServer}/login?systemcode=${systemcode}&signal=${signal}&version=${version}`
-    //     }
-    // } else {
-    //     next()
-    //     return
-    // }
-    next()
-})
+// router.beforeEach(async (to, from, next) => {
+//     if (!ignore.includes(to.path)) {
+//         const token = query().token
+//         const ssoToken = store.getters["ssoToken"]
+//         if (ssoToken) {
+//             store.commit("SETSSOTOKEN", ssoToken)
+//             await store.dispatch("getUserInfo", router)
+//             await store.dispatch("getFloors")
+//             await store.dispatch("getBrand")
+//             next()
+//         } else if (token) {
+//             store.commit("SETSSOTOKEN", token)
+//             await store.dispatch("getUserInfo", router)
+//             next()
+//         } else {
+//             let lastRoute = {
+//                 path: to.path,
+//                 params: to.params,
+//                 query: to.query,
+//             }
+//             store.commit("SETLASTROUTER", lastRoute)
+//             let ssoServer = "http://oauth.wanda-dev.cn"
+//             let systemcode = "CAD156",
+//                 signal = new Date().getTime(),
+//                 version = "1.0.0"
+//             window.location.href = `${ssoServer}/login?systemcode=${systemcode}&signal=${signal}&version=${version}`
+//         }
+//     } else {
+//         next()
+//         return
+//     }
+// })
 export default router

+ 336 - 351
src/views/analysis/CoreDeviceReport.vue

@@ -1,171 +1,156 @@
 <!-- 核心设备报表 -->
 <template>
-    <div class='core-device-report'>
-        <div class='main-left'>
-            <Select
-                class='system-select'
-                width='217'
-                :isReadOnly='true'
-                tipPlace='top'
-                caption='系统名称:'
-                @change='changeCurSystem'
-                v-model='systemId'
-                :selectdata='systemList'
-                :placeholder='"请选择"'
-            />
-            <div class='system-content'>
-                <div
-                    v-for='(item) in systemContentData'
-                    :key='"key_" + item.id'
-                    class='item-content'
-                    :class='{"active": item.isActive}'
-                    @click='changeEquipment(item.id)'
-                >
-                    <div class='first-row'>
-                        <div>{{item.name}}</div>
-                        <div>{{item.isMaintenance?'维保中' : ''}}</div>
-                    </div>
-                    <div class='sec-row'>
-                        <div>
-                            {{item.num}}
-                            <span>台</span>
-                        </div>
-                        <span :class='{"abnormal": item.abnormal}'>{{item.statusNum !== 0?item.statusNum : ''}}</span>
-                    </div>
-                </div>
-            </div>
+  <div class="core-device-report">
+    <div class="main-left">
+      <Select 
+        class="system-select"
+        width="217"
+        :isReadOnly="true" 
+        tipPlace="top" 
+        caption="系统名称:"
+        @change="changeCurSystem" 
+        v-model="systemId" 
+        :selectdata="systemList"
+        :placeholder="'请选择'"
+      />
+      <div class="system-content">
+        <div v-for="(item) in systemContentData" :key="'key_' + item.id" class="item-content" :class="{'active': item.isActive}" @click="changeEquipment(item.id)">
+          <div class="first-row">
+            <div>{{item.name}}</div>
+            <div>{{item.isMaintenance?'维保中' : ''}}</div>
+          </div>
+          <div class="sec-row">
+            <div>{{item.num}}<span>台</span></div>
+            <span :class="{'abnormal': item.abnormal}">{{item.statusNum !== 0?item.statusNum : ''}}</span>
+          </div>
         </div>
-        <div class='main-right'>
-            <div class='search-container'>
-                <Input iconType='search' v-model='searchKey' placeholder='搜索' width='192' />
-            </div>
-            <el-table :data='tableData' style='width: 100%;margin-bottom: 63px;' @row-click='showEquipmentStatus'>
-                <el-table-column label='序号' type='index' :index='indexMethod'></el-table-column>
-                <el-table-column prop='sbjc' label='设备简称'></el-table-column>
-                <el-table-column prop='assetnum' label='设备编号'></el-table-column>
-                <el-table-column prop='is_exception' label='状态'>
-                    <template slot-scope='scope'>
-                        <span
-                            style='display: inline-block;width: 6px;height:6px;border-radius: 3px;background: #0091FF;'
-                            :style='{"background": !scope.row.is_exception?"#0091FF" : "#F54E45"}'
-                        ></span>
-                        <span style='margin-left: 10px'>{{ !scope.row.is_exception?'正常' : '异常' }}</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop='photos_num' label='照片'>
-                    <template slot-scope='scope'>
-                        <!-- <span style="color: #025BAA">{{ scope.row.photos_num || scope.row.photos_num === 0?(scope.row.photos_num + '张') : '—' }}</span> -->
-                        <span style='color: #025BAA' @click='showPicturesDetail(scope.row)'>1张</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop='attachments_num' label='报告'>
-                    <template slot-scope='scope'>
-                        <span
-                            style='color: #025BAA'
-                        >{{ scope.row.attachments_num || scope.row.attachments_num === 0?(scope.row.attachments_num+ '张') : '—'}}</span>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <div class='page'>
-                <el-pagination
-                    background
-                    layout='prev, pager, next'
-                    :total='tatol'
-                    :current-page='curPage'
-                    :page-size='pageSize'
-                    @current-change='changeTablePage'
-                ></el-pagination>
-            </div>
-            <el-dialog title='交换机-照明系统' :visible.sync='dialogTableVisible' width='1260px'>
-                <el-date-picker
-                    style='margin-bottom: 12px;'
-                    v-model='dialogTime'
-                    type='daterange'
-                    range-separator='至'
-                    @change='changeTime'
-                    start-placeholder='开始日期'
-                    end-placeholder='结束日期'
-                ></el-date-picker>
-                <el-table :data='historyTableData' style='margin-bottom: 55px;' max-height='500'>
-                    <el-table-column width='200' property='finishDate' label='日期'></el-table-column>
-                    <el-table-column width='100' property='typeName' label='事项类型'></el-table-column>
-                    <el-table-column property='taskName' label='事项名称'></el-table-column>
-                    <el-table-column width='100' property='photosNum' label='照片'>
-                        <template slot-scope='scope'>
-                            <!-- <span style="color: #025BAA">{{ scope.row.photosNum || scope.row.photosNum === 0?(scope.row.photosNum + '张') : '—' }}</span> -->
-                            <span style='color: #025BAA' @click='showPicturesDetail(scope.row)'>1张</span>
-                        </template>
-                    </el-table-column>
-                    <el-table-column width='100' property='attachmentsNum' label='报告'>
-                        <template slot-scope='scope'>
-                            <span
-                                style='color: #025BAA'
-                            >{{ scope.row.attachmentsNum || scope.row.attachmentsNum === 0?(scope.row.attachmentsNum+ '张') : '—'}}</span>
-                        </template>
-                    </el-table-column>
-                </el-table>
-                <div class='page'>
-                    <el-pagination
-                        background
-                        layout='prev, pager, next'
-                        :current-page='hisCurPage'
-                        :page-size='hisPageSize'
-                        :total='hisTotal'
-                        @current-change='changeHisTablePage'
-                    ></el-pagination>
-                </div>
-            </el-dialog>
-            <el-dialog :title='detailTitle' :visible.sync='showDetail' width='1260px'>
-                <div class='detail-container'>
-                    <div class='pictures-menu'></div>
-                </div>
-            </el-dialog>
+      </div>
+    </div>
+    <div class="main-right">
+      <div class="search-container">
+        <Input iconType="search" v-model="searchKey" placeholder="搜索" width="192"/>
+      </div>
+      <el-table :data="tableData" style="width: 100%;margin-bottom: 63px;" @row-click="showEquipmentStatus">
+        <el-table-column label="序号" type="index" :index="indexMethod"></el-table-column>
+        <el-table-column prop="sbjc" label="设备简称"></el-table-column>
+        <el-table-column prop="assetnum" label="设备编号"></el-table-column>
+        <el-table-column prop="is_exception" label="状态">
+          <template slot-scope="scope">
+            <span style="display: inline-block;width: 6px;height:6px;border-radius: 3px;background: #0091FF;" :style="{'background': !scope.row.is_exception?'#0091FF' : '#F54E45'}"></span>
+            <span style="margin-left: 10px">{{ !scope.row.is_exception?'正常' : '异常' }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="photos_num" label="照片">
+          <template slot-scope="scope">
+            <!-- <span style="color: #025BAA">{{ scope.row.photos_num || scope.row.photos_num === 0?(scope.row.photos_num + '张') : '—' }}</span> -->
+            <span style="color: #025BAA" @click="showPicturesDetail(scope.row)">1张</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="attachments_num" label="报告">
+          <template slot-scope="scope">
+            <span style="color: #025BAA">{{ scope.row.attachments_num || scope.row.attachments_num === 0?(scope.row.attachments_num+ '张') : '—'}}</span>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="page">
+        <el-pagination
+          background
+          layout="prev, pager, next"
+          :total="tatol"
+          :current-page="curPage"
+          :page-size="pageSize"
+          @current-change="changeTablePage">
+        </el-pagination>
+      </div>
+      <el-dialog title="交换机-照明系统" :visible.sync="dialogTableVisible" width="1260px">
+        <el-date-picker
+          style="margin-bottom: 12px;"
+          v-model="dialogTime"
+          type="daterange"
+          range-separator="至"
+          @change="changeTime"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期">
+        </el-date-picker>
+        <el-table :data="historyTableData" style="margin-bottom: 55px;" max-height="500">
+          <el-table-column width="200" property="finishDate" label="日期"></el-table-column>
+          <el-table-column width="100" property="typeName" label="事项类型"></el-table-column>
+          <el-table-column property="taskName" label="事项名称"></el-table-column>
+          <el-table-column width="100" property="photosNum" label="照片">
+            <template slot-scope="scope">
+              <!-- <span style="color: #025BAA">{{ scope.row.photosNum || scope.row.photosNum === 0?(scope.row.photosNum + '张') : '—' }}</span> -->
+              <span style="color: #025BAA" @click="showPicturesDetail(scope.row)">1张</span>
+            </template>
+          </el-table-column>
+          <el-table-column width="100" property="attachmentsNum" label="报告">
+            <template slot-scope="scope">
+              <span style="color: #025BAA">{{ scope.row.attachmentsNum || scope.row.attachmentsNum === 0?(scope.row.attachmentsNum+ '张') : '—'}}</span>
+            </template>
+          </el-table-column>
+        </el-table>
+        <div class="page">
+          <el-pagination
+            background
+            layout="prev, pager, next"
+            :current-page="hisCurPage"
+            :page-size="hisPageSize"
+            :total="hisTotal"
+            @current-change="changeHisTablePage">
+          </el-pagination>
+        </div>
+      </el-dialog>
+      <el-dialog :title="detailTitle" :visible.sync="showDetail" width="1260px">
+        <div class="detail-container">
+          <div class="pictures-menu">
+
+          </div>
         </div>
+      </el-dialog>
     </div>
 </template>
 
 <script>
-import { Select, Input } from 'meri-design'
-import { querySystemList, queryEquipmentList, queryTableData, queryHistoryTableData, queryDetailData } from '../../api/coreDeviceReport'
-import _ from 'lodash'
-import moment from 'moment'
+import { Select, Input } from 'meri-design';
+import { querySystemList, queryEquipmentList, queryTableData, queryHistoryTableData, queryDetailData } from '../../api/coreDeviceReport';
+import _ from 'lodash';
+import moment from 'moment';
 export default {
-    data() {
-        return {
-            systemId: '', // 当前系统Id
-            systemList: [], // 系统
-            systemContentData: [
-                { id: 1, name: '高压配电柜', isMaintenance: true, num: 95, statusNum: 0, abnormal: false, isActive: true },
-                { id: 2, name: '变压器', isMaintenance: false, num: 256, statusNum: 12, abnormal: true, isActive: false },
-                { id: 3, name: '低压配电柜', isMaintenance: false, num: 354, statusNum: 0, abnormal: false, isActive: false },
-                { id: 4, name: '直流屏', isMaintenance: false, num: 175, statusNum: 0, abnormal: false, isActive: false },
-                { id: 5, name: '柴油发电机组', isMaintenance: false, num: 186, status: 0, abnormal: false, isActive: false }
-            ], // 系统下的各种组成
-            searchKey: '', // 搜索关键字
-            tableData: [
-                // {serialNumber: 1, equipmentName: 2, equipmentNumber: 3, status: '正常', photo: 5, report: 6},
-                // {serialNumber: 1, equipmentName: 2, equipmentNumber: 3, status: '异常', photo: 5, report: 6},
-                // {serialNumber: 1, equipmentName: 2, equipmentNumber: 3, status: '正常', photo: 5, report: 6},
-            ], // 表数据
-            curPage: 1, // 当前页码
-            pageSize: 10, // 每页条数
-            tatol: 0, // 总数据
-            dialogTableVisible: false, // 弹窗显示状态
+  data () {
+    return {
+      systemId: '', // 当前系统Id
+      systemList: [], // 系统
+      systemContentData: [
+        {id: 1, name: '高压配电柜', isMaintenance: true, num: 95, statusNum: 0, abnormal: false, isActive: true},
+        {id: 2, name: '变压器', isMaintenance: false, num: 256, statusNum: 12, abnormal: true, isActive: false},
+        {id: 3, name: '低压配电柜', isMaintenance: false, num: 354, statusNum: 0, abnormal: false, isActive: false},
+        {id: 4, name: '直流屏', isMaintenance: false, num: 175, statusNum: 0, abnormal: false, isActive: false},
+        {id: 5, name: '柴油发电机组', isMaintenance: false, num: 186, status: 0, abnormal: false, isActive: false},
+      ], // 系统下的各种组成
+      searchKey: '', // 搜索关键字
+      tableData: [
+        // {serialNumber: 1, equipmentName: 2, equipmentNumber: 3, status: '正常', photo: 5, report: 6},
+        // {serialNumber: 1, equipmentName: 2, equipmentNumber: 3, status: '异常', photo: 5, report: 6},
+        // {serialNumber: 1, equipmentName: 2, equipmentNumber: 3, status: '正常', photo: 5, report: 6},
+      ], // 表数据
+      curPage: 1, // 当前页码
+      pageSize: 10, // 每页条数
+      tatol: 0, // 总数据
+      dialogTableVisible: false, // 弹窗显示状态
 
-            // 核心设备实例
-            assetnum: null, // 设备台账编码
-            historyTableData: [], // 核心设备实例的所有历史事项信息
-            dialogTime: null, // 弹框内的时间
-            hisCurPage: 1, // 当前页码
-            hisPageSize: 8, // 当前页码
-            hisTotal: 0, // 总条数
-            startTime: null, // 开始时间
-            endTime: null, // 结束事件
+      // 核心设备实例
+      assetnum: null, // 设备台账编码
+      historyTableData: [], // 核心设备实例的所有历史事项信息
+      dialogTime: null, // 弹框内的时间
+      hisCurPage: 1, // 当前页码
+      hisPageSize: 8, // 当前页码
+      hisTotal: 0, // 总条数
+      startTime: null, // 开始时间
+      endTime: null, // 结束事件
 
-            showDetail: false, // 显示照片、报告详情
-            detailTitle: '图片预览' // 弹窗名称
-        }
-    },
+      showDetail: false, // 显示照片、报告详情
+      detailTitle: '图片预览', // 弹窗名称
+    }
+  },
 
     components: {
         Select,
@@ -174,193 +159,191 @@ export default {
 
     computed: {},
 
-    mounted() {
-        this.getSystemList()
-        this.getEquipmentOfSystem()
-        this.getTableData()
-    },
+  mounted() {
+    this.getSystemList();
+    this.getEquipmentOfSystem();
+    this.getTableData();
+  },
 
-    methods: {
-        /**
-         * 获取系统列表数据
-         */
-        getSystemList() {
-            querySystemList().then(res => {
-                if (res.result === 'success') {
-                    let data = res.data
-                    let newData = []
-                    _.forEach(data, item => {
-                        newData.push({
-                            id: item.code,
-                            name: item.name
-                        })
-                    })
-                    this.systemList = newData
-                }
-            })
-        },
-        /**
-         * 切换系统名称
-         */
-        changeCurSystem(val) {
-            console.log('val', val)
-        },
-        /**
-         * 获取系统下的设备
-         */
-        getEquipmentOfSystem() {
-            let param = {
-                plazaId: 1000423,
-                ccode: 1002347
-            }
-            if (this.systemId !== '') {
-                param.smsxt = this.systemId
-            }
-            queryEquipmentList('/data/home/querySystemCard', param).then(res => {
-                console.log('res', res)
-            })
-        },
-        /**
-         * 切换系统下的设备
-         */
-        changeEquipment(id) {
-            _.map(this.systemContentData, o => {
-                return (o.isActive = o.id === id)
+  methods: {
+    /**
+     * 获取系统列表数据
+     */
+    getSystemList() {
+      querySystemList().then((res) => {
+        if (res.result === 'success') {
+          let data = res.data;
+          let newData = [];
+          _.forEach(data, (item) => {
+            newData.push({
+              id: item.code,
+              name: item.name
             })
-        },
-        /**
-         * 获取表数据
-         */
-        getTableData() {
-            let query = {
-                category_code: 'gdc'
-            }
-            queryTableData(`/data/glsms_asset/query?plazaId=1000423&page=${this.curPage}&size=${this.pageSize}`, query).then(res => {
-                const { result, count, data } = res
-                if (result === 'success') {
-                    this.tatol = count
-                    this.tableData = data
-                }
-            })
-        },
-        /**
-         * 表第一列序号
-         */
-        indexMethod(index) {
-            return index + 1
-        },
-        /**
-         * 切换页码
-         */
-        changeTablePage(page) {
-            this.curPage = page
-            this.getTableData()
-        },
-        /**
-         * 显示设备实例的维保、专维等状态
-         */
-        showEquipmentStatus(row, column, e) {
-            setTimeout(() => {
-                if (this.showDetail) return
-                this.dialogTableVisible = true
-                this.assetnum = row.assetnum
-                this.initTimePicker()
-            }, 36)
-        },
-        /**
-         * 获取核心设备实例的所有历史事项信息
-         */
-        getEquipmentHistoryMsg() {
-            this.historyTableData = []
-            let param = {
-                page: this.hisCurPage,
-                size: this.hisPageSize,
-                // assetnum: this.assetnum,
-                assetnum: 8952,
-                // startDate: this.startTime,
-                startDate: 20180101000000,
-                // endDate: this.endTime
-                endDate: 20180201000000
-            }
-            queryHistoryTableData('/data/base/queryDateByAssetNum', param).then(res => {
-                const { result, data, count } = res
-                if (result === 'success') {
-                    this.historyTableData = data
-                    this.hisTotal = count
-                    _.forEach(this.historyTableData, item => {
-                        let name
-                        switch (item.type) {
-                            case '0':
-                                name = '专维'
-                                break
-                            case '1':
-                                name = '维保'
-                                break
-                            case '2':
-                                name = '第三方检测'
-                                break
-                        }
-                        item.typeName = name
-                    })
-                }
-            })
-        },
-        /**
-         * 初始化时间选择器
-         */
-        initTimePicker() {
-            let endTime = new Date(),
-                startTime = new Date(endTime.getTime() - 1000 * 60 * 60 * 24 * 30)
-            this.dialogTime = [startTime, endTime]
-            this.changeTime()
-        },
-        /**
-         * 切换时间
-         */
-        changeTime() {
-            this.hisCurPage = 1
-            if (this.dialogTime) {
-                this.startTime = moment.unix(new Date(this.dialogTime[0]).getTime() / 1000).format('YYYYMMDDHHmmss')
-                this.endTime = moment.unix(new Date(this.dialogTime[1]).getTime() / 1000).format('YYYYMMDDHHmmss')
-            } else {
-                this.initTimePicker()
-            }
-            this.getEquipmentHistoryMsg()
-        },
-        /**
-         * 切换设备台账下所有历史事项信息页码
-         */
-        changeHisTablePage(page) {
-            this.hisCurPage = page
-            this.getEquipmentHistoryMsg()
-        },
-        /**
-         * 显示图片详情
-         */
-        showPicturesDetail(val) {
-            console.log('val', val)
-            // if (!val.file_type || !val.file_type_id) {
-            //   return
-            // }
-            this.showDetail = true
-            this.detailTitle = '图片预览'
-            this.getDetailData(val)
-        },
-        /**
-         * 获取图片/报告详情
-         */
-        getDetailData(val) {
-            let param = {
-                file_type: 1, // val.file_type
-                file_type_id: 2467908, // val.file_type_id
-                type: this.detailTitle === '图片预览' ? 0 : 1
+          })
+          this.systemList = newData;
+        }
+      })
+    },
+    /**
+     * 切换系统名称
+     */
+    changeCurSystem(val) {
+      console.log('val', val)
+    },
+    /**
+     * 获取系统下的设备
+     */
+    getEquipmentOfSystem() {
+      let param = {
+        plazaId: 1000423,
+        ccode: 1002347,
+      }
+      if (this.systemId !== '') {
+        param.smsxt = this.systemId;
+      }
+      queryEquipmentList('/data/home/querySystemCard', param).then((res) => {
+        console.log('res', res)
+      })
+    },
+    /**
+     * 切换系统下的设备
+     */
+    changeEquipment(id) {
+      _.map(this.systemContentData, (o) => {return o.isActive = o.id === id})
+    },
+    /**
+     * 获取表数据
+     */
+    getTableData() {
+      let query = {
+        category_code: 'gdc'
+      }
+      queryTableData(`/data/glsms_asset/query?plazaId=1000423&page=${this.curPage}&size=${this.pageSize}`, query).then((res) => {
+        const { result, count, data } = res;
+        if (result === 'success') {
+          this.tatol = count;
+          this.tableData = data;
+        }
+      })
+    },
+    /**
+     * 表第一列序号
+     */
+    indexMethod(index) {
+      return index + 1;
+    },
+    /**
+     * 切换页码
+     */
+    changeTablePage(page) {
+      this.curPage = page;
+      this.getTableData();
+    },
+    /**
+     * 显示设备实例的维保、专维等状态
+     */
+    showEquipmentStatus(row, column, e) {
+      setTimeout(() => {
+        if (this.showDetail) return
+        this.dialogTableVisible = true;
+        this.assetnum = row.assetnum;
+        this.initTimePicker();
+      }, 36)
+    },
+    /**
+     * 获取核心设备实例的所有历史事项信息
+     */
+    getEquipmentHistoryMsg() {
+      this.historyTableData = [];
+      let param = {
+        page: this.hisCurPage,
+        size: this.hisPageSize,
+        // assetnum: this.assetnum,
+        assetnum: 8952,
+        // startDate: this.startTime,
+        startDate: 20180101000000,
+        // endDate: this.endTime
+        endDate: 20180201000000
+      }
+      queryHistoryTableData('/data/base/queryDateByAssetNum', param).then((res) => {
+        const { result, data, count } = res;
+        if (result === 'success') {
+          this.historyTableData = data;
+          this.hisTotal = count;
+          _.forEach(this.historyTableData, (item) => {
+            let name;
+            switch (item.type) {
+              case '0':
+                name = '专维'
+                break
+              case '1':
+                name = '维保专业'
+                break
+              case '2':
+                name = '第三方视图'
+                break
             }
-
-            queryDetailData('/data/base/queryFileDetails', param).then(res => {
-                console.log('res', res)
-            })
+            item.typeName = name;
+          })
         }
+      })
+    },
+    /**
+     * 初始化时间选择器
+     */
+    initTimePicker() {
+      let endTime = new Date(),
+          startTime = new Date(endTime.getTime() - 1000*60*60*24*30);
+      this.dialogTime = [startTime, endTime];
+      this.changeTime();
+    },
+    /**
+     * 切换时间
+     */
+    changeTime() {
+      this.hisCurPage = 1;
+      if (this.dialogTime) {
+        this.startTime = moment.unix(new Date(this.dialogTime[0]).getTime() / 1000).format('YYYYMMDDHHmmss');
+        this.endTime = moment.unix(new Date(this.dialogTime[1]).getTime() / 1000).format('YYYYMMDDHHmmss');
+      } else {
+        this.initTimePicker();
+      }
+      this.getEquipmentHistoryMsg();
+    },
+    /**
+     * 切换设备台账下所有历史事项信息页码
+     */
+    changeHisTablePage(page) {
+      this.hisCurPage = page;
+      this.getEquipmentHistoryMsg();
+    },
+    /**
+     * 显示图片详情
+     */
+    showPicturesDetail(val) {
+      console.log('val', val)
+      // if (!val.file_type || !val.file_type_id) {
+      //   return
+      // }
+      this.showDetail = true;
+      this.detailTitle = '图片预览';
+      this.getDetailData(val);
+    },
+    /**
+     * 获取图片/报告详情
+     */
+    getDetailData(val) {
+      let param = {
+        file_type: 1, // val.file_type
+        file_type_id: 2467908, // val.file_type_id
+        type: this.detailTitle === '图片预览'? 0 : 1
+      }
+
+      queryDetailData('/data/base/queryFileDetails', param).then((res) => {
+        console.log('res', res)
+      })
     }
+  }
 }
 </script>
 
@@ -464,17 +447,19 @@ export default {
             display: flex;
             justify-content: flex-end;
         }
-        .el-dialog {
-            min-height: 600px;
-        }
-        .detail-container {
-            display: flex;
-            min-height: 600px;
-        }
-        .pictures-menu {
-            margin-right: 21px;
-            width: 180px;
-        }
     }
-}
+    .el-dialog{
+      min-height: 600px;
+    }
+    .detail-container{
+      display: flex;
+      min-height: 600px
+    }
+    .pictures-menu{
+      margin-right: 21px;
+      width: 180px;
+    }
+
+  }
+
 </style>

+ 206 - 155
src/views/homepage/index.vue

@@ -1,46 +1,58 @@
 <template>
-    <main class="homepage">
-        <section class="homepage-cards-content">
-            <div class="cards-item" v-for="(item , index) in cardsList" :key="index" :style = itemStyle(item)>
+    <main class='homepage'>
+        <section class='homepage-cards-content'>
+            <div class='cards-item' v-for='(item , index) in cardsList' :key='index' :style='itemStyle(item)'>
                 <h4>{{item.smsxtname}}</h4>
-                <div class="equipment-list">
-                    <div @click="navToInnerPage(item, equip)" class="equipment-item" v-for="equip in item.assetTypeList" >
-                        <h5>{{equip.category_name}}</h5>
+                <div class='equipment-list' v-if='item.assetTypeList'>
+                    <div @click='navToInnerPage(item, equip)' class='equipment-item' v-for='equip in item.assetTypeList'>
+                        <div class='equip-name'>
+                            <h5>{{equip.category_name}}</h5>
+                            <div class='exception-number' v-if='equip.is_exception_num'>{{equip.is_exception_num}}</div>
+                        </div>
                         <section>
-                            <div class="equip-statis"><span class="equip-number">{{equip.asset_num}}</span><span class="equip-unit">台</span></div>
-                            <div class="expired-number" v-if="equip.is_exception_num">异常:{{equip.is_exception_num}}</div>
+                            <div class='equip-statis'>
+                                <span class='equip-number'>{{equip.asset_num}}</span>
+                                <span class='equip-unit'>台</span>
+                            </div>
+                            <div>
+                                <em v-if='false'>维保中</em>
+                            </div>
                         </section>
                     </div>
                 </div>
-                <div class="alert-list">
-                    <div class="alert-item"   v-for="(option , index) in  item.rptGlsmsStatisticsList" :key="index" >
-                        <img v-if="option.level"  :src="srcList[option.type][option.level]"> 
-                        <div  class="content">
-                            <p class="line">
-                                <span >{{option.type === 1 ? '维保': option.type === 0 ? '专维' :  '第三方视图' }}</span>
-                                <span><em :style="{color:item.level == 1? '#646C73': item.level == 2 ? '#E07A04 ' :'#C13830'}">{{option.unfinished}}</em>/<em>{{option.total}}</em></span>
+                <div v-else class='empty-content' style='border-top:none; height:8rem;line-height:8rem;'>暂无数据</div>
+                <div v-if='item.rptGlsmsStatisticsList && item.rptGlsmsStatisticsList.length' class='alert-list' @click='navToGanttPage(item, equip)'>
+                    <div class='alert-item' v-for='(option , index) in  item.rptGlsmsStatisticsList' :key='index'>
+                        <img v-if='option.total' :src='srcList[option.type][option.level]' />
+                        <div class='content' v-if='option.total'>
+                            <p class='line'>
+                                <span>{{option.type === 1 ? '维保': option.type === 0 ? '专维' : '第三方检测' }}</span>
+                                <span>
+                                    <em :style='{color:item.level == 1? "#646C73": item.level == 2 ? "#E07A04 " :"#C13830"}'>{{option.unfinished}}</em>/
+                                    <em>{{option.total}}</em>
+                                </span>
                             </p>
-                            <p class="desc">当月未完成/总任务</p>
+                            <p class='desc'>当月未完成/总任务</p>
                         </div>
                     </div>
                 </div>
-                <div v-if="!item.rptGlsmsStatisticsList || !item.rptGlsmsStatisticsList.length" class="empty-content">暂无数据</div>
+                <div v-else class='empty-content'>暂无数据</div>
             </div>
         </section>
-        <section class="homepage-nav-list">
+        <section class='homepage-nav-list'>
             <nav>
-                <div class="main-title">
+                <div class='main-title'>
                     <span>重点关注事项</span>
-                    <a @click="navToFocusItem">更多</a>
+                    <a @click='navToFocusItem'>更多</a>
                 </div>
-                <div class="table">
-                    <div class="row table-header">
+                <div class='table'>
+                    <div class='row table-header'>
                         <article>日期</article>
                         <article>政府部门</article>
                         <article>记录事项</article>
                     </div>
-                    <div class="table-body">
-                        <div class="row" v-for="(item , index) in itemsList" :key="index">
+                    <div class='table-body'>
+                        <div class='row' v-for='(item , index) in itemsList' :key='index'>
                             <article>{{item.createdate}}</article>
                             <article>{{item.department}}</article>
                             <article>{{item.recordsx}}</article>
@@ -49,21 +61,21 @@
                 </div>
             </nav>
             <nav>
-                <div class="main-title">
+                <div class='main-title'>
                     <span>说明书更新记录</span>
-                    <a @click="navToIntroduce">更多</a>
+                    <a @click='navToIntroduce'>更多</a>
                 </div>
-                <div class="table">
-                    <div class="row table-header">
+                <div class='table'>
+                    <div class='row table-header'>
                         <article>日期</article>
-                        <article>政府部门</article>
-                        <article>记录事项</article>
+                        <article>事项类型</article>
+                        <article>更新内容</article>
                     </div>
-                    <div class="table-body">
-                        <div class="row" v-for="(item , index) in changeList" :key="index">
+                    <div class='table-body'>
+                        <div class='row' v-for='(item , index) in changeList' :key='index'>
                             <article>{{item.changedate}}</article>
                             <article>{{item.type}}</article>
-                            <article>{{item.content}}</article>
+                            <article>{{item.content || '--'}}</article>
                         </div>
                     </div>
                 </div>
@@ -73,75 +85,94 @@
 </template>
 
 <script>
-import {getCardList, getQueryList, getChangeList} from "@/api/homePage"
+import { getCardList, getQueryList, getChangeList } from '@/api/homePage'
 import moment from 'moment'
 export default {
     data() {
         return {
-            cardsList:[],
-            itemsList:[],
-            changeList:[],
-            srcList:{
-                0:{ 
-                    1: require("../../assets/images/icons/edit_blue_b.png"),    //1.正常(蓝色) 2.警告(黄色) 3.严重(红色)
-                    2: require("../../assets/images/icons/edit_yellow_b.png"),
-                    3: require("../../assets/images/icons/edit_red_b.png")
+            cardsList: [],
+            itemsList: [],
+            changeList: [],
+            srcList: {
+                0: {
+                    1: require('../../assets/images/icons/edit_blue_b.png'), //1.正常(蓝色) 2.警告(黄色) 3.严重(红色)
+                    2: require('../../assets/images/icons/edit_yellow_b.png'),
+                    3: require('../../assets/images/icons/edit_red_b.png')
                 },
-                1:{
-                    1: require("../../assets/images/icons/fix_blue_b.png"),    
-                    2: require("../../assets/images/icons/fix_yellow_b.png"),
-                    3: require("../../assets/images/icons/fix_red_b.png")
+                1: {
+                    1: require('../../assets/images/icons/fix_blue_b.png'),
+                    2: require('../../assets/images/icons/fix_yellow_b.png'),
+                    3: require('../../assets/images/icons/fix_red_b.png')
                 },
-                2:{
-                    1: require("../../assets/images/icons/search_blue_b.png"),    
-                    2: require( "../../assets/images/icons/search_yellow_b.png"),
-                    3: require("../../assets/images/icons/search_red_b.png")
+                2: {
+                    1: require('../../assets/images/icons/search_blue_b.png'),
+                    2: require('../../assets/images/icons/search_yellow_b.png'),
+                    3: require('../../assets/images/icons/search_red_b.png')
                 }
             }
         }
     },
-    mounted () {
+    mounted() {
         this.testAjax()
         this.getItemsQuery()
         this.getInstructionList()
     },
-    methods:{
-        navToFocusItem () {
-            this.$router.push({path:""})
+    methods: {
+        /**
+         *  点击跳转进入综合事项管理页面
+         */
+        navToFocusItem() {
+            this.$router.push({ path: './调' })
         },
-        navToIntroduce () {
-            this.$router.push({path:""})
+        /**
+         *  点击跳转进入 分析|报表 说明书更新记录页面
+         */
+        navToIntroduce() {
+            this.$router.push({ path: './analysis', query: { homepageKey: 2 } })
         },
-        itemStyle (option) {
+        itemStyle(option) {
             let num = 0
-            option.assetTypeList.forEach(item=>{
-                num +=  item.is_exception_num
-            })
+            if (option.assetTypeList) {
+                option.assetTypeList.forEach(item => {
+                    if (typeof item.is_exception_num === 'number') {
+                        num += item.is_exception_num
+                    }
+                })
+            }
             if (option.rptGlsmsStatisticsList) {
                 option.rptGlsmsStatisticsList.forEach(option => {
-                    num +=  option.unfinished
+                    if (typeof option.unfinished === 'number') {
+                        num += option.unfinished
+                    }
                 })
             }
             if (num > 0) {
                 return {
-                    borderLeft:"3px solid #EF6B66"
+                    borderLeft: '3px solid #EF6B66'
                 }
             }
         },
-        navToInnerPage (item, equip) {
-            this.$router.push({path:"./analysis", query:{smsxt:item.smsxt, equipId: equip.id}})
+        navToInnerPage(item, equip) {
+            this.$router.push({ path: './analysis', query: { smsxt: item.smsxt, equipId: equip.id } })
+        },
+        /**
+         * 跳转到甘特图详情页
+         */
+        navToGanttPage(item, equip) {
+            this.$router.push({ path: './analysis', query: { smsxt: item.smsxt } })
         },
         //TODO plazaId目前是写死的 后期需要更换成用户对应的ID
-        testAjax () {
+        testAjax() {
             let params = {
                 getParams: {
-                    "plazaId":1000423,
+                    plazaId: 1000423
                 }
             }
             getCardList(params).then(res => {
                 if (res.result == 'success') {
                     let result = res.data
                     if (result && Array.isArray(result)) {
+                        result[0].is_exception_num = 12
                         this.cardsList = result
                     }
                 }
@@ -150,51 +181,51 @@ export default {
         /**
          * 获取说明书变更记录
          */
-        getInstructionList () {
+        getInstructionList() {
             let params = {
                 getParams: {
-                    "plazaId":1000423,
-                    "page":1,
-                    "size":10,
+                    plazaId: 1000423,
+                    page: 1,
+                    size: 10
                 }
             }
- 
+
             getChangeList(params).then(res => {
                 if (res.result == 'success') {
                     let result = res.data
-                    result.forEach(item=>{
+                    result.forEach(item => {
                         item.changedate = moment.unix(item.changedate / 1000).format('YYYY.MM.DD')
                         if (item.objtype === 0) {
-                            item.type = "专维"
-                        } else if( item.objtype === 1) {
-                            item.type = "维保"
-                        } else if( item.objtype === 2) {
-                            item.type = "第三方视图"
+                            item.type = '专维'
+                        } else if (item.objtype === 1) {
+                            item.type = '维保'
+                        } else if (item.objtype === 2) {
+                            item.type = '第三方检测'
                         } else {
-                            item.type = "综合事项"
+                            item.type = '重点关注'
                         }
                     })
-                   
+
                     if (result && Array.isArray(result)) {
                         this.changeList = result
                     }
                 }
             })
         },
-        getItemsQuery () {
+        getItemsQuery() {
             let params = {
                 getParams: {
                     // department=部门 //部门
-                    "startDate":"20200208000000", //开始时间  
-                    "endDate":"20200608000000", //结束时间  
-                    "plazaId":1000423, //广场id 必填
-                    "page":1,//页数
-                    "size":10,//条数
+                    startDate: '20200208000000', //开始时间
+                    endDate: '20200608000000', //结束时间
+                    plazaId: 1000423, //广场id 必填
+                    page: 1, //页数
+                    size: 10 //条数
                     // "orderBy":字段名,1;//排序,1正序,0,倒序
                     // keyword=关键字1:字段名11,字段名12;关键字2:字段名21,字段名22;//模糊查询参数
                 }
             }
-            getQueryList(params).then(res=>{
+            getQueryList(params).then(res => {
                 moment().format('YYYY.MM.DD HH:mm')
                 if (res.result == 'success') {
                     if (res.data && Array.isArray(res.data)) {
@@ -203,10 +234,9 @@ export default {
                         })
                         this.itemsList = res.data
                     }
-                    
                 }
             })
-        },
+        }
     }
 }
 </script>
@@ -219,157 +249,179 @@ export default {
     padding: 15px;
     background: rgba(242, 245, 247, 1);
     overflow: auto;
-    .homepage-cards-content{
+    .homepage-cards-content {
         display: flex;
         flex-wrap: wrap;
         justify-content: space-between;
-        align-content:flex-start;
+        align-content: flex-start;
         width: 70%;
-        .cards-item{
+        .cards-item {
             width: calc(50% - 5px);
             height: 24%;
-            padding:0.4rem;    
+            padding: 0.4rem;
             padding-bottom: 0;
             margin-bottom: 1rem;
             background: #fff;
             box-shadow: 0 2px 10px 0 rgba(31, 36, 41, 0.06);
             h4 {
-                margin-bottom: 0.8rem;
                 color: rgba(31, 36, 41, 1);
-                padding:1rem;
+                padding: 1rem;
                 font-size: 1.6rem;
                 font-weight: bold;
             }
-            .equipment-list{
+            .equipment-list {
                 display: flex;
                 padding-bottom: 2rem;
-                padding:1rem;
-                .equipment-item{
+                margin-bottom: 0.8rem;
+                padding: 1rem;
+                padding-top: 0;
+                .equipment-item {
                     width: 33.33%;
+                    padding: 0.6rem;
+                    box-sizing: border-box;
+                    border-radius: 4px;
                     cursor: pointer;
-                    h5{
-                        color: #1F2429;
-                        font-size: 1.4rem;
-                        // font-weight: bold;
-                        margin-bottom: 1.2rem;
+                    .equip-name {
+                        position: relative;
+                        display: inline-block;
+                        h5 {
+                            position: relative;
+                            color: #1f2429;
+                            font-size: 1.4rem;
+                            em {
+                                margin-left: 1rem;
+                                color: #e19e51;
+                                font-size: 1.2rem;
+                            }
+                        }
+                        .exception-number {
+                            position: absolute;
+                            right: -20px;
+                            top: -5px;
+                            height: 1.6rem;
+                            border-radius: 8rem;
+                            padding: 0.2rem 0.4rem;
+                            line-height: 1.2rem;
+                            text-align: center;
+                            font-size: 1.2rem;
+                            color: #f54e45;
+                            background: #ffe0df;
+                        }
                     }
-                    section{
+                    section {
                         display: flex;
                         justify-content: flex-start;
                         align-items: center;
-                        .equip-statis{
-                            .equip-number{
+                        .equip-statis {
+                            .equip-number {
                                 font-size: 1.8rem;
                                 font-weight: bold;
-                                color:rgba(31, 36, 41, 1)
+                                color: rgba(31, 36, 41, 1);
                             }
-                            .equip-unit{
+                            .equip-unit {
                                 color: #ccc;
                                 font-size: 1.2rem;
                             }
                         }
-                        .expired-number{
-                            width: 7.2rem;
-                            height: 2rem;
-                            margin-left: 3rem;
-                            text-align: center;
-                            line-height: 2rem;
-                            font-size: 1.2rem;
-                            color: #C13830;
-                            background: #FFE7E6;
-                        }
                     }
                 }
+                .equipment-item:hover {
+                    background: #f5f6f7;
+                }
             }
-            .alert-list{
+            .alert-list {
                 display: flex;
                 align-items: center;
                 justify-content: flex-start;
                 padding-top: 2rem;
-                border-top: 1px solid #F5F6F7;
+                border-top: 1px solid #f5f6f7;
                 border-radius: 4px;
                 cursor: pointer;
-                padding: 14px;
-                &:hover{
-                    background: #F5F6F7;
+                padding: 2.2rem 1.4rem;
+                &:hover {
+                    background: #f5f6f7;
                 }
-                .alert-item{
+                .alert-item {
                     display: flex;
                     width: 33.33%;
                     align-items: center;
-                    img{
+                    img {
                         width: 4rem;
                         height: 4rem;
                         margin-right: 1.4rem;
                     }
-                    .content{
-                        border-right: 1px solid #F5F6F7;
+                    .content {
+                        border-right: 1px solid #f5f6f7;
                         padding-right: 2rem;
-                        .line{
+                        .line {
                             display: flex;
                             justify-content: space-between;
                             align-items: center;
                             line-height: 1;
-                            span:first-child{
+                            span:first-child {
                                 margin-right: 1rem;
                                 font-size: 1.2rem;
-                                color: #1F2429;
+                                color: #1f2429;
                                 font-weight: bold;
                             }
-                            em{
+                            em {
                                 font-weight: normal;
                             }
-                            em:first-child{
+                            em:first-child {
                                 font-size: 1.6rem;
                                 font-weight: bold;
                             }
                         }
-                        .desc{
+                        .desc {
                             padding-top: 0.6rem;
-                            color: #8D9399;
+                            color: #8d9399;
                             font-size: 1.2rem;
                             text-align: right;
                         }
                     }
                 }
             }
-            .empty-content{
+            .empty-content {
+                height: 9rem;
+                line-height: 9rem;
+                border-top: 1px solid #f5f6f7;
+
                 text-align: center;
-                color: #8D9399;
+                color: #8d9399;
             }
         }
     }
     .homepage-nav-list {
         width: calc(30% - 10px);
-        nav:first-child{
+        nav:first-child {
             height: 320px;
         }
-        nav:last-child{
+        nav:last-child {
             height: 320px;
         }
-        nav{
+        nav {
             padding: 14px 16px;
             margin-bottom: 10px;
             background: white;
             overflow: hidden;
             box-shadow: 0 2px 10px 0 rgba(31, 36, 41, 0.06);
-            .main-title{
+            .main-title {
                 display: flex;
                 justify-content: space-between;
                 margin-bottom: 12px;
-                span:first-child{
-                    color: #1F2429;
+                span:first-child {
+                    color: #1f2429;
                     font-weight: bold;
-                    font-size:1.4rem;
+                    font-size: 1.4rem;
                 }
             }
-            .table{
-                .row{
+            .table {
+                .row {
                     display: flex;
                     align-items: center;
                     padding: 6px;
-                    border-bottom: 1px solid #E4E6E7;
-                    article{
+                    border-bottom: 1px solid #e4e6e7;
+                    article {
                         margin-right: 10px;
                     }
                     article:nth-of-type(1) {
@@ -390,33 +442,32 @@ export default {
                         -webkit-box-orient: vertical;
                     }
                 }
-                .table-header{
+                .table-header {
                     height: 3.2rem;
                     padding: 6px;
                     line-height: 3.2rem;
-                    color:#646A73;
+                    color: #646a73;
                     font-weight: 600;
                     border-bottom: none;
-                    background: #F8F9FA;
+                    background: #f8f9fa;
                 }
-                .table-body{
+                .table-body {
                     overflow: auto;
                 }
             }
         }
-        nav:first-child{
+        nav:first-child {
             height: 40%;
-            .table-body{
+            .table-body {
                 height: 27vh;
             }
         }
-        nav:last-child{
+        nav:last-child {
             height: calc(60% - 12px);
-            .table-body{
+            .table-body {
                 height: 45vh;
             }
         }
     }
-
 }
 </style>

+ 3 - 0
src/views/legendRules/index.vue

@@ -350,6 +350,9 @@ export default {
     /deep/ .ant-tree li .ant-tree-node-content-wrapper:hover {
         background: transparent !important;
     }
+    /deep/ .p-inner-container {
+        overflow-x: hidden;
+    }
     .is-current {
         background: #e1f2ff !important;
         border-radius: 4px;

+ 2 - 2
src/views/statistics/index.vue

@@ -1177,8 +1177,8 @@ export default {
                                 background: #dce7f0;
                                 filter: saturate(0%);
                                 img{
-                                    width: 1.6rem;
-                                    height: 1.6rem;
+                                    width: 3.2rem;
+                                    height: 3.2rem;
                                 }
                             }
                             .selected {