Merge remote-tracking branch 'origin/v2' into v2
This commit is contained in:
commit
bd8424ae8b
@ -40,7 +40,8 @@ from knowledge.serializers.knowledge import KnowledgeSerializer, KnowledgeModelS
|
|||||||
from maxkb.conf import PROJECT_DIR
|
from maxkb.conf import PROJECT_DIR
|
||||||
from models_provider.models import Model
|
from models_provider.models import Model
|
||||||
from models_provider.tools import get_model_instance_by_model_workspace_id
|
from models_provider.tools import get_model_instance_by_model_workspace_id
|
||||||
from system_manage.models import WorkspaceUserResourcePermission
|
from system_manage.models import WorkspaceUserResourcePermission, AuthTargetType
|
||||||
|
from system_manage.serializers.user_resource_permission import UserResourcePermissionSerializer
|
||||||
from tools.models import Tool, ToolScope
|
from tools.models import Tool, ToolScope
|
||||||
from tools.serializers.tool import ToolModelSerializer
|
from tools.serializers.tool import ToolModelSerializer
|
||||||
from users.models import User
|
from users.models import User
|
||||||
@ -430,9 +431,15 @@ class ApplicationSerializer(serializers.Serializer):
|
|||||||
def insert(self, instance: Dict):
|
def insert(self, instance: Dict):
|
||||||
application_type = instance.get('type')
|
application_type = instance.get('type')
|
||||||
if 'WORK_FLOW' == application_type:
|
if 'WORK_FLOW' == application_type:
|
||||||
return self.insert_workflow(instance)
|
r = self.insert_workflow(instance)
|
||||||
else:
|
else:
|
||||||
return self.insert_simple(instance)
|
r = self.insert_simple(instance)
|
||||||
|
UserResourcePermissionSerializer(data={
|
||||||
|
'workspace_id': self.data.get('workspace_id'),
|
||||||
|
'user_id': self.data.get('user_id'),
|
||||||
|
'auth_target_type': AuthTargetType.APPLICATION.value
|
||||||
|
}).auth_resource(str(r.get('id')))
|
||||||
|
return r
|
||||||
|
|
||||||
def insert_workflow(self, instance: Dict):
|
def insert_workflow(self, instance: Dict):
|
||||||
self.is_valid(raise_exception=True)
|
self.is_valid(raise_exception=True)
|
||||||
|
|||||||
@ -21,7 +21,7 @@ from rest_framework import serializers
|
|||||||
from application.models import ApplicationKnowledgeMapping
|
from application.models import ApplicationKnowledgeMapping
|
||||||
from common.config.embedding_config import VectorStore
|
from common.config.embedding_config import VectorStore
|
||||||
from common.constants.cache_version import Cache_Version
|
from common.constants.cache_version import Cache_Version
|
||||||
from common.constants.permission_constants import ResourceAuthType, ResourcePermission
|
from common.constants.permission_constants import ResourceAuthType, ResourcePermission, ResourcePermissionRole
|
||||||
from common.database_model_manage.database_model_manage import DatabaseModelManage
|
from common.database_model_manage.database_model_manage import DatabaseModelManage
|
||||||
from common.db.search import native_search, get_dynamics_model, native_page_search
|
from common.db.search import native_search, get_dynamics_model, native_page_search
|
||||||
from common.db.sql_execute import select_list
|
from common.db.sql_execute import select_list
|
||||||
@ -42,6 +42,7 @@ from knowledge.task.sync import sync_web_knowledge, sync_replace_web_knowledge
|
|||||||
from maxkb.conf import PROJECT_DIR
|
from maxkb.conf import PROJECT_DIR
|
||||||
from models_provider.models import Model
|
from models_provider.models import Model
|
||||||
from system_manage.models import WorkspaceUserResourcePermission, AuthTargetType
|
from system_manage.models import WorkspaceUserResourcePermission, AuthTargetType
|
||||||
|
from system_manage.serializers.user_resource_permission import UserResourcePermissionSerializer
|
||||||
from users.serializers.user import is_workspace_manage
|
from users.serializers.user import is_workspace_manage
|
||||||
|
|
||||||
|
|
||||||
@ -553,21 +554,12 @@ class KnowledgeSerializer(serializers.Serializer):
|
|||||||
QuerySet(ProblemParagraphMapping).bulk_create(
|
QuerySet(ProblemParagraphMapping).bulk_create(
|
||||||
problem_paragraph_mapping_list
|
problem_paragraph_mapping_list
|
||||||
) if len(problem_paragraph_mapping_list) > 0 else None
|
) if len(problem_paragraph_mapping_list) > 0 else None
|
||||||
|
# 自动资源给授权当前用户
|
||||||
# 自动授权给创建者
|
UserResourcePermissionSerializer(data={
|
||||||
WorkspaceUserResourcePermission(
|
'workspace_id': self.data.get('workspace_id'),
|
||||||
target=knowledge_id,
|
'user_id': self.data.get('user_id'),
|
||||||
auth_target_type=AuthTargetType.KNOWLEDGE,
|
'auth_target_type': AuthTargetType.KNOWLEDGE.value
|
||||||
permission_list=[ResourcePermission.VIEW, ResourcePermission.MANAGE],
|
}).auth_resource(str(knowledge_id))
|
||||||
workspace_id=self.data.get('workspace_id'),
|
|
||||||
user_id=self.data.get('user_id'),
|
|
||||||
auth_type=ResourceAuthType.RESOURCE_PERMISSION_GROUP
|
|
||||||
).save()
|
|
||||||
# 刷新缓存
|
|
||||||
version = Cache_Version.PERMISSION_LIST.get_version()
|
|
||||||
key = Cache_Version.PERMISSION_LIST.get_key(user_id=self.data.get('user_id'))
|
|
||||||
cache.delete(key, version=version)
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
**KnowledgeModelSerializer(knowledge).data,
|
**KnowledgeModelSerializer(knowledge).data,
|
||||||
'user_id': self.data.get('user_id'),
|
'user_id': self.data.get('user_id'),
|
||||||
|
|||||||
@ -26,6 +26,7 @@ from models_provider.constants.model_provider_constants import ModelProvideConst
|
|||||||
from models_provider.models import Model, Status
|
from models_provider.models import Model, Status
|
||||||
from models_provider.tools import get_model_credential
|
from models_provider.tools import get_model_credential
|
||||||
from system_manage.models import WorkspaceUserResourcePermission, AuthTargetType
|
from system_manage.models import WorkspaceUserResourcePermission, AuthTargetType
|
||||||
|
from system_manage.serializers.user_resource_permission import UserResourcePermissionSerializer
|
||||||
from users.serializers.user import is_workspace_manage
|
from users.serializers.user import is_workspace_manage
|
||||||
|
|
||||||
|
|
||||||
@ -326,19 +327,11 @@ class ModelSerializer(serializers.Serializer):
|
|||||||
model = Model(**model_data)
|
model = Model(**model_data)
|
||||||
try:
|
try:
|
||||||
model.save()
|
model.save()
|
||||||
# 自动授权给创建者
|
UserResourcePermissionSerializer(data={
|
||||||
WorkspaceUserResourcePermission(
|
'workspace_id': self.data.get('workspace_id'),
|
||||||
target=model.id,
|
'user_id': self.data.get('user_id'),
|
||||||
auth_target_type=AuthTargetType.MODEL,
|
'auth_target_type': AuthTargetType.MODEL.value
|
||||||
permission_list=[ResourcePermission.VIEW, ResourcePermission.MANAGE],
|
}).auth_resource(str(model.id))
|
||||||
workspace_id=workspace_id,
|
|
||||||
user_id=self.data.get('user_id'),
|
|
||||||
auth_type=ResourceAuthType.RESOURCE_PERMISSION_GROUP
|
|
||||||
).save()
|
|
||||||
# 刷新缓存
|
|
||||||
version = Cache_Version.PERMISSION_LIST.get_version()
|
|
||||||
key = Cache_Version.PERMISSION_LIST.get_key(user_id=self.data.get('user_id'))
|
|
||||||
cache.delete(key, version=version)
|
|
||||||
except Exception as save_error:
|
except Exception as save_error:
|
||||||
# 可添加日志记录
|
# 可添加日志记录
|
||||||
raise AppApiException(500, _("Model saving failed")) from save_error
|
raise AppApiException(500, _("Model saving failed")) from save_error
|
||||||
|
|||||||
@ -29,6 +29,7 @@ from maxkb.conf import PROJECT_DIR
|
|||||||
from models_provider.models import Model
|
from models_provider.models import Model
|
||||||
from system_manage.models import WorkspaceUserResourcePermission, AuthTargetType
|
from system_manage.models import WorkspaceUserResourcePermission, AuthTargetType
|
||||||
from tools.models import Tool
|
from tools.models import Tool
|
||||||
|
from users.serializers.user import is_workspace_manage
|
||||||
|
|
||||||
|
|
||||||
class PermissionSerializer(serializers.Serializer):
|
class PermissionSerializer(serializers.Serializer):
|
||||||
@ -101,6 +102,33 @@ class UserResourcePermissionSerializer(serializers.Serializer):
|
|||||||
auth_target_type=self.data.get('auth_target_type'))
|
auth_target_type=self.data.get('auth_target_type'))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def auth_resource(self, resource_id: str):
|
||||||
|
self.is_valid(raise_exception=True)
|
||||||
|
workspace_manage = is_workspace_manage(self.data.get('user_id'), self.data.get('workspace_id'))
|
||||||
|
if not workspace_manage:
|
||||||
|
auth_target_type = self.data.get('auth_target_type')
|
||||||
|
workspace_id = self.data.get('workspace_id')
|
||||||
|
user_id = self.data.get('user_id')
|
||||||
|
wurp = QuerySet(WorkspaceUserResourcePermission).filter(auth_target_type=auth_target_type,
|
||||||
|
workspace_id=workspace_id).first()
|
||||||
|
auth_type = wurp.auth_type if wurp else ResourceAuthType.RESOURCE_PERMISSION_GROUP
|
||||||
|
# 自动授权给创建者
|
||||||
|
WorkspaceUserResourcePermission(
|
||||||
|
target=resource_id,
|
||||||
|
auth_target_type=auth_target_type,
|
||||||
|
permission_list=[ResourcePermission.VIEW,
|
||||||
|
ResourcePermission.MANAGE] if auth_type == ResourceAuthType.RESOURCE_PERMISSION_GROUP else [
|
||||||
|
ResourcePermissionRole.ROLE],
|
||||||
|
workspace_id=workspace_id,
|
||||||
|
user_id=user_id,
|
||||||
|
auth_type=auth_type
|
||||||
|
).save()
|
||||||
|
# 刷新缓存
|
||||||
|
version = Cache_Version.PERMISSION_LIST.get_version()
|
||||||
|
key = Cache_Version.PERMISSION_LIST.get_key(user_id=user_id)
|
||||||
|
cache.delete(key, version=version)
|
||||||
|
return True
|
||||||
|
|
||||||
def list(self, user, with_valid=True):
|
def list(self, user, with_valid=True):
|
||||||
if with_valid:
|
if with_valid:
|
||||||
self.is_valid(raise_exception=True)
|
self.is_valid(raise_exception=True)
|
||||||
|
|||||||
@ -29,6 +29,7 @@ from common.utils.tool_code import ToolExecutor
|
|||||||
from knowledge.models import File, FileSourceType
|
from knowledge.models import File, FileSourceType
|
||||||
from maxkb.const import CONFIG, PROJECT_DIR
|
from maxkb.const import CONFIG, PROJECT_DIR
|
||||||
from system_manage.models import AuthTargetType, WorkspaceUserResourcePermission
|
from system_manage.models import AuthTargetType, WorkspaceUserResourcePermission
|
||||||
|
from system_manage.serializers.user_resource_permission import UserResourcePermissionSerializer
|
||||||
from tools.models import Tool, ToolScope, ToolFolder, ToolType
|
from tools.models import Tool, ToolScope, ToolFolder, ToolType
|
||||||
from tools.serializers.tool_folder import ToolFolderFlatSerializer
|
from tools.serializers.tool_folder import ToolFolderFlatSerializer
|
||||||
from users.serializers.user import is_workspace_manage
|
from users.serializers.user import is_workspace_manage
|
||||||
@ -219,20 +220,11 @@ class ToolSerializer(serializers.Serializer):
|
|||||||
).save()
|
).save()
|
||||||
|
|
||||||
# 自动授权给创建者
|
# 自动授权给创建者
|
||||||
WorkspaceUserResourcePermission(
|
UserResourcePermissionSerializer(data={
|
||||||
target=tool_id,
|
'workspace_id': self.data.get('workspace_id'),
|
||||||
auth_target_type=AuthTargetType.TOOL,
|
'user_id': self.data.get('user_id'),
|
||||||
permission_list=[ResourcePermission.VIEW, ResourcePermission.MANAGE],
|
'auth_target_type': AuthTargetType.TOOL.value
|
||||||
workspace_id=self.data.get('workspace_id'),
|
}).auth_resource(str(tool_id))
|
||||||
user_id=self.data.get('user_id'),
|
|
||||||
auth_type=ResourceAuthType.RESOURCE_PERMISSION_GROUP
|
|
||||||
).save()
|
|
||||||
|
|
||||||
# 刷新缓存
|
|
||||||
version = Cache_Version.PERMISSION_LIST.get_version()
|
|
||||||
key = Cache_Version.PERMISSION_LIST.get_key(user_id=self.data.get('user_id'))
|
|
||||||
cache.delete(key, version=version)
|
|
||||||
|
|
||||||
return ToolSerializer.Operate(data={
|
return ToolSerializer.Operate(data={
|
||||||
'id': tool_id, 'workspace_id': self.data.get('workspace_id')
|
'id': tool_id, 'workspace_id': self.data.get('workspace_id')
|
||||||
}).one()
|
}).one()
|
||||||
|
|||||||
BIN
ui/src/assets/chat/user-login-bg.png
Normal file
BIN
ui/src/assets/chat/user-login-bg.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 652 KiB |
@ -11,6 +11,6 @@
|
|||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.login-warp {
|
.login-warp {
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
background: url('@/assets/chat/user-login-bg.jpg') no-repeat center;
|
background: url('@/assets/chat/user-login-bg.png') var(--app-layout-bg-color) no-repeat center;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -5,8 +5,9 @@ export default {
|
|||||||
addModel: 'Add Model',
|
addModel: 'Add Model',
|
||||||
|
|
||||||
delete: {
|
delete: {
|
||||||
confirmTitle: 'Delete Model',
|
confirmTitle: 'Delete Model:',
|
||||||
confirmMessage: 'Are you sure you want to delete the model:',
|
confirmMessage:
|
||||||
|
'Deleting the model will affect the resources currently using it. Please proceed with caution.',
|
||||||
},
|
},
|
||||||
tip: {
|
tip: {
|
||||||
createSuccessMessage: 'Model created successfully',
|
createSuccessMessage: 'Model created successfully',
|
||||||
|
|||||||
@ -1,7 +1,5 @@
|
|||||||
export default {
|
export default {
|
||||||
title: 'Tool',
|
title: 'Tool',
|
||||||
internalTitle: 'Internal Tool',
|
|
||||||
added: 'Added',
|
|
||||||
createTool: 'Create Tool',
|
createTool: 'Create Tool',
|
||||||
editTool: 'Edit Tool',
|
editTool: 'Edit Tool',
|
||||||
copyTool: 'Copy Tool',
|
copyTool: 'Copy Tool',
|
||||||
@ -16,7 +14,7 @@ export default {
|
|||||||
image: 'Image',
|
image: 'Image',
|
||||||
developer: 'Developer',
|
developer: 'Developer',
|
||||||
communication: 'Communication',
|
communication: 'Communication',
|
||||||
searchResult: '{count} search results for'
|
searchResult: '{count} search results for',
|
||||||
},
|
},
|
||||||
searchBar: {
|
searchBar: {
|
||||||
placeholder: 'Search by tool name',
|
placeholder: 'Search by tool name',
|
||||||
@ -38,6 +36,7 @@ export default {
|
|||||||
form: {
|
form: {
|
||||||
toolName: {
|
toolName: {
|
||||||
label: 'Name',
|
label: 'Name',
|
||||||
|
name: 'Tool Name',
|
||||||
placeholder: 'Please enter the tool name',
|
placeholder: 'Please enter the tool name',
|
||||||
requiredMessage: 'Please enter the tool name',
|
requiredMessage: 'Please enter the tool name',
|
||||||
},
|
},
|
||||||
|
|||||||
@ -4,8 +4,8 @@ export default {
|
|||||||
providerPlaceholder: '选择供应商',
|
providerPlaceholder: '选择供应商',
|
||||||
addModel: '添加模型',
|
addModel: '添加模型',
|
||||||
delete: {
|
delete: {
|
||||||
confirmTitle: '删除模型',
|
confirmTitle: '是否删除:',
|
||||||
confirmMessage: '是否删除模型:',
|
confirmMessage: '模型删除后将影响正在使用该模型的资源,请谨慎操作。',
|
||||||
},
|
},
|
||||||
tip: {
|
tip: {
|
||||||
createSuccessMessage: '创建模型成功',
|
createSuccessMessage: '创建模型成功',
|
||||||
|
|||||||
@ -14,9 +14,12 @@ export default {
|
|||||||
image: '图像',
|
image: '图像',
|
||||||
developer: '开发者',
|
developer: '开发者',
|
||||||
communication: '通信',
|
communication: '通信',
|
||||||
searchResult: '的搜索结果 {count} 个'
|
searchResult: '的搜索结果 {count} 个',
|
||||||
|
},
|
||||||
|
delete: {
|
||||||
|
confirmTitle: '是否刪除工具:',
|
||||||
|
confirmMessage: '删除后,引用了该工具的应用提问时会报错 ,请谨慎操作。',
|
||||||
},
|
},
|
||||||
enabled: '启用',
|
|
||||||
disabled: {
|
disabled: {
|
||||||
confirmTitle: '是否禁用工具:',
|
confirmTitle: '是否禁用工具:',
|
||||||
confirmMessage: '禁用后,引用了该工具的应用提问时会报错 ,请谨慎操作。',
|
confirmMessage: '禁用后,引用了该工具的应用提问时会报错 ,请谨慎操作。',
|
||||||
|
|||||||
@ -4,8 +4,8 @@ export default {
|
|||||||
providerPlaceholder: '選擇供應商',
|
providerPlaceholder: '選擇供應商',
|
||||||
addModel: '新增模型',
|
addModel: '新增模型',
|
||||||
delete: {
|
delete: {
|
||||||
confirmTitle: '刪除模型',
|
confirmTitle: '是否刪除: ',
|
||||||
confirmMessage: '是否刪除模型:',
|
confirmMessage: '模型刪除後將影響正在使用該模型的資源,請謹慎操作。',
|
||||||
},
|
},
|
||||||
tip: {
|
tip: {
|
||||||
createSuccessMessage: '創建模型成功',
|
createSuccessMessage: '創建模型成功',
|
||||||
|
|||||||
@ -1,7 +1,5 @@
|
|||||||
export default {
|
export default {
|
||||||
title: '工具',
|
title: '工具',
|
||||||
internalTitle: '內置工具',
|
|
||||||
added: '已新增',
|
|
||||||
createTool: '建立工具',
|
createTool: '建立工具',
|
||||||
editTool: '編輯工具',
|
editTool: '編輯工具',
|
||||||
copyTool: '複製工具',
|
copyTool: '複製工具',
|
||||||
@ -16,7 +14,7 @@ export default {
|
|||||||
image: '圖像',
|
image: '圖像',
|
||||||
developer: '開發者',
|
developer: '開發者',
|
||||||
communication: '通信',
|
communication: '通信',
|
||||||
searchResult: '的搜索結果 {count} 個'
|
searchResult: '的搜索結果 {count} 個',
|
||||||
},
|
},
|
||||||
searchBar: {
|
searchBar: {
|
||||||
placeholder: '按工具名稱搜尋',
|
placeholder: '按工具名稱搜尋',
|
||||||
@ -26,7 +24,7 @@ export default {
|
|||||||
},
|
},
|
||||||
delete: {
|
delete: {
|
||||||
confirmTitle: '是否刪除工具:',
|
confirmTitle: '是否刪除工具:',
|
||||||
confirmMessage: '刪除後,引用該工具的應用在查詢時會報錯,請謹慎操作。',
|
confirmMessage: '刪除後,引用該函數的應用在查詢時會報錯,請謹慎操作。',
|
||||||
},
|
},
|
||||||
disabled: {
|
disabled: {
|
||||||
confirmTitle: '是否停用工具:',
|
confirmTitle: '是否停用工具:',
|
||||||
@ -35,6 +33,7 @@ export default {
|
|||||||
form: {
|
form: {
|
||||||
toolName: {
|
toolName: {
|
||||||
label: '名稱',
|
label: '名稱',
|
||||||
|
name: '工具名稱',
|
||||||
placeholder: '請輸入工具名稱',
|
placeholder: '請輸入工具名稱',
|
||||||
requiredMessage: '請輸入工具名稱',
|
requiredMessage: '請輸入工具名稱',
|
||||||
},
|
},
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
$primary-color: #3370ff;
|
|
||||||
:root {
|
:root {
|
||||||
--app-base-px: 8px;
|
--app-base-px: 8px;
|
||||||
--app-layout-bg-color: #f5f6f7;
|
--app-layout-bg-color: #f5f6f7;
|
||||||
|
|||||||
@ -82,16 +82,17 @@
|
|||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import {ref, watch, reactive} from 'vue'
|
import { ref, watch, reactive } from 'vue'
|
||||||
import {useRouter, useRoute} from 'vue-router'
|
import { useRouter, useRoute } from 'vue-router'
|
||||||
import type {ApplicationFormType} from '@/api/type/application'
|
import type { ApplicationFormType } from '@/api/type/application'
|
||||||
import type {FormInstance, FormRules} from 'element-plus'
|
import type { FormInstance, FormRules } from 'element-plus'
|
||||||
import applicationApi from '@/api/application/application'
|
import applicationApi from '@/api/application/application'
|
||||||
import {MsgSuccess, MsgAlert} from '@/utils/message'
|
import { MsgSuccess, MsgAlert } from '@/utils/message'
|
||||||
import {isWorkFlow} from '@/utils/application'
|
import { isWorkFlow } from '@/utils/application'
|
||||||
import {baseNodes} from '@/workflow/common/data'
|
import { baseNodes } from '@/workflow/common/data'
|
||||||
import {t} from '@/locales'
|
import { t } from '@/locales'
|
||||||
|
import useStore from '@/stores'
|
||||||
|
const { user } = useStore()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const emit = defineEmits(['refresh'])
|
const emit = defineEmits(['refresh'])
|
||||||
|
|
||||||
@ -227,17 +228,19 @@ const submitHandle = async (formEl: FormInstance | undefined) => {
|
|||||||
}
|
}
|
||||||
console.log(applicationForm.value.type)
|
console.log(applicationForm.value.type)
|
||||||
applicationApi
|
applicationApi
|
||||||
.postApplication(
|
.postApplication({ ...applicationForm.value, folder_id: currentFolder.value }, loading)
|
||||||
{...applicationForm.value, folder_id: currentFolder.value},
|
.then((res) => {
|
||||||
loading,
|
return user.profile().then(() => {
|
||||||
)
|
return res
|
||||||
|
})
|
||||||
|
})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
MsgSuccess(t('common.createSuccess'))
|
MsgSuccess(t('common.createSuccess'))
|
||||||
emit('refresh')
|
emit('refresh')
|
||||||
if (isWorkFlow(applicationForm.value.type)) {
|
if (isWorkFlow(applicationForm.value.type)) {
|
||||||
router.push({path: `/application/${res.data.id}/workflow`})
|
router.push({ path: `/application/${res.data.id}/workflow` })
|
||||||
} else {
|
} else {
|
||||||
router.push({path: `/application/${res.data.id}/${res.data.type}/setting`})
|
router.push({ path: `/application/${res.data.id}/${res.data.type}/setting` })
|
||||||
}
|
}
|
||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
})
|
})
|
||||||
@ -249,7 +252,7 @@ function selectedType(type: string) {
|
|||||||
appTemplate.value = type
|
appTemplate.value = type
|
||||||
}
|
}
|
||||||
|
|
||||||
defineExpose({open})
|
defineExpose({ open })
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.radio-card {
|
.radio-card {
|
||||||
|
|||||||
@ -442,7 +442,7 @@ function deleteApplication(row: any) {
|
|||||||
{
|
{
|
||||||
confirmButtonText: t('common.confirm'),
|
confirmButtonText: t('common.confirm'),
|
||||||
cancelButtonText: t('common.cancel'),
|
cancelButtonText: t('common.cancel'),
|
||||||
confirmButtonClass: 'color-danger',
|
confirmButtonClass: 'danger',
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
|||||||
@ -70,7 +70,10 @@
|
|||||||
</span>
|
</span>
|
||||||
<div @click.stop v-show="mouseId === row.id && row.id !== 'new'">
|
<div @click.stop v-show="mouseId === row.id && row.id !== 'new'">
|
||||||
<el-dropdown trigger="click" :teleported="false">
|
<el-dropdown trigger="click" :teleported="false">
|
||||||
<el-icon class="rotate-90 mt-4"><MoreFilled /></el-icon>
|
<el-button text>
|
||||||
|
<el-icon><MoreFilled /></el-icon>
|
||||||
|
</el-button>
|
||||||
|
|
||||||
<template #dropdown>
|
<template #dropdown>
|
||||||
<el-dropdown-menu>
|
<el-dropdown-menu>
|
||||||
<el-dropdown-item @click.stop="editLogTitle(row)">
|
<el-dropdown-item @click.stop="editLogTitle(row)">
|
||||||
|
|||||||
@ -800,7 +800,7 @@ function syncDocument(row: any) {
|
|||||||
function syncLarkDocument(row: any) {
|
function syncLarkDocument(row: any) {
|
||||||
MsgConfirm(t('views.document.sync.confirmTitle'), t('views.document.sync.confirmMessage1'), {
|
MsgConfirm(t('views.document.sync.confirmTitle'), t('views.document.sync.confirmMessage1'), {
|
||||||
confirmButtonText: t('views.document.sync.label'),
|
confirmButtonText: t('views.document.sync.label'),
|
||||||
confirmButtonClass: 'color-danger',
|
confirmButtonClass: 'danger',
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
loadSharedApi({ type: 'document', systemType: apiType.value })
|
loadSharedApi({ type: 'document', systemType: apiType.value })
|
||||||
@ -816,7 +816,7 @@ function syncWebDocument(row: any) {
|
|||||||
if (row.meta?.source_url) {
|
if (row.meta?.source_url) {
|
||||||
MsgConfirm(t('views.document.sync.confirmTitle'), t('views.document.sync.confirmMessage1'), {
|
MsgConfirm(t('views.document.sync.confirmTitle'), t('views.document.sync.confirmMessage1'), {
|
||||||
confirmButtonText: t('views.document.sync.label'),
|
confirmButtonText: t('views.document.sync.label'),
|
||||||
confirmButtonClass: 'color-danger',
|
confirmButtonClass: 'danger',
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
loadSharedApi({ type: 'document', systemType: apiType.value })
|
loadSharedApi({ type: 'document', systemType: apiType.value })
|
||||||
@ -895,7 +895,7 @@ function syncLarkMulDocument() {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
loadSharedApi({ type: 'document', systemType: apiType.value })
|
loadSharedApi({ type: 'document', systemType: apiType.value })
|
||||||
.delMulLarkSyncDocument(id, arr, loading)
|
.putMulLarkSyncDocument(id, arr, loading)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
MsgSuccess(t('views.document.sync.successMessage'))
|
MsgSuccess(t('views.document.sync.successMessage'))
|
||||||
getList()
|
getList()
|
||||||
@ -908,7 +908,7 @@ function deleteMulDocument() {
|
|||||||
t('views.document.delete.confirmMessage'),
|
t('views.document.delete.confirmMessage'),
|
||||||
{
|
{
|
||||||
confirmButtonText: t('common.confirm'),
|
confirmButtonText: t('common.confirm'),
|
||||||
confirmButtonClass: 'color-danger',
|
confirmButtonClass: 'danger',
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
@ -956,7 +956,7 @@ function deleteDocument(row: any) {
|
|||||||
`${t('views.document.delete.confirmMessage1')} ${row.paragraph_count} ${t('views.document.delete.confirmMessage2')}`,
|
`${t('views.document.delete.confirmMessage1')} ${row.paragraph_count} ${t('views.document.delete.confirmMessage2')}`,
|
||||||
{
|
{
|
||||||
confirmButtonText: t('common.confirm'),
|
confirmButtonText: t('common.confirm'),
|
||||||
confirmButtonClass: 'color-danger',
|
confirmButtonClass: 'danger',
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
|||||||
@ -459,7 +459,7 @@ function deleteKnowledge(row: any) {
|
|||||||
`${t('views.knowledge.delete.confirmMessage1')} ${row.application_mapping_count} ${t('views.knowledge.delete.confirmMessage2')}`,
|
`${t('views.knowledge.delete.confirmMessage1')} ${row.application_mapping_count} ${t('views.knowledge.delete.confirmMessage2')}`,
|
||||||
{
|
{
|
||||||
confirmButtonText: t('common.confirm'),
|
confirmButtonText: t('common.confirm'),
|
||||||
confirmButtonClass: 'color-danger',
|
confirmButtonClass: 'danger',
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
|||||||
@ -91,9 +91,9 @@
|
|||||||
<el-dropdown-item
|
<el-dropdown-item
|
||||||
v-if="
|
v-if="
|
||||||
(currentModel.model_type === 'TTS' ||
|
(currentModel.model_type === 'TTS' ||
|
||||||
currentModel.model_type === 'LLM' ||
|
currentModel.model_type === 'LLM' ||
|
||||||
currentModel.model_type === 'IMAGE' ||
|
currentModel.model_type === 'IMAGE' ||
|
||||||
currentModel.model_type === 'TTI') &&
|
currentModel.model_type === 'TTI') &&
|
||||||
permissionPrecise.paramSetting(model.id)
|
permissionPrecise.paramSetting(model.id)
|
||||||
"
|
"
|
||||||
icon="Setting"
|
icon="Setting"
|
||||||
@ -175,11 +175,11 @@ const editModelRef = ref<InstanceType<typeof EditModel>>()
|
|||||||
let interval: any
|
let interval: any
|
||||||
const deleteModel = () => {
|
const deleteModel = () => {
|
||||||
MsgConfirm(
|
MsgConfirm(
|
||||||
t('views.model.delete.confirmTitle'),
|
`${t('views.model.delete.confirmTitle')}${props.model.name} ?`,
|
||||||
`${t('views.model.delete.confirmMessage')}${props.model.name} ?`,
|
t('views.model.delete.confirmMessage'),
|
||||||
{
|
{
|
||||||
confirmButtonText: t('common.confirm'),
|
confirmButtonText: t('common.confirm'),
|
||||||
confirmButtonClass: 'color-danger',
|
confirmButtonClass: 'danger',
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
|||||||
@ -147,7 +147,7 @@ function deleteParagraph(row: any) {
|
|||||||
t('views.paragraph.delete.confirmMessage'),
|
t('views.paragraph.delete.confirmMessage'),
|
||||||
{
|
{
|
||||||
confirmButtonText: t('common.confirm'),
|
confirmButtonText: t('common.confirm'),
|
||||||
confirmButtonClass: 'color-danger',
|
confirmButtonClass: 'danger',
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
|||||||
@ -233,7 +233,7 @@ function deleteMulParagraph() {
|
|||||||
t('views.paragraph.delete.confirmMessage'),
|
t('views.paragraph.delete.confirmMessage'),
|
||||||
{
|
{
|
||||||
confirmButtonText: t('common.confirm'),
|
confirmButtonText: t('common.confirm'),
|
||||||
confirmButtonClass: 'color-danger',
|
confirmButtonClass: 'danger',
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
|||||||
@ -278,7 +278,7 @@ function deleteProblem(row: any) {
|
|||||||
`${t('views.problem.delete.confirmMessage1')} ${row.paragraph_count} ${t('views.problem.delete.confirmMessage2')}`,
|
`${t('views.problem.delete.confirmMessage1')} ${row.paragraph_count} ${t('views.problem.delete.confirmMessage2')}`,
|
||||||
{
|
{
|
||||||
confirmButtonText: t('common.confirm'),
|
confirmButtonText: t('common.confirm'),
|
||||||
confirmButtonClass: 'color-danger',
|
confirmButtonClass: 'danger',
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
|||||||
@ -353,7 +353,7 @@ function createUser() {
|
|||||||
function deleteUserManage(row: ChatUserItem) {
|
function deleteUserManage(row: ChatUserItem) {
|
||||||
MsgConfirm(`${t('views.userManage.delete.confirmTitle')}${row.nick_name} ?`, '', {
|
MsgConfirm(`${t('views.userManage.delete.confirmTitle')}${row.nick_name} ?`, '', {
|
||||||
confirmButtonText: t('common.confirm'),
|
confirmButtonText: t('common.confirm'),
|
||||||
confirmButtonClass: 'color-danger',
|
confirmButtonClass: 'danger',
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
@ -396,7 +396,7 @@ async function getChatGroupList() {
|
|||||||
function handleBatchDelete() {
|
function handleBatchDelete() {
|
||||||
MsgConfirm(t('views.chatUser.batchDeleteUser', {count: multipleSelection.value.length}), '', {
|
MsgConfirm(t('views.chatUser.batchDeleteUser', {count: multipleSelection.value.length}), '', {
|
||||||
confirmButtonText: t('common.confirm'),
|
confirmButtonText: t('common.confirm'),
|
||||||
confirmButtonClass: 'color-danger',
|
confirmButtonClass: 'danger',
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
loadPermissionApi('chatUser')
|
loadPermissionApi('chatUser')
|
||||||
|
|||||||
@ -337,7 +337,7 @@ function deleteGroup(item: ListItem) {
|
|||||||
t('views.chatUser.group.delete.confirmMessage'),
|
t('views.chatUser.group.delete.confirmMessage'),
|
||||||
{
|
{
|
||||||
confirmButtonText: t('common.confirm'),
|
confirmButtonText: t('common.confirm'),
|
||||||
confirmButtonClass: 'color-danger',
|
confirmButtonClass: 'danger',
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
@ -428,7 +428,7 @@ function handleDeleteUser(item?: ChatUserGroupUserItem) {
|
|||||||
'',
|
'',
|
||||||
{
|
{
|
||||||
confirmButtonText: t('common.confirm'),
|
confirmButtonText: t('common.confirm'),
|
||||||
confirmButtonClass: 'color-danger',
|
confirmButtonClass: 'danger',
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
|||||||
@ -162,7 +162,7 @@ function handleAdd() {
|
|||||||
function handleDelete(row: RoleMemberItem) {
|
function handleDelete(row: RoleMemberItem) {
|
||||||
MsgConfirm(`${t('views.role.member.delete.confirmTitle')}${row.nick_name} ?`, '', {
|
MsgConfirm(`${t('views.role.member.delete.confirmTitle')}${row.nick_name} ?`, '', {
|
||||||
confirmButtonText: t('common.confirm'),
|
confirmButtonText: t('common.confirm'),
|
||||||
confirmButtonClass: 'color-danger',
|
confirmButtonClass: 'danger',
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
|
|||||||
@ -234,7 +234,7 @@ function deleteRole(item: RoleItem) {
|
|||||||
t('views.role.delete.confirmMessage'),
|
t('views.role.delete.confirmMessage'),
|
||||||
{
|
{
|
||||||
confirmButtonText: t('common.confirm'),
|
confirmButtonText: t('common.confirm'),
|
||||||
confirmButtonClass: 'color-danger',
|
confirmButtonClass: 'danger',
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
|||||||
@ -283,7 +283,7 @@ function deleteUserManage(row: any) {
|
|||||||
t('views.userManage.delete.confirmMessage'),
|
t('views.userManage.delete.confirmMessage'),
|
||||||
{
|
{
|
||||||
confirmButtonText: t('common.confirm'),
|
confirmButtonText: t('common.confirm'),
|
||||||
confirmButtonClass: 'color-danger',
|
confirmButtonClass: 'danger',
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
|||||||
@ -159,7 +159,7 @@ function handleAdd() {
|
|||||||
function handleDelete(row: WorkspaceMemberItem) {
|
function handleDelete(row: WorkspaceMemberItem) {
|
||||||
MsgConfirm(`${t('views.workspace.member.delete.confirmTitle')}${row.nick_name} ?`, '', {
|
MsgConfirm(`${t('views.workspace.member.delete.confirmTitle')}${row.nick_name} ?`, '', {
|
||||||
confirmButtonText: t('common.confirm'),
|
confirmButtonText: t('common.confirm'),
|
||||||
confirmButtonClass: 'color-danger',
|
confirmButtonClass: 'danger',
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
|
|||||||
@ -191,7 +191,7 @@ async function deleteWorkspace(item: WorkspaceItem) {
|
|||||||
t('views.workspace.delete.confirmContent'),
|
t('views.workspace.delete.confirmContent'),
|
||||||
{
|
{
|
||||||
confirmButtonText: t('common.confirm'),
|
confirmButtonText: t('common.confirm'),
|
||||||
confirmButtonClass: 'color-danger',
|
confirmButtonClass: 'danger',
|
||||||
},
|
},
|
||||||
).then(() => {
|
).then(() => {
|
||||||
loadPermissionApi('workspace').deleteWorkspace(item.id as string, loading).then(async () => {
|
loadPermissionApi('workspace').deleteWorkspace(item.id as string, loading).then(async () => {
|
||||||
|
|||||||
@ -419,7 +419,7 @@ async function changeState(row: any) {
|
|||||||
t('views.tool.disabled.confirmMessage'),
|
t('views.tool.disabled.confirmMessage'),
|
||||||
{
|
{
|
||||||
confirmButtonText: t('common.status.disable'),
|
confirmButtonText: t('common.status.disable'),
|
||||||
confirmButtonClass: 'color-danger',
|
confirmButtonClass: 'danger',
|
||||||
},
|
},
|
||||||
).then(() => {
|
).then(() => {
|
||||||
const obj = {
|
const obj = {
|
||||||
@ -497,12 +497,12 @@ function exportTool(row: any) {
|
|||||||
|
|
||||||
function deleteTool(row: any) {
|
function deleteTool(row: any) {
|
||||||
MsgConfirm(
|
MsgConfirm(
|
||||||
`${t('views.tool.delete.confirmTitle')}${row.name} ?`,
|
`${t('views.tool.delete.confirmTitle')}:${row.name} ?`,
|
||||||
t('views.tool.delete.confirmMessage'),
|
t('views.tool.delete.confirmMessage'),
|
||||||
{
|
{
|
||||||
confirmButtonText: t('common.confirm'),
|
confirmButtonText: t('common.confirm'),
|
||||||
cancelButtonText: t('common.cancel'),
|
cancelButtonText: t('common.cancel'),
|
||||||
confirmButtonClass: 'color-danger',
|
confirmButtonClass: 'danger',
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
|||||||
@ -275,7 +275,7 @@ const copyNode = () => {
|
|||||||
const deleteNode = () => {
|
const deleteNode = () => {
|
||||||
MsgConfirm(t('common.tip'), t('views.applicationWorkflow.delete.confirmTitle'), {
|
MsgConfirm(t('common.tip'), t('views.applicationWorkflow.delete.confirmTitle'), {
|
||||||
confirmButtonText: t('common.confirm'),
|
confirmButtonText: t('common.confirm'),
|
||||||
confirmButtonClass: 'color-danger',
|
confirmButtonClass: 'danger',
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
props.nodeModel.graphModel.deleteNode(props.nodeModel.id)
|
props.nodeModel.graphModel.deleteNode(props.nodeModel.id)
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user