mxx 3 سال پیش
والد
کامیت
37013c9072

BIN
public/img/1637204557176-s4AMbBA8.png


BIN
public/img/1637204768818-70JRjz0H.png


BIN
public/img/8b2c7255e9b19c71d68b33a08f20f74.png


+ 254 - 0
src/components/mapdrag/indexMap.vue

@@ -0,0 +1,254 @@
+<style lang='scss' scoped>
+  .mapContent {
+    position: relative;
+    margin-top: 10px;
+
+    .center-add {
+      position: absolute;
+      top: 0;
+      bottom: 0;
+      left: 0;
+      right: 0;
+      margin: auto;
+      z-index: 999;
+      width: 30px;
+      height: 30px;
+    }
+  }
+
+  #mapContainer {
+    width: 100%;
+    height: 506px;
+  }
+
+  #tip {
+    position: absolute;
+    top: -45px;
+    display: flex;
+  }
+
+  #tip .el-input {
+    // width: 179px;
+    margin-right: 0px;
+  }
+
+  #tip .el-select {
+    margin-right: 10px;
+  }
+
+  #tip .el-select {
+    width: 179px;
+  }
+
+  #tip .el-textarea {
+    width: 179px;
+
+    /deep/ .el-textarea__inner {
+      height: 40px;
+      resize: none;
+    }
+  }
+
+  .el-button--primary {
+    background-color: #5878e8;
+    border-color: #5878e8;
+  }
+
+  .el-button--default {
+    color: #5878e8;
+    border-color: #5473e8;
+  }
+
+  .address {
+    display: flex;
+    align-items: center;
+    margin-right: 20px;
+
+    // position:absolute;
+    // top: -35px;
+    .address-input {
+      display: inline-block;
+      width: 480px;
+    }
+  }
+</style>
+
+<template>
+  <div class="mapContent">
+    <div id="mapContainer"></div>
+  </div>
+</template>
+
+<script>
+  import {
+    regionData,
+    CodeToText,
+    TextToCode
+  } from 'element-china-area-data'
+  import image from '../../../public/img/ic_locationmarker.jpg'
+  export default {
+    data() {
+      return {
+        map: null,
+        provinces: [],
+        province: '',
+        districts: [],
+        district: '',
+        citys: [],
+        city: '',
+        polygons: [],
+        selectedOptions1: [],
+        areacode: '',
+        address: '',
+        objPoint: [],
+        markers: [],
+        zoomEnable: true,
+        dragEnable: true,
+        status: true,
+        center: '',
+      }
+    },
+    props: ['flagVisible', 'position', 'selectedOptions', 'isShowaddress', 'type'],
+    computed: {
+      showFlag() {
+        return this.flagVisible
+      },
+    },
+    watch: {},
+    async created() {
+      debugger
+      // 已载入高德地图API,则直接初始化地图
+      if (window.AMap && window.AMapUI && window.Loca) {
+        this.loadmap()
+        // 未载入高德地图API,则先载入API再初始化
+      } else {
+     await remoteLoad(`https://webapi.amap.com/maps?v=2.0&key=211dd6f989e719022aaf47ddb0659c47&plugin=AMap.Scale,AMap.ToolBar`)
+        await remoteLoad('https://webapi.amap.com/loca?v=2.0.0&key=211dd6f989e719022aaf47ddb0659c47')
+
+      }
+    },
+    mounted() {
+
+      this.loadmap()
+    },
+    methods: {
+remoteLoad(){debugger
+  let scriptElement1 = document.createElement('script')
+  scriptElement1.src =
+    "https://webapi.amap.com/maps?v=2.0&key=211dd6f989e719022aaf47ddb0659c47&plugin=AMap.Scale,AMap.ToolBar"
+  document.body.appendChild(scriptElement1)
+  let scriptElement2 = document.createElement('script')
+  scriptElement2.src = "https://webapi.amap.com/loca?v=2.0.0&key=211dd6f989e719022aaf47ddb0659c47"
+  document.body.appendChild(scriptElement2)
+   // window.Loca = Loca
+   console.log(Loca)
+  
+},
+      loadmap(val) {
+       setTimeout(() => {debugger
+         var map = new AMap.Map('mapContainer', {
+           zoom: 5.29,
+           // showLabel: false,
+           // viewMode: '3D',
+           pitch: 48,
+           center: [104.780269, 34.955403],
+           mapStyle: 'amap://styles/dark',
+         });
+
+         var loca = new Loca.Container({
+           map,
+         });
+
+         // 颜色配置
+         var headColors = ['#ECFFB1', '#146968', '#146968', '#146968', '#146968', '#146968', '#146968', '#146968'];
+         var trailColors = [
+           'rgba(255,178,6, 0.2)',
+           'rgba(255,178,6, 0.2)',
+           'rgba(20,105,104, 0.2)',
+           'rgba(20,105,104, 0.2)',
+           'rgba(20,105,104, 0.2)',
+           'rgba(20,105,104, 0.2)',
+           'rgba(20,105,104, 0.2)',
+           'rgba(20,105,104, 0.2)',
+         ];
+
+         // 进入北京方向的线
+         var inLineSource = new Loca.GeoJSONSource({
+           url: 'https://a.amap.com/Loca/static/loca-v2/demos/mock_data/data-line-in.json',
+         });
+
+         var inLinelayer = new Loca.PulseLineLayer({
+           // loca,
+           zIndex: 11,
+           opacity: 1,
+           visible: true,
+           zooms: [2, 22],
+         });
+
+         inLinelayer.setStyle({
+           altitude: 0,
+           lineWidth: (_, feature) => feature.properties.lineWidthRatio * 4 + 1,
+           headColor: (_, feature) => headColors[feature.properties.type],
+           trailColor: (_, feature) => trailColors[feature.properties.type],
+           interval: 0.5,
+           duration: 2000,
+         });
+         inLinelayer.setSource(inLineSource);
+         loca.add(inLinelayer);
+
+         // 出北京方向的线
+         var outLineSource = new Loca.GeoJSONSource({
+           url: 'https://a.amap.com/Loca/static/loca-v2/demos/mock_data/data-line-out.json',
+         });
+
+         var outLinelayer = new Loca.PulseLineLayer({
+           // loca,
+           zIndex: 11,
+           opacity: 1,
+           visible: true,
+           zooms: [2, 22],
+         });
+
+         outLinelayer.setStyle({
+           altitude: 0,
+           lineWidth: (_, feature) => feature.properties.lineWidthRatio * 1 + 3,
+           headColor: (_, feature) => headColors[feature.properties.type],
+           trailColor: (_, feature) => trailColors[feature.properties.type],
+           interval: 0.25,
+           duration: 5000,
+         });
+         outLinelayer.setSource(outLineSource);
+         loca.add(outLinelayer);
+
+         // 下方呼吸点层
+         var scatter = new Loca.ScatterLayer({
+           loca,
+           zIndex: 10,
+           opacity: 1,
+           visible: true,
+           zooms: [2, 22],
+         });
+
+         var scatterGeo = new Loca.GeoJSONSource({
+           url: 'https://a.amap.com/Loca/static/loca-v2/demos/mock_data/data-scatter.json',
+         });
+         scatter.setSource(scatterGeo);
+         scatter.setStyle({
+           unit: 'px',
+           size: (_, feature) => {
+             var size = feature.properties.lineWidthRatio * 2 + 30;
+             return [size, size];
+           },
+           borderWidth: 0,
+           texture: 'https://a.amap.com/Loca/static/loca-v2/demos/images/breath_yellow.png',
+           duration: 2000,
+           animate: true,
+         });
+         loca.add(scatter);
+
+         loca.animate.start();
+       }, 500)
+      }
+    },
+  }
+</script>

+ 8 - 6
src/components/mapdrag/warehouseReceiptMap.vue

@@ -75,9 +75,9 @@
         this.initMap()
         // 未载入高德地图API,则先载入API再初始化
       } else {
-        // await remoteLoad(`http://webapi.amap.com/maps?v=1.3&key=${MapKey}`)
-        // await remoteLoad('http://webapi.amap.com/ui/1.0/main.js')
-        // this.initMap()
+        await remoteLoad(`http://webapi.amap.com/maps?v=1.3&key=${MapKey}`)
+        await remoteLoad('http://webapi.amap.com/ui/1.0/main.js')
+        this.initMap()
       }
     },
     mounted() {},
@@ -121,7 +121,7 @@
 
             function toGetList(e) {
               // console.log(e.target.getExtData())
-              
+
               that.$parent.getList(e.target.getExtData().id, 1)
             }
             for (let i = 0; i < that.listData.length; i++) {
@@ -136,7 +136,9 @@
                 }),
               })
 
-              marker.setExtData({'id':that.listData[i].warehouseName})
+              marker.setExtData({
+                'id': that.listData[i].warehouseName
+              })
               let _cwList = '<div class="cw-wrap">'
               for (let k = 0; k < that.listData[i].tradeWarehouseReceiptAppls.length; k++) {
                 let _k = that.listData[i].tradeWarehouseReceiptAppls[k]
@@ -147,7 +149,7 @@
                   '</div>'
               }
               _cwList = _cwList + '</div>'
-              console.log('地图仓位数据',_cwList)
+              console.log('地图仓位数据', _cwList)
               marker.content = '<div style="display:flex;justify-content: center">' + that.listData[i]
                 .warehouseName + '</div>' + _cwList + '</div>'
               marker.on('mouseover', infoOpen)

+ 2 - 2
src/utils/remoteLoad.js

