Commit 67c7c7d47111bc8a8cbd311113f61c227374e640

Authored by fengwotao
1 parent 8e0ed8cc

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

@@ -15,8 +15,16 @@ enum API { @@ -15,8 +15,16 @@ enum API {
15 deleteAlarmConfig = '/alarm/profile', 15 deleteAlarmConfig = '/alarm/profile',
16 getAlarmConfig = '/alarm/profile', 16 getAlarmConfig = '/alarm/profile',
17 getAlarmConfigStatus = '/alarm/profile', 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 export const getAlarmContact = (params: ContactPageParams) => { 29 export const getAlarmContact = (params: ContactPageParams) => {
22 return getPageData<ContactModal>(params, API.alarmContact); 30 return getPageData<ContactModal>(params, API.alarmContact);
@@ -15,7 +15,7 @@ @@ -15,7 +15,7 @@
15 import { BasicForm, useForm } from '/@/components/Form'; 15 import { BasicForm, useForm } from '/@/components/Form';
16 import { formSchema } from './config.data'; 16 import { formSchema } from './config.data';
17 import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; 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 import { useMessage } from '/@/hooks/web/useMessage'; 19 import { useMessage } from '/@/hooks/web/useMessage';
20 20
21 export default defineComponent({ 21 export default defineComponent({
@@ -26,7 +26,7 @@ @@ -26,7 +26,7 @@
26 const isUpdate = ref(true); 26 const isUpdate = ref(true);
27 let allData: any = reactive({}); 27 let allData: any = reactive({});
28 const editId = ref(''); 28 const editId = ref('');
29 - const [registerForm, { validate, setFieldsValue, resetFields }] = useForm({ 29 + const [registerForm, { validate, setFieldsValue, resetFields, updateSchema }] = useForm({
30 labelWidth: 120, 30 labelWidth: 120,
31 schemas: formSchema, 31 schemas: formSchema,
32 showActionButtonGroup: false, 32 showActionButtonGroup: false,
@@ -40,16 +40,32 @@ @@ -40,16 +40,32 @@
40 editId.value = data.record?.id; 40 editId.value = data.record?.id;
41 } 41 }
42 if (unref(isUpdate)) { 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 } else { 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,7 +2,7 @@ import { BasicColumn, FormSchema } from '/@/components/Table';
2 import { getOrganizationList } from '/@/api/system/system'; 2 import { getOrganizationList } from '/@/api/system/system';
3 import { copyTransFun } from '/@/utils/fnUtils'; 3 import { copyTransFun } from '/@/utils/fnUtils';
4 import { findDictItemByCode } from '/@/api/system/dict'; 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 export const columns: BasicColumn[] = [ 8 export const columns: BasicColumn[] = [
@@ -101,27 +101,43 @@ export const formSchema: FormSchema[] = [ @@ -101,27 +101,43 @@ export const formSchema: FormSchema[] = [
101 label: '所属组织', 101 label: '所属组织',
102 component: 'ApiTreeSelect', 102 component: 'ApiTreeSelect',
103 required: true, 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 field: 'alarmContactId', 137 field: 'alarmContactId',
114 - label: '告警通知联系人',  
115 - component: 'ApiSelect', 138 + label: '告警联系人',
  139 + component: 'Select',
116 required: true, 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 field: 'messageMode', 143 field: 'messageMode',