Commit 02789163d88b5fe52870a0647c19583da7a0aa05

Authored by xp.Huang
2 parents e5a3b607 6c6a1430

Merge branch 'ft-dev' into 'main'

设备配置新增报警规则的弹窗(详情模板、启用规则、规则条件)

See merge request huang/yun-teng-iot-front!33
@@ -10,6 +10,7 @@ export type TDeviceConfigParams = { @@ -10,6 +10,7 @@ export type TDeviceConfigParams = {
10 }; 10 };
11 11
12 export interface IDeviceConfigAddOrEditModel { 12 export interface IDeviceConfigAddOrEditModel {
  13 + defaultQueueName?: string; //处理队列
13 alarmProfile?: { 14 alarmProfile?: {
14 alarmContactId: string; 15 alarmContactId: string;
15 createTime: '2021-12-15T02:17:26.644Z'; 16 createTime: '2021-12-15T02:17:26.644Z';
@@ -45,6 +46,7 @@ export interface IDeviceConfigAddOrEditModel { @@ -45,6 +46,7 @@ export interface IDeviceConfigAddOrEditModel {
45 provisionConfiguration: { 46 provisionConfiguration: {
46 provisionDeviceSecret: string; 47 provisionDeviceSecret: string;
47 }; 48 };
  49 + //报警类型字段
48 alarms: [ 50 alarms: [
49 { 51 {
50 id: 'highTemperatureAlarmID'; 52 id: 'highTemperatureAlarmID';
@@ -32,6 +32,7 @@ export function loginApi(params: LoginParams, mode: ErrorMessageMode = 'modal') @@ -32,6 +32,7 @@ export function loginApi(params: LoginParams, mode: ErrorMessageMode = 'modal')
32 }, 32 },
33 { 33 {
34 errorMessageMode: mode, 34 errorMessageMode: mode,
  35 + joinPrefix: false,
35 } 36 }
36 ); 37 );
37 } 38 }
@@ -37,8 +37,8 @@ export enum PageEnum { @@ -37,8 +37,8 @@ export enum PageEnum {
37 // basic login path 37 // basic login path
38 BASE_LOGIN = '/login', 38 BASE_LOGIN = '/login',
39 // basic home path 39 // basic home path
40 - BASE_HOME = '/system/account',  
41 - // BASE_HOME = '/dashboard', 40 + // BASE_HOME = '/system/account',
  41 + BASE_HOME = '/dashboard',
42 // error page path 42 // error page path
43 ERROR_PAGE = '/exception', 43 ERROR_PAGE = '/exception',
44 // error log page path 44 // error log page path
@@ -74,7 +74,8 @@ @@ -74,7 +74,8 @@
74 const getStepTwoData: any = ref({}); 74 const getStepTwoData: any = ref({});
75 const getStepThreeData: any = ref({}); 75 const getStepThreeData: any = ref({});
76 const editEchoData: any = ref({}); 76 const editEchoData: any = ref({});
77 - const isGetStepFourData: any = ref({}); 77 + const alarmProfileData: any = ref({});
  78 + // const isGetStepThreeData: any = ref({});
78 const isGetStepThreeData: any = ref({}); 79 const isGetStepThreeData: any = ref({});
79 const postEditId = ref(''); 80 const postEditId = ref('');
80 const current = ref(0); 81 const current = ref(0);
@@ -113,17 +114,15 @@ @@ -113,17 +114,15 @@
113 } 114 }
114 const handleSubmit = async () => { 115 const handleSubmit = async () => {
115 if (!unref(isUpdate)) { 116 if (!unref(isUpdate)) {
116 - isGetStepThreeData.value.alarmProfile = getStepThreeData.value;  
117 - let getStep4Data = proxy.$refs.getStepData.getAllFields();  
118 - isGetStepFourData.value.alarmProfile = getStep4Data; 117 + isGetStepThreeData.value.profileData = getStepThreeData.value;
  118 + alarmProfileData.value.alarmProfile = await proxy.$refs.getStepData.getAllFields();
119 Object.assign( 119 Object.assign(
120 postDeviceConfogData.value, 120 postDeviceConfogData.value,
121 getStepOneData.value, 121 getStepOneData.value,
122 getStepTwoData.value, 122 getStepTwoData.value,
123 - isGetStepFourData.value,  
124 - isGetStepThreeData.value 123 + isGetStepThreeData.value,
  124 + alarmProfileData.value
125 ); 125 );
126 - console.log('搜集的所有数据', postDeviceConfogData.value);  
127 await deviceConfigAddOrEdit(postDeviceConfogData.value); 126 await deviceConfigAddOrEdit(postDeviceConfogData.value);
128 createMessage.success('新增设备配置成功'); 127 createMessage.success('新增设备配置成功');
129 closeModal(); 128 closeModal();
@@ -132,18 +131,16 @@ @@ -132,18 +131,16 @@
132 if (unref(isUpdate)) { 131 if (unref(isUpdate)) {
133 postDeviceConfogData.value.id = postEditId.value; 132 postDeviceConfogData.value.id = postEditId.value;
134 isGetStepThreeData.value.alarmProfile = getStepThreeData.value; 133 isGetStepThreeData.value.alarmProfile = getStepThreeData.value;
135 - let getStep4Data = proxy.$refs.getStepData.getAllFields();  
136 - isGetStepFourData.value.alarmProfile = getStep4Data; 134 + alarmProfileData.value.alarmProfile = await proxy.$refs.getStepData.getAllFields();
137 Object.assign( 135 Object.assign(
138 postDeviceConfogData.value, 136 postDeviceConfogData.value,
139 getStepOneData.value, 137 getStepOneData.value,
140 getStepTwoData.value, 138 getStepTwoData.value,
141 - isGetStepFourData.value, 139 + alarmProfileData.value,
142 isGetStepThreeData.value 140 isGetStepThreeData.value
143 ); 141 );
144 - console.log('搜集的所有数据', postDeviceConfogData.value);  
145 await deviceConfigAddOrEdit(postDeviceConfogData.value); 142 await deviceConfigAddOrEdit(postDeviceConfogData.value);
146 - createMessage.success('新增设备配置成功'); 143 + createMessage.success('编辑设备配置成功');
147 closeModal(); 144 closeModal();
148 emit('success'); 145 emit('success');
149 } 146 }
@@ -24,14 +24,23 @@ @@ -24,14 +24,23 @@
24 <div> 24 <div>
25 <p style="color: #f5594e" class="mt-4 ml-4" 25 <p style="color: #f5594e" class="mt-4 ml-4"
26 >请添加报警规则条件 26 >请添加报警规则条件
27 - <PlusOutlined class="cursor-pointer ml-4" style="font-size: 20px" 27 + <PlusOutlined
  28 + @click="handleOpenAlaramRuleConditions"
  29 + class="cursor-pointer ml-4"
  30 + style="font-size: 20px"
28 /></p> 31 /></p>
29 <p class="mt-4 ml-4" 32 <p class="mt-4 ml-4"
30 >启用规则:始终启用 33 >启用规则:始终启用
31 - <EditOutlined class="cursor-pointer ml-4" style="font-size: 20px" 34 + <EditOutlined
  35 + @click="handleOpenEnableRule"
  36 + class="cursor-pointer ml-4"
  37 + style="font-size: 20px"
32 /></p> 38 /></p>
33 <p class="mt-4 ml-4" 39 <p class="mt-4 ml-4"
34 - >详情:<EditOutlined class="cursor-pointer ml-4" style="font-size: 20px" 40 + >详情模板:<EditOutlined
  41 + @click="handleOpenDetailTemplate"
  42 + class="cursor-pointer ml-4"
  43 + style="font-size: 20px"
35 /></p> 44 /></p>
36 <p class="mt-4 ml-4">dashboard:</p> 45 <p class="mt-4 ml-4">dashboard:</p>
37 </div> 46 </div>
@@ -62,6 +71,12 @@ @@ -62,6 +71,12 @@
62 <a-button @click="handleFormStep3toStep4Next">下一步</a-button> 71 <a-button @click="handleFormStep3toStep4Next">下一步</a-button>
63 <a-button style="margin-left: 20px" type="primary" @click="addAlarmRule">添加报警规则</a-button> 72 <a-button style="margin-left: 20px" type="primary" @click="addAlarmRule">添加报警规则</a-button>
64 </div> 73 </div>
  74 + <!-- 详情模板 -->
  75 + <DetailTemplate v-if="isDetailTemplateEnableRuleAlarmRuleConditions" @register="registerModal" />
  76 + <!-- 启用规则 -->
  77 + <EnableRule v-if="!isDetailTemplateEnableRuleAlarmRuleConditions" @register="registerModal" />
  78 + <!-- 报警规则条件 -->
  79 + <AlarmRuleConditions v-if="isRuleAlarmRuleConditions == 1" @register="registerModal" />
65 </template> 80 </template>
66 81
67 <script lang="ts"> 82 <script lang="ts">
@@ -78,6 +93,10 @@ @@ -78,6 +93,10 @@
78 EditOutlined, 93 EditOutlined,
79 } from '@ant-design/icons-vue'; 94 } from '@ant-design/icons-vue';
80 import { Tooltip, Checkbox } from 'ant-design-vue'; 95 import { Tooltip, Checkbox } from 'ant-design-vue';
  96 + import { useModal } from '/@/components/Modal';
  97 + import DetailTemplate from './cpns/detailtemplate/index.vue';
  98 + import EnableRule from './cpns/enablerule/index.vue';
  99 + import AlarmRuleConditions from './cpns/alarmruleconditions/index.vue';
81 100
82 export default defineComponent({ 101 export default defineComponent({
83 components: { 102 components: {
@@ -90,9 +109,14 @@ @@ -90,9 +109,14 @@
90 EditOutlined, 109 EditOutlined,
91 Checkbox, 110 Checkbox,
92 Tooltip, 111 Tooltip,
  112 + DetailTemplate,
  113 + EnableRule,
  114 + AlarmRuleConditions,
93 }, 115 },
94 emits: ['prev', 'next'], 116 emits: ['prev', 'next'],
95 setup(_, { emit }) { 117 setup(_, { emit }) {
  118 + const isDetailTemplateEnableRuleAlarmRuleConditions = ref(true);
  119 + const isRuleAlarmRuleConditions = ref(1);
96 const getAllFormData: any = ref({}); 120 const getAllFormData: any = ref({});
97 //告警列表 121 //告警列表
98 let alarms = ref<alarmListItem[]>([]); 122 let alarms = ref<alarmListItem[]>([]);
@@ -111,7 +135,8 @@ @@ -111,7 +135,8 @@
111 unref(alarms).push({ 135 unref(alarms).push({
112 id: Date.now(), 136 id: Date.now(),
113 messageMode: '', 137 messageMode: '',
114 - enabled: false, 138 + propagate: false,
  139 + propagateRelationTypes: [''],
115 createRule: [ 140 createRule: [
116 { 141 {
117 id: Date.now() + Math.random(), 142 id: Date.now() + Math.random(),
@@ -124,6 +149,7 @@ @@ -124,6 +149,7 @@
124 ], 149 ],
125 clearRule: [], 150 clearRule: [],
126 }); 151 });
  152 + console.log(alarms.value);
127 }; 153 };
128 154
129 // 表单部分 报警类型 155 // 表单部分 报警类型
@@ -195,14 +221,45 @@ @@ -195,14 +221,45 @@
195 valueRegisterForm, 221 valueRegisterForm,
196 valueRegisterFormHighSetting, 222 valueRegisterFormHighSetting,
197 valueRegisterFormCreateAlarm, 223 valueRegisterFormCreateAlarm,
198 - valueRegisterFormClearAlarm 224 + valueRegisterFormClearAlarm,
  225 + alarms.value
199 ); 226 );
200 console.log('第三步的数据', getAllFormData.value); 227 console.log('第三步的数据', getAllFormData.value);
201 emit('next', getAllFormData.value); 228 emit('next', getAllFormData.value);
202 } catch (error) {} 229 } catch (error) {}
203 }; 230 };
204 231
  232 + const [registerModal, { openModal }] = useModal();
  233 +
  234 + const handleOpenDetailTemplate = () => {
  235 + openModal(true, {
  236 + isUpdate: false,
  237 + });
  238 + isDetailTemplateEnableRuleAlarmRuleConditions.value = true;
  239 + console.log(isDetailTemplateEnableRuleAlarmRuleConditions.value);
  240 + };
  241 + const handleOpenEnableRule = () => {
  242 + openModal(true, {
  243 + isUpdate: false,
  244 + });
  245 + isDetailTemplateEnableRuleAlarmRuleConditions.value = false;
  246 + console.log(isDetailTemplateEnableRuleAlarmRuleConditions.value);
  247 + };
  248 + const handleOpenAlaramRuleConditions = () => {
  249 + openModal(true, {
  250 + isUpdate: false,
  251 + });
  252 + isRuleAlarmRuleConditions.value = 1;
  253 + console.log(isRuleAlarmRuleConditions.value);
  254 + };
  255 +
205 return { 256 return {
  257 + isRuleAlarmRuleConditions,
  258 + isDetailTemplateEnableRuleAlarmRuleConditions,
  259 + registerModal,
  260 + handleOpenEnableRule,
  261 + handleOpenAlaramRuleConditions,
  262 + handleOpenDetailTemplate,
206 handleFormStep3toStep4Next, 263 handleFormStep3toStep4Next,
207 log, 264 log,
208 alarms, 265 alarms,
  1 +import { FormSchema } from '/@/components/Table';
  2 +
  3 +export const formSchema: FormSchema[] = [
  4 + {
  5 + field: 'detail',
  6 + label: '报警详细信息',
  7 + colProps: { span: 24 },
  8 + required: true,
  9 + component: 'Input',
  10 + componentProps: {
  11 + placeholder: '请输入报警详细信息',
  12 + },
  13 + },
  14 +];
  1 +<template>
  2 + <BasicModal
  3 + v-bind="$attrs"
  4 + width="55rem"
  5 + @register="register"
  6 + :title="getTitle"
  7 + @ok="handleSubmit"
  8 + >
  9 + <BasicForm :showResetButton="false" :showSubmitButton="false" @register="registerForm" />
  10 + </BasicModal>
  11 +</template>
  12 +<script lang="ts">
  13 + import { defineComponent, ref, computed, unref } from 'vue';
  14 + import { BasicModal, useModalInner } from '/@/components/Modal';
  15 + import { BasicForm, useForm } from '/@/components/Form';
  16 + import { formSchema } from './config';
  17 +
  18 + export default defineComponent({
  19 + name: 'DetailTemplate',
  20 + components: {
  21 + BasicModal,
  22 + BasicForm,
  23 + },
  24 + emits: ['success', 'register'],
  25 + setup() {
  26 + const isUpdate = ref(true);
  27 + const [registerForm] = useForm({
  28 + labelWidth: 120,
  29 + schemas: formSchema,
  30 + });
  31 + const getTitle = computed(() => (!unref(isUpdate) ? '新增报警规则条件' : '编辑报警规则条件'));
  32 + const [register] = useModalInner((data) => {
  33 + isUpdate.value = !!data?.isUpdate;
  34 + });
  35 + const handleSubmit = () => {
  36 + console.log(1);
  37 + };
  38 + return {
  39 + registerForm,
  40 + handleSubmit,
  41 + register,
  42 + getTitle,
  43 + };
  44 + },
  45 + });
  46 +</script>
  1 +import { FormSchema } from '/@/components/Table';
  2 +
  3 +/**
  4 + * 所使用的枚举值
  5 + */
  6 +
  7 +export enum TriggerEnum {
  8 + IS_DEVICE_ACT = 'DEVICE_ACT',
  9 + IS_TIME_ACT = 'TIME_ACT',
  10 + IS_SCENE_ACT = 'SCENE_ACT',
  11 +}
  12 +
  13 +export const isShiDu = (type: string) => {
  14 + return type === TriggerEnum.IS_DEVICE_ACT;
  15 +};
  16 +export const isWenDu = (type: string) => {
  17 + return type === TriggerEnum.IS_TIME_ACT;
  18 +};
  19 +
  20 +export const isTimeAll = (type: string) => {
  21 + return type === TriggerEnum.IS_SCENE_ACT;
  22 +};
  23 +
  24 +export const formSchema: FormSchema[] = [
  25 + {
  26 + field: 'detail',
  27 + label: '条件类型',
  28 + colProps: { span: 24 },
  29 + component: 'Select',
  30 + componentProps: {
  31 + placeholder: '请选择报警日程表',
  32 + options: [
  33 + { label: '简单', value: 'DEVICE_ACT' },
  34 + { label: '持续时间', value: 'TIME_ACT' },
  35 + { label: '重复', value: 'SCENE_ACT' },
  36 + ],
  37 + },
  38 + },
  39 + {
  40 + field: 'type1',
  41 + label: '动态源类型',
  42 + colProps: { span: 24 },
  43 + component: 'Select',
  44 + componentProps: {
  45 + placeholder: '请选择动态源类型',
  46 + options: [
  47 + { label: '无动态值', value: 'second' },
  48 + { label: '当前租户', value: 'minute' },
  49 + { label: '当前客户', value: 'hour' },
  50 + { label: '当前设备', value: 'day' },
  51 + ],
  52 + },
  53 + ifShow: ({ values }) => isWenDu(Reflect.get(values, 'detail')),
  54 + },
  55 + {
  56 + field: 'time1',
  57 + label: '源属性',
  58 + colProps: { span: 24 },
  59 + component: 'Input',
  60 + componentProps: {
  61 + placeholder: '源属性',
  62 + },
  63 + ifShow: ({ values }) => isWenDu(Reflect.get(values, 'detail')),
  64 + },
  65 + {
  66 + field: 'type1',
  67 + label: '动态源类型',
  68 + colProps: { span: 24 },
  69 + component: 'Select',
  70 + componentProps: {
  71 + placeholder: '请选择动态源类型',
  72 + options: [
  73 + { label: '无动态值', value: 'second' },
  74 + { label: '当前租户', value: 'minute' },
  75 + { label: '当前客户', value: 'hour' },
  76 + { label: '当前设备', value: 'day' },
  77 + ],
  78 + },
  79 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  80 + },
  81 + {
  82 + field: 'time1',
  83 + label: '源属性',
  84 + colProps: { span: 24 },
  85 + component: 'Input',
  86 + componentProps: {
  87 + placeholder: '源属性',
  88 + },
  89 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  90 + },
  91 + {
  92 + field: 'time',
  93 + label: '持续时间值',
  94 + colProps: { span: 24 },
  95 + component: 'Input',
  96 + componentProps: {
  97 + placeholder: '请输入持续时间值',
  98 + },
  99 + ifShow: ({ values }) => isWenDu(Reflect.get(values, 'detail')),
  100 + },
  101 + {
  102 + field: 'r',
  103 + label: '时间单位',
  104 + colProps: { span: 24 },
  105 + component: 'Select',
  106 + componentProps: {
  107 + placeholder: '请选择报警日程表',
  108 + options: [
  109 + { label: '秒', value: 'second' },
  110 + { label: '分钟', value: 'minute' },
  111 + { label: '小时', value: 'hour' },
  112 + { label: '天', value: 'day' },
  113 + ],
  114 + },
  115 + ifShow: ({ values }) => isWenDu(Reflect.get(values, 'detail')),
  116 + },
  117 + {
  118 + field: 'time',
  119 + label: '事件计数值必填',
  120 + colProps: { span: 24 },
  121 + component: 'Input',
  122 + componentProps: {
  123 + placeholder: '请输入事件计数值必填',
  124 + },
  125 + rules: [{ message: '事件计数应在1到2147483637之间', trigger: 'blur' }],
  126 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  127 + },
  128 +];
  1 +<template>
  2 + <BasicModal
  3 + v-bind="$attrs"
  4 + width="55rem"
  5 + @register="register"
  6 + :title="getTitle"
  7 + @ok="handleSubmit"
  8 + >
  9 + <BasicForm :showResetButton="false" :showSubmitButton="false" @register="registerForm" />
  10 + </BasicModal>
  11 +</template>
  12 +<script lang="ts">
  13 + import { defineComponent, ref, computed, unref } from 'vue';
  14 + import { BasicModal, useModalInner } from '/@/components/Modal';
  15 + import { BasicForm, useForm } from '/@/components/Form';
  16 + import { formSchema } from './config';
  17 +
  18 + export default defineComponent({
  19 + name: 'DetailTemplate',
  20 + components: {
  21 + BasicModal,
  22 + BasicForm,
  23 + },
  24 + emits: ['success', 'register'],
  25 + setup() {
  26 + const isUpdate = ref(true);
  27 + const [registerForm] = useForm({
  28 + labelWidth: 120,
  29 + schemas: formSchema,
  30 + });
  31 + const getTitle = computed(() => (!unref(isUpdate) ? '新增详情模板' : '编辑详情模板'));
  32 + const [register] = useModalInner((data) => {
  33 + isUpdate.value = !!data?.isUpdate;
  34 + });
  35 + const handleSubmit = () => {
  36 + console.log(1);
  37 + };
  38 + return {
  39 + registerForm,
  40 + handleSubmit,
  41 + register,
  42 + getTitle,
  43 + };
  44 + },
  45 + });
  46 +</script>
  1 +import { FormSchema } from '/@/components/Table';
  2 +
  3 +/**
  4 + * 所使用的枚举值
  5 + */
  6 +
  7 +export enum TriggerEnum {
  8 + IS_DEVICE_ACT = 'DEVICE_ACT',
  9 + IS_TIME_ACT = 'TIME_ACT',
  10 + IS_SCENE_ACT = 'SCENE_ACT',
  11 +}
  12 +
  13 +export const isShiDu = (type: string) => {
  14 + return type === TriggerEnum.IS_DEVICE_ACT;
  15 +};
  16 +export const isWenDu = (type: string) => {
  17 + return type === TriggerEnum.IS_TIME_ACT;
  18 +};
  19 +
  20 +export const isTimeAll = (type: string) => {
  21 + return type === TriggerEnum.IS_SCENE_ACT;
  22 +};
  23 +
  24 +export const formSchema: FormSchema[] = [
  25 + {
  26 + field: 'detail',
  27 + label: '报警日程表',
  28 + colProps: { span: 24 },
  29 + required: true,
  30 + component: 'Select',
  31 + componentProps: {
  32 + placeholder: '请选择报警日程表',
  33 + options: [
  34 + { label: '始终启用', value: 'DEVICE_ACT' },
  35 + { label: '定时启用', value: 'TIME_ACT' },
  36 + { label: '自定义启用', value: 'SCENE_ACT' },
  37 + ],
  38 + },
  39 + },
  40 + {
  41 + field: 'time',
  42 + label: '时区',
  43 + colProps: { span: 24 },
  44 + required: true,
  45 + component: 'Input',
  46 + componentProps: {
  47 + placeholder: 'Asia/Shanghai (UTC+08:00)',
  48 + },
  49 + ifShow: ({ values }) =>
  50 + isWenDu(Reflect.get(values, 'detail')) || isTimeAll(Reflect.get(values, 'detail')),
  51 + },
  52 +
  53 + {
  54 + field: 'data1',
  55 + component: 'Checkbox',
  56 + label: '星期一',
  57 + colProps: {
  58 + span: 8,
  59 + },
  60 + renderComponentContent: '',
  61 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  62 + },
  63 + {
  64 + field: 'time',
  65 + component: 'TimePicker',
  66 + label: '时间选择',
  67 + colProps: {
  68 + span: 8,
  69 + },
  70 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  71 + },
  72 + {
  73 + field: 'time',
  74 + component: 'TimePicker',
  75 + label: '时间选择',
  76 + colProps: {
  77 + span: 8,
  78 + },
  79 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  80 + },
  81 +
  82 + {
  83 + field: 'data2',
  84 + component: 'Checkbox',
  85 + label: '星期二',
  86 + colProps: {
  87 + span: 8,
  88 + },
  89 + renderComponentContent: '',
  90 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  91 + },
  92 + {
  93 + field: 'time',
  94 + component: 'TimePicker',
  95 + label: '时间选择',
  96 + colProps: {
  97 + span: 8,
  98 + },
  99 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  100 + },
  101 + {
  102 + field: 'time',
  103 + component: 'TimePicker',
  104 + label: '时间选择',
  105 + colProps: {
  106 + span: 8,
  107 + },
  108 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  109 + },
  110 + {
  111 + field: 'data3',
  112 + component: 'Checkbox',
  113 + label: '星期三',
  114 + colProps: {
  115 + span: 8,
  116 + },
  117 + renderComponentContent: '',
  118 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  119 + },
  120 + {
  121 + field: 'time',
  122 + component: 'TimePicker',
  123 + label: '时间选择',
  124 + colProps: {
  125 + span: 8,
  126 + },
  127 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  128 + },
  129 + {
  130 + field: 'time',
  131 + component: 'TimePicker',
  132 + label: '时间选择',
  133 + colProps: {
  134 + span: 8,
  135 + },
  136 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  137 + },
  138 + {
  139 + field: 'data4',
  140 + component: 'Checkbox',
  141 + label: '星期四',
  142 + colProps: {
  143 + span: 8,
  144 + },
  145 + renderComponentContent: '',
  146 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  147 + },
  148 + {
  149 + field: 'time',
  150 + component: 'TimePicker',
  151 + label: '时间选择',
  152 + colProps: {
  153 + span: 8,
  154 + },
  155 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  156 + },
  157 + {
  158 + field: 'time',
  159 + component: 'TimePicker',
  160 + label: '时间选择',
  161 + colProps: {
  162 + span: 8,
  163 + },
  164 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  165 + },
  166 + {
  167 + field: 'data5',
  168 + component: 'Checkbox',
  169 + label: '星期五',
  170 + colProps: {
  171 + span: 8,
  172 + },
  173 + renderComponentContent: '',
  174 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  175 + },
  176 + {
  177 + field: 'time',
  178 + component: 'TimePicker',
  179 + label: '时间选择',
  180 + colProps: {
  181 + span: 8,
  182 + },
  183 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  184 + },
  185 + {
  186 + field: 'time',
  187 + component: 'TimePicker',
  188 + label: '时间选择',
  189 + colProps: {
  190 + span: 8,
  191 + },
  192 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  193 + },
  194 + {
  195 + field: 'data6',
  196 + component: 'Checkbox',
  197 + label: '星期六',
  198 + colProps: {
  199 + span: 8,
  200 + },
  201 + renderComponentContent: '',
  202 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  203 + },
  204 + {
  205 + field: 'time',
  206 + component: 'TimePicker',
  207 + label: '时间选择',
  208 + colProps: {
  209 + span: 8,
  210 + },
  211 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  212 + },
  213 + {
  214 + field: 'time',
  215 + component: 'TimePicker',
  216 + label: '时间选择',
  217 + colProps: {
  218 + span: 8,
  219 + },
  220 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  221 + },
  222 + {
  223 + field: 'data7',
  224 + component: 'Checkbox',
  225 + label: '星期七',
  226 + colProps: {
  227 + span: 8,
  228 + },
  229 + renderComponentContent: '',
  230 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  231 + },
  232 + {
  233 + field: 'time',
  234 + component: 'TimePicker',
  235 + label: '时间选择',
  236 + colProps: {
  237 + span: 8,
  238 + },
  239 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  240 + },
  241 + {
  242 + field: 'time',
  243 + component: 'TimePicker',
  244 + label: '时间选择',
  245 + colProps: {
  246 + span: 8,
  247 + },
  248 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'detail')),
  249 + },
  250 +
  251 + {
  252 + field: 'weekday',
  253 + component: 'CheckboxGroup',
  254 + label: '天',
  255 + colProps: {
  256 + span: 24,
  257 + },
  258 + rules: [
  259 + {
  260 + message: '每周至少选择一天',
  261 + trigger: 'blur',
  262 + },
  263 + ],
  264 + componentProps: {
  265 + options: [
  266 + {
  267 + label: '星期一',
  268 + value: '1',
  269 + },
  270 + {
  271 + label: '星期二',
  272 + value: '2',
  273 + },
  274 + {
  275 + label: '星期三',
  276 + value: '3',
  277 + },
  278 + {
  279 + label: '星期四',
  280 + value: '4',
  281 + },
  282 + {
  283 + label: '星期五',
  284 + value: '5',
  285 + },
  286 + {
  287 + label: '星期六',
  288 + value: '6',
  289 + },
  290 + {
  291 + label: '星期七',
  292 + value: '7',
  293 + },
  294 + ],
  295 + },
  296 + ifShow: ({ values }) => isWenDu(Reflect.get(values, 'detail')),
  297 + },
  298 + {
  299 + field: 'time',
  300 + component: 'TimePicker',
  301 + label: '时间选择',
  302 + colProps: {
  303 + span: 8,
  304 + },
  305 + ifShow: ({ values }) => isWenDu(Reflect.get(values, 'detail')),
  306 + },
  307 + {
  308 + field: 'time',
  309 + component: 'TimePicker',
  310 + label: '时间选择',
  311 + colProps: {
  312 + span: 8,
  313 + },
  314 + ifShow: ({ values }) => isWenDu(Reflect.get(values, 'detail')),
  315 + },
  316 +];
  1 +<template>
  2 + <BasicModal
  3 + v-bind="$attrs"
  4 + width="55rem"
  5 + @register="register"
  6 + :title="getTitle"
  7 + @ok="handleSubmit"
  8 + >
  9 + <BasicForm :showResetButton="false" :showSubmitButton="false" @register="registerForm" />
  10 + </BasicModal>
  11 +</template>
  12 +<script lang="ts">
  13 + import { defineComponent, ref, computed, unref } from 'vue';
  14 + import { BasicModal, useModalInner } from '/@/components/Modal';
  15 + import { BasicForm, useForm } from '/@/components/Form';
  16 + import { formSchema } from './config';
  17 +
  18 + export default defineComponent({
  19 + name: 'DetailTemplate',
  20 + components: {
  21 + BasicModal,
  22 + BasicForm,
  23 + },
  24 + emits: ['success', 'register'],
  25 + setup() {
  26 + const isUpdate = ref(true);
  27 + const [registerForm] = useForm({
  28 + labelWidth: 120,
  29 + schemas: formSchema,
  30 + });
  31 + const getTitle = computed(() => (!unref(isUpdate) ? '新增报警日程表' : '编辑报警日程表'));
  32 + const [register] = useModalInner((data) => {
  33 + isUpdate.value = !!data?.isUpdate;
  34 + });
  35 + const handleSubmit = () => {
  36 + console.log(1);
  37 + };
  38 + return {
  39 + registerForm,
  40 + handleSubmit,
  41 + register,
  42 + getTitle,
  43 + };
  44 + },
  45 + });
  46 +</script>
1 import { FormSchema } from '/@/components/Form'; 1 import { FormSchema } from '/@/components/Form';
2 -// import { findDictItemByCode } from '/@/api/system/dict';  
3 -import { getOrganizationList } from '/@/api/system/system';  
4 -import { copyTransFun } from '/@/utils/fnUtils'; 2 +import { findDictItemByCode } from '/@/api/system/dict';
  3 +// import { getOrganizationList } from '/@/api/system/system';
  4 +// import { copyTransFun } from '/@/utils/fnUtils';
5 import { deviceConfigGetRuleChain } from '/@/api/device/deviceConfigApi'; 5 import { deviceConfigGetRuleChain } from '/@/api/device/deviceConfigApi';
6 6
7 export const step1Schemas: FormSchema[] = [ 7 export const step1Schemas: FormSchema[] = [
@@ -14,19 +14,7 @@ export const step1Schemas: FormSchema[] = [ @@ -14,19 +14,7 @@ export const step1Schemas: FormSchema[] = [
14 maxLength: 30, 14 maxLength: 30,
15 }, 15 },
16 }, 16 },
17 - {  
18 - required: true,  
19 - field: 'organizationId',  
20 - label: '请选择组织',  
21 - component: 'ApiTreeSelect',  
22 - componentProps: {  
23 - api: async () => {  
24 - const data = await getOrganizationList();  
25 - copyTransFun(data as any as any[]);  
26 - return data;  
27 - },  
28 - },  
29 - }, 17 + //规则链(string)
30 { 18 {
31 field: 'defaultRuleChainId', 19 field: 'defaultRuleChainId',
32 label: '请选择规则链', 20 label: '请选择规则链',
@@ -49,19 +37,19 @@ export const step1Schemas: FormSchema[] = [ @@ -49,19 +37,19 @@ export const step1Schemas: FormSchema[] = [
49 // // api: uploadApi, 37 // // api: uploadApi,
50 // }, 38 // },
51 // }, 39 // },
52 - // {  
53 - // field: 'defaultConfig',  
54 - // label: '队列优先级',  
55 - // component: 'ApiSelect',  
56 - // componentProps: {  
57 - // api: findDictItemByCode,  
58 - // params: {  
59 - // dictCode: 'queen_execute_sequence',  
60 - // },  
61 - // labelField: 'itemText',  
62 - // valueField: 'itemValue',  
63 - // },  
64 - // }, 40 + {
  41 + field: 'defaultQueueName',
  42 + label: '处理队列',
  43 + component: 'ApiSelect',
  44 + componentProps: {
  45 + api: findDictItemByCode,
  46 + params: {
  47 + dictCode: 'queen_execute_sequence',
  48 + },
  49 + labelField: 'itemText',
  50 + valueField: 'itemValue',
  51 + },
  52 + },
65 { 53 {
66 label: '描述', 54 label: '描述',
67 field: 'description', 55 field: 'description',
@@ -79,7 +67,9 @@ export const step2Schemas: FormSchema[] = [ @@ -79,7 +67,9 @@ export const step2Schemas: FormSchema[] = [
79 options: [ 67 options: [
80 { label: 'MQTT', value: 'MQTT' }, 68 { label: 'MQTT', value: 'MQTT' },
81 { label: 'TCP', value: 'TCP' }, 69 { label: 'TCP', value: 'TCP' },
82 - { label: 'COAP', value: 'COAP' }, 70 + { label: 'CoAP', value: 'CoAP' },
  71 + { label: 'LWM2M', value: 'LWM2M' },
  72 + { label: 'SNMP', value: 'SNMP' },
83 ], 73 ],
84 }, 74 },
85 }, 75 },
@@ -87,7 +77,7 @@ export const step2Schemas: FormSchema[] = [ @@ -87,7 +77,7 @@ export const step2Schemas: FormSchema[] = [
87 77
88 export const step3Schemas: FormSchema[] = [ 78 export const step3Schemas: FormSchema[] = [
89 { 79 {
90 - field: 'description', 80 + field: 'alarmType',
91 component: 'Input', 81 component: 'Input',
92 label: '报警类型', 82 label: '报警类型',
93 colProps: { 83 colProps: {
@@ -102,19 +92,19 @@ export const step3Schemas: FormSchema[] = [ @@ -102,19 +92,19 @@ export const step3Schemas: FormSchema[] = [
102 92
103 export const step3HighSetting: FormSchema[] = [ 93 export const step3HighSetting: FormSchema[] = [
104 { 94 {
105 - field: 'enabled', 95 + field: 'propagate',
106 component: 'Checkbox', 96 component: 'Checkbox',
107 label: '', 97 label: '',
108 slot: 'checkBox', 98 slot: 'checkBox',
109 }, 99 },
110 { 100 {
111 - field: 'defaultConfig', 101 + field: 'propagateRelationTypes',
112 component: 'Input', 102 component: 'Input',
113 label: '关联类型', 103 label: '关联类型',
114 componentProps: { 104 componentProps: {
115 placeholder: '要传递的关联类型', 105 placeholder: '要传递的关联类型',
116 }, 106 },
117 - ifShow: ({ values }) => !!values.enabled, 107 + ifShow: ({ values }) => !!values.propagate,
118 }, 108 },
119 ]; 109 ];
120 110
@@ -15,11 +15,10 @@ interface clearRule { @@ -15,11 +15,10 @@ interface clearRule {
15 } 15 }
16 export interface alarmListItem { 16 export interface alarmListItem {
17 id?: number; 17 id?: number;
18 - messageMode?: string;  
19 alarmType?: string; 18 alarmType?: string;
20 - enabled?: boolean;  
21 - createRule?: createRule[];  
22 - clearRule?: clearRule[]; 19 + messageMode?: string;
23 propagate?: boolean; 20 propagate?: boolean;
24 propagateRelationTypes?: string[]; 21 propagateRelationTypes?: string[];
  22 + createRule?: createRule[];
  23 + clearRule?: clearRule[];
25 } 24 }
@@ -126,13 +126,14 @@ export const formSchema: FormSchema[] = [ @@ -126,13 +126,14 @@ export const formSchema: FormSchema[] = [
126 api: async () => { 126 api: async () => {
127 const data = await getOrganizationList(); 127 const data = await getOrganizationList();
128 copyTransFun(data as any as any[]); 128 copyTransFun(data as any as any[]);
129 - const filterData = data.map((m) => {  
130 - return {  
131 - label: m.label,  
132 - value: m.value,  
133 - };  
134 - });  
135 - return filterData; 129 + // const filterData = data.map((m) => {
  130 + // return {
  131 + // label: m.label,
  132 + // value: m.value,
  133 + // };
  134 + // });
  135 + // return filterData;
  136 + return data;
136 }, 137 },
137 onChange: (v) => { 138 onChange: (v) => {
138 isDeptId.value = v; 139 isDeptId.value = v;