@@ -1,11 +1,11 @@
-export default function remoteLoad (url, hasCallback) {
+export default function remoteLoad (url, hasCallback) {debugger
   return createScript(url)
   /**
    * 创建script
    * @param url
    * @returns {Promise}
    */
-  function createScript (url) {
+  function createScript (url) {debugger
     let scriptElement = document.createElement('script')
     document.body.appendChild(scriptElement)
     let promise = new Promise((resolve, reject) => {

+ 1765 - 939
src/views/home/index.vue

@@ -1,1066 +1,1892 @@
 <!-- 首页模块 首页面 -->
 <template>
   <div class="home">
-    <div class="body-middle"
-         :class="{ 'body-middle-height': blockList[0].flag }">
+    <div class="body-middle" :class="{ 'body-middle-height': blockList[0].flag }">
       <div class="body-middle-left">
         <!-- 任务、消息、提醒、超期 -->
-        <Panel :data-list="panelList"
-               @click="gotoNewRw"></Panel>
+        <!-- <Panel :data-list="panelList" @click="gotoNewRw"></Panel> -->
+        <div class="header">
+          <div class="left">
+            <img src="../../../public/img/8b2c7255e9b19c71d68b33a08f20f74.png" alt="">
+
+          </div>
+          <div class="right">
+            <div class="top">
+              {{ nowDate }}
+            </div>
+            <div class="bottom">
+              {{ nowTime }}
+            </div>
+          </div>
+        </div>
         <div v-show="false">
-          <el-input v-model="param"/>
+          <el-input v-model="param" />
           <el-button @click="openPort()">openPort</el-button>
           <el-button @click="closePort()">closePort</el-button>
           <div>{{text}}</div>
         </div>
-       <img style='width:100%;margin-top:10px;' src="../../../public/img/tmt.gif" alt="">
+        <div class="content2">
+          <el-row class="content2-aside">
+            <h3 class="title">采购合同完成进度</h3>
+            <el-col :span="12" class="chart-card">
+              <div style="font-weight: bold;" class="">
+                <div ref="myEchart1" style="height: 288px;"></div>
+              </div>
+            </el-col>
+            <el-col :span="12" class="chart-card">
+              <div style="font-weight: bold;">
+                <div ref="myEchart2" style="height: 288px;"></div>
+              </div>
+            </el-col>
+            <el-col :span="12" class="chart-card">
+              <div style="font-weight: bold;">
+                <div ref="myEchart3" style="height: 288px;"></div>
+              </div>
+            </el-col>
+          </el-row>
+          <div class="content2-middle">
+            <el-row class="left">
+              <el-col :span="12">
+                <h3>在途信息统计</h3>
+                <div class="left-card">
+                  <div class="item">
+                    <p>在途车辆</p>
+                    <p><span class="number">76</span><span class="number-text">台</span></p>
+                  </div>
+                 <div class="item">
+                    <p>装货车辆</p>
+                    <p><span class="number" style="color:#ffa523;">86</span><span class="number-text">台</span></p>
+                  </div>
+                  <div class="item">
+                    <p>卸货车辆</p>
+                   <p><span class="number" style="color: #2483ff;">16</span><span class="number-text">台</span></p>
+                  </div>
+                </div>
+              </el-col>
+              <el-col :span="12">
+                <h3>粮食总储量</h3>
+                <div ref="myEchart7" style="height: 208px;"></div>
+              </el-col>
+            </el-row>
+            <el-row>
+              <h3 class="content2-map">库点流向分布</h3>
+              <div class="center-map">
+                 <map-drag></map-drag>
+              </div>
+            </el-row>
+            <el-row>
+              <h3>库存成本</h3>
+              <div class="content3">
+                <div class="left">
+                  <img src="../../../public/img/1637204557176-s4AMbBA8.png" alt="">
+                  <span>总库存量</span>
+                  <span class="content3-number blue">27631</span>
+                  <span style="margin-top: 10px;">吨</span>
+                </div>
+                <div class="right">
+                  <img src="../../../public/img/1637204768818-70JRjz0H.png" alt="">
+                  <span>库存价值</span>
+                  <span class="content3-number yellow">37745671</span>
+                  <span style="margin-top: 10px;">吨</span>
+                </div>
+              </div>
+            </el-row>
+          </div>
+          <el-row class="content2-aside">
+            <h3 class="left-title">采购合同完成进度</h3>
+            <el-col :span="12" class="chart-card">
+              <div style="font-weight: bold;">
+                <div ref="myEchart4" style="height: 288px;"></div>
+              </div>
+            </el-col>
+            <el-col :span="12" class="chart-card">
+              <div style="font-weight: bold;">
+                <div ref="myEchart5" style="height: 288px;"></div>
+              </div>
+            </el-col>
+            <el-col :span="12" class="chart-card">
+              <div style="font-weight: bold;">
+                <div ref="myEchart6" style="height: 288px;"></div>
+              </div>
+            </el-col>
+          </el-row>
+        </div>
+        <el-dialog :append-to-body="true" :show-close='false' :visible.sync="dialogVisible" width="30%"
+          :before-close="handleClose">
+          <span>这是一段信息</span>
+          <span slot="footer" class="dialog-footer">
+            <el-button @click="dialogVisible = false">取 消</el-button>
+            <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
+          </span>
+        </el-dialog>
+        <!-- <img style='width:100%;margin-top:10px;' src="../../../public/img/tmt.gif" alt=""> -->
       </div>
     </div>
     <div id="mapXY"></div>
     <!-- </ws-dialog> -->
     <!-- 第一次登陆的租户 -->
-    <successfulDialog v-if="successfulDialog"
-                      :phone="phone"
-                      :successfulDialog="successfulDialog"
-                      @close="successfulDialogClose">
+    <successfulDialog v-if="successfulDialog" :phone="phone" :successfulDialog="successfulDialog"
+      @close="successfulDialogClose">
     </successfulDialog>
     <!-- 试用租户 -->
-    <trialNotExpired v-if="trialNotExpired"
-                     :day="day"
-                     :phone="phone"
-                     :trialNotExpired="trialNotExpired"
-                     @close="trialNotExpiredClose">
+    <trialNotExpired v-if="trialNotExpired" :day="day" :phone="phone" :trialNotExpired="trialNotExpired"
+      @close="trialNotExpiredClose">
     </trialNotExpired>
   </div>
 </template>
 
 <script>
-// import serialport from 'serialport' 
-// 统计图start
-import maintenance from './components/maintenance'
-import shipCertificate from './components/shipCertificate'
-import sparePartsMaterial from './components/sparePartsMaterial'
-import procurement from './components/procurement'
-// 统计图end
-// 正式租户
-import successfulDialog from './components/successfulDialog'
-// 试用租户
-import trialNotExpired from './components/trialNotExpired'
-// 新 api
-import {  noticeNumber, queryCircularManagementReceiveList, getStaffHomeShowList } from '@/model/home/index'
-import {
-  getUserVesselList,
-  findHottestRouting
-} from '@/model/indexRx'
-import News from './components/News'
-import ShipMap from './components/ShipMap'
-import { getCnCity, getCnWea } from './city'
-import { getLanguage } from '@/lang'
-import Panel from './components/Panel'
-import { getChangeLoginFlag } from '@/model/indexRx'
-import { zipDown } from '@/utils/batchDown'
-import { EventBus } from 'base-core-lib'
-import { mapActions, mapGetters, mapState } from 'vuex';
-
-export default {
-  name: 'index',
-  components: {
-    News,
-    ShipMap,
-    Panel,
-    successfulDialog,
-    trialNotExpired,
-    //统计图start
-    maintenance,
-    shipCertificate,
-    sparePartsMaterial,
-    procurement
-    //统计图end
-  },
-
-  data () {
-    return {
-      showEchart: false,
-      phone: '', // 正式租户电话号码
-      day: '', //试用租户剩余天数
-      trialNotExpired: false, //试用租户 剩余天数
-      successfulDialog: false, //第一次登陆的弹窗
-      mapXY: undefined,
-      shipService: undefined,
-      blockList: [
-        {
-          name: this.$t('home.shortcutEntrance'),
-          flag: true
+  // import serialport from 'serialport'
+  // 统计图start
+  import maintenance from './components/maintenance'
+  import shipCertificate from './components/shipCertificate'
+  import sparePartsMaterial from './components/sparePartsMaterial'
+  import procurement from './components/procurement'
+
+  import mapDrag from '@/components/mapdrag/indexMap'
+  // 统计图end
+  // 正式租户
+  import successfulDialog from './components/successfulDialog'
+  // 试用租户
+  import trialNotExpired from './components/trialNotExpired'
+  // 新 api
+  import {
+    noticeNumber,
+    queryCircularManagementReceiveList,
+    getStaffHomeShowList
+  } from '@/model/home/index'
+  import {
+    getUserVesselList,
+    findHottestRouting
+  } from '@/model/indexRx'
+  import News from './components/News'
+  import ShipMap from './components/ShipMap'
+  import {
+    getCnCity,
+    getCnWea
+  } from './city'
+  import {
+    getLanguage
+  } from '@/lang'
+  import Panel from './components/Panel'
+  import {
+    getChangeLoginFlag
+  } from '@/model/indexRx'
+  import {
+    zipDown
+  } from '@/utils/batchDown'
+  import {
+    EventBus
+  } from 'base-core-lib'
+  import {
+    mapActions,
+    mapGetters,
+    mapState
+  } from 'vuex';
+  import axios from 'axios'
+  export default {
+    name: 'index',
+    components: {
+      mapDrag,
+      axios,
+      News,
+      ShipMap,
+      Panel,
+      successfulDialog,
+      trialNotExpired,
+      //统计图start
+      maintenance,
+      shipCertificate,
+      sparePartsMaterial,
+      procurement
+      //统计图end
+    },
+
+    data() {
+      return {
+         nowDate: null, //存放年月日变量
+              nowTime: null, //存放时分秒变量
+              timer: "", //定义一个定时器的变量
+              currentTime: new Date(), // 获取当前时间
+        timer: '',
+        dialogVisible: false,
+        showEchart: false,
+        phone: '', // 正式租户电话号码
+        day: '', //试用租户剩余天数
+        trialNotExpired: false, //试用租户 剩余天数
+        successfulDialog: false, //第一次登陆的弹窗
+        mapXY: undefined,
+        shipService: undefined,
+        blockList: [{
+            name: this.$t('home.shortcutEntrance'),
+            flag: true
+          },
+          {
+            name: this.$t('home.shipMap'),
+            flag: true
+          }
+        ],
+        newList: [],
+        noticeList: [],
+        routeList: [],
+        showBlockList: [],
+        shipList: [],
+        setFlag: false,
+
+        todoCount: '-',
+        msgCount: '-',
+        weather: undefined,
+        ships: [],
+        selectShip: undefined,
+        isFullScreen: false,
+        number: {
+          task: 0,
+          remind: 0,
+          overdue: 0,
+          news: 0
         },
-        {
-          name: this.$t('home.shipMap'),
-          flag: true
-        }
-      ],
-      newList: [],
-      noticeList: [],
-      routeList: [],
-      showBlockList: [],
-      shipList: [],
-      setFlag: false,
-
-      todoCount: '-',
-      msgCount: '-',
-      weather: undefined,
-      ships: [],
-      selectShip: undefined,
-      isFullScreen: false,
-      number: {
-        task: 0,
-        remind: 0,
-        overdue: 0,
-        news: 0
+        vesselBankFlag: localStorage.getItem('ws-pf_vesselBankFlag'),
+        shezhiVal: '',
+        text: '数据',
+        reader: null,
+        param: 9600
+      }
+    },
+    computed: {
+      ...mapState({
+        showVesslBankFlag: state => state.commonStore.showVesslBankFlag
+      }),
+      ...mapGetters(['userSetting']),
+      /** 计算属性计算属性节点 */
+      panelList() {
+        return [{
+            type: '0',
+            task: this.$t('homeIndex.task'),
+            url: require('@/assets/newhome/rw01.png'),
+            number: this.number.task,
+            background: require('@/assets/newhome/rw.png'),
+            remark: '任务'
+          },
+          {
+            type: 'message',
+            task: this.$t('homeIndex.message'),
+            url: require('@/assets/newhome/xx01.png'),
+            number: this.number.news,
+            background: require('@/assets/newhome/xx.png'),
+            remark: '消息'
+          },
+          {
+            type: '1',
+            task: this.$t('homeIndex.remind'),
+            url: require('@/assets/newhome/tx01.png'),
+            number: this.number.remind,
+            background: require('@/assets/newhome/tx.png'),
+            remark: '提醒'
+          },
+          {
+            type: '2',
+            task: this.$t('homeIndex.beyond'),
+            url: require('@/assets/newhome/cq01.png'),
+            number: this.number.overdue,
+            background: require('@/assets/newhome/cq.png'),
+            remark: '超期'
+          }
+        ]
       },
-      vesselBankFlag: localStorage.getItem('ws-pf_vesselBankFlag'),
-      shezhiVal: '',
-      text:'数据',
-      reader:null,
-      param:9600
-    }
-  },
-  computed: {
-    ...mapState({
-      showVesslBankFlag: state => state.commonStore.showVesslBankFlag
-    }),
-    ...mapGetters(['userSetting']),
-    /** 计算属性计算属性节点 */
-    panelList () {
-      return [
-        {
-          type: '0',
-          task: this.$t('homeIndex.task'),
-          url: require('@/assets/newhome/rw01.png'),
-          number: this.number.task,
-          background: require('@/assets/newhome/rw.png'),
-          remark: '任务'
-        },
-        {
-          type: 'message',
-          task: this.$t('homeIndex.message'),
-          url: require('@/assets/newhome/xx01.png'),
-          number: this.number.news,
-          background: require('@/assets/newhome/xx.png'),
-          remark: '消息'
-        },
-        {
-          type: '1',
-          task: this.$t('homeIndex.remind'),
-          url: require('@/assets/newhome/tx01.png'),
-          number: this.number.remind,
-          background: require('@/assets/newhome/tx.png'),
-          remark: '提醒'
-        },
-        {
-          type: '2',
-          task: this.$t('homeIndex.beyond'),
-          url: require('@/assets/newhome/cq01.png'),
-          number: this.number.overdue, 
-          background: require('@/assets/newhome/cq.png'),
-          remark: '超期'
+      optionSingleHeightTime() {
+        return {
+          openWatch: true,
+          limitMoveNum: -1, //启动无缝滚动最小数据量 this.dataList.length
+          direction: 2,
+          switchDelay: 1000
         }
-      ]
+      },
+      getLanguage() {
+        return this.$store.getters.language
+      },
+      isShowShipList() {
+        return this.userSetting['shipMap'][0].showFlag && this.vesselBankFlag !== 'V' && this.permissionIf(
+          'map.mapManagement.view')
+      },
+
     },
-    optionSingleHeightTime () {
-      return {
-        openWatch: true,
-        limitMoveNum: -1, //启动无缝滚动最小数据量 this.dataList.length
-        direction: 2,
-        switchDelay: 1000
+    async created() {
+      //获取快捷路口列表
+      this.getRouteList()
+      // this.checkUserInfoDialog()
+      {
+          this.timer = setInterval(this.getTime, 1000);
       }
     },
-    getLanguage () {
-      return this.$store.getters.language
-    },
-    isShowShipList () {
-      return this.userSetting['shipMap'][0].showFlag && this.vesselBankFlag !== 'V' && this.permissionIf('map.mapManagement.view')
+    beforeDestroy() {
+      clearInterval(this.timer);
+       if (this.timer) {
+              clearInterval(this.timer); // 在Vue实例销毁前,清除定时器
+          }
     },
+    async mounted() {
+      let that = this
+      // this.timer = setInterval(function(){
+      //      // that.getRouteList()
+      //            axios.get('https://live.eliangeyun.com/api/v1/device/channellist')
+      //              .then(resp =>{
+      // 图表重置 myChart.setOption
+      //                that.aa = resp.data.ChannelList
+      //                for(var i=0;i<that.dataList.length;i++){
+      //                  console.log('ssss',that.dataList[i].Status);
+      //                }
 
-  },
-  async created () {
-    //获取快捷路口列表
-    this.getRouteList()
-    // this.checkUserInfoDialog()
-  },
-  async mounted () {
-    //获取新闻列表
-    // this.getNewList()
-    noticeNumber().toPromise().then(res => {
-      const { task = 0, remind = 0, overdue = 0, news = 0 } = res
-      this.number.task = task
-      this.number.remind = remind
-      this.number.overdue = overdue
-      this.number.news = news
-    })
-    // if (this.vesselBankFlag !== 'V') {
-    //   EventBus.$emit('addShipScript', () => {
-    //     this.initShipMap()
-    //   })
-    // }
-    // setTimeout(() => {
-    //   this.showEchart = true
-    // }, 900)
-
-    // this.showBlockList = []
-    // if (this.vesselBankFlag === 'V') {
-    //   this.$refs.noticeList.style.width = 'calc(50% - 7px)'
-    //   this.$refs.newsList.style.width = 'calc(50% - 7px)'
-    // } else {
-    //   this.showBlockList = []
-    //   this.blockList[1].flag = false
-    //   this.$refs.noticeList.style.width = 'calc(50% - 7px)'
-    //   this.$refs.newsList.style.width = 'calc(50% - 7px)'
-    //   if (this.userSetting['shipMap'] && this.userSetting['shipMap'][0].showFlag) {
-    //     this.showBlockList.push('船舶动态')
-    //     this.blockList[1].flag = true
-    //   }
-    // }
-  },
-  watch: {
-    // getLanguage: function () {
-    //   this.getShipList()
-    // }
-  },
-  methods: {
-    ...mapActions('user', ['toSetShow', 'changeVesslBank']),
-    // 下载通知通函
-    downloadNotification (item) {
-      zipDown({
-        appendixIds: item.attachmentPath,
-        baseUrl: this.$store.getters.baseInfo.fileUrl,
-        zipName: item.theme
+      //              }).catch(err =>{
+      //                console.log(err);
+      //              });
+      //    }, 2000);
+      this.initCharts()
+      //获取新闻列表
+      // this.getNewList()
+      noticeNumber().toPromise().then(res => {
+        const {
+          task = 0, remind = 0, overdue = 0, news = 0
+        } = res
+        this.number.task = task
+        this.number.remind = remind
+        this.number.overdue = overdue
+        this.number.news = news
       })
+      // if (this.vesselBankFlag !== 'V') {
+      //   EventBus.$emit('addShipScript', () => {
+      //     this.initShipMap()
+      //   })
+      // }
+      // setTimeout(() => {
+      //   this.showEchart = true
+      // }, 900)
+
+      // this.showBlockList = []
+      // if (this.vesselBankFlag === 'V') {
+      //   this.$refs.noticeList.style.width = 'calc(50% - 7px)'
+      //   this.$refs.newsList.style.width = 'calc(50% - 7px)'
+      // } else {
+      //   this.showBlockList = []
+      //   this.blockList[1].flag = false
+      //   this.$refs.noticeList.style.width = 'calc(50% - 7px)'
+      //   this.$refs.newsList.style.width = 'calc(50% - 7px)'
+      //   if (this.userSetting['shipMap'] && this.userSetting['shipMap'][0].showFlag) {
+      //     this.showBlockList.push('船舶动态')
+      //     this.blockList[1].flag = true
+      //   }
+      // }
     },
-    /**
-     * 校验各种弹框问题
-     * @Desc 不是本人原意, 请不要骂我 谢谢. 请联系 "后台开发人员" 梳理逻辑
-     */
-    async checkUserInfoDialog () {
-      const {
-        statusFlag,
-        loginInfo: { loginFlag = 0 },
-        daysRemaining,
-        customerServiceStaffPhone
-      } = JSON.parse(localStorage.getItem('ws_login_getTenantInfoByUser'))
-      if (statusFlag * 1 === 3) {
-        // 判断后台返回的是空 还是 0  是空还是 0 的时候请求后台接口 不懂啥意思 为啥要这么弄
-        if (!loginFlag && !localStorage.getItem('isShowTryUserDialog') * 1) {
-          let newId = JSON.parse(localStorage.getItem('ws_login_accountId'))
+    watch: {
+      // getLanguage: function () {
+      //   this.getShipList()
+      // }
+    },
+    methods: {
+      ...mapActions('user', ['toSetShow', 'changeVesslBank']),
+      getTime(){
+              const date = new Date();
+              const year = date.getFullYear();
+              const month = date.getMonth() + 1;
+              const day = date.getDate();
+              const hour= date.getHours();
+              const minute = date.getMinutes();
+              const second = date.getSeconds();
+                  this.month=check(month);
+                  this.day=check(day);
+                  this.hour=check(hour);
+                  this.minute=check(minute);
+                  this.second=check(second);
+                  function check(i){
+                      const num = (i<10)?("0"+i) : i;
+                      return num;
+                  }
+                  this.nowDate = year + "-" + this.month + "-" + this.day;
+                  this.nowTime = this.hour + ":" + this.minute + ":" + this.second ;
+              },
+      initCharts() {
+        let app = this;
+        let myChart = app.$echarts.init(this.$refs.myEchart1);
+        let myChart2 = app.$echarts.init(this.$refs.myEchart2);
+        let myChart3 = app.$echarts.init(this.$refs.myEchart3);
+        let myChart4 = app.$echarts.init(this.$refs.myEchart4);
+        let myChart5 = app.$echarts.init(this.$refs.myEchart5);
+        let myChart6 = app.$echarts.init(this.$refs.myEchart6);
+        let myChart7 = app.$echarts.init(this.$refs.myEchart7);
+
+        // 圆环图各环节的颜色
+        var color = ['#75d1f4', '#ffa523'];
+
+        // 圆环图各环节的名称和值(系列中各数据项的名称和值)
+        var data = [{
+          name: '已完成量',
+          value: 320
+        }, {
+          name: '待完成量',
+          value: 586
+        }];
+        // 指定图表的配置项和数据
+        var option = {
+
+          //背景色
+          // backgroundColor: { // 背景颜色
+          //   type: 'linear',
+          //   x: 0,
+          //   y: 0,
+          //   x2: 0,
+          //   y2: 1,
+          //   colorStops: [{
+          //     offset: 0,
+          //     color: 'rgba(0,0,0,0.4)' // 0% 处的颜色
+          //   }, {
+          //     offset: 0.5,
+          //     color: 'rgba(0,0,0,0.4)' // 50% 处的颜色
+          //   }, {
+          //     offset: 1,
+          //     color: 'rgba(0,0,0,0.4)' // 100% 处的颜色
+          //   }],
+          //   globalCoord: false // 缺省为 false
+          // },
+
+          // 标题
+          title: [{
+            text: '合同总量',
+            top: '2%',
+            left: '3%',
+            textStyle: {
+              color: '#f4f4f4',
+              fontSize: 18,
+            }
+          }],
+
+          // 图例
+          legend: [{
+            selectedMode: true, // 图例选择的模式,控制是否可以通过点击图例改变系列的显示状态。默认开启图例选择,可以设成 false 关闭。
+            top: '10%',
+            left: 'center',
+            con: "circle",
+            itemWidth: 10, // 设置宽度
+            itemHeight: 10, // 设置高度
+            itemGap: 40, // 设置间距
+            textStyle: { // 图例的公用文本样式。
+              fontSize: 14,
+              color: '#fff'
+            },
+            data: ['已完成量', '待完成量']
+          }],
+
+          // 提示框
+          tooltip: {
+            show: true, // 是否显示提示框
+            formatter: '{b} </br> 销量{c}件 </br> 占比{d}%' // 提示框显示内容,此处{b}表示各数据项名称,此项配置为默认显示项,{c}表示数据项的值,默认不显示,({d}%)表示数据项项占比,默认不显示。
+          },
+
+          // graphic 是原生图形元素组件。可以支持的图形元素包括:image, text, circle, sector, ring, polygon, polyline, rect, line, bezierCurve, arc, group,
+          graphic: {
+            type: 'text', // [ default: image ]用 setOption 首次设定图形元素时必须指定。image, text, circle, sector, ring, polygon, polyline, rect, line, bezierCurve, arc, group,
+            top: 'center', // 描述怎么根据父元素进行定位。top 和 bottom 只有一个可以生效。如果指定 top 或 bottom,则 shape 里的 y、cy 等定位属性不再生效。『父元素』是指:如果是顶层元素,父元素是 echarts 图表容器。如果是 group 的子元素,父元素就是 group 元素。
+            left: 'center', // 同上
+            style: {
+              text: '合计\n\n123', // 文本块文字。可以使用 \n 来换行。[ default: '' ]
+              fill: '#fff', // 填充色。
+              fontSize: 16, // 字体大小
+              fontWeight: 'bold' // 文字字体的粗细,可选'normal','bold','bolder','lighter'
+            }
+          },
+
+          // 系列列表
+          series: [{
+            name: '', // 系列名称
+            type: 'pie', // 系列类型
+            center: ['50%', '50%'], // 饼图的中心(圆心)坐标,数组的第一项是横坐标,第二项是纵坐标。[ default: ['50%', '50%'] ]
+            radius: ['35%', '45%'], // 饼图的半径,数组的第一项是内半径,第二项是外半径。[ default: [0, '75%'] ]
+            hoverAnimation: true, // 是否开启 hover 在扇区上的放大动画效果。[ default: true ]
+            color: color, // 圆环图的颜色
+            label: { // 饼图图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等.
+              normal: {
+                show: true, // 是否显示标签[ default: false ]
+                position: 'outside', // 标签的位置。'outside'饼图扇区外侧,通过视觉引导线连到相应的扇区。'inside','inner' 同 'inside',饼图扇区内部。'center'在饼图中心位置。
+                formatter: '{b} : {c}件' // 标签内容
+              }
+            },
+            labelLine: { // 标签的视觉引导线样式,在 label 位置 设置为'outside'的时候会显示视觉引导线。
+              normal: {
+                show: true, // 是否显示视觉引导线。
+                length: 15, // 在 label 位置 设置为'outside'的时候会显示视觉引导线。
+                length2: 10, // 视觉引导项第二段的长度。
+                lineStyle: { // 视觉引导线的样式
+                  //color: '#000',
+                  //width: 1
+                }
+              }
+            },
+            data: data // 系列中的数据内容数组。
+          }]
+        };
+
+        // 柱状图
+        // 指定图表的配置项和数据
+        var zoption = {
+          // ----  标题 -----
+          // title: {
+          //   text: '',//主标题
+          //   textStyle: {
+          //     color: 'red'
+          //   },
+          //   subtext: '',//副标题
+          //   subtextStyle: {
+          //     color: 'blue'
+          //   },
+          //   padding: [0, 0, 10, 100]  // 位置
+          // },
+          // ---- legend ----
+          // legend: {
+          //   type: 'plain',  // 图列类型,默认为 'plain'
+          //   top: '1%',  // 图列相对容器的位置 top\bottom\left\right
+          //   selected: {
+          //     // '销量': true  // 图列选择,图形加载出来会显示选择的图列,默认为true
+          //   },
+          //   textStyle: {  // 图列内容样式
+          //     color: '#fff',  // 字体颜色
+          //     backgroundColor: 'black'  // 字体背景色
+          //   },
+          //   tooltip: {  // 图列提示框,默认不显示
+          //     show: true,
+          //     color: '#666'
+          //   },
+          //   data: [   // 图列内容
+          //     {
+          //       name: '', //上方标题内容
+          //       icon: 'circle',
+          //       textStyle: {
+          //         color: '#666',  // 单独设置某一个图列的颜色
+          //         backgroundColor: '#fff' // 单独设置某一个图列的字体背景色
+          //       }
+          //     }
+          //   ]
+          // },
+          grid: {
+            left: '0',
+            right: '0',
+            bottom: '0',
+            top: '30',
+            containLabel: true
+          },
+          // ---  提示框 ----
+          tooltip: {
+            show: true, // 是否显示提示框,默认为true
+            trigger: 'item', // 数据项图形触发
+            axisPointer: { // 指示样式
+              type: 'shadow',
+              axis: 'auto'
+            },
+            padding: 5,
+            textStyle: { // 提示框内容的样式
+              color: '#fff'
+            }
+          },
+          // ---- gird区域 ---
+          // gird: {
+          //   show: false,    // 是否显示直角坐标系网格
+          //   top: 10,  // 相对位置 top\bottom\left\right
+          //   containLabel: false, // gird 区域是否包含坐标轴的刻度标签
+          //   tooltip: {
+          //     show: true,
+          //     trigger: 'item',   // 触发类型
+          //     textStyle: {
+          //       color: '#666'
+          //     }
+          //   }
+          // },
+          //  ------  X轴 ------
+          xAxis: {
+            // show: true,  // 是否显示
+            // position: 'bottom',  // x轴的位置
+            // offset: 0, // x轴相对于默认位置的偏移
+            // type: 'category',   // 轴类型, 默认为 'category'
+            // name: '',    // 轴名称
+            // nameLocation: 'end',  // 轴名称相对位置
+            // nameTextStyle: {   // 坐标轴名称样式
+            //   color: '#666',
+            //   padding: [5, 0, 0, -5]
+            // },
+            // nameGap: 30, // 坐标轴名称与轴线之间的距离
+            // nameRotate: 0,  // 坐标轴名字旋转
+            // axisLine: {       // 坐标轴 轴线
+            //   show: true,  // 是否显示
+            //   // symbol: ['none', 'arrow'],  // 是否显示轴线箭头
+            //   // symbolSize: [8, 8], // 箭头大小
+            //   // symbolOffset: [0, 7],  // 箭头位置
+            //   // ------   线 ---------
+            //   lineStyle: {
+            //     color: '#666',
+            //     width: 1,
+            //     type: 'solid'
+            //   }
+            // },
+            // axisTick: {    // 坐标轴 刻度
+            //   show: true,  // 是否显示
+            //   inside: true,  // 是否朝内
+            //   length: 3,     // 长度
+            //   lineStyle: {   // 默认取轴线的样式
+            //     color: '#666',
+            //     width: 1,
+            //     type: 'solid'
+            //   }
+            // },
+            axisLabel: { // 坐标轴标签
+              show: true, // 是否显示
+              inside: false, // 是否朝内
+              rotate: 0, // 旋转角度
+              margin: 10, // 刻度标签与轴线之间的距离
+              color: '#666', // 默认取轴线的颜色
+              interval: 0,
+              rotate: 40
+            },
+            // splitLine: {    // gird区域中的分割线
+            //   show: false,  // 是否显示
+            //   lineStyle: {
+            //     // color: 'red',
+            //     // width: 1,
+            //     // type: 'solid'
+            //   }
+            // },
+            splitArea: { // 网格区域
+              show: false // 是否显示,默认为false
+            },
+            data: ['玉米', '玉米(潮粮)', '玉米(酒精)', '玉米(机收)', '混合麦', '白小麦', '大豆', '水稻', '高粱', '玉米淀粉', '豆粕']
+          },
+          //   ------   y轴  ----------
+          yAxis: {
+            // show: true,  // 是否显示
+            // position: 'left', // y轴位置
+            // offset: 0, // y轴相对于默认位置的偏移
+            // type: 'value',  // 轴类型,默认为 ‘category’
+            // // name: '销量',   // 轴名称
+            // nameLocation: 'end', // 轴名称相对位置value
+            // nameTextStyle: {    // 坐标轴名称样式
+            //   color: '#fff',
+            //   padding: [5, 0, 0, 5]  // 坐标轴名称相对位置
+            // },
+            // nameGap: 15, // 坐标轴名称与轴线之间的距离
+            // nameRotate: 270,  // 坐标轴名字旋转
+
+            axisLine: { // 坐标轴 轴线
+              show: false, // 是否显示
+              //  -----   箭头 -----
+              // symbol: ['none', 'arrow'],  // 是否显示轴线箭头
+              // symbolSize: [8, 8],  // 箭头大小
+              // symbolOffset: [0, 7], // 箭头位置
+
+              // ----- 线 -------
+              // lineStyle: {
+              //   color: '#666',
+              //   width: 1,
+              //   type: 'solid'
+              // }
+            },
+            // axisTick: {      // 坐标轴的刻度
+            //   show: true,    // 是否显示
+            //   inside: true,  // 是否朝内
+            //   length: 3,      // 长度
+            //   lineStyle: {
+            //     color: '#666',  // 默认取轴线的颜色
+            //     width: 1,
+            //     type: 'solid'
+            //   }
+            // },
+            axisLabel: { // 坐标轴的标签
+              show: true, // 是否显示
+              inside: false, // 是否朝内
+              rotate: 0, // 旋转角度
+              margin: 8, // 刻度标签与轴线之间的距离
+              color: '#666', // 默认轴线的颜色
+            },
+            splitLine: { // gird 区域中的分割线
+              show: true, // 是否显示
+              lineStyle: {
+                color: '#666',
+                width: 1,
+                type: 'dashed'
+              }
+            },
+            // splitArea: {     // 网格区域
+            //   show: false   // 是否显示,默认为false
+            // }
+          },
+          //  -------   内容数据 -------
+          series: [{
+            name: '储量', // 序列名称
+            type: 'bar', // 类型
+            legendHoverLink: true, // 是否启用图列 hover 时的联动高亮
+            // label: {   // 图形上的文本标签
+            //   show: false,
+            //   position: 'insideTop', // 相对位置
+            //   rotate: 0,  // 旋转角度
+            //   color: '#eee'
+            // },
+            itemStyle: { // 图形的形状
+              color: '#3779fd'
+              // barBorderRadius: [18, 18, 0 ,0]
+
+
+            },
+            barWidth: 20, // 柱形的宽度
+            barCategoryGap: '20%', // 柱形的间距
+            label: {
+              show: true,
+              position: 'top',
+              color: "#b0b1b3"
+            },
+            data: [3000, 4000, 4200, 4500, 6000, 5600, 4500, 5020, 4500, 5400, 4300]
+          }]
+        };
+        // 使用刚指定的配置项和数据显示图表
+        myChart.setOption(option)
+        myChart2.setOption(option)
+        myChart3.setOption(option)
+        myChart4.setOption(option)
+        myChart5.setOption(option)
+        myChart6.setOption(option)
+        myChart7.setOption(zoption)
+        myChart.off("click");
+        myChart.on("click", function(params) {
+          //  var a = params.dataIndex
+          console.log(params, "我被点击了");
+          app.dialogVisible = true
+        })
+      },
+      handleClose(done) {
+        this.$confirm('确认关闭?')
+          .then(_ => {
+            done();
+          })
+          .catch(_ => {});
+      },
+      // 下载通知通函
+      downloadNotification(item) {
+        zipDown({
+          appendixIds: item.attachmentPath,
+          baseUrl: this.$store.getters.baseInfo.fileUrl,
+          zipName: item.theme
+        })
+      },
+      /**
+       * 校验各种弹框问题
+       * @Desc 不是本人原意, 请不要骂我 谢谢. 请联系 "后台开发人员" 梳理逻辑
+       */
+      async checkUserInfoDialog() {
+        const {
+          statusFlag,
+          loginInfo: {
+            loginFlag = 0
+          },
+          daysRemaining,
+          customerServiceStaffPhone
+        } = JSON.parse(localStorage.getItem('ws_login_getTenantInfoByUser'))
+        if (statusFlag * 1 === 3) {
+          // 判断后台返回的是空 还是 0  是空还是 0 的时候请求后台接口 不懂啥意思 为啥要这么弄
+          if (!loginFlag && !localStorage.getItem('isShowTryUserDialog') * 1) {
+            let newId = JSON.parse(localStorage.getItem('ws_login_accountId'))
+            this.phone = customerServiceStaffPhone
+            this.successfulDialog = true
+            localStorage.setItem('isShowTryUserDialog', '1')
+            await getChangeLoginFlag({
+              accountId: newId
+            }).toPromise()
+          }
+        }
+        // 试用租户
+        const dayDialog = [30, 15, 7, 5, 3, 2, 1, 0]
+        if (statusFlag * 1 === 2 && dayDialog.indexOf(daysRemaining) > -1 && !localStorage.getItem(
+            'isShowTryUserDialog') * 1) {
+          this.day = daysRemaining
           this.phone = customerServiceStaffPhone
-          this.successfulDialog = true
+          this.trialNotExpired = true
           localStorage.setItem('isShowTryUserDialog', '1')
-          await getChangeLoginFlag({ accountId: newId }).toPromise()
         }
-      }
-      // 试用租户
-      const dayDialog = [30, 15, 7, 5, 3, 2, 1, 0]
-      if (statusFlag * 1 === 2 && dayDialog.indexOf(daysRemaining) > -1 && !localStorage.getItem('isShowTryUserDialog') * 1) {
-        this.day = daysRemaining
-        this.phone = customerServiceStaffPhone
-        this.trialNotExpired = true
-        localStorage.setItem('isShowTryUserDialog', '1')
-      }
-    },
-    trialNotExpiredClose () {
-      this.trialNotExpired = false
-    },
-    //第一次登陆的弹窗
-    successfulDialogClose () {
-      this.successfulDialog = false
-    },
-    initShipMap () {
-      var options = {
-        ak: '57df9eaa033b44809d4bdaf919af457e',
-        // 初始中心点坐标
-        centerPoint: [30.171, 121.27],
-        zoom: 3,
-        minZoom: 2,
-        maxZoom: 18,
-        defaultMapType: 'MT_SEA', //默认海图
-        // 公司版权信息( 支持html ),默认Elane Inc.
-        attribution: {
-          isShow: false,
-          emptyString:
-            '&copy;2019 <a class="shipxy_small"></a>&nbsp;<a>WinSea Inc.</a>'
-        },
-        measureCtrl: { isShow: false },
-        mousePostionCtrl: { isShow: false },
-        zoomControlElane: { isShow: true, position: 'bottomright' },
-        zoomviewControl: { isShow: false, position: 'bottomright' },
-        basemapsControl: { isShow: false, position: 'topright' },
-        scaleCtrl: { isShow: true, position: 'bottomleft' }
-      }
-      // 创建地图示例
-      // eslint-disable-next-line no-undef
-      this.mapXY = new ShipxyAPI.Map('mapXY', options)
-      // eslint-disable-next-line no-undef
-      this.shipService = ShipxyAPI.ShipService(this.mapXY, {
-        enableAreaShip: false,
-        enableFleetShip: false,
-        isAutoUpdateSrvtime: false,
-        // delayTime: 5000,
-        lableFont: ['500 12px Arial', '500 12px 宋体'], // 船舶名称,文字字体,默认值:["600 12px Arial", "500 12px Arial"]
-        lableTxtColor: ['#fff', '#fff'], // 船舶名称,文字颜色,默认值:["#000","#fff"]
-        lableLineColor: ['rgba(1, 30, 62, 0)', 'rgba(1, 30, 62, 0)'], //  边框颜色,默认值:["#000","#000"]
-        lableLinefillColor: ['rgba(0, 0, 0, 0.6)', 'rgba(0, 0, 0, 0.6)'], // 框内填充颜色,默认值:[null,null]
-        obliqueLineColor: ['#000', '#000'], // 船舶名称,斜线颜色,默认值:[null,null]
-        dShipColor: '#FF6437', // D+船颜色,默认:#ff6347
-        zoomLevel_data: 1,
-        zoomLevel_base: 1,
-        getAreaShipsCallBack: (call) => {
-          // console.info(call, 'getAreaShipsCallBack')
-        },
-        drawShipsEndCallBack: (call) => {
-          // console.info(call, 'drawShipsEndCallBack')
+      },
+      trialNotExpiredClose() {
+        this.trialNotExpired = false
+      },
+      //第一次登陆的弹窗
+      successfulDialogClose() {
+        this.successfulDialog = false
+      },
+      initShipMap() {
+        var options = {
+          ak: '57df9eaa033b44809d4bdaf919af457e',
+          // 初始中心点坐标
+          centerPoint: [30.171, 121.27],
+          zoom: 3,
+          minZoom: 2,
+          maxZoom: 18,
+          defaultMapType: 'MT_SEA', //默认海图
+          // 公司版权信息( 支持html ),默认Elane Inc.
+          attribution: {
+            isShow: false,
+            emptyString: '&copy;2019 <a class="shipxy_small"></a>&nbsp;<a>WinSea Inc.</a>'
+          },
+          measureCtrl: {
+            isShow: false
+          },
+          mousePostionCtrl: {
+            isShow: false
+          },
+          zoomControlElane: {
+            isShow: true,
+            position: 'bottomright'
+          },
+          zoomviewControl: {
+            isShow: false,
+            position: 'bottomright'
+          },
+          basemapsControl: {
+            isShow: false,
+            position: 'topright'
+          },
+          scaleCtrl: {
+            isShow: true,
+            position: 'bottomleft'
+          }
         }
-      })
-      this.shipService.setPointerEvents(true)
-      window.shipService = this.shipService
-      //获取船舶列表
-      this.getShipList()
-    },
-    toRoute (url) {
-      this.$router.push(url)
-    },
-    toSetShow () {
-      this.showBlockList = []
-      this.setFlag = true
-      // getStaffHomeShowList({
-      //   staffId: localStorage.getItem('ws-pf_userId')
-      // }).toPromise().then(data => {
-      //   for (let i = 0; i < data.length; i++) {
-      //     if (data[i].typeId === 'shipMap' && data[i].showFlag) {
-      //       this.showBlockList.push('船舶动态')
-      //     } else {
-      //       this.showBlockList = []
-      //     }
-      //   }
-      // })
-    },
+        // 创建地图示例
+        // eslint-disable-next-line no-undef
+        this.mapXY = new ShipxyAPI.Map('mapXY', options)
+        // eslint-disable-next-line no-undef
+        this.shipService = ShipxyAPI.ShipService(this.mapXY, {
+          enableAreaShip: false,
+          enableFleetShip: false,
+          isAutoUpdateSrvtime: false,
+          // delayTime: 5000,
+          lableFont: ['500 12px Arial', '500 12px 宋体'], // 船舶名称,文字字体,默认值:["600 12px Arial", "500 12px Arial"]
+          lableTxtColor: ['#fff', '#fff'], // 船舶名称,文字颜色,默认值:["#000","#fff"]
+          lableLineColor: ['rgba(1, 30, 62, 0)', 'rgba(1, 30, 62, 0)'], //  边框颜色,默认值:["#000","#000"]
+          lableLinefillColor: ['rgba(0, 0, 0, 0.6)', 'rgba(0, 0, 0, 0.6)'], // 框内填充颜色,默认值:[null,null]
+          obliqueLineColor: ['#000', '#000'], // 船舶名称,斜线颜色,默认值:[null,null]
+          dShipColor: '#FF6437', // D+船颜色,默认:#ff6347
+          zoomLevel_data: 1,
+          zoomLevel_base: 1,
+          getAreaShipsCallBack: (call) => {
+            // console.info(call, 'getAreaShipsCallBack')
+          },
+          drawShipsEndCallBack: (call) => {
+            // console.info(call, 'drawShipsEndCallBack')
+          }
+        })
+        this.shipService.setPointerEvents(true)
+        window.shipService = this.shipService
+        //获取船舶列表
+        this.getShipList()
+      },
+      toRoute(url) {
+        this.$router.push(url)
+      },
+      toSetShow() {
+        this.showBlockList = []
+        this.setFlag = true
+        // getStaffHomeShowList({
+        //   staffId: localStorage.getItem('ws-pf_userId')
+        // }).toPromise().then(data => {
+        //   for (let i = 0; i < data.length; i++) {
+        //     if (data[i].typeId === 'shipMap' && data[i].showFlag) {
+        //       this.showBlockList.push('船舶动态')
+        //     } else {
+        //       this.showBlockList = []
+        //     }
+        //   }
+        // })
+      },
 
-    toMap () {
-      this.$router.push('/map/trajectory_child')
-    },
-    goNews () {
-      this.$router.push('/news/noticeType')
-    },
-    goNewsDetail (id) {
-      this.$router.push('/news/noticeDetails?id=' + id)
-    },
-    goNotice (data) {
-      this.$router.push({
-        name: 'notificationItDetail',
-        query: { id: data.id }
-      })
-    },
-    goNoticeMore () {
-      this.$router.push('/notice/notificationCircularReleasedIt_child')
-    },
-    toHide (index) {
-      this.changeVesslBank([{
-        id: this.userSetting['shipMap'][0].id,
-        staffId: localStorage.getItem('ws-pf_userId'),
-        typeId: 'shipMap',
-        showFlag: false
-      }])
-    },
-    getRouteList () {
-      let data = {
-        accountId: localStorage.getItem('ws-pf_userId'),
-        pageSize: 30
-      }
-      findHottestRouting(data).toPromise().then(res => {
-        this.routeList = res
-        if (res.length == 0) {
-          this.blockList[0].flag = false
+      toMap() {
+        this.$router.push('/map/trajectory_child')
+      },
+      goNews() {
+        this.$router.push('/news/noticeType')
+      },
+      goNewsDetail(id) {
+        this.$router.push('/news/noticeDetails?id=' + id)
+      },
+      goNotice(data) {
+        this.$router.push({
+          name: 'notificationItDetail',
+          query: {
+            id: data.id
+          }
+        })
+      },
+      goNoticeMore() {
+        this.$router.push('/notice/notificationCircularReleasedIt_child')
+      },
+      toHide(index) {
+        this.changeVesslBank([{
+          id: this.userSetting['shipMap'][0].id,
+          staffId: localStorage.getItem('ws-pf_userId'),
+          typeId: 'shipMap',
+          showFlag: false
+        }])
+      },
+      getRouteList() {
+        let data = {
+          accountId: localStorage.getItem('ws-pf_userId'),
+          pageSize: 30
         }
-      })
-    },
-    //获取新闻
-    getNewList () {
-      let data = {
-        currentPage: 1,
-        pageSize: 2,
-        loginUserId: localStorage.getItem('ws-pf_userId'),
-        compId: localStorage.getItem('ws-pf_compId'),
-        releaseFlag: 0
-      }
-      // queryHomePage(data).toPromise().then(resNewList => {
-      //   for (let i of resNewList) {
-      //     i.content = '<p>' + i.content.replace(/<[^>]+>/g, '') + '</p>'
-      //   }
-      //   this.newList = resNewList
-      //   for (let i of this.newList) {
-      //     if (i.ossCoverUrl && i.ossCoverUrl.length > 0) {
-      //     } else {
-      //       this.$set(
-      //         i,
-      //         'imgUrl',
-      //         require('@/assets/images/page/home/noImg.png')
-      //       )
-      //     }
+        findHottestRouting(data).toPromise().then(res => {
+          this.routeList = res
+          if (res.length == 0) {
+            this.blockList[0].flag = false
+          }
+        })
+      },
+      //获取新闻
+      getNewList() {
+        let data = {
+          currentPage: 1,
+          pageSize: 2,
+          loginUserId: localStorage.getItem('ws-pf_userId'),
+          compId: localStorage.getItem('ws-pf_compId'),
+          releaseFlag: 0
+        }
+        // queryHomePage(data).toPromise().then(resNewList => {
+        //   for (let i of resNewList) {
+        //     i.content = '<p>' + i.content.replace(/<[^>]+>/g, '') + '</p>'
+        //   }
+        //   this.newList = resNewList
+        //   for (let i of this.newList) {
+        //     if (i.ossCoverUrl && i.ossCoverUrl.length > 0) {
+        //     } else {
+        //       this.$set(
+        //         i,
+        //         'imgUrl',
+        //         require('@/assets/images/page/home/noImg.png')
+        //       )
+        //     }
+        //   }
+        // })
+      },
+      //获取通知通函
+      // getNoticeList () {
+      //   let pagesize = Math.floor((this.$refs.noticeList.clientHeight - 44) / 80)
+      //   let data = {
+      //     currentPage: 1,
+      //     pageSize: pagesize || 3,
+      //     vesselDeptId:
+      //       localStorage.getItem('ws-pf_vesselBankFlag') === 'V'
+      //         ? localStorage.getItem('ws-pf_vesselId')
+      //         : localStorage.getItem('ws-pf_deptId'),
+      //     compId: localStorage.getItem('ws-pf_compId')
       //   }
-      // })
-    },
-    //获取通知通函
-    // getNoticeList () {
-    //   let pagesize = Math.floor((this.$refs.noticeList.clientHeight - 44) / 80)
-    //   let data = {
-    //     currentPage: 1,
-    //     pageSize: pagesize || 3,
-    //     vesselDeptId:
-    //       localStorage.getItem('ws-pf_vesselBankFlag') === 'V'
-    //         ? localStorage.getItem('ws-pf_vesselId')
-    //         : localStorage.getItem('ws-pf_deptId'),
-    //     compId: localStorage.getItem('ws-pf_compId')
-    //   }
-    //   // TODO: 【此处有问题】接口变更的不对
-    //   queryCircularManagementReceiveList(data)
-    //     .toPromise()
-    //     .then(response => {
-    //       this.noticeList = response.records
-    //     })
-    // },
-    // 获取船舶状态
-    getNaviStatusStr (t) {
-      var array = [
-        this.$t('home.navistatus0'),
-        this.$t('home.navistatus1'),
-        this.$t('home.navistatus2'),
-        this.$t('home.navistatus3'),
-        this.$t('home.navistatus4'),
-        this.$t('home.navistatus5'),
-        this.$t('home.navistatus6'),
-        this.$t('home.navistatus7'),
-        this.$t('home.navistatus8')
-      ]
-
-      if (t >= 0 && t <= 8) {
-        return array[t]
-      }
-      return ''
-    },
-    // 获取船舶状态
-    getNaviStatusBg (t) {
-      var array = [
-        'bg0',
-        'bg1',
-        'bg2',
-        'bg3',
-        'bg4',
-        'bg5',
-        'bg6',
-        'bg7',
-        'bg8'
-      ]
-
-      if (t >= 0 && t <= 8) {
-        return array[t]
-      }
-      return ''
-    },
-    getShipList () {
-      getUserVesselList({ vesselStatus: 'UNDER_CONTROL' }).toPromise().then(res => {
-        this.shipList = []
-        let num = res.length > 10 ? 10 : res.length
-        let obj = {}
-        for (let i = 0; i < num; i++) {
-          if (res[i].mmsiCode && res[i].mmsiCode.length > 0) {
-            obj = this.shipService.getShipByMmsi(res[i].mmsiCode)
-              ? this.shipService.getShipByMmsi(res[i].mmsiCode)
-              : {}
-            obj.vesselName = res[i].vesselName
-
-            this.shipList.push(obj)
+      //   // TODO: 【此处有问题】接口变更的不对
+      //   queryCircularManagementReceiveList(data)
+      //     .toPromise()
+      //     .then(response => {
+      //       this.noticeList = response.records
+      //     })
+      // },
+      // 获取船舶状态
+      getNaviStatusStr(t) {
+        var array = [
+          this.$t('home.navistatus0'),
+          this.$t('home.navistatus1'),
+          this.$t('home.navistatus2'),
+          this.$t('home.navistatus3'),
+          this.$t('home.navistatus4'),
+          this.$t('home.navistatus5'),
+          this.$t('home.navistatus6'),
+          this.$t('home.navistatus7'),
+          this.$t('home.navistatus8')
+        ]
+
+        if (t >= 0 && t <= 8) {
+          return array[t]
+        }
+        return ''
+      },
+      // 获取船舶状态
+      getNaviStatusBg(t) {
+        var array = [
+          'bg0',
+          'bg1',
+          'bg2',
+          'bg3',
+          'bg4',
+          'bg5',
+          'bg6',
+          'bg7',
+          'bg8'
+        ]
+
+        if (t >= 0 && t <= 8) {
+          return array[t]
+        }
+        return ''
+      },
+      getShipList() {
+        getUserVesselList({
+          vesselStatus: 'UNDER_CONTROL'
+        }).toPromise().then(res => {
+          this.shipList = []
+          let num = res.length > 10 ? 10 : res.length
+          let obj = {}
+          for (let i = 0; i < num; i++) {
+            if (res[i].mmsiCode && res[i].mmsiCode.length > 0) {
+              obj = this.shipService.getShipByMmsi(res[i].mmsiCode) ?
+                this.shipService.getShipByMmsi(res[i].mmsiCode) : {}
+              obj.vesselName = res[i].vesselName
+
+              this.shipList.push(obj)
+            }
           }
+          //我想不出还有什么招了:临时解决办法
+          const oldList = this.shipList
+          for (let i = 1; i < 5; i++) {
+            oldList.forEach(item => {
+              this.shipList.push(item)
+            })
+          }
+        })
+      },
+
+      onTodoClick() {
+        this.$router.push({
+          name: 'workNotification'
+        })
+      },
+      onMsgClick() {
+        this.$router.push({
+          name: 'message'
+        })
+      },
+      onChange(list) {},
+      onShipMenuItemClick(ship) {
+        this.selectShip = ship
+        if (ship) {
+          this.$refs.shipMap.selectShip(ship.id)
+        } else {
+          this.$refs.shipMap.unSelectShip()
+        }
+      },
+      onFullScreen() {
+        this.isFullScreen = !this.isFullScreen
+      },
+      onNoticeMoreBtnClick() {
+        this.$router.push({
+          name: 'notice'
+        })
+      },
+      onShipSelectEvent(shipid) {
+        this.selectShip = this.ships.find(item => {
+          return item.id == shipid
+        })
+      },
+      getCityName(encity) {
+        if (getLanguage() === 'zh') {
+          return getCnCity(encity)
         }
-        //我想不出还有什么招了:临时解决办法
-        const oldList = this.shipList
-        for (let i = 1; i < 5; i++) {
-          oldList.forEach(item => {
-            this.shipList.push(item)
+        return encity
+      },
+      getWeaName(enwea) {
+        if (getLanguage() === 'zh') {
+          return getCnWea(enwea)
+        }
+        return enwea
+      },
+      gotoNewRw(data) {
+        if (data === 'message') {
+          this.$router.push({
+            name: 'message',
+            query: {
+              types: data
+            }
+          })
+        } else {
+          this.$router.push({
+            name: 'workNotification',
+            query: {
+              types: data
+            }
           })
         }
-      })
-    },
+      },
+      test() {
+        console.log('testtesttesttest');
+      },
+      async test1() {
+        console.log('testtesttesttest111111');
+      },
+      async openPort() {
+        console.log('openPort', navigator);
+        if ('serial' in navigator) {
+          // The Web Serial API is supported.
+          console.log('the Web Serial API is supported.');
+          console.log(this.param);
+          const port = await navigator.serial.requestPort();
+          await port.open({
+            baudRate: this.param
+          }); // set baud rate
+          this.reader = port.readable.getReader();
+          // 监听来自串行设备的数据
+          while (true) {
+            const {
+              value,
+              done
+            } = await this.reader.read();
+            if (done) {
+              // 允许稍后关闭串口。
+              this.reader.releaseLock();
+              break;
+            }
+            console.log('value:', value);
 
-    onTodoClick () {
-      this.$router.push({ name: 'workNotification' })
-    },
-    onMsgClick () {
-      this.$router.push({ name: 'message' })
-    },
-    onChange (list) { },
-    onShipMenuItemClick (ship) {
-      this.selectShip = ship
-      if (ship) {
-        this.$refs.shipMap.selectShip(ship.id)
-      } else {
-        this.$refs.shipMap.unSelectShip()
-      }
-    },
-    onFullScreen () {
-      this.isFullScreen = !this.isFullScreen
-    },
-    onNoticeMoreBtnClick () {
-      this.$router.push({
-        name: 'notice'
-      })
-    },
-    onShipSelectEvent (shipid) {
-      this.selectShip = this.ships.find(item => {
-        return item.id == shipid
-      })
-    },
-    getCityName (encity) {
-      if (getLanguage() === 'zh') {
-        return getCnCity(encity)
-      }
-      return encity
-    },
-    getWeaName (enwea) {
-      if (getLanguage() === 'zh') {
-        return getCnWea(enwea)
-      }
-      return enwea
-    },
-    gotoNewRw (data) {
-      if (data === 'message') {
-        this.$router.push({ name: 'message', query: { types: data } })
-      } else {
-        this.$router.push({ name: 'workNotification', query: { types: data } })
-      }
-    },
-    test(){
-      console.log('testtesttesttest');
-    },
-    async test1(){
-      console.log('testtesttesttest111111');
-    },
-    async openPort(){
-      console.log('openPort',navigator);
-      if ('serial' in navigator) {
-        // The Web Serial API is supported.
-        console.log('the Web Serial API is supported.');
-        console.log(this.param);
-        const port = await navigator.serial.requestPort();
-        await port.open({ baudRate: this.param }); // set baud rate
-        this.reader = port.readable.getReader();
-        // 监听来自串行设备的数据
-        while (true) {
-          const { value, done } = await this.reader.read();
-          if (done) {
-            // 允许稍后关闭串口。
-            this.reader.releaseLock();
-            break;
-          }
-          console.log('value:',value);
-
-          var result='';
-          var flag = false;
-          for (var i = value.length - 1; i >= 0; i--) {
-            var tmp = String.fromCharCode(value[i])
-            if (tmp == '=') {
-              flag = true
+            var result = '';
+            var flag = false;
+            for (var i = value.length - 1; i >= 0; i--) {
+              var tmp = String.fromCharCode(value[i])
+              if (tmp == '=') {
+                flag = true
+              }
+              if (flag && result.length < 9 && tmp != '=') {
+                result += tmp
+              }
             }
-            if (flag && result.length < 9 && tmp != '=') {
-              result += tmp
+
+            setTimeout(1000)
+            if (parseInt(result)) {
+              console.log('result:', result);
+              this.text = parseInt(result)
             }
+            console.log('this.text:', this.text);
+
+            // value 是一个 Uint8Array
           }
-          
-          setTimeout(1000)
-          if(parseInt(result)){
-            console.log('result:',result);
-            this.text = parseInt(result)
-          }
-          console.log('this.text:',this.text);
-          
-          // value 是一个 Uint8Array
+          await port.close();
+        } else {
+          console.log('the Web Serial API is not supported.', navigator);
         }
-         await port.close();
-      }
-      else{
-        console.log('the Web Serial API is not supported.',navigator);
+      },
+      async closePort() {
+        console.log('closePort');
+        this.reader.cancel()
       }
-    },
-    async closePort(){
-      console.log('closePort');
-      this.reader.cancel()
     }
   }
-}
 </script>
 
 <style lang="scss" scoped>
-.home {
-  padding: 10px;
-  overflow-y: auto;
-  // background-color: #eee;
-  width: 100%;
-  height: calc(100vh - 60px);
-  .set-img {
-    width: 25px;
-    height: 25px;
-    position: fixed;
-    right: 0;
-    bottom: 99px;
-    z-index: 1000;
-  }
-  .shortcut-entrance {
-    width: 100%;
-    height: 60px;
-    background: #fff;
-    margin-bottom: 10px;
-    padding: 0 20px;
-    line-height: 60px;
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    .shortcut-entrance-left {
-      font-size: 16px;
-      font-weight: bold;
-      color: #333333;
-      width: 50%;
-      overflow: hidden;
-      height: 100%;
-    }
-    .shortcut-entrance-right {
-      width: 14px;
-      height: 14px;
-    }
-  }
-  .body-middle {
-    display: flex;
+  .home {
+    padding: 10px;
+    overflow-y: auto;
+    // background-color: #eee;
     width: 100%;
     height: calc(100vh - 60px);
-    .body-middle-left {
+
+    .set-img {
+      width: 25px;
+      height: 25px;
+      position: fixed;
+      right: 0;
+      bottom: 99px;
+      z-index: 1000;
+    }
+
+    .shortcut-entrance {
       width: 100%;
-      // margin-right: 10px;
-      .panel-list {
-        display: flex;
-        color: #ffffff;
-        text-shadow: 0px 1px 1px rgba(111, 52, 0, 0.55);
-      }
-      .ship-list-body {
-        position: relative;
-        width: 300px;
-        margin-top: 10px;
-        .shipList-box {
-          width: 85%;
-          margin: 0 auto;
-          .shipList-icon {
-            position: absolute;
-            top: 6px;
-            left: 0px;
-          }
-          .shipList-name {
-            cursor: context-menu;
-            font-size: 16px;
-            font-weight: bold;
-            line-height: 26px;
-            color: #333333;
-            max-width: 100px;
-            white-space: nowrap;
-            overflow: hidden;
-            text-overflow: ellipsis;
-          }
-          .shipList-address {
-            cursor: context-menu;
-            font-size: 14px;
-            color: #666666;
-            line-height: 35px;
-          }
-          .shipList-time {
-            cursor: context-menu;
-            font-size: 14px;
-            color: #666666;
-            line-height: 20px;
-          }
-          .ship-list-status {
-            cursor: context-menu;
-            margin-left: 20px;
-            padding: 5px 10px;
-            border-radius: 20px;
-            color: #fff;
-            max-width: 90px;
-            white-space: nowrap;
-            overflow: hidden;
-            text-overflow: ellipsis;
-          }
-          .bg0 {
-            background: #7ed321;
-          }
-          .bg1 {
-            background: #ff8f00;
-          }
-          .bg2 {
-            background: #495b61;
-          }
-          .bg3 {
-            background: #4fc3f7;
-          }
-          .bg4 {
-            background: #26a69a;
-          }
-          .bg5 {
-            background: #9c7fee;
-          }
-          .bg6 {
-            background: #ff5722;
-          }
-          .bg7 {
-            background: #8d6e63;
-          }
-          .bg8 {
-            background: #fadd60;
-          }
-        }
-      }
-      .notice-list {
-        width: calc(50% - 7px);
-        background: #fff;
-        margin-top: 10px;
-        // height: calc(100% - 180px);
-        // min-height: 460px;
-        border-radius: 4px;
-        // float: left;
-      }
+      height: 60px;
+      background: #fff;
+      margin-bottom: 10px;
+      padding: 0 20px;
+      line-height: 60px;
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
 
-      .news-list {
-        width: calc(50% - 7px);
-        // float: left;
-        background: #fff;
-        margin-top: 10px;
-        // height: calc(100% - 180px);
-        height: 285px;
+      .shortcut-entrance-left {
+        font-size: 16px;
+        font-weight: bold;
+        color: #333333;
+        width: 50%;
         overflow: hidden;
-        // min-height: 460px;
-        border-radius: 4px;
-        // margin-right: 10px;
-        .new-list-box {
-          padding: 0 10px;
-          .new-list-body:first-child {
-            padding-bottom: 20px;
-            border-bottom: 1px solid #eeeeee;
-          }
-          .new-list-body:last-child {
-            padding-top: 20px;
-          }
-        }
-        .new-list-body {
-          width: 100%;
-          padding: 10px 0;
-          display: flex;
-          border-bottom: 1px solid #eeeeee;
-          // height: 50%;
-          overflow: hidden;
-          // padding: 10px;
-          // display: flex;
-          .new-list-img {
-            // height: 100%;
-            width: 160px;
-            height: 100px;
-            position: relative;
-            // margin-right: 20px;
-            .newsTJ {
-              position: absolute;
-              width: 54px;
-              height: 50px;
-              left: 0;
-              top: 0;
-            }
-            img {
-              width: 100%;
-              height: 100%;
-              display: block;
-            }
-          }
-          .new-list-title {
-            color: #343434;
-            line-height: 30px;
-            font-size: 14px;
-            font-weight: bold;
-            overflow: hidden;
-            text-overflow: ellipsis;
-            white-space: nowrap;
-            span {
-              cursor: pointer;
-              display: block;
-            }
-          }
-          .new-list-content {
-            color: #666666;
-            font-size: 12px;
-            line-height: 16px;
-            display: -webkit-box;
-            -webkit-box-orient: vertical;
-            -webkit-line-clamp: 3;
-            overflow: hidden;
-            height: 48px;
-            span {
-              cursor: pointer;
-              display: block;
-            }
-          }
-          .new-list-date {
-            color: #999999;
-            font-size: 12px;
-            text-align: right;
-            line-height: 22px;
-            span {
-              cursor: pointer;
-              display: block;
-            }
-          }
-        }
-        // .new-list-body:hover {
-        //   background: #e2edfa;
-        //   cursor: pointer;
-        // }
-        .no-line {
-          border-bottom: 0px solid #eeeeee;
-        }
+        height: 100%;
       }
-      .v-width {
-        width: calc(50% - 7px);
+
+      .shortcut-entrance-right {
+        width: 14px;
+        height: 14px;
       }
     }
-    .body-middle-right {
-      width: calc(30% - 10px);
-      .notice-list {
-        height: 50%;
-        background: #fff;
+
+    .body-middle {
+      display: flex;
+      width: 100%;
+      height: calc(100vh - 60px);
+
+      .body-middle-left {
         width: 100%;
-        min-height: 300px;
-        border-radius: 4px;
-        .notice-list-body {
-          border-bottom: 1px solid #eeeeee;
-          padding: 20px 10px;
-          .notice-list-title {
-            color: #333333;
-            font-size: 14px;
-            font-weight: bold;
-            line-height: 18px;
-            overflow: hidden;
-            text-overflow: ellipsis;
-            white-space: nowrap;
-          }
-          .notice-list-type {
-            margin: 9px 0 12px 0;
-            color: #666666;
-          }
-          .notice-list-person {
-            color: #666666;
-            font-size: 12px;
-          }
-          .notice-list-date {
-            color: #666666;
-            font-size: 12px;
-            margin-top: 10px;
-          }
-        }
-        .notice-list-body:hover {
-          background: #e2edfa;
-          cursor: pointer;
-        }
-        .notice-body-height {
-          height: 50%;
-        }
-        .notice-body-height1 {
-          height: 20%;
+
+        // margin-right: 10px;
+        .panel-list {
+          display: flex;
+          color: #ffffff;
+          text-shadow: 0px 1px 1px rgba(111, 52, 0, 0.55);
         }
-      }
-      .notice-list-height {
-        height: 100%;
-        min-height: 638px;
-      }
-      .ship-list {
-        height: calc(50% - 10px);
-        margin-top: 10px;
-        background: #fff;
-        width: 100%;
-        min-height: 327px;
-        border-radius: 4px;
+
         .ship-list-body {
-          padding: 20px 0;
-          border-bottom: 1px solid #eeeeee;
-          .ship-list-head {
-            display: flex;
-            img {
-              width: 14px;
-              height: 14px;
+          position: relative;
+          width: 300px;
+          margin-top: 10px;
+
+          .shipList-box {
+            width: 85%;
+            margin: 0 auto;
+
+            .shipList-icon {
+              position: absolute;
+              top: 6px;
+              left: 0px;
             }
-            .ship-list-name {
-              margin: 0 20px;
+
+            .shipList-name {
+              cursor: context-menu;
+              font-size: 16px;
               font-weight: bold;
+              line-height: 26px;
+              color: #333333;
+              max-width: 100px;
+              white-space: nowrap;
+              overflow: hidden;
+              text-overflow: ellipsis;
+            }
+
+            .shipList-address {
+              cursor: context-menu;
+              font-size: 14px;
+              color: #666666;
+              line-height: 35px;
             }
+
+            .shipList-time {
+              cursor: context-menu;
+              font-size: 14px;
+              color: #666666;
+              line-height: 20px;
+            }
+
             .ship-list-status {
-              border-radius: 10px;
-              padding: 4px 8px;
-              color: #ffffff;
+              cursor: context-menu;
+              margin-left: 20px;
+              padding: 5px 10px;
+              border-radius: 20px;
+              color: #fff;
+              max-width: 90px;
+              white-space: nowrap;
+              overflow: hidden;
+              text-overflow: ellipsis;
             }
+
             .bg0 {
               background: #7ed321;
             }
+
             .bg1 {
               background: #ff8f00;
             }
+
             .bg2 {
               background: #495b61;
             }
+
             .bg3 {
               background: #4fc3f7;
             }
+
             .bg4 {
               background: #26a69a;
             }
+
             .bg5 {
               background: #9c7fee;
             }
+
             .bg6 {
               background: #ff5722;
             }
+
             .bg7 {
               background: #8d6e63;
             }
+
             .bg8 {
               background: #fadd60;
             }
           }
-          .ship-list-address {
-            margin: 10px 0 10px 34px;
-            color: #666666;
+        }
+
+        .notice-list {
+          width: calc(50% - 7px);
+          background: #fff;
+          margin-top: 10px;
+          // height: calc(100% - 180px);
+          // min-height: 460px;
+          border-radius: 4px;
+          // float: left;
+        }
+
+        .news-list {
+          width: calc(50% - 7px);
+          // float: left;
+          background: #fff;
+          margin-top: 10px;
+          // height: calc(100% - 180px);
+          height: 285px;
+          overflow: hidden;
+          // min-height: 460px;
+          border-radius: 4px;
+
+          // margin-right: 10px;
+          .new-list-box {
+            padding: 0 10px;
+
+            .new-list-body:first-child {
+              padding-bottom: 20px;
+              border-bottom: 1px solid #eeeeee;
+            }
+
+            .new-list-body:last-child {
+              padding-top: 20px;
+            }
+          }
+
+          .new-list-body {
+            width: 100%;
+            padding: 10px 0;
+            display: flex;
+            border-bottom: 1px solid #eeeeee;
+            // height: 50%;
+            overflow: hidden;
+
+            // padding: 10px;
+            // display: flex;
+            .new-list-img {
+              // height: 100%;
+              width: 160px;
+              height: 100px;
+              position: relative;
+
+              // margin-right: 20px;
+              .newsTJ {
+                position: absolute;
+                width: 54px;
+                height: 50px;
+                left: 0;
+                top: 0;
+              }
+
+              img {
+                width: 100%;
+                height: 100%;
+                display: block;
+              }
+            }
+
+            .new-list-title {
+              color: #343434;
+              line-height: 30px;
+              font-size: 14px;
+              font-weight: bold;
+              overflow: hidden;
+              text-overflow: ellipsis;
+              white-space: nowrap;
+
+              span {
+                cursor: pointer;
+                display: block;
+              }
+            }
+
+            .new-list-content {
+              color: #666666;
+              font-size: 12px;
+              line-height: 16px;
+              display: -webkit-box;
+              -webkit-box-orient: vertical;
+              -webkit-line-clamp: 3;
+              overflow: hidden;
+              height: 48px;
+
+              span {
+                cursor: pointer;
+                display: block;
+              }
+            }
+
+            .new-list-date {
+              color: #999999;
+              font-size: 12px;
+              text-align: right;
+              line-height: 22px;
+
+              span {
+                cursor: pointer;
+                display: block;
+              }
+            }
+          }
+
+          // .new-list-body:hover {
+          //   background: #e2edfa;
+          //   cursor: pointer;
+          // }
+          .no-line {
+            border-bottom: 0px solid #eeeeee;
+          }
+        }
+
+        .v-width {
+          width: calc(50% - 7px);
+        }
+      }
+
+      .body-middle-right {
+        width: calc(30% - 10px);
+
+        .notice-list {
+          height: 50%;
+          background: #fff;
+          width: 100%;
+          min-height: 300px;
+          border-radius: 4px;
+
+          .notice-list-body {
+            border-bottom: 1px solid #eeeeee;
+            padding: 20px 10px;
+
+            .notice-list-title {
+              color: #333333;
+              font-size: 14px;
+              font-weight: bold;
+              line-height: 18px;
+              overflow: hidden;
+              text-overflow: ellipsis;
+              white-space: nowrap;
+            }
+
+            .notice-list-type {
+              margin: 9px 0 12px 0;
+              color: #666666;
+            }
+
+            .notice-list-person {
+              color: #666666;
+              font-size: 12px;
+            }
+
+            .notice-list-date {
+              color: #666666;
+              font-size: 12px;
+              margin-top: 10px;
+            }
+          }
+
+          .notice-list-body:hover {
+            background: #e2edfa;
+            cursor: pointer;
+          }
+
+          .notice-body-height {
+            height: 50%;
+          }
+
+          .notice-body-height1 {
+            height: 20%;
           }
-          .ship-list-date {
-            color: #666666;
-            margin-left: 34px;
+        }
+
+        .notice-list-height {
+          height: 100%;
+          min-height: 638px;
+        }
+
+        .ship-list {
+          height: calc(50% - 10px);
+          margin-top: 10px;
+          background: #fff;
+          width: 100%;
+          min-height: 327px;
+          border-radius: 4px;
+
+          .ship-list-body {
+            padding: 20px 0;
+            border-bottom: 1px solid #eeeeee;
+
+            .ship-list-head {
+              display: flex;
+
+              img {
+                width: 14px;
+                height: 14px;
+              }
+
+              .ship-list-name {
+                margin: 0 20px;
+                font-weight: bold;
+              }
+
+              .ship-list-status {
+                border-radius: 10px;
+                padding: 4px 8px;
+                color: #ffffff;
+              }
+
+              .bg0 {
+                background: #7ed321;
+              }
+
+              .bg1 {
+                background: #ff8f00;
+              }
+
+              .bg2 {
+                background: #495b61;
+              }
+
+              .bg3 {
+                background: #4fc3f7;
+              }
+
+              .bg4 {
+                background: #26a69a;
+              }
+
+              .bg5 {
+                background: #9c7fee;
+              }
+
+              .bg6 {
+                background: #ff5722;
+              }
+
+              .bg7 {
+                background: #8d6e63;
+              }
+
+              .bg8 {
+                background: #fadd60;
+              }
+            }
+
+            .ship-list-address {
+              margin: 10px 0 10px 34px;
+              color: #666666;
+            }
+
+            .ship-list-date {
+              color: #666666;
+              margin-left: 34px;
+            }
           }
+
+          /*.ship-list-body:hover{*/
+          /*  background: #e2edfa;*/
+          /*}*/
         }
-        /*.ship-list-body:hover{*/
-        /*  background: #e2edfa;*/
-        /*}*/
+      }
+    }
+
+    .body-middle-height {
+      height: calc(100vh - 80px);
+    }
+
+    .list-title {
+      width: 100%;
+      // background: #f3f9fe;
+      background: url('~@/assets/newhome/titilebg.png') no-repeat;
+      background-size: 100% 100%;
+      height: 44px;
+      padding: 0 20px;
+      display: flex;
+      line-height: 44px;
+      justify-content: space-between;
+      border-radius: 4px 4px 0 0;
+
+      .list-title-name {
+        font-size: 16px;
+        font-weight: bold;
+        color: #333333;
+      }
+
+      .list-title-more {
+        font-size: 14px;
+        color: #666666;
+        cursor: pointer;
+        display: flex;
       }
     }
   }
-  .body-middle-height {
-    height: calc(100vh - 70px);
+
+  .el-dropdown-menu {
+    margin-top: -20px !important;
+    /*left: 1872px !important;*/
   }
-  .list-title {
+
+  .seamless-warp {
+    // width: 100%;
     width: 100%;
-    // background: #f3f9fe;
-    background: url('~@/assets/newhome/titilebg.png') no-repeat;
-    background-size: 100% 100%;
-    height: 44px;
-    padding: 0 20px;
+    overflow: hidden;
+    margin-top: 10px;
+  }
+
+  .home-tzthList:nth-of-type(3) {
+    border: none;
+  }
+
+  .home-tzthList {
     display: flex;
-    line-height: 44px;
-    justify-content: space-between;
-    border-radius: 4px 4px 0 0;
-    .list-title-name {
-      font-size: 16px;
+    padding: 10px;
+    border-bottom: 1px solid #eeeeee;
+
+    .home-tzthList-type {
+      width: 100%;
+      display: flex;
+      font-size: 14px;
+      line-height: 28px;
       font-weight: bold;
-      color: #333333;
+
+      .home-tzthList-type-title {
+        color: #343434;
+        margin: 0;
+
+        span {
+          cursor: pointer;
+        }
+      }
+
+      .home-tzthList-type-theme {
+        color: #666666;
+        margin: 0;
+        width: 80%;
+        overflow: hidden;
+        white-space: nowrap;
+        text-overflow: ellipsis;
+
+        span {
+          cursor: pointer;
+        }
+      }
     }
-    .list-title-more {
-      font-size: 14px;
-      color: #666666;
-      cursor: pointer;
+
+    .home-tzthList-people {
       display: flex;
+      justify-content: space-between;
+      line-height: 22px;
+
+      .home-tzthList-Personnel,
+      .home-tzthList-timer {
+        font-size: 12px;
+        color: #666666;
+
+        span {
+          cursor: pointer;
+        }
+      }
     }
   }
-}
-.el-dropdown-menu {
-  margin-top: -20px !important;
-  /*left: 1872px !important;*/
-}
-.seamless-warp {
-  // width: 100%;
-  width: 100%;
-  overflow: hidden;
-  margin-top: 10px;
-}
-.home-tzthList:nth-of-type(3) {
-  border: none;
-}
-.home-tzthList {
-  display: flex;
-  padding: 10px;
-  border-bottom: 1px solid #eeeeee;
-  .home-tzthList-type {
+
+  .noMore {
+    position: absolute;
+    margin: auto;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    right: 0;
+  }
+
+  .ship-list {
     width: 100%;
+    border-radius: 4px;
+    background-color: #fff;
+  }
+
+  //新增的图表的样式
+  .chart {
     display: flex;
-    font-size: 14px;
-    line-height: 28px;
-    font-weight: bold;
-    .home-tzthList-type-title {
-      color: #343434;
-      margin: 0;
-      span {
-        cursor: pointer;
-      }
+    flex-wrap: wrap;
+    justify-content: space-between;
+    margin-bottom: 10px;
+  }
+
+  .home-tzthList-timer-left {
+    width: 10%;
+    display: flex;
+    align-items: center;
+
+    img {
+      cursor: pointer;
+      width: 24px;
+      height: 24px;
+      display: block;
+      align-items: center;
+      margin: 0 auto;
     }
-    .home-tzthList-type-theme {
-      color: #666666;
-      margin: 0;
-      width: 80%;
-      overflow: hidden;
-      white-space: nowrap;
-      text-overflow: ellipsis;
-      span {
-        cursor: pointer;
-      }
+  }
+.header{
+  // background: rgb(36, 38, 45);
+    background: #2a2a2a;
+  padding: 20px;
+  box-sizing: border-box;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  .right{
+    color: white;
+    font-weight: 700;
+    text-align: center;
+    .top{
+      font-size: 14px;
+    }
+    .bottom{
+      font-size: 26px;
     }
   }
-  .home-tzthList-people {
+}
+  .chart-card {
+      // background: rgb(36, 38, 45);
+    background: #2a2a2a;
+    width: 350px;
+    margin-top: 10px;
+    height: 288px;
+    // height: 288px;
+  }
+  .title2{
+        pointer-events: auto;
+        display: flex;
+        align-items: center;
+        justify-content: flex-start;
+        color: rgb(255, 255, 255);
+        font-weight: bold;
+        font-family: "Microsoft Yahei", Arial, "sans-serif";
+        font-size: 15px;
+        writing-mode: horizontal-tb;
+        letter-spacing: 0px;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+        overflow: hidden;
+        padding: 10px;
+        box-sizing: border-box;
+
+  }
+
+  .content2 {
+    // background-color: rgb(27, 28, 30);
     display: flex;
-    justify-content: space-between;
-    line-height: 22px;
-    .home-tzthList-Personnel,
-    .home-tzthList-timer {
-      font-size: 12px;
-      color: #666666;
-      span {
-        cursor: pointer;
+    margin-top: 10px;
+    height: calc(100% - 170px);
+
+    h3 {
+      pointer-events: auto;
+      display: flex;
+      align-items: center;
+      justify-content: flex-start;
+      color: rgb(204, 204, 204);
+      font-weight: bold;
+      font-family: "Microsoft Yahei", Arial, "sans-serif";
+      font-size: 24px;
+      writing-mode: horizontal-tb;
+      letter-spacing: 0px;
+      text-overflow: ellipsis;
+      white-space: nowrap;
+      overflow: hidden;
+    }
+
+    .center-map {
+      // background: yellow;
+    }
+
+    .content2-aside {
+      width: 360px;
+      // height: 288px;
+      // background: red;
+    }
+
+    .content2-middle {
+      width: calc(100% - 720px);
+      margin:0 20px 0 15px;
+
+      .left-card {
+        display: flex;
+        // background: green;
+        justify-content: space-evenly;
+
+        .item {
+          background: #2a2a2a;
+          width: 28%;
+          height: 208px;
+          position: relative;
+          padding-left: 20px;
+
+          p:nth-of-type(1) {
+            color: #d5d5d5;
+            position: absolute;
+            bottom: 70px;
+            font-size: 16px;
+          }
+
+          p:nth-of-type(2) {
+            position: absolute;
+            bottom: 0px;
+
+            .number {
+              color: #50cad4;
+              font-size: 53px;
+              font-weight: 700;
+            }
+            .number-text{
+              color: #d5d5d5;
+            }
+          }
+        }
       }
+
     }
   }
-}
-.noMore {
-  position: absolute;
-  margin: auto;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  right: 0;
-}
-.ship-list {
-  width: 100%;
-  border-radius: 4px;
-  background-color: #fff;
-}
 
-//新增的图表的样式
-.chart {
-  display: flex;
-  flex-wrap: wrap;
-  justify-content: space-between;
-  margin-bottom: 10px;
+  .home {
+    background: rgb(27, 28, 30);
+    padding-bottom:20px
+  }
+  .home .body-middle-height{
+    height: auto;
+  }
+.content2-map{
+  margin: 0;
 }
-.home-tzthList-timer-left {
-  width: 10%;
+.content3{
   display: flex;
+  justify-content: space-between;
   align-items: center;
-  img {
-    cursor: pointer;
-    width: 24px;
-    height: 24px;
-    display: block;
-    align-items: center;
-    margin: 0 auto;
-  }
+   background: #2a2a2a;
+   padding: 10px 60px;
+   .content3-number{
+     margin-left: 40px;
+   }
+   .blue{
+     font-size: 30px;
+     color: #50cad4;
+     font-weight: 600;
+   }
+   .yellow{
+     font-size: 30px;
+     color: #ffa523;
+     font-weight: 600;
+   }
+   .left,.right{
+     display: flex;
+     align-items: center;
+     color: #d5d5d5;
+   }
+   img{
+     display: inline-block;
+     width:35px;
+     height:35px;
+   }
+
 }
 </style>