|
@@ -29,17 +29,24 @@
|
|
|
<el-form :inline="true" @submit.stop.prevent>
|
|
|
<el-form-item label="推送用户:" style="width: 100%;" prop="pushUserid">
|
|
|
<el-select
|
|
|
- v-model="Data.Filter.pushUserid"
|
|
|
+ v-model="Data.Filter.pushUserid"
|
|
|
placeholder="请选择用户"
|
|
|
multiple
|
|
|
style="width: 100%;"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="user in Data.userList"
|
|
|
- :key="user.id"
|
|
|
- :label="`${user.userName} - ${user.nickname || user.phone}`"
|
|
|
- :value="user.id"
|
|
|
- />
|
|
|
+ >
|
|
|
+ <el-option-group
|
|
|
+ v-for="(group, index) in Data.userList"
|
|
|
+ :key="index"
|
|
|
+ :label="`角色:${group.roleName}`"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="user in group.users"
|
|
|
+ :key="user.id"
|
|
|
+ :label="`${user.name}`"
|
|
|
+ :value="user.id"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-option-group>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
@@ -286,7 +293,7 @@ import { TemplateFilterDto } from "/@/api/admin/AlarmService/pushTemplateDto";
|
|
|
import eventBus from "/@/utils/mitt";
|
|
|
import { ElMessage, type FormRules } from 'element-plus'
|
|
|
import { UserListItem } from "/@/api/admin/AlarmService/alarmRulesDto"; // 用户数据类型
|
|
|
-
|
|
|
+import { URLSearchParams } from 'url';
|
|
|
|
|
|
// 条件验证规则
|
|
|
const conditionRules = reactive<FormRules>({
|
|
@@ -357,40 +364,35 @@ const Data = reactive({
|
|
|
|
|
|
const getUserList = async () => {
|
|
|
try {
|
|
|
- const res = await new alarmRulesApi().getList({
|
|
|
- currentPage: 1,
|
|
|
- pageSize: 100,
|
|
|
- filter: {
|
|
|
- userName: "",
|
|
|
- },
|
|
|
- });
|
|
|
-
|
|
|
- // 去重逻辑
|
|
|
- const userSet = new Set<number>();
|
|
|
- const uniqueUsers = res.data.list
|
|
|
- .map((user: UserListItem) => ({
|
|
|
- id: user.userId,
|
|
|
- userName: user.userName,
|
|
|
- value: user.userId,
|
|
|
- nickname: user.nickname,
|
|
|
- phone: user.userPhone,
|
|
|
- }))
|
|
|
- .filter((user: { id: number; }) => {
|
|
|
- if (userSet.has(user.id)) {
|
|
|
- return false;
|
|
|
+ const res = await new alarmRulesApi().getWxUserRole({});
|
|
|
+ console.log('getWxUserRole接口返回数据:', res);
|
|
|
+ const userDataArray = res.data || [];
|
|
|
+ const userMap = new Map<string, UserListItem[]>();
|
|
|
+ userDataArray.forEach((roleObj) => {
|
|
|
+ const roleName = roleObj.roleName;
|
|
|
+ roleObj.users.forEach((userObj) => {
|
|
|
+ if (!userMap.has(roleName)) {
|
|
|
+ userMap.set(roleName, []);
|
|
|
}
|
|
|
- userSet.add(user.id);
|
|
|
- return true;
|
|
|
+ userMap.get(roleName).push({
|
|
|
+ id: userObj.id,
|
|
|
+ name: userObj.name,
|
|
|
+ roleName: roleName
|
|
|
+ });
|
|
|
});
|
|
|
-
|
|
|
- Data.userList = uniqueUsers;
|
|
|
+ });
|
|
|
+ const groupedUsers = Array.from(userMap.entries()).map(([role, users]) => ({
|
|
|
+ roleName: role,
|
|
|
+ users: users
|
|
|
+ }));
|
|
|
+ Data.userList = groupedUsers;
|
|
|
+ console.log('处理后的用户列表:', Data.userList);
|
|
|
} catch (error) {
|
|
|
console.error("获取用户列表失败:", error);
|
|
|
ElMessage.error("用户列表加载失败");
|
|
|
}
|
|
|
};
|
|
|
|
|
|
-
|
|
|
const templateData = reactive({
|
|
|
Filter: {
|
|
|
currentPage: 0,
|