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 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)