ts类型
This commit is contained in:
		@ -53,20 +53,20 @@ export const initMapData = async (type, data) => {
 | 
			
		||||
 | 
			
		||||
      entityObject.load((res) => {
 | 
			
		||||
        // 等模型加载完后再加载压平模型
 | 
			
		||||
        Array.from(window.pressModelMap.keys()).forEach((key) => {
 | 
			
		||||
        Array.from((window as any).pressModelMap.keys()).forEach((key:any) => {
 | 
			
		||||
          if (key.indexOf("_" + data.id) > -1) {
 | 
			
		||||
            const nodes = window.pressModelMap.get(key);
 | 
			
		||||
            const nodes = (window as any).pressModelMap.get(key);
 | 
			
		||||
            if (nodes) {
 | 
			
		||||
              if (nodes.isShow == 1) {
 | 
			
		||||
                // nodeType[nodes.source_type].render(nodes);
 | 
			
		||||
                const flatData = JSON.parse(nodes.params)
 | 
			
		||||
                const entity = window.earth.entityMap.get(flatData.modelId).entity
 | 
			
		||||
                let flat = new YJ.Analysis.Flat(window.earth, entity, {
 | 
			
		||||
                let flat:any = new YJ.Analysis.Flat(window.earth, entity, {
 | 
			
		||||
                  positions: flatData.positions,
 | 
			
		||||
                  height: flatData.height,
 | 
			
		||||
                  name: nodes.sourceName
 | 
			
		||||
                })
 | 
			
		||||
                window.pressModelEntities.set(nodes.id, flat)
 | 
			
		||||
                });
 | 
			
		||||
                (window as any).pressModelEntities.set(nodes.id, flat)
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
@ -19,7 +19,7 @@ export function processBase64Images(base64Data1, base64Data2, callback) {
 | 
			
		||||
      resultCanvas.height = maxHeight;
 | 
			
		||||
 | 
			
		||||
      // 获取Canvas绘图上下文
 | 
			
		||||
      const ctx = resultCanvas.getContext("2d");
 | 
			
		||||
      const ctx:any = resultCanvas.getContext("2d");
 | 
			
		||||
 | 
			
		||||
      // 绘制第一个图像(左上角开始)
 | 
			
		||||
      ctx.drawImage(img1, 0, 0);
 | 
			
		||||
@ -57,7 +57,7 @@ export function combineBase64Images(
 | 
			
		||||
  return new Promise((resolve, reject) => {
 | 
			
		||||
    // 创建canvas元素
 | 
			
		||||
    const canvas = document.createElement("canvas");
 | 
			
		||||
    const ctx = canvas.getContext("2d");
 | 
			
		||||
    const ctx:any = canvas.getContext("2d");
 | 
			
		||||
 | 
			
		||||
    // 设置canvas宽度和高度
 | 
			
		||||
    canvas.width = width1 + width2;
 | 
			
		||||
 | 
			
		||||
@ -43,7 +43,7 @@
 | 
			
		||||
<script setup lang="ts">
 | 
			
		||||
import { useI18n } from 'vue-i18n'
 | 
			
		||||
import uploadFiles from '@/components/upload/uploadFiles.vue'
 | 
			
		||||
import { AuthApi } from '@/api/setting/auth.ts'
 | 
			
		||||
import { AuthApi } from '@/api/setting/auth'
 | 
			
		||||
const { t } = useI18n()
 | 
			
		||||
const authInfo = ref({
 | 
			
		||||
  license_code: '',
 | 
			
		||||
 | 
			
		||||
@ -31,7 +31,7 @@ import dayjs from 'dayjs'
 | 
			
		||||
const { t } = useI18n()
 | 
			
		||||
const { findParentId, findTreeIndex, cusAddNodes } = useTreeNode()
 | 
			
		||||
const fs = require('fs')
 | 
			
		||||
const obj = ref(null)
 | 
			
		||||
const obj:any = ref(null)
 | 
			
		||||
const isclick = ref(false)
 | 
			
		||||
const eventBus: any = inject('bus')
 | 
			
		||||
const initList = (value) => {
 | 
			
		||||
@ -50,7 +50,7 @@ eventBus.on('graffitiObj', (data: never) => {
 | 
			
		||||
 | 
			
		||||
function openLoading(
 | 
			
		||||
  text = '拼命加载中...',
 | 
			
		||||
  option = {
 | 
			
		||||
  option:any = {
 | 
			
		||||
    fullscreen: true,
 | 
			
		||||
    background: 'rgba(0,0,0,0.63)',
 | 
			
		||||
    lock: true
 | 
			
		||||
@ -308,11 +308,11 @@ const methodMap = {
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (window.splitScreen || window.multiViewportMode) {
 | 
			
		||||
    if ((window as any).splitScreen || (window as any).multiViewportMode) {
 | 
			
		||||
      let res = ''
 | 
			
		||||
      let res2 = ''
 | 
			
		||||
      let sdk
 | 
			
		||||
      if (window.splitScreen) {
 | 
			
		||||
      if ((window as any).splitScreen) {
 | 
			
		||||
        sdk = YJ.Global.splitScreen.getSdk()
 | 
			
		||||
      } else {
 | 
			
		||||
        sdk = YJ.Global.multiViewportMode.getSdk()
 | 
			
		||||
@ -323,13 +323,13 @@ const methodMap = {
 | 
			
		||||
      await new YJ.Global.ScreenShot(sdk.sdkP, (data) => {
 | 
			
		||||
        res2 = data
 | 
			
		||||
      })
 | 
			
		||||
      if (window.multiViewportMode) {
 | 
			
		||||
      if ((window as any).multiViewportMode) {
 | 
			
		||||
        processBase64Images(res, res2, (mergedBase64) => {
 | 
			
		||||
          downloadScreen(mergedBase64)
 | 
			
		||||
          // window.multiViewportMode = false;
 | 
			
		||||
        })
 | 
			
		||||
      } else {
 | 
			
		||||
        let doms = document.querySelectorAll('.cesium-widget')
 | 
			
		||||
        let doms:any = document.querySelectorAll('.cesium-widget')
 | 
			
		||||
        let leftWidth = doms[0].offsetWidth
 | 
			
		||||
        let rightWidth = doms[1].offsetWidth
 | 
			
		||||
        combineBase64Images(res2, leftWidth, res, rightWidth)
 | 
			
		||||
@ -356,16 +356,16 @@ const methodMap = {
 | 
			
		||||
  videoRecord() {
 | 
			
		||||
    clickChange.videoRecord = !clickChange.videoRecord
 | 
			
		||||
 | 
			
		||||
    let time = 3
 | 
			
		||||
    let time:any = 3
 | 
			
		||||
    $changeComponentShow('#secondMenu', false)
 | 
			
		||||
    if (clickChange.videoRecord) {
 | 
			
		||||
      // document.addEventListener("keydown", onKeyDown);
 | 
			
		||||
      let loading = openLoading(time, {
 | 
			
		||||
      let loading:any = openLoading(time, {
 | 
			
		||||
        background: 'rgba(0,0,0,0)',
 | 
			
		||||
        fullscreen: false,
 | 
			
		||||
        customClass: 'timer'
 | 
			
		||||
      })
 | 
			
		||||
      let timer = ''
 | 
			
		||||
      let timer:any = ''
 | 
			
		||||
      const p = document.createElement('p')
 | 
			
		||||
      p.style.color = '#fff'
 | 
			
		||||
      p.innerHTML = '再次点击录制结束'
 | 
			
		||||
@ -424,7 +424,7 @@ const methodMap = {
 | 
			
		||||
            height: flat.height
 | 
			
		||||
          }
 | 
			
		||||
          let id = new YJ.Tools().randomString()
 | 
			
		||||
          let paramsData = {
 | 
			
		||||
          let paramsData:any = {
 | 
			
		||||
            params: detailOption,
 | 
			
		||||
            id,
 | 
			
		||||
            sourceName: '压平面',
 | 
			
		||||
@ -435,10 +435,10 @@ const methodMap = {
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          TreeApi.addOtherSource(paramsData)
 | 
			
		||||
          paramsData.isShow = true
 | 
			
		||||
          paramsData.params = JSON.stringify(paramsData.params)
 | 
			
		||||
          pressModelMap.set(id + '_' + selectedNode.id, paramsData)
 | 
			
		||||
          window.pressModelEntities.set(id, flat)
 | 
			
		||||
          paramsData.isShow = true;
 | 
			
		||||
          paramsData.params = JSON.stringify(paramsData.params);
 | 
			
		||||
          (window as any).pressModelMap.set(id + '_' + selectedNode.id, paramsData)
 | 
			
		||||
          (window as any).pressModelEntities.set(id, flat)
 | 
			
		||||
          cusAddNodes(window.treeObj, paramsData.parentId, [paramsData])
 | 
			
		||||
          // //鼠标右键点击事件
 | 
			
		||||
          flat.onRightClick = () => {}
 | 
			
		||||
 | 
			
		||||
@ -70,7 +70,7 @@ eventBus.on('goodsSearchCircleDialog', () => {
 | 
			
		||||
function booleanOverlaps(positions1, flag = 'circle') {
 | 
			
		||||
  let cross = undefined
 | 
			
		||||
  function set3Array(positions) {
 | 
			
		||||
    let arr = []
 | 
			
		||||
    let arr:any = []
 | 
			
		||||
    positions.forEach((item) => {
 | 
			
		||||
      arr.push([item.lng, item.lat])
 | 
			
		||||
    })
 | 
			
		||||
@ -94,19 +94,19 @@ function booleanOverlaps(positions1, flag = 'circle') {
 | 
			
		||||
  // 获取物资处(特定的标注类型)
 | 
			
		||||
  let allNodes = getNode(['point', 'vr', 'picture', 'Feature'])
 | 
			
		||||
  console.log('allNodes', allNodes)
 | 
			
		||||
  let itemInArea = [] //区域内的类型符合的标注
 | 
			
		||||
  let itemInArea:any = [] //区域内的类型符合的标注
 | 
			
		||||
 | 
			
		||||
  for (let i = 0; i < allNodes.length; i++) {
 | 
			
		||||
    let item = allNodes[i]
 | 
			
		||||
    let item:any = allNodes[i]
 | 
			
		||||
    let getAllItemInArea = (lng, lat) => {
 | 
			
		||||
      if (flag == 'circle') {
 | 
			
		||||
        let { center, radius } = positions1
 | 
			
		||||
        let distance = new YJ.Tools().randomString(center, { lng, lat })
 | 
			
		||||
        distance < radius && itemInArea.push(item)
 | 
			
		||||
      } else {
 | 
			
		||||
        let polygon1 = turf.polygon([set3Array(positions1)])
 | 
			
		||||
        let pt = turf.point([lng, lat])
 | 
			
		||||
        turf.booleanPointInPolygon(pt, polygon1) && itemInArea.push(item)
 | 
			
		||||
        let polygon1 = (window as any).turf.polygon([set3Array(positions1)]);
 | 
			
		||||
        let pt = (window as any).turf.point([lng, lat]);
 | 
			
		||||
        (window as any).turf.booleanPointInPolygon(pt, polygon1) && itemInArea.push(item)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    console.log(item, item.sourceType, 'ooooo')
 | 
			
		||||
@ -178,8 +178,8 @@ function renderCanvas(nodes) {
 | 
			
		||||
  console.log('x,y')
 | 
			
		||||
  console.log(x)
 | 
			
		||||
  console.log(y)
 | 
			
		||||
  let notZeroX = []
 | 
			
		||||
  let notZeroY = []
 | 
			
		||||
  let notZeroX:any = []
 | 
			
		||||
  let notZeroY:any = []
 | 
			
		||||
  for (let i = 0; i < y.length; i++) {
 | 
			
		||||
    if (y[i] != 0) {
 | 
			
		||||
      notZeroX.push(x[i])
 | 
			
		||||
@ -193,7 +193,7 @@ function renderCanvas(nodes) {
 | 
			
		||||
  if (!x.length) show.value = false
 | 
			
		||||
  if (show.value) {
 | 
			
		||||
    nextTick(() => {
 | 
			
		||||
      let option = {
 | 
			
		||||
      let option:any = {
 | 
			
		||||
        grid: {
 | 
			
		||||
          top: '20%',
 | 
			
		||||
          left: '5%',
 | 
			
		||||
 | 
			
		||||
@ -66,8 +66,8 @@ eventBus.on('goodsSearchPolgonDialog', () => {
 | 
			
		||||
function booleanOverlaps(positions1, flag = 'circle') {
 | 
			
		||||
  let cross = undefined
 | 
			
		||||
  function set3Array(positions) {
 | 
			
		||||
    let arr = []
 | 
			
		||||
    positions.forEach((item) => {
 | 
			
		||||
    let arr:any = []
 | 
			
		||||
    positions.forEach((item:any) => {
 | 
			
		||||
      arr.push([item.lng, item.lat])
 | 
			
		||||
    })
 | 
			
		||||
    arr.push(arr[0])
 | 
			
		||||
@ -87,19 +87,19 @@ function booleanOverlaps(positions1, flag = 'circle') {
 | 
			
		||||
  //绘制的区域
 | 
			
		||||
  // 获取物资处(特定的标注类型)
 | 
			
		||||
  let allNodes = getNode(['point', 'vr', 'picture', 'Feature'])
 | 
			
		||||
  let itemInArea = [] //区域内的类型符合的标注
 | 
			
		||||
  let itemInArea:any = [] //区域内的类型符合的标注
 | 
			
		||||
 | 
			
		||||
  for (let i = 0; i < allNodes.length; i++) {
 | 
			
		||||
    let item = allNodes[i]
 | 
			
		||||
    let item:any = allNodes[i]
 | 
			
		||||
    let getAllItemInArea = (lng, lat) => {
 | 
			
		||||
      if (flag == 'circle') {
 | 
			
		||||
        let { center, radius } = positions1
 | 
			
		||||
        let distance = new YJ.Tools().randomString(center, { lng, lat })
 | 
			
		||||
        distance < radius && itemInArea.push(item)
 | 
			
		||||
      } else {
 | 
			
		||||
        let polygon1 = turf.polygon([set3Array(positions1)])
 | 
			
		||||
        let pt = turf.point([lng, lat])
 | 
			
		||||
        turf.booleanPointInPolygon(pt, polygon1) && itemInArea.push(item)
 | 
			
		||||
        let polygon1 = (window as any).turf.polygon([set3Array(positions1)]);
 | 
			
		||||
        let pt = (window as any).turf.point([lng, lat]);
 | 
			
		||||
        (window as any).turf.booleanPointInPolygon(pt, polygon1) && itemInArea.push(item)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    switch (item.sourceType) {
 | 
			
		||||
@ -166,8 +166,8 @@ function renderCanvas(nodes) {
 | 
			
		||||
  console.log('x,y')
 | 
			
		||||
  console.log(x)
 | 
			
		||||
  console.log(y)
 | 
			
		||||
  let notZeroX = []
 | 
			
		||||
  let notZeroY = []
 | 
			
		||||
  let notZeroX:any = []
 | 
			
		||||
  let notZeroY:any = []
 | 
			
		||||
  for (let i = 0; i < y.length; i++) {
 | 
			
		||||
    if (y[i] != 0) {
 | 
			
		||||
      notZeroX.push(x[i])
 | 
			
		||||
@ -181,7 +181,7 @@ function renderCanvas(nodes) {
 | 
			
		||||
  if (!x.length) show.value = false
 | 
			
		||||
  if (show.value) {
 | 
			
		||||
    nextTick(() => {
 | 
			
		||||
      let option = {
 | 
			
		||||
      let option:any = {
 | 
			
		||||
        grid: {
 | 
			
		||||
          top: '20%',
 | 
			
		||||
          left: '5%',
 | 
			
		||||
 | 
			
		||||
@ -231,8 +231,6 @@
 | 
			
		||||
import { ref, reactive } from 'vue'
 | 
			
		||||
import { inject } from 'vue'
 | 
			
		||||
import Dialog from '@/components/dialog/baseDialog.vue'
 | 
			
		||||
import Clipboard from 'clipboard'
 | 
			
		||||
import { ElMessage } from 'element-plus'
 | 
			
		||||
 | 
			
		||||
const baseDialog: any = ref(null)
 | 
			
		||||
const eventBus: any = inject('bus')
 | 
			
		||||
@ -260,7 +258,7 @@ const closeCallBack = (e) => {
 | 
			
		||||
  status1.value = false
 | 
			
		||||
}
 | 
			
		||||
const reset = () => {
 | 
			
		||||
  let contentElm = document
 | 
			
		||||
  let contentElm:any = document
 | 
			
		||||
    .getElementsByClassName('proj-convert')[0]
 | 
			
		||||
    .getElementsByClassName('content')[0]
 | 
			
		||||
  contentElm.getElementsByClassName('lng-dms-d')[0].value = null
 | 
			
		||||
 | 
			
		||||
@ -91,11 +91,11 @@
 | 
			
		||||
            </div>
 | 
			
		||||
            <div style="display: flex; margin-bottom: 12px; align-items: center">
 | 
			
		||||
              <span class="label" style="flex: 0 0 60px">经度(x)</span>
 | 
			
		||||
              <input class="input right-x" readonly="readonly" />
 | 
			
		||||
              <input class="input right-x" readonly />
 | 
			
		||||
            </div>
 | 
			
		||||
            <div style="display: flex; margin-bottom: 10px; align-items: center">
 | 
			
		||||
              <span class="label" style="flex: 0 0 60px">纬度(y)</span>
 | 
			
		||||
              <input class="input right-y" readonly="readonly" />
 | 
			
		||||
              <input class="input right-y" readonly />
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
@ -112,8 +112,6 @@
 | 
			
		||||
import { ref, reactive } from 'vue'
 | 
			
		||||
import { inject } from 'vue'
 | 
			
		||||
import Dialog from '@/components/dialog/baseDialog.vue'
 | 
			
		||||
import Clipboard from 'clipboard'
 | 
			
		||||
import { ElMessage } from 'element-plus'
 | 
			
		||||
 | 
			
		||||
const baseDialog: any = ref(null)
 | 
			
		||||
const eventBus: any = inject('bus')
 | 
			
		||||
@ -141,7 +139,7 @@ const closeCallBack = (e) => {
 | 
			
		||||
  tools && tools.projectionConvert(status1.value, () => {})
 | 
			
		||||
}
 | 
			
		||||
const reset = () => {
 | 
			
		||||
  let contentElm = document
 | 
			
		||||
  let contentElm:any = document
 | 
			
		||||
    .getElementsByClassName('projection-convert')[0]
 | 
			
		||||
    .getElementsByClassName('content')[0]
 | 
			
		||||
  contentElm.getElementsByClassName('left-x')[0].value = null
 | 
			
		||||
 | 
			
		||||
@ -69,7 +69,7 @@ const changeHeight = () => {
 | 
			
		||||
  excavation.height = height.value
 | 
			
		||||
}
 | 
			
		||||
const heightInput = () => {
 | 
			
		||||
  let dom = document.getElementById('height')
 | 
			
		||||
  let dom:any = document.getElementById('height')
 | 
			
		||||
  if (height.value < dom.min * 1) {
 | 
			
		||||
    height.value = dom.min * 1
 | 
			
		||||
  } else if (height.value > dom.max * 1) {
 | 
			
		||||
 | 
			
		||||
@ -60,10 +60,10 @@ eventBus.on('flatDialog', (id) => {
 | 
			
		||||
})
 | 
			
		||||
const open = (data) => {
 | 
			
		||||
  baseDialog.value?.open()
 | 
			
		||||
  flat = window.pressModelEntities.get(data.id)
 | 
			
		||||
  flat = (window as any).pressModelEntities.get(data.id)
 | 
			
		||||
 | 
			
		||||
  let params = JSON.parse(data.params)
 | 
			
		||||
  flatMsg = pressModelMap.get(data.id + '_' + params.modelId)
 | 
			
		||||
  flatMsg = (window as any).pressModelMap.get(data.id + '_' + params.modelId)
 | 
			
		||||
  setTimeout(() => {
 | 
			
		||||
    flat.edit(true)
 | 
			
		||||
  }, 100)
 | 
			
		||||
 | 
			
		||||
@ -71,7 +71,7 @@ export const useTree = () => {
 | 
			
		||||
  const onDblClick = (event: MouseEvent, treeId: string, treeNode: any) => {
 | 
			
		||||
    let entityObject
 | 
			
		||||
    if (treeNode.sourceType == 'pressModel') {
 | 
			
		||||
      entityObject = window.pressModelEntities.get(treeNode.id)
 | 
			
		||||
      entityObject = (window as any).pressModelEntities.get(treeNode.id)
 | 
			
		||||
    } else {
 | 
			
		||||
      entityObject = window.earth.entityMap.get(treeNode.id)
 | 
			
		||||
    }
 | 
			
		||||
@ -227,9 +227,9 @@ export const useTree = () => {
 | 
			
		||||
    if (treeNode.sourceType == 'pressModel') {
 | 
			
		||||
      let params = JSON.parse(treeNode.params)
 | 
			
		||||
      let id = treeNode.id + '_' + params.modelId
 | 
			
		||||
      let data = window.pressModelMap.get(id)
 | 
			
		||||
      let data = (window as any).pressModelMap.get(id)
 | 
			
		||||
      data.isShow = treeNode.isShow
 | 
			
		||||
      entityObject = window.pressModelEntities.get(treeNode.id)
 | 
			
		||||
      entityObject = (window as any).pressModelEntities.get(treeNode.id)
 | 
			
		||||
 | 
			
		||||
      if (!entityObject && treeNode.isShow) {
 | 
			
		||||
        const entity = window.earth.entityMap.get(params.modelId).entity
 | 
			
		||||
@ -238,7 +238,7 @@ export const useTree = () => {
 | 
			
		||||
          height: params.height,
 | 
			
		||||
          name: treeNode.sourceName
 | 
			
		||||
        })
 | 
			
		||||
        window.pressModelEntities.set(treeNode.id, entityObject)
 | 
			
		||||
        (window as any).pressModelEntities.set(treeNode.id, entityObject)
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
    } else {
 | 
			
		||||
@ -443,8 +443,8 @@ export const useTree = () => {
 | 
			
		||||
        return 0;
 | 
			
		||||
      })
 | 
			
		||||
      //将模型压平
 | 
			
		||||
      window.pressModelMap = new Map();
 | 
			
		||||
      window.pressModelEntities = new Map();
 | 
			
		||||
      (window as any).pressModelMap = new Map();
 | 
			
		||||
      (window as any).pressModelEntities = new Map();
 | 
			
		||||
      for (let i = res.data.length - 1; i >= 0; i--) {
 | 
			
		||||
        if (!res.data[i].id) {
 | 
			
		||||
          // res.data.splice(i, 1);
 | 
			
		||||
@ -452,7 +452,7 @@ export const useTree = () => {
 | 
			
		||||
        }
 | 
			
		||||
        if (res.data[i].sourceType == "pressModel") {
 | 
			
		||||
          const obj = JSON.parse(res.data[i].params);
 | 
			
		||||
          pressModelMap.set(res.data[i].id + "_" + obj.modelId, res.data[i]);
 | 
			
		||||
          (window as any).pressModelMap.set(res.data[i].id + "_" + obj.modelId, res.data[i]);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      zNodes.value = res.data
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user