diff --git a/src/views/infra/bookmark/index.vue b/src/views/infra/bookmark/index.vue index df7df34..0693748 100644 --- a/src/views/infra/bookmark/index.vue +++ b/src/views/infra/bookmark/index.vue @@ -75,8 +75,8 @@ onMounted(async () => { let ActionId = '' let MessageId = '' - if (data.content) - ActionId = data.content.ActionId + if (data) + ActionId = data.ActionId if (data.MessageId) MessageId = data.MessageId @@ -101,6 +101,18 @@ onMounted(async () => { case 'LocateBookmark': handleLocateBookmark(data) break + case 'DeleteBookmark': + handleDeleteBookmark(data) + break + case 'InsertRowWithJSON': + handleInsertRowWithJSON(data) + break + case 'DeleteRowWithJSON': + handleDeleteRowWithJSON(data) + break + case 'ModifyStatus': + handleSendModifyStatus() + break } // WOPI Client发送消息 switch (MessageId) { @@ -225,7 +237,7 @@ async function downloadAndSendCurrentEditFile() { * @param data */ async function handleFileBinary(data: any) { - const { name, type, buffer } = data.content.Payload + const { name, type, buffer } = data.Payload const blob = base64ToBlob(buffer, type) const uploadResult = await uploadOneFile({ filename: name, @@ -260,7 +272,7 @@ function proxyReplaceWithJSON(data: any) { Values: { params: { type: 'string', - value: JSON.stringify(data.content.Payload), + value: JSON.stringify(data.Payload), }, }, }) @@ -322,31 +334,38 @@ function sendMessageToCaller(data: any, ignore: boolean = false) { * @param data */ function handlePythonScriptCallBack(data: any) { - console.warn('======handlePythonScriptCallBack') - const Values = data.Values - const success = Values.success as boolean - const commandName = Values.commandName - if (success) { - const jsonData = JSON.parse(Values.result.value) - sendMessageToCaller({ - ActionId: extractMethodName(commandName), - Success: success, - Payload: jsonData, - Message: null, - Timestamp: Date.now(), - }) - } - else { - console.error(data) - createMessage.error(`执行Python脚本失败: ${data.Values.result.value}`) + try { + const Values = data?.Values + const success = Values?.success as boolean + const commandName = Values?.commandName + if (success && Values) { + if (Values?.result?.value) { + const jsonData = JSON.parse(Values.result.value) + sendMessageToCaller({ + ActionId: extractMethodName(commandName), + Success: success, + Payload: jsonData, + Message: null, + Timestamp: Date.now(), + }) + } + } + else { + console.error(data) + createMessage.error(`执行Python脚本失败: ${data.Values.result.value}`) - sendMessageToCaller({ - ActionId: extractMethodName(commandName), - Success: success, - Payload: null, - Message: data.Values.result.value, - Timestamp: Date.now(), - }) + sendMessageToCaller({ + ActionId: extractMethodName(commandName), + Success: success, + Payload: null, + Message: data.Values.result.value, + Timestamp: Date.now(), + }) + } + } + catch (e) { + console.error(e) + createMessage.error(`消息发送失败,查看控制台日志!`) } } @@ -371,7 +390,8 @@ function handleSaveFile() { */ function handleAddBookmark(data: any) { try { - const bookmarkName = data.content.Payload.bookmarkName + const Payload = data.Payload + const bookmarkName = Payload.bookmarkName if (!bookmarkName) return sendMessageToWopiClient({ @@ -399,7 +419,8 @@ function handleAddBookmark(data: any) { */ function handleLocateBookmark(data: any) { try { - const bookmarkName = data.content.Payload.bookmarkName + const Payload = data.Payload + const bookmarkName = Payload.bookmarkName if (!bookmarkName) return sendMessageToWopiClient({ @@ -421,6 +442,120 @@ function handleLocateBookmark(data: any) { } } +/** + * 删除指定名称的书签 + * @param data + */ +function handleDeleteBookmark(data: any) { + try { + const Payload = data.Payload + const bookmarkName = Payload.bookmarkName + if (!bookmarkName) + return + sendMessageToWopiClient({ + MessageId: 'CallPythonScript', + SendTime: Date.now(), + ScriptFile: 'BookmarkOP.py', + Function: 'DeleteBookmark', + Values: { + params: { + type: 'string', + value: bookmarkName, + }, + }, + }) + } + catch (e) { + console.error(e) + createMessage.error('执行失败,请查看控制台日志!') + } +} + +/** + * 使用二维数组 + 任意标签名称给表格插入行 + * @param data + */ +function handleInsertRowWithJSON(data: any) { + try { + const Payload = data.Payload + const bookmarkName = Payload.bookmarkName + const startRowIndex = Payload.startRowIndex + const dataArray = Payload.data + if (!bookmarkName || !dataArray) + return + + sendMessageToWopiClient({ + MessageId: 'CallPythonScript', + SendTime: Date.now(), + ScriptFile: 'BookmarkOP.py', + Function: 'InsertRowWithJSON', + Values: { + params: { + type: 'string', + value: JSON.stringify({ + location_bookmark_name: bookmarkName, + data: dataArray, + start_row_index: startRowIndex, + }), + }, + }, + }) + } + catch (e) { + console.error(e) + createMessage.error('执行失败,请查看控制台日志!') + } +} + +/** + * 删除表格行 + * @param data + */ +function handleDeleteRowWithJSON(data: any) { + try { + const Payload = data.Payload + const bookmarkName = Payload.bookmarkName + const startRowIndex = Payload.startRowIndex + const deleteRowCount = Payload.deleteRowCount + if (!bookmarkName || !startRowIndex) + return + + sendMessageToWopiClient({ + MessageId: 'CallPythonScript', + SendTime: Date.now(), + ScriptFile: 'BookmarkOP.py', + Function: 'DeleteRowWithJSON', + Values: { + params: { + type: 'string', + value: JSON.stringify({ + location_bookmark_name: bookmarkName, + start_row_index: startRowIndex, + delete_row_count: deleteRowCount, + }), + }, + }, + }) + } + catch (e) { + console.error(e) + createMessage.error('执行失败,请查看控制台日志!') + } +} + +/** + * 第三方主动调用,获取文件是否被修改 + */ +function handleSendModifyStatus() { + sendMessageToCaller({ + ActionId: 'ModifyStatus', + Payload: { + modify: editStatus.value.Modified, + }, + Timestamp: Date.now(), + }, true) +} + function logEvent(e: MessageEvent) { console.log('=============receive message start=======') console.log(typeof e.data)