diff --git a/src/renderer/src/views/TS/components/eventParams.vue b/src/renderer/src/views/TS/components/eventParams.vue index f39fe17..b096efc 100644 --- a/src/renderer/src/views/TS/components/eventParams.vue +++ b/src/renderer/src/views/TS/components/eventParams.vue @@ -125,6 +125,7 @@ const updateEvent = () => { TsApi.updateTsEvent(obj).then(res => { console.log(res) if (res.code == 200) { + eventBus.emit('update-event', obj) ElMessage({type: "success", message: "操作成功"}) cancel() } diff --git a/src/renderer/src/views/TS/edit.vue b/src/renderer/src/views/TS/edit.vue index e8e3d5c..dfc9003 100644 --- a/src/renderer/src/views/TS/edit.vue +++ b/src/renderer/src/views/TS/edit.vue @@ -437,6 +437,9 @@ let getEventList = () => { }) newTS(params, events) } +eventBus.on('update-event', (task) => { + tsOBJ.value._Store._tasks = tsOBJ.value.replaceArrayItem(tsOBJ.value._Store._tasks, task) +}) eventBus.on('delete-event', (ids) => { tsOBJ.value._Store._tasks = tsOBJ.value._Store._tasks.filter(item => !ids.includes(item.id)) diff --git a/src/renderer/src/views/TS/sdk/index.ts b/src/renderer/src/views/TS/sdk/index.ts index 4574cf7..c54d0f8 100644 --- a/src/renderer/src/views/TS/sdk/index.ts +++ b/src/renderer/src/views/TS/sdk/index.ts @@ -80,4 +80,29 @@ export class TS extends Tools { } } } + + /** + * 替换对象数组中指定的元素(通过id匹配) + * @param {Array} arr - 原始对象数组,元素结构需包含id属性 + * @param {Object} newItem - 要替换的新对象(必须包含id属性) + * @param {string} [key='id'] - 匹配的唯一标识字段(默认使用id) + * @returns {Array} - 返回替换后的新数组(原数组不会被修改) + */ + replaceArrayItem(arr, newItem, key = 'id') { + // 边界校验 + if (!Array.isArray(arr)) { + console.error('第一个参数必须是数组'); + return arr; + } + if (typeof newItem !== 'object' || newItem === null || !newItem[key]) { + console.error(`新元素必须是包含${key}属性的对象`); + return arr; + } + + // 遍历数组并替换匹配的元素(返回新数组,避免修改原数组) + return arr.map(item => { + // 匹配到对应id的元素则替换,否则返回原元素 + return item[key] === newItem[key] ? {...item, ...newItem} : item; + }); + } }