Преглед на файлове

perf(views): 完善“报警管理”模块执行动作联系人添加功能

wangshun преди 4 дни
родител
ревизия
b0e33d2319
променени са 3 файла, в които са добавени 32 реда и са изтрити 8 реда
  1. 7 0
      src/api/index.ts
  2. 6 8
      src/views/alarm-manage/AlarmExecution.vue
  3. 19 0
      src/views/alarm-manage/AlarmManage.vue

+ 7 - 0
src/api/index.ts

@@ -133,6 +133,7 @@ import type {
   TempHumidityControlSettings,
   TreeStructure,
   UploadLogo,
+  UserPageItem,
   UserPageItemData,
   UserPageParams,
   VerificationAgreement,
@@ -364,6 +365,12 @@ export const getUserPageList = async (params: UserPageParams) => {
   return data;
 };
 
+// 内部用户表
+export const getOrgUsers = async () => {
+  const data = await request<UserPageItem[]>(apiSys('/inner/sysUser/orgUsers'));
+  return data;
+};
+
 // ----- 业务服务 -----
 
 // 报警事件

+ 6 - 8
src/views/alarm-manage/AlarmExecution.vue

@@ -5,13 +5,14 @@ import DataSelection from '@/components/DataSelection.vue';
 import { t } from '@/i18n';
 
 import type { FormInstance, Rule } from 'ant-design-vue/es/form';
-import type { DataSelectionItem, DictValue, ExecutionAction } from '@/types';
+import type { DataSelectionItem, DictValue, ExecutionAction, UserPageItem } from '@/types';
 
 interface Props {
   index: number;
   form: ExecutionAction;
   executionAction: DictValue[];
   alarmNotifyMethod: DictValue[];
+  orgUsersList: UserPageItem[];
 }
 
 const props = defineProps<Props>();
@@ -102,13 +103,10 @@ defineExpose({
             <ASelect
               class="select-input select-right"
               v-model:value="form.alarmContact"
-              :placeholder="$t('common.plzSelect')"
-            >
-              <ASelectOption value="0">王某某</ASelectOption>
-              <ASelectOption value="1">汪某某</ASelectOption>
-              <ASelectOption value="2">何某某</ASelectOption>
-              <ASelectOption value="3">黄某某</ASelectOption>
-            </ASelect>
+              :options="orgUsersList"
+              :field-names="{ label: 'userName', value: 'id' }"
+              :placeholder="t('common.plzSelect')"
+            />
           </AFormItem>
           <br />
           <AFormItem :label="t('alarmManage.alarmContent')" name="alarmAlertContent" v-if="form.subType === '3'">

+ 19 - 0
src/views/alarm-manage/AlarmManage.vue

@@ -15,6 +15,7 @@ import {
   getAlarmEventGetPageList,
   getAlarmEventInfo,
   getAlarmHistoryList,
+  getOrgUsers,
   updateAlarmEvent,
 } from '@/api';
 import { DictCode } from '@/constants';
@@ -33,6 +34,7 @@ import type {
   EventTrigger,
   ExecutionAction,
   TriggerConditionItem,
+  UserPageItem,
 } from '@/types';
 
 const { handleRequest } = useRequest();
@@ -49,6 +51,7 @@ const triggerConditionRefs = ref<InstanceType<typeof AlarmConditions>[]>([]);
 const judgmentConditionRefs = ref<InstanceType<typeof AlarmConditions>[]>([]);
 const executionActionRefs = ref<InstanceType<typeof AlarmConditions>[]>([]);
 const alarmConditionList = ref<DictValue[]>([]);
+const orgUsersList = ref<UserPageItem[]>([]);
 const alarmPageParams = ref<AlarmPageParams>({
   pageIndex: 1,
   pageSize: 10,
@@ -263,6 +266,14 @@ const convertBtoA = (arr: AlarmEventItem[]): TriggerConditionItem[] | ExecutionA
     // 处理动态字段
     const dynamicFields = item.dataList.reduce(
       (acc, { code, value }) => {
+        if (code === 'alarmContact') {
+          if (value) {
+            acc[code] = Number(value);
+          } else {
+            acc[code] = undefined;
+          }
+          return acc;
+        }
         // 特殊处理时间字段
         if (code === 'alarmScheduledTime') {
           const timeStr = dayjs(value, 'HH:mm');
@@ -593,6 +604,12 @@ const okConfirm = async () => {
   }
 };
 
+const getOrgUsersList = () => {
+  handleRequest(async () => {
+    orgUsersList.value = await getOrgUsers();
+  });
+};
+
 onMounted(() => {
   handleRequest(async () => {
     await getAlarmCondition();
@@ -604,6 +621,7 @@ onMounted(() => {
     await getAlarmNotifyMethod();
   });
   getAlarmEventGetPageData();
+  getOrgUsersList();
 });
 </script>
 
@@ -744,6 +762,7 @@ onMounted(() => {
             :form="item"
             :execution-action="executionAction"
             :alarm-notify-method="alarmNotifyMethod"
+            :org-users-list="orgUsersList"
           />
         </div>