吉安感知网项目-前端
罗广辉
2026-01-29 c3ed47ab449f0a26cd1ae51f636c08b5be16def2
Merge remote-tracking branch 'origin/master'
6 files modified
83 ■■■■ changed files
applications/drone-command/src/views/basicManage/deviceStock/DeviceScrapDiaLog.vue 26 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/basicManage/deviceStock/fwDeviceScrapApi.js 11 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/flyingHand/FlyingHandDialog.vue 4 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/flyingHand/index.vue 6 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/organizational/agenciesManagement/index.vue 17 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/organizational/zoningManagement/index.vue 19 ●●●● patch | view | raw | blame | history
applications/drone-command/src/views/basicManage/deviceStock/DeviceScrapDiaLog.vue
@@ -13,6 +13,7 @@
                        <el-input class="command-input" v-model="formData.disposeWay" maxlength="200" type="textarea" placeholder="请输入" clearable />
                    </el-form-item>
                </el-col>
                <div v-if="checkAreaBind" class="warning-text"> 注:该设备已绑定区域,报废设备该区域无法正常使用,是否报废?</div>
            </el-row>
        </el-form>
        <template #footer>
@@ -35,7 +36,7 @@
import { computed, ref } from 'vue'
import { ElMessage } from 'element-plus'
import { fieldRules } from '@ztzf/utils'
import { fwDeviceScrapSaveApi } from '@/views/basicManage/deviceStock/fwDeviceScrapApi'
import { fwDeviceScrapSaveApi,fivDevicelcheckAreaBindApi } from '@/views/basicManage/deviceStock/fwDeviceScrapApi'
import dayjs from 'dayjs'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
@@ -105,9 +106,30 @@
    dialogMode.value = mode || 'add'
    visible.value = true
    formData.value.deviceId = row.id
    getCheckAreaBind()
}
const checkAreaBind = ref(false)
function getCheckAreaBind() {
    fivDevicelcheckAreaBindApi({
        deviceId: formData.value.deviceId
    }).then(res => {
        checkAreaBind.value = res.data.data
    })
}
onMounted(() => {})
onMounted(() => {
    getCheckAreaBind()
})
defineExpose({ open })
</script>
<style scoped lang="scss">
.warning-text {
    width: 100%;
    color: red;
    font-size: 14px;
    text-align: center;
    margin: -10px 0 10px 0;
}
</style>
applications/drone-command/src/views/basicManage/deviceStock/fwDeviceScrapApi.js
@@ -26,3 +26,14 @@
        params,
    })
}
// 设置区域绑定校验
export const fivDevicelcheckAreaBindApi = params => {
    return request({
        url: `/drone-fw/device/fwDevice/checkAreaBind`,
        method: 'get',
        params,
    })
}
applications/task-work-order/src/views/orderView/flyingHand/FlyingHandDialog.vue
@@ -30,7 +30,7 @@
      </el-col>
      <el-col :span="12">
        <div class="label">擅长任务类型</div>
        <div class="val">{{ getDictLabel(formData.skilledTaskType, dictObj.skilledTaskType) }}</div>
        <div class="val">{{ getDictLabel(formData.skilledTaskType, dictObj.patrolTaskType) }}</div>
      </el-col>
      <el-col :span="12">
        <div class="label">项目经验</div>
@@ -149,7 +149,7 @@
                            :disabled="dialogType === 'view'"
                        >
                            <el-option
                                v-for="item in dictObj.skilledTaskType"
                                v-for="item in dictObj.patrolTaskType"
                                :key="item.dictKey"
                                :label="item.dictValue"
                                :value="item.dictKey"
applications/task-work-order/src/views/orderView/flyingHand/index.vue
@@ -72,7 +72,7 @@
                    </el-table-column>
                    <el-table-column prop="skilledTaskType" show-overflow-tooltip label="擅长任务类型">
                        <template v-slot="{ row }">
                            {{ getDictLabel(row.skilledTaskType, dictObj.skilledTaskType) }}
                            {{ getDictLabel(row.skilledTaskType, dictObj.patrolTaskType) }}
                        </template>
                    </el-table-column>
                    <el-table-column label="操作" class-name="operation-btns" width="180">
