Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
6e5eac6
Optimize page layout style
zhao365845726 Mar 1, 2026
55e5f1d
Optimize knowledgebase index page style and search function
zhao365845726 Mar 1, 2026
d2c5deb
Optimize knowledge add and edit dialogs style
zhao365845726 Mar 1, 2026
675e3f1
Optimize AIKernerl index page style
zhao365845726 Mar 1, 2026
d923ec3
Optimize AIKernel index dialog style
zhao365845726 Mar 1, 2026
620db1c
Optimize AIKernel index table default page size
zhao365845726 Mar 1, 2026
5b2197e
Optimize home page layout style
zhao365845726 Mar 2, 2026
ceae70e
Optimize AIVector page layout style
zhao365845726 Mar 2, 2026
feff0f5
Optimize AIVector page dialog layout style
zhao365845726 Mar 2, 2026
3a8bf8b
Optimize AdminUserInfo page layout style
zhao365845726 Mar 2, 2026
0c43f80
Optimize AdminUserInfo page dialog layout style
zhao365845726 Mar 2, 2026
9f028e4
Optimize Role page layout style
zhao365845726 Mar 2, 2026
93dd1aa
Optimize menu page layout style
zhao365845726 Mar 2, 2026
76441f7
Optimize Menu page dialog and SystemConfig page layout style
zhao365845726 Mar 2, 2026
164bb82
Optimize SenparcTrace index page layout style
zhao365845726 Mar 2, 2026
88e7049
Optimize FileManage index page layout style
zhao365845726 Mar 3, 2026
bef49c2
Optimize FileManage index page dialog layout style
zhao365845726 Mar 3, 2026
1774f1c
Optimize FileManage index page function
zhao365845726 Mar 3, 2026
79a2303
优化页面超出的问题
zhao365845726 Apr 6, 2026
5a8cfb5
Optimize the issue of incorrect formatting after page content exceeds…
zhao365845726 Apr 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,39 +11,48 @@

@section breadcrumbs {
<el-breadcrumb-item>扩展模块</el-breadcrumb-item>
<el-breadcrumb-item>知识库管理管理</el-breadcrumb-item>
<el-breadcrumb-item>知识库管理列表</el-breadcrumb-item>
<el-breadcrumb-item>知识库管理</el-breadcrumb-item>
<el-breadcrumb-item>知识库列表</el-breadcrumb-item>
}

<div>
<div class="kb-index-page">
<div class="admin-role">
<el-row class="filter-condition" :gutter="8">
<el-col :span="2"></el-col>
<el-col :span="5"><el-input v-model="keyword" placeholder="请输入关键字" size="mini"></el-input></el-col>
<el-col :span="2" class="operator_button">
<el-button type="primary" size="mini" @@click="handleSearch()">查询</el-button>
<el-button type="primary" size="mini" @@click="resetCondition()">重置</el-button>
</el-col>
</el-row>
<div class="filter-container">
<el-row type="flex" class="row-bg" justify="end">
<el-col :span="23">
<el-button class="filter-item" size="mini" type="primary" icon="el-icon-plus" @@click="handleEdit('','','add')">新增</el-button>
</el-col>
<el-col :span="1">
<!-- 筛选按钮 -->
<el-popover placement="bottom" title="筛选列" trigger="click" width="40">
<el-checkbox-group v-model="checkedColumns" size="mini">
<el-checkbox v-for="item in checkBoxGroup" :key="item" :label="item" :value="item"></el-checkbox>
</el-checkbox-group>
<div title="筛选列" class="filter-table-col" slot="reference">
<i class="el-icon-s-operation"></i>
</div>
</el-popover>
</el-col>
</el-row>
@* 查询区:按知识库名称查询 *@
<div class="kb-query-section">
<div class="kb-query-row">
<label class="kb-query-label">知识库名称</label>
<el-input v-model="keyword"
placeholder="请输入知识库名称关键字"
size="small"
clearable
class="kb-query-input"
@@keyup.enter.native="handleSearch()"></el-input>
<el-button type="primary" size="small" icon="el-icon-search" @@click="handleSearch()">查询</el-button>
<el-button size="small" icon="el-icon-refresh-left" @@click="resetCondition()">重置</el-button>
</div>
</div>

@* 工具栏:添加按钮、列筛选 *@
<div class="kb-toolbar">
<el-button type="primary" size="small" icon="el-icon-plus" @@click="handleEdit('','','add')">添加</el-button>
<el-popover placement="bottom" title="筛选列" trigger="click" width="200">
<el-checkbox-group v-model="checkedColumns" size="small">
<el-checkbox v-for="item in checkBoxGroup" :key="item" :label="item" :value="item"></el-checkbox>
</el-checkbox-group>
<el-button slot="reference" size="small" plain icon="el-icon-s-operation">列筛选</el-button>
</el-popover>
</div>
<el-table :data="tableData" style="width:100%;" size="mini" max-height="700" row-key="id" border ref="multipleTable" @@selection-change="handleSelectionChange" @@row-dblclick="handleDbClick">

