diff --git a/main/manager-web/src/views/DeviceManagement.vue b/main/manager-web/src/views/DeviceManagement.vue index 35238371..55f781fa 100644 --- a/main/manager-web/src/views/DeviceManagement.vue +++ b/main/manager-web/src/views/DeviceManagement.vue @@ -74,7 +74,7 @@
- {{ isAllSelected ? '取消全选' : '全选' }} + {{ isCurrentPageAllSelected ? '取消全选' : '全选' }} 验证码绑定 @@ -128,8 +128,6 @@ export default { return { addDeviceDialogVisible: false, manualAddDeviceDialogVisible: false, - selectedDevices: [], - isAllSelected: false, searchKeyword: "", activeSearchKeyword: "", currentAgentId: this.$route.query.agentId || '', @@ -160,6 +158,11 @@ export default { pageCount() { return Math.ceil(this.filteredDeviceList.length / this.pageSize); }, + // 计算当前页是否全选 + isCurrentPageAllSelected() { + return this.paginatedDeviceList.length > 0 && + this.paginatedDeviceList.every(device => device.selected); + }, visiblePages() { const pages = []; const maxVisible = 3; @@ -205,16 +208,15 @@ export default { }, handleSelectAll() { - this.isAllSelected = !this.isAllSelected; + const shouldSelectAll = !this.isCurrentPageAllSelected; this.paginatedDeviceList.forEach(row => { - row.selected = this.isAllSelected; + row.selected = shouldSelectAll; }); - this.selectedDevices = this.paginatedDeviceList.filter(device => device.selected); }, deleteSelected() { - this.selectedDevices = this.paginatedDeviceList.filter(device => device.selected); - if (this.selectedDevices.length === 0) { + const selectedDevices = this.paginatedDeviceList.filter(device => device.selected); + if (selectedDevices.length === 0) { this.$message.warning({ message: '请至少选择一条记录', showClose: true @@ -222,12 +224,12 @@ export default { return; } - this.$confirm(`确认要解绑选中的 ${this.selectedDevices.length} 台设备吗?`, '警告', { + this.$confirm(`确认要解绑选中的 ${selectedDevices.length} 台设备吗?`, '警告', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { - const deviceIds = this.selectedDevices.map(device => device.device_id); + const deviceIds = selectedDevices.map(device => device.device_id); this.batchUnbindDevices(deviceIds); }); }, @@ -250,8 +252,6 @@ export default { showClose: true }); this.fetchBindDevices(this.currentAgentId); - this.selectedDevices = []; - this.isAllSelected = false; }) .catch(error => { this.$message.error({ @@ -355,7 +355,8 @@ export default { isEdit: false, _submitting: false, otaSwitch: device.autoUpdate === 1, - rawBindTime: new Date(device.createDate).getTime() + rawBindTime: new Date(device.createDate).getTime(), + selected: false }; }) .sort((a, b) => a.rawBindTime - b.rawBindTime);