Skip to content

Commit 369ea22

Browse files
authored
feat: Resource page trigger invocation logic (#4701)
1 parent 2557b61 commit 369ea22

File tree

4 files changed

+102
-9
lines changed

4 files changed

+102
-9
lines changed

ui/src/api/trigger/trigger.ts

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,14 @@ Object.defineProperty(prefix, 'value', {
1313
},
1414
})
1515

16+
const prefixWorkspace: any = { _value: '/workspace/' }
17+
Object.defineProperty(prefixWorkspace, 'value', {
18+
get: function () {
19+
const { user } = useStore()
20+
return this._value + user.getWorkspaceId()
21+
},
22+
})
23+
1624
/**
1725
* 触发器列表
1826
* @param data
@@ -154,6 +162,52 @@ const getTriggerTaskRecordDetails = (
154162
loading,
155163
)
156164
}
165+
166+
/**
167+
* 资源端创建触发器
168+
* @param source_type 资源类型
169+
* @param source_id 资源id
170+
* @param data 数据
171+
* @param loading 加载器
172+
* @returns
173+
*/
174+
const postResourceTrigger: (
175+
source_type: string,
176+
resource_id: string,
177+
data: TriggerData,
178+
loading?: Ref<boolean>,
179+
) => Promise<Result<any>> = (source_type, source_id, data, loading) => {
180+
return post(
181+
`${prefixWorkspace.value}/${source_type}/${source_id}/trigger`,
182+
data,
183+
undefined,
184+
loading,
185+
)
186+
}
187+
/**
188+
* 资源端修改触发器
189+
* @param source_type 资源类型
190+
* @param source_id 资源id
191+
* @param trigger_id 触发器id
192+
* @param data 触发器数据
193+
* @param loading 加载器
194+
* @returns
195+
*/
196+
const putResourceTrigger: (
197+
source_type: string,
198+
resource_id: string,
199+
trigger_id: string,
200+
data: TriggerData,
201+
loading?: Ref<boolean>,
202+
) => Promise<Result<any>> = (source_type, source_id, trigger_id, data, loading) => {
203+
return post(
204+
`${prefixWorkspace.value}/${source_type}/${source_id}/trigger/${trigger_id}`,
205+
data,
206+
undefined,
207+
loading,
208+
)
209+
}
210+
157211
export default {
158212
pageTrigger,
159213
getTriggerList,
@@ -165,4 +219,6 @@ export default {
165219
activateMulTrigger,
166220
pageTriggerTaskRecord,
167221
getTriggerTaskRecordDetails,
222+
postResourceTrigger,
223+
putResourceTrigger,
168224
}

ui/src/views/application/ApplicationSetting.vue

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -803,7 +803,12 @@
803803
<McpServersDialog ref="mcpServersDialogRef" @refresh="submitMcpServersDialog" />
804804
<ToolDialog ref="toolDialogRef" @refresh="submitToolDialog" />
805805
<ApplicationDialog ref="applicationDialogRef" @refresh="submitApplicationDialog" />
806-
<TriggerDrawer @refresh="refreshTrigger" ref="triggerDrawerRef"></TriggerDrawer>
806+
<TriggerDrawer
807+
@refresh="refreshTrigger"
808+
ref="triggerDrawerRef"
809+
:create-trigger="createTrigger"
810+
:edit-trigger="editTrigger"
811+
></TriggerDrawer>
807812
</div>
808813
</template>
809814
<script setup lang="ts">
@@ -826,7 +831,8 @@ import permissionMap from '@/permission'
826831
import { EditionConst } from '@/utils/permission/data'
827832
import { hasPermission } from '@/utils/permission/index'
828833
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
829-
import { resetUrl } from '@/utils/common.ts'
834+
import { resetUrl } from '@/utils/common'
835+
import triggerAPI from '@/api/trigger/trigger'
830836
import McpServersDialog from '@/views/application/component/McpServersDialog.vue'
831837
import ToolDialog from '@/views/application/component/ToolDialog.vue'
832838
import ApplicationDialog from '@/views/application/component/ApplicationDialog.vue'
@@ -849,7 +855,12 @@ const apiType = computed(() => {
849855
const permissionPrecise = computed(() => {
850856
return permissionMap['application'][apiType.value]
851857
})
852-
858+
const createTrigger = (trigger: any) => {
859+
return triggerAPI.postResourceTrigger('APPLICATION', id, trigger)
860+
}
861+
const editTrigger = (trigger_id: string, trigger: any) => {
862+
return triggerAPI.putResourceTrigger('APPLICATION', id, trigger_id, trigger)
863+
}
853864
const toolPermissionPrecise = computed(() => {
854865
return permissionMap['tool'][apiType.value]
855866
})

ui/src/views/tool/ToolFormDrawer.vue

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,12 @@
260260
<FieldFormDialog ref="FieldFormDialogRef" @refresh="refreshFieldList" />
261261
<UserFieldFormDialog ref="UserFieldFormDialogRef" @refresh="refreshInitFieldList" />
262262
<EditAvatarDialog ref="EditAvatarDialogRef" @refresh="refreshTool" />
263+
<TriggerDrawer
264+
@refresh="refreshTrigger"
265+
ref="triggerDrawerRef"
266+
:create-trigger="createTrigger"
267+
:edit-trigger="editTrigger"
268+
></TriggerDrawer>
263269
</el-drawer>
264270
</template>
265271

@@ -280,7 +286,7 @@ import useStore from '@/stores'
280286
import permissionMap from '@/permission'
281287
import TriggerDrawer from '@/views/trigger/component/TriggerDrawer.vue'
282288
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
283-
289+
import triggerAPI from '@/api/trigger/trigger'
284290
const route = useRoute()
285291
286292
const props = defineProps({
@@ -297,6 +303,16 @@ const apiType = computed(() => {
297303
return 'workspace'
298304
}
299305
})
306+
const createTrigger = (trigger: any) => {
307+
if (form.value?.id) {
308+
return triggerAPI.postResourceTrigger('TOOL', form.value?.id, trigger)
309+
}
310+
}
311+
const editTrigger = (trigger_id: string, trigger: any) => {
312+
if (form.value?.id) {
313+
return triggerAPI.putResourceTrigger('TOOL', form.value?.id, trigger_id, trigger)
314+
}
315+
}
300316
const permissionPrecise = computed(() => {
301317
return permissionMap['tool'][apiType.value]
302318
})
@@ -354,7 +370,6 @@ const rules = reactive({
354370
],
355371
})
356372
357-
358373
const triggerDrawerRef = ref<InstanceType<typeof TriggerDrawer>>()
359374
360375
const openCreateTriggerDrawer = () => {

ui/src/views/trigger/component/TriggerDrawer.vue

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,6 @@
357357
<script setup lang="ts">
358358
import { v4 as uuidv4 } from 'uuid'
359359
import { ref, computed, onMounted, reactive } from 'vue'
360-
import { useRouter } from 'vue-router'
361360
import { copyClick } from '@/utils/clipboard'
362361
import ApplicationDialog from '@/views/application/component/ApplicationDialog.vue'
363362
import ToolDialog from '@/views/application/component/ToolDialog.vue'
@@ -366,9 +365,21 @@ import triggerAPI from '@/api/trigger/trigger'
366365
import toolAPI from '@/api/tool/tool'
367366
import ToolParameter from './ToolParameter.vue'
368367
import ApplicationParameter from './ApplicationParameter.vue'
369-
import { resetUrl } from '@/utils/common.ts'
368+
import { resetUrl } from '@/utils/common'
370369
import { type FormInstance } from 'element-plus'
370+
import Result from '@/request/Result'
371+
371372
const emit = defineEmits(['refresh'])
373+
const props = withDefaults(
374+
defineProps<{
375+
createTrigger?: (trigger: any) => Promise<Result<any>>
376+
editTrigger?: (trigger_id: string, trigger: any) => Promise<Result<any>>
377+
}>(),
378+
{
379+
createTrigger: triggerAPI.postTrigger,
380+
editTrigger: triggerAPI.putTrigger,
381+
},
382+
)
372383
373384
const collapseData = reactive({
374385
tool: true,
@@ -612,13 +623,13 @@ const submit = () => {
612623
]).then((ok) => {
613624
if (is_edit.value) {
614625
if (current_trigger_id.value) {
615-
triggerAPI.putTrigger(current_trigger_id.value, form.value).then((ok) => {
626+
props.editTrigger(current_trigger_id.value, form.value).then((ok) => {
616627
close()
617628
emit('refresh')
618629
})
619630
}
620631
} else {
621-
triggerAPI.postTrigger(form.value).then((ok) => {
632+
props.createTrigger(form.value).then((ok) => {
622633
close()
623634
emit('refresh')
624635
})

0 commit comments

Comments
 (0)