吉安感知网项目-前端
shuishen
2026-02-04 c641c8355c82d2b9a42abeb8198a646909c25ede
feat:任务调度相关优化处理
4 files modified
82 ■■■■ changed files
applications/drone-command/src/styles/common/cockpit.scss 4 ●●●● patch | view | raw | blame | history
applications/drone-command/src/views/detectionCountermeasure/taskSchedule/FormDiaLog.vue 62 ●●●● patch | view | raw | blame | history
applications/drone-command/src/views/detectionCountermeasure/taskSchedule/index.vue 8 ●●●● patch | view | raw | blame | history
applications/drone-command/src/views/detectionCountermeasure/taskSchedule/taskScheduleApi.js 8 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/styles/common/cockpit.scss
@@ -1441,6 +1441,10 @@
                        background: #2E2E48 !important;
                        border: none;
                        box-shadow: none;
                        &.is-disabled {
                            color: #a8abb2;
                        }
                    }
                    .command-date-picker {
applications/drone-command/src/views/detectionCountermeasure/taskSchedule/FormDiaLog.vue
@@ -75,8 +75,8 @@
                <el-col :span="12">
                    <el-form-item label="场景" prop="defenseSceneId">
                        <el-select class="command-select" popper-class="command-select-popper"
                            v-model="formData.defenseSceneId" placeholder="请选择" clearable
                             @change="handleSceneChange">
                            v-model="formData.defenseSceneId" placeholder="选择设备后自动带出" clearable
                            disabled>
                            <el-option v-for="item in sceneList" :key="item.id" :label="item.sceneName"
                                :value="item.id" />
                        </el-select>
@@ -86,8 +86,8 @@
                <el-col :span="12">
                    <el-form-item label="区域" prop="areaDivideId">
                        <el-select class="command-select" popper-class="command-select-popper"
                            v-model="formData.areaDivideId" placeholder="请先选择场景" clearable
                            :disabled="!formData.defenseSceneId" @change="handleAreaChange">
                            v-model="formData.areaDivideId" placeholder="选择设备后自动带出" clearable
                            disabled>
                            <el-option v-for="item in areaList" :key="item.id" :label="item.areaName"
                                :value="item.id" />
                        </el-select>
@@ -97,10 +97,10 @@
                <el-col :span="12">
                    <el-form-item label="调度位置" prop="longitude">
                        <!--                        <el-button @click="selectLocation" style="width: 100%">-->
                        <el-button style="width: 100%">
                        <el-button style="width: 100%" disabled>
                            {{
                                formData.longitude && formData.latitude ? `${formData.longitude}, ${formData.latitude}` :
                                    '选择区域后自动带出'
                                    '选择设备后自动带出'
                            }}
                        </el-button>
                    </el-form-item>
@@ -108,8 +108,8 @@
                <el-col :span="12">
                    <el-form-item label="调度人员" prop="dispatchUser">
                        <el-input class="command-input" v-model="formData.dispatchUser" maxlength="50" placeholder="请输入"
                            clearable />
                        <el-input class="command-input" v-model="formData.dispatchUser" maxlength="50" placeholder="选择设备后自动带出"
                            disabled clearable />
                    </el-form-item>
                </el-col>
                <el-col :span="12">
@@ -164,7 +164,7 @@
import { ElMessage } from 'element-plus'
import { fwTaskScheduleDetailApi, fwTaskScheduleSubmitApi } from './taskScheduleApi'
import { fwAreaDivideListApi } from '@/views/areaManage/partition/partitionApi'
import { fwDefenseSceneListApi } from '@/views/areaManage/sceneConfig/sceneConfigApi'
import { fwDefenseSceneManageListApi } from '@/views/areaManage/sceneManage/sceneManageApi'
import { fieldRules } from '@ztzf/utils'
import { PublicCesium } from '@/utils/cesium/publicCesium'
import * as Cesium from 'cesium'
@@ -229,42 +229,39 @@
    if (device) {
        formData.value.deviceName = device.deviceName
        formData.value.deviceSn = device.deviceSn
        formData.value.deviceStatus = device.deviceStatus
        formData.value.deviceStatus = device.status
        formData.value.dispatchUser = device.charger
        formData.value.areaDivideId = device.areaDivideId
        formData.value.defenseSceneId = device.defenseSceneManageId
        formData.value.longitude = device.longitude
        formData.value.latitude = device.latitude
        deviceStatus.value = String(device.status)
    } else {
        formData.value.deviceName = ''
        formData.value.deviceSn = ''
        formData.value.deviceStatus = ''
        formData.value.dispatchUser = ''
        formData.value.areaDivideId = ''
        formData.value.defenseSceneId = ''
        formData.value.longitude = ''
        formData.value.latitude = ''
        deviceStatus.value = ''
    }
}
async function handleAreaChange (areaId) {
    const find = areaList.value.find(item => item.id === areaId)
    formData.value.longitude = find?.longitude
    formData.value.latitude = find?.latitude
}
// 场景选择变化处理
async function handleSceneChange (sceneId) {
    formData.value.areaDivideId = ''
    if (sceneId) {
        await loadAreaList(sceneId)
    } else {
        areaList.value = []
    }
}
// 加载区域列表
async function loadAreaList (sceneId) {
    const res = await fwAreaDivideListApi({sceneId})
async function loadAreaList () {
    const res = await fwAreaDivideListApi()
    areaList.value = res?.data?.data ?? []
}
// 加载场景列表
async function loadSceneList() {
    const res = await fwDefenseSceneListApi()
    const res = await fwDefenseSceneManageListApi()
    sceneList.value = res?.data?.data ?? []
}
@@ -314,10 +311,6 @@
        ...data,
        dispatchDateRange:
            data.dispatchStartTime && data.dispatchEndTime ? [data.dispatchStartTime, data.dispatchEndTime] : [],
    }
    // 如果有场景ID,加载区域列表
    if (data.defenseSceneId) {
        await loadAreaList(data.defenseSceneId)
    }
}
@@ -413,6 +406,7 @@
onMounted(() => {
    loadSceneList()
    loadAreaList()
})
</script>
<style scoped lang="scss">
applications/drone-command/src/views/detectionCountermeasure/taskSchedule/index.vue
@@ -119,8 +119,7 @@
import { Search, RefreshRight, Plus, Delete } from '@element-plus/icons-vue'
import { nextTick, onMounted, ref, provide } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { fwTaskSchedulePageApi, fwTaskScheduleRemoveApi } from './taskScheduleApi'
import { fwDeviceListApi } from '@/views/basicManage/deviceStock/fwDevice'
import { fwTaskSchedulePageApi, fwTaskScheduleRemoveApi, fwDeviceListByTask } from './taskScheduleApi'
import { getDictionaryByCode } from '@/api/system/dictbiz'
import FormDiaLog from './FormDiaLog.vue'
import { getDictLabel } from '@ztzf/utils'
@@ -232,8 +231,9 @@
// 加载设备列表
async function loadDeviceList() {
    const res = await fwDeviceListApi()
    deviceList.value = res?.data?.data ?? []
    const res = await fwDeviceListByTask()
    deviceList.value = res?.data?.data?.records    ?? []
}
onMounted(() => {
applications/drone-command/src/views/detectionCountermeasure/taskSchedule/taskScheduleApi.js
@@ -35,3 +35,11 @@
        params,
    })
}
export const fwDeviceListByTask = params => {
    return request({
        url: `/drone-fw/device/fwDevice/listByTask`,
        method: 'get',
        params,
    })
}