模型管理v2:异步映射配置新增请求方法下拉与请求体映射,回调文案改异步
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -12,6 +12,7 @@ export interface AsyncTaskMapping {
|
||||
url: string;
|
||||
httpMethod: string;
|
||||
requestHeadMapping: Record<string, unknown>;
|
||||
requestBodyMapping?: Record<string, unknown>;
|
||||
responseMapping: Record<string, unknown>;
|
||||
taskId: string;
|
||||
taskStatus: string;
|
||||
|
||||
@@ -152,22 +152,41 @@
|
||||
<template v-if="formData.responseType === 2">
|
||||
<el-divider content-position="left">异步映射配置</el-divider>
|
||||
<el-row :gutter="20">
|
||||
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
||||
<el-form-item label="回调响应映射">
|
||||
<el-col :xs="24" :sm="8" :md="8" :lg="8" :xl="8" class="mb20">
|
||||
<el-form-item label="异步响应映射">
|
||||
<el-button @click="openMappingEditor('asyncResponseMapping')" style="width: 100%">
|
||||
配置 ({{ Object.keys((formData.asyncTaskMapping.responseMapping || {})).length }})
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
||||
<el-col :xs="24" :sm="8" :md="8" :lg="8" :xl="8" class="mb20">
|
||||
<el-form-item label="请求方法">
|
||||
<el-select v-model="formData.asyncTaskMapping.httpMethod" style="width: 100%">
|
||||
<el-option label="POST" value="POST" />
|
||||
<el-option label="GET" value="GET" />
|
||||
<el-option label="PUT" value="PUT" />
|
||||
<el-option label="DELETE" value="DELETE" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="8" :md="8" :lg="8" :xl="8" class="mb20">
|
||||
<el-form-item label="回调 URL">
|
||||
<el-input v-model="formData.asyncTaskMapping.url" placeholder="请输入异步回调地址" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
||||
<el-form-item label="请求体映射">
|
||||
<el-button @click="openMappingEditor('asyncRequestBodyMapping')" style="width: 100%">
|
||||
配置 ({{ Object.keys((formData.asyncTaskMapping.requestBodyMapping || {})).length }})
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item label="回调请求头映射">
|
||||
<el-form-item label="异步请求头映射">
|
||||
<KeyValueEditor v-model="formData.asyncTaskMapping.requestHeadMapping" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@@ -375,6 +394,7 @@ const defaultAsyncTaskMapping: AsyncTaskMapping = {
|
||||
url: '',
|
||||
httpMethod: 'POST',
|
||||
requestHeadMapping: {},
|
||||
requestBodyMapping: {},
|
||||
responseMapping: {},
|
||||
taskId: '',
|
||||
taskStatus: '',
|
||||
@@ -544,6 +564,7 @@ const mappingFieldLabels: Record<string, string> = {
|
||||
requestBodyMapping: '请求体映射',
|
||||
responseMapping: '响应映射',
|
||||
asyncResponseMapping: '异步-响应映射',
|
||||
asyncRequestBodyMapping: '异步-请求体映射',
|
||||
};
|
||||
|
||||
const jsonEditorTitle = computed(() => {
|
||||
@@ -554,6 +575,7 @@ const jsonEditorTitle = computed(() => {
|
||||
/** 获取映射字段的引用 */
|
||||
function getMappingValue(key: string): Record<string, unknown> {
|
||||
if (key === 'asyncResponseMapping') return formData.asyncTaskMapping.responseMapping;
|
||||
if (key === 'asyncRequestBodyMapping') return formData.asyncTaskMapping.requestBodyMapping || {};
|
||||
return (formData as Record<string, unknown>)[key] as Record<string, unknown>;
|
||||
}
|
||||
|
||||
@@ -561,6 +583,8 @@ function getMappingValue(key: string): Record<string, unknown> {
|
||||
function setMappingValue(key: string, value: Record<string, unknown>) {
|
||||
if (key === 'asyncResponseMapping') {
|
||||
formData.asyncTaskMapping.responseMapping = value;
|
||||
} else if (key === 'asyncRequestBodyMapping') {
|
||||
formData.asyncTaskMapping.requestBodyMapping = value;
|
||||
} else {
|
||||
(formData as Record<string, unknown>)[key] = value;
|
||||
}
|
||||
@@ -678,6 +702,7 @@ const openDialog = async (type: 'add' | 'edit', id?: string) => {
|
||||
...defaultAsyncTaskMapping,
|
||||
...row.asyncTaskMapping,
|
||||
requestHeadMapping: row.asyncTaskMapping.requestHeadMapping || {},
|
||||
requestBodyMapping: row.asyncTaskMapping.requestBodyMapping || {},
|
||||
responseMapping: row.asyncTaskMapping.responseMapping || {},
|
||||
}
|
||||
: { ...defaultAsyncTaskMapping };
|
||||
@@ -734,7 +759,11 @@ const handleSubmit = async () => {
|
||||
|
||||
if (formData.responseType === 2) {
|
||||
const atm = formData.asyncTaskMapping;
|
||||
const hasAsyncConfig = atm.url || Object.keys(atm.requestHeadMapping).length > 0 || atm.taskId;
|
||||
const hasAsyncConfig =
|
||||
atm.url ||
|
||||
Object.keys(atm.requestHeadMapping).length > 0 ||
|
||||
Object.keys(atm.requestBodyMapping || {}).length > 0 ||
|
||||
atm.taskId;
|
||||
asyncTaskMapping = hasAsyncConfig ? ({ ...atm } as AsyncTaskMapping) : undefined;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user