Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions ui/src/api/trigger/trigger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,14 @@ Object.defineProperty(prefix, 'value', {
},
})

const prefixWorkspace: any = { _value: '/workspace/' }
Object.defineProperty(prefixWorkspace, 'value', {
get: function () {
const { user } = useStore()
return this._value + user.getWorkspaceId()
},
})

/**
* 触发器列表
* @param data
Expand Down Expand Up @@ -154,6 +162,52 @@ const getTriggerTaskRecordDetails = (
loading,
)
}

/**
* 资源端创建触发器
* @param source_type 资源类型
* @param source_id 资源id
* @param data 数据
* @param loading 加载器
* @returns
*/
const postResourceTrigger: (
source_type: string,
resource_id: string,
data: TriggerData,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (source_type, source_id, data, loading) => {
return post(
`${prefixWorkspace.value}/${source_type}/${source_id}/trigger`,
data,
undefined,
loading,
)
}
/**
* 资源端修改触发器
* @param source_type 资源类型
* @param source_id 资源id
* @param trigger_id 触发器id
* @param data 触发器数据
* @param loading 加载器
* @returns
*/
const putResourceTrigger: (
source_type: string,
resource_id: string,
trigger_id: string,
data: TriggerData,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (source_type, source_id, trigger_id, data, loading) => {
return post(
`${prefixWorkspace.value}/${source_type}/${source_id}/trigger/${trigger_id}`,
data,
undefined,
loading,
)
}

export default {
pageTrigger,
getTriggerList,
Expand All @@ -165,4 +219,6 @@ export default {
activateMulTrigger,
pageTriggerTaskRecord,
getTriggerTaskRecordDetails,
postResourceTrigger,
putResourceTrigger,
}
17 changes: 14 additions & 3 deletions ui/src/views/application/ApplicationSetting.vue
Original file line number Diff line number Diff line change
Expand Up @@ -803,7 +803,12 @@
<McpServersDialog ref="mcpServersDialogRef" @refresh="submitMcpServersDialog" />
<ToolDialog ref="toolDialogRef" @refresh="submitToolDialog" />
<ApplicationDialog ref="applicationDialogRef" @refresh="submitApplicationDialog" />
<TriggerDrawer @refresh="refreshTrigger" ref="triggerDrawerRef"></TriggerDrawer>
<TriggerDrawer
@refresh="refreshTrigger"
ref="triggerDrawerRef"
:create-trigger="createTrigger"
:edit-trigger="editTrigger"
></TriggerDrawer>
</div>
</template>
<script setup lang="ts">
Expand All @@ -826,7 +831,8 @@ import permissionMap from '@/permission'
import { EditionConst } from '@/utils/permission/data'
import { hasPermission } from '@/utils/permission/index'
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
import { resetUrl } from '@/utils/common.ts'
import { resetUrl } from '@/utils/common'
import triggerAPI from '@/api/trigger/trigger'
import McpServersDialog from '@/views/application/component/McpServersDialog.vue'
import ToolDialog from '@/views/application/component/ToolDialog.vue'
import ApplicationDialog from '@/views/application/component/ApplicationDialog.vue'
Expand All @@ -849,7 +855,12 @@ const apiType = computed(() => {
const permissionPrecise = computed(() => {
return permissionMap['application'][apiType.value]
})

const createTrigger = (trigger: any) => {
return triggerAPI.postResourceTrigger('APPLICATION', id, trigger)
}
const editTrigger = (trigger_id: string, trigger: any) => {
return triggerAPI.putResourceTrigger('APPLICATION', id, trigger_id, trigger)
}
const toolPermissionPrecise = computed(() => {
return permissionMap['tool'][apiType.value]
})
Expand Down
19 changes: 17 additions & 2 deletions ui/src/views/tool/ToolFormDrawer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,12 @@
<FieldFormDialog ref="FieldFormDialogRef" @refresh="refreshFieldList" />
<UserFieldFormDialog ref="UserFieldFormDialogRef" @refresh="refreshInitFieldList" />
<EditAvatarDialog ref="EditAvatarDialogRef" @refresh="refreshTool" />
<TriggerDrawer
@refresh="refreshTrigger"
ref="triggerDrawerRef"
:create-trigger="createTrigger"
:edit-trigger="editTrigger"
></TriggerDrawer>
</el-drawer>
</template>

Expand All @@ -280,7 +286,7 @@ import useStore from '@/stores'
import permissionMap from '@/permission'
import TriggerDrawer from '@/views/trigger/component/TriggerDrawer.vue'
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'

import triggerAPI from '@/api/trigger/trigger'
const route = useRoute()

const props = defineProps({
Expand All @@ -297,6 +303,16 @@ const apiType = computed(() => {
return 'workspace'
}
})
const createTrigger = (trigger: any) => {
if (form.value?.id) {
return triggerAPI.postResourceTrigger('TOOL', form.value?.id, trigger)
}
}
const editTrigger = (trigger_id: string, trigger: any) => {
if (form.value?.id) {
return triggerAPI.putResourceTrigger('TOOL', form.value?.id, trigger_id, trigger)
}
}
const permissionPrecise = computed(() => {
return permissionMap['tool'][apiType.value]
})
Expand Down Expand Up @@ -354,7 +370,6 @@ const rules = reactive({
],
})


const triggerDrawerRef = ref<InstanceType<typeof TriggerDrawer>>()

const openCreateTriggerDrawer = () => {
Expand Down
19 changes: 15 additions & 4 deletions ui/src/views/trigger/component/TriggerDrawer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -357,7 +357,6 @@
<script setup lang="ts">
import { v4 as uuidv4 } from 'uuid'
import { ref, computed, onMounted, reactive } from 'vue'
import { useRouter } from 'vue-router'
import { copyClick } from '@/utils/clipboard'
import ApplicationDialog from '@/views/application/component/ApplicationDialog.vue'
import ToolDialog from '@/views/application/component/ToolDialog.vue'
Expand All @@ -366,9 +365,21 @@ import triggerAPI from '@/api/trigger/trigger'
import toolAPI from '@/api/tool/tool'
import ToolParameter from './ToolParameter.vue'
import ApplicationParameter from './ApplicationParameter.vue'
import { resetUrl } from '@/utils/common.ts'
import { resetUrl } from '@/utils/common'
import { type FormInstance } from 'element-plus'
import Result from '@/request/Result'

const emit = defineEmits(['refresh'])
const props = withDefaults(
defineProps<{
createTrigger?: (trigger: any) => Promise<Result<any>>
editTrigger?: (trigger_id: string, trigger: any) => Promise<Result<any>>
}>(),
{
createTrigger: triggerAPI.postTrigger,
editTrigger: triggerAPI.putTrigger,
},
)

const collapseData = reactive({
tool: true,
Expand Down Expand Up @@ -612,13 +623,13 @@ const submit = () => {
]).then((ok) => {
if (is_edit.value) {
if (current_trigger_id.value) {
triggerAPI.putTrigger(current_trigger_id.value, form.value).then((ok) => {
props.editTrigger(current_trigger_id.value, form.value).then((ok) => {
close()
emit('refresh')
})
}
} else {
triggerAPI.postTrigger(form.value).then((ok) => {
props.createTrigger(form.value).then((ok) => {
close()
emit('refresh')
})
Expand Down