@* 表格区域 *@
<div class="kb-table-wrap">
<el-table :data="tableData"
style="width:100%;"
size="small"
row-key="id"
border
ref="multipleTable"
@@selection-change="handleSelectionChange"
@@row-dblclick="handleDbClick">
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column v-if="colData[0].istrue" prop="embeddingModelId" align="left" label="Embedding模型Id" sortable :filters="filterTableHeader.embeddingModelId" :filter-method="filterHandler"></el-table-column>

Expand All @@ -61,94 +70,109 @@
{{formaTableTime(scope.row.addTime)}}
</template>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right" width="350">
<el-table-column label="操作" align="center" fixed="right" width="320">
<template slot-scope="scope">
<el-button size="mini"
type="primary"
@@click="handleElVisibleOpenBtn('drawerGroup',scope.row)">配置</el-button>
<el-button size="mini"
type="primary"
@@click="handleEmbeddingBtn('embedding',scope.row)">向量化</el-button>
<el-button size="mini"
type="primary"
@@click="handleEdit(scope.$index, scope.row,'edit')">编辑</el-button>
<el-popconfirm placement="top" title="确认删除此知识库管理吗?" @@on-confirm="handleDelete(scope.$index, scope.row)">
<el-button size="mini" type="danger" slot="reference">删除</el-button>
<el-button size="mini" type="primary" plain @@click="handleElVisibleOpenBtn('drawerGroup',scope.row)">配置</el-button>
<el-button size="mini" type="primary" plain @@click="handleEmbeddingBtn('embedding',scope.row)">向量化</el-button>
<el-button size="mini" type="primary" plain @@click="handleEdit(scope.$index, scope.row,'edit')">编辑</el-button>
<el-popconfirm placement="top" title="确认删除此知识库吗?" @@on-confirm="handleDelete(scope.$index, scope.row)">
<el-button size="mini" type="danger" plain slot="reference">删除</el-button>
</el-popconfirm>
</template>
</el-table-column>
</el-table>
</div>

<pagination :total="paginationQuery.total"
:page.sync="listQuery.pageIndex"
:limit.sync="listQuery.pageSize"
@@pagination="getList"></pagination>
<!--编辑、新增-->
@* 分页:首页、上一页、下一页、尾页、跳转、每页条数 5/10/15/20/50/100,默认 10 *@
<div class="kb-pagination-wrap">
<el-pagination :current-page.sync="listQuery.pageIndex"
:page-sizes="[5, 10, 15, 20, 50, 100]"
:page-size.sync="listQuery.pageSize"
:total="paginationQuery.total"
layout="total, sizes, prev, pager, next, jumper"
@@size-change="handlePageSizeChange"
@@current-change="handlePageChange">
</el-pagination>
</div>
<!-- 新增 / 编辑 知识库弹框 -->
<el-dialog :title="dialog.title"
:visible.sync="dialog.visible"
:close-on-click-modal="false"
width="600px">
width="560px"
custom-class="kb-form-dialog"
class="kb-form-dialog-scope">
<el-form ref="dataForm"
:rules="dialog.rules"
:model="dialog.data"
:disabled="dialog.disabled"
size="mini"
label-position="left"
label-width="150px"
style="max-width: 600px; margin-left:50px;">
<el-form-item label="名称" prop="name">
<el-input size="mini" v-model="dialog.data.name" clearable placeholder="请输入名称" />
</el-form-item>

<el-form-item label="选择Embedding模型">
<el-cascader v-model="selectDefaultEmbeddingModel"
:options="embeddingModelData"
@@change="selectEmbeddingModel"
clearable
filterable
:props="{label:'alias',value:'id'}">
</el-cascader>
size="small"
label-position="top"
class="kb-form-dialog__form">
<el-form-item label="名称" prop="name" class="kb-form-item">
<el-input v-model="dialog.data.name" clearable placeholder="请输入知识库名称" maxlength="100" show-word-limit />
</el-form-item>

