|
@@ -28,7 +28,7 @@
|
|
/>
|
|
/>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
- <el-scrollbar height="400px">
|
|
|
|
|
|
+ <el-scrollbar height="450px">
|
|
<el-checkbox-group v-model="selectedDevices">
|
|
<el-checkbox-group v-model="selectedDevices">
|
|
<div
|
|
<div
|
|
v-for="device in filteredDevices"
|
|
v-for="device in filteredDevices"
|
|
@@ -62,10 +62,20 @@
|
|
/>
|
|
/>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
+ <!-- 责任人搜索框 -->
|
|
|
|
+ <div class="filter-input">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="userFilterText"
|
|
|
|
+ :placeholder="t('devicePerson.filterUserPlaceholder')"
|
|
|
|
+ clearable
|
|
|
|
+ prefix-icon="Search"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+
|
|
<el-scrollbar height="450px">
|
|
<el-scrollbar height="450px">
|
|
<el-checkbox-group v-model="selectedUsers" @change="handleUserSelectionChange">
|
|
<el-checkbox-group v-model="selectedUsers" @change="handleUserSelectionChange">
|
|
<div
|
|
<div
|
|
- v-for="user in simpleUsers"
|
|
|
|
|
|
+ v-for="user in filteredUsers"
|
|
:key="user.id"
|
|
:key="user.id"
|
|
class="list-item"
|
|
class="list-item"
|
|
>
|
|
>
|
|
@@ -173,7 +183,8 @@ const emit = defineEmits(['success', 'node-click']) // 定义 success 树点击
|
|
// 响应式数据
|
|
// 响应式数据
|
|
const selectedDevice = ref<number>(0)
|
|
const selectedDevice = ref<number>(0)
|
|
const selectedDevices = ref<number[]>([])
|
|
const selectedDevices = ref<number[]>([])
|
|
-
|
|
|
|
|
|
+// 责任人过滤文本
|
|
|
|
+const userFilterText = ref('')
|
|
const selectedDept = ref('')
|
|
const selectedDept = ref('')
|
|
const selectedUsers = ref<number[]>([])
|
|
const selectedUsers = ref<number[]>([])
|
|
const tempRelations = ref<Array<{
|
|
const tempRelations = ref<Array<{
|
|
@@ -333,6 +344,16 @@ const updateDeviceRelation = (device: IotDeviceVO, userIds: number[]) => {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// 过滤后的人员列表计算属性
|
|
|
|
+const filteredUsers = computed(() => {
|
|
|
|
+ const searchText = userFilterText.value.toLowerCase().trim()
|
|
|
|
+ if (!searchText) return simpleUsers.value
|
|
|
|
+
|
|
|
|
+ return simpleUsers.value.filter(user => {
|
|
|
|
+ return (user.nickname || '').toLowerCase().includes(searchText)
|
|
|
|
+ })
|
|
|
|
+})
|
|
|
|
+
|
|
const clearSelection = () => {
|
|
const clearSelection = () => {
|
|
selectedDevice.value = ''
|
|
selectedDevice.value = ''
|
|
selectedUsers.value = []
|
|
selectedUsers.value = []
|