|
@@ -7,7 +7,7 @@ import {
|
|
getFormKey,
|
|
getFormKey,
|
|
buildObjPrompt,
|
|
buildObjPrompt,
|
|
getFileSummaryPrompt
|
|
getFileSummaryPrompt
|
|
-} from '@/utils/ai-service'
|
|
|
|
|
|
+} from '@/utils/ai-service.js'
|
|
import { ElMessage } from 'element-plus'
|
|
import { ElMessage } from 'element-plus'
|
|
import { getPageInfo } from '../utils/index.js'
|
|
import { getPageInfo } from '../utils/index.js'
|
|
import { mockData, mockData2 } from '../mock'
|
|
import { mockData, mockData2 } from '../mock'
|
|
@@ -112,6 +112,30 @@ export function useMsg(scrollbar?: any) {
|
|
messages.value.push(obj)
|
|
messages.value.push(obj)
|
|
msg = msg.split('/智能填表')[1]
|
|
msg = msg.split('/智能填表')[1]
|
|
nextTick(() => scrollbar.value?.setScrollTop(99999))
|
|
nextTick(() => scrollbar.value?.setScrollTop(99999))
|
|
|
|
+ if (!msg) {
|
|
|
|
+ const res = await new Promise((res, rej) => {
|
|
|
|
+ chrome.runtime.sendMessage({
|
|
|
|
+ type: 'FROM_SIDE_PANEL_TO_GET_PAGE_FORM'
|
|
|
|
+ }, ({ status, data }) => {
|
|
|
|
+ if (status === 'error') {
|
|
|
|
+ obj.content = '当前页面未找到表单'
|
|
|
|
+ sendLoading.value = false
|
|
|
|
+ res({ status })
|
|
|
|
+ }
|
|
|
|
+ if (status === 'ok') {
|
|
|
|
+ obj.content = '请上传数据'
|
|
|
|
+ sendLoading.value = false
|
|
|
|
+ res({ status, data })
|
|
|
|
+ }
|
|
|
|
+ if (status === 'select') {
|
|
|
|
+ obj.content = '检测到左侧页面中有多个表单,请选择要填写的表单。'
|
|
|
|
+ sendLoading.value = false
|
|
|
|
+ res({ status })
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+ return res
|
|
|
|
+ }
|
|
if (!msg) {
|
|
if (!msg) {
|
|
obj.content = `请选择表单`
|
|
obj.content = `请选择表单`
|
|
// ElMessage({
|
|
// ElMessage({
|
|
@@ -127,18 +151,50 @@ export function useMsg(scrollbar?: any) {
|
|
obj.content = '当前页面未找到表单'
|
|
obj.content = '当前页面未找到表单'
|
|
sendLoading.value = false
|
|
sendLoading.value = false
|
|
}
|
|
}
|
|
|
|
+ if (response.status === 'ok') {
|
|
|
|
+ obj.content = '请上传数据'
|
|
|
|
+ sendLoading.value = false
|
|
|
|
+ return
|
|
|
|
+ }
|
|
})
|
|
})
|
|
return
|
|
return
|
|
}
|
|
}
|
|
- await fetchDataAndProcess(msg, obj)
|
|
|
|
|
|
+ const res = await fetchDataAndProcess(msg, obj)
|
|
|
|
+ console.log(res);
|
|
|
|
+ if (res.status === 'ok') {
|
|
|
|
+ await new Promise((res: any) =>
|
|
|
|
+ setTimeout(() => {
|
|
|
|
+ res()
|
|
|
|
+ }, 2000)
|
|
|
|
+ )
|
|
|
|
+ const res = await new Promise((res, rej) => {
|
|
|
|
+ chrome.runtime.sendMessage({
|
|
|
|
+ type: 'FROM_SIDE_PANEL_TO_GET_PAGE_FORM'
|
|
|
|
+ }, ({ status, data }) => {
|
|
|
|
+ if (status === 'error') {
|
|
|
|
+ obj.content = '当前页面未找到表单'
|
|
|
|
+ sendLoading.value = false
|
|
|
|
+ res({ status })
|
|
|
|
+ }
|
|
|
|
+ if (status === 'ok') {
|
|
|
|
+ obj.content = '请上传数据'
|
|
|
|
+ sendLoading.value = false
|
|
|
|
+ res({ status, data })
|
|
|
|
+ }
|
|
|
|
+ if (status === 'select') {
|
|
|
|
+ obj.content = '检测到左侧页面中有多个表单,请选择要填写的表单。'
|
|
|
|
+ sendLoading.value = false
|
|
|
|
+ res({ status })
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+ return res
|
|
|
|
+ }
|
|
sendLoading.value = false
|
|
sendLoading.value = false
|
|
}
|
|
}
|
|
let str = ''
|
|
let str = ''
|
|
|
|
|
|
async function fetchDataAndProcess(input: any, obj: any) {
|
|
async function fetchDataAndProcess(input: any, obj: any) {
|
|
- if (input.startsWith('/智能填表')) {
|
|
|
|
- input = input.split('/智能填表')[1]
|
|
|
|
- }
|
|
|
|
str = input
|
|
str = input
|
|
console.log(str)
|
|
console.log(str)
|
|
const pageInfo = await getPageInfo()
|
|
const pageInfo = await getPageInfo()
|
|
@@ -151,7 +207,7 @@ export function useMsg(scrollbar?: any) {
|
|
// input_data: input,
|
|
// input_data: input,
|
|
// body: pageInfo.content.mainContent
|
|
// body: pageInfo.content.mainContent
|
|
// })
|
|
// })
|
|
- const res = await new Promise((resolve, reject) => {
|
|
|
|
|
|
+ const res: any = await new Promise((resolve, reject) => {
|
|
setTimeout(() => {
|
|
setTimeout(() => {
|
|
resolve({
|
|
resolve({
|
|
data:
|
|
data:
|
|
@@ -161,6 +217,7 @@ export function useMsg(scrollbar?: any) {
|
|
})
|
|
})
|
|
}, 1000)
|
|
}, 1000)
|
|
})
|
|
})
|
|
|
|
+ const data = res.data
|
|
if (!res.data.tag || res.data.tag === 'undefined') {
|
|
if (!res.data.tag || res.data.tag === 'undefined') {
|
|
ElMessage({
|
|
ElMessage({
|
|
message: '未找到标签,请重试',
|
|
message: '未找到标签,请重试',
|
|
@@ -169,10 +226,56 @@ export function useMsg(scrollbar?: any) {
|
|
grouping: true
|
|
grouping: true
|
|
})
|
|
})
|
|
obj.content = '未找到标签,请重试'
|
|
obj.content = '未找到标签,请重试'
|
|
- type.value = ''
|
|
|
|
return
|
|
return
|
|
}
|
|
}
|
|
- await handleClick(res.data, obj)
|
|
|
|
|
|
+ console.log(res);
|
|
|
|
+
|
|
|
|
+ await new Promise((resolve) => setTimeout(resolve, 2000))
|
|
|
|
+ obj.content = `点击${res.data.tag}元素`
|
|
|
|
+ const res2 = await new Promise((resolve, rej) => {
|
|
|
|
+ chrome.runtime.sendMessage(
|
|
|
|
+ {
|
|
|
|
+ type: 'FROM_SIDE_PANEL_TO_ACTION',
|
|
|
|
+ data: res.data
|
|
|
|
+ },
|
|
|
|
+ async ({ data, status }) => {
|
|
|
|
+ if (chrome.runtime.lastError) {
|
|
|
|
+ console.error('消息发送错误:', chrome.runtime.lastError)
|
|
|
|
+ } else {
|
|
|
|
+ if (status === 'error') {
|
|
|
|
+ obj.content = data
|
|
|
|
+ resolve({ data, status })
|
|
|
|
+ }
|
|
|
|
+ if (res.data.next === '是') {
|
|
|
|
+ const arr = str.split(',')
|
|
|
|
+ arr.shift()
|
|
|
|
+ str = arr.join(',')
|
|
|
|
+ indexTemp.value++
|
|
|
|
+ const res = await fetchDataAndProcess(str, obj)
|
|
|
|
+ resolve(res)
|
|
|
|
+ } else resolve({ status: 'ok' })
|
|
|
|
+ // else {
|
|
|
|
+ // await new Promise((resolve, reject) => {
|
|
|
|
+ // setTimeout(() => {
|
|
|
|
+ // resolve(1)
|
|
|
|
+ // }, 2000)
|
|
|
|
+ // })
|
|
|
|
+ // obj.content = `请选择表单`
|
|
|
|
+ // ElMessage({
|
|
|
|
+ // message: '请选择表单',
|
|
|
|
+ // type: 'success',
|
|
|
|
+ // duration: 4 * 1000,
|
|
|
|
+ // grouping: true
|
|
|
|
+ // })
|
|
|
|
+ // chrome.runtime.sendMessage({
|
|
|
|
+ // type: 'FROM_SIDE_PANEL_TO_GET_PAGE_FORM'
|
|
|
|
+ // })
|
|
|
|
+ // }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ )
|
|
|
|
+ })
|
|
|
|
+ return res2
|
|
}
|
|
}
|
|
|
|
|
|
async function handleClick(res: any, msgObj: any) {
|
|
async function handleClick(res: any, msgObj: any) {
|
|
@@ -198,25 +301,21 @@ export function useMsg(scrollbar?: any) {
|
|
indexTemp.value++
|
|
indexTemp.value++
|
|
fetchDataAndProcess(str, msgObj)
|
|
fetchDataAndProcess(str, msgObj)
|
|
} else {
|
|
} else {
|
|
- if (type.value === '2') {
|
|
|
|
- await new Promise((resolve, reject) => {
|
|
|
|
- setTimeout(() => {
|
|
|
|
- resolve(1)
|
|
|
|
- }, 2000)
|
|
|
|
- })
|
|
|
|
- msgObj.content = `请选择表单`
|
|
|
|
- ElMessage({
|
|
|
|
- message: '请选择表单',
|
|
|
|
- type: 'success',
|
|
|
|
- duration: 4 * 1000,
|
|
|
|
- grouping: true
|
|
|
|
- })
|
|
|
|
- chrome.runtime.sendMessage({
|
|
|
|
- type: 'FROM_SIDE_PANEL_TO_GET_PAGE_FORM'
|
|
|
|
- })
|
|
|
|
- } else {
|
|
|
|
- msgObj.content = `执行完毕`
|
|
|
|
- }
|
|
|
|
|
|
+ await new Promise((resolve, reject) => {
|
|
|
|
+ setTimeout(() => {
|
|
|
|
+ resolve(1)
|
|
|
|
+ }, 2000)
|
|
|
|
+ })
|
|
|
|
+ msgObj.content = `请选择表单`
|
|
|
|
+ ElMessage({
|
|
|
|
+ message: '请选择表单',
|
|
|
|
+ type: 'success',
|
|
|
|
+ duration: 4 * 1000,
|
|
|
|
+ grouping: true
|
|
|
|
+ })
|
|
|
|
+ chrome.runtime.sendMessage({
|
|
|
|
+ type: 'FROM_SIDE_PANEL_TO_GET_PAGE_FORM'
|
|
|
|
+ })
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return true
|
|
return true
|
|
@@ -276,10 +375,14 @@ export function useMsg(scrollbar?: any) {
|
|
obj.rawContent += decodedChunk
|
|
obj.rawContent += decodedChunk
|
|
// 实时格式化显示内容
|
|
// 实时格式化显示内容
|
|
obj.content = formatMessage(obj.rawContent)
|
|
obj.content = formatMessage(obj.rawContent)
|
|
|
|
+ if (type.value === '2') obj.content = obj.content.replace(/item/g, '表单项').replace(/excelColumn/g, '对应数据源')
|
|
|
|
+
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scrollbar.value?.setScrollTop(99999)
|
|
scrollbar.value?.setScrollTop(99999)
|
|
}
|
|
}
|
|
|
|
+ console.log(obj.rawContent);
|
|
|
|
+
|
|
//添加到存储历史
|
|
//添加到存储历史
|
|
useStore(msgUuid.value).add({ ...obj })
|
|
useStore(msgUuid.value).add({ ...obj })
|
|
// 处理最终内容
|
|
// 处理最终内容
|
|
@@ -287,6 +390,21 @@ export function useMsg(scrollbar?: any) {
|
|
nextTick(() => {
|
|
nextTick(() => {
|
|
scrollbar.value?.setScrollTop(99999)
|
|
scrollbar.value?.setScrollTop(99999)
|
|
})
|
|
})
|
|
|
|
+ console.log();
|
|
|
|
+ // if (type.value === '2') {
|
|
|
|
+ // const arr = JSON.parse(obj.rawContent.split('json')[1].split('```')[0])
|
|
|
|
+ // const newArr = arr.map((i:any) => {
|
|
|
|
+ // return {
|
|
|
|
+ // '表单项': i.label ?? i.placeholder,
|
|
|
|
+ // '对应数据': i.excleColumn
|
|
|
|
+ // }
|
|
|
|
+ // })
|
|
|
|
+ // obj.content = formatMessage('```json' + JSON.stringify(newArr) + '```')
|
|
|
|
+ // console.log(formatMessage('```json' + JSON.stringify(newArr) + '```'));
|
|
|
|
+
|
|
|
|
+ // }
|
|
|
|
+ console.log(obj.content);
|
|
|
|
+
|
|
return obj.rawContent
|
|
return obj.rawContent
|
|
}
|
|
}
|
|
return {
|
|
return {
|