UPDATE: VERSION-20260316
This commit is contained in:
@@ -75,18 +75,52 @@
|
||||
|
||||
<a-form-item
|
||||
label="触发条件"
|
||||
:rules="[{ required: true, message: '请输入触发条件!', trigger: ['input', 'change'] }]"
|
||||
:name="['conditions']"
|
||||
:rules="[{ required: true, message: '请输入触发条件!', trigger: [ 'change'] }]"
|
||||
:name="['conditionsArray']"
|
||||
>
|
||||
<a-input v-model:value="selectedFireRule.conditions" placeholder="请输入触发条件" />
|
||||
<a-form-item-rest>
|
||||
<div class="ks-sidebar-list-param-list">
|
||||
<div class="ks-sidebar-list-param-item" v-for="(item,index) in selectedFireRule.conditionsArray">
|
||||
<a-row :gutter="15">
|
||||
<a-col :span="21">
|
||||
<PlatformSelect @update="(payload: PlatformComponentPayload)=> handleUpdateCondition(payload, index)"
|
||||
:platform="item.platform" :component="item.component"/>
|
||||
</a-col>
|
||||
<a-col :span="3">
|
||||
<a-space class="ks-sidebar-list-param-actions">
|
||||
<MinusCircleOutlined @click="()=> handleMinusCondition(index)" />
|
||||
<PlusCircleOutlined @click="()=> handleAddCondition(index)" v-if="index === 0" />
|
||||
</a-space>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</div>
|
||||
</div>
|
||||
</a-form-item-rest>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item
|
||||
label="响应动作"
|
||||
:rules="[{ required: true, message: '请输入响应动作!', trigger: ['input', 'change'] }]"
|
||||
:name="['actions']"
|
||||
:rules="[{ required: true, message: '请输入响应动作!', trigger: ['change'] }]"
|
||||
:name="['actionsArray']"
|
||||
>
|
||||
<a-input v-model:value="selectedFireRule.actions" placeholder="请输入响应动作" />
|
||||
<a-form-item-rest>
|
||||
<div class="ks-sidebar-list-param-list">
|
||||
<div class="ks-sidebar-list-param-item" v-for="(item,index) in selectedFireRule.actionsArray">
|
||||
<a-row :gutter="15">
|
||||
<a-col :span="21">
|
||||
<PlatformSelect @update="(payload: PlatformComponentPayload)=> handleUpdateAction(payload, index)"
|
||||
:platform="item.platform" :component="item.component"/>
|
||||
</a-col>
|
||||
<a-col :span="3">
|
||||
<a-space class="ks-sidebar-list-param-actions">
|
||||
<MinusCircleOutlined @click="()=> handleMinusAction(index)" />
|
||||
<PlusCircleOutlined @click="()=> handleAddAction(index)" v-if="index === 0" />
|
||||
</a-space>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</div>
|
||||
</div>
|
||||
</a-form-item-rest>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item
|
||||
@@ -136,11 +170,13 @@
|
||||
<script setup lang="ts">
|
||||
import { onMounted, ref } from 'vue';
|
||||
import { type FormInstance, message } from 'ant-design-vue';
|
||||
import { PlusOutlined } from '@ant-design/icons-vue';
|
||||
import { MinusCircleOutlined, PlusCircleOutlined, PlusOutlined } from '@ant-design/icons-vue';
|
||||
import Layout from '../layout.vue';
|
||||
import { createFireRule, deleteFireRule, findFireRuleByQuery, updateFireRule } from './api';
|
||||
import type { FireRule, FireRuleRequest } from './types';
|
||||
import { substring } from '@/utils/strings';
|
||||
import PlatformSelect from './PlatformSelect.vue';
|
||||
import type { PlatformComponentPayload } from '../types';
|
||||
|
||||
const query = ref<Partial<FireRuleRequest>>({
|
||||
pageNum: 1,
|
||||
@@ -155,8 +191,20 @@ const defaultFireRule: FireRule = {
|
||||
sceneType: null,
|
||||
// 触发条件(JSON格式)
|
||||
conditions: null,
|
||||
conditionsArray: [
|
||||
{
|
||||
platform: null,
|
||||
component: null,
|
||||
}
|
||||
],
|
||||
// 响应动作(JSON格式)
|
||||
actions: null,
|
||||
actionsArray: [
|
||||
{
|
||||
platform: null,
|
||||
component: null,
|
||||
}
|
||||
],
|
||||
// 优先级(数值越小优先级越高)
|
||||
priority: 0,
|
||||
// 是否启用(0禁用,1启用)
|
||||
@@ -174,20 +222,47 @@ const getSceneTypeName = (item: FireRule): string => {
|
||||
};
|
||||
|
||||
const resolveItem = (item: FireRule) => {
|
||||
let newItem = JSON.parse(JSON.stringify(item));
|
||||
let newItem = JSON.parse(JSON.stringify(item)) as FireRule;
|
||||
try{
|
||||
newItem.conditionsArray = JSON.parse(newItem.conditions as string);
|
||||
} catch(e: any){
|
||||
}
|
||||
if(!newItem.conditionsArray) {
|
||||
newItem.conditionsArray = []
|
||||
}
|
||||
if(newItem.conditionsArray.length===0){
|
||||
newItem.conditionsArray.push({
|
||||
platform: null,
|
||||
component: null,
|
||||
})
|
||||
}
|
||||
|
||||
try{
|
||||
newItem.actionsArray = JSON.parse(newItem.actions as string);
|
||||
} catch(e: any){
|
||||
}
|
||||
if(!newItem.actionsArray){
|
||||
newItem.actionsArray = []
|
||||
}
|
||||
if(newItem.actionsArray.length===0){
|
||||
newItem.actionsArray.push({
|
||||
platform: null,
|
||||
component: null,
|
||||
})
|
||||
}
|
||||
return newItem;
|
||||
};
|
||||
|
||||
const datasource = ref<FireRule[]>([]);
|
||||
const datasourceTotal = ref<number>(0);
|
||||
const selectedFireRule = ref<FireRule>(resolveItem(defaultFireRule));
|
||||
const selectedFireRule = ref<FireRule>({...defaultFireRule});
|
||||
const formRef = ref<FormInstance | null>(null);
|
||||
|
||||
const load = () => {
|
||||
datasource.value = [];
|
||||
datasourceTotal.value = 0;
|
||||
formRef.value?.resetFields();
|
||||
selectedFireRule.value = resolveItem(defaultFireRule);
|
||||
selectedFireRule.value = {...defaultFireRule};
|
||||
|
||||
findFireRuleByQuery(query.value).then(r => {
|
||||
datasource.value = r.rows ?? [];
|
||||
@@ -197,7 +272,7 @@ const load = () => {
|
||||
|
||||
|
||||
const handleCreate = () => {
|
||||
selectedFireRule.value = resolveItem(defaultFireRule);
|
||||
selectedFireRule.value = {...defaultFireRule};
|
||||
};
|
||||
|
||||
const handleSelect = (item: FireRule) => {
|
||||
@@ -223,6 +298,8 @@ const handleSave = () => {
|
||||
formRef.value.validate().then(() => {
|
||||
let res = null;
|
||||
let savedValue: FireRule = JSON.parse(JSON.stringify(selectedFireRule.value)) as any as FireRule;
|
||||
savedValue.conditions = JSON.stringify(savedValue.conditionsArray ?? null) as string;
|
||||
savedValue.actions = JSON.stringify(savedValue.actionsArray ?? null) as string;
|
||||
if (savedValue.id > 0) {
|
||||
res = updateFireRule(savedValue);
|
||||
} else {
|
||||
@@ -242,6 +319,65 @@ const handleSave = () => {
|
||||
}
|
||||
};
|
||||
|
||||
const handleMinusCondition = (index: number) => {
|
||||
if(selectedFireRule.value){
|
||||
const paramList = selectedFireRule.value.conditionsArray;
|
||||
if (index === 0 && selectedFireRule.value.conditionsArray.length === 1) {
|
||||
selectedFireRule.value.conditionsArray = [{
|
||||
platform: null,
|
||||
component: null,
|
||||
}];
|
||||
} else if (index >= 0 && index < paramList.length && paramList.length > 1) {
|
||||
paramList.splice(index, 1);
|
||||
selectedFireRule.value.conditionsArray = [...paramList];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const handleAddCondition = (index: number)=> {
|
||||
if(selectedFireRule.value){
|
||||
selectedFireRule.value.conditionsArray.push({
|
||||
platform: null,
|
||||
component: null,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
const handleMinusAction = (index: number) => {
|
||||
if(selectedFireRule.value){
|
||||
const paramList = selectedFireRule.value.actionsArray;
|
||||
if (index === 0 && selectedFireRule.value.actionsArray.length === 1) {
|
||||
selectedFireRule.value.actionsArray = [{
|
||||
platform: null,
|
||||
component: null,
|
||||
}];
|
||||
} else if (index >= 0 && index < paramList.length && paramList.length > 1) {
|
||||
paramList.splice(index, 1);
|
||||
selectedFireRule.value.actionsArray = [...paramList];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const handleAddAction = (_index: number)=> {
|
||||
if(selectedFireRule.value){
|
||||
selectedFireRule.value.actionsArray.push({
|
||||
platform: null,
|
||||
component: null,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
const handleUpdateCondition = (payload: PlatformComponentPayload, index: number)=> {
|
||||
if(selectedFireRule.value && selectedFireRule.value.conditionsArray[index]){
|
||||
selectedFireRule.value.conditionsArray[index] = payload;
|
||||
}
|
||||
}
|
||||
|
||||
const handleUpdateAction = (payload: PlatformComponentPayload, index: number)=> {
|
||||
if(selectedFireRule.value && selectedFireRule.value.actionsArray[index]){
|
||||
selectedFireRule.value.actionsArray[index] = payload;
|
||||
}
|
||||
}
|
||||
|
||||
const handleChange = (page: number, pageSize: number) => {
|
||||
query.value.pageNum = page;
|
||||
|
||||
Reference in New Issue
Block a user