无人机管理后台前端(已迁走)
张含笑
2025-11-25 cb7ee6216f6067cc80aab52536ebc9c0f0ba1b7d
Merge branch 'refs/heads/feature/v8.0/8.0.3' into test
6 files modified
99 ■■■■ changed files
src/views/authority/role.vue 14 ●●●●● patch | view | raw | blame | history
src/views/dataCenter/dataCenter.vue 21 ●●●●● patch | view | raw | blame | history
src/views/job/components/DeviceJobDetails.vue 21 ●●●●● patch | view | raw | blame | history
src/views/tickets/component/AddEditDetails.vue 10 ●●●●● patch | view | raw | blame | history
src/views/tickets/component/SearchBox.vue 10 ●●●● patch | view | raw | blame | history
src/views/tickets/orderLog.vue 23 ●●●● patch | view | raw | blame | history
src/views/authority/role.vue
@@ -24,6 +24,11 @@
                   :props="props">
          </el-tree>
        </el-tab-pane>
        <el-tab-pane label="大屏菜单">
          <el-tree :data="menuGrantListOld" show-checkbox node-key="id" ref="treeMenuApp" :default-checked-keys="menuTreeObjOld"
                   :props="props">
          </el-tree>
        </el-tab-pane>
        <!-- <el-tab-pane label="数据权限">
          <el-tree
            :data="dataScopeGrantList"
@@ -82,11 +87,13 @@
      },
      menuGrantList: [],
      menuGrantListApp: [],
      menuGrantListOld: [],
      dataScopeGrantList: [],
      apiScopeGrantList: [],
      apiGrantList: [],
      menuTreeObj: [],
      menuTreeObjApp: [],
      menuTreeObjOld: [],
      dataScopeTreeObj: [],
      apiScopeTreeObj: [],
      selectionList: [],