<el-form-item label="Embedding模型Id" prop="embeddingModelId" class="hidden">
<el-input size="mini" v-model="dialog.data.embeddingModelId" clearable placeholder="请输入Embedding模型Id" />
</el-form-item>
<div class="kb-form-group">
<div class="kb-form-group__title">模型与向量库</div>
<el-form-item label="Embedding 模型" class="kb-form-item">
<el-cascader v-model="selectDefaultEmbeddingModel"
:options="embeddingModelData"
@@change="selectEmbeddingModel"
clearable
filterable
placeholder="请选择 Embedding 模型"
style="width:100%;"
:props="{label:'alias',value:'id'}">
</el-cascader>
</el-form-item>
<el-form-item label="Embedding模型Id" prop="embeddingModelId" class="hidden">
<el-input v-model="dialog.data.embeddingModelId" clearable />
</el-form-item>

<el-form-item label="选择向量数据库">
<el-cascader v-model="selectDefaultVectorDB"
:options="vectorDBData"
@@change="selectVectorDB"
clearable
filterable
:props="{label:'alias',value:'id'}">
</el-cascader>
</el-form-item>
<el-form-item label="向量数据库" class="kb-form-item">
<el-cascader v-model="selectDefaultVectorDB"
:options="vectorDBData"
@@change="selectVectorDB"
clearable
filterable
placeholder="请选择向量数据库"
style="width:100%;"
:props="{label:'alias',value:'id'}">
</el-cascader>
</el-form-item>
<el-form-item label="向量数据库Id" prop="vectorDBId" class="hidden">
<el-input v-model="dialog.data.vectorDBId" clearable />
</el-form-item>

<el-form-item label="向量数据库Id" prop="vectorDBId" class="hidden">
<el-input size="mini" v-model="dialog.data.vectorDBId" clearable placeholder="请输入向量数据库Id" />
</el-form-item>

<el-form-item label="选择对话模型">
<el-cascader v-model="selectDefaultChatModel"
:options="chatModelData"
@@change="selectChatModel"
clearable
filterable
:props="{label:'alias',value:'id'}">
</el-cascader>
</el-form-item>

<el-form-item label="对话模型Id" prop="chatModelId" class="hidden">
<el-input size="mini" v-model="dialog.data.chatModelId" clearable placeholder="请输入对话模型Id" />
</el-form-item>
<el-form-item label="对话模型" class="kb-form-item">
<el-cascader v-model="selectDefaultChatModel"
:options="chatModelData"
@@change="selectChatModel"
clearable
filterable
placeholder="请选择对话模型"
style="width:100%;"
:props="{label:'alias',value:'id'}">
</el-cascader>
</el-form-item>
<el-form-item label="对话模型Id" prop="chatModelId" class="hidden">
<el-input v-model="dialog.data.chatModelId" clearable />
</el-form-item>
</div>

<el-form-item label="内容" prop="content">
<el-input type="textarea" size="mini" v-model="dialog.data.content" clearable placeholder="请输入内容" />
<el-form-item label="内容" prop="content" class="kb-form-item">
<el-input type="textarea"
v-model="dialog.data.content"
clearable
placeholder="请输入内容(选填)"
:rows="4"
maxlength="500"
show-word-limit />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="mini" @@click="dialog.visible=false">取消</el-button>
<el-button size="mini" :loading="dialog.updateLoading" :disabled="dialog.disabled" type="primary" @@click="updateData">确认</el-button>
<div slot="footer" class="kb-form-dialog__footer">
<el-button @@click="dialog.visible=false">取消</el-button>
<el-button :loading="dialog.updateLoading" :disabled="dialog.disabled" type="primary" @@click="updateData">确认</el-button>
</div>
</el-dialog>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,25 +43,26 @@ public Task OnGetAsync()
public async Task<IActionResult> OnGetKnowledgeBasesAsync(string keyword, string orderField, int pageIndex, int pageSize)
{
var seh = new SenparcExpressionHelper<Models.DatabaseModel.KnowledgeBase>();
//seh.ValueCompare.AndAlso(!string.IsNullOrEmpty(keyword), _ => _.Name.Contains(keyword));
seh.ValueCompare.AndAlso(!string.IsNullOrEmpty(keyword), _ => _.Name.Contains(keyword));
var where = seh.BuildWhereExpression();
var response = await _knowledgeBaseService.GetObjectListAsync(pageIndex, pageSize, where, orderField);
return Ok(new
{
response.TotalCount,
response.PageIndex,
List = response.Select(_ => new {
_.Id,
_.LastUpdateTime,
_.Remark,
_.EmbeddingModelId,
_.VectorDBId,
_.ChatModelId,
_.Name,
_.Content,
_.AddTime
})
});
{
response.TotalCount,
response.PageIndex,
List = response.Select(_ => new
{
_.Id,
_.LastUpdateTime,
_.Remark,
_.EmbeddingModelId,
_.VectorDBId,
_.ChatModelId,
_.Name,
_.Content,
_.AddTime
})
});
}
}
}
Loading
Loading