diff --git a/src/views/notification/notice/components/message-edit.vue b/src/views/notification/notice/components/message-edit.vue
index c3a82ee..298a8cd 100644
--- a/src/views/notification/notice/components/message-edit.vue
+++ b/src/views/notification/notice/components/message-edit.vue
@@ -33,9 +33,10 @@
]"
>
@@ -143,27 +144,26 @@
@cancel="deptTreeCancel"
>
发送用户
-
+
全选
+ >
-
+
-
+
{{ record.username }}
@@ -183,7 +183,7 @@
import { CreateRecord } from '@/api/user';
import { FormInstance } from '@arco-design/web-vue/es/form';
import { Message } from '@arco-design/web-vue';
- import { useMessageStore } from '@/store';
+ import { useMessageStore, useUserStore } from '@/store';
import { Editor, Toolbar } from '@wangeditor/editor-for-vue';
import { IEditorConfig } from '@wangeditor/editor'
import '@wangeditor/editor/dist/css/style.css'
@@ -196,6 +196,7 @@
isCreate: Boolean,
});
// 部门树模态框状态
+ const userStore = useUserStore();
const deptVisible=ref(false);
const emit = defineEmits(['refresh']);
const modalTitle = computed(() => {
@@ -217,6 +218,8 @@
const isFullScreen = ref(false);
const mode = 'default';
const selectedIds= ref([]);
+ const selectedNames= ref([]);
+
const toolbarConfig = { excludeKeys: ['uploadVideo', 'insertImage','insertVideo']}
const columns = computed(()=>[
{
@@ -230,45 +233,6 @@
},
])
- // const fieIds = ref(
- // {
- // userId:{
- // label: '用戶',
- // component: 'input',
- // type:'text'
- // },
- // title:{
- // label: '标题',
- // component: 'input',
- // type:'text'
- // },
- // remark:{
- // label: '备注',
- // component: 'input',
- // type:'text'
- // },
- // sms:{
- // label: '短信',
- // component: 'switch',
- // type:'switch'
- // },
- // email:{
- // label: '邮件',
- // component:'switch',
- // type:'switch'
- // },
- // attachmentIds:{
- // label: '附件',
- // component: 'input',
- // type:'text'
- // },
- // richEditor:{
- // label: '内容',
- // component: 'input',
- // type:'text'
- // },
- // },
- // );
const deptTreeData = ref([
{
id: '1',
@@ -301,7 +265,6 @@
]
}
]);
- const selectedDepartmentMembers: any = ref([]);
const renderData = ref([]);
const messageType = computed(() => [
{
@@ -314,8 +277,8 @@
},
]);
// 获取部门树
- const getDeptTree = async () => {
- const res = await getAllDeptTree(1);
+ const getDeptTree = async (deptId: number) => {
+ const res = await getAllDeptTree(deptId || 0);
if (res.status === 200) {
deptTreeData.value = res.data;
}
@@ -325,76 +288,26 @@
deptVisible.value = true;
}
- // 广度优先遍历树,获取选中的成员
- const getSelectedMembers = (treeData: any[], selectedKeys: number[]) => {
- const queue:any = [...treeData];
- const selectedMembers: any[] = [];
- while (queue.length > 0) {
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- const node = queue.shift()!;
- if (selectedKeys.includes(node.id)) {
- if (node.members) {
- selectedMembers.push(...node.members);
- }
- }
- if (node.children) {
- queue.push(...node.children);
- }
+ // 获取用户列表
+ const fetchData = async (deptId: number) => {
+ try {
+ const res = await userStore.getUserList({
+ deptId,
+ });
+ renderData.value = res.data.records;
+ console.log(renderData);
+ } catch (err) {
+ // you can report use errorHandler or other
}
- return selectedMembers;
- }
+ };
+
// 部门树被点击
const handleClickTree = (id: number[]) => {
- // 假设 '1' 是总部门的键
- if (id[0] === 1 && id.length === 1) {
- // 广度优先遍历树,获取所有成员
- const allMembers: any[] = [];
- const queue:any = [...deptTreeData.value];
- while (queue.length > 0) {
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- const node = queue.shift()!;
- if (node.members) {
- allMembers.push(...node.members);
- }
- if (node.children) {
- queue.push(...node.children);
- }
- }
- selectedDepartmentMembers.value = allMembers;
- renderData.value = selectedDepartmentMembers.value;
- return;
- }
- const Members = getSelectedMembers(deptTreeData.value, id);
- selectedDepartmentMembers.value = Members;
+ const [deptId] = id;
+ fetchData(deptId);
}
- // 部门树被选中
- const handleCheckTree = (id: number[]) => {
- if (id[0] === 1 ) { // 假设 '1' 是总部门的键
- const allKeys: number[] = [];
- const traverseTree = (node: any) => {
- if (node.members) {
- node.members.forEach((member: any) => {
- allKeys.push(member.userId);
- });
- }
- if (node.children) {
- node.children.forEach((child: any) => {
- traverseTree(child);
- });
- }
- };
- deptTreeData.value.forEach((node: any) => {
- traverseTree(node);
- });
- selectedIds.value = allKeys;
-
- } else {
- const selectedKeys = getSelectedMembers(deptTreeData.value, id);
- selectedIds.value = selectedKeys.map(item => item.userId);
- }
- };
// 组件被点击
const handleClick = () => {
@@ -446,18 +359,26 @@
setVisible(false);
};
+ const getNamesByIds = (ids: number[]) => {
+ return ids.map(id => renderData.value.find(dept => dept.id === id)?.username).filter(username => username !== undefined) as string[];
+ };
+
// 部门树模态框提交
const deptTreeSubmit = () => {
deptVisible.value = false;
formData.value.userIds = selectedIds.value;
+ selectedNames.value = getNamesByIds(selectedIds.value);
+ console.log(selectedNames.value);
};
// 选择所有用户
const handleCheckAllUsers = () => {
if(selectedIds.value.length ===0 ) {
- handleCheckTree([1]);
+// 遍历 renderData 并提取所有用户的 id
+ selectedIds.value = renderData.value.map(user => user.id);
} else {
selectedIds.value = [];
+
}
};
@@ -468,7 +389,7 @@
deptVisible.value = false;
};
onMounted(async () => {
- await getDeptTree();
+ await getDeptTree(0);
});
diff --git a/src/views/system/user/components/dept-tree.vue b/src/views/system/user/components/dept-tree.vue
index 229c371..f9c55b4 100644
--- a/src/views/system/user/components/dept-tree.vue
+++ b/src/views/system/user/components/dept-tree.vue
@@ -1,11 +1,12 @@
-
+
+
+
+
+