|
@@ -342,28 +342,7 @@
|
|
|
<el-alert v-if="userPickerError" :title="userPickerError" type="error" :closable="false" show-icon style="margin-bottom: 12px">
|
|
<el-alert v-if="userPickerError" :title="userPickerError" type="error" :closable="false" show-icon style="margin-bottom: 12px">
|
|
|
<el-button link type="primary" @click="loadUserPickerData">重新加载</el-button>
|
|
<el-button link type="primary" @click="loadUserPickerData">重新加载</el-button>
|
|
|
</el-alert>
|
|
</el-alert>
|
|
|
- <div class="user-picker-container">
|
|
|
|
|
- <!-- 左侧部门树 -->
|
|
|
|
|
- <div class="user-picker-left">
|
|
|
|
|
- <div class="picker-title">部门列表</div>
|
|
|
|
|
- <el-input v-model="deptFilterText" placeholder="搜索部门" clearable style="margin-bottom: 12px;" />
|
|
|
|
|
- <el-tree
|
|
|
|
|
- ref="deptTreeRef"
|
|
|
|
|
- :data="deptTree"
|
|
|
|
|
- node-key="id"
|
|
|
|
|
- :props="{ label: 'label', children: 'children' }"
|
|
|
|
|
- :filter-node-method="filterDeptNode"
|
|
|
|
|
- :highlight-current="true"
|
|
|
|
|
- default-expand-all
|
|
|
|
|
- @node-click="handleDeptClick"
|
|
|
|
|
- />
|
|
|
|
|
- </div>
|
|
|
|
|
- <!-- 右侧用户列表 -->
|
|
|
|
|
<div class="user-picker-right">
|
|
<div class="user-picker-right">
|
|
|
- <div class="picker-title">
|
|
|
|
|
- 用户列表
|
|
|
|
|
- <span v-if="currentDeptName" class="current-dept">({{ currentDeptName }})</span>
|
|
|
|
|
- </div>
|
|
|
|
|
<el-input v-model="userFilterText" placeholder="搜索账号或姓名,回车查询" maxlength="100" clearable style="margin-bottom: 12px;" @keyup.enter="searchPickerUsers" @clear="searchPickerUsers">
|
|
<el-input v-model="userFilterText" placeholder="搜索账号或姓名,回车查询" maxlength="100" clearable style="margin-bottom: 12px;" @keyup.enter="searchPickerUsers" @clear="searchPickerUsers">
|
|
|
<template #append><el-button :icon="Search" @click="searchPickerUsers" /></template>
|
|
<template #append><el-button :icon="Search" @click="searchPickerUsers" /></template>
|
|
|
</el-input>
|
|
</el-input>
|
|
@@ -379,9 +358,8 @@
|
|
|
<el-table-column label="用户昵称" prop="nickName" min-width="120" show-overflow-tooltip />
|
|
<el-table-column label="用户昵称" prop="nickName" min-width="120" show-overflow-tooltip />
|
|
|
<el-table-column label="部门" prop="deptName" min-width="140" show-overflow-tooltip />
|
|
<el-table-column label="部门" prop="deptName" min-width="140" show-overflow-tooltip />
|
|
|
</el-table>
|
|
</el-table>
|
|
|
- <pagination v-show="userTotal > 0" :total="userTotal" v-model:page="userPage.pageNum" v-model:limit="userPage.pageSize" :auto-scroll="false" layout="total, prev, pager, next" @pagination="loadUserList" />
|
|
|
|
|
|
|
+ <pagination v-show="userTotal > userPage.pageSize" :total="userTotal" v-model:page="userPage.pageNum" v-model:limit="userPage.pageSize" :auto-scroll="false" layout="prev, pager, next" @pagination="loadUserList" />
|
|
|
</div>
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
<template #footer>
|
|
<template #footer>
|
|
|
<div class="dialog-footer">
|
|
<div class="dialog-footer">
|
|
|
<el-button @click="userPickerVisible = false">取 消</el-button>
|
|
<el-button @click="userPickerVisible = false">取 消</el-button>
|
|
@@ -413,7 +391,6 @@ import {
|
|
|
getdbyjlistData,
|
|
getdbyjlistData,
|
|
|
getWarningReasonListData,
|
|
getWarningReasonListData,
|
|
|
getWarningItemListData,
|
|
getWarningItemListData,
|
|
|
- getWarningParticipantDepartments,
|
|
|
|
|
getWarningParticipants,
|
|
getWarningParticipants,
|
|
|
getWarningEquipmentTypeIdsData,
|
|
getWarningEquipmentTypeIdsData,
|
|
|
releaseYjxxData,
|
|
releaseYjxxData,
|
|
@@ -467,22 +444,15 @@ const deviceQuery = reactive({
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
// 用户选择器相关
|
|
// 用户选择器相关
|
|
|
-const deptTree = ref([]);
|
|
|
|
|
const userList = ref([]);
|
|
const userList = ref([]);
|
|
|
const userTotal = ref(0);
|
|
const userTotal = ref(0);
|
|
|
const userPage = reactive({ pageNum: 1, pageSize: 10 });
|
|
const userPage = reactive({ pageNum: 1, pageSize: 10 });
|
|
|
-const deptPickerError = ref("");
|
|
|
|
|
const userListError = ref("");
|
|
const userListError = ref("");
|
|
|
-const userPickerError = computed(() => deptPickerError.value || userListError.value);
|
|
|
|
|
|
|
+const userPickerError = computed(() => userListError.value);
|
|
|
let userRequestVersion = 0;
|
|
let userRequestVersion = 0;
|
|
|
-let deptRequestVersion = 0;
|
|
|
|
|
-const selectedDeptId = ref("");
|
|
|
|
|
-const currentDeptName = ref("");
|
|
|
|
|
const selectedUser = ref(null);
|
|
const selectedUser = ref(null);
|
|
|
const userPickerLoading = ref(false);
|
|
const userPickerLoading = ref(false);
|
|
|
-const deptFilterText = ref("");
|
|
|
|
|
const userFilterText = ref("");
|
|
const userFilterText = ref("");
|
|
|
-const deptTreeRef = ref();
|
|
|
|
|
|
|
|
|
|
const queryParams = reactive({
|
|
const queryParams = reactive({
|
|
|
pageNum: 1,
|
|
pageNum: 1,
|
|
@@ -758,36 +728,13 @@ function resetQuery() {
|
|
|
loadList();
|
|
loadList();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// 部门树过滤
|
|
|
|
|
-watch(deptFilterText, (val) => {
|
|
|
|
|
- deptTreeRef.value?.filter(val);
|
|
|
|
|
-});
|
|
|
|
|
-
|
|
|
|
|
-function filterDeptNode(value, data) {
|
|
|
|
|
- if (!value) return true;
|
|
|
|
|
- return data.label.indexOf(value) !== -1;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
// 用户选择器相关函数
|
|
// 用户选择器相关函数
|
|
|
async function loadUserPickerData() {
|
|
async function loadUserPickerData() {
|
|
|
- const version = ++deptRequestVersion;
|
|
|
|
|
- deptPickerError.value = "";
|
|
|
|
|
userList.value = [];
|
|
userList.value = [];
|
|
|
userTotal.value = 0;
|
|
userTotal.value = 0;
|
|
|
selectedUser.value = null;
|
|
selectedUser.value = null;
|
|
|
userPage.pageNum = 1;
|
|
userPage.pageNum = 1;
|
|
|
- selectedDeptId.value = "";
|
|
|
|
|
- currentDeptName.value = "全部部门";
|
|
|
|
|
- deptTree.value = [];
|
|
|
|
|
- const users = loadUserList();
|
|
|
|
|
- try {
|
|
|
|
|
- const res = await getWarningParticipantDepartments({ warningId: publishRow.value.warningId, role: pickerTarget.value });
|
|
|
|
|
- if (version !== deptRequestVersion || !userPickerVisible.value) return;
|
|
|
|
|
- deptTree.value = [{ id: '', label: '全部部门', children: res.data || [] }];
|
|
|
|
|
- } catch {
|
|
|
|
|
- if (version === deptRequestVersion && userPickerVisible.value) deptPickerError.value = "部门加载失败,请重新加载";
|
|
|
|
|
- }
|
|
|
|
|
- await users;
|
|
|
|
|
|
|
+ await loadUserList();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
async function loadUserList() {
|
|
async function loadUserList() {
|
|
@@ -798,7 +745,7 @@ async function loadUserList() {
|
|
|
userList.value = [];
|
|
userList.value = [];
|
|
|
userTotal.value = 0;
|
|
userTotal.value = 0;
|
|
|
try {
|
|
try {
|
|
|
- const res = await getWarningParticipants({ ...userPage, warningId: publishRow.value.warningId, role: pickerTarget.value, deptId: selectedDeptId.value || undefined, keyword: userFilterText.value.trim() || undefined });
|
|
|
|
|
|
|
+ const res = await getWarningParticipants({ ...userPage, warningId: publishRow.value.warningId, role: pickerTarget.value, keyword: userFilterText.value.trim() || undefined });
|
|
|
if (version !== userRequestVersion || !userPickerVisible.value) return;
|
|
if (version !== userRequestVersion || !userPickerVisible.value) return;
|
|
|
userList.value = res.data?.records || [];
|
|
userList.value = res.data?.records || [];
|
|
|
userTotal.value = Number(res.data?.total || 0);
|
|
userTotal.value = Number(res.data?.total || 0);
|
|
@@ -809,12 +756,6 @@ async function loadUserList() {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-function handleDeptClick(data) {
|
|
|
|
|
- selectedDeptId.value = data.id;
|
|
|
|
|
- currentDeptName.value = data.label;
|
|
|
|
|
- searchPickerUsers();
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
function searchPickerUsers() {
|
|
function searchPickerUsers() {
|
|
|
userPage.pageNum = 1;
|
|
userPage.pageNum = 1;
|
|
|
loadUserList();
|
|
loadUserList();
|
|
@@ -822,7 +763,6 @@ function searchPickerUsers() {
|
|
|
|
|
|
|
|
function closeUserPicker() {
|
|
function closeUserPicker() {
|
|
|
++userRequestVersion;
|
|
++userRequestVersion;
|
|
|
- ++deptRequestVersion;
|
|
|
|
|
selectedUser.value = null;
|
|
selectedUser.value = null;
|
|
|
userPickerLoading.value = false;
|
|
userPickerLoading.value = false;
|
|
|
}
|
|
}
|
|
@@ -835,7 +775,6 @@ function openUserPicker(target) {
|
|
|
pickerTarget.value = target;
|
|
pickerTarget.value = target;
|
|
|
selectedUser.value = null;
|
|
selectedUser.value = null;
|
|
|
userFilterText.value = '';
|
|
userFilterText.value = '';
|
|
|
- deptFilterText.value = '';
|
|
|
|
|
userPickerVisible.value = true;
|
|
userPickerVisible.value = true;
|
|
|
}
|
|
}
|
|
|
|
|
|