fix
This commit is contained in:
@@ -20,12 +20,13 @@ export interface UserItem {
|
||||
export interface UserListResponse {
|
||||
code: number;
|
||||
message: string;
|
||||
data: UserItem[];
|
||||
data?: UserItem[] | { data?: UserItem[] };
|
||||
details?: UserItem[] | { data?: UserItem[] };
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户列表
|
||||
*/
|
||||
export const fetchUserList = async (data: any) => {
|
||||
return request.post<UserListResponse>('/rbac2/v1/user/list', data);
|
||||
return request.post<UserListResponse>('/rbac2/v1/user/list', data, { needWorkspace: true });
|
||||
};
|
||||
|
||||
@@ -119,11 +119,14 @@
|
||||
placeholder="请选择处理人"
|
||||
allow-search
|
||||
allow-clear
|
||||
:filter-option="false"
|
||||
:loading="userLoading"
|
||||
@search="handleUserSearch"
|
||||
:style="{ width: '100%' }"
|
||||
:trigger-props="selectTriggerProps"
|
||||
>
|
||||
<a-option v-for="user in userOptions" :key="user.id" :value="user.id">
|
||||
{{ user.name || user.username }} ({{ user.username }})
|
||||
{{ user.name || user.account }} ({{ user.account }})
|
||||
</a-option>
|
||||
</a-select>
|
||||
</template>
|
||||
@@ -133,9 +136,18 @@
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="默认处理人">
|
||||
<a-select v-model="defaultAssigneeId" placeholder="请选择默认处理人" allow-search allow-clear :loading="userLoading">
|
||||
<a-select
|
||||
v-model="defaultAssigneeId"
|
||||
placeholder="请选择默认处理人"
|
||||
allow-search
|
||||
allow-clear
|
||||
:filter-option="false"
|
||||
:loading="userLoading"
|
||||
@search="handleUserSearch"
|
||||
:trigger-props="selectTriggerProps"
|
||||
>
|
||||
<a-option v-for="user in userOptions" :key="user.id" :value="user.id">
|
||||
{{ user.name || user.username }} ({{ user.username }})
|
||||
{{ user.name || user.account }} ({{ user.account }})
|
||||
</a-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
@@ -153,6 +165,7 @@ import { ref, reactive, watch } from 'vue'
|
||||
import { Message } from '@arco-design/web-vue'
|
||||
import type { FormInstance } from '@arco-design/web-vue'
|
||||
import { createPolicy, fetchTemplateList, fetchSeverityList, fetchFeedbackTemplateOptions } from '@/api/ops/alertPolicy'
|
||||
import { fetchUserList } from '@/api/ops/rbac2'
|
||||
|
||||
interface Props {
|
||||
visible: boolean
|
||||
@@ -201,11 +214,7 @@ const formRules = {
|
||||
|
||||
const templateOptions = ref<any[]>([])
|
||||
const feedbackTemplateOptions = ref<any[]>([])
|
||||
const userOptions = ref<any[]>([
|
||||
{ id: 1, name: '张三', username: 'zhangsan' },
|
||||
{ id: 2, name: '李四', username: 'lisi' },
|
||||
{ id: 3, name: '王五', username: 'wangwu' },
|
||||
])
|
||||
const userOptions = ref<any[]>([])
|
||||
const severityList = ref<any[]>([
|
||||
{ code: 'critical', name: '严重', color: 'red' },
|
||||
{ code: 'major', name: '重要', color: 'orange' },
|
||||
@@ -242,6 +251,51 @@ const loadSeverityList = async () => {
|
||||
}
|
||||
}
|
||||
|
||||
const loadUserOptions = async (keyword = '') => {
|
||||
userLoading.value = true
|
||||
try {
|
||||
const workspace = import.meta.env.VITE_APP_WORKSPACE || ''
|
||||
const res = await fetchUserList({
|
||||
workspace,
|
||||
keyword: keyword || undefined,
|
||||
status: 1,
|
||||
})
|
||||
const rawList = Array.isArray(res?.data?.data)
|
||||
? res.data.data
|
||||
: Array.isArray(res?.details?.data)
|
||||
? res.details.data
|
||||
: Array.isArray(res?.details)
|
||||
? res.details
|
||||
: Array.isArray(res?.data)
|
||||
? res.data
|
||||
: []
|
||||
userOptions.value = rawList.map((item: any) => ({
|
||||
id: Number(item.id),
|
||||
name: item.name || '',
|
||||
account: item.account || item.username || '',
|
||||
}))
|
||||
} catch (error) {
|
||||
console.error('获取用户下拉选项失败:', error)
|
||||
userOptions.value = []
|
||||
} finally {
|
||||
userLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
const handleUserSearch = (value: string) => {
|
||||
loadUserOptions(value)
|
||||
}
|
||||
|
||||
const getSelectPopupContainer = (triggerNode: HTMLElement) => {
|
||||
return triggerNode.closest('.arco-modal') || document.body
|
||||
}
|
||||
|
||||
const selectTriggerProps = {
|
||||
updateAtScroll: true,
|
||||
autoFitPopupMinWidth: true,
|
||||
getPopupContainer: getSelectPopupContainer,
|
||||
}
|
||||
|
||||
const loadFeedbackTemplateOptions = async () => {
|
||||
feedbackTemplateLoading.value = true
|
||||
try {
|
||||
@@ -361,6 +415,7 @@ watch(
|
||||
loadTemplateOptions()
|
||||
loadSeverityList()
|
||||
loadFeedbackTemplateOptions()
|
||||
loadUserOptions()
|
||||
initDispatchRuleData()
|
||||
</script>
|
||||
|
||||
|
||||
@@ -167,15 +167,18 @@
|
||||
placeholder="请选择处理人"
|
||||
allow-search
|
||||
allow-clear
|
||||
:filter-option="false"
|
||||
:loading="userLoading"
|
||||
@search="handleUserSearch"
|
||||
:style="{ width: '100%' }"
|
||||
:trigger-props="selectTriggerProps"
|
||||
>
|
||||
<a-option
|
||||
v-for="user in userOptions"
|
||||
:key="user.id"
|
||||
:value="user.id"
|
||||
>
|
||||
{{ user.name || user.username }} ({{ user.username }})
|
||||
{{ user.name || user.account }} ({{ user.account }})
|
||||
</a-option>
|
||||
</a-select>
|
||||
</template>
|
||||
@@ -190,14 +193,17 @@
|
||||
placeholder="请选择默认处理人"
|
||||
allow-search
|
||||
allow-clear
|
||||
:filter-option="false"
|
||||
:loading="userLoading"
|
||||
@search="handleUserSearch"
|
||||
:trigger-props="selectTriggerProps"
|
||||
>
|
||||
<a-option
|
||||
v-for="user in userOptions"
|
||||
:key="user.id"
|
||||
:value="user.id"
|
||||
>
|
||||
{{ user.name || user.username }} ({{ user.username }})
|
||||
{{ user.name || user.account }} ({{ user.account }})
|
||||
</a-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
@@ -223,6 +229,7 @@ import {
|
||||
fetchSeverityList,
|
||||
fetchFeedbackTemplateOptions,
|
||||
} from '@/api/ops/alertPolicy'
|
||||
import { fetchUserList } from '@/api/ops/rbac2'
|
||||
|
||||
// Props
|
||||
interface Props {
|
||||
@@ -283,11 +290,7 @@ const templateOptions = ref<any[]>([])
|
||||
const feedbackTemplateOptions = ref<any[]>([])
|
||||
|
||||
// 用户选项(模拟数据,实际应从用户服务获取)
|
||||
const userOptions = ref<any[]>([
|
||||
{ id: 1, name: '张三', username: 'zhangsan' },
|
||||
{ id: 2, name: '李四', username: 'lisi' },
|
||||
{ id: 3, name: '王五', username: 'wangwu' },
|
||||
])
|
||||
const userOptions = ref<any[]>([])
|
||||
|
||||
// 告警级别列表
|
||||
const severityList = ref<any[]>([
|
||||
@@ -329,6 +332,51 @@ const loadSeverityList = async () => {
|
||||
}
|
||||
}
|
||||
|
||||
const loadUserOptions = async (keyword = '') => {
|
||||
userLoading.value = true
|
||||
try {
|
||||
const workspace = import.meta.env.VITE_APP_WORKSPACE || ''
|
||||
const res = await fetchUserList({
|
||||
workspace,
|
||||
keyword: keyword || undefined,
|
||||
status: 1,
|
||||
})
|
||||
const rawList = Array.isArray(res?.data?.data)
|
||||
? res.data.data
|
||||
: Array.isArray(res?.details?.data)
|
||||
? res.details.data
|
||||
: Array.isArray(res?.details)
|
||||
? res.details
|
||||
: Array.isArray(res?.data)
|
||||
? res.data
|
||||
: []
|
||||
userOptions.value = rawList.map((item: any) => ({
|
||||
id: Number(item.id),
|
||||
name: item.name || '',
|
||||
account: item.account || item.username || '',
|
||||
}))
|
||||
} catch (error) {
|
||||
console.error('获取用户下拉选项失败:', error)
|
||||
userOptions.value = []
|
||||
} finally {
|
||||
userLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
const handleUserSearch = (value: string) => {
|
||||
loadUserOptions(value)
|
||||
}
|
||||
|
||||
const getSelectPopupContainer = (triggerNode: HTMLElement) => {
|
||||
return triggerNode.closest('.arco-modal') || document.body
|
||||
}
|
||||
|
||||
const selectTriggerProps = {
|
||||
updateAtScroll: true,
|
||||
autoFitPopupMinWidth: true,
|
||||
getPopupContainer: getSelectPopupContainer,
|
||||
}
|
||||
|
||||
const loadFeedbackTemplateOptions = async () => {
|
||||
feedbackTemplateLoading.value = true
|
||||
try {
|
||||
@@ -530,6 +578,7 @@ watch(
|
||||
loadTemplateOptions()
|
||||
loadSeverityList()
|
||||
loadFeedbackTemplateOptions()
|
||||
loadUserOptions()
|
||||
initDispatchRuleData()
|
||||
</script>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user