fix: bugs

This commit is contained in:
wangdan-fit2cloud 2025-06-26 21:13:43 +08:00
parent 530928af38
commit d90805acbb
16 changed files with 1991 additions and 69 deletions

View File

@ -0,0 +1,557 @@
import { Result } from '@/request/Result'
import { get, post, del, put, exportExcel, exportFile } from '@/request/index'
import type { Ref } from 'vue'
import type { KeyValue } from '@/api/type/common'
import type { pageRequest } from '@/api/type/common'
const prefix = '/system/resource/knowledge'
/**
*
* @param knowledge_id,
* param {
" name": "string",
}
*/
const getDocumentList: (knowledge_id: string, loading?: Ref<boolean>) => Promise<Result<any>> = (
knowledge_id,
loading,
) => {
return get(`${prefix}/${knowledge_id}/document`, undefined, loading)
}
/**
*
* @param knowledge_id,
* param {
" name": "string",
}
*/
const getDocumentPage: (
knowledge_id: string,
page: pageRequest,
param: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, page, param, loading) => {
return get(
`${prefix}/${knowledge_id}/document/${page.current_page}/${page.page_size}`,
param,
loading,
)
}
/**
*
* @param knowledge_id
*/
const getDocumentDetail: (
knowledge_id: string,
document_id: string,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, document_id, loading) => {
return get(`${prefix}/${knowledge_id}/document/${document_id}`, {}, loading)
}
/**
*
* @param
* knowledge_id, document_id,
* {
"name": "string",
"is_active": true,
"meta": {}
}
*/
const putDocument: (
knowledge_id: string,
document_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, document_id, data: any, loading) => {
return put(`${prefix}/${knowledge_id}/document/${document_id}`, data, undefined, loading)
}
/**
*
* @param knowledge_id, document_id,
*/
const delDocument: (
knowledge_id: string,
document_id: string,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (knowledge_id, document_id, loading) => {
return del(`${prefix}/${knowledge_id}/document/${document_id}`, loading)
}
/**
*
* @param knowledge_id,
*{
"id_list": [
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
],
"type": 0
}
*/
const putBatchCancelTask: (
knowledge_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (knowledge_id, data, loading) => {
return put(`${prefix}/${knowledge_id}/document/batch_cancel_task`, data, undefined, loading)
}
/**
*
* @param knowledge_id, document_id,
*/
const putCancelTask: (
knowledge_id: string,
document_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (knowledge_id, document_id, data, loading) => {
return put(
`${prefix}/${knowledge_id}/document/${document_id}/cancel_task`,
data,
undefined,
loading,
)
}
/**
*
* @param knowledge_id
*/
const getDownloadSourceFile: (knowledge_id: string, document_id: string) => Promise<Result<any>> = (
knowledge_id,
document_id,
) => {
return get(`${prefix}/${knowledge_id}/document/${document_id}/download_source_file`)
}
/**
*
* @param document_name
* @param knowledge_id id
* @param document_id id
* @param loading
* @returns
*/
const exportDocument: (
document_name: string,
knowledge_id: string,
document_id: string,
loading?: Ref<boolean>,
) => Promise<any> = (document_name, knowledge_id, document_id, loading) => {
return exportExcel(
document_name + '.xlsx',
`${prefix}/${knowledge_id}/document/${document_id}/export`,
{},
loading,
)
}
/**
*
* @param document_name
* @param knowledge_id id
* @param document_id id
* @param loading
* @returns
*/
const exportDocumentZip: (
document_name: string,
knowledge_id: string,
document_id: string,
loading?: Ref<boolean>,
) => Promise<any> = (document_name, knowledge_id, document_id, loading) => {
return exportFile(
document_name + '.zip',
`${prefix}/${knowledge_id}/document/${document_id}/export_zip`,
{},
loading,
)
}
/**
*
* @param
* knowledge_id, document_id,
* {
"state_list": [
"string"
]
}
*/
const putDocumentRefresh: (
knowledge_id: string,
document_id: string,
state_list: Array<string>,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, document_id, state_list, loading) => {
return put(
`${prefix}/${knowledge_id}/document/${document_id}/refresh`,
{ state_list },
undefined,
loading,
)
}
/**
* web站点类型
* @param
* knowledge_id, document_id,
*/
const putDocumentSync: (
knowledge_id: string,
document_id: string,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, document_id, loading) => {
return put(
`${prefix}/${knowledge_id}/document/${document_id}/sync`,
undefined,
undefined,
loading,
)
}
/**
*
* @param
{
"name": "string",
"paragraphs": [
{
"content": "string",
"title": "string",
"problem_list": [
{
"id": "string",
"content": "string"
}
],
"is_active": true
}
],
"source_file_id": string
}
*/
const putMulDocument: (
knowledge_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, data, loading) => {
return put(`${prefix}/${knowledge_id}/document/batch_create`, data, {}, loading, 1000 * 60 * 5)
}
/**
*
* @param knowledge_id,
* {
"id_list": [String]
}
*/
const delMulDocument: (
knowledge_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (knowledge_id, data, loading) => {
return del(
`${prefix}/${knowledge_id}/document/bach_delete`,
undefined,
{ id_list: data },
loading,
)
}
/**
*
* @param knowledge_id,
{
"document_id_list": [
"string"
],
"model_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"prompt": "string",
"state_list": [
"string"
]
}
*/
const putBatchGenerateRelated: (
knowledge_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (knowledge_id, data, loading) => {
return put(`${prefix}/${knowledge_id}/document/batch_generate_related`, data, undefined, loading)
}
/**
*
* @param knowledge_id id
* @param data
* {id_list:[],hit_handling_method:'directly_return|optimization',directly_return_similarity}
* @param loading
* @returns
*/
const putBatchEditHitHandling: (
knowledge_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (knowledge_id, data, loading) => {
return put(`${prefix}/${knowledge_id}/document/batch_hit_handling`, data, undefined, loading)
}
/**
*
* @param knowledge_id id
* @param data
{
"id_list": [
"string"
],
"state_list": [
"string"
]
}
* @param loading
* @returns
*/
const putBatchRefresh: (
knowledge_id: string,
data: any,
stateList: Array<string>,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (knowledge_id, data, stateList, loading) => {
return put(
`${prefix}/${knowledge_id}/document/batch_refresh`,
{ id_list: data, state_list: stateList },
undefined,
loading,
)
}
/**
*
* @param knowledge_id,
*/
const putMulSyncDocument: (
knowledge_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (knowledge_id, data, loading) => {
return put(`${prefix}/${knowledge_id}/document/batch_sync`, { id_list: data }, undefined, loading)
}
/**
*
* @param knowledge_id,target_knowledge_id,
*/
const putMigrateMulDocument: (
knowledge_id: string,
target_knowledge_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (knowledge_id, target_knowledge_id, data, loading) => {
return put(
`${prefix}/${knowledge_id}/document/migrate/${target_knowledge_id}`,
data,
undefined,
loading,
)
}
/**
* QA文档
* @param
* file
}
*/
const postQADocument: (
knowledge_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, data, loading) => {
return post(`${prefix}/${knowledge_id}/document/qa`, data, undefined, loading)
}
/**
*
* @param file:file,limit:number,patterns:array,with_filter:boolean
*/
const postSplitDocument: (knowledge_id: string, data: any) => Promise<Result<any>> = (
knowledge_id,
data,
) => {
return post(
`${prefix}/${knowledge_id}/document/split`,
data,
undefined,
undefined,
1000 * 60 * 60,
)
}
/**
*
* @param loading
* @returns
*/
const listSplitPattern: (
knowledge_id: string,
loading?: Ref<boolean>,
) => Promise<Result<Array<KeyValue<string, string>>>> = (knowledge_id, loading) => {
return get(`${prefix}/${knowledge_id}/document/split_pattern`, {}, loading)
}
/**
*
* @param
* file
*/
const postTableDocument: (
knowledge_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, data, loading) => {
return post(`${prefix}/${knowledge_id}/document/table`, data, undefined, loading)
}
/**
* QA模版
* @param fileName,type,
*/
const exportQATemplate: (fileName: string, type: string, loading?: Ref<boolean>) => void = (
fileName,
type,
loading,
) => {
return exportExcel(fileName, `${prefix}/document/template/export`, { type }, loading)
}
/**
* table模版
* @param fileName,type,
*/
const exportTableTemplate: (fileName: string, type: string, loading?: Ref<boolean>) => void = (
fileName,
type,
loading,
) => {
return exportExcel(fileName, `${prefix}/document/table_template/export`, { type }, loading)
}
/**
* Web站点文档
* @param
* {
"source_url_list": [
"string"
],
"selector": "string"
}
}
*/
const postWebDocument: (
knowledge_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, data, loading) => {
return post(`${prefix}/${knowledge_id}/document/web`, data, undefined, loading)
}
/**
*
* @param
* {
"source_url_list": [
"string"
],
"selector": "string"
}
}
*/
const getLarkDocumentList: (
knowledge_id: string,
folder_token: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, folder_token, data, loading) => {
return post(`${prefix}/lark/${knowledge_id}/${folder_token}/doc_list`, data, undefined, loading)
}
/**
*
*/
const putLarkDocumentSync: (
knowledge_id: string,
document_id: string,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, document_id, loading) => {
return put(
`${prefix}/lark/${knowledge_id}/document/${document_id}/sync`,
undefined,
undefined,
loading,
)
}
/**
*
*/
const putMulLarkSyncDocument: (
knowledge_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (knowledge_id, data, loading) => {
return put(`${prefix}/lark/${knowledge_id}/_batch`, { id_list: data }, undefined, loading)
}
/**
*
*/
const importLarkDocument: (
knowledge_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<Array<any>>> = (knowledge_id, data, loading) => {
return post(`${prefix}/lark/${knowledge_id}/import`, data, null, loading)
}
export default {
getDocumentList,
getDocumentPage,
getDocumentDetail,
putDocument,
delDocument,
putBatchCancelTask,
putCancelTask,
getDownloadSourceFile,
exportDocument,
exportDocumentZip,
putDocumentRefresh,
putDocumentSync,
putMulDocument,
delMulDocument,
putBatchGenerateRelated,
putBatchEditHitHandling,
putBatchRefresh,
putMulSyncDocument,
putMigrateMulDocument,
postQADocument,
postSplitDocument,
listSplitPattern,
postTableDocument,
postWebDocument,
exportQATemplate,
exportTableTemplate,
getLarkDocumentList,
putLarkDocumentSync,
putMulLarkSyncDocument,
importLarkDocument,
}

View File

@ -0,0 +1,272 @@
import { Result } from '@/request/Result'
import { get, post, del, put, exportFile, exportExcel } from '@/request/index'
import { type Ref } from 'vue'
import type { pageRequest } from '@/api/type/common'
import type { knowledgeData } from '@/api/type/knowledge'
const prefix = '/system/resource/knowledge'
/**
*
* @param
* param {
"folder_id": "string",
"name": "string",
"tool_type": "string",
desc: string,
}
*/
const getKnowledgeList: (param?: any, loading?: Ref<boolean>) => Promise<Result<any>> = (
param,
loading,
) => {
return get(`${prefix}`, param, loading)
}
/**
*
* @param
* param {
"folder_id": "string",
"name": "string",
"tool_type": "string",
desc: string,
}
*/
const getKnowledgeListPage: (
page: pageRequest,
param?: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (page, param, loading) => {
return get(`${prefix}/${page.current_page}/${page.page_size}`, param, loading)
}
/**
*
* @param knowledge_id
*/
const getKnowledgeDetail: (knowledge_id: string, loading?: Ref<boolean>) => Promise<Result<any>> = (
knowledge_id,
loading,
) => {
return get(`${prefix}/${knowledge_id}`, undefined, loading)
}
/**
*
* @param
* knowledge_id
* {
"name": "string",
"desc": true
}
*/
const putKnowledge: (
knowledge_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, data, loading) => {
return put(`${prefix}/${knowledge_id}`, data, undefined, loading)
}
/**
*
* @param knowledge_id
*/
const delKnowledge: (knowledge_id: String, loading?: Ref<boolean>) => Promise<Result<boolean>> = (
knowledge_id,
loading,
) => {
return del(`${prefix}/${knowledge_id}`, undefined, {}, loading)
}
/**
*
* @param knowledge_id
*/
const putReEmbeddingKnowledge: (
knowledge_id: string,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, loading) => {
return put(`${prefix}/${knowledge_id}/embedding`, undefined, undefined, loading)
}
/**
*
* @param knowledge_name
* @param knowledge_id id
* @returns
*/
const exportKnowledge: (
knowledge_name: string,
knowledge_id: string,
loading?: Ref<boolean>,
) => Promise<any> = (knowledge_name, knowledge_id, loading) => {
return exportExcel(
knowledge_name + '.xlsx',
`${prefix}/${knowledge_id}/export`,
undefined,
loading,
)
}
/**
*Zip知识库
* @param knowledge_name
* @param knowledge_id id
* @param loading
* @returns
*/
const exportZipKnowledge: (
knowledge_name: string,
knowledge_id: string,
loading?: Ref<boolean>,
) => Promise<any> = (knowledge_name, knowledge_id, loading) => {
return exportFile(
knowledge_name + '.zip',
`${prefix}/${knowledge_id}/export_zip`,
undefined,
loading,
)
}
/**
*
* @param knowledge_id id
* @param data
* @param loading
* @returns
*/
const putGenerateRelated: (
knowledge_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<Array<any>>> = (knowledge_id, data, loading) => {
return put(`${prefix}/${knowledge_id}/generate_related`, data, null, loading)
}
/**
*
* @param knowledge_id
* @param loading
* @query { query_text: string, top_number: number, similarity: number }
* @returns
*/
const putKnowledgeHitTest: (
knowledge_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<Array<any>>> = (knowledge_id, data, loading) => {
return put(`${prefix}/${knowledge_id}/hit_test`, undefined, data, loading)
}
/**
*
* @param knowledge_id
* @query sync_type // 同步类型->replace:替换同步,complete:完整同步
*/
const putSyncWebKnowledge: (
knowledge_id: string,
sync_type: string,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, sync_type, loading) => {
return put(`${prefix}/${knowledge_id}/sync`, undefined, { sync_type }, loading)
}
/**
*
* @param
* {
"name": "string",
"folder_id": "string",
"desc": "string",
"embedding": "string"
}
*/
const postKnowledge: (data: knowledgeData, loading?: Ref<boolean>) => Promise<Result<any>> = (
data,
loading,
) => {
return post(`${prefix}/base`, data, undefined, loading, 1000 * 60 * 5)
}
/**
* 使
* @param application_id
* @param loading
* @query { query_text: string, top_number: number, similarity: number }
* @returns
*/
const getKnowledgeEmdeddingModel: (
knowledge_id: string,
loading?: Ref<boolean>,
) => Promise<Result<Array<any>>> = (knowledge_id, loading) => {
return get(`${prefix}/${knowledge_id}/emdedding_model`, loading)
}
/**
* 使
* @param application_id
* @param loading
* @query { query_text: string, top_number: number, similarity: number }
* @returns
*/
const getKnowledgeModel: (loading?: Ref<boolean>) => Promise<Result<Array<any>>> = (loading) => {
return get(`${prefix}/model`, loading)
}
/**
* Web知识库
* @param
* {
"name": "string",
"folder_id": "string",
"desc": "string",
"embedding": "string",
"source_url": "string",
"selector": "string"
}
*/
const postWebKnowledge: (data: any, loading?: Ref<boolean>) => Promise<Result<any>> = (
data,
loading,
) => {
return post(`${prefix}/web`, data, undefined, loading)
}
// 创建飞书知识库
const postLarkKnowledge: (data: any, loading?: Ref<boolean>) => Promise<Result<Array<any>>> = (
data,
loading,
) => {
return post(`${prefix}/lark/save`, data, null, loading)
}
const putLarkKnowledge: (
knowledge_id: string,
data: any,
loading?: Ref<boolean>
) => Promise<Result<any>> = (knowledge_id, data, loading) => {
return put(`${prefix}/lark/${knowledge_id}`, data, undefined, loading)
}
export default {
getKnowledgeList,
getKnowledgeListPage,
getKnowledgeDetail,
putKnowledge,
delKnowledge,
putReEmbeddingKnowledge,
exportKnowledge,
exportZipKnowledge,
putGenerateRelated,
putKnowledgeHitTest,
putSyncWebKnowledge,
postKnowledge,
getKnowledgeModel,
postWebKnowledge,
postLarkKnowledge,
putLarkKnowledge
} as {
[key: string]: any
}

View File

@ -0,0 +1,155 @@
import { Result } from '@/request/Result'
import { get, post, del, put } from '@/request/index'
import { type Ref } from 'vue'
import type {
ListModelRequest,
Model,
CreateModelRequest,
EditModelRequest,
} from '@/api/type/model'
import type { FormField } from '@/components/dynamics-form/type'
const prefix = '/system/resource'
/**
*
* @params name, model_type, model_name
*/
const getModelList: (
data?: ListModelRequest,
loading?: Ref<boolean>,
) => Promise<Result<Array<Model>>> = (data, loading) => {
return get(`${prefix}/model`, data, loading)
}
/**
*
* @params name, model_type, model_name
*/
const getSelectModelList: (
data?: ListModelRequest,
loading?: Ref<boolean>,
) => Promise<Result<Array<Model>>> = (data, loading) => {
return get(`${prefix}/model_list`, data, loading).then((ok) => {
return {
...ok,
data: [
...ok.data.shared_model.map((m: any) => {
return { ...m, type: 'share' }
}),
...ok.data.model.map((m: any) => {
return { ...m, type: 'workspace' }
}),
],
}
})
}
/**
*
* @param model_id id
* @param loading
* @returns
*/
const getModelParamsForm: (
model_id: string,
loading?: Ref<boolean>,
) => Promise<Result<Array<FormField>>> = (model_id, loading) => {
return get(`${prefix}/model/${model_id}/model_params_form`, {}, loading)
}
/**
*
* @param request
* @param loading
* @returns
*/
const createModel: (
request: CreateModelRequest,
loading?: Ref<boolean>,
) => Promise<Result<Model>> = (request, loading) => {
return post(`${prefix}/model`, request, {}, loading)
}
/**
*
* @param request
* @param loading
* @returns
*/
const updateModel: (
model_id: string,
request: EditModelRequest,
loading?: Ref<boolean>,
) => Promise<Result<Model>> = (model_id, request, loading) => {
return put(`${prefix}/model/${model_id}`, request, {}, loading)
}
/**
*
* @param request
* @param loading
* @returns
*/
const updateModelParamsForm: (
model_id: string,
request: any[],
loading?: Ref<boolean>,
) => Promise<Result<Model>> = (model_id, request, loading) => {
return put(`${prefix}/model/${model_id}/model_params_form`, request, {}, loading)
}
/**
* id
* @param model_id id
* @param loading
* @returns
*/
const getModelById: (model_id: string, loading?: Ref<boolean>) => Promise<Result<Model>> = (
model_id,
loading,
) => {
return get(`${prefix}/model/${model_id}`, {}, loading)
}
/**
* id
* @param model_id id
* @param loading
* @returns
*/
const getModelMetaById: (model_id: string, loading?: Ref<boolean>) => Promise<Result<Model>> = (
model_id,
loading,
) => {
return get(`${prefix}/model/${model_id}/meta`, {}, loading)
}
/**
*
* @param model_id id
* @param loading
* @returns
*/
const pauseDownload: (model_id: string, loading?: Ref<boolean>) => Promise<Result<boolean>> = (
model_id,
loading,
) => {
return put(`${prefix}/model/${model_id}/pause_download`, undefined, {}, loading)
}
const deleteModel: (model_id: string, loading?: Ref<boolean>) => Promise<Result<boolean>> = (
model_id,
loading,
) => {
return del(`${prefix}/model/${model_id}`, undefined, {}, loading)
}
export default {
getModelList,
createModel,
updateModel,
deleteModel,
getModelById,
getModelMetaById,
pauseDownload,
getModelParamsForm,
updateModelParamsForm,
getSelectModelList,
}

View File

@ -0,0 +1,291 @@
import { Result } from '@/request/Result'
import { get, post, del, put } from '@/request/index'
import type { pageRequest } from '@/api/type/common'
import type { Ref } from 'vue'
const prefix = '/system/resource/knowledge'
/**
*
* @param
* knowledge_id, document_id
* {
"content": "string",
"title": "string",
"is_active": true,
"problem_list": [
{
"content": "string"
}
]
}
*/
const postParagraph: (
knowledge_id: string,
document_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, document_id, data, loading) => {
return post(
`${prefix}/${knowledge_id}/document/${document_id}/paragraph`,
data,
undefined,
loading,
)
}
/**
*
* @param knowledge_id document_id
* param {
"title": "string",
"content": "string",
}
*/
const getParagraphPage: (
knowledge_id: string,
document_id: string,
page: pageRequest,
param: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, document_id, page, param, loading) => {
return get(
`${prefix}/${knowledge_id}/document/${document_id}/paragraph/${page.current_page}/${page.page_size}`,
param,
loading,
)
}
/**
*
* @param
* knowledge_id, document_id, paragraph_id
* {
"content": "string",
"title": "string",
"is_active": true,
"problem_list": [
{
"content": "string"
}
]
}
*/
const putParagraph: (
knowledge_id: string,
document_id: string,
paragraph_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, document_id, paragraph_id, data, loading) => {
return put(
`${prefix}/${knowledge_id}/document/${document_id}/paragraph/${paragraph_id}`,
data,
undefined,
loading,
)
}
/**
*
* @param knowledge_id, document_id, paragraph_id
*/
const delParagraph: (
knowledge_id: string,
document_id: string,
paragraph_id: string,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (knowledge_id, document_id, paragraph_id, loading) => {
return del(
`${prefix}/${knowledge_id}/document/${document_id}/paragraph/${paragraph_id}`,
undefined,
{},
loading,
)
}
/**
*
* @param knowledge_iddocument_idparagraph_id
*/
const getParagraphProblem: (
knowledge_id: string,
document_id: string,
paragraph_id: string,
) => Promise<Result<any>> = (knowledge_id, document_id, paragraph_id: string) => {
return get(`${prefix}/${knowledge_id}/document/${document_id}/paragraph/${paragraph_id}/problem`)
}
/**
*
* @param
* knowledge_id, document_id, paragraph_id
* {
content": "string"
}
*/
const postParagraphProblem: (
knowledge_id: string,
document_id: string,
paragraph_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, document_id, paragraph_id, data: any, loading) => {
return post(
`${prefix}/${knowledge_id}/document/${document_id}/paragraph/${paragraph_id}/problem`,
data,
{},
loading,
)
}
/**
*
* @param knowledge_id id
* @param document_id id
* @param loading
* @query data {
* paragraph_id id new_position
* }
*/
const putAdjustPosition: (
knowledge_id: string,
document_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, document_id, data, loading) => {
return put(
`${prefix}/${knowledge_id}/document/${document_id}/paragraph/adjust_position`,
{},
data,
loading,
)
}
/**
*
* @param knowledge_id id
* @param document_id id
* @param loading
* @query data {
* paragraph_id id problem_id id
* }
*/
const putAssociationProblem: (
knowledge_id: string,
document_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, document_id, data, loading) => {
return put(
`${prefix}/${knowledge_id}/document/${document_id}/paragraph/association`,
{},
data,
loading,
)
}
/**
*
* @param knowledge_id, document_id
*/
const putMulParagraph: (
knowledge_id: string,
document_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (knowledge_id, document_id, data, loading) => {
return put(
`${prefix}/${knowledge_id}/document/${document_id}/paragraph/batch_delete`,
{ id_list: data },
undefined,
loading,
)
}
/**
*
* @param knowledge_id, document_id
* {
"paragraph_id_list": [
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
],
"model_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"prompt": "string",
"document_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
*/
const putBatchGenerateRelated: (
knowledge_id: string,
document_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (knowledge_id, document_id, data, loading) => {
return put(
`${prefix}/${knowledge_id}/document/${document_id}/paragraph/batch_generate_related`,
data,
undefined,
loading,
)
}
/**
*
* @param knowledge_id,target_knowledge_id,
*/
const putMigrateMulParagraph: (
knowledge_id: string,
document_id: string,
target_knowledge_id: string,
target_document_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (
knowledge_id,
document_id,
target_knowledge_id,
target_document_id,
data,
loading,
) => {
return put(
`${prefix}/${knowledge_id}/document/${document_id}/paragraph/migrate/knowledge/${target_knowledge_id}/document/${target_document_id}`,
data,
undefined,
loading,
)
}
/**
*
* @param knowledge_id, document_id,
* @query data {
* paragraph_id id problem_id id
* }
*/
const putDisassociationProblem: (
knowledge_id: string,
document_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (knowledge_id, document_id, data, loading) => {
return put(
`${prefix}/${knowledge_id}/document/${document_id}/paragraph/unassociation`,
{},
data,
loading,
)
}
export default {
postParagraph,
getParagraphPage,
putParagraph,
delParagraph,
getParagraphProblem,
postParagraphProblem,
putAssociationProblem,
putMulParagraph,
putBatchGenerateRelated,
putMigrateMulParagraph,
putDisassociationProblem,
}

View File

@ -0,0 +1,121 @@
import { Result } from '@/request/Result'
import { get, post, del, put } from '@/request/index'
import type { Ref } from 'vue'
import type { pageRequest } from '@/api/type/common'
const prefix = '/system/resource/knowledge'
/**
*
* @param knowledge_id
* data: array[string]
*/
const postProblems: (
knowledge_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, data, loading) => {
return post(`${prefix}/${knowledge_id}/problem`, data, undefined, loading)
}
/**
*
* @param knowledge_id,
* query {
"content": "string",
}
*/
const getProblemsPage: (
knowledge_id: string,
page: pageRequest,
param: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, page, param, loading) => {
return get(
`${prefix}/${knowledge_id}/problem/${page.current_page}/${page.page_size}`,
param,
loading,
)
}
/**
*
* @param
* knowledge_id, problem_id,
* {
"content": "string",
}
*/
const putProblems: (
knowledge_id: string,
problem_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, problem_id, data: any, loading) => {
return put(`${prefix}/${knowledge_id}/problem/${problem_id}`, data, undefined, loading)
}
/**
*
* @param knowledge_id, problem_id,
*/
const delProblems: (
knowledge_id: string,
problem_id: string,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (knowledge_id, problem_id, loading) => {
return del(`${prefix}/${knowledge_id}/problem/${problem_id}`, loading)
}
/**
*
* @param
* knowledge_id, problem_id,
*/
const getDetailProblems: (
knowledge_id: string,
problem_id: string,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (knowledge_id, problem_id, loading) => {
return get(`${prefix}/${knowledge_id}/problem/${problem_id}/paragraph`, undefined, loading)
}
/**
*
* @param knowledge_id,
* {
"problem_id_list": "Array",
"paragraph_list": "Array",
}
*/
const putMulAssociationProblem: (
knowledge_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (knowledge_id, data, loading) => {
return put(`${prefix}/${knowledge_id}/problem/batch_association`, data, undefined, loading)
}
/**
*
* @param knowledge_id,
* data: array[string]
*/
const putMulProblem: (
knowledge_id: string,
data: any,
loading?: Ref<boolean>,
) => Promise<Result<boolean>> = (knowledge_id, data, loading) => {
return put(`${prefix}/${knowledge_id}/problem/batch_delete`, data, undefined, loading)
}
export default {
postProblems,
getProblemsPage,
putProblems,
delProblems,
getDetailProblems,
putMulAssociationProblem,
putMulProblem,
}

View File

@ -1,3 +1,4 @@
export enum ToolType {
CUSTOM = 'common.custom',
INTERNAL = 'views.tool.toolStore.internal',
}

View File

@ -59,10 +59,7 @@ const systemRouter = {
permission: [
new ComplexPermission(
[RoleConst.WORKSPACE_MANAGE, RoleConst.ADMIN],
[
PermissionConst.WORKSPACE_WORKSPACE_READ,
PermissionConst.WORKSPACE_READ,
],
[PermissionConst.WORKSPACE_WORKSPACE_READ, PermissionConst.WORKSPACE_READ],
[EditionConst.IS_EE],
'OR',
),
@ -82,6 +79,17 @@ const systemRouter = {
parentName: 'system',
},
children: [
{
path: '/system/resource-management/knowledge',
name: 'KnowledgeResourceIndex',
meta: {
title: 'views.knowledge.title',
activeMenu: '/system',
parentPath: '/system',
parentName: 'system',
},
component: () => import('@/views/system-resource-management/KnowledgeResourceIndex.vue'),
},
{
path: '/system/resource-management/tool',
name: 'ToolResourceIndex',
@ -93,6 +101,17 @@ const systemRouter = {
},
component: () => import('@/views/system-resource-management/ToolResourceIndex.vue'),
},
{
path: '/system/resource-management/model',
name: 'ModelResourceIndex',
meta: {
title: 'views.model.title',
activeMenu: '/system',
parentPath: '/system',
parentName: 'system',
},
component: () => import('@/views/system-resource-management/ModelResourceIndex.vue'),
},
],
},
{

View File

@ -288,7 +288,7 @@ const dayOptions = [
},
{
value: 'other',
label: t('common.other'),
label: t('common.custom'),
},
]

View File

@ -332,7 +332,7 @@ const dayOptions = [
},
{
value: 'other',
label: t('common.other'),
label: t('common.custom'),
},
]
const daterangeValue = ref('')

View File

@ -5,7 +5,7 @@
</template>
<template #search>
<div class="flex">
<div class="flex-between complex-search">
<div class="complex-search">
<el-select
class="complex-search__left"
v-model="search_type"

View File

@ -17,7 +17,7 @@
>
<template #search>
<div class="flex">
<div class="flex-between complex-search">
<div class="complex-search">
<el-select
class="complex-search__left"
v-model="search_type"

View File

@ -0,0 +1,225 @@
<template>
<div class="p-16-24">
<el-breadcrumb separator-icon="ArrowRight">
<el-breadcrumb-item>{{ t('views.system.resource_management.label') }}</el-breadcrumb-item>
<el-breadcrumb-item>
<h5 class="ml-4 color-text-primary">{{ t('views.knowledge.title') }}</h5>
</el-breadcrumb-item>
</el-breadcrumb>
<el-card class="mt-16">
<div class="flex-between mb-16">
<div class="complex-search">
<el-select
class="complex-search__left"
v-model="search_type"
style="width: 120px"
@change="search_type_change"
>
<el-option :label="$t('common.creator')" value="create_user" />
<el-option :label="$t('common.name')" value="name" />
</el-select>
<el-input
v-if="search_type === 'name'"
v-model="search_form.name"
@change="getList"
:placeholder="$t('common.searchBar.placeholder')"
style="width: 220px"
clearable
/>
<el-select
v-else-if="search_type === 'create_user'"
v-model="search_form.create_user"
@change="getList"
clearable
style="width: 220px"
>
<el-option v-for="u in user_options" :key="u.id" :value="u.id" :label="u.username" />
</el-select>
</div>
</div>
<app-table
:data="knowledgeList"
:pagination-config="paginationConfig"
@sizeChange="getList"
@changePage="getList"
>
<!-- <el-table-column type="selection" width="55" /> -->
<el-table-column width="220" :label="$t('common.name')">
<template #default="scope">
<div class="table-name flex align-center">
<el-icon size="24" class="mr-8">
<el-avatar
v-if="isAppIcon(scope.row?.icon)"
shape="square"
:size="24"
style="background: none"
class="mr-8"
>
<img :src="scope.row?.icon" alt="" />
</el-avatar>
<el-avatar v-else class="avatar-green" shape="square" :size="24">
<img src="@/assets/node/icon_tool.svg" style="width: 58%" alt="" />
</el-avatar>
</el-icon>
{{ scope.row.name }}
</div>
</template>
</el-table-column>
<el-table-column prop="tool_type" :label="$t('views.application.form.appType.label')">
<template #default="scope">
{{ $t(ToolType[scope.row.tool_type as keyof typeof ToolType]) }}
</template>
</el-table-column>
<el-table-column :label="$t('common.status.label')" width="120">
<template #default="scope">
<div class="flex align-center">
<AppIcon
:iconName="scope.row.is_active ? 'app-close_colorful' : 'app-succeed'"
></AppIcon>
{{ $t(scope.row.is_active ? 'views.tool.enabled' : 'common.status.disable') }}
</div>
</template>
</el-table-column>
<el-table-column
v-if="user.isEE()"
width="150"
prop="workspace_name"
:label="$t('views.workspace.title')"
show-overflow-tooltip
>
<template #header>
<div>
<span>{{ $t('views.workspace.title') }}</span>
<el-popover :width="200" trigger="click" :visible="workspaceVisible">
<template #reference>
<el-button
style="margin-top: -2px"
:type="workspaceArr && workspaceArr.length > 0 ? 'primary' : ''"
link
@click="workspaceVisible = !workspaceVisible"
>
<el-icon>
<Filter />
</el-icon>
</el-button>
</template>
<div class="filter">
<div class="form-item mb-16">
<div @click.stop>
<el-scrollbar height="300" style="margin: 0 0 0 10px">
<el-checkbox-group
v-model="workspaceArr"
style="display: flex; flex-direction: column"
>
<el-checkbox
v-for="item in workspaceOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-checkbox-group>
</el-scrollbar>
</div>
</div>
</div>
<div class="text-right">
<el-button size="small" @click="filterWorkspaceChange('clear')"
>{{ $t('common.clear') }}
</el-button>
<el-button type="primary" @click="filterWorkspaceChange" size="small"
>{{ $t('common.confirm') }}
</el-button>
</div>
</el-popover>
</div>
</template>
</el-table-column>
<el-table-column prop="nick_name" :label="$t('common.creator')" show-overflow-tooltip />
<el-table-column :label="$t('views.document.table.updateTime')" width="180">
<template #default="{ row }">
{{ datetimeFormat(row.update_time) }}
</template>
</el-table-column>
<el-table-column :label="$t('common.createTime')" width="180">
<template #default="{ row }">
{{ datetimeFormat(row.create_time) }}
</template>
</el-table-column>
</app-table>
</el-card>
</div>
</template>
<script lang="ts" setup>
import { onMounted, ref, reactive, computed } from 'vue'
import { cloneDeep, get } from 'lodash'
import KnowledgeResourceApi from '@/api/system-resource-management/knowledge'
import { t } from '@/locales'
import { isAppIcon } from '@/utils/common'
import useStore from '@/stores'
import WorkspaceApi from '@/api/workspace/workspace.ts'
import { datetimeFormat } from '@/utils/time'
const { user } = useStore()
const search_type = ref('name')
const search_form = ref<any>({
name: '',
create_user: '',
})
const user_options = ref<any[]>([])
const loading = ref(false)
const changeStateloading = ref(false)
const knowledgeList = ref<any[]>([])
const paginationConfig = reactive({
current_page: 1,
page_size: 30,
total: 0,
})
const workspaceOptions = ref<any[]>([])
const workspaceVisible = ref(false)
const workspaceArr = ref<any[]>([])
function filterWorkspaceChange(val: string) {
if (val === 'clear') {
workspaceArr.value = []
}
getList()
workspaceVisible.value = false
}
async function getWorkspaceList() {
if (user.isEE()) {
const res = await WorkspaceApi.getSystemWorkspaceList(loading)
workspaceOptions.value = res.data.map((item: any) => ({
label: item.name,
value: item.id,
}))
}
}
const search_type_change = () => {
search_form.value = { name: '', create_user: '' }
}
function getList() {
const params = {
[search_type.value]: search_form.value[search_type.value],
}
KnowledgeResourceApi.getKnowledgeListPage(paginationConfig, params, loading).then((res: any) => {
paginationConfig.total = res.data?.total
knowledgeList.value = res.data?.records
})
}
onMounted(() => {
getWorkspaceList()
getList()
})
</script>
<style lang="scss" scoped>
.resource-manage_tool {
}
</style>

View File

@ -0,0 +1,241 @@
<template>
<div class="p-16-24">
<el-breadcrumb separator-icon="ArrowRight">
<el-breadcrumb-item>{{ t('views.system.resource_management.label') }}</el-breadcrumb-item>
<el-breadcrumb-item>
<h5 class="ml-4 color-text-primary">{{ t('views.model.title') }}</h5>
</el-breadcrumb-item>
</el-breadcrumb>
<el-card class="mt-16">
<div class="flex-between mb-16">
<div class="complex-search">
<el-select
class="complex-search__left"
v-model="search_type"
style="width: 120px"
@change="search_type_change"
>
<el-option :label="$t('common.creator')" value="create_user" />
<el-option :label="$t('views.model.modelForm.model_type.label')" value="model_type" />
<el-option :label="$t('views.model.modelForm.modeName.label')" value="name" />
</el-select>
<el-input
v-if="search_type === 'name'"
v-model="model_search_form.name"
@change="list_model"
:placeholder="$t('common.searchBar.placeholder')"
style="width: 220px"
clearable
/>
<el-select
v-else-if="search_type === 'create_user'"
v-model="model_search_form.create_user"
@change="list_model"
clearable
style="width: 220px"
>
<el-option v-for="u in user_options" :key="u.id" :value="u.id" :label="u.username" />
</el-select>
<el-select
v-else-if="search_type === 'model_type'"
v-model="model_search_form.model_type"
clearable
@change="list_model"
style="width: 220px"
>
<template v-for="item in modelTypeList" :key="item.value">
<el-option :label="item.text" :value="item.value" />
</template>
</el-select>
</div>
</div>
<app-table
:data="model_list"
:pagination-config="paginationConfig"
>
<!-- <el-table-column type="selection" width="55" /> -->
<el-table-column width="220" :label="$t('common.name')">
<template #default="scope">
<div class="table-name flex align-center">
<el-icon size="24" class="mr-8">
<el-avatar
v-if="isAppIcon(scope.row?.icon)"
shape="square"
:size="24"
style="background: none"
class="mr-8"
>
<img :src="scope.row?.icon" alt="" />
</el-avatar>
<el-avatar v-else class="avatar-green" shape="square" :size="24">
<img src="@/assets/node/icon_tool.svg" style="width: 58%" alt="" />
</el-avatar>
</el-icon>
{{ scope.row.name }}
</div>
</template>
</el-table-column>
<el-table-column prop="tool_type" :label="$t('views.application.form.appType.label')">
<template #default="scope">
{{ $t(ToolType[scope.row.tool_type as keyof typeof ToolType]) }}
</template>
</el-table-column>
<el-table-column :label="$t('common.status.label')" width="120">
<template #default="scope">
<div class="flex align-center">
<AppIcon
:iconName="scope.row.is_active ? 'app-close_colorful' : 'app-succeed'"
></AppIcon>
{{ $t(scope.row.is_active ? 'views.tool.enabled' : 'common.status.disable') }}
</div>
</template>
</el-table-column>
<el-table-column
v-if="user.isEE()"
width="150"
prop="workspace_name"
:label="$t('views.workspace.title')"
show-overflow-tooltip
>
<template #header>
<div>
<span>{{ $t('views.workspace.title') }}</span>
<el-popover :width="200" trigger="click" :visible="workspaceVisible">
<template #reference>
<el-button
style="margin-top: -2px"
:type="workspaceArr && workspaceArr.length > 0 ? 'primary' : ''"
link
@click="workspaceVisible = !workspaceVisible"
>
<el-icon>
<Filter />
</el-icon>
</el-button>
</template>
<div class="filter">
<div class="form-item mb-16">
<div @click.stop>
<el-scrollbar height="300" style="margin: 0 0 0 10px">
<el-checkbox-group
v-model="workspaceArr"
style="display: flex; flex-direction: column"
>
<el-checkbox
v-for="item in workspaceOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-checkbox-group>
</el-scrollbar>
</div>
</div>
</div>
<div class="text-right">
<el-button size="small" @click="filterWorkspaceChange('clear')"
>{{ $t('common.clear') }}
</el-button>
<el-button type="primary" @click="filterWorkspaceChange" size="small"
>{{ $t('common.confirm') }}
</el-button>
</div>
</el-popover>
</div>
</template>
</el-table-column>
<el-table-column prop="nick_name" :label="$t('common.creator')" show-overflow-tooltip />
<el-table-column :label="$t('views.document.table.updateTime')" width="180">
<template #default="{ row }">
{{ datetimeFormat(row.update_time) }}
</template>
</el-table-column>
<el-table-column :label="$t('common.createTime')" width="180">
<template #default="{ row }">
{{ datetimeFormat(row.create_time) }}
</template>
</el-table-column>
</app-table>
</el-card>
</div>
</template>
<script lang="ts" setup>
import { onMounted, ref, reactive, computed } from 'vue'
import { cloneDeep, get } from 'lodash'
import type { Provider, Model } from '@/api/type/model'
import ModelResourceApi from '@/api/system-resource-management/model'
import { modelTypeList, allObj } from '@/views/model/component/data'
import { t } from '@/locales'
import { isAppIcon } from '@/utils/common'
import { ToolType } from '@/enums/tool'
import useStore from '@/stores'
import WorkspaceApi from '@/api/workspace/workspace.ts'
import { datetimeFormat } from '@/utils/time'
const { user } = useStore()
const search_type = ref('name')
const model_search_form = ref<{
name: string
create_user: string
model_type: string
}>({
name: '',
create_user: '',
model_type: '',
})
const loading = ref(false)
const changeStateloading = ref(false)
const model_list = ref<Array<Model>>([])
const user_options = ref<any[]>([])
const paginationConfig = reactive({
current_page: 1,
page_size: 30,
total: 0,
})
const workspaceOptions = ref<any[]>([])
const workspaceVisible = ref(false)
const workspaceArr = ref<any[]>([])
function filterWorkspaceChange(val: string) {
if (val === 'clear') {
workspaceArr.value = []
}
list_model()
workspaceVisible.value = false
}
async function getWorkspaceList() {
if (user.isEE()) {
const res = await WorkspaceApi.getSystemWorkspaceList(loading)
workspaceOptions.value = res.data.map((item: any) => ({
label: item.name,
value: item.id,
}))
}
}
const search_type_change = () => {
model_search_form.value = { name: '', create_user: '', model_type: '' }
}
const list_model = () => {
ModelResourceApi.getModelList({ ...model_search_form.value }, loading).then((ok: any) => {
model_list.value = ok.data
const v = model_list.value.map((m) => ({ id: m.user_id, username: m.username }))
if (user_options.value.length === 0) {
user_options.value = Array.from(new Map(v.map((item) => [item.id, item])).values())
}
})
}
onMounted(() => {
getWorkspaceList()
list_model()
})
</script>
<style lang="scss" scoped></style>

View File

@ -45,7 +45,7 @@
@sizeChange="getList"
@changePage="getList"
>
<el-table-column type="selection" width="55" />
<!-- <el-table-column type="selection" width="55" /> -->
<el-table-column width="220" :label="$t('common.name')">
<template #default="scope">
<div class="table-name flex align-center">
@ -67,11 +67,12 @@
</div>
</template>
</el-table-column>
<el-table-column
prop="tool_type"
:label="$t('views.application.form.appType.label')"
width="120"
/>
<el-table-column prop="tool_type" :label="$t('views.application.form.appType.label')">
<template #default="scope">
{{ $t(ToolType[scope.row.tool_type as keyof typeof ToolType]) }}
</template>
</el-table-column>
<el-table-column :label="$t('common.status.label')" width="120">
<template #default="scope">
<div class="flex align-center">
@ -82,57 +83,71 @@
</div>
</template>
</el-table-column>
<!-- <el-table-column width="100" property="workspace_name">
<template #header>
<div class="flex align-center">
{{ $t('views.role.member.workspace') }}
<el-popover placement="bottom">
<template #reference
><el-icon style="margin-left: 4px; cursor: pointer" size="16">
<AppIcon iconName="app-filter_outlined"></AppIcon> </el-icon
></template>
<div>
<el-checkbox
v-model="checkAll"
:indeterminate="isIndeterminate"
@change="handleCheckAllChange"
>
{{ $t('views.document.feishu.allCheck') }}
</el-checkbox>
<el-checkbox-group
v-model="checkedWorkspaces"
@change="handleCheckedWorkspacesChange"
>
<el-checkbox
v-for="workspace in workspaces"
:key="workspace"
:label="workspace"
:value="workspace"
>
{{ workspace }}
</el-checkbox>
</el-checkbox-group>
</div>
</el-popover>
</div>
</template>
</el-table-column> -->
<el-table-column prop="nick_name" :label="$t('common.creator')" />
<!-- <el-table-column
prop="update_time"
sortable
width="180"
:formatter="formatter"
:label="$t('views.document.table.updateTime')"
/>
<el-table-column
width="180"
prop="create_time"
sortable
:formatter="formatter"
:label="$t('common.createTime')"
/> -->
v-if="user.isEE()"
width="150"
prop="workspace_name"
:label="$t('views.workspace.title')"
show-overflow-tooltip
>
<template #header>
<div>
<span>{{ $t('views.workspace.title') }}</span>
<el-popover :width="200" trigger="click" :visible="workspaceVisible">
<template #reference>
<el-button
style="margin-top: -2px"
:type="workspaceArr && workspaceArr.length > 0 ? 'primary' : ''"
link
@click="workspaceVisible = !workspaceVisible"
>
<el-icon>
<Filter />
</el-icon>
</el-button>
</template>
<div class="filter">
<div class="form-item mb-16">
<div @click.stop>
<el-scrollbar height="300" style="margin: 0 0 0 10px">
<el-checkbox-group
v-model="workspaceArr"
style="display: flex; flex-direction: column"
>
<el-checkbox
v-for="item in workspaceOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-checkbox-group>
</el-scrollbar>
</div>
</div>
</div>
<div class="text-right">
<el-button size="small" @click="filterWorkspaceChange('clear')"
>{{ $t('common.clear') }}
</el-button>
<el-button type="primary" @click="filterWorkspaceChange" size="small"
>{{ $t('common.confirm') }}
</el-button>
</div>
</el-popover>
</div>
</template>
</el-table-column>
<el-table-column prop="nick_name" :label="$t('common.creator')" show-overflow-tooltip />
<el-table-column :label="$t('views.document.table.updateTime')" width="180">
<template #default="{ row }">
{{ datetimeFormat(row.update_time) }}
</template>
</el-table-column>
<el-table-column :label="$t('common.createTime')" width="180">
<template #default="{ row }">
{{ datetimeFormat(row.create_time) }}
</template>
</el-table-column>
</app-table>
</el-card>
</div>
@ -141,9 +156,15 @@
<script lang="ts" setup>
import { onMounted, ref, reactive, computed } from 'vue'
import { cloneDeep, get } from 'lodash'
import ToolApi from '@/api/system-resource-management/tool'
import ToolResourceApi from '@/api/system-resource-management/tool'
import { t } from '@/locales'
import { isAppIcon } from '@/utils/common'
import { ToolType } from '@/enums/tool'
import useStore from '@/stores'
import WorkspaceApi from '@/api/workspace/workspace.ts'
import { datetimeFormat } from '@/utils/time'
const { user } = useStore()
const search_type = ref('name')
const search_form = ref<any>({
@ -160,7 +181,25 @@ const paginationConfig = reactive({
page_size: 30,
total: 0,
})
const workspaceOptions = ref<any[]>([])
const workspaceVisible = ref(false)
const workspaceArr = ref<any[]>([])
function filterWorkspaceChange(val: string) {
if (val === 'clear') {
workspaceArr.value = []
}
getList()
workspaceVisible.value = false
}
async function getWorkspaceList() {
if (user.isEE()) {
const res = await WorkspaceApi.getSystemWorkspaceList(loading)
workspaceOptions.value = res.data.map((item: any) => ({
label: item.name,
value: item.id,
}))
}
}
const search_type_change = () => {
search_form.value = { name: '', create_user: '' }
}
@ -169,13 +208,14 @@ function getList() {
const params = {
[search_type.value]: search_form.value[search_type.value],
}
ToolApi.getToolListPage(paginationConfig, params, loading).then((res) => {
ToolResourceApi.getToolListPage(paginationConfig, params, loading).then((res) => {
paginationConfig.total = res.data?.total
toolList.value = res.data?.records
})
}
onMounted(() => {
getWorkspaceList()
getList()
})
</script>

View File

@ -297,7 +297,7 @@ const dayOptions = [
},
{
value: 'other',
label: t('common.other')
label: t('common.custom')
}
]
const filterOptions = [

View File

@ -374,7 +374,7 @@ export const toolNode = {
}
}
}
export const toolNode = {
export const toolLibNode = {
type: WorkflowType.ToolLib,
text: t('views.applicationWorkflow.nodes.toolNode.text'),
label: t('views.applicationWorkflow.nodes.toolNode.label'),