mirror of
http://112.124.100.131/ebiz-ai/ebiz-ai-knowledge-manage.git
synced 2025-12-10 19:36:50 +08:00
feat(intelligent-agent): 新增智能体创建功能
- 添加智能体创建页面和相关组件 - 实现智能体名称、图标、背景色选择功能 - 增加应用类型选择功能 -优化 emoji 选择器样式 - 调整卡片布局和样式
This commit is contained in:
@@ -227,4 +227,21 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
//&.is-active {
|
||||
// background: #fff;
|
||||
//}
|
||||
}
|
||||
|
||||
.render-group {
|
||||
padding: 5px 10px;
|
||||
background: #f8f8f8;
|
||||
& .el-radio-button {
|
||||
text-align: center;
|
||||
&.is-active {
|
||||
background: #fff !important;
|
||||
}
|
||||
& .el-radio-button__inner {
|
||||
padding: 2px 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
12
src/main.js
12
src/main.js
@@ -39,11 +39,17 @@ Vue.component('VEditor', VueEditor)
|
||||
// 富文本编辑器 可视化代码
|
||||
Vue.component('MEditor', MavonEditor)
|
||||
Vue.prototype.$messageBox = function(isOk, message, type, title) {
|
||||
this.$confirm(message ? message : '是否确认删除当前数据', title ? title : '提示', {
|
||||
this.$confirm(
|
||||
message ? message : '是否确认删除当前数据',
|
||||
title ? title : '提示',
|
||||
{
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: type ? type : 'error'
|
||||
}).then(() => {
|
||||
type: type ? type : 'error',
|
||||
confirmButtonClass: 'render-button',
|
||||
cancelButtonClass: 'render-button'
|
||||
}
|
||||
).then(() => {
|
||||
isOk('ok')
|
||||
})
|
||||
}
|
||||
|
||||
@@ -61,13 +61,13 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { validuserName } from '@/assets/js/utils/validate'
|
||||
import { validUsername } from '@/assets/js/utils/validate.js'
|
||||
// import { indexUser } from '@/api/app/user'
|
||||
export default {
|
||||
name: 'Login',
|
||||
data() {
|
||||
const validateuserName = (rule, value, callback) => {
|
||||
if (!validuserName(value)) {
|
||||
if (!validUsername(value)) {
|
||||
callback(new Error('请输入用户名'))
|
||||
} else {
|
||||
callback()
|
||||
|
||||
@@ -9,7 +9,43 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
chooseBack: ['#fff'],
|
||||
isImage: '0',
|
||||
background: '',
|
||||
chooseBack: [
|
||||
'rgb(255, 255, 255)',
|
||||
'rgb(228, 251, 204)',
|
||||
'rgb(239, 241, 245)',
|
||||
'rgb(224, 234, 255)',
|
||||
'rgb(254, 247, 195)',
|
||||
'rgb(213, 245, 246)',
|
||||
'rgb(209, 233, 255)',
|
||||
'rgb(209, 224, 255)',
|
||||
'rgb(213, 217, 235)',
|
||||
'rgb(255, 228, 232)'
|
||||
],
|
||||
// 应用类型
|
||||
agentType: [
|
||||
{
|
||||
label: '聊天助手',
|
||||
value: 'knowledge'
|
||||
},
|
||||
{
|
||||
label: '知识库+知识库',
|
||||
value: 'knowledge_knowledge'
|
||||
},
|
||||
{
|
||||
label: '知识库+知识库+知识库',
|
||||
value: 'sd'
|
||||
},
|
||||
{
|
||||
label: '知识库+知识库+知识库',
|
||||
value: 'sd'
|
||||
},
|
||||
{
|
||||
label: '知识库+知识库+知识库',
|
||||
value: 'sd'
|
||||
}
|
||||
],
|
||||
rules: {
|
||||
name: [
|
||||
{ required: true, message: '请输入智能体名称', trigger: 'blur' }
|
||||
@@ -21,6 +57,9 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
chooseGround(colors) {
|
||||
this.$set(this.dialog.agent, 'background', colors)
|
||||
},
|
||||
/**
|
||||
* 提交表单
|
||||
*/
|
||||
@@ -61,22 +100,74 @@ export default {
|
||||
<el-form-item label="名称与图标" prop="name" style="flex:1">
|
||||
<el-input v-model="dialog.agent.name" size="medium" />
|
||||
</el-form-item>
|
||||
<el-form-item label="" prop="imageId" class="mt30 ml40">
|
||||
<el-form-item label="" prop="imageId" class="mt30 ml20">
|
||||
<el-popover trigger="click">
|
||||
<div style="width: 28vw">
|
||||
<el-radio-group
|
||||
v-model="isImage"
|
||||
style="width: 100%;"
|
||||
class="flex render-group"
|
||||
>
|
||||
<el-radio-button label="0" style="flex:1">表情</el-radio-button>
|
||||
<el-radio-button label="1" style="flex:1">图片</el-radio-button>
|
||||
</el-radio-group>
|
||||
<div class="mt10" v-if="isImage === '0'">
|
||||
<VEmojiPicker @select="selectEmoji" class="emoji " />
|
||||
<div v-if="dialog.agent.imageId">
|
||||
<div></div>
|
||||
<div
|
||||
v-if="dialog.agent.imageId"
|
||||
class="flex mt10 back-content justify-content-b"
|
||||
>
|
||||
<template v-for="item in chooseBack">
|
||||
<div
|
||||
class="emoji-background"
|
||||
:style="`background:${item}`"
|
||||
@click="chooseGround(item)"
|
||||
>
|
||||
{{ dialog.agent.imageId }}
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="emoji-content" slot="reference">
|
||||
<div
|
||||
class="emoji-content"
|
||||
slot="reference"
|
||||
:style="`background:${dialog.agent.background}`"
|
||||
>
|
||||
{{ dialog.agent.imageId }}
|
||||
</div>
|
||||
</el-popover>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<el-form-item label="选择应用类型" required prop="">
|
||||
<div class="card-container" style="flex-wrap: wrap;">
|
||||
<el-card
|
||||
v-for="item in agentType"
|
||||
:key="item.value"
|
||||
shadow="hover"
|
||||
class="card-item"
|
||||
>
|
||||
<div class="flex align-items-c">
|
||||
<img
|
||||
src="@/assets/images/knowledge.png"
|
||||
alt=""
|
||||
style="width: 50px;height: 50px"
|
||||
/>
|
||||
<div class="ml20" style="flex:1;overflow: hidden">
|
||||
<div class="ellipsis">
|
||||
{{ item.label }}
|
||||
</div>
|
||||
<div class="ellipsis">
|
||||
{{ item.label }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="描述" prop="description">
|
||||
<el-input
|
||||
size="medium"
|
||||
@@ -103,10 +194,29 @@ export default {
|
||||
border: 1px solid #dcdfe6;
|
||||
text-align: center;
|
||||
line-height: 50px;
|
||||
font-size: 30px;
|
||||
font-size: 20px;
|
||||
cursor: pointer;
|
||||
background: rgb(209, 233, 255);
|
||||
}
|
||||
|
||||
.back-content {
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.emoji-content + .emoji-content {
|
||||
//margin-left: 2%;
|
||||
}
|
||||
.emoji-background {
|
||||
cursor: pointer;
|
||||
flex: 0 0 calc(10% - 10px);
|
||||
border-radius: 8px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
font-size: 20px;
|
||||
border: 1px solid #dcdfe6;
|
||||
text-align: center;
|
||||
//margin-left: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.emoji {
|
||||
width: 100% !important;
|
||||
height: 100%;
|
||||
@@ -127,4 +237,27 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
.card-container {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: flex-start; // 确保卡片之间有间距
|
||||
}
|
||||
.grid-emojis {
|
||||
grid-template-columns: repeat(10, 10%) !important;
|
||||
}
|
||||
.card-item {
|
||||
cursor: pointer;
|
||||
flex: 0 0 calc(33% - 1%); // 每个卡片占据三分之一的宽度,减去间距
|
||||
margin-bottom: 10px; // 卡片之间的垂直间距
|
||||
margin-left: 1%;
|
||||
& .el-card__body {
|
||||
padding: 5px 10px;
|
||||
}
|
||||
& .ellipsis {
|
||||
white-space: nowrap; // 确保文本不换行
|
||||
overflow: hidden; // 隐藏超出部分
|
||||
text-overflow: ellipsis; // 超出部分显示省略号
|
||||
max-width: 100%; // 设置最大宽度以限制文本长度
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -167,7 +167,10 @@ export default {
|
||||
创建者:
|
||||
<div>{{ listItem.createdUser }}</div>
|
||||
</div>
|
||||
<div class="opacity-button">
|
||||
<div
|
||||
class="opacity-button flex align-items-c"
|
||||
style="justify-content: flex-end"
|
||||
>
|
||||
<el-button
|
||||
class="default "
|
||||
size="medium"
|
||||
@@ -195,6 +198,7 @@ export default {
|
||||
:title="dialog.title"
|
||||
:close-on-click-modal="false"
|
||||
@confirm="infoConfirm"
|
||||
width="50vw"
|
||||
>
|
||||
<component :is="dialog.component" ref="infoDialog" />
|
||||
</r-dialog>
|
||||
@@ -313,7 +317,7 @@ export default {
|
||||
padding: 20px 20px 0;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: start;
|
||||
align-items: flex-start;
|
||||
|
||||
.folder-content {
|
||||
display: flex;
|
||||
|
||||
@@ -220,7 +220,7 @@ import {
|
||||
} from '@/assets/js/utils/utilOptions'
|
||||
import DocumentDrawer from './components/documentDetail/DocumentDrawer.vue'
|
||||
import knowledgeForm from '@/views/knowledge/detail/components/knowledgeForm.vue'
|
||||
import knowledgePng_1 from '@/assets/images/konwledge/konwledge-1.png'
|
||||
import knowledgePng_1 from '@/assets/images/konwledge/knowledge-1.png'
|
||||
import hitTest from '@/views/knowledge/detail/components/HitTest/Index.vue'
|
||||
import meteData from '@/views/knowledge/detail/components/meteData/Index.vue'
|
||||
import MeteData from '@/views/knowledge/detail/components/meteData/Index.vue'
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { docManageDataset, datasetDelete } from '@/api/generatedApi/index'
|
||||
import { docManageDataset, datasetDelete } from '@/api/generatedApi/index.js'
|
||||
import knowledgeForm from '@/views/knowledge/detail/components/knowledgeForm.vue'
|
||||
import knowledgePng_1 from '@/assets/images/konwledge/knowledge-1.png'
|
||||
import knowledgePng_2 from '@/assets/images/konwledge/knowledge-2.png'
|
||||
@@ -327,7 +327,7 @@ export default {
|
||||
padding: 20px 20px 0;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: start;
|
||||
align-items: flex-start;
|
||||
|
||||
//align-items: center;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user