feat: [bpm][ele] 仿钉钉设计器迁移问题修复

This commit is contained in:
jason
2025-11-23 00:06:12 +08:00
parent c01b09b64b
commit 0e6d92e328
6 changed files with 324 additions and 361 deletions

View File

@@ -206,7 +206,7 @@ onMounted(() => {
defineExpose({ showCopyTaskNodeConfig }); // 暴露方法给父组件 defineExpose({ showCopyTaskNodeConfig }); // 暴露方法给父组件
</script> </script>
<template> <template>
<Drawer class="w-1/3"> <Drawer class="w-2/5">
<template #title> <template #title>
<div class="config-header"> <div class="config-header">
<Input <Input

View File

@@ -12,6 +12,21 @@ import { useVbenDrawer } from '@vben/common-ui';
import { BpmModelFormType, BpmNodeTypeEnum } from '@vben/constants'; import { BpmModelFormType, BpmNodeTypeEnum } from '@vben/constants';
import { IconifyIcon } from '@vben/icons'; import { IconifyIcon } from '@vben/icons';
import {
ElCol,
ElForm,
ElFormItem,
ElInput,
ElOption,
ElRadio,
ElRadioGroup,
ElRow,
ElSelect,
ElTabPane,
ElTabs,
ElTreeSelect,
} from 'element-plus';
import { import {
CANDIDATE_STRATEGY, CANDIDATE_STRATEGY,
CandidateStrategy, CandidateStrategy,
@@ -190,7 +205,7 @@ onMounted(() => {
defineExpose({ showCopyTaskNodeConfig }); // 暴露方法给父组件 defineExpose({ showCopyTaskNodeConfig }); // 暴露方法给父组件
</script> </script>
<template> <template>
<Drawer class="w-1/3"> <Drawer class="w-2/5">
<template #title> <template #title>
<div class="config-header"> <div class="config-header">
<ElInput <ElInput
@@ -210,7 +225,7 @@ defineExpose({ showCopyTaskNodeConfig }); // 暴露方法给父组件
</div> </div>
</template> </template>
<ElTabs v-model="activeTabName"> <ElTabs v-model="activeTabName">
<ElTabPane :label="$t('message.copyTaskNodeConfig.copyUser')" name="user"> <ElTabPane label="抄送人" name="user">
<div> <div>
<ElForm <ElForm
ref="formRef" ref="formRef"
@@ -237,27 +252,21 @@ defineExpose({ showCopyTaskNodeConfig }); // 暴露方法给父组件
</ElRadioGroup> </ElRadioGroup>
</ElFormItem> </ElFormItem>
<FormItem <ElFormItem
v-if="configForm.candidateStrategy === CandidateStrategy.ROLE" v-if="configForm.candidateStrategy === CandidateStrategy.ROLE"
label="指定角色" label="指定角色"
name="roleIds" name="roleIds"
> >
<Select <ElSelect v-model="configForm.roleIds" clearable multiple>
v-model:value="configForm.roleIds" <ElOption
clearable
mode="multiple"
>
<SelectOption
v-for="item in roleOptions" v-for="item in roleOptions"
:key="item.id" :key="item.id"
:label="item.name" :label="item.name"
:value="item.id" :value="item.id!"
> />
{{ item.name }} </ElSelect>
</SelectOption> </ElFormItem>
</Select> <ElFormItem
</FormItem>
<FormItem
v-if=" v-if="
configForm.candidateStrategy === configForm.candidateStrategy ===
CandidateStrategy.DEPT_MEMBER || CandidateStrategy.DEPT_MEMBER ||
@@ -269,10 +278,10 @@ defineExpose({ showCopyTaskNodeConfig }); // 暴露方法给父组件
label="指定部门" label="指定部门"
name="deptIds" name="deptIds"
> >
<TreeSelect <ElTreeSelect
v-model:value="configForm.deptIds" v-model="configForm.deptIds"
:tree-data="deptTreeOptions" :data="deptTreeOptions"
:field-names="{ :props="{
label: 'name', label: 'name',
value: 'id', value: 'id',
children: 'children', children: 'children',
@@ -280,92 +289,72 @@ defineExpose({ showCopyTaskNodeConfig }); // 暴露方法给父组件
empty-text="加载中,请稍候" empty-text="加载中,请稍候"
multiple multiple
:check-strictly="true" :check-strictly="true"
allow-clear clearable
tree-checkable :show-checkbox="true"
/> />
</FormItem> </ElFormItem>
<FormItem <ElFormItem
v-if="configForm.candidateStrategy === CandidateStrategy.POST" v-if="configForm.candidateStrategy === CandidateStrategy.POST"
label="指定岗位" label="指定岗位"
name="postIds" name="postIds"
> >
<Select <ElSelect v-model="configForm.postIds" clearable multiple>
v-model:value="configForm.postIds" <ElOption
clearable
mode="multiple"
>
<SelectOption
v-for="item in postOptions" v-for="item in postOptions"
:key="item.id" :key="item.id"
:label="item.name" :label="item.name"
:value="item.id!" :value="item.id!"
> />
{{ item.name }} </ElSelect>
</SelectOption> </ElFormItem>
</Select> <ElFormItem
</FormItem>
<FormItem
v-if="configForm.candidateStrategy === CandidateStrategy.USER" v-if="configForm.candidateStrategy === CandidateStrategy.USER"
label="指定用户" label="指定用户"
name="userIds" name="userIds"
> >
<Select <ElSelect v-model="configForm.userIds" clearable multiple>
v-model:value="configForm.userIds" <ElOption
clearable
mode="multiple"
>
<SelectOption
v-for="item in userOptions" v-for="item in userOptions"
:key="item.id" :key="item.id"
:label="item.nickname" :label="item.nickname"
:value="item.id" :value="item.id!"
> />
{{ item.nickname }} </ElSelect>
</SelectOption> </ElFormItem>
</Select> <ElFormItem
</FormItem>
<FormItem
v-if=" v-if="
configForm.candidateStrategy === CandidateStrategy.USER_GROUP configForm.candidateStrategy === CandidateStrategy.USER_GROUP
" "
label="指定用户组" label="指定用户组"
name="userGroups" name="userGroups"
> >
<Select <ElSelect v-model="configForm.userGroups" clearable multiple>
v-model:value="configForm.userGroups" <ElOption
clearable
mode="multiple"
>
<SelectOption
v-for="item in userGroupOptions" v-for="item in userGroupOptions"
:key="item.id" :key="item.id"
:label="item.name" :label="item.name"
:value="item.id" :value="item.id"
> />
{{ item.name }} </ElSelect>
</SelectOption> </ElFormItem>
</Select> <ElFormItem
</FormItem>
<FormItem
v-if=" v-if="
configForm.candidateStrategy === CandidateStrategy.FORM_USER configForm.candidateStrategy === CandidateStrategy.FORM_USER
" "
label="表单内用户字段" label="表单内用户字段"
name="formUser" name="formUser"
> >
<Select v-model:value="configForm.formUser" clearable> <ElSelect v-model="configForm.formUser" clearable>
<SelectOption <ElOption
v-for="(item, idx) in userFieldOnFormOptions" v-for="(item, idx) in userFieldOnFormOptions"
:key="idx" :key="idx"
:label="item.title" :label="item.title"
:value="item.field" :value="item.field"
:disabled="!item.required" :disabled="!item.required"
> />
{{ item.title }} </ElSelect>
</SelectOption> </ElFormItem>
</Select> <ElFormItem
</FormItem>
<FormItem
v-if=" v-if="
configForm.candidateStrategy === configForm.candidateStrategy ===
CandidateStrategy.FORM_DEPT_LEADER CandidateStrategy.FORM_DEPT_LEADER
@@ -373,19 +362,17 @@ defineExpose({ showCopyTaskNodeConfig }); // 暴露方法给父组件
label="表单内部门字段" label="表单内部门字段"
name="formDept" name="formDept"
> >
<Select v-model:value="configForm.formDept" clearable> <ElSelect v-model="configForm.formDept" clearable>
<SelectOption <ElOption
v-for="(item, idx) in deptFieldOnFormOptions" v-for="(item, idx) in deptFieldOnFormOptions"
:key="idx" :key="idx"
:label="item.title" :label="item.title"
:value="item.field" :value="item.field"
:disabled="!item.required" :disabled="!item.required"
> />
{{ item.title }} </ElSelect>
</SelectOption> </ElFormItem>
</Select> <ElFormItem
</FormItem>
<FormItem
v-if=" v-if="
configForm.candidateStrategy === configForm.candidateStrategy ===
CandidateStrategy.MULTI_LEVEL_DEPT_LEADER || CandidateStrategy.MULTI_LEVEL_DEPT_LEADER ||
@@ -399,105 +386,84 @@ defineExpose({ showCopyTaskNodeConfig }); // 暴露方法给父组件
:label="deptLevelLabel!" :label="deptLevelLabel!"
name="deptLevel" name="deptLevel"
> >
<Select v-model:value="configForm.deptLevel" clearable> <ElSelect v-model="configForm.deptLevel" clearable>
<SelectOption <ElOption
v-for="(item, index) in MULTI_LEVEL_DEPT" v-for="(item, index) in MULTI_LEVEL_DEPT"
:key="index" :key="index"
:label="item.label" :label="item.label"
:value="item.value" :value="item.value"
> />
{{ item.label }} </ElSelect>
</SelectOption> </ElFormItem>
</Select> <ElFormItem
</FormItem>
<FormItem
v-if=" v-if="
configForm.candidateStrategy === CandidateStrategy.EXPRESSION configForm.candidateStrategy === CandidateStrategy.EXPRESSION
" "
label="流程表达式" label="流程表达式"
name="expression" name="expression"
> >
<Textarea v-model:value="configForm.expression" clearable /> <ElInput
</FormItem> v-model="configForm.expression"
type="textarea"
clearable
/>
</ElFormItem>
</ElForm> </ElForm>
</div> </div>
</ElTabPane> </ElTabPane>
<ElTabPane <ElTabPane
tab="表单字段权限" label="表单字段权限"
key="fields" name="fields"
v-if="formType === BpmModelFormType.NORMAL" v-if="formType === BpmModelFormType.NORMAL"
> >
<div class="p-1"> <div class="p-1">
<div class="mb-4 text-base font-bold">字段权限</div> <div class="mb-4 text-base font-bold">字段权限</div>
<!-- 表头 --> <!-- 表头 -->
<Row class="border border-gray-200 px-4 py-3"> <ElRow class="border border-gray-200 px-4 py-3">
<Col :span="8" class="font-bold">字段名称</Col> <ElCol :span="8" class="font-bold">字段名称</ElCol>
<Col :span="16"> <ElCol :span="16" class="!flex">
<Row> <span
<Col :span="8" class="flex items-center justify-center"> class="flex-1 cursor-pointer text-center font-bold"
<span @click="updatePermission('READ')"
class="cursor-pointer font-bold" >
@click="updatePermission('READ')" 只读
> </span>
只读 <span
</span> class="flex-1 cursor-pointer text-center font-bold"
</Col> @click="updatePermission('WRITE')"
<Col :span="8" class="flex items-center justify-center"> >
<span 可编辑
class="cursor-pointer font-bold" </span>
@click="updatePermission('WRITE')" <span
> class="flex-1 cursor-pointer text-center font-bold"
可编辑 @click="updatePermission('NONE')"
</span> >
</Col> 隐藏
<Col :span="8" class="flex items-center justify-center"> </span>
<span </ElCol>
class="cursor-pointer font-bold" </ElRow>
@click="updatePermission('NONE')"
>
隐藏
</span>
</Col>
</Row>
</Col>
</Row>
<!-- 表格内容 --> <!-- 表格内容 -->
<div v-for="(item, index) in fieldsPermissionConfig" :key="index"> <div v-for="(item, index) in fieldsPermissionConfig" :key="index">
<Row class="border border-t-0 border-gray-200 px-4 py-2"> <ElRow class="border border-t-0 border-gray-200 px-4 py-2">
<Col :span="8" class="flex items-center truncate"> <ElCol :span="8" class="flex items-center truncate">
{{ item.title }} {{ item.title }}
</Col> </ElCol>
<Col :span="16"> <ElCol :span="16">
<RadioGroup v-model:value="item.permission" class="w-full"> <ElRadioGroup v-model="item.permission" class="flex w-full">
<Row> <div class="flex flex-1 justify-center">
<Col :span="8" class="flex items-center justify-center"> <ElRadio :value="FieldPermissionType.READ" />
<Radio </div>
:value="FieldPermissionType.READ" <div class="flex flex-1 justify-center">
size="large" <ElRadio :value="FieldPermissionType.WRITE" disabled />
:label="FieldPermissionType.READ" </div>
/> <div class="flex flex-1 justify-center">
</Col> <ElRadio :value="FieldPermissionType.NONE" />
<Col :span="8" class="flex items-center justify-center"> </div>
<Radio </ElRadioGroup>
:value="FieldPermissionType.WRITE" </ElCol>
size="large" </ElRow>
:label="FieldPermissionType.WRITE"
disabled
/>
</Col>
<Col :span="8" class="flex items-center justify-center">
<Radio
:value="FieldPermissionType.NONE"
size="large"
:label="FieldPermissionType.NONE"
/>
</Col>
</Row>
</RadioGroup>
</Col>
</Row>
</div> </div>
</div> </div>
</ElTabPane> </ElTabPane>

View File

@@ -159,16 +159,18 @@ defineExpose({ validate });
<div class="flex items-center"> <div class="flex items-center">
<div class="mr-4">条件组关系</div> <div class="mr-4">条件组关系</div>
<ElSwitch <ElSwitch
v-model:checked="condition.conditionGroups.and" v-model="condition.conditionGroups.and"
checked-children="且" active-text="且"
un-checked-children="或" inactive-text="或"
/> />
</div> </div>
</div> </div>
<ElSpace direction="vertical" size="small" class="w-11/12 pl-1"> <ElSpace
<template #split> direction="vertical"
{{ condition.conditionGroups.and ? '且' : '或' }} size="small"
</template> :spacer="condition.conditionGroups.and ? '且' : '或'"
class="w-full"
>
<ElCard <ElCard
class="group relative w-full hover:border-blue-500" class="group relative w-full hover:border-blue-500"
v-for="(equation, cIdx) in condition.conditionGroups.conditions" v-for="(equation, cIdx) in condition.conditionGroups.conditions"
@@ -193,9 +195,9 @@ defineExpose({ validate });
<div class="flex"> <div class="flex">
<div class="mr-4">规则关系</div> <div class="mr-4">规则关系</div>
<ElSwitch <ElSwitch
v-model:checked="equation.and" v-model="equation.and"
checked-children="且" active-text="且"
un-checked-children="或" inactive-text="或"
/> />
</div> </div>
</div> </div>
@@ -203,11 +205,12 @@ defineExpose({ validate });
<ElRow <ElRow
:gutter="8" :gutter="8"
align="middle"
class="mb-2" class="mb-2"
v-for="(rule, rIdx) in equation.rules" v-for="(rule, rIdx) in equation.rules"
:key="rIdx" :key="rIdx"
> >
<ElCol :span="8"> <ElCol :span="7">
<ElFormItem <ElFormItem
:name="[ :name="[
'conditionGroups', 'conditionGroups',
@@ -225,7 +228,7 @@ defineExpose({ validate });
> >
<ElSelect <ElSelect
v-model="rule.leftSide" v-model="rule.leftSide"
allow-clear clearable
placeholder="请选择表单字段" placeholder="请选择表单字段"
> >
<ElOption <ElOption
@@ -236,7 +239,7 @@ defineExpose({ validate });
:disabled="!field.required" :disabled="!field.required"
> >
<ElTooltip <ElTooltip
title="表单字段非必填时不能作为流程分支条件" content="表单字段非必填时不能作为流程分支条件"
placement="right" placement="right"
v-if="!field.required" v-if="!field.required"
> >
@@ -247,19 +250,21 @@ defineExpose({ validate });
</ElSelect> </ElSelect>
</ElFormItem> </ElFormItem>
</ElCol> </ElCol>
<ElCol :span="6"> <ElCol :span="5">
<ElSelect v-model="rule.opCode" placeholder="请选择操作符"> <ElFormItem>
<ElOption <ElSelect v-model="rule.opCode" placeholder="请选择操作符">
v-for="operator in COMPARISON_OPERATORS" <ElOption
:key="operator.value" v-for="operator in COMPARISON_OPERATORS"
:label="operator.label" :key="operator.value"
:value="operator.value" :label="operator.label"
> :value="operator.value"
{{ operator.label }} >
</ElOption> {{ operator.label }}
</ElSelect> </ElOption>
</ElSelect>
</ElFormItem>
</ElCol> </ElCol>
<ElCol :span="7"> <ElCol :span="9">
<ElFormItem <ElFormItem
:name="[ :name="[
'conditionGroups', 'conditionGroups',
@@ -279,7 +284,7 @@ defineExpose({ validate });
</ElFormItem> </ElFormItem>
</ElCol> </ElCol>
<ElCol :span="3"> <ElCol :span="3">
<div class="flex h-8 items-center"> <div class="flex items-center">
<Trash2 <Trash2
v-if="equation.rules.length > 1" v-if="equation.rules.length > 1"
class="mr-2 size-4 cursor-pointer text-red-500" class="mr-2 size-4 cursor-pointer text-red-500"
@@ -294,11 +299,12 @@ defineExpose({ validate });
</ElRow> </ElRow>
</ElCard> </ElCard>
</ElSpace> </ElSpace>
<div title="添加条件组" class="mt-4 cursor-pointer"> <div
<Plus class="mt-4 flex cursor-pointer items-center text-blue-500 hover:text-blue-600"
class="size-6 text-blue-500" @click="addConditionGroup(condition.conditionGroups?.conditions)"
@click="addConditionGroup(condition.conditionGroups?.conditions)" >
/> <Plus class="mr-1 size-5" />
<span>添加条件组</span>
</div> </div>
</ElFormItem> </ElFormItem>
<ElFormItem <ElFormItem
@@ -308,9 +314,10 @@ defineExpose({ validate });
> >
<ElInput <ElInput
v-model="condition.conditionExpression" v-model="condition.conditionExpression"
type="textarea"
placeholder="请输入条件表达式" placeholder="请输入条件表达式"
allow-clear clearable
:auto-size="{ minRows: 3, maxRows: 6 }" :autosize="{ minRows: 3, maxRows: 6 }"
/> />
</ElFormItem> </ElFormItem>
</ElForm> </ElForm>

View File

@@ -5,11 +5,9 @@ import { IconifyIcon } from '@vben/icons';
import { import {
ElButton, ElButton,
ElCol,
ElFormItem, ElFormItem,
ElInput, ElInput,
ElOption, ElOption,
ElRow,
ElSelect, ElSelect,
} from 'element-plus'; } from 'element-plus';
@@ -57,8 +55,13 @@ function deleteHttpRequestParam(arr: HttpRequestParam[], index: number) {
</script> </script>
<template> <template>
<ElFormItem label="请求头"> <ElFormItem label="请求头">
<ElRow :gutter="8" v-for="(item, index) in props.header" :key="index"> <div
<ElCol :span="7"> v-for="(item, index) in props.header"
:key="index"
class="mb-2 flex items-center gap-2"
>
<!-- 参数名 -->
<div class="w-[26%] min-w-32 shrink-0">
<ElFormItem <ElFormItem
:name="[bind, 'header', index, 'key']" :name="[bind, 'header', index, 'key']"
:rules="{ :rules="{
@@ -69,20 +72,24 @@ function deleteHttpRequestParam(arr: HttpRequestParam[], index: number) {
> >
<ElInput placeholder="参数名不能为空" v-model="item.key" /> <ElInput placeholder="参数名不能为空" v-model="item.key" />
</ElFormItem> </ElFormItem>
</ElCol> </div>
<ElCol :span="5">
<ElSelect v-model="item.type"> <!-- 类型选择 -->
<ElOption <div class="w-[24%] min-w-11 shrink-0">
v-for="types in BPM_HTTP_REQUEST_PARAM_TYPES" <ElFormItem class="w-full">
:key="types.value" <ElSelect v-model="item.type">
:label="types.label" <ElOption
:value="types.value" v-for="types in BPM_HTTP_REQUEST_PARAM_TYPES"
> :key="types.value"
{{ types.label }} :label="types.label"
</ElOption> :value="types.value"
</ElSelect> />
</ElCol> </ElSelect>
<ElCol :span="10"> </ElFormItem>
</div>
<!-- 参数值 -->
<div class="w-[42%] flex-1">
<ElFormItem <ElFormItem
:name="[bind, 'header', index, 'value']" :name="[bind, 'header', index, 'value']"
:rules="{ :rules="{
@@ -103,7 +110,11 @@ function deleteHttpRequestParam(arr: HttpRequestParam[], index: number) {
}" }"
v-if="item.type === BpmHttpRequestParamTypeEnum.FROM_FORM" v-if="item.type === BpmHttpRequestParamTypeEnum.FROM_FORM"
> >
<ElSelect v-model="item.value" placeholder="请选择表单字段"> <ElSelect
class="min-w-36"
v-model="item.value"
placeholder="请选择表单字段"
>
<ElOption <ElOption
v-for="(field, fIdx) in formFieldOptions" v-for="(field, fIdx) in formFieldOptions"
:key="fIdx" :key="fIdx"
@@ -115,17 +126,17 @@ function deleteHttpRequestParam(arr: HttpRequestParam[], index: number) {
</ElOption> </ElOption>
</ElSelect> </ElSelect>
</ElFormItem> </ElFormItem>
</ElCol> </div>
<ElCol :span="2">
<div class="flex h-8 items-center"> <!-- 删除按钮 -->
<IconifyIcon <div class="flex w-[8%] shrink-0 items-center">
class="size-4 cursor-pointer text-red-500" <IconifyIcon
icon="lucide:trash-2" class="size-4 cursor-pointer text-red-500"
@click="deleteHttpRequestParam(props.header, index)" icon="lucide:trash-2"
/> @click="deleteHttpRequestParam(props.header, index)"
</div> />
</ElCol> </div>
</ElRow> </div>
<ElButton <ElButton
link link
@click="addHttpRequestParam(props.header)" @click="addHttpRequestParam(props.header)"
@@ -138,8 +149,13 @@ function deleteHttpRequestParam(arr: HttpRequestParam[], index: number) {
</ElButton> </ElButton>
</ElFormItem> </ElFormItem>
<ElFormItem label="请求体"> <ElFormItem label="请求体">
<ElRow :gutter="8" v-for="(item, index) in props.body" :key="index"> <div
<ElCol :span="7"> v-for="(item, index) in props.body"
:key="index"
class="mb-2 flex items-center gap-2"
>
<!-- 参数名 -->
<div class="w-[26%] min-w-32 shrink-0">
<ElFormItem <ElFormItem
:name="[bind, 'body', index, 'key']" :name="[bind, 'body', index, 'key']"
:rules="{ :rules="{
@@ -150,20 +166,24 @@ function deleteHttpRequestParam(arr: HttpRequestParam[], index: number) {
> >
<ElInput placeholder="参数名" v-model="item.key" /> <ElInput placeholder="参数名" v-model="item.key" />
</ElFormItem> </ElFormItem>
</ElCol> </div>
<ElCol :span="5">
<ElSelect v-model="item.type"> <!-- 类型选择 -->
<ElOption <div class="w-[24%] min-w-11 shrink-0">
v-for="types in BPM_HTTP_REQUEST_PARAM_TYPES" <ElFormItem>
:key="types.value" <ElSelect v-model="item.type">
:label="types.label" <ElOption
:value="types.value" v-for="types in BPM_HTTP_REQUEST_PARAM_TYPES"
> :key="types.value"
{{ types.label }} :label="types.label"
</ElOption> :value="types.value"
</ElSelect> />
</ElCol> </ElSelect>
<ElCol :span="10"> </ElFormItem>
</div>
<!-- 参数值 -->
<div class="w-[42%] flex-1">
<ElFormItem <ElFormItem
:name="[bind, 'body', index, 'value']" :name="[bind, 'body', index, 'value']"
:rules="{ :rules="{
@@ -171,7 +191,7 @@ function deleteHttpRequestParam(arr: HttpRequestParam[], index: number) {
message: '参数值不能为空', message: '参数值不能为空',
trigger: ['blur', 'change'], trigger: ['blur', 'change'],
}" }"
v-if="item.type === BpmHttpRequestParamTypeEnum.FIXED_VALUE" v-show="item.type === BpmHttpRequestParamTypeEnum.FIXED_VALUE"
> >
<ElInput placeholder="参数值" v-model="item.value" /> <ElInput placeholder="参数值" v-model="item.value" />
</ElFormItem> </ElFormItem>
@@ -182,9 +202,13 @@ function deleteHttpRequestParam(arr: HttpRequestParam[], index: number) {
message: '参数值不能为空', message: '参数值不能为空',
trigger: 'change', trigger: 'change',
}" }"
v-if="item.type === BpmHttpRequestParamTypeEnum.FROM_FORM" v-show="item.type === BpmHttpRequestParamTypeEnum.FROM_FORM"
> >
<ElSelect v-model="item.value" placeholder="请选择表单字段"> <ElSelect
class="min-w-36"
v-model="item.value"
placeholder="请选择表单字段"
>
<ElOption <ElOption
v-for="(field, fIdx) in formFieldOptions" v-for="(field, fIdx) in formFieldOptions"
:key="fIdx" :key="fIdx"
@@ -196,17 +220,17 @@ function deleteHttpRequestParam(arr: HttpRequestParam[], index: number) {
</ElOption> </ElOption>
</ElSelect> </ElSelect>
</ElFormItem> </ElFormItem>
</ElCol> </div>
<ElCol :span="2">
<div class="flex h-8 items-center"> <!-- 删除按钮 -->
<IconifyIcon <div class="flex w-[8%] shrink-0 items-center">
class="size-4 cursor-pointer text-red-500" <IconifyIcon
icon="lucide:trash-2" class="size-4 cursor-pointer text-red-500"
@click="deleteHttpRequestParam(props.body, index)" icon="lucide:trash-2"
/> @click="deleteHttpRequestParam(props.body, index)"
</div> />
</ElCol> </div>
</ElRow> </div>
<ElButton <ElButton
link link
@click="addHttpRequestParam(props.body)" @click="addHttpRequestParam(props.body)"

View File

@@ -218,33 +218,25 @@ defineExpose({ showStartUserNodeConfig });
<!-- 表头 --> <!-- 表头 -->
<ElRow class="border border-gray-200 px-4 py-3"> <ElRow class="border border-gray-200 px-4 py-3">
<ElCol :span="8" class="font-bold">字段名称</ElCol> <ElCol :span="8" class="font-bold">字段名称</ElCol>
<ElCol :span="16"> <ElCol :span="16" class="!flex">
<ElRow> <span
<ElCol :span="8" class="flex items-center justify-center"> class="flex-1 cursor-pointer text-center font-bold"
<span @click="updatePermission('READ')"
class="cursor-pointer font-bold" >
@click="updatePermission('READ')" 只读
> </span>
只读 <span
</span> class="flex-1 cursor-pointer text-center font-bold"
</ElCol> @click="updatePermission('WRITE')"
<ElCol :span="8" class="flex items-center justify-center"> >
<span 可编辑
class="cursor-pointer font-bold" </span>
@click="updatePermission('WRITE')" <span
> class="flex-1 cursor-pointer text-center font-bold"
可编辑 @click="updatePermission('NONE')"
</span> >
</ElCol> 隐藏
<ElCol :span="8" class="flex items-center justify-center"> </span>
<span
class="cursor-pointer font-bold"
@click="updatePermission('NONE')"
>
隐藏
</span>
</ElCol>
</ElRow>
</ElCol> </ElCol>
</ElRow> </ElRow>
@@ -255,18 +247,16 @@ defineExpose({ showStartUserNodeConfig });
{{ item.title }} {{ item.title }}
</ElCol> </ElCol>
<ElCol :span="16"> <ElCol :span="16">
<ElRadioGroup v-model="item.permission" class="w-full"> <ElRadioGroup v-model="item.permission" class="flex w-full">
<ElRow> <div class="flex flex-1 justify-center">
<ElCol :span="8" class="flex items-center justify-center"> <ElRadio :value="FieldPermissionType.READ" />
<ElRadio :value="FieldPermissionType.READ" /> </div>
</ElCol> <div class="flex flex-1 justify-center">
<ElCol :span="8" class="flex items-center justify-center"> <ElRadio :value="FieldPermissionType.WRITE" />
<ElRadio :value="FieldPermissionType.WRITE" /> </div>
</ElCol> <div class="flex flex-1 justify-center">
<ElCol :span="8" class="flex items-center justify-center"> <ElRadio :value="FieldPermissionType.NONE" />
<ElRadio :value="FieldPermissionType.NONE" /> </div>
</ElCol>
</ElRow>
</ElRadioGroup> </ElRadioGroup>
</ElCol> </ElCol>
</ElRow> </ElRow>

View File

@@ -32,7 +32,6 @@ import {
ElSwitch, ElSwitch,
ElTabPane, ElTabPane,
ElTabs, ElTabs,
ElText,
ElTreeSelect, ElTreeSelect,
} from 'element-plus'; } from 'element-plus';
@@ -927,43 +926,30 @@ onMounted(() => {
<ElFormItem <ElFormItem
label="超时时间设置" label="超时时间设置"
v-if="configForm.timeoutHandlerEnable" v-if="configForm.timeoutHandlerEnable"
class="h-8"
> >
<ElRow> <div class="flex items-center gap-2">
<ElCol> <span class="text-sm">当超时</span>
<ElText class="mr-2 mt-2 inline-flex text-sm"> <ElFormItem name="timeDuration" class="!mb-0">
当超时 <ElInputNumber
</ElText> v-model="configForm.timeDuration"
</ElCol> :min="1"
<ElCol> controls-position="right"
<ElFormItem name="timeDuration"> />
<ElInputNumber </ElFormItem>
class="mr-2 mt-0.5" <ElSelect
v-model="configForm.timeDuration" v-model="timeUnit"
:min="1" class="!w-24"
controls-position="right" @change="timeUnitChange"
/> >
</ElFormItem> <ElOption
</ElCol> v-for="item in TIME_UNIT_TYPES"
<ElCol> :key="item.value"
<ElSelect :label="item.label"
v-model="timeUnit" :value="item.value"
class="mr-2" />
:style="{ width: '100px' }" </ElSelect>
@change="timeUnitChange" <span class="text-sm">未处理</span>
> </div>
<ElOption
v-for="item in TIME_UNIT_TYPES"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</ElSelect>
<ElText class="mr-2 mt-2 inline-flex text-sm">
未处理
</ElText>
</ElCol>
</ElRow>
</ElFormItem> </ElFormItem>
<ElFormItem <ElFormItem
label="最大提醒次数" label="最大提醒次数"
@@ -1135,33 +1121,25 @@ onMounted(() => {
<!-- 表头 --> <!-- 表头 -->
<ElRow class="border border-gray-200 px-4 py-3"> <ElRow class="border border-gray-200 px-4 py-3">
<ElCol :span="8" class="font-bold">字段名称</ElCol> <ElCol :span="8" class="font-bold">字段名称</ElCol>
<ElCol :span="16"> <ElCol :span="16" class="!flex">
<ElRow> <span
<ElCol :span="8" class="flex items-center justify-center"> class="flex-1 cursor-pointer text-center font-bold"
<span @click="updatePermission('READ')"
class="cursor-pointer font-bold" >
@click="updatePermission('READ')" 只读
> </span>
只读 <span
</span> class="flex-1 cursor-pointer text-center font-bold"
</ElCol> @click="updatePermission('WRITE')"
<ElCol :span="8" class="flex items-center justify-center"> >
<span 可编辑
class="cursor-pointer font-bold" </span>
@click="updatePermission('WRITE')" <span
> class="flex-1 cursor-pointer text-center font-bold"
可编<E58FAF>? @click="updatePermission('NONE')"
</span> >
</ElCol> 隐藏
<ElCol :span="8" class="flex items-center justify-center"> </span>
<span
class="cursor-pointer font-bold"
@click="updatePermission('NONE')"
>
隐藏
</span>
</ElCol>
</ElRow>
</ElCol> </ElCol>
</ElRow> </ElRow>
@@ -1172,18 +1150,16 @@ onMounted(() => {
{{ item.title }} {{ item.title }}
</ElCol> </ElCol>
<ElCol :span="16"> <ElCol :span="16">
<ElRadioGroup v-model="item.permission" class="w-full"> <ElRadioGroup v-model="item.permission" class="flex w-full">
<ElRow> <div class="flex flex-1 justify-center">
<ElCol :span="8" class="flex items-center justify-center"> <ElRadio :value="FieldPermissionType.READ" />
<ElRadio :value="FieldPermissionType.READ" /> </div>
</ElCol> <div class="flex flex-1 justify-center">
<ElCol :span="8" class="flex items-center justify-center"> <ElRadio :value="FieldPermissionType.WRITE" />
<ElRadio :value="FieldPermissionType.WRITE" /> </div>
</ElCol> <div class="flex flex-1 justify-center">
<ElCol :span="8" class="flex items-center justify-center"> <ElRadio :value="FieldPermissionType.NONE" />
<ElRadio :value="FieldPermissionType.NONE" /> </div>
</ElCol>
</ElRow>
</ElRadioGroup> </ElRadioGroup>
</ElCol> </ElCol>
</ElRow> </ElRow>