wip: insert table and delete table

This commit is contained in:
zzs 2025-03-24 15:55:22 +08:00
parent 92af7405c6
commit 0926eaa56f

View File

@ -75,8 +75,8 @@ onMounted(async () => {
let ActionId = '' let ActionId = ''
let MessageId = '' let MessageId = ''
if (data.content) if (data)
ActionId = data.content.ActionId ActionId = data.ActionId
if (data.MessageId) if (data.MessageId)
MessageId = data.MessageId MessageId = data.MessageId
@ -101,6 +101,18 @@ onMounted(async () => {
case 'LocateBookmark': case 'LocateBookmark':
handleLocateBookmark(data) handleLocateBookmark(data)
break break
case 'DeleteBookmark':
handleDeleteBookmark(data)
break
case 'InsertRowWithJSON':
handleInsertRowWithJSON(data)
break
case 'DeleteRowWithJSON':
handleDeleteRowWithJSON(data)
break
case 'ModifyStatus':
handleSendModifyStatus()
break
} }
// WOPI Client // WOPI Client
switch (MessageId) { switch (MessageId) {
@ -225,7 +237,7 @@ async function downloadAndSendCurrentEditFile() {
* @param data * @param data
*/ */
async function handleFileBinary(data: any) { async function handleFileBinary(data: any) {
const { name, type, buffer } = data.content.Payload const { name, type, buffer } = data.Payload
const blob = base64ToBlob(buffer, type) const blob = base64ToBlob(buffer, type)
const uploadResult = await uploadOneFile({ const uploadResult = await uploadOneFile({
filename: name, filename: name,
@ -260,7 +272,7 @@ function proxyReplaceWithJSON(data: any) {
Values: { Values: {
params: { params: {
type: 'string', type: 'string',
value: JSON.stringify(data.content.Payload), value: JSON.stringify(data.Payload),
}, },
}, },
}) })
@ -322,11 +334,12 @@ function sendMessageToCaller(data: any, ignore: boolean = false) {
* @param data * @param data
*/ */
function handlePythonScriptCallBack(data: any) { function handlePythonScriptCallBack(data: any) {
console.warn('======handlePythonScriptCallBack') try {
const Values = data.Values const Values = data?.Values
const success = Values.success as boolean const success = Values?.success as boolean
const commandName = Values.commandName const commandName = Values?.commandName
if (success) { if (success && Values) {
if (Values?.result?.value) {
const jsonData = JSON.parse(Values.result.value) const jsonData = JSON.parse(Values.result.value)
sendMessageToCaller({ sendMessageToCaller({
ActionId: extractMethodName(commandName), ActionId: extractMethodName(commandName),
@ -336,6 +349,7 @@ function handlePythonScriptCallBack(data: any) {
Timestamp: Date.now(), Timestamp: Date.now(),
}) })
} }
}
else { else {
console.error(data) console.error(data)
createMessage.error(`执行Python脚本失败: ${data.Values.result.value}`) createMessage.error(`执行Python脚本失败: ${data.Values.result.value}`)
@ -348,6 +362,11 @@ function handlePythonScriptCallBack(data: any) {
Timestamp: Date.now(), Timestamp: Date.now(),
}) })
} }
}
catch (e) {
console.error(e)
createMessage.error(`消息发送失败,查看控制台日志!`)
}
} }
/** /**
@ -371,7 +390,8 @@ function handleSaveFile() {
*/ */
function handleAddBookmark(data: any) { function handleAddBookmark(data: any) {
try { try {
const bookmarkName = data.content.Payload.bookmarkName const Payload = data.Payload
const bookmarkName = Payload.bookmarkName
if (!bookmarkName) if (!bookmarkName)
return return
sendMessageToWopiClient({ sendMessageToWopiClient({
@ -399,7 +419,8 @@ function handleAddBookmark(data: any) {
*/ */
function handleLocateBookmark(data: any) { function handleLocateBookmark(data: any) {
try { try {
const bookmarkName = data.content.Payload.bookmarkName const Payload = data.Payload
const bookmarkName = Payload.bookmarkName
if (!bookmarkName) if (!bookmarkName)
return return
sendMessageToWopiClient({ 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) { function logEvent(e: MessageEvent) {
console.log('=============receive message start=======') console.log('=============receive message start=======')
console.log(typeof e.data) console.log(typeof e.data)