|  |  |  | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <a-tabs default-active-key="1"> | 
|---|
|  |  |  | <a-tab-pane key="1"> | 
|---|
|  |  |  | <template #title> <icon-calendar /> 解析方法 </template> | 
|---|
|  |  |  | <template #title> | 
|---|
|  |  |  | <icon-calendar /> | 
|---|
|  |  |  | 解析方法 | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | <div style="width: 100%"> | 
|---|
|  |  |  | <div style="display: flex; align-items: center"> | 
|---|
|  |  |  | <div> 解析方法: </div> | 
|---|
|  |  |  | <div> 解析方法:</div> | 
|---|
|  |  |  | <div style="margin-left: 10px"> | 
|---|
|  |  |  | <a-select v-model="form.parser_id" placeholder="请选择"> | 
|---|
|  |  |  | <a-option | 
|---|
|  |  |  | 
|---|
|  |  |  | auto-label-width | 
|---|
|  |  |  | @submit="handleSubmit" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <a-divider style="margin-top: 10px" /> | 
|---|
|  |  |  | <a-divider style="margin-top: 10px" | 
|---|
|  |  |  | v-if=" | 
|---|
|  |  |  | form.parser_id === 'naive'" /> | 
|---|
|  |  |  | <a-form-item | 
|---|
|  |  |  | field="slider" | 
|---|
|  |  |  | label="块token数" | 
|---|
|  |  |  | :rules="[ | 
|---|
|  |  |  | { type: 'number', min: 1, message: 'slider is min than 1' }, | 
|---|
|  |  |  | ]" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | label="块Token数" | 
|---|
|  |  |  | v-if=" | 
|---|
|  |  |  | form.parser_id === 'naive'"> | 
|---|
|  |  |  | <a-slider | 
|---|
|  |  |  | v-model="form.chunk_token_num" | 
|---|
|  |  |  | :max="1000" | 
|---|
|  |  |  | :min="0" | 
|---|
|  |  |  | :max="2048" | 
|---|
|  |  |  | show-input | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </a-form-item> | 
|---|
|  |  |  | <a-divider style="margin-top: 10px" /> | 
|---|
|  |  |  | <a-form-item field="raptor" label="使用召回增强RAPTOR策略"> | 
|---|
|  |  |  | <a-divider style="margin-top: 10px" | 
|---|
|  |  |  | v-if="form.parser_id === 'naive' || | 
|---|
|  |  |  | form.parser_id === 'qa'|| | 
|---|
|  |  |  | form.parser_id === 'manual' || | 
|---|
|  |  |  | form.parser_id === 'laws' || | 
|---|
|  |  |  | form.parser_id === 'book'" /> | 
|---|
|  |  |  | <a-form-item field="raptor" label="使用召回增强RAPTOR策略" | 
|---|
|  |  |  | v-if="form.parser_id === 'naive' || | 
|---|
|  |  |  | form.parser_id === 'qa'|| | 
|---|
|  |  |  | form.parser_id === 'manual' || | 
|---|
|  |  |  | form.parser_id === 'laws' || | 
|---|
|  |  |  | form.parser_id === 'book'"> | 
|---|
|  |  |  | <a-space direction="vertical" size="large"> | 
|---|
|  |  |  | <a-switch | 
|---|
|  |  |  | v-model="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="最大token数" | 
|---|
|  |  |  | :rules="[ | 
|---|
|  |  |  | { type: 'number', min: 5, message: 'slider is min than 5' }, | 
|---|
|  |  |  | ]" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <a-form-item field="slider" label="最大token数"> | 
|---|
|  |  |  | <a-slider | 
|---|
|  |  |  | v-model="form.max_token" | 
|---|
|  |  |  | :min="1" | 
|---|
|  |  |  | :max="1000" | 
|---|
|  |  |  | :min="0" | 
|---|
|  |  |  | :max="2048" | 
|---|
|  |  |  | 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 field="slider" label="阈值"> | 
|---|
|  |  |  | <a-slider | 
|---|
|  |  |  | v-model="form.threshold" | 
|---|
|  |  |  | :step="0.01" | 
|---|
|  |  |  | :min="0" | 
|---|
|  |  |  | :max="1" | 
|---|
|  |  |  | 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 field="slider" label="最大聚类数"> | 
|---|
|  |  |  | <a-slider | 
|---|
|  |  |  | v-model="form.max_cluster" | 
|---|
|  |  |  | :min="1" | 
|---|
|  |  |  | :max="1024" | 
|---|
|  |  |  | show-input | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </a-form-item> | 
|---|
|  |  |  | <a-form-item | 
|---|
|  |  |  | field="slider" | 
|---|
|  |  |  | 
|---|
|  |  |  | style="margin-left: 10px" | 
|---|
|  |  |  | type="primary" | 
|---|
|  |  |  | html-type="submit" | 
|---|
|  |  |  | >确定</a-button | 
|---|
|  |  |  | >确定 | 
|---|
|  |  |  | </a-button | 
|---|
|  |  |  | > | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </a-form-item> | 
|---|
|  |  |  | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </a-tab-pane> | 
|---|
|  |  |  | <a-tab-pane key="2"> | 
|---|
|  |  |  | <template #title> <icon-clock-circle /> 创建解析块 </template> | 
|---|
|  |  |  | <template #title> | 
|---|
|  |  |  | <icon-clock-circle /> | 
|---|
|  |  |  | 创建解析块 | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | <div class="details"> | 
|---|
|  |  |  | <div class="details-header"> | 
|---|
|  |  |  | <div | 
|---|
|  |  |  | 
|---|
|  |  |  | type="outline" | 
|---|
|  |  |  | class="button" | 
|---|
|  |  |  | style="margin-right: 10px" | 
|---|
|  |  |  | >批量<icon-down style="margin-left: 4px" | 
|---|
|  |  |  | /></a-button> | 
|---|
|  |  |  | >批量 | 
|---|
|  |  |  | <icon-down style="margin-left: 4px" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </a-button> | 
|---|
|  |  |  | <template #content> | 
|---|
|  |  |  | <a-space direction="vertical"> | 
|---|
|  |  |  | <a-checkbox | 
|---|
|  |  |  | 
|---|
|  |  |  | </a-space> | 
|---|
|  |  |  | <a-divider style="margin: 10px 0" /> | 
|---|
|  |  |  | <p> | 
|---|
|  |  |  | <a-button type="text" class="button" style="color: #2a2a2b"> | 
|---|
|  |  |  | <a-button | 
|---|
|  |  |  | type="text" | 
|---|
|  |  |  | class="button" | 
|---|
|  |  |  | style="color: #2a2a2b" | 
|---|
|  |  |  | @click="addBlock(1)" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template #icon> | 
|---|
|  |  |  | <icon-check-circle /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | 
|---|
|  |  |  | </a-button> | 
|---|
|  |  |  | </p> | 
|---|
|  |  |  | <p> | 
|---|
|  |  |  | <a-button type="text" class="button" style="color: #2a2a2b"> | 
|---|
|  |  |  | <a-button | 
|---|
|  |  |  | type="text" | 
|---|
|  |  |  | class="button" | 
|---|
|  |  |  | style="color: #2a2a2b" | 
|---|
|  |  |  | @click="addBlock(0)" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template #icon> | 
|---|
|  |  |  | <icon-close-circle /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | 
|---|
|  |  |  | </p> | 
|---|
|  |  |  | <a-divider style="margin: 10px 0" /> | 
|---|
|  |  |  | <p> | 
|---|
|  |  |  | <a-button type="text" class="button" style="color: #2a2a2b"> | 
|---|
|  |  |  | <a-button | 
|---|
|  |  |  | type="text" | 
|---|
|  |  |  | class="button" | 
|---|
|  |  |  | style="color: #2a2a2b" | 
|---|
|  |  |  | @click="addBlock(3)" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template #icon> | 
|---|
|  |  |  | <icon-delete /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | 
|---|
|  |  |  | </p> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </a-popover> | 
|---|
|  |  |  | <a-space | 
|---|
|  |  |  | direction="vertical" | 
|---|
|  |  |  | size="large" | 
|---|
|  |  |  | style="margin-right: 10px" | 
|---|
|  |  |  | class="space_search" | 
|---|
|  |  |  | v-show="!isBtn" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <a-input-search | 
|---|
|  |  |  | :style="{ width: '220px' }" | 
|---|
|  |  |  | v-model="form.keywords" | 
|---|
|  |  |  | @input="getList()" | 
|---|
|  |  |  | allow-clear | 
|---|
|  |  |  | @clear.stop="getList()" | 
|---|
|  |  |  | placeholder="搜索" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </a-space> | 
|---|
|  |  |  | <a-button | 
|---|
|  |  |  | type="outline" | 
|---|
|  |  |  | class="button" | 
|---|
|  |  |  | style="margin-right: 10px" | 
|---|
|  |  |  | v-show="isBtn" | 
|---|
|  |  |  | @click.stop="isBtn = !isBtn" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template #icon> | 
|---|
|  |  |  | <icon-search /> | 
|---|
|  |  |  | 
|---|
|  |  |  | type="outline" | 
|---|
|  |  |  | class="button" | 
|---|
|  |  |  | style="margin-right: 10px" | 
|---|
|  |  |  | ><icon-sort | 
|---|
|  |  |  | /></a-button> | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <icon-sort | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </a-button> | 
|---|
|  |  |  | <template #content> | 
|---|
|  |  |  | <a-radio-group | 
|---|
|  |  |  | v-model="available_int" | 
|---|
|  |  |  | 
|---|
|  |  |  | size="large" | 
|---|
|  |  |  | @change="onChangeavailable" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <a-radio value="">所有</a-radio> | 
|---|
|  |  |  | <a-radio value="1">启用</a-radio> | 
|---|
|  |  |  | <a-radio value="0">禁用</a-radio> | 
|---|
|  |  |  | <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> | 
|---|
|  |  |  | <addDetails | 
|---|
|  |  |  | :item="item" | 
|---|
|  |  |  | @canplaythrough="canplaythrough" | 
|---|
|  |  |  | ></addDetails> | 
|---|
|  |  |  | </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> | 
|---|
|  |  |  | <a-spin :loading="isLoading" :tip="tip"> | 
|---|
|  |  |  | <a-checkbox-group v-model="data" @change="handleChange"> | 
|---|
|  |  |  | <div | 
|---|
|  |  |  | class="groupList-content" | 
|---|
|  |  |  | @click="groupListContentClick('1')" | 
|---|
|  |  |  | @dblclick="contentClick(1)" | 
|---|
|  |  |  | class="groupList" | 
|---|
|  |  |  | :class="{ | 
|---|
|  |  |  | groupActive: keyBg == index, | 
|---|
|  |  |  | groupNoActive: keyBg != index, | 
|---|
|  |  |  | }" | 
|---|
|  |  |  | v-for="(item, index) in listData" | 
|---|
|  |  |  | :key="index" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | 而 stable version 是最新稳定版,经过充分测试和验证,bug 较少, | 
|---|
|  |  |  | 适合用于生产环境。其版本号通常为双数,如 1.26。legacy versions | 
|---|
|  |  |  | 则是之前发布的稳定版,对于需要 | 
|---|
|  |  |  | 特定旧版本的兼容性或安全性支持的用户有用,但一般不 | 
|---|
|  |  |  | 推荐用于新项目,除非有特殊需求。在实际使用中,如果追求最新功能 | 
|---|
|  |  |  | 且愿意面对可能存在的一些不稳定因素,可以尝试使用主线版本进行测试和研究;如果是用于生产环境 | 
|---|
|  |  |  | <a-checkbox :value="item.chunk_id"></a-checkbox> | 
|---|
|  |  |  | <div | 
|---|
|  |  |  | class="groupList-content emphaRed" | 
|---|
|  |  |  | @click="groupListContentClick(index)" | 
|---|
|  |  |  | @dblclick="contentClick(item)" | 
|---|
|  |  |  | v-html="item.content_with_weight" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="groupList-right"> | 
|---|
|  |  |  | <a-switch | 
|---|
|  |  |  | v-model="item.available_int" | 
|---|
|  |  |  | :checked-value="1" | 
|---|
|  |  |  | :unchecked-value="0" | 
|---|
|  |  |  | @change="handleChangeStatus(item)" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="groupList-right"> | 
|---|
|  |  |  | <a-switch | 
|---|
|  |  |  | v-model="switchType" | 
|---|
|  |  |  | checked-value="1" | 
|---|
|  |  |  | unchecked-value="0" | 
|---|
|  |  |  | @change="handleChangeStatus()" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </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 是最新稳定版,经过充分测试和验证,bug 较少, | 
|---|
|  |  |  | 适合用于生产环境。其版本号通常为双数,如 1.26。legacy versions | 
|---|
|  |  |  | 则是之前发布的稳定版,对于需要 | 
|---|
|  |  |  | 特定旧版本的兼容性或安全性支持的用户有用,但一般不 | 
|---|
|  |  |  | 推荐用于新项目,除非有特殊需求。在实际使用中,如果追求最新功能 | 
|---|
|  |  |  | 且愿意面对可能存在的一些不稳定因素,可以尝试使用主线版本进行测试和研究;如果是用于生产环境 | 
|---|
|  |  |  | </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 是最新稳定版,经过充分测试和验证,bug 较少, | 
|---|
|  |  |  | 适合用于生产环境。其版本号通常为双数,如 1.26。legacy 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> | 
|---|
|  |  |  | </a-checkbox-group> | 
|---|
|  |  |  | </a-checkbox-group> | 
|---|
|  |  |  | </a-spin> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <eidtDetails ref="eidtDil"></eidtDetails> | 
|---|
|  |  |  | <eidtDetails | 
|---|
|  |  |  | ref="eidtDil" | 
|---|
|  |  |  | :item="eidtDilinfo" | 
|---|
|  |  |  | v-model:eidtDilVisible="eidtDilVisible" | 
|---|
|  |  |  | @canplaythrough="canplaythrough" | 
|---|
|  |  |  | ></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, | 
|---|
|  |  |  | watch | 
|---|
|  |  |  | } from "vue"; | 
|---|
|  |  |  | import { Message } from "@arco-design/web-vue"; | 
|---|
|  |  |  | import { | 
|---|
|  |  |  | kbdocumentchangeparser, | 
|---|
|  |  |  | achunkCreate, | 
|---|
|  |  |  | queryChunkList, | 
|---|
|  |  |  | chunkSwitch, | 
|---|
|  |  |  | chunkRm, achunkGet | 
|---|
|  |  |  | } from "@/api/kbList"; | 
|---|
|  |  |  | import addDetails from "@/views/dmx/knowledgeLib/addDetails.vue"; | 
|---|
|  |  |  | import eidtDetails from "@/views/dmx/knowledgeLib/eidtDetails.vue"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const props = defineProps(['kbtenantInfo', 'item', 'kbdetail']); | 
|---|
|  |  |  | // const emit =  defineEmits(['upTabdateItem']) | 
|---|
|  |  |  | const visible = ref(false); | 
|---|
|  |  |  | const loading = ref(false); | 
|---|
|  |  |  | const radio = ref("1"); | 
|---|
|  |  |  | const keyBg = ref(""); | 
|---|
|  |  |  | const eidtDil = ref(); | 
|---|
|  |  |  | const eidtDilVisible = ref(false); | 
|---|
|  |  |  | const eidtDilinfo = reactive({}); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | let threshold = computed(() => { | 
|---|
|  |  |  | return form.threshold / 100; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | const props = defineProps(["kbtenantInfo", "item", "kbdetail"]); | 
|---|
|  |  |  | // const emit =  defineEmits(['upTabdateItem']) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const kbtenantInfo = props.kbtenantInfo; | 
|---|
|  |  |  | let threshold = computed(() => { | 
|---|
|  |  |  | return form.threshold / 100; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | let parser_ids = kbtenantInfo.parser_ids.split(',').map((item) => { | 
|---|
|  |  |  | const [value1, value2] = item.split(':'); | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | name: value2, | 
|---|
|  |  |  | value: value1, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | const kbtenantInfo = props.kbtenantInfo; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | function randomNumber() { | 
|---|
|  |  |  | // 生成一个介于min和max之间的随机整数(包含min和max) | 
|---|
|  |  |  | const min = 1; // 最小值 | 
|---|
|  |  |  | const max = 10000; // 最大值 | 
|---|
|  |  |  | form.random_seed = Math.floor(Math.random() * (max - min + 1)) + min; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 过滤解析方法 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const filterParserArr = [ | 
|---|
|  |  |  | 'naive', | 
|---|
|  |  |  | 'qa', | 
|---|
|  |  |  | 'resume', | 
|---|
|  |  |  | 'manual', | 
|---|
|  |  |  | 'book', | 
|---|
|  |  |  | 'laws', | 
|---|
|  |  |  | 'one', | 
|---|
|  |  |  | ] | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const isBtn = ref(true); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const closeSlelct = () => { | 
|---|
|  |  |  | window.addEventListener("click", (event) => { | 
|---|
|  |  |  | if (!event.target.closest(".space_search") && !isBtn.value) { | 
|---|
|  |  |  | isBtn.value = true; | 
|---|
|  |  |  | // form.keywords = ''; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | watch(isBtn, (val) => { | 
|---|
|  |  |  | if (!val) { | 
|---|
|  |  |  | closeSlelct(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const form = reactive({ | 
|---|
|  |  |  | parser_id: '', | 
|---|
|  |  |  | doc_id: props.item.id, | 
|---|
|  |  |  | max_token: 698, | 
|---|
|  |  |  | threshold: 0.3, | 
|---|
|  |  |  | max_cluster: 233, | 
|---|
|  |  |  | random_seed: 1500, | 
|---|
|  |  |  | chunk_token_num: 128, | 
|---|
|  |  |  | use_raptor: false, | 
|---|
|  |  |  | keywords: "", | 
|---|
|  |  |  | pages: {}, | 
|---|
|  |  |  | prompt: | 
|---|
|  |  |  | "请总结以下段落。 小心数字,不要编造。 段落如下:\n" + | 
|---|
|  |  |  | "      {cluster_content}\n" + | 
|---|
|  |  |  | "以上就是你需要总结的内容。" | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | const formRef = ref(null); | 
|---|
|  |  |  | const rules = { | 
|---|
|  |  |  | prompt: [ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | required: true, | 
|---|
|  |  |  | message: "提示词不允许为空" | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const listData = ref([]); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const formatter = (value) => { | 
|---|
|  |  |  | return value / 100; | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function randomNumber() { | 
|---|
|  |  |  | // 生成一个介于min和max之间的随机整数(包含min和max) | 
|---|
|  |  |  | const min = 1; // 最小值 | 
|---|
|  |  |  | const max = 10000; // 最大值 | 
|---|
|  |  |  | 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: [] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | if (data.code == 0) { | 
|---|
|  |  |  | Message.success("配置成功"); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | Message.error("配置失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | visible.value = false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const handleClick = () => { | 
|---|
|  |  |  | visible.value = true; | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | const handleCancel = () => { | 
|---|
|  |  |  | visible.value = false; | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const contentClick = async (item) => { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | const data = await achunkGet({ | 
|---|
|  |  |  | chunk_id: item.chunk_id | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | // console.log(data.data); | 
|---|
|  |  |  | Object.assign(eidtDilinfo, data.data); | 
|---|
|  |  |  | eidtDilVisible.value = true; | 
|---|
|  |  |  | } catch (error) { | 
|---|
|  |  |  | Message.error("获取失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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: [], | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | if (data.code == 0) { | 
|---|
|  |  |  | Message.success('配置成功'); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | const handleOpened = (el) => { | 
|---|
|  |  |  | // console.log('props',props.kbtenantInfo); | 
|---|
|  |  |  | console.log('props',props.item); | 
|---|
|  |  |  | // console.log('props',props.kbdetail); | 
|---|
|  |  |  | console.log(parser_ids, "parser_ids"); | 
|---|
|  |  |  | let parser_id = props.item.parser_id; | 
|---|
|  |  |  | parser_ids.forEach((item) => { | 
|---|
|  |  |  | if (item.name == parser_id) { | 
|---|
|  |  |  | form.parser_id = item.value; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // Object.assign(form,{ | 
|---|
|  |  |  | //   name: '',// 用户名 | 
|---|
|  |  |  | //   nameJoin: '',// 昵称 | 
|---|
|  |  |  | //   post: '',// 岗位 | 
|---|
|  |  |  | //   txt: '',// 备注 | 
|---|
|  |  |  | // }); | 
|---|
|  |  |  | // formRef.value.resetFields(); | 
|---|
|  |  |  | console.log(props.item.id); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | listData.value.forEach((item) => { | 
|---|
|  |  |  | data.value.push(item.chunk_id); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | checkedAll.value = false; | 
|---|
|  |  |  | data.value = []; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const handleChange = (values) => { | 
|---|
|  |  |  | data.value = values; | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //批量启用删除禁用 | 
|---|
|  |  |  | const addBlock = (type) => { | 
|---|
|  |  |  | if (data.value.length == 0) { | 
|---|
|  |  |  | Message.error("请选择要操作的数据"); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (type == 3) { | 
|---|
|  |  |  | deleteChunk(); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | let params = { | 
|---|
|  |  |  | chunk_ids: data.value, | 
|---|
|  |  |  | available_int: type, | 
|---|
|  |  |  | doc_id: props.item.id | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | chunkSwitch(params).then((res) => { | 
|---|
|  |  |  | if (res.code == 0) { | 
|---|
|  |  |  | Message.success("操作成功"); | 
|---|
|  |  |  | getList(); | 
|---|
|  |  |  | checkedAll.value = false; | 
|---|
|  |  |  | data.value = []; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | Message.error('配置失败'); | 
|---|
|  |  |  | Message.error("操作失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | visible.value = false; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const groupListContentClick = (value) => { | 
|---|
|  |  |  | keyBg.value = value; | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const onChangeavailable = () => { | 
|---|
|  |  |  | getList(); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const handleChangeStatus = (val) => { | 
|---|
|  |  |  | updateChunkStatus(val); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | const isLoading = ref(true); | 
|---|
|  |  |  | // 自定义加载提示文本 | 
|---|
|  |  |  | const tip = "加载中,请稍候..."; | 
|---|
|  |  |  | //获取列表 | 
|---|
|  |  |  | const getList = async () => { | 
|---|
|  |  |  | let params = { | 
|---|
|  |  |  | doc_id: props.item.id, | 
|---|
|  |  |  | keywords: form.keywords, | 
|---|
|  |  |  | page: 1, | 
|---|
|  |  |  | size: 10000 | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | if (available_int.value !== "") { | 
|---|
|  |  |  | params.available_int = available_int.value; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | await queryChunkList(params).then((res) => { | 
|---|
|  |  |  | if (res.code == 0) { | 
|---|
|  |  |  | listData.value = res.data.chunks; | 
|---|
|  |  |  | isLoading.value = false; | 
|---|
|  |  |  | listData.value = listData.value.map((item) => { | 
|---|
|  |  |  | item.available_int = parseInt(item.available_int); | 
|---|
|  |  |  | return item; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | //更新列表 | 
|---|
|  |  |  | const canplaythrough = () => { | 
|---|
|  |  |  | getList(); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const handleClick = () => { | 
|---|
|  |  |  | visible.value = true; | 
|---|
|  |  |  | //启用禁用 | 
|---|
|  |  |  | const updateChunkStatus = (val) => { | 
|---|
|  |  |  | let params = { | 
|---|
|  |  |  | chunk_ids: [val.chunk_id], | 
|---|
|  |  |  | available_int: val.available_int, | 
|---|
|  |  |  | doc_id: props.item.id | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | 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 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']; | 
|---|
|  |  |  | chunkSwitch(params).then((res) => { | 
|---|
|  |  |  | console.log(res); | 
|---|
|  |  |  | if (res.code == 0) { | 
|---|
|  |  |  | Message.success("更新成功"); | 
|---|
|  |  |  | getList(); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | checkedAll.value = false; | 
|---|
|  |  |  | data.value = []; | 
|---|
|  |  |  | Message.error("更新失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const handleChange = (values) => { | 
|---|
|  |  |  | if (values.length === 3) { | 
|---|
|  |  |  | checkedAll.value = true; | 
|---|
|  |  |  | indeterminate.value = false; | 
|---|
|  |  |  | } else if (values.length === 0) { | 
|---|
|  |  |  | checkedAll.value = false; | 
|---|
|  |  |  | indeterminate.value = false; | 
|---|
|  |  |  | //删除 | 
|---|
|  |  |  | const deleteChunk = () => { | 
|---|
|  |  |  | let params = { | 
|---|
|  |  |  | chunk_ids: data.value, | 
|---|
|  |  |  | doc_id: props.item.id | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | chunkRm(params).then((res) => { | 
|---|
|  |  |  | console.log(res); | 
|---|
|  |  |  | if (res.code == 0) { | 
|---|
|  |  |  | Message.success("删除成功"); | 
|---|
|  |  |  | getList(); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | checkedAll.value = false; | 
|---|
|  |  |  | indeterminate.value = true; | 
|---|
|  |  |  | Message.error("删除失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const groupListContentClick = (value) => { | 
|---|
|  |  |  | keyBg.value = value; | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | onBeforeMount(() => { | 
|---|
|  |  |  | getList(); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | onMounted(() => { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const onChangeavailable = () => { | 
|---|
|  |  |  | console.log(available_int.value); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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']{ | 
|---|
|  |  |  | .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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ::-webkit-scrollbar { | 
|---|
|  |  |  | display: none; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .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: #2a2a2b; | 
|---|
|  |  |  | border: 1px solid #2a2a2b; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .button{ | 
|---|
|  |  |  | //color: #2a2a2b!important; | 
|---|
|  |  |  | 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 var(--color-neutral-3); | 
|---|
|  |  |  | margin-bottom: 20px; | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | :deep(.emphaRed em) { | 
|---|
|  |  |  | color: red !important; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .groupActive { | 
|---|
|  |  |  | background: #eff8ff; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .groupNoActive { | 
|---|
|  |  |  | background: var(--color-bg-1); | 
|---|
|  |  |  | color: var(--color-text-1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </style> | 
|---|