mirror of
http://112.124.100.131/ebiz-ai/ebiz-ai-knowledge-manage.git
synced 2025-12-07 01:46:48 +08:00
Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
@@ -135,6 +135,28 @@ export default [
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
path: '/dify',
|
||||
name: 'dify',
|
||||
component: layout,
|
||||
redirect: '/dify/workflow',
|
||||
meta: {
|
||||
title: 'Dify',
|
||||
icon: 'el-icon-home',
|
||||
affix: true
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: '/dify/workflow',
|
||||
name: 'dify-workflow',
|
||||
component: () => import('@/views/dify/views/workflow/index.vue'),
|
||||
meta: {
|
||||
title: 'Dify',
|
||||
icon: 'el-icon-home'
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
21
src/views/dify/index.vue
Normal file
21
src/views/dify/index.vue
Normal file
@@ -0,0 +1,21 @@
|
||||
<script>
|
||||
|
||||
export default {
|
||||
name: 'dify',
|
||||
data() {
|
||||
return {
|
||||
dify: {
|
||||
src: '/dify'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="container">
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
77
src/views/dify/views/workflow/index.vue
Normal file
77
src/views/dify/views/workflow/index.vue
Normal file
@@ -0,0 +1,77 @@
|
||||
<script>
|
||||
import { computed } from 'vue'
|
||||
|
||||
export default {
|
||||
name: 'workflow',
|
||||
data() {
|
||||
return {
|
||||
dify: {
|
||||
// 默认不展示 header 和 sidebar
|
||||
params: {
|
||||
sidebar: '0',
|
||||
header: '0',
|
||||
publish: '0'
|
||||
},
|
||||
isVisible: false,
|
||||
// dify 的 workflow 地址格式 http://localhost:3000/dify/app/235427ea-803b-482b-bdff-dd717801ca76/workflow
|
||||
// app 是展示所有的内容
|
||||
src: `/`
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
params() {
|
||||
const _params = []
|
||||
Object.keys(this.dify.params).forEach(key => {
|
||||
_params.push(`${key}=${this.dify.params[key]}`)
|
||||
})
|
||||
return _params.join('&')
|
||||
}
|
||||
},
|
||||
// http://192.168.3.229:3000/apps
|
||||
created() {
|
||||
// 检测是否存在 workflow id , 如果不存在则不展示内容
|
||||
const { id, header, sidebar, publish } = this.$route.query
|
||||
if (id) {
|
||||
this.dify.src = `/app/${id}/workflow?${this.params}`
|
||||
this.dify.isVisible = true
|
||||
}
|
||||
|
||||
// 获取 header 和 sidebar 的内容, 重置参数状态
|
||||
this.dify.params.header = header || '0'
|
||||
this.dify.params.sidebar = sidebar || '0'
|
||||
this.dify.params.publish = publish || '0'
|
||||
},
|
||||
watch: {
|
||||
'$route.query': {
|
||||
handler() {
|
||||
// 获取 header 和 sidebar 的内容, 重置参数状态
|
||||
const { id, header, sidebar, publish } = this.$route.query
|
||||
this.dify.params.header = header || '0'
|
||||
this.dify.params.sidebar = sidebar || '0'
|
||||
this.dify.params.publish = publish || '0'
|
||||
|
||||
// 当路由参数 id 变化时,更新 dify 的 src
|
||||
if (id) {
|
||||
console.log(`current params:`, this.dify.params)
|
||||
|
||||
this.dify.src = `/app/${id}/workflow?${this.params}`
|
||||
this.dify.isVisible = true
|
||||
} else {
|
||||
this.dify.isVisible = false
|
||||
}
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="container">
|
||||
<el-card :body-style="{ padding: 0 }" shadow="hover">
|
||||
<iframe v-if="dify.isVisible" ref="dify" :src="dify.src" frameborder="0" style="width: 100%; height: 85vh;" />
|
||||
<el-empty v-else />
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
@@ -261,7 +261,7 @@ export default {
|
||||
/>
|
||||
|
||||
<!-- 弹出提示框, 里面是各种详情内容 -->
|
||||
<el-drawer title="上传任务详情" :visible.sync="infoDialogVisible" size="60%" :before-close="() => (infoDialogVisible = false)">
|
||||
<el-drawer title="上传任务详情" :visible.sync="infoDialogVisible" size="95%" :before-close="() => (infoDialogVisible = false)">
|
||||
<knowledge-info :form="activeForm" v-if="infoDialogVisible"></knowledge-info>
|
||||
</el-drawer>
|
||||
</div>
|
||||
|
||||
@@ -84,91 +84,123 @@ export default {
|
||||
<template>
|
||||
<div class="container upload-info-container">
|
||||
<div class="card-body">
|
||||
<el-form ref="form" :model="newForm" label-width="80px">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="知识库">
|
||||
<el-input v-model="newForm.datasetName" placeholder="" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="知识文件名称">
|
||||
<el-input v-model="newForm.fileName" placeholder="" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<!-- 左侧:表单内容和知识内容 -->
|
||||
<el-col :span="12">
|
||||
<!-- 表单内容 -->
|
||||
<el-card class="content-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>基本信息</span>
|
||||
</div>
|
||||
<el-form ref="form" :model="newForm" label-width="120px">
|
||||
<el-form-item label="知识库">
|
||||
<el-input v-model="newForm.datasetName" placeholder="" disabled></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="上传用户">
|
||||
<el-input v-model="newForm.userName" placeholder="" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="上传时间">
|
||||
<el-input v-model="newForm.createdDate" placeholder="" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="知识文件名称">
|
||||
<el-input v-model="newForm.fileName" placeholder="" disabled></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="任务号">
|
||||
<el-input v-model="newForm.id" placeholder="" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="分段模式">
|
||||
<el-input v-model="newForm.segmentedMode" placeholder="null" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="上传用户">
|
||||
<el-input v-model="newForm.userName" placeholder="" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="上传时间">
|
||||
<el-input v-model="newForm.createdDate" placeholder="" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="高级模式">
|
||||
<el-input v-model="useMineru" placeholder="" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="任务状态">
|
||||
<el-input v-model="documentStatus" placeholder="" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="任务号">
|
||||
<el-input v-model="newForm.id" placeholder="" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="分段模式">
|
||||
<el-input v-model="newForm.segmentedMode" placeholder="null" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24" v-if="newForm.documentStatus === -1">
|
||||
<el-form-item label="失败原因">
|
||||
<el-input v-model="newForm.errMessage" placeholder=""></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="高级模式">
|
||||
<el-input v-model="useMineru" placeholder="" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="任务状态">
|
||||
<el-input v-model="documentStatus" placeholder="" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="知识内容">
|
||||
<div class="is-always-shadow" v-if="descriptions">
|
||||
<text-model v-if="descriptions.doc_form === 'text_model'" :descriptions="descriptions" />
|
||||
<q-a-model v-else-if="descriptions.doc_form === 'qa_model'" :descriptions="descriptions" />
|
||||
</div>
|
||||
<span v-else>-</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-form-item label="失败原因" v-if="newForm.documentStatus === -1">
|
||||
<el-input v-model="newForm.errMessage" placeholder=""></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="原文内容" />
|
||||
<!-- 知识内容 -->
|
||||
<el-card class="content-card mt20">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>知识内容</span>
|
||||
</div>
|
||||
<div class="knowledge-content" v-if="descriptions">
|
||||
<text-model v-if="descriptions.doc_form === 'text_model'" :descriptions="descriptions" />
|
||||
<q-a-model v-else-if="descriptions.doc_form === 'qa_model'" :descriptions="descriptions" />
|
||||
</div>
|
||||
<span v-else>暂无知识内容</span>
|
||||
</el-card>
|
||||
</el-col>
|
||||
|
||||
<!-- 右侧:原文内容 -->
|
||||
<el-col :span="12">
|
||||
<el-card class="content-card full-height">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>原文内容</span>
|
||||
</div>
|
||||
<iframe
|
||||
id="iframe"
|
||||
:src="`${iframeSrc}/pdfjs-dist/web/viewer.html?file=${encodeURIComponent(getPdfUrl({ documentId: newForm.id }))}`"
|
||||
class="miner-u el-card is-always-shadow ml20"
|
||||
style="width: 98%; height: 800px;"
|
||||
class="miner-u"
|
||||
style="width: 100%; height: 800px;"
|
||||
></iframe>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
<style lang="scss" scoped>
|
||||
.content-card {
|
||||
margin-bottom: 20px;
|
||||
|
||||
.knowledge-content {
|
||||
min-height: 300px;
|
||||
}
|
||||
}
|
||||
|
||||
.full-height {
|
||||
height: calc(100% - 20px);
|
||||
}
|
||||
|
||||
.mt20 {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.clearfix:before,
|
||||
.clearfix:after {
|
||||
display: table;
|
||||
content: '';
|
||||
}
|
||||
.clearfix:after {
|
||||
clear: both;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -34,6 +34,28 @@ module.exports = {
|
||||
errors: true
|
||||
},
|
||||
proxy: {
|
||||
'/app': {
|
||||
target: 'http://localhost:3000',
|
||||
changeOrigin: true,
|
||||
onProxyRes: (proxyRes, req, res) => {
|
||||
delete proxyRes.headers['x-frame-options'];
|
||||
},
|
||||
pathRewrite: {
|
||||
// '^/app': '/'
|
||||
},
|
||||
logLevel: 'debug'
|
||||
},
|
||||
'/_next': {
|
||||
target: 'http://localhost:3000',
|
||||
changeOrigin: true,
|
||||
onProxyRes: (proxyRes, req, res) => {
|
||||
delete proxyRes.headers['x-frame-options'];
|
||||
},
|
||||
pathRewrite: {
|
||||
// '^/_next': '/'
|
||||
},
|
||||
logLevel: 'debug'
|
||||
},
|
||||
'/api': {
|
||||
target: process.env.VUE_APP_ADMIN,
|
||||
changeOrigin: true,
|
||||
|
||||
Reference in New Issue
Block a user