Showing
3 changed files
with
66 additions
and
26 deletions
... | ... | @@ -15,8 +15,16 @@ enum API { |
15 | 15 | deleteAlarmConfig = '/alarm/profile', |
16 | 16 | getAlarmConfig = '/alarm/profile', |
17 | 17 | getAlarmConfigStatus = '/alarm/profile', |
18 | + byOrgIdGetAlarmContactApi = '/alarmContact/', | |
18 | 19 | } |
19 | 20 | |
21 | +//根据组织id获取对应告警联系人 | |
22 | +export const byOrgIdGetAlarmContact = (params) => { | |
23 | + return defHttp.get({ | |
24 | + url: API.byOrgIdGetAlarmContactApi + params, | |
25 | + }); | |
26 | +}; | |
27 | + | |
20 | 28 | // 获取 |
21 | 29 | export const getAlarmContact = (params: ContactPageParams) => { |
22 | 30 | return getPageData<ContactModal>(params, API.alarmContact); | ... | ... |
... | ... | @@ -15,7 +15,7 @@ |
15 | 15 | import { BasicForm, useForm } from '/@/components/Form'; |
16 | 16 | import { formSchema } from './config.data'; |
17 | 17 | import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; |
18 | - import { saveOrEditAlarmConfig } from '/@/api/alarm/config/alarmConfig'; | |
18 | + import { saveOrEditAlarmConfig, byOrgIdGetAlarmContact } from '/@/api/alarm/config/alarmConfig'; | |
19 | 19 | import { useMessage } from '/@/hooks/web/useMessage'; |
20 | 20 | |
21 | 21 | export default defineComponent({ |
... | ... | @@ -26,7 +26,7 @@ |
26 | 26 | const isUpdate = ref(true); |
27 | 27 | let allData: any = reactive({}); |
28 | 28 | const editId = ref(''); |
29 | - const [registerForm, { validate, setFieldsValue, resetFields }] = useForm({ | |
29 | + const [registerForm, { validate, setFieldsValue, resetFields, updateSchema }] = useForm({ | |
30 | 30 | labelWidth: 120, |
31 | 31 | schemas: formSchema, |
32 | 32 | showActionButtonGroup: false, |
... | ... | @@ -40,16 +40,32 @@ |
40 | 40 | editId.value = data.record?.id; |
41 | 41 | } |
42 | 42 | if (unref(isUpdate)) { |
43 | - if (data.record.organizationDTO) { | |
44 | - await setFieldsValue(data.record); | |
45 | - } else { | |
46 | - await setFieldsValue(data.record); | |
47 | - await setFieldsValue({ | |
48 | - alarmContactId: data.record?.alarmContactId.split(','), | |
49 | - messageMode: data.record?.messageMode.split(','), | |
43 | + const res = await byOrgIdGetAlarmContact(data.record.organizationId); | |
44 | + if (res.length !== 0) { | |
45 | + const opts = res.map((m) => { | |
46 | + return { label: m.username, value: m.id }; | |
47 | + }); | |
48 | + updateSchema({ | |
49 | + field: 'alarmContactId', | |
50 | + componentProps: { | |
51 | + mode: 'multiple', | |
52 | + options: opts, | |
53 | + }, | |
50 | 54 | }); |
51 | 55 | } |
56 | + await setFieldsValue(data.record); | |
57 | + await setFieldsValue({ | |
58 | + alarmContactId: data.record?.alarmContactId.split(','), | |
59 | + messageMode: data.record?.messageMode.split(','), | |
60 | + }); | |
52 | 61 | } else { |
62 | + updateSchema({ | |
63 | + field: 'alarmContactId', | |
64 | + componentProps: { | |
65 | + mode: 'multiple', | |
66 | + options: [], | |
67 | + }, | |
68 | + }); | |
53 | 69 | } |
54 | 70 | }); |
55 | 71 | ... | ... |
... | ... | @@ -2,7 +2,7 @@ import { BasicColumn, FormSchema } from '/@/components/Table'; |
2 | 2 | import { getOrganizationList } from '/@/api/system/system'; |
3 | 3 | import { copyTransFun } from '/@/utils/fnUtils'; |
4 | 4 | import { findDictItemByCode } from '/@/api/system/dict'; |
5 | -import { alarmContactGetPage } from '/@/api/device/deviceConfigApi'; | |
5 | +import { byOrgIdGetAlarmContact } from '/@/api/alarm/config/alarmConfig'; | |
6 | 6 | |
7 | 7 | // 表格列数据 |
8 | 8 | export const columns: BasicColumn[] = [ |
... | ... | @@ -101,27 +101,43 @@ export const formSchema: FormSchema[] = [ |
101 | 101 | label: '所属组织', |
102 | 102 | component: 'ApiTreeSelect', |
103 | 103 | required: true, |
104 | - componentProps: { | |
105 | - api: async () => { | |
106 | - const data = await getOrganizationList(); | |
107 | - copyTransFun(data as any as any[]); | |
108 | - return data; | |
109 | - }, | |
104 | + componentProps: ({ formActionType }) => { | |
105 | + const { updateSchema, setFieldsValue } = formActionType; | |
106 | + return { | |
107 | + maxLength: 250, | |
108 | + placeholder: '请选择所属组织', | |
109 | + api: async () => { | |
110 | + const data = await getOrganizationList(); | |
111 | + copyTransFun(data as any as any[]); | |
112 | + return data; | |
113 | + }, | |
114 | + async onChange(e) { | |
115 | + setFieldsValue({ | |
116 | + alarmContactId: [], | |
117 | + }); | |
118 | + const res = await byOrgIdGetAlarmContact(e); | |
119 | + let opts = []; | |
120 | + if (res.length !== 0) { | |
121 | + opts = res.map((m) => { | |
122 | + return { label: m.username, value: m.id }; | |
123 | + }); | |
124 | + updateSchema({ | |
125 | + field: 'alarmContactId', | |
126 | + componentProps: { | |
127 | + mode: 'multiple', | |
128 | + options: opts, | |
129 | + }, | |
130 | + }); | |
131 | + } | |
132 | + }, | |
133 | + }; | |
110 | 134 | }, |
111 | 135 | }, |
112 | 136 | { |
113 | 137 | field: 'alarmContactId', |
114 | - label: '告警通知联系人', | |
115 | - component: 'ApiSelect', | |
138 | + label: '告警联系人', | |
139 | + component: 'Select', | |
116 | 140 | required: true, |
117 | - componentProps: { | |
118 | - mode: 'multiple', | |
119 | - placeholder: '请选择告警通知联系人', | |
120 | - api: alarmContactGetPage, | |
121 | - labelField: 'username', | |
122 | - valueField: 'id', | |
123 | - resultField: 'items', | |
124 | - }, | |
125 | 141 | }, |
126 | 142 | { |
127 | 143 | field: 'messageMode', | ... | ... |