| | |
| | | <el-dropdown-item command="e"><el-button type="primary" text icon="el-icon-document-delete" |
| | | v-if="permission.fly_device_offline" @click.stop="handleDeviceOffline(scope.row)">注销</el-button> |
| | | </el-dropdown-item> |
| | | <el-dropdown-item command="e"> |
| | | <el-button type="primary" text icon="el-icon-document-delete" v-if="permission.fly_device_offline" |
| | | :disabled="scope.row.dem_status === 1" @click.stop="handleStatus(scope.row)"> |
| | | {{ scope.row.dem_status === 0 ? '初始化地形' : (scope.row.dem_status === 1 ? '初始化中' : '更新地形') }} |
| | | </el-button> |
| | | </el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </template> |
| | | <template #dropdown v-else> |
| | |
| | | getDevices, |
| | | deviceOffline, |
| | | devicesUpdate, |
| | | devicesUpAndDown |
| | | devicesUpAndDown, |
| | | initAirportTerrainHeight, |
| | | deleteAirportTerrainHeight |
| | | } from '@/api/device/device' |
| | | import { deleteByOssId, addOrUpdate as addOrUpdateOssBind } from '@/api/device/ossBind' |
| | | import { getListPage as getOssList } from '@/api/resource/oss' |
| | |
| | | DevicePerShare, |
| | | DockControlPanel, |
| | | }, |
| | | data () { |
| | | data() { |
| | | // const self = this |
| | | |
| | | const validatePass = (rule, value, callback) => { |
| | |
| | | |
| | | computed: { |
| | | ...mapGetters(['permission', 'userInfo']), |
| | | permissionList () { |
| | | permissionList() { |
| | | return { |
| | | addBtn: this.validData(this.permission.air_add, true), |
| | | viewBtn: this.validData(this.permission.air_view, true), |
| | |
| | | editBtn: this.validData(this.permission.air_edit, true), |
| | | } |
| | | }, |
| | | ids () { |
| | | ids() { |
| | | let ids = [] |
| | | this.selectionList.forEach(ele => { |
| | | ids.push(ele.id) |
| | |
| | | return ids.join(',') |
| | | }, |
| | | }, |
| | | destroyed () { |
| | | destroyed() { |
| | | this.treeResolveMap.clear() |
| | | this.websocketMap.forEach((k, v) => { |
| | | if (null != v) { |
| | |
| | | } |
| | | }) |
| | | }, |
| | | mounted () { |
| | | mounted() { |
| | | getRegionTreeAll({ parentCode: this.userInfo.detail.areaCode }).then(res => { |
| | | const column = this.findObject(this.option.column, 'area_code') |
| | | column.dicData = res.data.data ? [res.data.data] : [] |
| | | }) |
| | | }, |
| | | methods: { |
| | | getDockModeText (value) { |
| | | getDockModeText(value) { |
| | | return EDockModeText[value] || '' |
| | | }, |
| | | getModelText (value) { |
| | | getModelText(value) { |
| | | let txt = '离线' |
| | | if (value === 0 || value === 4) { |
| | | txt = '在线' |
| | |
| | | return txt |
| | | }, |
| | | // 关闭所有的webscoket |
| | | closeAllWebsoket () { |
| | | closeAllWebsoket() { |
| | | this.websocketMap.forEach((k, v) => { |
| | | if (null != v) { |
| | | v.close() |
| | |
| | | }) |
| | | }, |
| | | // 连接webSocket |
| | | connectWebSocket (data) { |
| | | connectWebSocket(data) { |
| | | const webSocketId = data.workspace_id |
| | | if (!this.webSocketIdSet.has(webSocketId)) { |
| | | // 防止重复连接 |
| | |
| | | this.useConnectWebSocket1(webSocketId, webSorketUrl) |
| | | } |
| | | }, |
| | | useConnectWebSocket1 (webSocketId, url) { |
| | | useConnectWebSocket1(webSocketId, url) { |
| | | const websocket = new ConnectWebSocket(url) |
| | | // 加入 webscoket map |
| | | this.websocketMap.set(webSocketId, websocket) |
| | | websocket?.registerMessageHandler(this.messageHandler) |
| | | websocket?.initSocket() |
| | | }, |
| | | async messageHandler (payload) { |
| | | async messageHandler(payload) { |
| | | if (!payload) { |
| | | return |
| | | } |
| | |
| | | } |
| | | }) |
| | | }, |
| | | init () { |
| | | init() { |
| | | (this.page = { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | |
| | | this.onLoad(this.page) |
| | | }, |
| | | // 打开权限分享页面 |
| | | handleOpenDevicePerShare (row) { |
| | | handleOpenDevicePerShare(row) { |
| | | var that = this |
| | | this.devicePerShareVisible = true |
| | | this.$nextTick(() => { |
| | |
| | | }) |
| | | }, |
| | | // 打开远程调试 |
| | | handleOpenRemoteDebugging (row) { |
| | | handleOpenRemoteDebugging(row) { |
| | | this.curDeviceInfo = row |
| | | this.remoteDebuggingShow = true |
| | | this.operateTitle = row.nickname + ' - ' + row.device_sn |
| | | }, |
| | | |
| | | // 设备注销 |
| | | handleDeviceOffline (row) { |
| | | handleDeviceOffline(row) { |
| | | this.cancenOperate = true |
| | | this.cancelSNName = row.nickname |
| | | this.cancenOperateRow = row |
| | | |
| | | }, |
| | | |
| | | cancenOperateDo () { |
| | | // 设备 |
| | | handleStatus(row) { |
| | | // dem_status |
| | | if (row.dem_status === 2) { |
| | | deleteAirportTerrainHeight({ dockSn: row.device_sn }).then(res => { |
| | | initAirportTerrainHeight({ dockSn: row.device_sn, centerLon: row.longitude, centerLat: row.latitude, }).then(res => { |
| | | ElMessage.success('操作成功') |
| | | this.init() |
| | | }) |
| | | }) |
| | | } else { |
| | | initAirportTerrainHeight({ dockSn: row.device_sn, centerLon: row.longitude, centerLat: row.latitude, }).then(res => { |
| | | ElMessage.success('操作成功') |
| | | this.init() |
| | | }) |
| | | } |
| | | }, |
| | | |
| | | cancenOperateDo() { |
| | | this.cancenOperate = false |
| | | this.deleteFlag = false |
| | | deviceOffline(this.cancenOperateRow.device_sn, true).then(res => { |
| | |
| | | }, |
| | | |
| | | // 打开存储对象配置页面 |
| | | handleOpenOssSet (row) { |
| | | handleOpenOssSet(row) { |
| | | var that = this |
| | | this.deviceSn = row.device_sn |
| | | this.ossSetBox = true |
| | |
| | | }) |
| | | }, |
| | | // 打开固件管理页面 |
| | | handleOpenFirmwarm (row) { |
| | | handleOpenFirmwarm(row) { |
| | | var that = this |
| | | this.firmwareManageVisible = true |
| | | this.$nextTick(() => { |
| | |
| | | }) |
| | | }, |
| | | // 设备下线 |
| | | dockNotLine (row) { |
| | | dockNotLine(row) { |
| | | let txt = row.hidden_flag === 1 ? '上线' : '下线' |
| | | ElMessageBox.confirm(`确定${txt}该设备吗?`, '提示', { |
| | | confirmButtonText: '确定', |
| | |
| | | .catch(() => { }) |
| | | }, |
| | | // 版本回退点击事件 |
| | | rollFirmware (row) { |
| | | rollFirmware(row) { |
| | | if (row.status == 0) { |
| | | this.$message({ |
| | | type: 'warning', |
| | |
| | | }) |
| | | }, |
| | | // 比较版本大小 |
| | | compare (version1, version2) { |
| | | compare(version1, version2) { |
| | | let arr1 = version1.split('.') |
| | | let arr2 = version2.split('.') |
| | | let length = Math.max(arr1.length, arr2.length) |
| | |
| | | return 0 |
| | | }, |
| | | // 版本回退 |
| | | rollFirmwareConfirm () { |
| | | rollFirmwareConfirm() { |
| | | // 无人机升级/回滚 |
| | | if (this.rollFirmVersion == '') { |
| | | this.$message({ |
| | |
| | | }) |
| | | }, |
| | | // 升级固件按钮事件 |
| | | updateFirmware (row) { |
| | | updateFirmware(row) { |
| | | if (row.status == 0) { |
| | | this.$message({ |
| | | type: 'warning', |
| | |
| | | }) |
| | | }, |
| | | // 确定升级固件版本 |
| | | updateFirmwareConfirm () { |
| | | updateFirmwareConfirm() { |
| | | var that = this |
| | | var arr = [] |
| | | arr.push(that.firmwareInfo) |
| | |
| | | done() |
| | | }) |
| | | }, |
| | | handleOssSetClose () { |
| | | handleOssSetClose() { |
| | | this.ossEnd = '' |
| | | this.deviceSn = '' |
| | | this.bindOssId = null |
| | | }, |
| | | // 存储对象配置确定 |
| | | ossSetConfirm () { |
| | | ossSetConfirm() { |
| | | var that = this |
| | | // 判断是否已选择 |
| | | if (!this.ossEnd) { |
| | |
| | | }) |
| | | }, |
| | | // 取消配置 |
| | | cancelOssSetConfirm () { |
| | | cancelOssSetConfirm() { |
| | | var that = this |
| | | // 判断是否已有配置 |
| | | if (!this.bindOssId) { |
| | |
| | | }) |
| | | }, |
| | | // 取消按钮 oss |
| | | cancelOssSet () { |
| | | cancelOssSet() { |
| | | this.ossEnd = '' |
| | | this.deviceSn = '' |
| | | this.bindOssId = null |
| | | this.ossSetBox = false |
| | | }, |
| | | rowSave (row, done, loading) { |
| | | rowSave(row, done, loading) { |
| | | let areaCode = row.area_code |
| | | if (Array.isArray(areaCode)) { |
| | | areaCode = areaCode[areaCode.length - 1] |
| | |
| | | } |
| | | ) |
| | | }, |
| | | rowUpdate (row, index, done, loading) { |
| | | rowUpdate(row, index, done, loading) { |
| | | const submitData = { |
| | | ...row, |
| | | area_code: row.area_code.split(',').pop(), |
| | |
| | | } |
| | | ) |
| | | }, |
| | | rowDel (row) { |
| | | rowDel(row) { |
| | | this.$confirm('确定将选择数据删除?', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | |
| | | }) |
| | | }) |
| | | }, |
| | | searchReset () { |
| | | searchReset() { |
| | | this.query = {} |
| | | this.onLoad(this.page) |
| | | }, |
| | | searchChange (params, done) { |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | | selectionChange (list) { |
| | | selectionChange(list) { |
| | | this.selectionList = list |
| | | }, |
| | | selectionClear () { |
| | | selectionClear() { |
| | | this.selectionList = [] |
| | | this.$refs.crud.toggleSelection() |
| | | }, |
| | | handleDelete () { |
| | | handleDelete() { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning('请选择至少一条数据') |
| | | return |
| | |
| | | this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | async getFullAreaCode (areaCode) { |
| | | async getFullAreaCode(areaCode) { |
| | | console.log('getFullAreaCode', areaCode) |
| | | if (!areaCode) return '' |
| | | |
| | |
| | | return `${provinceCode},${cityCode},${code}` |
| | | } |
| | | }, |
| | | beforeOpen (done, type) { |
| | | beforeOpen(done, type) { |
| | | if (['edit', 'view'].includes(type)) { |
| | | getDetail(this.form.id).then(async res => { |
| | | const data = res.data.data |
| | |
| | | }) |
| | | } |
| | | }, |
| | | currentChange (currentPage) { |
| | | currentChange(currentPage) { |
| | | this.page.currentPage = currentPage |
| | | }, |
| | | sizeChange (pageSize) { |
| | | sizeChange(pageSize) { |
| | | this.page.pageSize = pageSize |
| | | }, |
| | | refreshChange () { |
| | | refreshChange() { |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onLoad (page, params = {}) { |
| | | onLoad(page, params = {}) { |
| | | // this.closeAllWebsoket(); |
| | | const { releaseTimeRange } = this.query |
| | | let values = { |
| | |
| | | this.selectionClear() |
| | | }) |
| | | }, |
| | | treeLoad (tree, treeNode, resolve) { |
| | | treeLoad(tree, treeNode, resolve) { |
| | | // 保存resolve |
| | | this.treeResolveMap.set(tree.child_sn, resolve) |
| | | var params = { |
| | |
| | | // }) |
| | | // }, |
| | | // 设置无人机操作密码 |
| | | setOperatePasswordConfirm () { |
| | | setOperatePasswordConfirm() { |
| | | var that = this |
| | | this.$refs.passwordForm.validate(valid => { |
| | | if (valid) { |
| | |
| | | }) |
| | | }, |
| | | // 操作密码设置 |
| | | handleOperatePassword (row) { |
| | | handleOperatePassword(row) { |
| | | this.operatePasswordSetBox = true |
| | | this.passwordForm.id = row.id |
| | | }, |