2026-01-25 16:02:00 +08:00
|
|
|
<template>
|
|
|
|
|
<!-- 资源列表 -->
|
|
|
|
|
<dt-card
|
|
|
|
|
class="resource-list card-light"
|
|
|
|
|
icon="iconfont icon-left_icon_remote"
|
2026-03-03 17:59:09 +08:00
|
|
|
:title="$t('device1Manage.title')"
|
2026-01-25 16:02:00 +08:00
|
|
|
:visible.sync="visibleLocale"
|
|
|
|
|
:scroll="false"
|
|
|
|
|
:showClose="false"
|
|
|
|
|
:showDivider="false"
|
|
|
|
|
>
|
|
|
|
|
<template v-slot:header>
|
|
|
|
|
<el-form
|
|
|
|
|
class="query-form"
|
|
|
|
|
:model="queryForm"
|
|
|
|
|
inline
|
|
|
|
|
size="small"
|
|
|
|
|
label-width="100px"
|
|
|
|
|
>
|
|
|
|
|
<!-- <el-form-item label="设备名称">
|
|
|
|
|
<el-input
|
|
|
|
|
v-model="queryForm.name"
|
|
|
|
|
placeholder="请输入设备名称"
|
|
|
|
|
clearable
|
|
|
|
|
></el-input>
|
|
|
|
|
</el-form-item> -->
|
|
|
|
|
<el-form-item label="">
|
2026-01-26 14:19:17 +08:00
|
|
|
<el-select v-model="queryForm.type" popper-class="select-light">
|
2026-01-25 16:02:00 +08:00
|
|
|
<el-option
|
|
|
|
|
v-for="item in deviceTypes"
|
|
|
|
|
:key="item.value"
|
|
|
|
|
:value="item.value"
|
|
|
|
|
:label="item.label"
|
|
|
|
|
></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<!-- <el-form-item class="query-btn">
|
|
|
|
|
<el-button>查询</el-button>
|
|
|
|
|
</el-form-item> -->
|
|
|
|
|
</el-form>
|
|
|
|
|
</template>
|
|
|
|
|
<template v-slot:command>
|
|
|
|
|
<el-button size="mini" icon="el-icon-plus" @click="addDevice"
|
2026-03-03 17:59:09 +08:00
|
|
|
>{{ $t('device1Manage.add') }}{{ deviceMap[queryForm.type] }}</el-button
|
2026-01-25 16:02:00 +08:00
|
|
|
>
|
|
|
|
|
</template>
|
|
|
|
|
<!-- <div class="resource-list__content">
|
|
|
|
|
<div
|
|
|
|
|
v-for="item in resourceList.data"
|
|
|
|
|
:key="item.id"
|
|
|
|
|
class="resource-item"
|
|
|
|
|
@click.stop="resourceClick(item)"
|
|
|
|
|
>
|
|
|
|
|
<span
|
|
|
|
|
class="device-status"
|
|
|
|
|
:class="item.status ? 'device-status__online' : ''"
|
|
|
|
|
></span>
|
|
|
|
|
<span class="icon"><i class="ri-dv-line"></i></span>
|
|
|
|
|
<span class="device-name">{{ item.name }}</span>
|
|
|
|
|
<span
|
|
|
|
|
class="battery"
|
|
|
|
|
:class="getDeviceBatteryClass(item.battery)"
|
|
|
|
|
style="opacity: 0"
|
|
|
|
|
><i class="ri-battery-saver-line"></i>{{ item.battery }}%</span
|
|
|
|
|
>
|
|
|
|
|
<span class="fly-height"
|
|
|
|
|
><i class="ri-expand-vertical-line"></i>{{ item.flyHeight }}m</span
|
|
|
|
|
>
|
|
|
|
|
<span class="device-location"
|
|
|
|
|
><i class="ri-map-pin-line"></i>{{ item.lon }},{{ item.lat }}</span
|
|
|
|
|
>
|
|
|
|
|
<i
|
|
|
|
|
class="iconfont icon-zhuizong device-lock"
|
|
|
|
|
@click.stop="flyToTarget(item.lon, item.lat, item.flyHeight)"
|
|
|
|
|
></i>
|
|
|
|
|
</div>
|
|
|
|
|
</div> -->
|
2026-01-26 14:19:17 +08:00
|
|
|
<el-table
|
|
|
|
|
v-if="isShowTable"
|
|
|
|
|
:data="deviceData"
|
|
|
|
|
stripe
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
height="100%"
|
|
|
|
|
>
|
2026-01-25 16:02:00 +08:00
|
|
|
<template v-if="queryForm.type === 'payload'">
|
2026-03-10 10:30:32 +08:00
|
|
|
<el-table-column prop="name" :label="$t('device1Manage.radarName')">
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="type" :label="$t('device1Manage.radarType')">
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="ip" :label="$t('device1Manage.ip')">
|
|
|
|
|
</el-table-column>
|
2026-01-25 16:02:00 +08:00
|
|
|
</template>
|
2026-01-26 14:19:17 +08:00
|
|
|
<template v-else>
|
2026-03-10 10:30:32 +08:00
|
|
|
<el-table-column prop="name" :label="$t('device1Manage.uavName')">
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="code" :label="$t('device1Manage.uavCode')">
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="ip" :label="$t('device1Manage.ip')">
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column
|
|
|
|
|
prop="createTime"
|
|
|
|
|
:label="$t('device1Manage.createTime')"
|
|
|
|
|
>
|
|
|
|
|
</el-table-column>
|
2026-01-25 16:02:00 +08:00
|
|
|
</template>
|
|
|
|
|
|
2026-03-03 17:59:09 +08:00
|
|
|
<el-table-column :label="$t('device1Manage.operation')" width="200">
|
2026-01-25 16:02:00 +08:00
|
|
|
<template slot-scope="scope">
|
2026-02-06 11:46:13 +08:00
|
|
|
<el-tooltip
|
|
|
|
|
class="item"
|
|
|
|
|
effect="light"
|
2026-03-03 17:59:09 +08:00
|
|
|
:content="$t('device1Manage.edit')"
|
2026-02-06 11:46:13 +08:00
|
|
|
placement="top"
|
2026-02-10 17:05:21 +08:00
|
|
|
:hide-after="1000"
|
2026-02-06 11:46:13 +08:00
|
|
|
>
|
|
|
|
|
<el-button
|
|
|
|
|
type="primary"
|
|
|
|
|
icon="el-icon-edit"
|
|
|
|
|
size="mini"
|
|
|
|
|
circle
|
|
|
|
|
@click="editDevice(scope.row)"
|
|
|
|
|
></el-button>
|
|
|
|
|
</el-tooltip>
|
2026-03-10 10:30:32 +08:00
|
|
|
<!-- <template v-if="queryForm.type === 'payload'">
|
2026-02-06 11:46:13 +08:00
|
|
|
<el-tooltip
|
|
|
|
|
class="item"
|
|
|
|
|
effect="light"
|
2026-03-03 17:59:09 +08:00
|
|
|
:content="$t('device1Manage.manualPowerOn')"
|
2026-02-06 11:46:13 +08:00
|
|
|
placement="top"
|
2026-02-10 17:05:21 +08:00
|
|
|
:hide-after="1000"
|
2026-02-06 11:46:13 +08:00
|
|
|
>
|
|
|
|
|
<el-button
|
2026-02-06 15:45:02 +08:00
|
|
|
icon="el-icon-switch-button"
|
2026-02-06 11:46:13 +08:00
|
|
|
size="mini"
|
|
|
|
|
circle
|
2026-02-06 15:58:32 +08:00
|
|
|
@click="handleRadar(scope.row, 1)"
|
2026-02-06 11:46:13 +08:00
|
|
|
></el-button>
|
|
|
|
|
</el-tooltip>
|
|
|
|
|
|
|
|
|
|
<el-tooltip
|
|
|
|
|
class="item"
|
|
|
|
|
effect="light"
|
2026-03-03 17:59:09 +08:00
|
|
|
:content="$t('device1Manage.endAllTasks')"
|
2026-02-06 11:46:13 +08:00
|
|
|
placement="top"
|
|
|
|
|
>
|
|
|
|
|
<el-button
|
2026-02-06 15:58:32 +08:00
|
|
|
type="danger"
|
2026-02-06 15:45:02 +08:00
|
|
|
icon="el-icon-close"
|
2026-02-06 11:46:13 +08:00
|
|
|
size="mini"
|
|
|
|
|
circle
|
2026-02-10 17:05:21 +08:00
|
|
|
:hide-after="1000"
|
2026-02-06 15:58:32 +08:00
|
|
|
@click="handleRadar(scope.row, 2)"
|
2026-02-06 11:46:13 +08:00
|
|
|
></el-button>
|
|
|
|
|
</el-tooltip>
|
2026-03-10 10:30:32 +08:00
|
|
|
</template> -->
|
2026-02-06 11:46:13 +08:00
|
|
|
<el-tooltip
|
|
|
|
|
class="item"
|
|
|
|
|
effect="light"
|
2026-03-03 17:59:09 +08:00
|
|
|
:content="$t('device1Manage.delete')"
|
2026-02-06 11:46:13 +08:00
|
|
|
placement="top"
|
2026-02-10 17:05:21 +08:00
|
|
|
:hide-after="1000"
|
2026-02-06 11:46:13 +08:00
|
|
|
>
|
|
|
|
|
<el-button
|
|
|
|
|
type="danger"
|
|
|
|
|
icon="el-icon-delete"
|
|
|
|
|
size="mini"
|
|
|
|
|
circle
|
|
|
|
|
@click="deleteDevice(scope.row)"
|
|
|
|
|
></el-button>
|
|
|
|
|
</el-tooltip>
|
2026-01-25 16:02:00 +08:00
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
<dt-dialog
|
|
|
|
|
class="dialog-light"
|
|
|
|
|
:title="device.title"
|
|
|
|
|
:visible.sync="device.visible"
|
|
|
|
|
top="20vh"
|
|
|
|
|
width="22%"
|
|
|
|
|
append-to-body
|
|
|
|
|
:close-on-click-modal="false"
|
|
|
|
|
>
|
|
|
|
|
<div>
|
|
|
|
|
<el-form
|
|
|
|
|
ref="form"
|
|
|
|
|
:model="device.form"
|
2026-03-03 17:59:09 +08:00
|
|
|
:rules="rules"
|
2026-01-25 16:02:00 +08:00
|
|
|
label-position="right"
|
|
|
|
|
label-width="110px"
|
|
|
|
|
class="change-password-form"
|
|
|
|
|
>
|
2026-01-26 14:19:17 +08:00
|
|
|
<template v-if="queryForm.type === 'uav'">
|
2026-03-03 17:59:09 +08:00
|
|
|
<el-form-item :label="$t('device1Manage.uavName')" prop="name1">
|
2026-01-26 14:19:17 +08:00
|
|
|
<el-input
|
|
|
|
|
v-model="device.form.name1"
|
2026-03-03 17:59:09 +08:00
|
|
|
:placeholder="$t('device1Manage.uavNamePlaceholder')"
|
2026-01-26 14:19:17 +08:00
|
|
|
clearable
|
|
|
|
|
size="mini"
|
|
|
|
|
></el-input>
|
|
|
|
|
</el-form-item>
|
2026-01-25 16:02:00 +08:00
|
|
|
|
2026-03-03 17:59:09 +08:00
|
|
|
<el-form-item :label="$t('device1Manage.uavCode')" prop="code">
|
2026-01-26 14:19:17 +08:00
|
|
|
<el-input
|
|
|
|
|
v-model="device.form.code"
|
2026-03-03 17:59:09 +08:00
|
|
|
:placeholder="$t('device1Manage.uavCodePlaceholder')"
|
2026-01-26 14:19:17 +08:00
|
|
|
clearable
|
|
|
|
|
size="mini"
|
|
|
|
|
></el-input>
|
|
|
|
|
</el-form-item>
|
2026-03-03 17:59:09 +08:00
|
|
|
<el-form-item :label="$t('device1Manage.ip')" prop="ip1">
|
2026-01-26 14:19:17 +08:00
|
|
|
<el-input
|
|
|
|
|
v-model="device.form.ip1"
|
2026-03-03 17:59:09 +08:00
|
|
|
:placeholder="$t('device1Manage.ipPlaceholder')"
|
2026-01-26 14:19:17 +08:00
|
|
|
clearable
|
|
|
|
|
size="mini"
|
|
|
|
|
></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</template>
|
|
|
|
|
<template v-else>
|
2026-03-03 17:59:09 +08:00
|
|
|
<el-form-item :label="$t('device1Manage.radarName')" prop="name2">
|
2026-01-26 14:19:17 +08:00
|
|
|
<el-input
|
|
|
|
|
v-model="device.form.name2"
|
2026-03-03 17:59:09 +08:00
|
|
|
:placeholder="$t('device1Manage.radarNamePlaceholder')"
|
2026-01-26 14:19:17 +08:00
|
|
|
clearable
|
|
|
|
|
size="mini"
|
|
|
|
|
></el-input>
|
|
|
|
|
</el-form-item>
|
2026-03-03 17:59:09 +08:00
|
|
|
<el-form-item :label="$t('device1Manage.radarType')" prop="type">
|
2026-01-26 14:19:17 +08:00
|
|
|
<el-input
|
|
|
|
|
v-model="device.form.type"
|
2026-03-03 17:59:09 +08:00
|
|
|
:placeholder="$t('device1Manage.radarTypePlaceholder')"
|
2026-01-26 14:19:17 +08:00
|
|
|
clearable
|
|
|
|
|
size="mini"
|
|
|
|
|
disabled
|
|
|
|
|
></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="IP" prop="ip2">
|
|
|
|
|
<el-input
|
|
|
|
|
v-model="device.form.ip2"
|
2026-03-03 17:59:09 +08:00
|
|
|
:placeholder="$t('device1Manage.ipPlaceholder')"
|
2026-01-26 14:19:17 +08:00
|
|
|
clearable
|
|
|
|
|
size="mini"
|
|
|
|
|
></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</template>
|
2026-01-25 16:02:00 +08:00
|
|
|
</el-form>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="btns" slot="footer">
|
2026-03-10 10:30:32 +08:00
|
|
|
<el-button @click="close" size="mini">{{
|
|
|
|
|
$t('common.cancel')
|
|
|
|
|
}}</el-button>
|
|
|
|
|
<el-button type="primary" size="mini" @click="submitDevice">{{
|
|
|
|
|
$t('common.confirm')
|
|
|
|
|
}}</el-button>
|
2026-01-25 16:02:00 +08:00
|
|
|
</div>
|
|
|
|
|
</dt-dialog>
|
|
|
|
|
</dt-card>
|
|
|
|
|
</template>
|
|
|
|
|
<script src="./index.js"></script>
|
|
|
|
|
<style src="./index.scss" lang="scss" scoped></style>
|