Merge branch 'dev' into dev-cjw
This commit is contained in:
@ -237,7 +237,8 @@ export enum NodeEventType {
|
||||
//事件执行类型
|
||||
export enum NodeEventExType {
|
||||
API = 0, //api
|
||||
LITEFLOW, //规则引擎
|
||||
LITEFLOW = 1, //规则引擎
|
||||
SERVICE = 2, //类注入
|
||||
}
|
||||
|
||||
//用户节点超时处理
|
||||
|
||||
@ -105,6 +105,15 @@ export interface ProcessConfig {
|
||||
timeoutRemidConfig: TimeoutConfig; //超时提醒配置
|
||||
relationProcessConfigs: Array<RelationProcessConfig>; //关联任务
|
||||
processParamConfigs: ProcessConfigParameter; //流程参数
|
||||
globalStartEventConfigs: NodeEventConfig[];//全局 用户节点 结束事件
|
||||
globalEndEventConfigs: NodeEventConfig[];//全局 用户节点 结束事件
|
||||
globalPrequalifyBeforeEventConfigs: NodeEventConfig[];//预审前
|
||||
globalPrequalifyAfterEventConfigs: NodeEventConfig[];//预审后
|
||||
globalFinishEventConfigs: NodeEventConfig[];//终止事件
|
||||
globalRejectEventConfigs: NodeEventConfig[];//全局退回事件
|
||||
globalAgreeEventConfigs: NodeEventConfig[];//全局同意事件
|
||||
globalSuspendedEventConfigs: NodeEventConfig[];//全局 挂起/暂停事件
|
||||
globalRestoreEventConfigs: NodeEventConfig[];//全局 恢复事件
|
||||
xmlContent: String; //xml
|
||||
}
|
||||
|
||||
|
||||
@ -85,6 +85,15 @@ export const processConfig: ProcessConfig = {
|
||||
},
|
||||
relationProcessConfigs: [], //关联任务
|
||||
processParamConfigs: [], //流程参数
|
||||
globalStartEventConfigs: [],//全局 用户节点 结束事件
|
||||
globalEndEventConfigs: [],//全局 用户节点 结束事件
|
||||
globalPrequalifyBeforeEventConfigs: [],//预审前
|
||||
globalPrequalifyAfterEventConfigs: [],//预审后
|
||||
globalFinishEventConfigs: [],//终止事件
|
||||
globalRejectEventConfigs: [],//全局退回事件
|
||||
globalAgreeEventConfigs: [],//全局同意事件
|
||||
globalSuspendedEventConfigs: [],//全局 挂起/暂停事件
|
||||
globalRestoreEventConfigs: [],//全局 恢复事件
|
||||
xmlContent: '',
|
||||
};
|
||||
// 默认属性
|
||||
|
||||
@ -23,6 +23,9 @@
|
||||
<a-tab-pane key="7" :tab="t('流程参数')">
|
||||
<ProcessParameters />
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="8" :tab="t('全局事件监听')">
|
||||
<ProcessGlobalEvent />
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
</div>
|
||||
</template>
|
||||
@ -35,6 +38,7 @@
|
||||
import AssociatedFunctions from '/@bpmn/panel/process/functionForm/Index.vue';
|
||||
import ProcessTimeout from '/@bpmn/panel/process/ProcessTimeout.vue';
|
||||
import ProcessRelated from '/@bpmn/panel/process/related/Index.vue';
|
||||
import ProcessGlobalEvent from '/@bpmn/panel/process/globalEvent/Index.vue';
|
||||
import ProcessParameters from '/@bpmn/components/parameters/Process.vue';
|
||||
import { useI18n } from '/@/hooks/web/useI18n';
|
||||
const { t } = useI18n();
|
||||
|
||||
@ -0,0 +1,793 @@
|
||||
<template>
|
||||
<a-tabs>
|
||||
<a-tab-pane key="1" :tab="t('用户节点开始事件')">
|
||||
<div class="process-top">
|
||||
<a-button type="primary" @click="addGlobalStartEvent">
|
||||
{{ t('添加全局用户节点开始事件') }}
|
||||
</a-button>
|
||||
</div>
|
||||
<a-table
|
||||
:columns="columns"
|
||||
:dataSource="processInfo.globalStartEventConfigs"
|
||||
:pagination="false"
|
||||
>
|
||||
<template #headerCell="{ column }">
|
||||
<template v-if="column.key === 'sort'">
|
||||
<svg class="icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-fangxiang1" />
|
||||
</svg>
|
||||
</template>
|
||||
</template>
|
||||
<template #bodyCell="{ column, record, index }">
|
||||
<template v-if="column.key === 'sort'">
|
||||
<svg class="icon draggable-icon" aria-hidden="true" style="cursor: move">
|
||||
<use xlink:href="#icon-paixu" />
|
||||
</svg>
|
||||
</template>
|
||||
<template v-if="column.key === 'type'">
|
||||
<a-select v-model:value="record[column.dataIndex]">
|
||||
<a-select-option :value="0">{{ t('执行API') }}</a-select-option>
|
||||
<a-select-option :value="1">{{ t('规则引擎') }}</a-select-option>
|
||||
<a-select-option :value="2">{{ t('类注入') }}</a-select-option>
|
||||
</a-select>
|
||||
</template>
|
||||
<template v-if="column.key === 'operateConfig'">
|
||||
<!-- <a-input
|
||||
v-if="record.type === NodeEventExType.API"
|
||||
v-model:value="record['apiConfig'].path"
|
||||
@click="showConfig(NodeEventType.START, index)"
|
||||
>
|
||||
<template #suffix>
|
||||
<Icon icon="ant-design:ellipsis-outlined" />
|
||||
</template>
|
||||
</a-input> -->
|
||||
<ScriptApiSelect
|
||||
v-if="record.type === NodeEventExType.API"
|
||||
style="width: 100%"
|
||||
v-model="record['apiConfig']"
|
||||
:need-hide-components="true"
|
||||
/>
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-else-if="record.type === NodeEventExType.LITEFLOW"
|
||||
v-model:value="record['liteflowId']"
|
||||
:options="liteFlowOptions"
|
||||
:field-names="{ label: 'chainName', value: 'id' }"
|
||||
/>
|
||||
<a-input
|
||||
style="width: 100%"
|
||||
v-else-if="record.type === NodeEventExType.SERVICE"
|
||||
v-model:value="record['serviceName']"
|
||||
/>
|
||||
</template>
|
||||
<template v-if="column.key === 'action'">
|
||||
<DeleteTwoTone two-tone-color="#ff8080" @click="deleteStartEvent(index)" />
|
||||
</template>
|
||||
</template>
|
||||
</a-table>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="2" :tab="t('用户节点结束事件')">
|
||||
<div class="process-top">
|
||||
<a-button type="primary" @click="addGlobalEndEvent">
|
||||
{{ t('添加全局用户节点结束事件') }}
|
||||
</a-button>
|
||||
</div>
|
||||
<a-table
|
||||
:columns="columns"
|
||||
:dataSource="processInfo.globalEndEventConfigs"
|
||||
:pagination="false"
|
||||
>
|
||||
<template #headerCell="{ column }">
|
||||
<template v-if="column.key === 'sort'">
|
||||
<svg class="icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-fangxiang1" />
|
||||
</svg>
|
||||
</template>
|
||||
</template>
|
||||
<template #bodyCell="{ column, record, index }">
|
||||
<template v-if="column.key === 'sort'">
|
||||
<svg class="icon draggable-icon" aria-hidden="true" style="cursor: move">
|
||||
<use xlink:href="#icon-paixu" />
|
||||
</svg>
|
||||
</template>
|
||||
<template v-if="column.key === 'type'">
|
||||
<a-select v-model:value="record[column.dataIndex]">
|
||||
<a-select-option :value="0">{{ t('执行API') }}</a-select-option>
|
||||
<a-select-option :value="1">{{ t('规则引擎') }}</a-select-option>
|
||||
<a-select-option :value="2">{{ t('类注入') }}</a-select-option>
|
||||
</a-select>
|
||||
</template>
|
||||
<template v-if="column.key === 'operateConfig'">
|
||||
<!-- <a-input
|
||||
v-if="record.type === NodeEventExType.API"
|
||||
v-model:value="record['apiConfig'].path"
|
||||
@click="showConfig(NodeEventType.START, index)"
|
||||
>
|
||||
<template #suffix>
|
||||
<Icon icon="ant-design:ellipsis-outlined" />
|
||||
</template>
|
||||
</a-input> -->
|
||||
<ScriptApiSelect
|
||||
v-if="record.type === NodeEventExType.API"
|
||||
style="width: 100%"
|
||||
v-model="record['apiConfig']"
|
||||
:need-hide-components="true"
|
||||
/>
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-else-if="record.type === NodeEventExType.LITEFLOW"
|
||||
v-model:value="record['liteflowId']"
|
||||
:options="liteFlowOptions"
|
||||
:field-names="{ label: 'chainName', value: 'id' }"
|
||||
/>
|
||||
<a-input
|
||||
style="width: 100%"
|
||||
v-else-if="record.type === NodeEventExType.SERVICE"
|
||||
v-model:value="record['serviceName']"
|
||||
/>
|
||||
</template>
|
||||
<template v-if="column.key === 'action'">
|
||||
<DeleteTwoTone two-tone-color="#ff8080" @click="deleteEndEvent(index)" />
|
||||
</template>
|
||||
</template>
|
||||
</a-table>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="3" :tab="t('全局预审前事件')">
|
||||
<div class="process-top">
|
||||
<a-button type="primary" @click="addGlobalPrequalifyBeforeEvent">
|
||||
{{ t('添加全局预审前事件') }}
|
||||
</a-button>
|
||||
</div>
|
||||
<a-table
|
||||
:columns="columns"
|
||||
:dataSource="processInfo.globalPrequalifyBeforeEventConfigs"
|
||||
:pagination="false"
|
||||
>
|
||||
<template #headerCell="{ column }">
|
||||
<template v-if="column.key === 'sort'">
|
||||
<svg class="icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-fangxiang1" />
|
||||
</svg>
|
||||
</template>
|
||||
</template>
|
||||
<template #bodyCell="{ column, record, index }">
|
||||
<template v-if="column.key === 'sort'">
|
||||
<svg class="icon draggable-icon" aria-hidden="true" style="cursor: move">
|
||||
<use xlink:href="#icon-paixu" />
|
||||
</svg>
|
||||
</template>
|
||||
<template v-if="column.key === 'type'">
|
||||
<a-select v-model:value="record[column.dataIndex]">
|
||||
<a-select-option :value="0">{{ t('执行API') }}</a-select-option>
|
||||
<a-select-option :value="1">{{ t('规则引擎') }}</a-select-option>
|
||||
<a-select-option :value="2">{{ t('类注入') }}</a-select-option>
|
||||
</a-select>
|
||||
</template>
|
||||
<template v-if="column.key === 'operateConfig'">
|
||||
<!-- <a-input
|
||||
v-if="record.type === NodeEventExType.API"
|
||||
v-model:value="record['apiConfig'].path"
|
||||
@click="showConfig(NodeEventType.START, index)"
|
||||
>
|
||||
<template #suffix>
|
||||
<Icon icon="ant-design:ellipsis-outlined" />
|
||||
</template>
|
||||
</a-input> -->
|
||||
<ScriptApiSelect
|
||||
v-if="record.type === NodeEventExType.API"
|
||||
style="width: 100%"
|
||||
v-model="record['apiConfig']"
|
||||
:need-hide-components="true"
|
||||
/>
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-else-if="record.type === NodeEventExType.LITEFLOW"
|
||||
v-model:value="record['liteflowId']"
|
||||
:options="liteFlowOptions"
|
||||
:field-names="{ label: 'chainName', value: 'id' }"
|
||||
/>
|
||||
<a-input
|
||||
style="width: 100%"
|
||||
v-else-if="record.type === NodeEventExType.SERVICE"
|
||||
v-model:value="record['serviceName']"
|
||||
/>
|
||||
</template>
|
||||
<template v-if="column.key === 'action'">
|
||||
<DeleteTwoTone two-tone-color="#ff8080" @click="deletePrequalifyBeforeEvent(index)" />
|
||||
</template>
|
||||
</template>
|
||||
</a-table>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="4" :tab="t('全局预审后事件')">
|
||||
<div class="process-top">
|
||||
<a-button type="primary" @click="addGlobalPrequalifyAfterEvent">
|
||||
{{ t('添加全局预审后事件') }}
|
||||
</a-button>
|
||||
</div>
|
||||
<a-table
|
||||
:columns="columns"
|
||||
:dataSource="processInfo.globalPrequalifyAfterEventConfigs"
|
||||
:pagination="false"
|
||||
>
|
||||
<template #headerCell="{ column }">
|
||||
<template v-if="column.key === 'sort'">
|
||||
<svg class="icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-fangxiang1" />
|
||||
</svg>
|
||||
</template>
|
||||
</template>
|
||||
<template #bodyCell="{ column, record, index }">
|
||||
<template v-if="column.key === 'sort'">
|
||||
<svg class="icon draggable-icon" aria-hidden="true" style="cursor: move">
|
||||
<use xlink:href="#icon-paixu" />
|
||||
</svg>
|
||||
</template>
|
||||
<template v-if="column.key === 'type'">
|
||||
<a-select v-model:value="record[column.dataIndex]">
|
||||
<a-select-option :value="0">{{ t('执行API') }}</a-select-option>
|
||||
<a-select-option :value="1">{{ t('规则引擎') }}</a-select-option>
|
||||
<a-select-option :value="2">{{ t('类注入') }}</a-select-option>
|
||||
</a-select>
|
||||
</template>
|
||||
<template v-if="column.key === 'operateConfig'">
|
||||
<!-- <a-input
|
||||
v-if="record.type === NodeEventExType.API"
|
||||
v-model:value="record['apiConfig'].path"
|
||||
@click="showConfig(NodeEventType.START, index)"
|
||||
>
|
||||
<template #suffix>
|
||||
<Icon icon="ant-design:ellipsis-outlined" />
|
||||
</template>
|
||||
</a-input> -->
|
||||
<ScriptApiSelect
|
||||
v-if="record.type === NodeEventExType.API"
|
||||
style="width: 100%"
|
||||
v-model="record['apiConfig']"
|
||||
:need-hide-components="true"
|
||||
/>
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-else-if="record.type === NodeEventExType.LITEFLOW"
|
||||
v-model:value="record['liteflowId']"
|
||||
:options="liteFlowOptions"
|
||||
:field-names="{ label: 'chainName', value: 'id' }"
|
||||
/>
|
||||
<a-input
|
||||
style="width: 100%"
|
||||
v-else-if="record.type === NodeEventExType.SERVICE"
|
||||
v-model:value="record['serviceName']"
|
||||
/>
|
||||
</template>
|
||||
<template v-if="column.key === 'action'">
|
||||
<DeleteTwoTone two-tone-color="#ff8080" @click="deletePrequalifyAfterEvent(index)" />
|
||||
</template>
|
||||
</template>
|
||||
</a-table>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="5" :tab="t('终止事件')">
|
||||
<div class="process-top">
|
||||
<a-button type="primary" @click="addGlobalFinishEvent">
|
||||
{{ t('添加终止事件') }}
|
||||
</a-button>
|
||||
</div>
|
||||
<a-table
|
||||
:columns="columns"
|
||||
:dataSource="processInfo.globalFinishEventConfigs"
|
||||
:pagination="false"
|
||||
>
|
||||
<template #headerCell="{ column }">
|
||||
<template v-if="column.key === 'sort'">
|
||||
<svg class="icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-fangxiang1" />
|
||||
</svg>
|
||||
</template>
|
||||
</template>
|
||||
<template #bodyCell="{ column, record, index }">
|
||||
<template v-if="column.key === 'sort'">
|
||||
<svg class="icon draggable-icon" aria-hidden="true" style="cursor: move">
|
||||
<use xlink:href="#icon-paixu" />
|
||||
</svg>
|
||||
</template>
|
||||
<template v-if="column.key === 'type'">
|
||||
<a-select v-model:value="record[column.dataIndex]">
|
||||
<a-select-option :value="0">{{ t('执行API') }}</a-select-option>
|
||||
<a-select-option :value="1">{{ t('规则引擎') }}</a-select-option>
|
||||
<a-select-option :value="2">{{ t('类注入') }}</a-select-option>
|
||||
</a-select>
|
||||
</template>
|
||||
<template v-if="column.key === 'operateConfig'">
|
||||
<!-- <a-input
|
||||
v-if="record.type === NodeEventExType.API"
|
||||
v-model:value="record['apiConfig'].path"
|
||||
@click="showConfig(NodeEventType.START, index)"
|
||||
>
|
||||
<template #suffix>
|
||||
<Icon icon="ant-design:ellipsis-outlined" />
|
||||
</template>
|
||||
</a-input> -->
|
||||
<ScriptApiSelect
|
||||
v-if="record.type === NodeEventExType.API"
|
||||
style="width: 100%"
|
||||
v-model="record['apiConfig']"
|
||||
:need-hide-components="true"
|
||||
/>
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-else-if="record.type === NodeEventExType.LITEFLOW"
|
||||
v-model:value="record['liteflowId']"
|
||||
:options="liteFlowOptions"
|
||||
:field-names="{ label: 'chainName', value: 'id' }"
|
||||
/>
|
||||
<a-input
|
||||
style="width: 100%"
|
||||
v-else-if="record.type === NodeEventExType.SERVICE"
|
||||
v-model:value="record['serviceName']"
|
||||
/>
|
||||
</template>
|
||||
<template v-if="column.key === 'action'">
|
||||
<DeleteTwoTone two-tone-color="#ff8080" @click="deleteFinishEvent(index)" />
|
||||
</template>
|
||||
</template>
|
||||
</a-table>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="6" :tab="t('全局退回事件')">
|
||||
<div class="process-top">
|
||||
<a-button type="primary" @click="addGlobalRejectEvent">
|
||||
{{ t('添加全局退回事件') }}
|
||||
</a-button>
|
||||
</div>
|
||||
<a-table
|
||||
:columns="columns"
|
||||
:dataSource="processInfo.globalRejectEventConfigs"
|
||||
:pagination="false"
|
||||
>
|
||||
<template #headerCell="{ column }">
|
||||
<template v-if="column.key === 'sort'">
|
||||
<svg class="icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-fangxiang1" />
|
||||
</svg>
|
||||
</template>
|
||||
</template>
|
||||
<template #bodyCell="{ column, record, index }">
|
||||
<template v-if="column.key === 'sort'">
|
||||
<svg class="icon draggable-icon" aria-hidden="true" style="cursor: move">
|
||||
<use xlink:href="#icon-paixu" />
|
||||
</svg>
|
||||
</template>
|
||||
<template v-if="column.key === 'type'">
|
||||
<a-select v-model:value="record[column.dataIndex]">
|
||||
<a-select-option :value="0">{{ t('执行API') }}</a-select-option>
|
||||
<a-select-option :value="1">{{ t('规则引擎') }}</a-select-option>
|
||||
<a-select-option :value="2">{{ t('类注入') }}</a-select-option>
|
||||
</a-select>
|
||||
</template>
|
||||
<template v-if="column.key === 'operateConfig'">
|
||||
<!-- <a-input
|
||||
v-if="record.type === NodeEventExType.API"
|
||||
v-model:value="record['apiConfig'].path"
|
||||
@click="showConfig(NodeEventType.START, index)"
|
||||
>
|
||||
<template #suffix>
|
||||
<Icon icon="ant-design:ellipsis-outlined" />
|
||||
</template>
|
||||
</a-input> -->
|
||||
<ScriptApiSelect
|
||||
v-if="record.type === NodeEventExType.API"
|
||||
style="width: 100%"
|
||||
v-model="record['apiConfig']"
|
||||
:need-hide-components="true"
|
||||
/>
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-else-if="record.type === NodeEventExType.LITEFLOW"
|
||||
v-model:value="record['liteflowId']"
|
||||
:options="liteFlowOptions"
|
||||
:field-names="{ label: 'chainName', value: 'id' }"
|
||||
/>
|
||||
<a-input
|
||||
style="width: 100%"
|
||||
v-else-if="record.type === NodeEventExType.SERVICE"
|
||||
v-model:value="record['serviceName']"
|
||||
/>
|
||||
</template>
|
||||
<template v-if="column.key === 'action'">
|
||||
<DeleteTwoTone two-tone-color="#ff8080" @click="deleteRejectEvent(index)" />
|
||||
</template>
|
||||
</template>
|
||||
</a-table>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="7" :tab="t('全局同意事件')">
|
||||
<div class="process-top">
|
||||
<a-button type="primary" @click="addGlobalAgreeEvent">
|
||||
{{ t('添加全局同意事件') }}
|
||||
</a-button>
|
||||
</div>
|
||||
<a-table
|
||||
:columns="columns"
|
||||
:dataSource="processInfo.globalAgreeEventConfigs"
|
||||
:pagination="false"
|
||||
>
|
||||
<template #headerCell="{ column }">
|
||||
<template v-if="column.key === 'sort'">
|
||||
<svg class="icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-fangxiang1" />
|
||||
</svg>
|
||||
</template>
|
||||
</template>
|
||||
<template #bodyCell="{ column, record, index }">
|
||||
<template v-if="column.key === 'sort'">
|
||||
<svg class="icon draggable-icon" aria-hidden="true" style="cursor: move">
|
||||
<use xlink:href="#icon-paixu" />
|
||||
</svg>
|
||||
</template>
|
||||
<template v-if="column.key === 'type'">
|
||||
<a-select v-model:value="record[column.dataIndex]">
|
||||
<a-select-option :value="0">{{ t('执行API') }}</a-select-option>
|
||||
<a-select-option :value="1">{{ t('规则引擎') }}</a-select-option>
|
||||
<a-select-option :value="2">{{ t('类注入') }}</a-select-option>
|
||||
</a-select>
|
||||
</template>
|
||||
<template v-if="column.key === 'operateConfig'">
|
||||
<!-- <a-input
|
||||
v-if="record.type === NodeEventExType.API"
|
||||
v-model:value="record['apiConfig'].path"
|
||||
@click="showConfig(NodeEventType.START, index)"
|
||||
>
|
||||
<template #suffix>
|
||||
<Icon icon="ant-design:ellipsis-outlined" />
|
||||
</template>
|
||||
</a-input> -->
|
||||
<ScriptApiSelect
|
||||
v-if="record.type === NodeEventExType.API"
|
||||
style="width: 100%"
|
||||
v-model="record['apiConfig']"
|
||||
:need-hide-components="true"
|
||||
/>
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-else-if="record.type === NodeEventExType.LITEFLOW"
|
||||
v-model:value="record['liteflowId']"
|
||||
:options="liteFlowOptions"
|
||||
:field-names="{ label: 'chainName', value: 'id' }"
|
||||
/>
|
||||
<a-input
|
||||
style="width: 100%"
|
||||
v-else-if="record.type === NodeEventExType.SERVICE"
|
||||
v-model:value="record['serviceName']"
|
||||
/>
|
||||
</template>
|
||||
<template v-if="column.key === 'action'">
|
||||
<DeleteTwoTone two-tone-color="#ff8080" @click="deleteAgreeEvent(index)" />
|
||||
</template>
|
||||
</template>
|
||||
</a-table>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="8" :tab="t('挂起事件')">
|
||||
<div class="process-top">
|
||||
<a-button type="primary" @click="addGlobalSuspendedEvent">
|
||||
{{ t('添加挂起事件') }}
|
||||
</a-button>
|
||||
</div>
|
||||
<a-table
|
||||
:columns="columns"
|
||||
:dataSource="processInfo.globalSuspendedEventConfigs"
|
||||
:pagination="false"
|
||||
>
|
||||
<template #headerCell="{ column }">
|
||||
<template v-if="column.key === 'sort'">
|
||||
<svg class="icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-fangxiang1" />
|
||||
</svg>
|
||||
</template>
|
||||
</template>
|
||||
<template #bodyCell="{ column, record, index }">
|
||||
<template v-if="column.key === 'sort'">
|
||||
<svg class="icon draggable-icon" aria-hidden="true" style="cursor: move">
|
||||
<use xlink:href="#icon-paixu" />
|
||||
</svg>
|
||||
</template>
|
||||
<template v-if="column.key === 'type'">
|
||||
<a-select v-model:value="record[column.dataIndex]">
|
||||
<a-select-option :value="0">{{ t('执行API') }}</a-select-option>
|
||||
<a-select-option :value="1">{{ t('规则引擎') }}</a-select-option>
|
||||
<a-select-option :value="2">{{ t('类注入') }}</a-select-option>
|
||||
</a-select>
|
||||
</template>
|
||||
<template v-if="column.key === 'operateConfig'">
|
||||
<!-- <a-input
|
||||
v-if="record.type === NodeEventExType.API"
|
||||
v-model:value="record['apiConfig'].path"
|
||||
@click="showConfig(NodeEventType.START, index)"
|
||||
>
|
||||
<template #suffix>
|
||||
<Icon icon="ant-design:ellipsis-outlined" />
|
||||
</template>
|
||||
</a-input> -->
|
||||
<ScriptApiSelect
|
||||
v-if="record.type === NodeEventExType.API"
|
||||
style="width: 100%"
|
||||
v-model="record['apiConfig']"
|
||||
:need-hide-components="true"
|
||||
/>
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-else-if="record.type === NodeEventExType.LITEFLOW"
|
||||
v-model:value="record['liteflowId']"
|
||||
:options="liteFlowOptions"
|
||||
:field-names="{ label: 'chainName', value: 'id' }"
|
||||
/>
|
||||
<a-input
|
||||
style="width: 100%"
|
||||
v-else-if="record.type === NodeEventExType.SERVICE"
|
||||
v-model:value="record['serviceName']"
|
||||
/>
|
||||
</template>
|
||||
<template v-if="column.key === 'action'">
|
||||
<DeleteTwoTone two-tone-color="#ff8080" @click="deleteSuspendedEvent(index)" />
|
||||
</template>
|
||||
</template>
|
||||
</a-table>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="9" :tab="t('恢复事件')">
|
||||
<div class="process-top">
|
||||
<a-button type="primary" @click="addGlobalRestoreEvent">
|
||||
{{ t('添加恢复事件') }}
|
||||
</a-button>
|
||||
</div>
|
||||
<a-table
|
||||
:columns="columns"
|
||||
:dataSource="processInfo.globalRestoreEventConfigs"
|
||||
:pagination="false"
|
||||
>
|
||||
<template #headerCell="{ column }">
|
||||
<template v-if="column.key === 'sort'">
|
||||
<svg class="icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-fangxiang1" />
|
||||
</svg>
|
||||
</template>
|
||||
</template>
|
||||
<template #bodyCell="{ column, record, index }">
|
||||
<template v-if="column.key === 'sort'">
|
||||
<svg class="icon draggable-icon" aria-hidden="true" style="cursor: move">
|
||||
<use xlink:href="#icon-paixu" />
|
||||
</svg>
|
||||
</template>
|
||||
<template v-if="column.key === 'type'">
|
||||
<a-select v-model:value="record[column.dataIndex]">
|
||||
<a-select-option :value="0">{{ t('执行API') }}</a-select-option>
|
||||
<a-select-option :value="1">{{ t('规则引擎') }}</a-select-option>
|
||||
<a-select-option :value="2">{{ t('类注入') }}</a-select-option>
|
||||
</a-select>
|
||||
</template>
|
||||
<template v-if="column.key === 'operateConfig'">
|
||||
<!-- <a-input
|
||||
v-if="record.type === NodeEventExType.API"
|
||||
v-model:value="record['apiConfig'].path"
|
||||
@click="showConfig(NodeEventType.START, index)"
|
||||
>
|
||||
<template #suffix>
|
||||
<Icon icon="ant-design:ellipsis-outlined" />
|
||||
</template>
|
||||
</a-input> -->
|
||||
<ScriptApiSelect
|
||||
v-if="record.type === NodeEventExType.API"
|
||||
style="width: 100%"
|
||||
v-model="record['apiConfig']"
|
||||
:need-hide-components="true"
|
||||
/>
|
||||
<a-select
|
||||
style="width: 100%"
|
||||
v-else-if="record.type === NodeEventExType.LITEFLOW"
|
||||
v-model:value="record['liteflowId']"
|
||||
:options="liteFlowOptions"
|
||||
:field-names="{ label: 'chainName', value: 'id' }"
|
||||
/>
|
||||
<a-input
|
||||
style="width: 100%"
|
||||
v-else-if="record.type === NodeEventExType.SERVICE"
|
||||
v-model:value="record['serviceName']"
|
||||
/>
|
||||
</template>
|
||||
<template v-if="column.key === 'action'">
|
||||
<DeleteTwoTone two-tone-color="#ff8080" @click="deleteRestoreEvent(index)" />
|
||||
</template>
|
||||
</template>
|
||||
</a-table>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { inject, nextTick, onMounted, ref, watch } from 'vue';
|
||||
import ScriptApiSelect from '/@bpmn/components/arguments/ScriptApiSelect.vue';
|
||||
import { useI18n } from '/@/hooks/web/useI18n';
|
||||
import { DeleteTwoTone } from '@ant-design/icons-vue';
|
||||
import { useBpmnStore } from '/@bpmn/store/bpmn';
|
||||
import { storeToRefs } from 'pinia';
|
||||
import { NodeEventExType } from '/@/enums/workflowEnum';
|
||||
import { NodeEventConfig } from '/@/model/workflow/workflowConfig';
|
||||
const { t } = useI18n();
|
||||
const bpmnStore = useBpmnStore();
|
||||
|
||||
const store = useBpmnStore();
|
||||
const { processInfo } = storeToRefs(store);
|
||||
const liteFlowOptions = ref();
|
||||
const columns = ref([
|
||||
{
|
||||
dataIndex: 'sort',
|
||||
key: 'sort',
|
||||
},
|
||||
{
|
||||
title: t('操作类别'),
|
||||
dataIndex: 'type',
|
||||
key: 'type',
|
||||
width: '35%',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: t('操作配置'),
|
||||
dataIndex: 'operateConfig',
|
||||
key: 'operateConfig',
|
||||
width: '50%',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: t('操作'),
|
||||
dataIndex: 'action',
|
||||
key: 'action',
|
||||
width: '25%',
|
||||
align: 'center',
|
||||
},
|
||||
]);
|
||||
|
||||
const addGlobalStartEvent = () => {
|
||||
processInfo.value.globalStartEventConfigs.push({
|
||||
type: NodeEventExType.API,
|
||||
apiConfig: {},
|
||||
} as NodeEventConfig);
|
||||
};
|
||||
|
||||
const deleteStartEvent = (index) => {
|
||||
processInfo.value.globalStartEventConfigs.splice(index, 1);
|
||||
};
|
||||
const addGlobalEndEvent = () => {
|
||||
processInfo.value.globalEndEventConfigs.push({
|
||||
type: NodeEventExType.API,
|
||||
apiConfig: {},
|
||||
} as NodeEventConfig);
|
||||
};
|
||||
|
||||
const deleteEndEvent = (index) => {
|
||||
processInfo.value.globalEndEventConfigs.splice(index, 1);
|
||||
};
|
||||
|
||||
const addGlobalPrequalifyBeforeEvent = () => {
|
||||
processInfo.value.globalPrequalifyBeforeEventConfigs.push({
|
||||
type: NodeEventExType.API,
|
||||
apiConfig: {},
|
||||
} as NodeEventConfig);
|
||||
};
|
||||
|
||||
const deletePrequalifyBeforeEvent = (index) => {
|
||||
processInfo.value.globalPrequalifyBeforeEventConfigs.splice(index, 1);
|
||||
};
|
||||
|
||||
const addGlobalPrequalifyAfterEvent = () => {
|
||||
processInfo.value.globalPrequalifyAfterEventConfigs.push({
|
||||
type: NodeEventExType.API,
|
||||
apiConfig: {},
|
||||
} as NodeEventConfig);
|
||||
};
|
||||
|
||||
const deletePrequalifyAfterEvent = (index) => {
|
||||
processInfo.value.globalPrequalifyAfterEventConfigs.splice(index, 1);
|
||||
};
|
||||
|
||||
const addGlobalFinishEvent = () => {
|
||||
processInfo.value.globalFinishEventConfigs.push({
|
||||
type: NodeEventExType.API,
|
||||
apiConfig: {},
|
||||
} as NodeEventConfig);
|
||||
};
|
||||
|
||||
const deleteFinishEvent = (index) => {
|
||||
processInfo.value.globalFinishEventConfigs.splice(index, 1);
|
||||
};
|
||||
|
||||
const addGlobalRejectEvent = () => {
|
||||
processInfo.value.globalRejectEventConfigs.push({
|
||||
type: NodeEventExType.API,
|
||||
apiConfig: {},
|
||||
} as NodeEventConfig);
|
||||
};
|
||||
|
||||
const deleteRejectEvent = (index) => {
|
||||
processInfo.value.globalRejectEventConfigs.splice(index, 1);
|
||||
};
|
||||
|
||||
const addGlobalAgreeEvent = () => {
|
||||
processInfo.value.globalAgreeEventConfigs.push({
|
||||
type: NodeEventExType.API,
|
||||
apiConfig: {},
|
||||
} as NodeEventConfig);
|
||||
};
|
||||
|
||||
const deleteAgreeEvent = (index) => {
|
||||
processInfo.value.globalAgreeEventConfigs.splice(index, 1);
|
||||
};
|
||||
|
||||
const addGlobalSuspendedEvent = () => {
|
||||
processInfo.value.globalSuspendedEventConfigs.push({
|
||||
type: NodeEventExType.API,
|
||||
apiConfig: {},
|
||||
} as NodeEventConfig);
|
||||
};
|
||||
|
||||
const deleteSuspendedEvent = (index) => {
|
||||
processInfo.value.globalSuspendedEventConfigs.splice(index, 1);
|
||||
};
|
||||
|
||||
const addGlobalRestoreEvent = () => {
|
||||
processInfo.value.globalRestoreEventConfigs.push({
|
||||
type: NodeEventExType.API,
|
||||
apiConfig: {},
|
||||
} as NodeEventConfig);
|
||||
};
|
||||
|
||||
const deleteRestoreEvent = (index) => {
|
||||
processInfo.value.globalRestoreEventConfigs.splice(index, 1);
|
||||
};
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.node-box {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
box-shadow: -7px -1px 7px #dadcde;
|
||||
padding: 20px 30px 20px 20px;
|
||||
height: 100%;
|
||||
width: 410px;
|
||||
|
||||
.node-title {
|
||||
line-height: 20px;
|
||||
margin-bottom: 10px;
|
||||
padding-left: 6px;
|
||||
border-left: 6px solid #5e95ff;
|
||||
}
|
||||
|
||||
:deep(.ant-form-item) {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.process-top {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 10px;
|
||||
|
||||
.process-title {
|
||||
line-height: 18px;
|
||||
padding-left: 6px;
|
||||
border-left: 6px solid #5e95ff;
|
||||
}
|
||||
}
|
||||
|
||||
:deep(.ant-select) {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
:deep(.ant-table-cell) {
|
||||
padding: 10px !important;
|
||||
}
|
||||
|
||||
.icon {
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
vertical-align: -0.15em;
|
||||
fill: currentcolor;
|
||||
overflow: hidden;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user