@@ -136,7 +136,7 @@
const flyingHandData = ref({})
const dictObj = ref({
    skilledTaskType: [], // 擅长任务类型
    patrolTaskType: [], // 擅长任务类型
    skilledUavType: [], // 擅长机型
    technicalStrength: [] // 技术特长
})
@@ -212,7 +212,7 @@
// 获取字典
function getDictList() {
    getDictionaryByCode('skilledTaskType,skilledUavType,technicalStrength').then(res => {
    getDictionaryByCode('patrolTaskType,skilledUavType,technicalStrength').then(res => {
        dictObj.value = res.data.data
    })
}
applications/task-work-order/src/views/orderView/organizational/agenciesManagement/index.vue
@@ -48,7 +48,7 @@
    <div class="gd-table-toolbar">
      <el-button :icon="Plus" color="#4C34FF" type="primary" @click="openForm('add')">新增机构</el-button>
      <el-button :icon="Upload" @click="handleImport">导入机构</el-button>
      <el-button :icon="Download" @click="handleExport">导出机构</el-button>
      <el-button :icon="Download" :loading="exportLoading" :disabled="exportLoading" @click="handleExport">导出机构</el-button>
    </div>
    <div class="gd-table-container" v-loading="loading">
@@ -182,6 +182,9 @@
const importRules = ref({
  file: [{ required: true, message: '请上传文件', trigger: ['change'] }],
})
// 导出加载状态
const exportLoading = ref(false)
provide('regionOptions', regionOptions)
provide('dictObj', dictObj)
@@ -351,8 +354,10 @@
}
// 导出机构
function handleExport() {
  agenciesExportApi(searchParams.value).then(res => {
async function handleExport() {
  exportLoading.value = true
  try {
    const res = await agenciesExportApi(searchParams.value)
    const blob = new Blob([res.data])
    const url = URL.createObjectURL(blob)
    const a = document.createElement('a')
@@ -363,7 +368,11 @@
    a.click()
    document.body.removeChild(a)
    URL.revokeObjectURL(url)
  })
  } catch (error) {
    console.error('导出失败:', error)
  } finally {
    exportLoading.value = false
  }
}
onMounted(() => {
applications/task-work-order/src/views/orderView/organizational/zoningManagement/index.vue
@@ -40,7 +40,7 @@
    <div class="gd-table-toolbar">
      <el-button :icon="Plus" color="#4C34FF" type="primary" @click="openForm('add')">新增区划</el-button>
      <el-button :icon="Upload" @click="handleImport">导入区划</el-button>
      <el-button :icon="Download" @click="handleExport">导出区划</el-button>
      <el-button :icon="Download" :loading="exportLoading" :disabled="exportLoading" @click="handleExport">导出区划</el-button>
    </div>
    <div class="gd-table-container" v-loading="loading">
@@ -171,6 +171,9 @@
const importRules = ref({
  file: [{ required: true, message: '请上传文件', trigger: ['change'] }],
})
// 导出加载状态
const exportLoading = ref(false)
provide('regionOptions', regionOptions)
provide('dictObj', dictObj)
@@ -313,18 +316,24 @@
}
// 导出区划
function handleExport() {
  zoningExportApi(searchParams.value).then(res => {
async function handleExport() {
  exportLoading.value = true
  try {
    const res = await zoningExportApi(searchParams.value)
    const blob = new Blob([res.data])
    const url = URL.createObjectURL(blob)
    const a = document.createElement('a')
    a.href = url
    a.download = `区划列表${new Date().getTime()}.xlsx`
    a.download = `区划列表.xlsx`
    document.body.appendChild(a)
    a.click()
    document.body.removeChild(a)
    URL.revokeObjectURL(url)
  })
  } catch (error) {
    console.error('导出失败:', error)
  } finally {
    exportLoading.value = false
  }
}
onMounted(() => {