From e8ef9b11210d256adc241a98d60370bf867e008e Mon Sep 17 00:00:00 2001
From: liudong <liudong>
Date: 星期一, 05 八月 2024 14:21:03 +0800
Subject: [PATCH] 知识库智能体管理的页面开发和功能开发
---
src/views/dmx/knowledgeLib/test.vue | 345 +++++------
src/views/dmx/knowledgeLib/tool.vue | 862 +++++++++++----------------
src/views/dmx/knowledgeLib/index.vue | 630 ++++++++-----------
3 files changed, 777 insertions(+), 1,060 deletions(-)
diff --git a/src/views/dmx/knowledgeLib/index.vue b/src/views/dmx/knowledgeLib/index.vue
index 5163d69..31d1c7d 100644
--- a/src/views/dmx/knowledgeLib/index.vue
+++ b/src/views/dmx/knowledgeLib/index.vue
@@ -6,51 +6,37 @@
<div class="lf-container-top">
<a-input-search
:placeholder="$t('cardList.searchInput.placeholder')"
- style="width: 130px"
+ style="width: 130px;"
/>
<addKnow @knowledgeData="knowledgeData"></addKnow>
</div>
<div class="lf-container-down">
- <a-scrollbar style="height: 56rem; overflow: auto">
+ <a-scrollbar style="height:56rem;overflow: auto;">
<div
class="tab"
v-for="(tab, index) in tabs"
:key="index"
- @click="selectTab(index, tab)"
- :class="{ active: selectedTab === index }"
+ @click="selectTab(index,tab)"
+ :class="{ 'active': selectedTab === index }"
>
{{ tab.name }}
<a-popover position="bl">
- <icon-more
- :style="{ position: 'absolute', top: '10px', right: '20px' }"
- />
+ <icon-more :style="{position: 'absolute',top:'10px',right:'20px'}"/>
<template #content>
- <a-popconfirm
- content="纭畾鍒犻櫎鍚�?"
- @ok="deleteKnowledge(tab.id)"
- type="warning"
- >
- <span
- style="cursor: pointer; color: #0960bd; font-size: 12px"
- ><icon-delete />鍒犻櫎</span
- >
+ <a-popconfirm content="纭畾鍒犻櫎鍚�?" @ok="deleteKnowledge(tab.id)" type="warning">
+ <span style="cursor: pointer;color: #0960bd;font-size: 12px"><icon-delete />鍒犻櫎</span>
</a-popconfirm>
</template>
</a-popover>
</div>
</a-scrollbar>
- </div>
+ </div>
</div>
<div class="rt-container">
<a-tabs default-active-key="1">
- <a-tab-pane key="1" :title="t('dmx.list.DataSet')">
+ <a-tab-pane key="1" :title= "t('dmx.list.DataSet')">
<div class="rt-container-main">
- <a-card
- ref="account"
- class="general-card"
- title=""
- style="padding-top: 20px"
- >
+ <a-card ref="account" class="general-card" title="" style="padding-top: 20px">
<a-row>
<a-col :flex="1" :span="12">
<a-form
@@ -60,27 +46,15 @@
label-align="left"
>
<a-row :gutter="16">
- <a-col
- :span="24"
- style="
- margin-bottom: 10px;
- display: flex;
- justify-content: right;
- "
- >
+ <a-col :span="24" style="margin-bottom: 10px;display: flex;justify-content: right">
<a-input-search
- :placeholder="
- $t('cardList.searchInput.placeholder')
- "
- style="width: 200px; margin-right: 10px"
+ :placeholder="$t('cardList.searchInput.placeholder')"
+ style="width: 200px;margin-right: 10px"
v-model="keywords"
@change="search"
/>
<!--鏂板缓-->
- <add
- :kbobj="kbobj"
- @changeFetchData="changeFetchData"
- />
+ <add :kbobj="kbobj" @changeFetchData="changeFetchData"/>
</a-col>
</a-row>
</a-form>
@@ -107,11 +81,7 @@
</a-col>
<a-col
:span="12"
- style="
- display: flex;
- align-items: center;
- justify-content: end;
- "
+ style="display: flex; align-items: center; justify-content: end"
>
<!-- <a-button>-->
<!-- <template #icon>-->
@@ -120,13 +90,13 @@
<!-- {{ $t('searchTable.operation.download') }}-->
<!-- </a-button>-->
<a-tooltip :content="$t('searchTable.actions.refresh')">
- <div class="action-icon"><icon-refresh size="18" /></div>
+ <div class="action-icon"
+ ><icon-refresh size="18"
+ /></div>
</a-tooltip>
<a-dropdown @select="handleSelectDensity">
<a-tooltip :content="$t('searchTable.actions.density')">
- <div class="action-icon"
- ><icon-line-height size="18"
- /></div>
+ <div class="action-icon"><icon-line-height size="18" /></div>
</a-tooltip>
<template #content>
<a-doption
@@ -187,132 +157,84 @@
:scroll="{ y: 580 }"
>
<template #name="{ record }">
- <!-- <icon-file style="color: #0960bd;margin-right: 4px;" />-->
- <icon-file style="margin-right: 4px" />
- <!-- <span style="color: #0960bd;cursor: pointer" @click="fileClick">-->
- <!-- {{record.name}}-->
- <!-- </span>-->
- {{ record.name }}
+<!-- <icon-file style="color: #0960bd;margin-right: 4px;" />-->
+ <icon-file style="margin-right: 4px;" />
+<!-- <span style="color: #0960bd;cursor: pointer" @click="fileClick">-->
+<!-- {{record.name}}-->
+<!-- </span>-->
+ {{record.name}}
</template>
<template #create_time="{ record }">
- <span>{{ parseTime(record.create_time) }}</span>
+ <span>{{parseTime(record.create_time)}}</span>
</template>
- <!-- <template #parser_id="{ record }">-->
- <!-- <span>{{ parser_ids[record.parser_id]}}</span>-->
- <!-- </template>-->
+<!-- <template #parser_id="{ record }">-->
+<!-- <span>{{ parser_ids[record.parser_id]}}</span>-->
+<!-- </template>-->
<template #status="{ record }">
- <a-switch
- v-model="record.status"
- size="small"
- checked-value="1"
- unchecked-value="0"
- @change="handleChangeStatus(record)"
- />
+ <a-switch v-model="record.status" size="small" checked-value="1" unchecked-value="0" @change="handleChangeStatus(record)"/>
</template>
<template #run="{ record }">
- <div style="display: flex; align-items: center">
+ <div style="display: flex;align-items: center;">
<div style="width: 100px">
<a-popover title="Title" v-if="record.run == '3'">
- <a-tag
- :loading="record.loading"
- :color="'blue'"
- border
- >{{ $t('dmx.list.complete') }}</a-tag
- >
+ <a-tag :loading="record.loading" :color="'blue'" border>{{$t('dmx.list.complete')}}</a-tag>
<template #content>
<p>Here is the text content</p>
</template>
</a-popover>
<a-popover title="Title" v-if="record.run == '1'">
- <a-tag
- :loading="record.loading"
- :color="'blue'"
- border
- >{{ $t('dmx.list.complete') }}</a-tag
- >
+ <a-tag :loading="record.loading" :color="'blue'" border>{{$t('dmx.list.complete')}}</a-tag>
<template #content>
<p>Here is the text content</p>
</template>
</a-popover>
<a-popover title="Title" v-if="record.run == '2'">
- <a-tag
- :loading="record.loading"
- :color="'gold'"
- border
- >{{ $t('dmx.list.cancel') }}</a-tag
- >
+ <a-tag :loading="record.loading" :color="'gold'" border>{{$t('dmx.list.cancel')}}</a-tag>
<template #content>
<p>Here is the text content</p>
</template>
</a-popover>
<a-popover title="Title" v-if="record.run == '0'">
- <a-tag
- :loading="record.loading"
- :color="'green'"
- border
- >{{ $t('dmx.list.NotStarted') }}</a-tag
- >
+ <a-tag :loading="record.loading" :color="'green'" border>{{$t('dmx.list.NotStarted')}}</a-tag>
<template #content>
<p>Here is the text content</p>
</template>
</a-popover>
</div>
- <div>
- <a-button
- type="text"
- size="large"
- @click="run(record)"
- :loading="record.loading"
- >
+ <div >
+ <a-button type="text" size="large" @click="run(record)" :loading="record.loading">
<template #icon>
- <icon-sync v-if="record.run == '3'" />
- <icon-sync v-if="record.run == '2'" />
- <icon-sync
- style="color: green"
- v-if="record.run == '1'"
- />
- <icon-play-circle
- style="color: green"
- v-if="record.run == '0'"
- />
+ <icon-sync v-if="record.run == '3'"/>
+ <icon-sync v-if="record.run == '2'"/>
+ <icon-sync style="color: green" v-if="record.run == '1'"/>
+ <icon-play-circle style="color: green" v-if="record.run == '0'"/>
</template>
</a-button>
</div>
</div>
</template>
- <template #action="{ record }">
- <tool
- :kbtenantInfo="kbtenantInfo"
- :item="record"
- :kbdetail="kbdetail"
- />
- <edit :item="record" @upTabdateItem="upTabdateItem" />
- <a-popconfirm
- :content="'纭畾鍒犻櫎鍚�'"
- type="warning"
- @ok="deleteItem(record)"
- >
- <a-button type="text" size="small">
+ <template #action="{ record }" >
+ <tool :kbtenantInfo="kbtenantInfo" :item="record" :kbdetail="kbdetail" />
+ <edit :item="record" @upTabdateItem="upTabdateItem"/>
+ <a-popconfirm :content="'纭畾鍒犻櫎鍚�'" type="warning" @ok="deleteItem(record)">
+ <a-button type="text" size="small">
<template #icon>
<icon-delete />
</template>
</a-button>
</a-popconfirm>
- <a-button
- type="text"
- size="small"
- @click="onDownloadDocument(record)"
- >
+ <a-button type="text" size="small" @click="onDownloadDocument(record)">
<template #icon>
<icon-download />
</template>
</a-button>
- <a-button type="text" size="small" @click="seeload(record)">
+ <a-button type="text" size="small" @click="seeload(record)">
<template #icon>
<icon-eye />
</template>
</a-button>
+
</template>
</a-table>
</a-card>
@@ -325,107 +247,89 @@
</a-tab-pane>
<a-tab-pane key="3" :title="t('dmx.list.disposition')">
<div class="rt-container-main">
- <config
- ref="configForm"
- :kbtenantInfo="kbtenantInfo"
- :kbobj="kbobj"
- ></config>
+ <config ref="configForm" :kbtenantInfo="kbtenantInfo" :kbobj="kbobj"></config>
</div>
</a-tab-pane>
</a-tabs>
- <!-- <div v-if="detailsShow" class="details">-->
- <!-- <div class="details-header">-->
- <!-- <div style="display: flex;align-items: center">-->
- <!-- <span><icon-arrow-left size="20px" style="cursor: pointer;color: #0960bd;margin: 10px" @click="goBackClick" /></span>-->
- <!-- <icon-file style="color: #0960bd;margin-right: 4px;" />-->
- <!-- <span style="">123.docx</span>-->
- <!-- </div>-->
- <!-- <div style="display: flex; align-items: center;">-->
- <!-- <a-radio-group v-model="position" type="button" style="margin-right: 10px">-->
- <!-- <a-radio value="top">{{'dmx.list.EntireArticle'}}</a-radio>-->
- <!-- <a-radio value="right">{{'dmx.list.omit'}}</a-radio>-->
- <!-- </a-radio-group>-->
- <!-- <a-popover position="bottom">-->
- <!-- <a-button type="outline" class="button" style="margin-right: 10px">{{'dmx.list.batch'}} <icon-down style="margin-left: 4px" /></a-button>-->
- <!-- <template #content>-->
- <!-- <p>Here is the text content</p>-->
- <!-- <p>Here is the text content</p>-->
- <!-- </template>-->
- <!-- </a-popover>-->
- <!-- <a-button type="outline" class="button" style="margin-right: 10px">-->
- <!-- <template #icon>-->
- <!-- <icon-search />-->
- <!-- </template>-->
- <!-- </a-button>-->
- <!-- <a-popover position="bottom">-->
- <!-- <a-button type="outline" class="button" style="margin-right: 10px"><icon-sort /></a-button>-->
- <!-- <template #content>-->
- <!-- <p>Here is the text content</p>-->
- <!-- <p>Here is the text content</p>-->
- <!-- </template>-->
- <!-- </a-popover>-->
- <!-- <addDetails></addDetails>-->
- <!-- </div>-->
- <!-- </div>-->
- <!-- <a-divider style="margin-top: 10px" />-->
- <!-- </div>-->
- <!-- </div> -->
+<!-- <div v-if="detailsShow" class="details">-->
+<!-- <div class="details-header">-->
+<!-- <div style="display: flex;align-items: center">-->
+<!-- <span><icon-arrow-left size="20px" style="cursor: pointer;color: #0960bd;margin: 10px" @click="goBackClick" /></span>-->
+<!-- <icon-file style="color: #0960bd;margin-right: 4px;" />-->
+<!-- <span style="">123.docx</span>-->
+<!-- </div>-->
+<!-- <div style="display: flex; align-items: center;">-->
+<!-- <a-radio-group v-model="position" type="button" style="margin-right: 10px">-->
+<!-- <a-radio value="top">{{'dmx.list.EntireArticle'}}</a-radio>-->
+<!-- <a-radio value="right">{{'dmx.list.omit'}}</a-radio>-->
+<!-- </a-radio-group>-->
+<!-- <a-popover position="bottom">-->
+<!-- <a-button type="outline" class="button" style="margin-right: 10px">{{'dmx.list.batch'}} <icon-down style="margin-left: 4px" /></a-button>-->
+<!-- <template #content>-->
+<!-- <p>Here is the text content</p>-->
+<!-- <p>Here is the text content</p>-->
+<!-- </template>-->
+<!-- </a-popover>-->
+<!-- <a-button type="outline" class="button" style="margin-right: 10px">-->
+<!-- <template #icon>-->
+<!-- <icon-search />-->
+<!-- </template>-->
+<!-- </a-button>-->
+<!-- <a-popover position="bottom">-->
+<!-- <a-button type="outline" class="button" style="margin-right: 10px"><icon-sort /></a-button>-->
+<!-- <template #content>-->
+<!-- <p>Here is the text content</p>-->
+<!-- <p>Here is the text content</p>-->
+<!-- </template>-->
+<!-- </a-popover>-->
+<!-- <addDetails></addDetails>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- <a-divider style="margin-top: 10px" />-->
+<!-- </div>-->
+ </div>
</div>
<a-modal title=" " v-model:visible="visible" :footer="false" fullscreen>
- <!-- <docx v-if="documenttype=='docx'" previewSrc="http://192.168.20.116:1080/v1/document/get/405c3efa4d8c11ef97560242ac120006"></docx>-->
- <docx v-if="documenttype == 'docx'" :previewSrc="previewSrc"></docx>
- <excel v-if="documenttype == 'excel'" :previewSrc="previewSrc"></excel>
- <txtPdf v-if="documenttype == 'txtPdf'" :previewSrc="previewSrc"></txtPdf>
+<!-- <docx v-if="documenttype=='docx'" previewSrc="http://192.168.20.116:1080/v1/document/get/405c3efa4d8c11ef97560242ac120006"></docx>-->
+ <docx v-if="documenttype=='docx'" :previewSrc="previewSrc"></docx>
+ <excel v-if="documenttype=='excel'" :previewSrc="previewSrc"></excel>
+ <txtPdf v-if="documenttype=='txtPdf'" :previewSrc="previewSrc"></txtPdf>
</a-modal>
- </div>
</div>
</template>
<script lang="ts" setup>
- import {
- computed,
- ref,
- reactive,
- watch,
- nextTick,
- onBeforeMount,
- onMounted,
- } from 'vue';
+import { computed, ref, reactive, watch, nextTick, onBeforeMount, onMounted } from "vue";
import { useI18n } from 'vue-i18n';
import useLoading from '@/hooks/loading';
- import {
- queryKbList,
- PolicyRecord,
- PolicyParams,
- queryKbDocumentList,
- deleteKnow,
- queryKbdetail,
- queryKbtenantInfo,
- kbdocumentrm,
- kbdocumentchangeparser,
- kbdocumentrun,
- kbdocumentchangeStatus,
- downloadFile,
- } from '@/api/kbList';
+import {
+ queryKbList,
+ PolicyRecord,
+ PolicyParams,
+ queryKbDocumentList,
+ deleteKnow,
+ queryKbdetail,
+ queryKbtenantInfo, kbdocumentrm, kbdocumentchangeparser, kbdocumentrun, kbdocumentchangeStatus,downloadFile
+} from "@/api/kbList";
import { Pagination } from '@/types/global';
import type { SelectOptionData } from '@arco-design/web-vue/es/select/interface';
import type { TableColumnData } from '@arco-design/web-vue/es/table/interface';
import cloneDeep from 'lodash/cloneDeep';
import Sortable from 'sortablejs';
- import add from '@/views/dmx/knowledgeLib/add.vue';
- import edit from '@/views/dmx/knowledgeLib/edit.vue';
- import addKnow from '@/views/dmx/knowledgeLib/addKnow.vue';
- import config from '@/views/dmx/knowledgeLib/config.vue';
- import test from '@/views/dmx/knowledgeLib/test.vue';
- import tool from '@/views/dmx/knowledgeLib/tool.vue';
- import docx from '@/views/dmx/knowledgeLib/components/docx.vue';
- import excel from '@/views/dmx/knowledgeLib/components/excel.vue';
- import txtPdf from '@/views/dmx/knowledgeLib/components/txtPdf.vue';
- import { Message } from '@arco-design/web-vue';
- import { parseTime } from '@/utils';
+ import add from '@/views/dmx/knowledgeLib/add.vue'
+ import edit from '@/views/dmx/knowledgeLib/edit.vue'
+ import addKnow from '@/views/dmx/knowledgeLib/addKnow.vue'
+ import config from '@/views/dmx/knowledgeLib/config.vue'
+ import test from '@/views/dmx/knowledgeLib/test.vue'
+ import tool from '@/views/dmx/knowledgeLib/tool.vue'
+ import docx from '@/views/dmx/knowledgeLib/components/docx.vue'
+ import excel from '@/views/dmx/knowledgeLib/components/excel.vue'
+ import txtPdf from '@/views/dmx/knowledgeLib/components/txtPdf.vue'
+ import { Message } from "@arco-design/web-vue";
+ import { parseTime } from "@/utils";
type SizeProps = 'mini' | 'small' | 'medium' | 'large';
type Column = TableColumnData & { checked?: true };
- const account = ref(null);
+ const account = ref(null)
const generateFormModel = () => {
return {
number: '',
@@ -444,47 +348,46 @@
const showColumns = ref<Column[]>([]);
const size = ref<SizeProps>('medium');
- let visible = ref(false);
- let keywords = ref('');
- let detailsShow = ref(false);
- let selectedTab = ref(0);
- let testForm = ref(null);
- let configForm = ref(null);
- let documenttype = ref('docx');
- let previewSrc = ref('');
- let kbId = ref('');
- let kbobj = reactive({});
- let kbdetail = reactive({});
- let parser_ids = reactive({});
- let seeObj = reactive({});
+ let visible = ref(false)
+ let keywords = ref('')
+ let detailsShow = ref(false)
+ let selectedTab = ref(0)
+ let testForm = ref(null)
+ let configForm = ref(null)
+ let documenttype = ref('docx')
+ let previewSrc = ref('')
+ let kbId = ref('')
+ let kbobj = reactive({})
+ let kbdetail = reactive({})
+ let parser_ids = reactive({})
+ let seeObj = reactive({})
let kbtenantInfo = reactive({
- asr_id: 'paraformer-realtime-8k-v1',
- embd_id: 'BAAI/bge-large-zh-v1.5',
- img2txt_id: 'qwen-vl-max',
- llm_id: 'qwen-plus',
- name: 'wanghao鈥榮 Kingdom',
- parser_ids:
- 'naive:General,qa:Q&A,resume:Resume,manual:Manual,table:Table,paper:Paper,book:Book,laws:Laws,presentation:Presentation,picture:Picture,one:One',
- rerank_id: 'BAAI/bge-reranker-v2-m3',
- role: 'owner',
- tenant_id: '948fc6fa41ab11ef8fb80242ac120004',
- parser_idObj: {},
- });
- let tabs = ref([]);
+ "asr_id": "paraformer-realtime-8k-v1",
+ "embd_id": "BAAI/bge-large-zh-v1.5",
+ "img2txt_id": "qwen-vl-max",
+ "llm_id": "qwen-plus",
+ "name": "wanghao鈥榮 Kingdom",
+ "parser_ids": "naive:General,qa:Q&A,resume:Resume,manual:Manual,table:Table,paper:Paper,book:Book,laws:Laws,presentation:Presentation,picture:Picture,one:One",
+ "rerank_id": "BAAI/bge-reranker-v2-m3",
+ "role": "owner",
+ "tenant_id": "948fc6fa41ab11ef8fb80242ac120004",
+ parser_idObj:{}
+ })
+ let tabs = ref([])
- const selectTab = (index, item) => {
- selectedTab.value = index;
+ const selectTab = (index,item) => {
+ selectedTab.value= index;
// console.log(item.id);
- kbobj = item;
+ kbobj= item;
kbId = kbobj.id;
testForm.value.changekbid(kbId);
configForm.value.changekbObj(kbobj);
fetchData({
kb_id: kbobj.id,
page: 1,
- page_size: 20,
- });
- };
+ page_size: 20
+ })
+ }
const basePagination: Pagination = {
current: 1,
@@ -525,7 +428,7 @@
title: t('dmx.column.UploadTime'),
dataIndex: 'create_time',
slotName: 'create_time',
- width: 200,
+ width:200
},
{
title: t('瑙f瀽鏂规硶'),
@@ -587,9 +490,9 @@
const fetchData = async (params) => {
setLoading(true);
try {
- const data = await queryKbDocumentList(params);
+ const data = await queryKbDocumentList(params);
console.log(data, 'data');
- if (data.code == '0') {
+ if(data.code=='0'){
// 璇︽儏
// const kbtenantInfo = await queryKbtenantInfo();
parser_ids = kbtenantInfo.parser_ids.split(',').reduce((acc, pair) => {
@@ -599,7 +502,7 @@
}, {});
// console.log(parser_ids, 'parser_ids');
kbtenantInfo.parser_idObj = parser_ids;
- renderData.value = data.data.docs || [];
+ renderData.value = data.data.docs||[];
renderData.value = renderData.value.map((item) => {
return {
...item,
@@ -612,9 +515,10 @@
pagination.current = params.page;
pagination.total = data.data.total;
// 鏌ヨ鐭ヨ瘑搴撹鎯�
- kbdetail = await queryKbdetail({
- kb_id: params.kb_id,
+ kbdetail = await queryKbdetail({
+ kb_id:params.kb_id,
});
+
}
} catch (err) {
// you can report use errorHandler or other
@@ -628,35 +532,37 @@
kb_id: kbobj.id,
page: 1,
page_size: 20,
- keywords: keywords.value,
- });
+ keywords:keywords.value
+ })
};
- const handleClick = () => {
+ const handleClick = ()=>{
visible.value = true;
- };
+ }
const onPageChange = (current: number) => {
fetchData({ ...basePagination, current });
};
- const knowledgeData = async (params = { page: 1, page_size: 20 }) => {
+ const knowledgeData = async (
+ params = { page: 1, page_size: 20 }
+ ) => {
setLoading(true);
try {
const { data } = await queryKbList(params);
console.log(data, 'data');
tabs.value = data;
console.log(tabs.value, 'tabs');
- if (tabs.value.length > 0 && tabs.value[0]) {
- kbobj = tabs.value[0];
+ if(tabs.value.length>0 && tabs.value[0]){
+ kbobj = tabs.value[0]
kbId = kbobj.id;
testForm.value.changekbid(kbId);
configForm.value.changekbObj(kbobj);
fetchData({
kb_id: kbobj.id,
page: 1,
- page_size: 20,
- });
+ page_size: 20
+ })
}
// renderData.value = data.list;
// console.log(renderData, 'renderData');
@@ -671,13 +577,13 @@
const deleteKnowledge = async (id) => {
let data = await deleteKnow({
- kb_id: id,
- });
- if (data.code == 0) {
+ kb_id:id
+ })
+ if(data.code == 0){
Message.success('鍒犻櫎鎴愬姛');
- knowledgeData();
+ knowledgeData()
}
- };
+ }
const reset = () => {
formModel.value = generateFormModel();
};
@@ -736,104 +642,106 @@
}
};
- const fileClick = () => {
- detailsShow.value = true;
- };
+ const fileClick = ()=>{
+ detailsShow.value = true
- const goBackClick = () => {
- detailsShow.value = false;
- };
+ }
+
+ const goBackClick = ()=>{
+ detailsShow.value = false
+
+ }
function upTabdateItem(id, newName) {
console.log(id, newName);
- const itemToUpdate = renderData.value.find((item) => item.id === id);
+ const itemToUpdate = renderData.value.find(item => item.id === id);
if (itemToUpdate) {
itemToUpdate.name = newName;
}
}
- const deleteItem = async (row) => {
+const deleteItem = async (row)=>{
console.log(row);
- let data = await kbdocumentrm({ doc_id: row.id });
- if (data.code == 0) {
+ let data = await kbdocumentrm({doc_id: row.id})
+ if(data.code == 0){
Message.success('鍒犻櫎鎴愬姛');
console.log(kbobj, 'kbobj');
fetchData({
kb_id: kbobj.id,
page: 1,
- page_size: 20,
- });
+ page_size: 20
+ })
}
- };
- const onDownloadDocument = async (record) => {
+ }
+ const onDownloadDocument = async (record)=>{
console.log(record);
downloadFile({
url: `/api/v1/document/get/${record.id}`,
filename: record.name,
});
- };
- const seeload = async (row) => {
- Object.assign(seeObj, row);
- // console.log(seeObj.name, 'seeObj');
- let type = row.name.split('.')[1];
- console.log(type);
- if (type == 'pdf') {
- documenttype.value = 'txtPdf';
- } else if (type == 'docx') {
- documenttype.value = 'docx';
- } else if (type == 'xlsx') {
- documenttype.value = 'excel';
- } else if (type == 'txt') {
- documenttype.value = 'txtPdf';
- } else {
- return false;
- }
- previewSrc.value = `${import.meta.env.VITE_API_BASE_URL}/v1/document/get/${
- row.id
- }`;
- visible.value = true;
- };
+ }
+const seeload = async (row)=>{
+ Object.assign(seeObj, row)
+ // console.log(seeObj.name, 'seeObj');
+ let type = row.name.split('.')[1];
+ console.log(type);
+ if(type=='pdf'){
+ documenttype.value = 'txtPdf'
+ }else if(type=='docx'){
+ documenttype.value = 'docx'
+ }else if(type=='xlsx'){
+ documenttype.value = 'excel'
+ }else if(type=='txt'){
+ documenttype.value = 'txtPdf'
+ }else {
+ return false
+ }
+ previewSrc.value = `${import.meta.env.VITE_API_BASE_URL}/v1/document/get/${row.id}`
+ visible.value = true;
- const handleChangeStatus = async (row) => {
- console.log(row);
- let data = await kbdocumentchangeStatus({
- doc_id: row.id,
- status: row.status,
- });
- if (data.code == 0) {
- Message.success('鎿嶄綔鎴愬姛');
- }
- };
+}
- const run = async (row) => {
- console.log(row);
- row.loading = true;
- let run = '1';
- if (row.run != '2') {
- run = '1';
- } else {
- run = '2';
- }
- let data = await kbdocumentrun({
- doc_ids: [row.id],
- run: run,
- });
- if (data.code == 0) {
- Message.success('瑙f瀽鎴愬姛');
- row.run = '3';
- } else {
- Message.error('瑙f瀽澶辫触');
- row.run = '1';
- }
- row.loading = false;
- };
+const handleChangeStatus = async (row)=>{
+ console.log(row);
+ let data = await kbdocumentchangeStatus({
+ doc_id: row.id,
+ status: row.status
+ })
+ if(data.code == 0){
+ Message.success('鎿嶄綔鎴愬姛');
+ }
+}
- const changeFetchData = async (row) => {
- fetchData({
- kb_id: kbobj.id,
- page: 1,
- page_size: 20,
- });
- };
+
+const run = async (row)=>{
+ console.log(row);
+ row.loading = true;
+ let run = '1'
+ if(row.run!='2'){
+ run = '1'
+ }else {
+ run = '2'
+ }
+ let data = await kbdocumentrun({
+ doc_ids: [row.id],
+ run: run
+ })
+ if(data.code == 0){
+ Message.success('瑙f瀽鎴愬姛');
+ row.run = '3';
+ }else{
+ Message.error('瑙f瀽澶辫触');
+ row.run = '1';
+ }
+ row.loading = false;
+}
+
+const changeFetchData = async (row)=>{
+ fetchData({
+ kb_id: kbobj.id,
+ page: 1,
+ page_size: 20
+ })
+}
watch(
() => columns.value,
(val) => {
@@ -847,44 +755,49 @@
{ deep: true, immediate: true }
);
- onBeforeMount(() => {});
- onMounted(() => {
- knowledgeData();
- });
+ onBeforeMount(()=>{
+
+ })
+ onMounted(()=>{
+ knowledgeData()
+ })
+
</script>
<script lang="ts">
export default {
name: 'SearchTable',
- methods: {},
+ methods: {
+
+ }
};
</script>
<style scoped lang="less">
.container {
padding: 0 20px 20px 20px;
- .main-container {
+ .main-container{
display: flex;
width: 100%;
height: 100%;
- .lf-container {
+ .lf-container{
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-evenly;
- background: var(--color-neutral-3);
+ background: #ffffff;
width: 200px;
- .lf-container-top {
+ .lf-container-top{
display: flex;
margin: 10px 0;
}
- .lf-container-down {
+ .lf-container-down{
display: flex;
flex-direction: column;
box-sizing: border-box;
width: 90%;
//height: 56rem;
- border: 1px solid var(--color-neutral-3);
+ border: 1px solid #eeeeee;
//padding: 10px;
margin-bottom: 10px;
//.tabs{
@@ -896,8 +809,8 @@
cursor: pointer;
box-sizing: border-box;
margin: 10px 10px;
- padding: 0 10px;
- //color: var(--color-text-1);
+ padding:0 10px;
+ color: rgba(0, 0, 0, 0.88);
font-size: 14px;
height: 40px;
line-height: 40px;
@@ -909,40 +822,33 @@
}
.tab:hover {
border: 1px solid #ffffff;
- color: #000000;
background: #e8e8ea;
- box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16),
- 0 3px 6px 0 rgba(0, 0, 0, 0.12),
- 0 5px 12px 4px rgba(0, 0, 0, 0.09);
+ box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 5px 12px 4px rgba(0, 0, 0, 0.09);
}
.tab.active {
border: 1px solid #e8e8ea;
background: #e8e8ea;
- color: #000000;
cursor: pointer;
- box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16),
- 0 3px 6px 0 rgba(0, 0, 0, 0.12),
- 0 5px 12px 4px rgba(0, 0, 0, 0.09);
}
}
}
- .rt-container {
+ .rt-container{
position: relative;
//background: #626aea;
margin-left: 20px;
width: calc(100% - 200px);
height: 56rem;
- .rt-container-main {
+ .rt-container-main{
height: 76vh;
}
- .details {
+ .details{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
- //background: #ffffff;
- .details-header {
+ background: #ffffff;
+ .details-header{
display: flex;
justify-content: space-between;
margin-top: 10px;
diff --git a/src/views/dmx/knowledgeLib/test.vue b/src/views/dmx/knowledgeLib/test.vue
index 4738315..ba702dc 100644
--- a/src/views/dmx/knowledgeLib/test.vue
+++ b/src/views/dmx/knowledgeLib/test.vue
@@ -1,215 +1,186 @@
+
<template>
- <div class="main-container">
- <div class="main-container-lf">
- <div class="main-container-lf-top">妫�绱㈡祴璇�</div>
- <div class="main-container-lf-down">
- <div style="color: #999"
- >鏈�鍚庝竴姝ワ紒 鎴愬姛鍚庯紝鍓╀笅鐨勫氨浜ょ粰Infiniflow AI鍚с��</div
- >
- <a-divider style="margin-top: 10px" />
- <a-form
- ref="formRef"
- :model="form"
- :style="{ width: '100%' }"
- layout="vertical"
- @submit="handleSubmit"
- >
- <a-form-item field="similarity_threshold" label="鐩镐技搴﹂槇鍊�">
- <a-slider v-model="form.similarity_threshold" />
- </a-form-item>
- <a-form-item
- field="slider"
- label="鍏抽敭瀛楃浉浼煎害鏉冮噸"
- :rules="[
- { type: 'number', min: 5, message: 'slider is min than 5' },
- ]"
- >
- <a-slider v-model="form.vector_similarity_weight" />
- </a-form-item>
- <a-form-item
- field="section"
- label="Rerank妯″瀷"
- :rules="[{ match: /section one/, message: '璇烽�夋嫨' }]"
- >
- <a-space direction="vertical" size="large">
- <a-select
- :size="'large'"
- v-model="form.rerank_id"
- :style="{ width: '100%' }"
- placeholder="璇烽�夋嫨 ..."
- allow-clear
- >
- <a-optgroup
- :label="index"
- v-for="(item, index) in modelList"
- :key="index"
- >
- <a-option
- v-for="obj in item"
- :key="obj.fid"
- :disabled="!obj.available"
- :value="obj.llm_name"
- >
- {{ obj.llm_name }}
- </a-option>
- </a-optgroup>
- </a-select>
- </a-space>
- </a-form-item>
- <a-form-item
- field="slider"
- label="Top-K"
- :rules="[
- { type: 'number', min: 5, message: 'slider is min than 5' },
- ]"
- >
- <a-slider v-model="form.top_k" :min="1" :max="2048" />
- </a-form-item>
- <a-form-item>
- <div class="main-container-form-item-extra">
- <div class="main-container-form-item-extra-top">娴嬭瘯鏂囨湰</div>
- <div class="main-container-form-item-extra-down">
- <a-textarea
- v-model="form.question"
- style="
- height: 10rem;
- border: 1px solid var(--color-fill-3);
- border-radius: 4px;
- "
- placeholder=""
- allow-clear
- />
+ <div class="main-container">
+ <div class="main-container-lf">
+ <div class="main-container-lf-top">妫�绱㈡祴璇�</div>
+ <div class="main-container-lf-down">
+ <div style="color: #999;">鏈�鍚庝竴姝ワ紒 鎴愬姛鍚庯紝鍓╀笅鐨勫氨浜ょ粰Infiniflow AI鍚с��</div>
+ <a-divider style="margin-top: 10px" />
+ <a-form ref="formRef" :model="form" :style="{width:'100%'}" layout="vertical" @submit="handleSubmit">
+ <a-form-item field="similarity_threshold" label="鐩镐技搴﹂槇鍊�">
+ <a-slider v-model="form.similarity_threshold" />
+ </a-form-item>
+ <a-form-item field="slider" label="鍏抽敭瀛楃浉浼煎害鏉冮噸" :rules="[{type:'number', min:5,message:'slider is min than 5'}]">
+ <a-slider v-model="form.vector_similarity_weight" />
+ </a-form-item>
+ <a-form-item field="section" label="Rerank妯″瀷" :rules="[{match:/section one/,message:'璇烽�夋嫨'}]">
+ <a-space direction="vertical" size="large">
+ <a-select :size="'large'" v-model="form.rerank_id" :style="{width:'100%'}" placeholder="璇烽�夋嫨 ..." allow-clear>
+ <a-optgroup :label="index" v-for="(item,index) in modelList" :key=index>
+ <a-option
+ v-for="(obj) in item"
+ :key="obj.fid"
+ :disabled="!obj.available"
+ :value="obj.llm_name"
+ >
+ {{obj.llm_name}}
+ </a-option>
+ </a-optgroup>
+ </a-select>
+ </a-space>
+ </a-form-item>
+ <a-form-item field="slider" label="Top-K" :rules="[{type:'number', min:5,message:'slider is min than 5'}]">
+ <a-slider v-model="form.top_k" :min="1" :max="2048" />
+ </a-form-item>
+ <a-form-item >
+ <div class="main-container-form-item-extra">
+ <div class="main-container-form-item-extra-top">娴嬭瘯鏂囨湰</div>
+ <div class="main-container-form-item-extra-down">
+ <a-textarea v-model="form.question" style="height: 10rem;border: 1px solid var(--color-fill-3);border-radius: 4px" placeholder="" allow-clear/>
+ </div>
+ <div class="main-container-form-item-extra-btn">
+ <a-button type="primary" html-type="submit">娴嬭瘯</a-button>
+ </div>
</div>
- <div class="main-container-form-item-extra-btn">
- <a-button type="primary" html-type="submit">娴嬭瘯</a-button>
- </div>
+ </a-form-item>
+ </a-form>
+ </div>
+ </div>
+ <div class="main-container-rt">
+ <a-collapse style="width: 96%;margin-top: 1rem;margin-left: 2%">
+ <a-collapse-item header="0/0 閫夊畾鐨勬枃浠�" key="3">
+ <template #extra>
+ <a-tag size="small">鍛戒腑鏁�</a-tag>
+ <a-tag size="small">鐪嬫硶</a-tag>
+ </template>
+ <div>
+ <a-empty />
</div>
- </a-form-item>
- </a-form>
+ </a-collapse-item>
+ </a-collapse>
</div>
</div>
- <div class="main-container-rt">
- <a-collapse style="width: 96%; margin-top: 1rem; margin-left: 2%">
- <a-collapse-item header="0/0 閫夊畾鐨勬枃浠�" key="3">
- <template #extra>
- <a-tag size="small">鍛戒腑鏁�</a-tag>
- <a-tag size="small">鐪嬫硶</a-tag>
- </template>
- <div>
- <a-empty />
- </div>
- </a-collapse-item>
- </a-collapse>
- </div>
- </div>
</template>
<script lang="ts" setup>
- import { onMounted, onBeforeMount, reactive, ref, watch } from 'vue';
- import { Message } from '@arco-design/web-vue';
- import { kbretrievalTest, queryModelList } from '@/api/kbList';
- // const props = defineProps(['kbId'])
+import { onMounted, onBeforeMount, reactive, ref, watch } from "vue";
+import { Message } from '@arco-design/web-vue';
+import { kbretrievalTest, queryModelList } from "@/api/kbList";
+// const props = defineProps(['kbId'])
- // watch(() => props.kbId, (newValue, oldValue) => {
- // console.log('kbId 鍙樺寲浜�', newValue, oldValue);
- // },{
- // deep:true,
- // });
+// watch(() => props.kbId, (newValue, oldValue) => {
+// console.log('kbId 鍙樺寲浜�', newValue, oldValue);
+// },{
+// deep:true,
+// });
- let visible = ref(false);
- let loading = ref(false);
- const formRef = ref(null);
- const kbid = ref('');
- const modelList = ref({});
- let form = reactive({
- page: 1,
- question: '',
- rerank_id: '',
- similarity_threshold: 20,
- size: 10,
- top_k: 1024,
- vector_similarity_weight: 30,
+
+let visible = ref(false);
+let loading = ref(false);
+const formRef = ref(null);
+const kbid = ref('');
+const modelList = ref({});
+let form = reactive({
+ page: 1,
+ question: '',
+ rerank_id: '',
+ similarity_threshold: 20,
+ size: 10,
+ top_k: 1024,
+ vector_similarity_weight: 30,
+});
+
+
+const formatter = (value) => {
+ // return String(Math.round(value / 100))
+};
+
+const handleSubmit = async ({values, errors}) => {
+ // console.log(props.kbobj, 'props.kbobj');
+ if (!form.question){
+ return
+ }
+ let formObj = {
+ ...form,
+ kb_id:kbid.value,
+ }
+ formObj.similarity_threshold = formObj.similarity_threshold/100;
+ formObj.vector_similarity_weight = formObj.vector_similarity_weight/100;
+ const data = await kbretrievalTest(formObj);
+}
+
+const handleClick = () => {
+ visible.value = true;
+};
+const handleCancel = () => {
+ visible.value = false;
+}
+
+const handleOpened =(el) => {
+ Object.assign(form,{
+
});
+ formRef.value.resetFields();
+}
- const formatter = (value) => {
- // return String(Math.round(value / 100))
- };
+const changekbid = (value) => {
+ kbid.value = value;
+}
- const handleSubmit = async ({ values, errors }) => {
- // console.log(props.kbobj, 'props.kbobj');
- if (!form.question) {
- return;
- }
- let formObj = {
- ...form,
- kb_id: kbid.value,
+const queryModel = async (params) => {
+ try {
+ const data = await queryModelList(params);
+ console.log(data.data, '澶фā鍨嬪垪琛�');
+ modelList.value = {
+ BAAI: [data.data.BAAI[1]],
+ Jina: data.data.Jina,
+ youdao: data.data.youdao
};
- formObj.similarity_threshold = formObj.similarity_threshold / 100;
- formObj.vector_similarity_weight = formObj.vector_similarity_weight / 100;
- const data = await kbretrievalTest(formObj);
- };
+ } catch (err) {
+ // you can report use errorHandler or other
+ } finally {
- const handleClick = () => {
- visible.value = true;
- };
- const handleCancel = () => {
- visible.value = false;
- };
+ }
+};
- const handleOpened = (el) => {
- Object.assign(form, {});
- formRef.value.resetFields();
- };
- const changekbid = (value) => {
- kbid.value = value;
- };
+defineExpose({
+ changekbid
+})
- const queryModel = async (params) => {
- try {
- const data = await queryModelList(params);
- console.log(data.data, '澶фā鍨嬪垪琛�');
- modelList.value = {
- BAAI: [data.data.BAAI[1]],
- Jina: data.data.Jina,
- youdao: data.data.youdao,
- };
- } catch (err) {
- // you can report use errorHandler or other
- } finally {
- }
- };
+onBeforeMount(()=>{
+ queryModel({})
+})
+onMounted(()=>{
- defineExpose({
- changekbid,
- });
- onBeforeMount(() => {
- queryModel({});
- });
- onMounted(() => {});
+})
+
+
</script>
<script lang="ts">
- export default {
- name: 'config',
- methods: {},
- };
+export default {
+ name: 'config',
+ methods: {
+
+ }
+};
</script>
<style scoped lang="less">
- .main-container {
+ .main-container{
display: flex;
justify-content: space-between;
height: 100%;
//background: #626aea;
- &-lf {
+ &-lf{
width: 30%;
height: 100%;
//border: 1px solid #cccccc;
- //background: #ffffff;
+ background: #ffffff;
border-radius: 10px;
overflow: hidden;
- &-top {
+ &-top{
width: 100%;
height: 60px;
line-height: 60px;
@@ -217,44 +188,44 @@
color: #ffffff;
text-align: center;
}
- &-down {
+ &-down{
padding: 20px;
width: 100%;
}
}
- &-form-item-extra {
+ &-form-item-extra{
width: 100%;
height: 20rem;
border: 1px solid var(--color-fill-3);
border-radius: 6px;
overflow: hidden;
- &-top {
+ &-top{
width: 100%;
height: 40px;
line-height: 40px;
- border-bottom: 1px solid var(--color-fill-3);
+ border-bottom: 1px solid var(--color-fill-3);
//background: rgb(var(--primary-6));
color: #999999;
text-align: center;
}
- &-down {
+ &-down{
width: 92%;
margin-left: 4%;
margin-top: 30px;
}
- &-btn {
+ &-btn{
width: 96%;
text-align: right;
margin-top: 1rem;
}
}
- &-rt {
+ &-rt{
width: 69%;
height: 100%;
//background: #626aea;
//border: 1px solid #cccccc;
- //background: #ffffff;
+ background: #ffffff;
border-radius: 10px;
}
}
-</style>
+</style>
\ No newline at end of file
diff --git a/src/views/dmx/knowledgeLib/tool.vue b/src/views/dmx/knowledgeLib/tool.vue
index 1418515..a636442 100644
--- a/src/views/dmx/knowledgeLib/tool.vue
+++ b/src/views/dmx/knowledgeLib/tool.vue
@@ -1,3 +1,4 @@
+
<template>
<a-button type="text" @click="handleClick" size="small">
<template #icon>
@@ -13,382 +14,232 @@
title-align="start"
width="900px"
>
- <a-tabs default-active-key="1">
- <a-tab-pane key="1">
- <template #title> <icon-calendar /> 瑙f瀽鏂规硶 </template>
- <div style="width: 100%">
- <div style="display: flex; align-items: center">
- <div> 瑙f瀽鏂规硶: </div>
- <div style="margin-left: 10px">
- <a-select v-model="form.parser_id" placeholder="璇烽�夋嫨">
- <a-option
- v-for="item in parser_ids"
- :key="item.value"
- :label="item.name"
- :value="item.value"
- ></a-option>
- </a-select>
- </div>
- </div>
- <div class="parser">
- <a-form
- ref="formRef"
- :rules="rules"
- :model="form"
- auto-label-width
- @submit="handleSubmit"
- >
- <a-divider style="margin-top: 10px" />
- <a-form-item
- field="slider"
- label="鍧梩oken鏁�"
- :rules="[
- { type: 'number', min: 1, message: 'slider is min than 1' },
- ]"
- >
- <a-slider
- v-model="form.chunk_token_num"
- :max="1000"
- show-input
- />
- </a-form-item>
- <a-divider style="margin-top: 10px" />
- <a-form-item field="raptor" label="浣跨敤鍙洖澧炲己RAPTOR绛栫暐">
- <a-space direction="vertical" size="large">
- <a-switch
- v-model="form.use_raptor"
- @change="onChangeRAPTOR"
- />
- </a-space>
- </a-form-item>
- <div v-if="form.use_raptor">
- <a-form-item field="prompt" label="鎻愮ず璇�">
- <a-textarea
- v-model="form.prompt"
- placeholder="璇峰~鍐欐彁绀鸿瘝"
- />
- </a-form-item>
- <a-form-item
- field="slider"
- label="鏈�澶oken鏁�"
- :rules="[
- { type: 'number', min: 5, message: 'slider is min than 5' },
- ]"
- >
- <a-slider
- v-model="form.max_token"
- :min="1"
- :max="1000"
- show-input
- />
- </a-form-item>
- <a-form-item
- field="slider"
- label="闃堝��"
- :rules="[
- { type: 'number', min: 5, message: 'slider is min than 5' },
- ]"
- >
- <a-slider v-model="form.threshold" show-tooltip show-input />
- </a-form-item>
- <a-form-item
- field="slider"
- label="鏈�澶ц仛绫绘暟"
- :rules="[
- { type: 'number', min: 5, message: 'slider is min than 5' },
- ]"
- >
- <a-slider v-model="form.max_cluster" :max="1000" show-input />
- </a-form-item>
- <a-form-item
- field="slider"
- label="闅忔満绉嶅瓙"
- v-model="form.random_seed"
- :rules="[
- { type: 'number', min: 5, message: 'slider is min than 5' },
- ]"
- >
- <a-input-number
- v-model="form.random_seed"
- :style="{
- width: '300px',
- marginRight: '1rem',
- borderRadius: '4px',
- }"
- placeholder="璇疯緭鍏�"
- class="input-demo"
- :min="10"
- :max="100"
- />
- <a-button type="primary" @click="randomNumber">
- <icon-plus />
- </a-button>
- </a-form-item>
+ <a-tabs default-active-key="1">
+ <a-tab-pane key="1">
+ <template #title>
+ <icon-calendar/> 瑙f瀽鏂规硶
+ </template>
+ <div style="width: 100%">
+ <div style="display: flex;align-items: center;">
+ <div>
+ 瑙f瀽鏂规硶:
</div>
- <a-form-item>
- <div style="width: 100%; text-align: right">
- <a-button @click="visible = false">鍙栨秷</a-button>
- <a-button
- style="margin-left: 10px"
- type="primary"
- html-type="submit"
- >纭畾</a-button
- >
- </div>
- </a-form-item>
- </a-form>
- </div>
- </div>
- </a-tab-pane>
- <a-tab-pane key="2">
- <template #title> <icon-clock-circle /> 鍒涘缓瑙f瀽鍧� </template>
- <div class="details">
- <div class="details-header">
- <div
- style="
- display: flex;
- align-items: center;
- justify-content: flex-end;
- "
- >
- <a-radio-group
- v-model="radio"
- type="button"
- style="margin-right: 10px"
- @change="onRadioChange"
- >
- <a-radio value="1">鍏ㄦ枃</a-radio>
- <a-radio value="2">鐪佺暐</a-radio>
- </a-radio-group>
- <a-popover position="bottom">
- <a-button
- type="outline"
- class="button"
- style="margin-right: 10px"
- >鎵归噺<icon-down style="margin-left: 4px"
- /></a-button>
- <template #content>
- <a-space direction="vertical">
- <a-checkbox
- :model-value="checkedAll"
- :indeterminate="indeterminate"
- @change="handleChangeAll"
- style="margin-left: 10px"
- >
- 閫夋嫨鎵�鏈�
- </a-checkbox>
+ <div style="margin-left: 10px">
+ <a-select v-model="form.parser_id" placeholder="璇烽�夋嫨" >
+ <a-option v-for="item in parser_ids" :key="item.value" :label="item.name" :value="item.value"></a-option>
+ </a-select>
+ </div>
+ </div>
+ <div class="parser">
+ <a-form ref="formRef" :rules="rules" :model="form" auto-label-width @submit="handleSubmit" >
+ <a-divider style="margin-top: 10px" />
+ <a-form-item field="slider" label="鍧梩oken鏁�"
+ :rules="[{type:'number', min:1,message:'slider is min than 1'}]">
+ <a-slider v-model="form.chunk_token_num" :max="1000" show-input />
+ </a-form-item>
+ <a-divider style="margin-top: 10px" />
+ <a-form-item field="raptor" label="浣跨敤鍙洖澧炲己RAPTOR绛栫暐">
+ <a-space direction="vertical" size="large">
+ <a-switch v-model="form.use_raptor" @change="onChangeRAPTOR" />
</a-space>
- <a-divider style="margin: 10px 0" />
- <p>
- <a-button type="text" class="button" style="color: #2a2a2b">
- <template #icon>
- <icon-check-circle />
- </template>
- 鍚敤閫夊畾鐨�
+ </a-form-item>
+ <div v-if="form.use_raptor">
+ <a-form-item field="prompt" label="鎻愮ず璇�">
+ <a-textarea
+ v-model="form.prompt"
+ style="height: 10rem;border: 1px solid var(--color-fill-3);border-radius: 4px" placeholder="璇峰~鍐欐彁绀鸿瘝" />
+ </a-form-item>
+ <a-form-item field="slider" label="鏈�澶oken鏁�"
+ :rules="[{type:'number', min:5,message:'slider is min than 5'}]">
+ <a-slider v-model="form.max_token" :min="1" :max="1000" show-input/>
+ </a-form-item>
+ <a-form-item field="slider" label="闃堝��" :rules="[{type:'number', min:5,message:'slider is min than 5'}]">
+ <a-slider v-model="form.threshold" show-tooltip show-input/>
+ </a-form-item>
+ <a-form-item field="slider" label="鏈�澶ц仛绫绘暟"
+ :rules="[{type:'number', min:5,message:'slider is min than 5'}]">
+ <a-slider v-model="form.max_cluster" :max="1000" show-input/>
+ </a-form-item>
+ <a-form-item field="slider" label="闅忔満绉嶅瓙" v-model="form.random_seed"
+ :rules="[{type:'number', min:5,message:'slider is min than 5'}]">
+ <a-input-number v-model="form.random_seed" :style="{width:'300px',marginRight:'1rem',borderRadius:'4px'}"
+ placeholder="璇疯緭鍏�" class="input-demo" :min="10" :max="100" />
+ <a-button type="primary" @click="randomNumber">
+ <icon-plus />
</a-button>
- </p>
- <p>
- <a-button type="text" class="button" style="color: #2a2a2b">
- <template #icon>
- <icon-close-circle />
- </template>
- 绂佺敤閫夊畾鐨�
- </a-button>
- </p>
- <a-divider style="margin: 10px 0" />
- <p>
- <a-button type="text" class="button" style="color: #2a2a2b">
- <template #icon>
- <icon-delete />
- </template>
- 鍒犻櫎閫夊畾鐨�
- </a-button>
- </p>
- </template>
- </a-popover>
- <a-button
- type="outline"
- class="button"
- style="margin-right: 10px"
- >
- <template #icon>
- <icon-search />
- </template>
- </a-button>
- <a-popover position="bottom">
- <a-button
- type="outline"
- class="button"
- style="margin-right: 10px"
- ><icon-sort
- /></a-button>
- <template #content>
- <a-radio-group
- v-model="available_int"
- direction="vertical"
- size="large"
- @change="onChangeavailable"
- >
- <a-radio value="">鎵�鏈�</a-radio>
- <a-radio value="1">鍚敤</a-radio>
- <a-radio value="0">绂佺敤</a-radio>
- </a-radio-group>
- </template>
- </a-popover>
- <addDetails :item="item"></addDetails>
+
+ </a-form-item>
+
+ </div>
+ <a-form-item>
+ <div style="width: 100%;text-align: right">
+ <a-button @click="visible = false">鍙栨秷</a-button>
+ <a-button style="margin-left: 10px" type="primary" html-type="submit">纭畾</a-button>
+ </div>
+ </a-form-item>
+ </a-form>
</div>
</div>
- <a-divider style="margin-top: 10px" />
- <div class="groupMain">
- <a-checkbox-group v-model="data" @change="handleChange">
- <div
- class="groupList"
- :style="{ background: keyBg == '1' ? '#eff8ff' : 'white' }"
- >
- <a-checkbox value="1"></a-checkbox>
- <div
- class="groupList-content"
- @click="groupListContentClick('1')"
- @dblclick="contentClick(1)"
- >
- 鑰� stable version 鏄渶鏂扮ǔ瀹氱増锛岀粡杩囧厖鍒嗘祴璇曞拰楠岃瘉锛宐ug 杈冨皯锛�
- 閫傚悎鐢ㄤ簬鐢熶骇鐜銆傚叾鐗堟湰鍙烽�氬父涓哄弻鏁帮紝濡� 1.26銆俵egacy versions
- 鍒欐槸涔嬪墠鍙戝竷鐨勭ǔ瀹氱増锛屽浜庨渶瑕�
- 鐗瑰畾鏃х増鏈殑鍏煎鎬ф垨瀹夊叏鎬ф敮鎸佺殑鐢ㄦ埛鏈夌敤锛屼絾涓�鑸笉
- 鎺ㄨ崘鐢ㄤ簬鏂伴」鐩紝闄ら潪鏈夌壒娈婇渶姹傘�傚湪瀹為檯浣跨敤涓紝濡傛灉杩芥眰鏈�鏂板姛鑳�
- 涓旀効鎰忛潰瀵瑰彲鑳藉瓨鍦ㄧ殑涓�浜涗笉绋冲畾鍥犵礌锛屽彲浠ュ皾璇曚娇鐢ㄤ富绾跨増鏈繘琛屾祴璇曞拰鐮旂┒锛涘鏋滄槸鐢ㄤ簬鐢熶骇鐜
- </div>
- <div class="groupList-right">
- <a-switch
- v-model="switchType"
- checked-value="1"
- unchecked-value="0"
- @change="handleChangeStatus()"
- />
- </div>
+ </a-tab-pane>
+ <a-tab-pane key="2">
+ <template #title>
+ <icon-clock-circle/> 鍒涘缓瑙f瀽鍧�
+ </template>
+ <div class="details">
+ <div class="details-header">
+ <div style="display: flex; align-items: center;justify-content: flex-end;">
+ <a-radio-group v-model="radio" type="button" style="margin-right: 10px" @change="onRadioChange">
+ <a-radio value="1">鍏ㄦ枃</a-radio>
+ <a-radio value="2">鐪佺暐</a-radio>
+ </a-radio-group>
+ <a-popover position="bottom">
+ <a-button type="outline" class="button" style="margin-right: 10px;">鎵归噺<icon-down style="margin-left: 4px" /></a-button>
+ <template #content>
+ <a-space direction="vertical">
+ <a-checkbox :model-value="checkedAll" :indeterminate="indeterminate" @change="handleChangeAll" style="margin-left: 10px">
+ 閫夋嫨鎵�鏈�
+ </a-checkbox>
+ </a-space>
+ <a-divider style="margin: 10px 0" />
+ <p>
+ <a-button type="text" class="button" style="color: #2a2a2b">
+ <template #icon>
+ <icon-check-circle />
+ </template>
+ 鍚敤閫夊畾鐨�
+ </a-button>
+ </p>
+ <p>
+ <a-button type="text" class="button" style="color: #2a2a2b">
+ <template #icon>
+ <icon-close-circle />
+ </template>
+ 绂佺敤閫夊畾鐨�
+ </a-button>
+ </p>
+ <a-divider style="margin: 10px 0" />
+ <p>
+ <a-button type="text" class="button" style="color: #2a2a2b">
+ <template #icon>
+ <icon-delete />
+ </template>
+ 鍒犻櫎閫夊畾鐨�
+ </a-button>
+ </p>
+ </template>
+ </a-popover>
+ <a-button type="outline" class="button" style="margin-right: 10px">
+ <template #icon>
+ <icon-search />
+ </template>
+ </a-button>
+ <a-popover position="bottom">
+ <a-button type="outline" class="button" style="margin-right: 10px"><icon-sort /></a-button>
+ <template #content>
+ <a-radio-group v-model="available_int" direction="vertical" size="large" @change="onChangeavailable">
+ <a-radio value="">鎵�鏈�</a-radio>
+ <a-radio value="1">鍚敤</a-radio>
+ <a-radio value="0">绂佺敤</a-radio>
+ </a-radio-group>
+ </template>
+ </a-popover>
+ <addDetails :item="item"></addDetails>
</div>
- </a-checkbox-group>
- </div>
- <a-divider style="margin-top: 10px" />
- <div class="groupMain">
- <a-checkbox-group v-model="data" @change="handleChange">
- <div class="groupList">
- <a-checkbox value="1"></a-checkbox>
- <div
- class="groupList-content"
- @click="groupListContentClick('1')"
- @dblclick="contentClick(1)"
- >
- 鑰� stable version 鏄渶鏂扮ǔ瀹氱増锛岀粡杩囧厖鍒嗘祴璇曞拰楠岃瘉锛宐ug 杈冨皯锛�
- 閫傚悎鐢ㄤ簬鐢熶骇鐜銆傚叾鐗堟湰鍙烽�氬父涓哄弻鏁帮紝濡� 1.26銆俵egacy versions
- 鍒欐槸涔嬪墠鍙戝竷鐨勭ǔ瀹氱増锛屽浜庨渶瑕�
- 鐗瑰畾鏃х増鏈殑鍏煎鎬ф垨瀹夊叏鎬ф敮鎸佺殑鐢ㄦ埛鏈夌敤锛屼絾涓�鑸笉
- 鎺ㄨ崘鐢ㄤ簬鏂伴」鐩紝闄ら潪鏈夌壒娈婇渶姹傘�傚湪瀹為檯浣跨敤涓紝濡傛灉杩芥眰鏈�鏂板姛鑳�
- 涓旀効鎰忛潰瀵瑰彲鑳藉瓨鍦ㄧ殑涓�浜涗笉绋冲畾鍥犵礌锛屽彲浠ュ皾璇曚娇鐢ㄤ富绾跨増鏈繘琛屾祴璇曞拰鐮旂┒锛涘鏋滄槸鐢ㄤ簬鐢熶骇鐜
+ </div>
+ <a-divider style="margin-top: 10px" />
+ <div class="groupMain">
+ <a-checkbox-group v-model="data" @change="handleChange" >
+ <div class="groupList" :style="{background:keyBg=='1'?'#eff8ff':'white'}">
+ <a-checkbox value="1"></a-checkbox>
+ <div class="groupList-content" @click="groupListContentClick('1')" @dblclick="contentClick(1)">
+ 鑰� stable version 鏄渶鏂扮ǔ瀹氱増锛岀粡杩囧厖鍒嗘祴璇曞拰楠岃瘉锛宐ug 杈冨皯锛�
+ 閫傚悎鐢ㄤ簬鐢熶骇鐜銆傚叾鐗堟湰鍙烽�氬父涓哄弻鏁帮紝濡� 1.26銆俵egacy versions
+ 鍒欐槸涔嬪墠鍙戝竷鐨勭ǔ瀹氱増锛屽浜庨渶瑕�
+ 鐗瑰畾鏃х増鏈殑鍏煎鎬ф垨瀹夊叏鎬ф敮鎸佺殑鐢ㄦ埛鏈夌敤锛屼絾涓�鑸笉
+ 鎺ㄨ崘鐢ㄤ簬鏂伴」鐩紝闄ら潪鏈夌壒娈婇渶姹傘�傚湪瀹為檯浣跨敤涓紝濡傛灉杩芥眰鏈�鏂板姛鑳�
+ 涓旀効鎰忛潰瀵瑰彲鑳藉瓨鍦ㄧ殑涓�浜涗笉绋冲畾鍥犵礌锛屽彲浠ュ皾璇曚娇鐢ㄤ富绾跨増鏈繘琛屾祴璇曞拰鐮旂┒锛涘鏋滄槸鐢ㄤ簬鐢熶骇鐜
+ </div>
+ <div class="groupList-right">
+ <a-switch v-model="switchType" checked-value="1" unchecked-value="0" @change="handleChangeStatus()"/>
+ </div>
</div>
- <div class="groupList-right">
- <a-switch
- v-model="switchType"
- checked-value="1"
- unchecked-value="0"
- @change="handleChangeStatus()"
- />
- </div>
- </div>
- <div class="groupList">
- <a-checkbox value="1"></a-checkbox>
- <div
- class="groupList-content"
- @click="groupListContentClick('2')"
- @dblclick="contentClick(1)"
- >
- 鑰� stable version 鏄渶鏂扮ǔ瀹氱増锛岀粡杩囧厖鍒嗘祴璇曞拰楠岃瘉锛宐ug 杈冨皯锛�
- 閫傚悎鐢ㄤ簬鐢熶骇鐜銆傚叾鐗堟湰鍙烽�氬父涓哄弻鏁帮紝濡� 1.26銆俵egacy versions
- 鍒欐槸涔嬪墠鍙戝竷鐨勭ǔ瀹氱増锛屽浜庨渶瑕�
+ <div class="groupList" :style="{background:keyBg=='2'?'#eff8ff':'white'}">
+ <a-checkbox value="1"></a-checkbox>
+ <div class="groupList-content" @click="groupListContentClick('2')" @dblclick="contentClick(1)">
+ 鑰� stable version 鏄渶鏂扮ǔ瀹氱増锛岀粡杩囧厖鍒嗘祴璇曞拰楠岃瘉锛宐ug 杈冨皯锛�
+ 閫傚悎鐢ㄤ簬鐢熶骇鐜銆傚叾鐗堟湰鍙烽�氬父涓哄弻鏁帮紝濡� 1.26銆俵egacy versions
+ 鍒欐槸涔嬪墠鍙戝竷鐨勭ǔ瀹氱増锛屽浜庨渶瑕�
+ </div>
+ <div class="groupList-right">
+ <a-switch v-model="switchType" checked-value="1" unchecked-value="0" @change="handleChangeStatus()"/>
+ </div>
</div>
- <div class="groupList-right">
- <a-switch
- v-model="switchType"
- checked-value="1"
- unchecked-value="0"
- @change="handleChangeStatus()"
- />
- </div>
- </div>
- <div class="groupList-right">
- <a-switch
- v-model="switchType"
- checked-value="1"
- unchecked-value="0"
- @change="handleChangeStatus()"
- />
- </div>
- </a-checkbox-group>
+
+ </a-checkbox-group>
+ </div>
</div>
- </div>
- <eidtDetails ref="eidtDil"></eidtDetails>
- </a-tab-pane>
- </a-tabs>
+ <eidtDetails ref="eidtDil"></eidtDetails>
+ </a-tab-pane>
+ </a-tabs>
</a-modal>
</template>
<script lang="ts" setup>
- import { onMounted, onBeforeMount, reactive, ref, computed } from 'vue';
- import { Message } from '@arco-design/web-vue';
- import { kbdocumentchangeparser } from '@/api/kbList';
- import addDetails from '@/views/dmx/knowledgeLib/addDetails.vue';
- import eidtDetails from '@/views/dmx/knowledgeLib/eidtDetails.vue';
- const visible = ref(false);
- const loading = ref(false);
- const radio = ref('1');
- const keyBg = ref('');
- const eidtDil = ref();
+import { onMounted, onBeforeMount, reactive, ref, computed } from "vue";
+import { Message } from "@arco-design/web-vue";
+import {kbdocumentchangeparser} from "@/api/kbList";
+import addDetails from '@/views/dmx/knowledgeLib/addDetails.vue'
+import eidtDetails from '@/views/dmx/knowledgeLib/eidtDetails.vue'
+const visible = ref(false);
+const loading = ref(false);
+const radio = ref('1');
+const keyBg = ref('');
+const eidtDil = ref();
- const props = defineProps(['kbtenantInfo', 'item', 'kbdetail']);
- // const emit = defineEmits(['upTabdateItem'])
+const props = defineProps(['kbtenantInfo','item','kbdetail'])
+// const emit = defineEmits(['upTabdateItem'])
- let threshold = computed(() => {
- return form.threshold / 100;
- });
+let threshold = computed(()=>{
+ return form.threshold/100;
+})
- const kbtenantInfo = props.kbtenantInfo;
+const kbtenantInfo = props.kbtenantInfo;
- let parser_ids = kbtenantInfo.parser_ids.split(',').map((item) => {
- const [value1, value2] = item.split(':');
- return {
- name: value2,
- value: value1,
- };
- });
-
- const form = reactive({
- parser_id: props.item.parser_id,
- doc_id: props.item.id,
- max_token: 698,
- threshold: 30,
- max_cluster: 233,
- random_seed: 1500,
- chunk_token_num: 128,
- use_raptor: false,
- pages: {},
- prompt:
- '璇锋�荤粨浠ヤ笅娈佃惤銆� 灏忓績鏁板瓧锛屼笉瑕佺紪閫犮�� 娈佃惤濡備笅锛歕n' +
- ' {cluster_content}\n' +
- '浠ヤ笂灏辨槸浣犻渶瑕佹�荤粨鐨勫唴瀹广��',
- });
- const formRef = ref(null);
- const rules = {
- prompt: [
- {
- required: true,
- message: '鎻愮ず璇嶄笉鍏佽涓虹┖',
- },
- ],
+let parser_ids = kbtenantInfo.parser_ids.split(',').map((item) => {
+ const [value1, value2] = item.split(':');
+ return {
+ name: value2,
+ value: value1,
};
- const formatter = (value) => {
- return value / 100;
- };
+});
+
+const form = reactive({
+ parser_id: props.item.parser_id,
+ doc_id: props.item.id,
+ max_token: 698,
+ threshold: 30,
+ max_cluster: 233,
+ random_seed: 1500,
+ chunk_token_num: 128,
+ use_raptor: false,
+ pages: {},
+ prompt: '璇锋�荤粨浠ヤ笅娈佃惤銆� 灏忓績鏁板瓧锛屼笉瑕佺紪閫犮�� 娈佃惤濡備笅锛歕n' +
+ ' {cluster_content}\n' +
+ '浠ヤ笂灏辨槸浣犻渶瑕佹�荤粨鐨勫唴瀹广��',
+});
+const formRef = ref(null);
+const rules = {
+ prompt: [
+ {
+ required: true,
+ message:'鎻愮ず璇嶄笉鍏佽涓虹┖',
+ },
+ ],
+}
+const formatter = (value) => {
+ return value / 100
+};
function randomNumber() {
// 鐢熸垚涓�涓粙浜巑in鍜宮ax涔嬮棿鐨勯殢鏈烘暣鏁帮紙鍖呭惈min鍜宮ax锛�
const min = 1; // 鏈�灏忓��
@@ -396,180 +247,169 @@
form.random_seed = Math.floor(Math.random() * (max - min + 1)) + min;
}
- const handleSubmit = async ({ values, errors }) => {
- if (!errors) {
- let data = await kbdocumentchangeparser({
- parser_id: form.parser_id,
- doc_id: form.doc_id,
- parser_config: {
- raptor: {
- use_raptor: form.use_raptor,
- prompt: form.prompt,
- max_token: form.max_token,
- threshold: form.threshold,
- max_cluster: form.max_cluster,
- random_seed: form.random_seed,
- },
- chunk_token_num: form.chunk_token_num,
- pages: [],
+const handleSubmit = async ({values, errors}) => {
+ if(!errors){
+ let data = await kbdocumentchangeparser({
+ parser_id: form.parser_id,
+ doc_id: form.doc_id,
+ parser_config: {
+ raptor: {
+ use_raptor: form.use_raptor,
+ prompt: form.prompt,
+ max_token: form.max_token,
+ threshold: form.threshold,
+ max_cluster: form.max_cluster,
+ random_seed: form.random_seed,
},
- });
- if (data.code == 0) {
- Message.success('閰嶇疆鎴愬姛');
- } else {
- Message.error('閰嶇疆澶辫触');
+ chunk_token_num: form.chunk_token_num,
+ pages: [
+
+ ]
}
- visible.value = false;
+ })
+ if(data.code == 0){
+ Message.success('閰嶇疆鎴愬姛');
+ }else{
+ Message.error('閰嶇疆澶辫触');
}
- };
-
- const handleClick = () => {
- visible.value = true;
- };
- const handleCancel = () => {
visible.value = false;
- };
+ }
+}
- const contentClick = (done) => {
- eidtDil.value.handleClick();
- };
- const handleOpened = (el) => {
- // console.log('props',props.kbtenantInfo);
- // console.log('props',props.item);
- // console.log('props',props.kbdetail);
- console.log(parser_ids, 'parser_ids');
- // Object.assign(form,{
- // name: '',// 鐢ㄦ埛鍚�
- // nameJoin: '',// 鏄电О
- // post: '',// 宀椾綅
- // txt: '',// 澶囨敞
- // });
- // formRef.value.resetFields();
- console.log(props.item.id);
- };
+const handleClick = () => {
+ visible.value = true;
+};
+const handleCancel = () => {
+ visible.value = false;
+}
- const onChangeRAPTOR = () => {};
+const contentClick = (done) => {
+ eidtDil.value.handleClick();
+}
+const handleOpened =(el) => {
+ // console.log('props',props.kbtenantInfo);
+ // console.log('props',props.item);
+ // console.log('props',props.kbdetail);
+ console.log(parser_ids, 'parser_ids');
+ // Object.assign(form,{
+ // name: '',// 鐢ㄦ埛鍚�
+ // nameJoin: '',// 鏄电О
+ // post: '',// 宀椾綅
+ // txt: '',// 澶囨敞
+ // });
+ // formRef.value.resetFields();
+ console.log(props.item.id);
+}
- const indeterminate = ref(false);
- const checkedAll = ref(false);
- const data = ref([]);
- const switchType = ref(false);
- const available_int = ref('');
- const onRadioChange = () => {
- console.log(radio.value);
- };
- const handleChangeAll = (value) => {
+
+const onChangeRAPTOR = () => {
+
+};
+
+
+
+
+
+
+
+
+const indeterminate = ref(false)
+const checkedAll = ref(false)
+const data = ref([])
+const switchType = ref(false)
+const available_int = ref('')
+const onRadioChange = () => {
+ console.log(radio.value);
+
+
+
+};
+const handleChangeAll = (value) => {
+ indeterminate.value = false;
+ if (value) {
+ checkedAll.value = true;
+ data.value = ['1', '2', '3']
+ } else {
+ checkedAll.value = false;
+ data.value = []
+ }
+}
+
+const handleChange = (values) => {
+ if (values.length === 3) {
+ checkedAll.value = true
indeterminate.value = false;
- if (value) {
- checkedAll.value = true;
- data.value = ['1', '2', '3'];
- } else {
- checkedAll.value = false;
- data.value = [];
- }
- };
+ } else if (values.length === 0) {
+ checkedAll.value = false
+ indeterminate.value = false;
+ } else {
+ checkedAll.value = false
+ indeterminate.value = true;
+ }
+}
- const handleChange = (values) => {
- if (values.length === 3) {
- checkedAll.value = true;
- indeterminate.value = false;
- } else if (values.length === 0) {
- checkedAll.value = false;
- indeterminate.value = false;
- } else {
- checkedAll.value = false;
- indeterminate.value = true;
- }
- };
- const groupListContentClick = (value) => {
- keyBg.value = value;
- };
+const groupListContentClick = (value) => {
+ keyBg.value = value;
+}
- const onChangeavailable = () => {
- console.log(available_int.value);
- };
- const handleChangeStatus = () => {
- console.log(switchType.value);
- };
+const onChangeavailable = ()=>{
+ console.log(available_int.value);
+}
- onBeforeMount(() => {});
- onMounted(() => {});
+const handleChangeStatus = ()=>{
+ console.log(switchType.value);
+}
+
+onBeforeMount(()=>{
+
+})
+onMounted(()=>{
+
+
+})
</script>
<style scoped lang="less">
- .parser{
- width: 100%;
- ::v-deep .arco-btn-outline:hover, .arco-btn-outline, .arco-btn-outline[type='button']{
- color: #2a2a2b;
- border: 1px solid #2a2a2b;
- }
- .button{
- //color: #2a2a2b!important;
- }
+.parser{
+ width: 100%;
+ ::v-deep .arco-btn-outline:hover, .arco-btn-outline, .arco-btn-outline[type='button']{
+ color: #2a2a2b;
+ border: 1px solid #2a2a2b;
}
- .groupMain {
- width: 100%;
- height: 500px;
- overflow: auto;
+ .button{
+ //color: #2a2a2b!important;
+ }
+}
+.groupMain{
+ width: 100%;
+ height: 500px;
+ overflow: auto;
+ display: flex;
+ justify-content: center;
+ .groupList{
display: flex;
- justify-content: center;
-
- .groupList {
- display: flex;
- padding: 24px;
- border-radius: 8px;
- //background: #eff8ff;
- border: 1px solid var(--color-neutral-3);
- margin-bottom: 20px;
+ padding: 24px;
+ border-radius: 8px;
+ //background: #eff8ff;
+ border: 1px solid #f0f0f0;
+ margin-bottom: 20px;
+ overflow: auto;
+ .groupList-content{
+ width: 700px;
+ //height: 100px;
overflow: auto;
-
- .groupList-content {
- width: 700px;
- //height: 100px;
- overflow: auto;
- box-sizing: border-box;
- margin: 0;
- padding: 0;
- color: var(--color-text-1);
- font-size: 14px;
- font-family: Inter;
- position: relative;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0, 0, 0, 0.88);
+ font-size: 14px;
+ font-family: Inter;
+ position: relative;
- }
- }
-
- .groupMain {
- width: 100%;
- height: 500px;
- overflow: auto;
- display: flex;
- justify-content: center;
-
- .groupList {
- display: flex;
- padding: 24px;
- border-radius: 8px;
- //background: #eff8ff;
- border: 1px solid #f0f0f0;
- margin-bottom: 20px;
- overflow: auto;
-
- .groupList-content {
- width: 700px;
- //height: 100px;
- overflow: auto;
- box-sizing: border-box;
- margin: 0;
- padding: 0;
- color: rgba(0, 0, 0, 0.88);
- font-size: 14px;
- font-family: Inter;
- position: relative;
- }
- }
}
}
-</style>
+}
+</style>
\ No newline at end of file
--
Gitblit v1.8.0