Pre Merge pull request !191 from Jason/dev
						commit
						f2b02914ad
					
				|  | @ -359,7 +359,8 @@ async function saveConfig() { | ||||||
|   currentNode.value.signEnable = configForm.value.signEnable; |   currentNode.value.signEnable = configForm.value.signEnable; | ||||||
|   // 审批意见 |   // 审批意见 | ||||||
|   currentNode.value.reasonRequire = configForm.value.reasonRequire; |   currentNode.value.reasonRequire = configForm.value.reasonRequire; | ||||||
| 
 |   // 跳过表达式 | ||||||
|  |   currentNode.value.skipExpression = configForm.value.skipExpression; | ||||||
|   currentNode.value.showText = getShowText(); |   currentNode.value.showText = getShowText(); | ||||||
|   drawerApi.close(); |   drawerApi.close(); | ||||||
|   return true; |   return true; | ||||||
|  | @ -443,7 +444,8 @@ function showUserTaskNodeConfig(node: SimpleFlowNode) { | ||||||
|   configForm.value.signEnable = node?.signEnable ?? false; |   configForm.value.signEnable = node?.signEnable ?? false; | ||||||
|   // 7. 审批意见 |   // 7. 审批意见 | ||||||
|   configForm.value.reasonRequire = node?.reasonRequire ?? false; |   configForm.value.reasonRequire = node?.reasonRequire ?? false; | ||||||
| 
 |   // 8. 跳过表达式 | ||||||
|  |   configForm.value.skipExpression = node?.skipExpression ?? ''; | ||||||
|   drawerApi.open(); |   drawerApi.open(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -850,7 +852,7 @@ onMounted(() => { | ||||||
|               label="流程表达式" |               label="流程表达式" | ||||||
|               name="expression" |               name="expression" | ||||||
|             > |             > | ||||||
|               <Textarea v-model:value="configForm.expression" clearable /> |               <Textarea v-model:value="configForm.expression" allow-clear /> | ||||||
|             </FormItem> |             </FormItem> | ||||||
|             <!-- 多人审批/办理 方式 --> |             <!-- 多人审批/办理 方式 --> | ||||||
|             <FormItem :label="`多人${nodeTypeName}方式`" name="approveMethod"> |             <FormItem :label="`多人${nodeTypeName}方式`" name="approveMethod"> | ||||||
|  | @ -1117,6 +1119,16 @@ onMounted(() => { | ||||||
|                 /> |                 /> | ||||||
|               </FormItem> |               </FormItem> | ||||||
|             </div> |             </div> | ||||||
|  |             <div> | ||||||
|  |               <Divider content-position="left">跳过表达式</Divider> | ||||||
|  |               <FormItem prop="skipExpression"> | ||||||
|  |                 <Textarea | ||||||
|  |                   v-model:value="configForm.skipExpression" | ||||||
|  |                   allow-clear | ||||||
|  |                   :rows="2" | ||||||
|  |                 /> | ||||||
|  |               </FormItem> | ||||||
|  |             </div> | ||||||
|           </Form> |           </Form> | ||||||
|         </div> |         </div> | ||||||
|       </TabPane> |       </TabPane> | ||||||
|  |  | ||||||
|  | @ -602,6 +602,8 @@ export interface SimpleFlowNode { | ||||||
|   signEnable?: boolean; |   signEnable?: boolean; | ||||||
|   // 审批意见
 |   // 审批意见
 | ||||||
|   reasonRequire?: boolean; |   reasonRequire?: boolean; | ||||||
|  |   // 跳过表达式
 | ||||||
|  |   skipExpression?: string; | ||||||
|   // 触发器设置
 |   // 触发器设置
 | ||||||
|   triggerSetting?: TriggerSetting; |   triggerSetting?: TriggerSetting; | ||||||
|   // 子流程
 |   // 子流程
 | ||||||
|  |  | ||||||
|  | @ -214,6 +214,7 @@ export type UserTaskFormType = { | ||||||
|   returnNodeId?: string; |   returnNodeId?: string; | ||||||
|   roleIds?: number[]; // 角色
 |   roleIds?: number[]; // 角色
 | ||||||
|   signEnable: boolean; |   signEnable: boolean; | ||||||
|  |   skipExpression?: string; // 跳过表达式
 | ||||||
|   taskAssignListener?: { |   taskAssignListener?: { | ||||||
|     body: HttpRequestParam[]; |     body: HttpRequestParam[]; | ||||||
|     header: HttpRequestParam[]; |     header: HttpRequestParam[]; | ||||||
|  |  | ||||||
|  | @ -979,11 +979,11 @@ export enum BpmTaskStatusEnum { | ||||||
|    * 审批通过 |    * 审批通过 | ||||||
|    */ |    */ | ||||||
|   APPROVE = 2, |   APPROVE = 2, | ||||||
| 
 |  | ||||||
|   /** |   /** | ||||||
|    * 审批通过中 |    * 审批通过中 | ||||||
|    */ |    */ | ||||||
|   APPROVING = 7, |   APPROVING = 7, | ||||||
|  | 
 | ||||||
|   /** |   /** | ||||||
|    * 已取消 |    * 已取消 | ||||||
|    */ |    */ | ||||||
|  | @ -992,7 +992,6 @@ export enum BpmTaskStatusEnum { | ||||||
|    * 未开始 |    * 未开始 | ||||||
|    */ |    */ | ||||||
|   NOT_START = -1, |   NOT_START = -1, | ||||||
| 
 |  | ||||||
|   /** |   /** | ||||||
|    * 审批不通过 |    * 审批不通过 | ||||||
|    */ |    */ | ||||||
|  | @ -1002,10 +1001,15 @@ export enum BpmTaskStatusEnum { | ||||||
|    * 已退回 |    * 已退回 | ||||||
|    */ |    */ | ||||||
|   RETURN = 5, |   RETURN = 5, | ||||||
|  | 
 | ||||||
|   /** |   /** | ||||||
|    * 审批中 |    * 审批中 | ||||||
|    */ |    */ | ||||||
|   RUNNING = 1, |   RUNNING = 1, | ||||||
|  |   /** | ||||||
|  |    * 跳过 | ||||||
|  |    */ | ||||||
|  |   SKIP = -2, | ||||||
|   /** |   /** | ||||||
|    * 待审批 |    * 待审批 | ||||||
|    */ |    */ | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| <script setup lang="ts"> | <script setup lang="ts"> | ||||||
| import { computed, ref, watch } from 'vue'; | import { computed, provide, ref, watch } from 'vue'; | ||||||
| 
 | 
 | ||||||
| import { CircleHelp } from '@vben/icons'; | import { CircleHelp } from '@vben/icons'; | ||||||
| 
 | 
 | ||||||
|  | @ -146,7 +146,7 @@ function handleTaskAfterTriggerEnableChange(val: boolean | number | string) { | ||||||
|     : null; |     : null; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** 表单选项 */ | /** 表单字段 */ | ||||||
| const formField = ref<Array<{ field: string; title: string }>>([]); | const formField = ref<Array<{ field: string; title: string }>>([]); | ||||||
| const formFieldOptions4Title = computed(() => { | const formFieldOptions4Title = computed(() => { | ||||||
|   const cloneFormField = formField.value.map((item) => { |   const cloneFormField = formField.value.map((item) => { | ||||||
|  | @ -178,6 +178,9 @@ const formFieldOptions4Summary = computed(() => { | ||||||
|     }; |     }; | ||||||
|   }); |   }); | ||||||
| }); | }); | ||||||
|  | const unParsedFormFields = ref<string[]>([]); // 未解析的表单字段 | ||||||
|  | // 暴露给子组件 HttpRequestSetting 使用 | ||||||
|  | provide('formFields', unParsedFormFields); | ||||||
| 
 | 
 | ||||||
| /** 兼容以前未配置更多设置的流程 */ | /** 兼容以前未配置更多设置的流程 */ | ||||||
| function initData() { | function initData() { | ||||||
|  | @ -230,6 +233,7 @@ watch( | ||||||
|       const data = await FormApi.getFormDetail(newFormId); |       const data = await FormApi.getFormDetail(newFormId); | ||||||
|       const result: Array<{ field: string; title: string }> = []; |       const result: Array<{ field: string; title: string }> = []; | ||||||
|       if (data.fields) { |       if (data.fields) { | ||||||
|  |         unParsedFormFields.value = data.fields; | ||||||
|         data.fields.forEach((fieldStr: string) => { |         data.fields.forEach((fieldStr: string) => { | ||||||
|           parseFormFields(JSON.parse(fieldStr), result); |           parseFormFields(JSON.parse(fieldStr), result); | ||||||
|         }); |         }); | ||||||
|  | @ -237,6 +241,7 @@ watch( | ||||||
|       formField.value = result; |       formField.value = result; | ||||||
|     } else { |     } else { | ||||||
|       formField.value = []; |       formField.value = []; | ||||||
|  |       unParsedFormFields.value = []; | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   { immediate: true }, |   { immediate: true }, | ||||||
|  |  | ||||||
|  | @ -43,6 +43,8 @@ const statusIconMap: Record< | ||||||
|   string, |   string, | ||||||
|   { animation?: string; color: string; icon: string } |   { animation?: string; color: string; icon: string } | ||||||
| > = { | > = { | ||||||
|  |   // 跳过 | ||||||
|  |   '-2': { color: '#909398', icon: 'mdi:skip-forward-outline' }, | ||||||
|   // 审批未开始 |   // 审批未开始 | ||||||
|   '-1': { color: '#909398', icon: 'mdi:clock-outline' }, |   '-1': { color: '#909398', icon: 'mdi:clock-outline' }, | ||||||
|   // 待审批 |   // 待审批 | ||||||
|  | @ -285,7 +287,12 @@ defineExpose({ setCustomApproveUsers, batchSetCustomApproveUsers }); | ||||||
|         > |         > | ||||||
|           <!-- 第一行:节点名称、时间 --> |           <!-- 第一行:节点名称、时间 --> | ||||||
|           <div class="flex w-full"> |           <div class="flex w-full"> | ||||||
|             <div class="font-bold">{{ activity.name }}</div> |             <div class="font-bold"> | ||||||
|  |               {{ activity.name }} | ||||||
|  |               <span v-if="activity.status === BpmTaskStatusEnum.SKIP"> | ||||||
|  |                 【跳过】 | ||||||
|  |               </span> | ||||||
|  |             </div> | ||||||
|             <!-- 信息:时间 --> |             <!-- 信息:时间 --> | ||||||
|             <div |             <div | ||||||
|               v-if="activity.status !== BpmTaskStatusEnum.NOT_START" |               v-if="activity.status !== BpmTaskStatusEnum.NOT_START" | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Jason
						Jason