|
3 | 3 | :append-to-body="true"
|
4 | 4 | v-model="settingVisible"
|
5 | 5 | :show-close="false"
|
6 |
| - :size="550" |
| 6 | + :size="580" |
7 | 7 | :before-close="saveConfig"
|
8 | 8 | class="justify-start"
|
9 | 9 | >
|
|
46 | 46 | v-model="configForm.candidateStrategy"
|
47 | 47 | @change="changeCandidateStrategy"
|
48 | 48 | >
|
49 |
| - <el-radio |
50 |
| - v-for="(dict, index) in CANDIDATE_STRATEGY" |
51 |
| - :key="index" |
52 |
| - :value="dict.value" |
53 |
| - :label="dict.value" |
54 |
| - > |
55 |
| - {{ dict.label }} |
56 |
| - </el-radio> |
| 49 | + <el-row> |
| 50 | + <el-col v-for="(dict, index) in CANDIDATE_STRATEGY" :key="index" :span="8"> |
| 51 | + <el-radio :value="dict.value" :label="dict.value"> |
| 52 | + {{ dict.label }} |
| 53 | + </el-radio> |
| 54 | + </el-col> |
| 55 | + </el-row> |
57 | 56 | </el-radio-group>
|
58 | 57 | </el-form-item>
|
59 | 58 | <el-form-item
|
|
148 | 147 | :key="idx"
|
149 | 148 | :label="item.title"
|
150 | 149 | :value="item.field"
|
151 |
| - :disabled ="!item.required" |
| 150 | + :disabled="!item.required" |
152 | 151 | />
|
153 | 152 | </el-select>
|
154 | 153 | </el-form-item>
|
|
163 | 162 | :key="idx"
|
164 | 163 | :label="item.title"
|
165 | 164 | :value="item.field"
|
166 |
| - :disabled ="!item.required" |
| 165 | + :disabled="!item.required" |
167 | 166 | />
|
168 | 167 | </el-select>
|
169 | 168 | </el-form-item>
|
|
435 | 434 | </div>
|
436 | 435 | </div>
|
437 | 436 | </el-tab-pane>
|
| 437 | + <el-tab-pane label="监听器" name="listener"> |
| 438 | + <div> |
| 439 | + <el-form label-position="top"> |
| 440 | + <el-divider content-position="left"> |
| 441 | + <el-text tag="b" size="large">创建任务</el-text> |
| 442 | + </el-divider> |
| 443 | + <el-form-item prop="createTaskListenerEnable"> |
| 444 | + <el-switch |
| 445 | + v-model="configForm.createTaskListenerEnable" |
| 446 | + active-text="开启" |
| 447 | + inactive-text="关闭" |
| 448 | + /> |
| 449 | + </el-form-item> |
| 450 | + <div v-if="configForm.createTaskListenerEnable"> |
| 451 | + <el-form-item> |
| 452 | + <el-alert |
| 453 | + title="仅支持POST请求,以请求体方式接收参数" |
| 454 | + type="warning" |
| 455 | + show-icon |
| 456 | + :closable="false" |
| 457 | + /> |
| 458 | + </el-form-item> |
| 459 | + <el-form-item label="请求地址" prop="createTaskListenerPath"> |
| 460 | + <el-input v-model="configForm.createTaskListenerPath" /> |
| 461 | + </el-form-item> |
| 462 | + <el-form-item label="请求头" prop="createTaskListenerHeader"> |
| 463 | + <div |
| 464 | + class="flex pt-2" |
| 465 | + v-for="(item, index) in configForm.createTaskListenerHeader" |
| 466 | + :key="index" |
| 467 | + > |
| 468 | + <div class="mr-2"> |
| 469 | + <el-input v-model="item.key" style="width: 160px" /> |
| 470 | + </div> |
| 471 | + <div class="mr-2"> |
| 472 | + <el-select v-model="item.type" style="width: 100px"> |
| 473 | + <el-option |
| 474 | + v-for="types in LISTENER_MAP_TYPES" |
| 475 | + :key="types.value" |
| 476 | + :label="types.label" |
| 477 | + :value="types.value" |
| 478 | + /> |
| 479 | + </el-select> |
| 480 | + </div> |
| 481 | + <div class="mr-2"> |
| 482 | + <el-input v-model="item.value" style="width: 160px" /> |
| 483 | + </div> |
| 484 | + <div class="mr-1 flex items-center"> |
| 485 | + <Icon |
| 486 | + icon="ep:delete" |
| 487 | + :size="18" |
| 488 | + @click="deleteTaskListenerMap(configForm.createTaskListenerHeader, index)" |
| 489 | + /> |
| 490 | + </div> |
| 491 | + </div> |
| 492 | + <el-button |
| 493 | + type="primary" |
| 494 | + text |
| 495 | + @click="addTaskListenerMap(configForm.createTaskListenerHeader)" |
| 496 | + > |
| 497 | + <Icon icon="ep:plus" class="mr-5px" />添加一行 |
| 498 | + </el-button> |
| 499 | + </el-form-item> |
| 500 | + <el-form-item label="请求体" prop="createTaskListenerBody"> |
| 501 | + <div |
| 502 | + class="flex pt-2" |
| 503 | + v-for="(item, index) in configForm.createTaskListenerBody" |
| 504 | + :key="index" |
| 505 | + > |
| 506 | + <div class="mr-2"> |
| 507 | + <el-input v-model="item.key" style="width: 160px" /> |
| 508 | + </div> |
| 509 | + <div class="mr-2"> |
| 510 | + <el-select v-model="item.type" style="width: 100px"> |
| 511 | + <el-option |
| 512 | + v-for="types in LISTENER_MAP_TYPES" |
| 513 | + :key="types.value" |
| 514 | + :label="types.label" |
| 515 | + :value="types.value" |
| 516 | + /> |
| 517 | + </el-select> |
| 518 | + </div> |
| 519 | + <div class="mr-2"> |
| 520 | + <el-input v-model="item.value" style="width: 160px" /> |
| 521 | + </div> |
| 522 | + <div class="mr-1 flex items-center"> |
| 523 | + <Icon |
| 524 | + icon="ep:delete" |
| 525 | + :size="18" |
| 526 | + @click="deleteTaskListenerMap(configForm.createTaskListenerBody, index)" |
| 527 | + /> |
| 528 | + </div> |
| 529 | + </div> |
| 530 | + <el-button |
| 531 | + type="primary" |
| 532 | + text |
| 533 | + @click="addTaskListenerMap(configForm.createTaskListenerBody)" |
| 534 | + > |
| 535 | + <Icon icon="ep:plus" class="mr-5px" />添加一行 |
| 536 | + </el-button> |
| 537 | + </el-form-item> |
| 538 | + </div> |
| 539 | + |
| 540 | + <el-divider content-position="left"> |
| 541 | + <el-text tag="b" size="large">指派任务执行人员</el-text> |
| 542 | + </el-divider> |
| 543 | + <el-form-item prop="assignTaskListenerEnable"> |
| 544 | + <el-switch |
| 545 | + v-model="configForm.assignTaskListenerEnable" |
| 546 | + active-text="开启" |
| 547 | + inactive-text="关闭" |
| 548 | + /> |
| 549 | + </el-form-item> |
| 550 | + |
| 551 | + <el-divider content-position="left"> |
| 552 | + <el-text tag="b" size="large">完成任务</el-text> |
| 553 | + </el-divider> |
| 554 | + <el-form-item prop="completeTaskListenerEnable"> |
| 555 | + <el-switch |
| 556 | + v-model="configForm.completeTaskListenerEnable" |
| 557 | + active-text="开启" |
| 558 | + inactive-text="关闭" |
| 559 | + /> |
| 560 | + </el-form-item> |
| 561 | + </el-form> |
| 562 | + </div> |
| 563 | + </el-tab-pane> |
438 | 564 | </el-tabs>
|
439 | 565 | <template #footer>
|
440 | 566 | <el-divider />
|
@@ -470,7 +596,8 @@ import {
|
470 | 596 | ASSIGN_EMPTY_HANDLER_TYPES,
|
471 | 597 | AssignEmptyHandlerType,
|
472 | 598 | FieldPermissionType,
|
473 |
| - ProcessVariableEnum |
| 599 | + ProcessVariableEnum, |
| 600 | + LISTENER_MAP_TYPES |
474 | 601 | } from '../consts'
|
475 | 602 |
|
476 | 603 | import {
|
@@ -514,7 +641,7 @@ const { settingVisible, closeDrawer, openDrawer } = useDrawer()
|
514 | 641 | // 节点名称配置
|
515 | 642 | const { nodeName, showInput, clickIcon, blurEvent } = useNodeName(NodeType.USER_TASK_NODE)
|
516 | 643 | // 激活的 Tab 标签页
|
517 |
| -const activeTabName = ref('user') |
| 644 | +const activeTabName = ref('listener') |
518 | 645 | // 表单字段权限设置
|
519 | 646 | const { formType, fieldsPermissionConfig, formFieldOptions, getNodeConfigFormFields } =
|
520 | 647 | useFormFieldsPermission(FieldPermissionType.READ)
|
@@ -663,6 +790,13 @@ const saveConfig = async () => {
|
663 | 790 | currentNode.value.fieldsPermission = fieldsPermissionConfig.value
|
664 | 791 | // 设置按钮权限
|
665 | 792 | currentNode.value.buttonsSetting = buttonsSetting.value
|
| 793 | + // 创建任务监听器 |
| 794 | + currentNode.value.createTaskListener = { |
| 795 | + enable: configForm.value.createTaskListenerEnable, |
| 796 | + path: configForm.value.createTaskListenerPath, |
| 797 | + header: configForm.value.createTaskListenerHeader, |
| 798 | + body: configForm.value.createTaskListenerBody |
| 799 | + } |
666 | 800 |
|
667 | 801 | currentNode.value.showText = showText
|
668 | 802 | settingVisible.value = false
|
@@ -714,6 +848,11 @@ const showUserTaskNodeConfig = (node: SimpleFlowNode) => {
|
714 | 848 | buttonsSetting.value = cloneDeep(node.buttonsSetting) || DEFAULT_BUTTON_SETTING
|
715 | 849 | // 4. 表单字段权限配置
|
716 | 850 | getNodeConfigFormFields(node.fieldsPermission)
|
| 851 | + // 创建任务监听器 |
| 852 | + configForm.value.createTaskListenerEnable = node.createTaskListener.enable |
| 853 | + configForm.value.createTaskListenerPath = node.createTaskListener.path |
| 854 | + configForm.value.createTaskListenerHeader = node.createTaskListener.header ?? [] |
| 855 | + configForm.value.createTaskListenerBody = node.createTaskListener.body ?? [] |
717 | 856 | }
|
718 | 857 |
|
719 | 858 | defineExpose({ openDrawer, showUserTaskNodeConfig }) // 暴露方法给父组件
|
@@ -826,6 +965,17 @@ function useTimeoutHandler() {
|
826 | 965 | cTimeoutMaxRemindCount
|
827 | 966 | }
|
828 | 967 | }
|
| 968 | +
|
| 969 | +const addTaskListenerMap = (arr) => { |
| 970 | + arr.push({ |
| 971 | + key: '', |
| 972 | + type: 1, |
| 973 | + value: '' |
| 974 | + }) |
| 975 | +} |
| 976 | +const deleteTaskListenerMap = (arr, index) => { |
| 977 | + arr.splice(index, 1) |
| 978 | +} |
829 | 979 | </script>
|
830 | 980 |
|
831 | 981 | <style lang="scss" scoped>
|
|
0 commit comments