@@ -350,6 +357,13 @@
          this.box = true
        })
      })
      grantTree({sysType: 2}).then(res => {
        this.menuGrantListOld = res.data.data.menu
        getRole(this.ids).then(res => {
          this.menuTreeObjOld = res.data.data.menu
          this.box = true
        })
      })
    },
    handleDelete () {
      if (this.selectionList.length === 0) {
src/views/dataCenter/dataCenter.vue
@@ -308,7 +308,9 @@
            class="videoBox"
            ref="videoRefs"
            controls
           preload="auto"
              @play="handleVideoPlay"
              @ended="handleVideoEnded(index)"
            :src="currentVideoUrl"
          ></video>
        </div>
@@ -364,6 +366,23 @@
const currentAreaPosition = ref({ height: 1987280, latitude: 27.636112, longitude: 115.732975 });
let handler = null;
const switchFolders = ref(false)
// 视频播放事件处理
const handleVideoPlay = (event) => {
  if (event.target.playbackRate !== 0.75) {
    event.target.playbackRate = 0.75
  }
}
const handleVideoEnded = index => {
  // 获取当前视频
  const video = videoRefs.value[index]
  // 重置视频播放时间为 0
  video.currentTime = 0
  // 重新加载视频
  video.load()
}
function bytesToMB(bytes, decimalPlaces = 2) {
  if (typeof bytes !== 'number' || bytes < 0) return '0';
  return (bytes / 1048576).toFixed(decimalPlaces) + ' MB';
src/views/job/components/DeviceJobDetails.vue
@@ -115,7 +115,9 @@
                        :src="currentVideoUrl"
                        :style="{ width: pxToRem(1567), height: '80vh' }"
                        controls
            preload="auto"
            @play="handleVideoPlay"
            @ended="handleVideoEnded(index)"
                    ></video>
                </div>
            </el-dialog>
@@ -169,6 +171,23 @@
const VideoShow = ref(false)
const showAll = ref(false) // 是否展示全部
let loadingData
// 视频播放事件处理
const handleVideoPlay = (event) => {
  if (event.target.playbackRate !== 0.75) {
    event.target.playbackRate = 0.75
  }
}
const handleVideoEnded = index => {
  // 获取当前视频
  const video = videoRefs.value[index]
  // 重置视频播放时间为 0
  video.currentTime = 0
  // 重新加载视频
  video.load()
}
// 原图
const yuanImages = ref([])
function convertVideoUrlToThumbnail(videoUrl) {
src/views/tickets/component/AddEditDetails.vue
@@ -364,12 +364,14 @@
      positions.unshift({latitude: maxItem.latitude, longitude: maxItem.longitude, height:maxItem.drone_height })
      positions.push({latitude: maxItem.latitude, longitude: maxItem.longitude, height:maxItem.drone_height})
      let resultHeight = 0
      let valueHeight = 0
      await getWaylineMaxTerrainHeight(positions).then(res => {
        resultHeight = safeHeight.value > (res.data.data + 30) ? safeHeight.value : (res.data.data + 30)
        resultHeight = (safeHeight.value + maxItem.drone_height) > (res.data.data + 30) ? (safeHeight.value + maxItem.drone_height) : (res.data.data + 30)
        console.log(resultHeight,maxItem.drone_height, '999')
        valueHeight = (resultHeight - maxItem.drone_height) > backHeight ? _.round(resultHeight - maxItem.drone_height) : 0
      })
      let valueHeight = _.round(backHeight - resultHeight, 2)
      if (valueHeight < 0) {
        await ElMessageBox.confirm(`当前返航高度存在安全隐患,建议调整为${resultHeight}米以上后进行发布`, '提示', {
      if (valueHeight > 0) {
        await ElMessageBox.confirm(`当前返航高度存在安全隐患,建议调整为${valueHeight}米以上后进行发布`, '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
src/views/tickets/component/SearchBox.vue
@@ -115,6 +115,9 @@
const aiTypeList = inject('aiTypeList')
watch(activeTab, (newTab, oldTab) => {
  if (newTab === 'all') {
    searchForm.status = ''
  }
  if(newTab === 'WAIT_AUDIT') {
    searchForm.status = '1'
  }
@@ -124,7 +127,8 @@
  if(newTab === 'PASS') {
    searchForm.status = '3'
  }
}, { immediate: true })
  emit('search', searchForm);
})
// 周期
const cycles = ref(['每天', '周一', '周二', '周三', '周四', '周五', '周六', '周末', '周天', '工作日'])
@@ -172,7 +176,9 @@
  searchForm.deal_time = ""
  searchForm.file_id = ""
  searchForm.key_word = ""
  searchForm.status = ''
  if (activeTab.value === 'all') {
    searchForm.status = ''
  }
  searchForm.rep_fre_type = ''
  dateRange.value = ''
  searchForm.create_start_date = null
src/views/tickets/orderLog.vue
@@ -173,17 +173,17 @@
// tab切换
function handleTabChange (tab) {
  activeTab.value = tab.paneName
  orderListParams.status = ''
  if (tab.paneName === 'WAIT_AUDIT') {
    orderListParams.status = '1'
  } else if (tab.paneName === 'REJECTED') {
    orderListParams.status = '2'
  } else if (tab.paneName === 'PASS') {
    orderListParams.status = '3'
  } else if (tab.paneName === 'DRAFT') {
    orderListParams.status = '0'
  }
  refreshGetOrderList()
  // orderListParams.status = ''
  // if (tab.paneName === 'WAIT_AUDIT') {
  //   orderListParams.status = '1'
  // } else if (tab.paneName === 'REJECTED') {
  //   orderListParams.status = '2'
  // } else if (tab.paneName === 'PASS') {
  //   orderListParams.status = '3'
  // } else if (tab.paneName === 'DRAFT') {
  //   orderListParams.status = '0'
  // }
  // refreshGetOrderList()
}
// 更新统计数
@@ -260,7 +260,6 @@
const searchClick = params => {
  orderListParams.current = 1
  orderListParams.size = 10
  console.log('333', params)
  orderListParams.searchParams = params
  getTableList()
}