Commit 67c7c7d47111bc8a8cbd311113f61c227374e640

Authored by fengwotao
1 parent 8e0ed8cc

feat:告警配置 新增通过组织获取告警人

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