Forráskód Böngészése

新增编辑 告警增加【事件上报】的触发方式,选择【事件上报】之后需要选择事件,根据选择的事件筛选参数列表。增加未选择事件时对参数列表的显示提示处理等。 切换产品时候重新获取事件列表,清空之前选中的事件

yanglzh 2 éve
szülő
commit
f7af8a94ba
1 módosított fájl, 58 hozzáadás és 9 törlés
  1. 58 9
      src/views/iot/alarm/setting/component/edit.vue

+ 58 - 9
src/views/iot/alarm/setting/component/edit.vue

@@ -33,13 +33,14 @@
 				<el-form-item label="触发方式" prop="triggerType" v-if="ruleForm.productKey">
 					<el-radio-group v-model="ruleForm.triggerType" @change="getRadio()">
 						<el-radio :label="item.type" v-for="item in typeData">{{ item.title }}</el-radio>
+						<el-radio :label="4">事件上报</el-radio>
 					</el-radio-group>
 				</el-form-item>
 
-				<el-form-item label="选择事件" prop="triggerType" v-if="ruleForm.productKey">
-					<el-radio-group v-model="ruleForm.triggerType" @change="getRadio()">
-						<el-radio :label="item.type" v-for="item in typeData">{{ item.title }}</el-radio>
-					</el-radio-group>
+				<el-form-item label="选择事件" prop="eventKey" v-if="ruleForm.triggerType===4">
+					<el-select v-model="ruleForm.eventKey" filterable placeholder="请选择事件" @change="eventTypeChange">
+						<el-option v-for="item in eventList" :key="item.key" :label="item.name" :value="item.key"></el-option>
+					</el-select>
 				</el-form-item>
 
 				<el-divider content-position="left">触发条件</el-divider>
@@ -87,7 +88,7 @@
 									<el-icon><Bottom /></el-icon>
 								</div>
 								<div class="content-f">
-									<el-select v-model="aaa.key" placeholder="选择参数" style="width: 320px">
+									<el-select v-model="aaa.key" :placeholder="ruleForm.triggerType  ===  4 && !ruleForm.eventKey ? '请先选择事件' : '选择参数'" style="width: 320px">
 										<el-option v-for="a in triData" :key="a.paramKey" :label="a.title" :value="a.paramKey" />
 									</el-select>
 									<el-select v-model="aaa.operator" placeholder="选择操作符" style="width: 320px">
@@ -163,7 +164,7 @@
 </template>
 
 <script lang="ts">
-import { reactive, toRefs, defineComponent, ref, unref, getCurrentInstance } from 'vue';
+import { reactive, toRefs, defineComponent, ref, unref, getCurrentInstance, watch } from 'vue';
 import api from '/@/api/datahub';
 import iotapi from '/@/api/device';
 import alarm from '/@/api/alarm';
@@ -177,6 +178,7 @@ interface RuleFormState {
 	name: string;
 	triggerType: number;
 	level: string;
+	eventKey: string;
 	productKey: string;
 	deviceKey: string;
 	triggerCondition: string;
@@ -221,7 +223,7 @@ export default defineComponent({
 			levelData: [],
 			sendGatewayData: [],
 			noticeConfigData: [],
-
+			eventList: [],
 			action: [
 				{
 					sendGateway: '',
@@ -251,6 +253,7 @@ export default defineComponent({
 				id: 0,
 				name: '',
 				triggerType: 1,
+				eventKey: '',
 				level: '',
 				productKey: '',
 				deviceKey: '',
@@ -396,6 +399,20 @@ export default defineComponent({
 			closeDialog();
 		};
 
+		const eventTypeChange = () => {
+			setTriData()
+		};
+
+		watch(() => state.ruleForm.productKey, (key) => {
+			// 切换产品时候重新获取事件列表,清空之前选中的事件
+			state.ruleForm.eventKey = ''
+
+			iotapi.product.event({key}).then((res: any) => {
+				console.log(res)
+			})
+			state.eventList = [{name: '事件1',  key: 1}]
+		})
+
 		// 新增
 		const onSubmit = () => {
 			const formWrap = unref(formRef) as any;
@@ -509,8 +526,39 @@ export default defineComponent({
 		const getRadio=()=>{
 			gettriData();
 		}
-		const gettriData=()=>{
-			alarm.common.trigger_params({productKey:state.ruleForm.productKey,triggerType:state.ruleForm.triggerType}).then((res: any) => {
+		const gettriData = () => {
+			// 清空之前设置的参数设置
+			state.requestParams = [{
+				andOr: '',
+				filters: [
+					{
+						key: '',
+						operator: '',
+						value: '',
+						andOr: 0,
+					},
+				],
+			}]
+			setTriData()
+		}
+
+		function setTriData() {
+			// 重置参数列表
+			state.triData = [];
+
+			const triggerType = state.ruleForm.triggerType
+			const form = {
+				productKey: state.ruleForm.productKey,
+				triggerType
+			}
+
+			// 如果是事件上报,需要传eventKey参数
+			if (triggerType === 4) {
+				form.eventKey = state.ruleForm.eventKey
+				if(!form.eventKey) return
+			}
+
+			alarm.common.trigger_params(form).then((res: any) => {
 				state.triData = res.list || [];
 			});
 		}
@@ -536,6 +584,7 @@ export default defineComponent({
 			getNode,
 			delAction,
 			addAction,
+			eventTypeChange,
 			AddPhone,
 			DelPhone,
 			setType,