diff --git a/main/manager-web/src/views/DeviceManagement.vue b/main/manager-web/src/views/DeviceManagement.vue index 913ee0cc..9e362edb 100644 --- a/main/manager-web/src/views/DeviceManagement.vue +++ b/main/manager-web/src/views/DeviceManagement.vue @@ -26,9 +26,9 @@ - - - + + + - + - + @@ -86,7 +86,6 @@ - @@ -105,17 +104,19 @@ export default { selectedDevices: [], isAllSelected: false, searchKeyword: "", + activeSearchKeyword: "", currentAgentId: this.$route.query.agentId || '', currentPage: 1, pageSize: 5, deviceList: [], loading: false, userApi: null, + }; }, computed: { filteredDeviceList() { - const keyword = this.searchKeyword.toLowerCase(); + const keyword = this.activeSearchKeyword.toLowerCase(); if (!keyword) return this.deviceList; return this.deviceList.filter(device => (device.model && device.model.toLowerCase().includes(keyword)) || @@ -155,8 +156,8 @@ export default { }, methods: { handleSearch() { + this.activeSearchKeyword = this.searchKeyword; this.currentPage = 1; - this.fetchBindDevices(this.currentAgentId); }, handleSelectionChange(val) { @@ -168,7 +169,53 @@ export default { }, deleteSelected() { - console.log("批量解绑") + if (this.selectedDevices.length === 0) { + this.$message.warning({ + message: '请至少选择一条记录', + showClose: true + }); + return; + } + + this.$confirm(`确认要解绑选中的 ${this.selectedDevices.length} 台设备吗?`, '警告', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + const deviceIds = this.selectedDevices.map(device => device.device_id); + this.batchUnbindDevices(deviceIds); + }); + }, + + batchUnbindDevices(deviceIds) { + const promises = deviceIds.map(id => { + return new Promise((resolve, reject) => { + Api.device.unbindDevice(id, ({ data }) => { + if (data.code === 0) { + resolve(); + } else { + reject(data.msg || '解绑失败'); + } + }); + }); + }); + + Promise.all(promises) + .then(() => { + this.$message.success({ + message: `成功解绑 ${deviceIds.length} 台设备`, + showClose: true + }); + this.fetchBindDevices(this.currentAgentId); + this.selectedDevices = []; + this.isAllSelected = false; + }) + .catch(error => { + this.$message.error({ + message: error || '批量解绑过程中出现错误', + showClose: true + }); + }); }, handleAddDevice() { @@ -237,6 +284,8 @@ export default { }; }) .sort((a, b) => a.rawBindTime - b.rawBindTime); + this.activeSearchKeyword = ""; + this.searchKeyword = ""; } else { this.$message.error(data.msg || '获取设备列表失败'); } @@ -465,4 +514,13 @@ export default { font-weight: bold; padding-bottom: 18px; } + +:deep(.el-table .el-button--text) { + color: #7079aa; +} + +:deep(.el-table .el-button--text:hover) { + color: #5a64b5; +} + diff --git a/main/manager-web/src/views/ParamsManagement.vue b/main/manager-web/src/views/ParamsManagement.vue index 47c4edf9..55fdf2d2 100644 --- a/main/manager-web/src/views/ParamsManagement.vue +++ b/main/manager-web/src/views/ParamsManagement.vue @@ -73,7 +73,6 @@ -