mirror of
http://112.124.100.131/ebiz-ai/ebiz-ai-knowledge-manage.git
synced 2025-12-11 03:46:50 +08:00
Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
@@ -157,4 +157,14 @@
|
|||||||
border: none;
|
border: none;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
&:active {
|
||||||
|
background: linear-gradient(311deg, #8d5cff 0%, #026eff 100%);
|
||||||
|
border: none;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
&:focus {
|
||||||
|
background: linear-gradient(311deg, #8d5cff 0%, #026eff 100%);
|
||||||
|
border: none;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
.underBorder {
|
.underBorder {
|
||||||
border: unset;
|
border: unset;
|
||||||
|
|
||||||
.el-input__inner {
|
.el-input__inner {
|
||||||
border: unset;
|
border: unset;
|
||||||
|
border-radius: unset !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-input-group__prepend {
|
.el-input-group__prepend {
|
||||||
@@ -13,10 +15,16 @@
|
|||||||
|
|
||||||
.el-input--medium {
|
.el-input--medium {
|
||||||
.el-input__inner {
|
.el-input__inner {
|
||||||
height: 30px;
|
border-radius: 8px;
|
||||||
line-height: 30px;
|
//height: 30px;
|
||||||
|
//line-height: 30px;
|
||||||
}
|
}
|
||||||
.el-input__icon {
|
.el-input__icon {
|
||||||
line-height: 30px;
|
//line-height: 30px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.el-textarea {
|
||||||
|
.el-textarea__inner {
|
||||||
|
border-radius: 8px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
16
src/assets/sass/renderSass/label.scss
Normal file
16
src/assets/sass/renderSass/label.scss
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
.el-form--label-top {
|
||||||
|
& .el-form-item__label {
|
||||||
|
line-height: 30px;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-form-item__label {
|
||||||
|
font-family: PingFangSC, PingFang SC;
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 13px;
|
||||||
|
color: $--color-primary-label;
|
||||||
|
line-height: 18px;
|
||||||
|
text-align: left;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
23
src/assets/sass/renderSass/radio.scss
Normal file
23
src/assets/sass/renderSass/radio.scss
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
.el-radio__inner {
|
||||||
|
border-radius: 4px;
|
||||||
|
width: 14px;
|
||||||
|
height: 14px;
|
||||||
|
&:after {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.el-radio__input {
|
||||||
|
&.is-checked {
|
||||||
|
& + .el-radio__label {
|
||||||
|
color: $--color-primary;
|
||||||
|
}
|
||||||
|
.el-radio__inner {
|
||||||
|
background: #fff;
|
||||||
|
&:after {
|
||||||
|
background: $--color-primary;
|
||||||
|
width: 7px;
|
||||||
|
height: 7px;
|
||||||
|
border-radius: 1px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -9,6 +9,7 @@ $--color-primary-desc-text: #51525d;
|
|||||||
$--color-primary-desc-text-drank: #999;
|
$--color-primary-desc-text-drank: #999;
|
||||||
$--color-primary-table-hover: #eff0f8;
|
$--color-primary-table-hover: #eff0f8;
|
||||||
$--color-primary-table-button-hover: #e3e5f1;
|
$--color-primary-table-button-hover: #e3e5f1;
|
||||||
|
$--color-primary-label: #70778d;
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
--swiper-theme-color: #0a6dff;
|
--swiper-theme-color: #0a6dff;
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
@import 'renderSass/dialog';
|
@import 'renderSass/dialog';
|
||||||
@import 'renderSass/input';
|
@import 'renderSass/input';
|
||||||
@import 'renderSass/table';
|
@import 'renderSass/table';
|
||||||
|
@import 'renderSass/label';
|
||||||
|
@import 'renderSass/radio';
|
||||||
|
|
||||||
html,
|
html,
|
||||||
body,
|
body,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog :visible.sync="visible" :title="title" :append-to-body="appendToBody">
|
<el-dialog :visible.sync="visible" :title="title" :append-to-body="appendToBody" :destroy-on-close="destroyOnClose" :width="width">
|
||||||
<div class="render-dialog-body">
|
<div class="render-dialog-body">
|
||||||
<slot name="default"></slot>
|
<slot name="default"></slot>
|
||||||
</div>
|
</div>
|
||||||
@@ -18,10 +18,18 @@ export default {
|
|||||||
return {}
|
return {}
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
|
width: {
|
||||||
|
type: String,
|
||||||
|
default: '30%'
|
||||||
|
},
|
||||||
appendToBody: {
|
appendToBody: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
},
|
},
|
||||||
|
destroyOnClose: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
visible: {
|
visible: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
|
|||||||
@@ -9,7 +9,6 @@
|
|||||||
@sort-change="sortChange"
|
@sort-change="sortChange"
|
||||||
ref="renderTable"
|
ref="renderTable"
|
||||||
:border="border"
|
:border="border"
|
||||||
stripe
|
|
||||||
:header-align="align"
|
:header-align="align"
|
||||||
size="small"
|
size="small"
|
||||||
default-expand-all
|
default-expand-all
|
||||||
|
|||||||
@@ -58,7 +58,6 @@ export default {
|
|||||||
width: 35px;
|
width: 35px;
|
||||||
//height: 65px;
|
//height: 65px;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
margin-right: 12px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
& .sidebar-title {
|
& .sidebar-title {
|
||||||
|
|||||||
@@ -1,45 +1,42 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="container index-container">
|
<r-dialog :visible.sync="visible" :title="(datasetId ? `修改` : `新增`) + '知识库'" destroy-on-close width="500px">
|
||||||
<el-card shadow="hover">
|
<div slot="header" class="clearfix">
|
||||||
<div slot="header" class="clearfix">
|
<h3>{{ datasetId ? '修改' : '新增' }}</h3>
|
||||||
<h3>{{ $route.query.datasetId ? '修改' : '新增' }}知识库</h3>
|
</div>
|
||||||
</div>
|
<el-row>
|
||||||
<el-row>
|
<el-col>
|
||||||
<el-col :span="21" :offset="1">
|
<el-form :model="model" ref="model" label-width="120px" :rules="rules" label-position="top">
|
||||||
<el-form :model="model" ref="model" label-width="120px" :rules="rules">
|
<el-form-item label="知识库名称:" prop="name">
|
||||||
<el-form-item label="知识库名称:" prop="name">
|
<el-input v-model="model.name" size="medium"></el-input>
|
||||||
<el-input v-model="model.name"></el-input>
|
</el-form-item>
|
||||||
</el-form-item>
|
|
||||||
|
|
||||||
<el-form-item label="描述(可选):" prop="description" requried>
|
<el-form-item label="描述(可选):" prop="description" requried>
|
||||||
<el-input type="textarea" v-model="model.description"></el-input>
|
<el-input type="textarea" v-model="model.description"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="分段模式:" prop="segmentedMode" v-if="$route.query.datasetId">
|
<el-form-item label="分段模式:" prop="segmentedMode" v-if="datasetId">
|
||||||
{{ model.segmentedMode | filterSegmentedMode }}
|
{{ model.segmentedMode | filterSegmentedMode }}
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="分段模式:" prop="segmentedMode" v-else>
|
<el-form-item label="分段模式:" prop="segmentedMode" v-else>
|
||||||
<el-radio-group v-model="model.segmentedMode">
|
<el-radio-group v-model="model.segmentedMode">
|
||||||
<el-radio :label="0">通用分段模式</el-radio>
|
<el-radio :label="0">通用分段模式</el-radio>
|
||||||
<el-radio :label="1">Q&A分段模式</el-radio>
|
<el-radio :label="1">Q&A分段模式</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<div slot="footer" :span="24">
|
||||||
|
<el-button class="render-button" size="medium" v-if="!infoDialogVisible" @click="$emit('update:visible', false)">取消</el-button>
|
||||||
|
<el-button class="render-button" type="primary" size="medium" @click="save" v-if="!infoDialogVisible">
|
||||||
|
{{ datasetId ? '保存' : '创建' }}
|
||||||
|
</el-button>
|
||||||
|
<el-button class="render-button" size="medium" @click="jumpKnowledgeList" v-if="infoDialogVisible">返回知识库列表</el-button>
|
||||||
|
<el-button class="render-button" size="medium" @click="jumpKnowledgeDetail" v-if="infoDialogVisible">查看知识库详情</el-button>
|
||||||
|
</div>
|
||||||
|
</r-dialog>
|
||||||
|
|
||||||
<el-col :span="24" class="text-center">
|
<!-- <el-dialog title="知识库操作成功" :visible.sync="infoDialogVisible" width="50%"></el-dialog>-->
|
||||||
<el-button type="primary" size="medium" @click="save" v-if="!infoDialogVisible">
|
|
||||||
{{ $route.query.datasetId ? '保存' : '创建' }}
|
|
||||||
</el-button>
|
|
||||||
<el-button size="medium" v-if="!infoDialogVisible" @click="$router.go(-1)">取消</el-button>
|
|
||||||
<el-button size="medium" @click="jumpKnowledgeList" v-if="infoDialogVisible">返回知识库列表</el-button>
|
|
||||||
<el-button size="medium" @click="jumpKnowledgeDetail" v-if="infoDialogVisible">查看知识库详情</el-button>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</el-card>
|
|
||||||
|
|
||||||
<!-- <el-dialog title="知识库操作成功" :visible.sync="infoDialogVisible" width="50%"></el-dialog>-->
|
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import 'nprogress/nprogress.css' // progress bar style
|
import 'nprogress/nprogress.css' // progress bar style
|
||||||
@@ -64,8 +61,30 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
props: {},
|
props: {
|
||||||
watch: {},
|
visible: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
datasetId: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
datasetId(val) {
|
||||||
|
if (val) {
|
||||||
|
this.getDetail()
|
||||||
|
} else {
|
||||||
|
this.model = {
|
||||||
|
description: '',
|
||||||
|
name: '',
|
||||||
|
segmentedMode: 0,
|
||||||
|
id: null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
components: {},
|
components: {},
|
||||||
filters: {
|
filters: {
|
||||||
filterSegmentedMode(val) {
|
filterSegmentedMode(val) {
|
||||||
@@ -95,9 +114,8 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
getDetail() {
|
getDetail() {
|
||||||
let { datasetId } = this.$route.query
|
if (!this.datasetId) return
|
||||||
if (!datasetId) return
|
getDatasetById({ id: this.datasetId }).then(res => {
|
||||||
getDatasetById({ id: datasetId }).then(res => {
|
|
||||||
this.model = {
|
this.model = {
|
||||||
...res.content.content
|
...res.content.content
|
||||||
}
|
}
|
||||||
@@ -108,12 +126,13 @@ export default {
|
|||||||
if (!valid) {
|
if (!valid) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
;(!this.$route.query.datasetId ? datasetCreate : datasetUpdate)(this.model).then(res => {
|
;(!this.datasetId ? datasetCreate : datasetUpdate)(this.model).then(res => {
|
||||||
if (res) {
|
if (res) {
|
||||||
// 添加保存成功的提示
|
// 添加保存成功的提示
|
||||||
this.$message.success('保存成功')
|
this.$message.success('保存成功')
|
||||||
this.model.id = res.content.content.id
|
this.model.id = res.content.content.id
|
||||||
this.infoDialogVisible = true
|
// this.infoDialogVisible = true
|
||||||
|
this.$emit('update:visible', false)
|
||||||
// this.$router.go(-1)
|
// this.$router.go(-1)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -92,19 +92,24 @@
|
|||||||
:active-segment="activeSegment"
|
:active-segment="activeSegment"
|
||||||
@update:visible="val => (drawer = val)"
|
@update:visible="val => (drawer = val)"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<knowledgeForm :visible.sync="drawerForm" :datasetId="$route.query.datasetId" @update:visible="getKnowledgeDetail"></knowledgeForm>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { datasetDocumentEx, datasetQueryDelete, datasetQuerySegments, datasetsExPages, datasetUpdate, getDatasetById } from '@/api/generatedApi/index'
|
import { datasetDocumentEx, datasetQueryDelete, datasetQuerySegments, datasetsExPages, datasetUpdate, getDatasetById } from '@/api/generatedApi/index'
|
||||||
import { documentSourceOptions, segmentedModeOptionsMap } from '@/assets/js/utils/utilOptions'
|
import { documentSourceOptions, segmentedModeOptionsMap } from '@/assets/js/utils/utilOptions'
|
||||||
import DocumentDrawer from './components/documentDetail/DocumentDrawer.vue'
|
import DocumentDrawer from './components/documentDetail/DocumentDrawer.vue'
|
||||||
|
import knowledgeForm from '@/views/knowledge/detail/components/knowledgeForm.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'index',
|
name: 'index',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
datasetId: this.$route.query.datasetId,
|
||||||
activeName: -1,
|
activeName: -1,
|
||||||
drawer: false,
|
drawer: false,
|
||||||
|
drawerForm: false,
|
||||||
editKnowledge: false,
|
editKnowledge: false,
|
||||||
form: {
|
form: {
|
||||||
knowledgeNameLike: '',
|
knowledgeNameLike: '',
|
||||||
@@ -136,6 +141,7 @@ export default {
|
|||||||
props: {},
|
props: {},
|
||||||
watch: {},
|
watch: {},
|
||||||
components: {
|
components: {
|
||||||
|
knowledgeForm,
|
||||||
DocumentDrawer
|
DocumentDrawer
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -176,13 +182,14 @@ export default {
|
|||||||
},
|
},
|
||||||
// 跳转到知识库编辑
|
// 跳转到知识库编辑
|
||||||
jumpEditKnowledge() {
|
jumpEditKnowledge() {
|
||||||
let { datasetId } = this.$route.query
|
this.drawerForm = true
|
||||||
this.$router.push({
|
// let { datasetId } = this.$route.query
|
||||||
path: '/knowledge/knowledge-create',
|
// this.$router.push({
|
||||||
query: {
|
// path: '/knowledge/knowledge-create',
|
||||||
datasetId: datasetId
|
// query: {
|
||||||
}
|
// datasetId: datasetId
|
||||||
})
|
// }
|
||||||
|
// })
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* @name 根据id 获取知识内容详情
|
* @name 根据id 获取知识内容详情
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
<div slot="header" class="clearfix mt30 flex">
|
<div slot="header" class="clearfix mt30 flex">
|
||||||
<div>
|
<div>
|
||||||
<h3>知识库列表</h3>
|
<h3>知识库列表</h3>
|
||||||
<p class="mt20 fs14 theme-primary-desc-text" style="line-height: 10px">
|
<p class="mt20 fs14 theme-primary-desc-text" style="line-height: 15px">
|
||||||
易商数智知识库平台,旨在为用户提供更便捷、更灵敏、更全面的知识存储和操作平台,用户可以通过创建不同的知识库,完成对系统内知识的细分和储备。
|
易商数智知识库平台,旨在为用户提供更便捷、更灵敏、更全面的知识存储和操作平台,用户可以通过创建不同的知识库,完成对系统内知识的细分和储备。
|
||||||
</p>
|
</p>
|
||||||
<p class="mt10 fs14 theme-primary-desc-text" style="line-height: 15px">同时也可以通过修改和删除操作,对系统内知识体系进行修正和优化。</p>
|
<p class="mt10 fs14 theme-primary-desc-text" style="line-height: 15px">同时也可以通过修改和删除操作,对系统内知识体系进行修正和优化。</p>
|
||||||
@@ -52,17 +52,19 @@
|
|||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<knowledgeForm :visible.sync="drawer" :datasetId="datasetId" @update:visible="getList"></knowledgeForm>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { docManageDataset, datasetDelete } from '@/api/generatedApi/index'
|
import { docManageDataset, datasetDelete } from '@/api/generatedApi/index'
|
||||||
import knowledgeForm from '@/views/knowledge/detail/components/knowledgeForm.vue'
|
import knowledgeForm from '@/views/knowledge/detail/components/knowledgeForm.vue'
|
||||||
import konwledgePng_1 from '@/assets/images/konwledge/konwledge-1.png'
|
import konwledgePng_1 from '@/assets/images/konwledge/konwledge-1.png'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'index',
|
name: 'index',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
datasetId: '',
|
||||||
konwledgePng_1,
|
konwledgePng_1,
|
||||||
datasetList: [],
|
datasetList: [],
|
||||||
nameLike: '',
|
nameLike: '',
|
||||||
@@ -96,12 +98,14 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
createdKnowLedge(item) {
|
createdKnowLedge(item) {
|
||||||
this.$router.push({
|
this.datasetId = item ? item.id : ''
|
||||||
path: '/knowledge/knowledge-create',
|
this.drawer = true
|
||||||
query: {
|
// this.$router.push({
|
||||||
datasetId: item ? item.id : null
|
// path: '/knowledge/knowledge-create',
|
||||||
}
|
// query: {
|
||||||
})
|
// datasetId: item ? item.id : null
|
||||||
|
// }
|
||||||
|
// })
|
||||||
},
|
},
|
||||||
knowLedgeDetail(item) {
|
knowLedgeDetail(item) {
|
||||||
this.$router.push({
|
this.$router.push({
|
||||||
|
|||||||
Reference in New Issue
Block a user