From bb52b013fa9ffd86124ddc79abd42fb26f48baca Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Fri, 30 Jan 2026 15:52:11 +0800
Subject: [PATCH] feat: 共享删除修改
---
applications/drone-command/src/views/permissionManage/permissionDept/ShareDiaLog.vue | 40 ++++++++++++++++---
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/index.vue | 2
applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue | 40 +++++++++++++-------
3 files changed, 60 insertions(+), 22 deletions(-)
diff --git a/applications/drone-command/src/views/permissionManage/permissionDept/ShareDiaLog.vue b/applications/drone-command/src/views/permissionManage/permissionDept/ShareDiaLog.vue
index bbbf716..793751e 100644
--- a/applications/drone-command/src/views/permissionManage/permissionDept/ShareDiaLog.vue
+++ b/applications/drone-command/src/views/permissionManage/permissionDept/ShareDiaLog.vue
@@ -21,7 +21,11 @@
<el-table-column type="index" show-overflow-tooltip width="64" label="序号" />
<el-table-column prop="deviceName" show-overflow-tooltip label="设备名称" />
<el-table-column prop="deviceSn" show-overflow-tooltip label="设备SN" />
- <el-table-column prop="deviceType" show-overflow-tooltip label="设备类型" />
+ <el-table-column prop="deviceType" show-overflow-tooltip label="设备类型">
+ <template v-slot="{ row }">
+ {{ getDictLabel(row.deviceType, dictObj.deviceType) }}
+ </template>
+ </el-table-column>
<el-table-column prop="belongDeptName" show-overflow-tooltip label="所属部门" />
</el-table>
</div>
@@ -44,6 +48,8 @@
import { ref, nextTick } from 'vue'
import { ElMessage } from 'element-plus'
import { nonDeptAreaDevicesApi, fwDevicePerShareSaveApi, fwDevicePerShareRemoveApi } from './fwDevicePerShareApi'
+import { getDictionaryByCode } from '@/api/system/dictbiz'
+import { getDictLabel } from '@ztzf/utils'
const emit = defineEmits(['success'])
const visible = defineModel() // 弹框显隐
@@ -53,7 +59,18 @@
const tableRef = ref(null) // 表格实例
const selectedRows = ref([]) // 当前选中的行
const originalSharedIds = ref([]) // 原始已共享的设备ID集合
+const originalSharedMap = ref({}) // 原始已共享的设备ID与shareId的映射
const currentDeptId = ref(null) // 当前操作的部门ID
+const dictObj = ref({
+ deviceType: [], // 设备类型
+})
+
+// 获取字典
+function getDictList() {
+ getDictionaryByCode('deviceType').then(res => {
+ dictObj.value = res.data.data
+ })
+}
// 选中变化
function handleSelectionChange(rows) {
@@ -71,8 +88,13 @@
try {
const res = await nonDeptAreaDevicesApi({ loanToDeptId: currentDeptId.value })
deviceList.value = res?.data?.data ?? []
- // 记录原始已共享的设备ID
- originalSharedIds.value = deviceList.value.filter(item => item.isShared).map(item => item.id)
+ // 记录原始已共享的设备ID和shareId映射
+ const sharedDevices = deviceList.value.filter(item => item.isShared)
+ originalSharedIds.value = sharedDevices.map(item => item.id)
+ originalSharedMap.value = sharedDevices.reduce((map, item) => {
+ map[item.id] = item.shareId
+ return map
+ }, {})
// 回显已共享的设备勾选状态
nextTick(() => {
deviceList.value.forEach(item => {
@@ -95,8 +117,11 @@
// 计算需要新增的设备(当前选中但原来未共享)
const toAddDevices = selectedRows.value.filter(item => !originalSharedIds.value.includes(item.id))
- // 计算需要删除的设备(原来共享但当前未选中)
- const toRemoveIds = originalSharedIds.value.filter(id => !currentSelectedIds.includes(id))
+ // 计算需要删除的设备(原来共享但当前未选中),使用shareId
+ const toRemoveShareIds = originalSharedIds.value
+ .filter(id => !currentSelectedIds.includes(id))
+ .map(id => originalSharedMap.value[id])
+ .filter(Boolean)
const promises = []
@@ -112,8 +137,8 @@
}
// 调用删除接口
- if (toRemoveIds.length > 0) {
- promises.push(fwDevicePerShareRemoveApi({ ids: toRemoveIds.join(',') }))
+ if (toRemoveShareIds.length > 0) {
+ promises.push(fwDevicePerShareRemoveApi({ ids: toRemoveShareIds.join(',') }))
}
if (promises.length > 0) {
@@ -134,6 +159,7 @@
async function open({ row } = {}) {
currentDeptId.value = row?.id
selectedRows.value = []
+ getDictList()
await getDeviceList()
}
diff --git a/applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/index.vue b/applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/index.vue
index 5d5e76d..bfaf131 100644
--- a/applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/index.vue
+++ b/applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/index.vue
@@ -72,7 +72,7 @@
</el-form>
<div class="gd-table-toolbar">
- <el-button v-if="permission.flyOrder_add" :icon="Plus" color="#4C34FF" type="primary" @click="openForm('add')">新增</el-button>
+ <el-button v-if="permission.flyOrder_add" :icon="Plus" color="#4C34FF" type="primary" @click="openForm('add')">拆分工单</el-button>
</div>
<div class="gd-table-container" v-loading="loading">
diff --git a/applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue b/applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
index 2e4ae11..a9e3736 100644
--- a/applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
+++ b/applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
@@ -176,20 +176,18 @@
</div>
<div class="rightBox" v-if="!dialogReadonly">
<div class="detail-title">推荐设备</div>
- <template v-if="formData.deviceLoadDemand && pointList.length">
- <el-table
- ref="deviceTableRef"
- :data="deviceList"
- row-key="id"
- @selection-change="handleDeviceSelectionChange"
- >
- <el-table-column type="selection" width="55" :reserve-selection="true" />
- <el-table-column prop="nickname" label="设备名称" />
- <el-table-column prop="deviceName" label="设备型号" />
- <el-table-column prop="devicePayload" label="设备负载" />
- </el-table>
- </template>
- <div v-else class="tipSelect">请先选择设备需求并在地图上绘制工单范围</div>
+ <el-table
+ :empty-text="(formData.deviceLoadDemand && pointList.length) ? '暂无数据' : '请先选择设备需求并在地图上绘制工单范围'"
+ ref="deviceTableRef"
+ :data="(formData.deviceLoadDemand && pointList.length) ? deviceList : []"
+ row-key="id"
+ @selection-change="handleDeviceSelectionChange"
+ >
+ <el-table-column type="selection" width="55" :reserve-selection="true" />
+ <el-table-column prop="nickname" label="设备名称" />
+ <el-table-column prop="deviceName" label="设备型号" />
+ <el-table-column prop="devicePayload" label="设备负载" />
+ </el-table>
</div>
</div>
@@ -637,6 +635,18 @@
</script>
<style lang="scss" scoped>
+.el-table{
+ height: 0;
+ flex: 1;
+ :deep(){
+ .el-scrollbar__view{
+ height: 100%;
+ }
+ .el-table__empty-text{
+ line-height: normal;
+ }
+ }
+}
.content {
display: flex;
gap: 0 20px;
@@ -658,6 +668,8 @@
.rightBox {
width: 350px;
+ display: flex;
+ flex-direction: column;
.title {
font-weight: 500;
font-size: 14px;
--
Gitblit v1.9.3