2 Commits f2918ec062 ... 8e47725205

Author SHA1 Message Date
  wdq 8e47725205 Merge branch 'lmx' of http://47.103.92.60:3003/skyversation/xujingtown_irflcmp_ui.git 7 months ago
  DESKTOP-6LTVLN7\Liumouren c0467b6d8c 初始化头部样式,优化地图初始化方法,添加字体,引用dayjs,添加cardtitle和cardmain组件模板 7 months ago

+ 23 - 7
package-lock.json

@@ -9,6 +9,7 @@
       "version": "0.1.0",
       "dependencies": {
         "axios": "^1.7.7",
+        "dayjs": "^1.11.6",
         "vue": "^3.2.13",
         "vue-router": "^4.0.3",
         "vuex": "^4.0.0"
@@ -1252,6 +1253,8 @@
       "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.16.0.tgz",
       "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==",
       "dev": true,
+      "optional": true,
+      "peer": true,
       "dependencies": {
         "fast-deep-equal": "^3.1.3",
         "json-schema-traverse": "^1.0.0",
@@ -1267,7 +1270,9 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
       "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
-      "dev": true
+      "dev": true,
+      "optional": true,
+      "peer": true
     },
     "node_modules/ajv-keywords": {
       "version": "3.5.2",
@@ -2557,6 +2562,11 @@
       "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz",
       "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
     },
+    "node_modules/dayjs": {
+      "version": "1.11.13",
+      "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
+      "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
+    },
     "node_modules/debounce": {
       "version": "1.2.1",
       "resolved": "https://registry.npmmirror.com/debounce/-/debounce-1.2.1.tgz",
@@ -9152,15 +9162,14 @@
       "resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-2.1.1.tgz",
       "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
       "dev": true,
-      "requires": {
-        "ajv": "^8.0.0"
-      },
+      "requires": {},
       "dependencies": {
         "ajv": {
-          "version": "8.16.0",
-          "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.16.0.tgz",
+          "version": "https://registry.npmmirror.com/ajv/-/ajv-8.16.0.tgz",
           "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==",
           "dev": true,
+          "optional": true,
+          "peer": true,
           "requires": {
             "fast-deep-equal": "^3.1.3",
             "json-schema-traverse": "^1.0.0",
@@ -9172,7 +9181,9 @@
           "version": "1.0.0",
           "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
           "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
-          "dev": true
+          "dev": true,
+          "optional": true,
+          "peer": true
         }
       }
     },
@@ -10072,6 +10083,11 @@
       "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz",
       "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
     },
+    "dayjs": {
+      "version": "1.11.13",
+      "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
+      "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
+    },
     "debounce": {
       "version": "1.2.1",
       "resolved": "https://registry.npmmirror.com/debounce/-/debounce-1.2.1.tgz",

+ 1 - 0
package.json

@@ -8,6 +8,7 @@
   },
   "dependencies": {
     "axios": "^1.7.7",
+    "dayjs": "^1.11.6",
     "vue": "^3.2.13",
     "vue-router": "^4.0.3",
     "vuex": "^4.0.0"

+ 11 - 1
public/static/config/config.js

@@ -14,4 +14,14 @@ var userLoginConfig = {
 }
 
 // var oauthUrl = "http://10.235.245.174:8888/"
-var oauthUrl = "http://121.43.55.7:10086"
+var oauthUrl = "http://121.43.55.7:10086"
+
+// 系统配置(LiuMengxiang)
+var systemConfig = {
+    // 底图地址集合(Map.vue>creatMap())
+    // imageryProviders: ["http://t0.tianditu.com/img_w/wmts", "http://t0.tianditu.com/cia_w/wmts"],
+    imageryProviders: ["http://t0.tianditu.com/img_w/wmts"],
+    // 天地图token(Map.vue>LoadTheWorldMapImage())
+    // tdt_tk: "e90d56e5a09d1767899ad45846b0cefd"
+    tdt_tk: "51a3c33c0ec351619c33a24461c0ba95"
+}

BIN
src/assets/font/YouSheBiaoTiHei-2.ttf


+ 20 - 0
src/assets/font/font.css

@@ -0,0 +1,20 @@
+@font-face {
+  font-family: "YouSheBiaoTiHei";
+  src: url("./YouSheBiaoTiHei-2.ttf");
+  font-weight: normal;
+  font-style: normal;
+}
+
+@font-face {
+  font-family: "zhihun181";
+  src: url("./zhihun181feichibiaoti.ttf");
+  font-weight: normal;
+  font-style: normal;
+}
+
+/* @font-face {
+  font-family: "pingfangSC";
+  src: url("./pingfangSC.ttf");
+  font-weight: normal;
+  font-style: normal;
+} */

BIN
src/assets/font/pingfangSC.ttf


BIN
src/assets/font/zhihun181feichibiaoti.ttf


+ 4 - 0
src/assets/global.css

@@ -0,0 +1,4 @@
+/* 全局样式 */
+* {
+  user-select: none;
+}

BIN
src/assets/images/header.png


+ 84 - 55
src/components/Header.vue

@@ -2,11 +2,15 @@
   <div id="header">
     <!-- 时间 -->
     <div class="clock">
-      <p class="time">{{ time }}</p>
-      <p class="date">{{ date }}</p>
+      <div class="time">{{ currentTime }}</div>
+      <div class="date">{{ date }}</div>
     </div>
     <!-- title -->
+    <div class="title_bg">
+      <div class="title_bg_title">徐泾镇产业资源全生命周期管理平台</div>
+    </div>
     <!-- 天气 -->
+    <div class="weather">天气</div>
   </div>
 </template>
 
@@ -16,12 +20,27 @@ import axios from "axios";
 export default {
   data() {
     return {
-      time: "",
-      date: ""
+      currentTime: "",
+      setInterval_: "",
+      date: "",
     };
   },
+  created() {
+    this.currentTime = this.$dayjs().format("HH:mm:ss");
+    this.date = this.$dayjs().format("YYYY.MM.DD");
+  },
   mounted() {
-    this.timeRefresh();
+    // 时间定时器
+    if (!this.setInterval_) {
+      this.setInterval_ = setInterval(() => {
+        this.currentTime = this.$dayjs().format("HH:mm:ss");
+        this.date = this.$dayjs().format("YYYY.MM.DD");
+      }, 1000);
+    }
+  },
+  beforeDestroy() {
+    clearInterval(this.setInterval_);
+    this.setInterval_ = "";
   },
   methods: {
     // 前提获取
@@ -34,7 +53,7 @@ export default {
             ":" +
             loc.lon
         )
-        .then(data => {
+        .then((data) => {
           //解析 {data}
           let result = data.data.results[0];
           let imgsrc = "./images/tianqi/" + result.now.code + "@1x.png";
@@ -50,70 +69,80 @@ export default {
           viewer.canvas.clientHeight / 2
         )
       );
-      let curPosition = SkyScenery.Ellipsoid.WGS84.cartesianToCartographic(
-        centerResult
-      );
+      let curPosition = SkyScenery.Ellipsoid.WGS84.cartesianToCartographic(centerResult);
       let curLongitude = (curPosition.longitude * 180) / Math.PI;
       let curLatitude = (curPosition.latitude * 180) / Math.PI;
       return {
         lon: curLongitude,
-        lat: curLatitude
+        lat: curLatitude,
       };
     },
-    // 时间监听
-    timeRefresh() {
-      let that = this;
-      var week = [
-        "星期天",
-        "星期一",
-        "星期二",
-        "星期三",
-        "星期四",
-        "星期五",
-        "星期六"
-      ];
-      setInterval(updateTime, 1000);
-      updateTime();
-      function updateTime() {
-        var cd = new Date();
-        that.time =
-          zeroPadding(cd.getHours(), 2) +
-          ":" +
-          zeroPadding(cd.getMinutes(), 2) +
-          ":" +
-          zeroPadding(cd.getSeconds(), 2);
-        that.date =
-          zeroPadding(cd.getFullYear(), 4) +
-          "-" +
-          zeroPadding(cd.getMonth() + 1, 2) +
-          "-" +
-          zeroPadding(cd.getDate(), 2) +
-          " " +
-          week[cd.getDay()];
-
-        console.log(that.date + "  " + that.time);
-        function zeroPadding(num, digit) {
-          var zero = "";
-          for (var i = 0; i < digit; i++) {
-            zero += "0";
-            return (zero + num).slice(-digit);
-          }
-        }
-      }
-    }
   },
   computed: {
     mapStatus() {
       return this.$store.state.initMap;
-    }
+    },
   },
   watch: {
     mapStatus(newVal, oldVal) {
       if (newVal) this.tqRefresh();
-    }
-  }
+    },
+  },
 };
 </script>
 
 <style lang="less" scoped>
-</style>
+#header {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  background: #fff0;
+  z-index: 9999;
+  display: flex;
+  flex-wrap: nowrap;
+  flex-direction: row;
+}
+.clock {
+  display: flex;
+  flex-direction: column;
+  width: calc(50vw - 698px - 10px);
+  height: 60px;
+  margin-left: 10px;
+  font-family: "YouSheBiaoTiHei";
+  text-shadow: 1px 1px 1px #000, 0 0 5px #000;
+  .time {
+    color: #ffffff;
+    font-size: 20px;
+  }
+  .date {
+    color: #f2f6fc;
+    font-size: 16px;
+  }
+}
+.weather {
+  display: flex;
+  width: calc(50vw - 698px - 10px);
+  height: 60px;
+  margin-right: 10px;
+  background: red;
+}
+.title_bg {
+  position: relative;
+  width: 1396px;
+  height: 157px;
+  background-image: url(../assets/images/header.png);
+  display: flex;
+  flex-direction: row;
+  justify-content: center;
+  flex-wrap: nowrap;
+  &_title {
+    font-size: 29px;
+    color: #165cff;
+    margin-top: 10px;
+    background: linear-gradient(180deg, #ffffff 0%, #165cff 30%);
+    -webkit-background-clip: text;
+    -webkit-text-fill-color: transparent;
+  }
+}
+</style>

+ 241 - 53
src/components/Map.vue

@@ -20,24 +20,36 @@ export default {
       }
       fetch(oauthUrl + "/oauth/api/user/login", {
         method: "POST",
-        body: loginInfo
+        body: loginInfo,
       })
-        .then(resp => resp.json())
-        .then(data => {
+        .then((resp) => resp.json())
+        .then((data) => {
           SkySceneryConfig = {
             authUrl: oauthUrl,
-            token: data.message
+            token: data.message,
           };
-          that.addScripts(scriptObj.main).then(function() {
-            let arr = scriptObj.plugins.map(function(src) {
-              return that.addScripts(src);
-            });
-            Promise.all(arr).then(function() {
+          that.pushAllScripts();
+        });
+    },
+
+    pushAllScripts() {
+      let that = this;
+      that.addScripts(scriptObj.main).then(function () {
+        let arr = scriptObj.plugins.map(function (src) {
+          return that.addScripts(src);
+        });
+        Promise.all(arr).then(function () {
+          setTimeout(() => {
+            if (SkyScenery) {
               that.creatMap();
-            });
+            } else {
+              that.pushAllScripts();
+            }
           });
         });
+      });
     },
+    
     addScripts(src) {
       return new Promise((resolve, reject) => {
         // 创建一个新的script标签
@@ -48,62 +60,194 @@ export default {
         document.head.appendChild(script);
         if (script.readyState) {
           // IE
-          script.onreadystatechange = function() {
-            if (
-              script.readyState === "loaded" ||
-              script.readyState === "complete"
-            ) {
+          script.onreadystatechange = function () {
+            if (script.readyState === "loaded" || script.readyState === "complete") {
               script.onreadystatechange = null;
               resolve();
             }
           };
         } else {
           // 其他浏览器
-          script.onload = function() {
+          script.onload = function () {
             resolve();
           };
         }
       });
     },
     creatMap() {
-      window.viewer = new SkyScenery.Viewer("skysceneryContainer", {
-        animation: false, //是否创建动画小器件,左下角仪表
-        baseLayerPicker: false, //是否显示图层选择器
-        imageryProvider: new SkyScenery.SingleTileImageryProvider({
-          url: (function createColorCanvas(color) {
-            var width = 1,
-              height = 1;
-            var canvas = document.createElement("canvas");
-            canvas.width = width;
-            canvas.height = height;
-            var ctx = canvas.getContext("2d");
-            ctx.fillStyle = color;
-            ctx.fillRect(0, 0, width, height);
-            return canvas.toDataURL();
-          })("#ffffff00"),
-          rectangle: SkyScenery.Rectangle.fromDegrees(
-            -180.0,
-            -90.0,
-            180.0,
-            90.0
-          )
-        }),
-        fullscreenButton: false, //是否显示全屏按钮
-        geocoder: false, //是否显示geocoder小器件,右上角查询按钮
-        homeButton: false, //是否显示Home按钮
-        infoBox: false, //是否显示信息框
-        sceneModePicker: false, //是否显示3D/2D选择器
-        selectionIndicator: false, //是否显示选取指示器组件
-        timeline: false, //是否显示时间轴
-        navigationHelpButton: false, //是否显示右上角的帮助按钮
-        scene3DOnly: true, //如果设置为true,则所有几何图形以3D模式绘制以节约GPU资源
-        infoBox: false, //是否显示点击要素之后显示的信息
-        shouldAnimate: false //是否自动播放
-      });
+      console.log("creatMap");
+      try {
+        let that = this;
+        window.viewer = new SkyScenery.Viewer("skysceneryContainer", {
+          animation: false, //是否创建动画小器件,左下角仪表
+          baseLayerPicker: false, //是否显示图层选择器
+          imageryProvider: new SkyScenery.SingleTileImageryProvider({
+            url: (function createColorCanvas(color) {
+              var width = 1,
+                height = 1;
+              var canvas = document.createElement("canvas");
+              canvas.width = width;
+              canvas.height = height;
+              var ctx = canvas.getContext("2d");
+              ctx.fillStyle = color;
+              ctx.fillRect(0, 0, width, height);
+              return canvas.toDataURL();
+            })("#ffffff00"),
+            rectangle: SkyScenery.Rectangle.fromDegrees(-180.0, -90.0, 180.0, 90.0),
+          }),
+          fullscreenButton: false, //是否显示全屏按钮
+          geocoder: false, //是否显示geocoder小器件,右上角查询按钮
+          homeButton: false, //是否显示Home按钮
+          infoBox: false, //是否显示信息框
+          sceneModePicker: false, //是否显示3D/2D选择器
+          selectionIndicator: false, //是否显示选取指示器组件
+          timeline: false, //是否显示时间轴
+          navigationHelpButton: false, //是否显示右上角的帮助按钮
+          scene3DOnly: true, //如果设置为true,则所有几何图形以3D模式绘制以节约GPU资源
+          infoBox: false, //是否显示点击要素之后显示的信息
+          shouldAnimate: false, //是否自动播放
+        });
+        setTimeout(() => {
+          // 根据配置文件中的配置信息加载底图
+          systemConfig.imageryProviders.forEach((url) => {
+            that.loadTheWorldMapImage(url);
+          });
+          viewer.camera.setView({
+            destination: SkyScenery.Cartesian3.fromDegrees(121, 31, 30000.0), // 设置位置
+            orientation: {
+              heading: SkyScenery.Math.toRadians(0.0), // 方向
+              pitch: SkyScenery.Math.toRadians(-90.0), // 倾斜角度
+              roll: 0,
+            },
+          });
+          this.$store.commit("createdMap", true);
+          return;
+        }, 0);
+        // viewer.entities.add({
+        //   name: "点",
+        //   position: SkyScenery.Cartesian3.fromDegrees(121.1, 31), //经纬度转世界坐标
+        //   point: {
+        //     show: true,
+        //     color: SkyScenery.Color.GREEN,
+        //     pixelSize: 20,
+        //     outlineColor: SkyScenery.Color.YELLOW,
+        //     outlineWidth: 3,
+        //   },
+        //   label: {
+        //     text: "这里是标签", //设置文字内容
+        //     font: "normal 18px 楷体", //设置文字大小和字体
+        //     fillColor: SkyScenery.Color.fromCssColorString("#00ff00"), //设置文字填充的颜色
+        //     horizontalOrigin: SkyScenery.HorizontalOrigin.CENTER,
+        //     verticalOrigin: SkyScenery.VerticalOrigin.BOTTOM,
+        //     pixelOffset: new SkyScenery.Cartesian2(0, -20),
+        //   },
+        // });
+        // viewer.entities.add({
+        //   position: SkyScenery.Cartesian3.fromDegrees(121.2, 31),
+        //   billboard: {
+        //     image: "/static/image/point.png",
+        //     width: 48, // default: undefined
+        //     height: 48, // default: undefined
+        //     scale: 1.0, // default: 1.0
+        //     show: true, // default
+        //     horizontalOrigin: SkyScenery.HorizontalOrigin.CENTER, // default
+        //     verticalOrigin: SkyScenery.VerticalOrigin.BOTTOM, // default: CENTER
+        //   },
+        //   label: {
+        //     text: "这是自定义图片", // 设置文字内容
+        //     font: "normal 18px 楷体", // 设置文字大小和字体
+        //     fillColor: SkyScenery.Color.fromCssColorString("#00ff00"), //设置文字填充的颜色
+        //     horizontalOrigin: SkyScenery.HorizontalOrigin.CENTER,
+        //     verticalOrigin: SkyScenery.VerticalOrigin.BOTTOM,
+        //     pixelOffset: new SkyScenery.Cartesian2(0, -50),
+        //   },
+        // });
+        // let positions = [
+        //   [121.04829640102727, 31.12735759260756],
+        //   [121.05219953077487, 31.126058264888133],
+        //   [121.0556573133586, 31.125143117515066],
+        //   [121.0585577885634, 31.12489903339664],
+        //   [121.05855842602281, 31.117437091290032],
+        //   [121.05755469646111, 31.116865171387122],
+        //   [121.05855867110577, 31.114567660254956],
+        //   [121.05716503781966, 31.111412856109656],
+        //   [121.05169919616742, 31.109414349328368],
+        //   [121.04846566530048, 31.10731617798831],
+        //   [121.04523257218045, 31.105074455848328],
+        //   [121.04372646220537, 31.108713847196935],
+        //   [121.04238895034425, 31.11239990163383],
+        //   [121.04216536839769, 31.11503097997496],
+        //   [121.03965751482633, 31.117141773623022],
+        //   [121.0392664980893, 31.119247569299414],
+        //   [121.0401584271992, 31.124267692010815],
+        //   [121.04534263782213, 31.124207732078528],
+        //   [121.04813004860797, 31.124919266167907],
+        //   [121.04829640102727, 31.12735759260756],
+        // ];
+        // viewer.entities.add({
+        //   name: "立体墙效果",
+        //   wall: {
+        //     positions: positions.map(function (item) {
+        //       return SkyScenery.Cartesian3.fromDegrees(item[0], item[1]);
+        //     }),
+        //     // 设置高度
+        //     maximumHeights: new Array(positions.length).fill(100),
+        //     minimumHeights: new Array(positions.length).fill(0),
+        //     material: new SkyScenery.DynamicWallMaterialProperty({
+        //       color: SkyScenery.Color.fromCssColorString("#00c4ff80"),
+        //       trailImage: "/static/image/color.png",
+        //       duration: 3000,
+        //     }),
+        //   },
+        // });
+        // viewer.entities.add({
+        //   name: " 面",
+        //   polygon: {
+        //     hierarchy: {
+        //       positions: SkyScenery.Cartesian3.fromDegreesArray(
+        //         positions
+        //           .join(",")
+        //           .split(",")
+        //           .map(function (num) {
+        //             return Number(num);
+        //           })
+        //       ),
+        //     },
+        //     material: new SkyScenery.ImageMaterialProperty({
+        //       image: "/static/image/b2.png", // 图片路径
+        //       transparent: true, // 是否透明
+        //     }),
+        //   },
+        // });
+      } catch (error) {
+        console.log("createMap error:", error);
+        window.location.reload();
+      }
+    },
+
+    /**
+     * 加载天地图底图
+     * @author LiuMengxiang
+     * 加载影像底图和影像注记
+     */
+    loadTheWorldMapImage(url) {
+      if (url.indexOf("//t0.") != -1) {
+        url = url.replace("//t0.", "//t{s}.");
+      }
       viewer.imageryLayers.addImageryProvider(
-        new SkyScenery.CGCS2000ArcGisMapServerImageryProvider({
+        new SkyScenery.WebMapTileServiceImageryProvider({
           url:
-            "http://10.235.245.174:10092/proxy/?servertype=air_2023&proxyToken=622067E9-93E5-D8EC-E677-85B58A63C0C7"
+            url +
+            "?service=wmts&request=GetTile&version=1.0.0&LAYER=img&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles&tk=" +
+            systemConfig.tdt_tk,
+          layer: "img",
+          style: "default",
+          tileMatrixSetID: "w",
+          format: "image/jpeg",
+          subdomains: ["0", "1", "2", "3", "4", "5", "6", "7"],
+          show: true,
+          minimumLevel: 1,
+          maximumLevel: 18,
         })
       );
       viewer.camera.setView({
@@ -308,7 +452,51 @@ export default {
           })
         }
       });
-    }
+    },
+    
+    /**
+     * 加载3Dtitles
+     * @author LiuMengxiang
+     * @param {*} url 3Dtitles的url地址
+     * @param {*} flyto 是否自动飞行到3Dtitles
+     */
+     add3DTiles(url, flyto) {
+      let tileset = new SkyScenery.Cesium3DTileset({
+        url: url + "/tileset.json",
+        // "?servertype=OJK_BUILD&token=65463DEE-620A-0ED5-2385-17ECD07CD351",
+        // url: url + "/tileset.json",
+        skipLevelOfDetail: true, //开启跳级加载
+        maximumScreenSpaceError: 16,
+        maximumNumberOfLoadedTiles: 2000,
+        maximumMemoryUsage: 512, //tileset可以使用的最大内存
+        show: true,
+        immediatelyLoadDesiredLevelOfDetail: true,
+        // showOutLine : true, // 是否使用 CESIUM_primitive_outline 扩展显示模型的轮廓。为 true 时,将显示轮廓。如果为 false,则不显示轮廓。
+        // debugColorizeTiles : true, // 仅用于调试。如果为 true,则为每个图块分配随机颜色。
+        // debugShowBoundingVolume : true, // 仅用于调试。如果为 true,则为每个图块渲染边界体积。
+        // debugShowContentBoundingVolume : true, // 仅用于调试。如果为 true,则为每个图块的内容渲染边界体积。
+        // lightColor : new SkyScenery.Cartesian3(100.0,100.0, 100.0),  // 调整模型亮度
+      });
+      viewer.scene.primitives.add(tileset);
+      if (flyto) {
+        tileset.readyPromise.then(function () {
+          viewer.zoomTo(tileset);
+          // //笛卡尔转换为弧度
+          // var cartographic = SkyScenery.Cartographic.fromCartesian(tileset.boundingSphere.center)
+          //
+          // var lng = SkyScenery.Math.toDegrees(cartographic.longitude) //使用经纬度和弧度的转换,将WGS84弧度坐标系转换到目标值,弧度转度
+          // var lat = SkyScenery.Math.toDegrees(cartographic.latitude)
+          // //计算中心点位置的地表坐标
+          // var surface = SkyScenery.Cartesian3.fromDegrees(lng, lat, 0.0)
+          // //偏移后的坐标
+          // var offset = SkyScenery.Cartesian3.fromDegrees(lng + 0.0044, lat - 0.0021, 0)
+          // var translation = SkyScenery.Cartesian3.subtract(offset, surface, new SkyScenery.Cartesian3())
+          // tileset.modelMatrix = SkyScenery.Matrix4.fromTranslation(translation)
+          // console.log(translation)
+        });
+      }
+      return tileset;
+    },
   }
 };
 </script>

+ 20 - 0
src/components/cards/CardMain.vue

@@ -0,0 +1,20 @@
+<template>
+  <div class="cardMain">
+    <slot name="main"></slot>
+  </div>
+</template>
+
+<script>
+/**
+ * card主题
+ * @author LiuMengxiang
+ * @Date 2024/09/09
+ */
+export default {
+  name: "CardMain",
+  props: {},
+  computed: {},
+};
+</script>
+
+<style></style>

+ 49 - 0
src/components/cards/CardTitle.vue

@@ -0,0 +1,49 @@
+<template>
+  <div class="cardTitle">
+    <div class="cardTitle_f"></div>
+    {{ title }}
+  </div>
+</template>
+
+<script>
+/**
+ * card标题
+ * @author LiuMengxiang
+ * @Date 2024/09/09
+ */
+export default {
+  name: "CardTitle",
+  props: {
+    title: {
+      type: String,
+      required: true,
+    },
+  },
+  computed: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+.cardTitle {
+  position: relative;
+  height: 50px;
+  border-left: 3px solid #1b7ef2;
+  background-image: --webkit-linear-gradient(to right, #1b7ef232, #1b7ef200);
+  background-image: --moz-linear-gradient(to right, #1b7ef232, #1b7ef200);
+  background-image: linear-gradient(to right, #1b7ef232, #1b7ef200);
+  display: flex;
+  align-content: center;
+  align-items: center;
+  color: #fff;
+  font-size: 16px;
+  line-height: 16px;
+  &_f {
+    margin: 0 10px;
+    width: 14px;
+    height: 12px;
+    clip-path: polygon(0 0, 100% 50%, 0 100%, 0 0);
+    background: #29f1fa;
+  }
+}
+</style>

+ 11 - 1
src/main.js

@@ -1,6 +1,16 @@
+import Vue from "vue";
 import { createApp } from 'vue'
 import App from './App.vue'
 import router from './router'
 import store from './store'
+// 添加字体库
+import "./assets/font/font.css";
+// 引入全局样式
+import "./assets/global.css";
+// 引入dayjs库
+import dayjs from "dayjs";
+
+const app = createApp(App).use(store).use(router);
+app.config.globalProperties.$dayjs = dayjs;
+app.mount('#app');
 
-createApp(App).use(store).use(router).mount('#app')

+ 19 - 3
src/views/HomeView.vue

@@ -2,19 +2,24 @@
   <div class="home">
     <Header />
     <Map />
+    <div class="home_MainBox">
+      <CardTitle title="空间资源运营概览" />
+    </div>
   </div>
 </template>
 
-<script> 
+<script>
 import Map from "@/components/Map.vue";
 import Header from "@/components/Header.vue";
+import CardTitle from "@/components/cards/CardTitle.vue";
 
 export default {
   name: "HomeView",
   components: {
     Map,
-    Header
-  }
+    Header,
+    CardTitle,
+  },
 };
 </script>
 
@@ -22,5 +27,16 @@ export default {
 .home {
   width: 100%;
   height: 100%;
+  overflow: hidden;
+  &_MainBox {
+    position: fixed;
+    z-index: 9999;
+    top: 65px;
+    left: 0;
+    width: 500px;
+    height: calc(100vh - 65px);
+    background: #ffffff32;
+    overflow: hidden;
+  }
 }
 </style>