Skip to content

Commit 475385b

Browse files
committed
【功能新增】Http 请求触发器,增加返回值设置
1 parent 5f5ae35 commit 475385b

File tree

4 files changed

+119
-18
lines changed

4 files changed

+119
-18
lines changed

src/components/SimpleProcessDesignerV2/src/consts.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -371,13 +371,13 @@ export enum TimeUnitType {
371371
/**
372372
* 条件节点设置结构定义,用于条件节点
373373
*/
374-
export type ConditionSetting = {
374+
export type ConditionSetting = {
375375
// 条件类型
376-
conditionType?: ConditionType,
376+
conditionType?: ConditionType
377377
// 条件表达式
378-
conditionExpression?: string,
378+
conditionExpression?: string
379379
// 条件组
380-
conditionGroups?: ConditionGroup,
380+
conditionGroups?: ConditionGroup
381381
// 是否默认的条件
382382
defaultFlow?: boolean
383383
}
@@ -726,7 +726,7 @@ export enum TriggerTypeEnum {
726726
/**
727727
* 发送 HTTP 请求触发器
728728
*/
729-
HTTP_REQUEST = 1,
729+
HTTP_REQUEST = 1
730730
}
731731

732732
/**
@@ -739,6 +739,8 @@ export type HttpRequestTriggerSetting = {
739739
header?: HttpRequestParam[]
740740
// 请求体参数设置
741741
body?: HttpRequestParam[]
742+
// 请求响应设置
743+
response?: Record<string, string>[]
742744
}
743745

744746
export const TRIGGER_TYPES: DictDataVO[] = [

src/components/SimpleProcessDesignerV2/src/node.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ import {
1414
AssignStartUserHandlerType,
1515
AssignEmptyHandlerType,
1616
FieldPermissionType,
17-
HttpRequestParam
17+
HttpRequestParam,
18+
ProcessVariableEnum
1819
} from './consts'
1920
import { parseFormFields } from '@/components/FormCreate/src/utils'
2021

@@ -106,13 +107,28 @@ export function useFormFieldsPermission(defaultPermission: FieldPermissionType)
106107
}
107108
}
108109
/**
109-
* @description 获取表单的字段
110+
* @description 获取流程表单的字段。
110111
*/
111112
export function useFormFields() {
112113
const formFields = inject<Ref<string[]>>('formFields', ref([])) // 流程表单字段
113114
return parseFormCreateFields(unref(formFields))
114115
}
115116

117+
/**
118+
* @description 获取流程表单的字段和发起人字段
119+
*/
120+
export function useFormFieldsAndStartUser() {
121+
const injectFormFields = inject<Ref<string[]>>('formFields', ref([])) // 流程表单字段
122+
const formFields = parseFormCreateFields(unref(injectFormFields))
123+
// 添加发起人
124+
formFields.unshift({
125+
field: ProcessVariableEnum.START_USER_ID,
126+
title: '发起人',
127+
required: true
128+
})
129+
return formFields
130+
}
131+
116132
export type UserTaskFormType = {
117133
candidateStrategy: CandidateStrategy
118134
approveMethod: ApproveMethodType

src/components/SimpleProcessDesignerV2/src/nodes-config/TriggerNodeConfig.vue

Lines changed: 85 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
/>
3636
</el-select>
3737
</el-form-item>
38+
<!-- HTTP 请求触发器 -->
3839
<div
3940
v-if="configForm.type === TriggerTypeEnum.HTTP_REQUEST && configForm.httpRequestSetting"
4041
>
@@ -46,14 +47,79 @@
4647
:closable="false"
4748
/>
4849
</el-form-item>
50+
<!-- 请求地址-->
4951
<el-form-item label="请求地址" prop="httpRequestSetting.url">
5052
<el-input v-model="configForm.httpRequestSetting.url" />
5153
</el-form-item>
54+
<!-- 请求头,请求体设置-->
5255
<HttpRequestParamSetting
5356
:header="configForm.httpRequestSetting.header"
5457
:body="configForm.httpRequestSetting.body"
5558
:bind="'httpRequestSetting'"
5659
/>
60+
<!-- 返回值设置-->
61+
<el-form-item label="返回值">
62+
<el-alert
63+
title="通过请求返回值, 可以修改流程表单的值"
64+
type="warning"
65+
show-icon
66+
:closable="false"
67+
/>
68+
</el-form-item>
69+
<el-form-item>
70+
<div
71+
class="flex pt-2"
72+
v-for="(item, index) in configForm.httpRequestSetting.response"
73+
:key="index"
74+
>
75+
<div class="mr-2">
76+
<el-form-item
77+
:prop="`httpRequestSetting.response.${index}.key`"
78+
:rules="{
79+
required: true,
80+
message: '表单字段不能为空',
81+
trigger: 'blur'
82+
}"
83+
>
84+
<el-select class="w-160px!" v-model="item.key" placeholder="请选择表单字段">
85+
<el-option
86+
v-for="(field, fIdx) in formFieldOptions"
87+
:key="fIdx"
88+
:label="field.title"
89+
:value="field.field"
90+
:disabled="!field.required"
91+
/>
92+
</el-select>
93+
</el-form-item>
94+
</div>
95+
<div class="mr-2">
96+
<el-form-item
97+
:prop="`httpRequestSetting.response.${index}.value`"
98+
:rules="{
99+
required: true,
100+
message: '请求返回字段不能为空',
101+
trigger: 'blur'
102+
}"
103+
>
104+
<el-input class="w-160px" v-model="item.value" placeholder="请求返回字段" />
105+
</el-form-item>
106+
</div>
107+
<div class="mr-1 pt-1 cursor-pointer">
108+
<Icon
109+
icon="ep:delete"
110+
:size="18"
111+
@click="deleteHttpResponseSetting(configForm.httpRequestSetting.response!, index)"
112+
/>
113+
</div>
114+
</div>
115+
<el-button
116+
type="primary"
117+
text
118+
@click="addHttpResponseSetting(configForm.httpRequestSetting.response!)"
119+
>
120+
<Icon icon="ep:plus" class="mr-5px" />添加一行
121+
</el-button>
122+
</el-form-item>
57123
</div>
58124
</el-form>
59125
</div>
@@ -68,7 +134,7 @@
68134
</template>
69135
<script setup lang="ts">
70136
import { SimpleFlowNode, NodeType, TriggerSetting, TRIGGER_TYPES, TriggerTypeEnum } from '../consts'
71-
import { useWatchNode, useDrawer, useNodeName } from '../node'
137+
import { useWatchNode, useDrawer, useNodeName, useFormFields } from '../node'
72138
import HttpRequestParamSetting from './components/HttpRequestParamSetting.vue'
73139
74140
defineOptions({
@@ -91,19 +157,33 @@ const formRef = ref() // 表单 Ref
91157
// 表单校验规则
92158
const formRules = reactive({
93159
type: [{ required: true, message: '触发器类型不能为空', trigger: 'change' }],
94-
httpRequestSetting: {
95-
url: [{ required: true, message: '请求地址不能为空', trigger: 'blur' }]
96-
}
160+
'httpRequestSetting.url': [{ required: true, message: '请求地址不能为空', trigger: 'blur' }]
97161
})
98162
// 触发器配置表单数据
99163
const configForm = ref<TriggerSetting>({
100164
type: TriggerTypeEnum.HTTP_REQUEST,
101165
httpRequestSetting: {
102166
url: '',
103167
header: [],
104-
body: []
168+
body: [],
169+
response: []
105170
}
106171
})
172+
// 流程表单字段
173+
const formFieldOptions = useFormFields()
174+
175+
/** 添加 HTTP 请求返回值设置项*/
176+
const addHttpResponseSetting = (responseSetting: Record<string, string>[]) => {
177+
responseSetting.push({
178+
key: '',
179+
value: ''
180+
})
181+
}
182+
183+
/** 删除 HTTP 请求返回值设置项 */
184+
const deleteHttpResponseSetting = (responseSetting: Record<string, string>[], index: number) => {
185+
responseSetting.splice(index, 1)
186+
}
107187
108188
/** 保存配置 */
109189
const saveConfig = async () => {

src/components/SimpleProcessDesignerV2/src/nodes-config/components/HttpRequestParamSetting.vue

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@
142142
</template>
143143
<script setup lang="ts">
144144
import { HttpRequestParam, BPM_HTTP_REQUEST_PARAM_TYPES, BpmHttpRequestParamTypeEnum } from '../../consts'
145-
import { useFormFields } from '../../node'
145+
import { useFormFieldsAndStartUser } from '../../node'
146146
defineOptions({
147147
name: 'HttpRequestParamSetting'
148148
})
@@ -164,16 +164,19 @@ const props = defineProps({
164164
}
165165
})
166166
167-
const formFieldOptions = useFormFields()
168-
169-
const addHttpRequestParam = (arr: ListenerParam[]) => {
167+
// 流程表单字段,发起人字段
168+
const formFieldOptions = useFormFieldsAndStartUser()
169+
/** 添加请求配置项 */
170+
const addHttpRequestParam = (arr: HttpRequestParam[]) => {
170171
arr.push({
171172
key: '',
172-
type: ListenerParamTypeEnum.FIXED_VALUE,
173+
type: BpmHttpRequestParamTypeEnum.FIXED_VALUE,
173174
value: ''
174175
})
175176
}
176-
const deleteHttpRequestParam = (arr: ListenerParam[], index: number) => {
177+
178+
/** 删除请求配置项 */
179+
const deleteHttpRequestParam = (arr: HttpRequestParam[], index: number) => {
177180
arr.splice(index, 1)
178181
}
179182
</script>

0 commit comments

Comments
 (0)