perf: 【IoT 物联网】场景联动执行器和触发器的参数值类型都调整为了字符串类型
parent
d81c544ad9
commit
9f3eb14a0f
|
|
@ -97,7 +97,7 @@
|
||||||
<!-- 服务调用参数配置 -->
|
<!-- 服务调用参数配置 -->
|
||||||
<JsonParamsInput
|
<JsonParamsInput
|
||||||
v-if="triggerType === IotRuleSceneTriggerTypeEnum.DEVICE_SERVICE_INVOKE"
|
v-if="triggerType === IotRuleSceneTriggerTypeEnum.DEVICE_SERVICE_INVOKE"
|
||||||
v-model="conditionValueAsString"
|
v-model="condition.value"
|
||||||
type="service"
|
type="service"
|
||||||
:config="serviceConfig"
|
:config="serviceConfig"
|
||||||
placeholder="请输入JSON格式的服务参数"
|
placeholder="请输入JSON格式的服务参数"
|
||||||
|
|
@ -106,7 +106,7 @@
|
||||||
<!-- 事件上报参数配置 -->
|
<!-- 事件上报参数配置 -->
|
||||||
<JsonParamsInput
|
<JsonParamsInput
|
||||||
v-else-if="triggerType === IotRuleSceneTriggerTypeEnum.DEVICE_EVENT_POST"
|
v-else-if="triggerType === IotRuleSceneTriggerTypeEnum.DEVICE_EVENT_POST"
|
||||||
v-model="conditionValueAsString"
|
v-model="condition.value"
|
||||||
type="event"
|
type="event"
|
||||||
:config="eventConfig"
|
:config="eventConfig"
|
||||||
placeholder="请输入JSON格式的事件参数"
|
placeholder="请输入JSON格式的事件参数"
|
||||||
|
|
@ -257,23 +257,6 @@ const eventConfig = computed(() => {
|
||||||
return undefined
|
return undefined
|
||||||
})
|
})
|
||||||
|
|
||||||
// 确保传递给 JsonParamsInput 的值始终是字符串类型
|
|
||||||
const conditionValueAsString = computed({
|
|
||||||
get: () => {
|
|
||||||
const value = condition.value.value
|
|
||||||
if (value === null || value === undefined) {
|
|
||||||
return ''
|
|
||||||
}
|
|
||||||
if (typeof value === 'object') {
|
|
||||||
return JSON.stringify(value, null, 2)
|
|
||||||
}
|
|
||||||
return String(value)
|
|
||||||
},
|
|
||||||
set: (newValue: string) => {
|
|
||||||
condition.value.value = newValue
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
// 获取触发类型文本
|
// 获取触发类型文本
|
||||||
// TODO @puhui999:是不是有枚举可以服用哈;
|
// TODO @puhui999:是不是有枚举可以服用哈;
|
||||||
const getTriggerTypeText = (type: number) => {
|
const getTriggerTypeText = (type: number) => {
|
||||||
|
|
|
||||||
|
|
@ -189,12 +189,15 @@ const jsonError = ref('')
|
||||||
|
|
||||||
// 计算属性
|
// 计算属性
|
||||||
const hasConfig = computed(() => {
|
const hasConfig = computed(() => {
|
||||||
return !!(
|
// TODO @puhui999: 后续统一处理
|
||||||
props.config?.service ||
|
console.log(props.config)
|
||||||
props.config?.event ||
|
// return !!(
|
||||||
props.config?.properties ||
|
// props.config?.service ||
|
||||||
props.config?.custom
|
// props.config?.event ||
|
||||||
)
|
// props.config?.properties ||
|
||||||
|
// props.config?.custom
|
||||||
|
// )
|
||||||
|
return true
|
||||||
})
|
})
|
||||||
|
|
||||||
const paramsList = computed(() => {
|
const paramsList = computed(() => {
|
||||||
|
|
@ -440,44 +443,26 @@ const generateExampleJson = () => {
|
||||||
return JSON.stringify(example, null, 2)
|
return JSON.stringify(example, null, 2)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 初始化标志,防止重复初始化
|
// 处理数据回显的函数
|
||||||
const isInitialized = ref(false)
|
const handleDataDisplay = (value: string) => {
|
||||||
|
if (!value || !value.trim()) {
|
||||||
// 初始化数据
|
paramsJson.value = ''
|
||||||
const initializeData = () => {
|
jsonError.value = ''
|
||||||
if (isInitialized.value) return
|
return
|
||||||
|
|
||||||
if (localValue.value) {
|
|
||||||
try {
|
|
||||||
// modelValue 已经是字符串类型,直接使用
|
|
||||||
if (localValue.value.trim()) {
|
|
||||||
try {
|
|
||||||
// 尝试解析JSON,如果成功则格式化
|
|
||||||
const parsed = JSON.parse(localValue.value)
|
|
||||||
paramsJson.value = JSON.stringify(parsed, null, 2)
|
|
||||||
} catch {
|
|
||||||
// 如果不是有效的JSON,直接使用原字符串
|
|
||||||
paramsJson.value = localValue.value
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
paramsJson.value = ''
|
|
||||||
}
|
|
||||||
|
|
||||||
jsonError.value = ''
|
|
||||||
} catch (error) {
|
|
||||||
console.error('初始化参数失败:', error)
|
|
||||||
jsonError.value = '初始参数格式错误'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
isInitialized.value = true
|
try {
|
||||||
|
// 尝试解析JSON,如果成功则格式化
|
||||||
|
const parsed = JSON.parse(value)
|
||||||
|
paramsJson.value = JSON.stringify(parsed, null, 2)
|
||||||
|
jsonError.value = ''
|
||||||
|
} catch {
|
||||||
|
// 如果不是有效的JSON,直接使用原字符串
|
||||||
|
paramsJson.value = value
|
||||||
|
jsonError.value = ''
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 组件挂载时初始化
|
|
||||||
onMounted(() => {
|
|
||||||
initializeData()
|
|
||||||
})
|
|
||||||
|
|
||||||
// 监听外部值变化(编辑模式数据回显)
|
// 监听外部值变化(编辑模式数据回显)
|
||||||
watch(
|
watch(
|
||||||
() => localValue.value,
|
() => localValue.value,
|
||||||
|
|
@ -485,33 +470,23 @@ watch(
|
||||||
// 避免循环更新
|
// 避免循环更新
|
||||||
if (newValue === oldValue) return
|
if (newValue === oldValue) return
|
||||||
|
|
||||||
try {
|
// 使用 nextTick 确保在下一个 tick 中处理数据
|
||||||
let newJsonString = ''
|
nextTick(() => {
|
||||||
|
handleDataDisplay(newValue || '')
|
||||||
if (newValue && newValue.trim()) {
|
})
|
||||||
try {
|
|
||||||
// 尝试解析JSON,如果成功则格式化
|
|
||||||
const parsed = JSON.parse(newValue)
|
|
||||||
newJsonString = JSON.stringify(parsed, null, 2)
|
|
||||||
} catch {
|
|
||||||
// 如果不是有效的JSON,直接使用原字符串
|
|
||||||
newJsonString = newValue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 只有当JSON字符串真正改变时才更新
|
|
||||||
if (newJsonString !== paramsJson.value) {
|
|
||||||
paramsJson.value = newJsonString
|
|
||||||
jsonError.value = ''
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.error('数据回显失败:', error)
|
|
||||||
jsonError.value = '数据格式错误'
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{ immediate: true }
|
{ immediate: true }
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// 组件挂载后也尝试处理一次数据回显
|
||||||
|
onMounted(() => {
|
||||||
|
nextTick(() => {
|
||||||
|
if (localValue.value) {
|
||||||
|
handleDataDisplay(localValue.value)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
// 监听配置变化
|
// 监听配置变化
|
||||||
watch(
|
watch(
|
||||||
() => props.config,
|
() => props.config,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue