fix: Static image loading path issue and Mobile setting information error
@ -6,10 +6,10 @@
|
|||||||
|
|
||||||
1. 获取API Key
|
1. 获取API Key
|
||||||
在[博查开放平台](https://open.bochaai.com/overview) 上申请 API 密钥。
|
在[博查开放平台](https://open.bochaai.com/overview) 上申请 API 密钥。
|
||||||

|

|
||||||
2. 在函数库中配置
|
2. 在函数库中配置
|
||||||
在函数库的博查函数面板中,点击 … > 启用参数,填写 API 密钥,并启用博查函数。
|
在函数库的博查函数面板中,点击 … > 启用参数,填写 API 密钥,并启用博查函数。
|
||||||

|

|
||||||
3. 在应用中使用
|
3. 在应用中使用
|
||||||
在高级编排应用中,点击添加组件->函数库->博查,设置使用参数。
|
在高级编排应用中,点击添加组件->函数库->博查,设置使用参数。
|
||||||

|

|
||||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
@ -6,17 +6,17 @@ Google 搜索工具是一个实时 API,可提取搜索引擎结果,提供来
|
|||||||
|
|
||||||
1. 创建 Google Custom Search Engine
|
1. 创建 Google Custom Search Engine
|
||||||
在[Programmable Search Engine](https://programmablesearchengine.google.com/)中 添加 Search Engine
|
在[Programmable Search Engine](https://programmablesearchengine.google.com/)中 添加 Search Engine
|
||||||

|

|
||||||
2. 获取cx参数
|
2. 获取cx参数
|
||||||
进入添加引擎,在【基本】菜单中获取搜索引擎的ID,即cx。
|
进入添加引擎,在【基本】菜单中获取搜索引擎的ID,即cx。
|
||||||
 3.获取 API Key
|
 3.获取 API Key
|
||||||
打开 https://developers.google.com/custom-search/v1/overview?hl=zh-cn,获取API Key。
|
打开 https://developers.google.com/custom-search/v1/overview?hl=zh-cn,获取API Key。
|
||||||

|

|
||||||
|
|
||||||
3. 配置启动参数
|
3. 配置启动参数
|
||||||
在Google搜索函数的启动参数中填写配置以上参数。
|
在Google搜索函数的启动参数中填写配置以上参数。
|
||||||

|

|
||||||
|
|
||||||
4. 在应用中使用
|
4. 在应用中使用
|
||||||
在高级编排应用中,点击添加组件->函数库->博查,设置使用参数。
|
在高级编排应用中,点击添加组件->函数库->博查,设置使用参数。
|
||||||

|

|
||||||
|
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB |
|
Before Width: | Height: | Size: 236 KiB After Width: | Height: | Size: 236 KiB |
|
Before Width: | Height: | Size: 554 KiB After Width: | Height: | Size: 554 KiB |
|
Before Width: | Height: | Size: 240 KiB After Width: | Height: | Size: 240 KiB |
|
Before Width: | Height: | Size: 399 KiB After Width: | Height: | Size: 399 KiB |
|
Before Width: | Height: | Size: 176 KiB After Width: | Height: | Size: 176 KiB |
|
Before Width: | Height: | Size: 587 KiB After Width: | Height: | Size: 587 KiB |
|
Before Width: | Height: | Size: 264 KiB After Width: | Height: | Size: 264 KiB |
|
Before Width: | Height: | Size: 260 KiB After Width: | Height: | Size: 260 KiB |
|
Before Width: | Height: | Size: 229 KiB After Width: | Height: | Size: 229 KiB |
|
Before Width: | Height: | Size: 542 KiB After Width: | Height: | Size: 542 KiB |
|
Before Width: | Height: | Size: 240 KiB After Width: | Height: | Size: 240 KiB |
@ -6,10 +6,10 @@
|
|||||||
|
|
||||||
1. 获取API Key
|
1. 获取API Key
|
||||||
在[博查开放平台](https://open.bochaai.com/overview) 上申请 API 密钥。
|
在[博查开放平台](https://open.bochaai.com/overview) 上申请 API 密钥。
|
||||||

|

|
||||||
1. 在函数库中配置
|
2. 在函数库中配置
|
||||||
在函数库的博查函数面板中,点击 … > 启用参数,填写 API 密钥,并启用博查函数。
|
在函数库的博查函数面板中,点击 … > 启用参数,填写 API 密钥,并启用博查函数。
|
||||||

|

|
||||||
1. 在应用中使用
|
3. 在应用中使用
|
||||||
在高级编排应用中,点击添加组件->函数库->博查,设置使用参数。
|
在高级编排应用中,点击添加组件->函数库->博查,设置使用参数。
|
||||||

|

|
||||||
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 115 KiB |
@ -7,7 +7,6 @@
|
|||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
:close-on-press-escape="false"
|
:close-on-press-escape="false"
|
||||||
>
|
>
|
||||||
|
|
||||||
<el-row :gutter="12">
|
<el-row :gutter="12">
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<div class="border">
|
<div class="border">
|
||||||
@ -104,7 +103,9 @@ const source3 = ref('')
|
|||||||
|
|
||||||
const urlParams1 = computed(() => (props.apiInputParams ? '?' + props.apiInputParams : ''))
|
const urlParams1 = computed(() => (props.apiInputParams ? '?' + props.apiInputParams : ''))
|
||||||
const urlParams2 = computed(() => (props.apiInputParams ? '&' + props.apiInputParams : ''))
|
const urlParams2 = computed(() => (props.apiInputParams ? '&' + props.apiInputParams : ''))
|
||||||
|
const urlParams3 = computed(() =>
|
||||||
|
props.apiInputParams ? '?mode=mobile&' + props.apiInputParams : '?mode=mobile'
|
||||||
|
)
|
||||||
watch(dialogVisible, (bool) => {
|
watch(dialogVisible, (bool) => {
|
||||||
if (!bool) {
|
if (!bool) {
|
||||||
source1.value = ''
|
source1.value = ''
|
||||||
@ -131,8 +132,8 @@ src="${window.location.origin}/api/application/embed?protocol=${window.location.
|
|||||||
)}&host=${window.location.host}&token=${val}${urlParams2.value}">
|
)}&host=${window.location.host}&token=${val}${urlParams2.value}">
|
||||||
<\/script>
|
<\/script>
|
||||||
`
|
`
|
||||||
source3.value = `<iframe
|
source3.value = `<iframe
|
||||||
src="${application.location + val + urlParams1.value}?mode=mobile"
|
src="${application.location + val + urlParams3.value}"
|
||||||
style="width: 100%; height: 100%;"
|
style="width: 100%; height: 100%;"
|
||||||
frameborder="0"
|
frameborder="0"
|
||||||
allow="microphone">
|
allow="microphone">
|
||||||
|
|||||||
@ -266,7 +266,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onMounted, reactive, watch, nextTick } from 'vue'
|
import { ref, onMounted, reactive, watch, nextTick } from 'vue'
|
||||||
import { cloneDeep } from 'lodash'
|
import { cloneDeep, get } from 'lodash'
|
||||||
import functionLibApi from '@/api/function-lib'
|
import functionLibApi from '@/api/function-lib'
|
||||||
import FunctionFormDrawer from './component/FunctionFormDrawer.vue'
|
import FunctionFormDrawer from './component/FunctionFormDrawer.vue'
|
||||||
import { MsgSuccess, MsgConfirm, MsgError } from '@/utils/message'
|
import { MsgSuccess, MsgConfirm, MsgError } from '@/utils/message'
|
||||||
@ -280,10 +280,11 @@ import { isAppIcon } from '@/utils/application'
|
|||||||
import InfiniteScroll from '@/components/infinite-scroll/index.vue'
|
import InfiniteScroll from '@/components/infinite-scroll/index.vue'
|
||||||
import CardBox from '@/components/card-box/index.vue'
|
import CardBox from '@/components/card-box/index.vue'
|
||||||
import AddInternalFunctionDialog from '@/views/function-lib/component/AddInternalFunctionDialog.vue'
|
import AddInternalFunctionDialog from '@/views/function-lib/component/AddInternalFunctionDialog.vue'
|
||||||
const internalDesc: Record<string, any> = import.meta.glob('@/assets/fx/*/detail.md', {
|
// const internalDesc: Record<string, any> = import.meta.glob('/fx/*/detail.md', {
|
||||||
eager: true,
|
// eager: true,
|
||||||
as: 'raw'
|
// as: 'raw'
|
||||||
})
|
// })
|
||||||
|
// console.log(internalDesc)
|
||||||
|
|
||||||
const { user } = useStore()
|
const { user } = useStore()
|
||||||
|
|
||||||
@ -352,9 +353,11 @@ function openCreateDialog(data?: any) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function openDescDrawer(row: any) {
|
async function openDescDrawer(row: any) {
|
||||||
const index = row.icon.replace('icon.png', 'detail.md')
|
const index = row.icon.replace('icon.png', 'detail.md')
|
||||||
InternalDescDrawerRef.value.open(internalDesc[index], row)
|
const response = await fetch(index)
|
||||||
|
const content = await response.text()
|
||||||
|
InternalDescDrawerRef.value.open(content, row)
|
||||||
}
|
}
|
||||||
|
|
||||||
function addInternalFunction(data?: any) {
|
function addInternalFunction(data?: any) {
|
||||||
|
|||||||
@ -147,10 +147,9 @@
|
|||||||
<template #label>
|
<template #label>
|
||||||
<div class="flex align-center">
|
<div class="flex align-center">
|
||||||
<div class="mr-4">
|
<div class="mr-4">
|
||||||
<span
|
<span>{{
|
||||||
>{{ $t('views.applicationWorkflow.nodes.aiChatNode.returnContent.label')
|
$t('views.applicationWorkflow.nodes.aiChatNode.returnContent.label')
|
||||||
}}<span class="danger">*</span></span
|
}}</span>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
|
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
|
||||||
<template #content>
|
<template #content>
|
||||||
|
|||||||
@ -148,7 +148,7 @@
|
|||||||
<div class="mr-4">
|
<div class="mr-4">
|
||||||
<span
|
<span
|
||||||
>{{ $t('views.applicationWorkflow.nodes.aiChatNode.returnContent.label')
|
>{{ $t('views.applicationWorkflow.nodes.aiChatNode.returnContent.label')
|
||||||
}}<span class="danger">*</span></span
|
}}</span
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
|
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
|
||||||
|
|||||||
@ -66,7 +66,7 @@
|
|||||||
<div class="mr-4">
|
<div class="mr-4">
|
||||||
<span
|
<span
|
||||||
>{{ $t('views.applicationWorkflow.nodes.aiChatNode.returnContent.label')
|
>{{ $t('views.applicationWorkflow.nodes.aiChatNode.returnContent.label')
|
||||||
}}<span class="danger">*</span></span
|
}}</span
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
|
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
|
||||||
|
|||||||
@ -94,10 +94,9 @@
|
|||||||
<template #label>
|
<template #label>
|
||||||
<div class="flex align-center">
|
<div class="flex align-center">
|
||||||
<div class="mr-4">
|
<div class="mr-4">
|
||||||
<span
|
<span>{{
|
||||||
>{{ $t('views.applicationWorkflow.nodes.aiChatNode.returnContent.label')
|
$t('views.applicationWorkflow.nodes.aiChatNode.returnContent.label')
|
||||||
}}<span class="danger">*</span></span
|
}}</span>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
|
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
|
||||||
<template #content>
|
<template #content>
|
||||||
|
|||||||
@ -133,7 +133,7 @@
|
|||||||
<div class="mr-4">
|
<div class="mr-4">
|
||||||
<span
|
<span
|
||||||
>{{ $t('views.applicationWorkflow.nodes.aiChatNode.returnContent.label')
|
>{{ $t('views.applicationWorkflow.nodes.aiChatNode.returnContent.label')
|
||||||
}}<span class="danger">*</span></span
|
}}</span
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
|
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
|
||||||
|
|||||||
@ -151,7 +151,7 @@
|
|||||||
<div class="mr-4">
|
<div class="mr-4">
|
||||||
<span
|
<span
|
||||||
>{{ $t('views.applicationWorkflow.nodes.aiChatNode.returnContent.label')
|
>{{ $t('views.applicationWorkflow.nodes.aiChatNode.returnContent.label')
|
||||||
}}<span class="danger">*</span></span
|
}}</span
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
|
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
|
||||||
|
|||||||
@ -115,7 +115,7 @@
|
|||||||
<div class="mr-4">
|
<div class="mr-4">
|
||||||
<span
|
<span
|
||||||
>{{ $t('views.applicationWorkflow.nodes.aiChatNode.returnContent.label')
|
>{{ $t('views.applicationWorkflow.nodes.aiChatNode.returnContent.label')
|
||||||
}}<span class="danger">*</span></span
|
}}</span
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
|
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
|
||||||
|
|||||||
@ -19,8 +19,14 @@
|
|||||||
size="small"
|
size="small"
|
||||||
style="width: 85px"
|
style="width: 85px"
|
||||||
>
|
>
|
||||||
<el-option :label="$t('views.applicationWorkflow.nodes.replyNode.replyContent.reference')" value="referencing" />
|
<el-option
|
||||||
<el-option :label="$t('views.applicationWorkflow.nodes.replyNode.replyContent.custom')" value="content" />
|
:label="$t('views.applicationWorkflow.nodes.replyNode.replyContent.reference')"
|
||||||
|
value="referencing"
|
||||||
|
/>
|
||||||
|
<el-option
|
||||||
|
:label="$t('views.applicationWorkflow.nodes.replyNode.replyContent.custom')"
|
||||||
|
value="content"
|
||||||
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -51,10 +57,9 @@
|
|||||||
<template #label>
|
<template #label>
|
||||||
<div class="flex align-center">
|
<div class="flex align-center">
|
||||||
<div class="mr-4">
|
<div class="mr-4">
|
||||||
<span
|
<span>{{
|
||||||
>{{ $t('views.applicationWorkflow.nodes.aiChatNode.returnContent.label')
|
$t('views.applicationWorkflow.nodes.aiChatNode.returnContent.label')
|
||||||
}}<span class="danger">*</span></span
|
}}</span>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
|
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
|
||||||
<template #content>
|
<template #content>
|
||||||
|
|||||||
@ -77,7 +77,7 @@
|
|||||||
<div class="mr-4">
|
<div class="mr-4">
|
||||||
<span
|
<span
|
||||||
>{{ $t('views.applicationWorkflow.nodes.aiChatNode.returnContent.label')
|
>{{ $t('views.applicationWorkflow.nodes.aiChatNode.returnContent.label')
|
||||||
}}<span class="danger">*</span></span
|
}}</span
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
|
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
|
||||||
|
|||||||
@ -84,10 +84,9 @@
|
|||||||
<template #label>
|
<template #label>
|
||||||
<div class="flex align-center">
|
<div class="flex align-center">
|
||||||
<div class="mr-4">
|
<div class="mr-4">
|
||||||
<span
|
<span>{{
|
||||||
>{{ $t('views.applicationWorkflow.nodes.aiChatNode.returnContent.label')
|
$t('views.applicationWorkflow.nodes.aiChatNode.returnContent.label')
|
||||||
}}<span class="danger">*</span></span
|
}}</span>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
|
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
|
||||||
<template #content>
|
<template #content>
|
||||||
|
|||||||