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', | ... | ... |