【功能重构】减签功能页面重构
							parent
							
								
									71de0c3ecf
								
							
						
					
					
						commit
						21fc3fd7e6
					
				|  | @ -261,9 +261,7 @@ const configForm = tempConfigForm as Ref<CopyTaskFormType> | |||
| // 抄送人策略, 去掉发起人自选 和 发起人自己 | ||||
| const copyUserStrategies = computed(() => { | ||||
|   return CANDIDATE_STRATEGY.filter( | ||||
|     (item) => | ||||
|       item.value !== CandidateStrategy.START_USER_SELECT && | ||||
|       item.value !== CandidateStrategy.START_USER | ||||
|     (item) => item.value !== CandidateStrategy.START_USER | ||||
|   ) | ||||
| }) | ||||
| // 改变抄送人设置策略 | ||||
|  |  | |||
|  | @ -331,13 +331,57 @@ | |||
|     </el-popover> | ||||
| 
 | ||||
|     <!-- 【减签】按钮 --> | ||||
|     <div | ||||
|       @click="openChildrenTask()" | ||||
|       class="hover-bg-gray-100 rounded-xl p-6px" | ||||
|     <el-popover | ||||
|       :visible="popOverVisible.deleteSign" | ||||
|       placement="top-start" | ||||
|       :width="420" | ||||
|       trigger="click" | ||||
|       v-if="runningTask?.children.length > 0" | ||||
|     > | ||||
|       <Icon :size="14" icon="ep:semi-select" />  减签 | ||||
|     </div> | ||||
|       <template #reference> | ||||
|         <div @click="openPopover('deleteSign')" class="hover-bg-gray-100 rounded-xl p-6px"> | ||||
|           <Icon :size="14" icon="ep:semi-select" />  减签 | ||||
|         </div> | ||||
|       </template> | ||||
| 
 | ||||
|       <div class="flex flex-col flex-1 pt-20px px-20px" v-loading="formLoading"> | ||||
|         <el-form | ||||
|           label-position="top" | ||||
|           class="mb-auto" | ||||
|           ref="formRef" | ||||
|           :model="genericForm" | ||||
|           :rules="genericRule" | ||||
|           label-width="100px" | ||||
|         > | ||||
|           <el-form-item label="减签人员" prop="deleteSignTaskId"> | ||||
|             <el-select v-model="genericForm.deleteSignTaskId" clearable style="width: 100%"> | ||||
|               <el-option | ||||
|                 v-for="item in runningTask.children" | ||||
|                 :key="item.id" | ||||
|                 :label="getDeleteSignUserLabel(item)" | ||||
|                 :value="item.id" | ||||
|               /> | ||||
|             </el-select> | ||||
|           </el-form-item> | ||||
| 
 | ||||
|           <el-form-item label="审批意见" prop="reason"> | ||||
|             <el-input | ||||
|               v-model="genericForm.reason" | ||||
|               clearable | ||||
|               placeholder="请输入审批意见" | ||||
|               type="textarea" | ||||
|               :rows="3" | ||||
|             /> | ||||
|           </el-form-item> | ||||
|           <el-form-item> | ||||
|             <el-button :disabled="formLoading" type="primary" @click="handlerDeleteSign()"> | ||||
|               减签 | ||||
|             </el-button> | ||||
|             <el-button @click="popOverVisible.deleteSign = false"> 取消 </el-button> | ||||
|           </el-form-item> | ||||
|         </el-form> | ||||
|       </div> | ||||
|     </el-popover> | ||||
| 
 | ||||
|     <!-- 【退回】按钮 --> | ||||
|     <el-popover | ||||
|  | @ -446,13 +490,11 @@ | |||
|     > | ||||
|       <Icon :size="14" icon="ep:refresh" />  再次提交 | ||||
|     </div> | ||||
|     <!-- 弹窗:子任务  --> | ||||
|     <TaskSignList ref="taskSignListRef" @success="reload" /> | ||||
|      | ||||
|   </div> | ||||
| </template> | ||||
| <script lang="ts" setup> | ||||
| import { useUserStoreWithOut } from '@/store/modules/user' | ||||
| import TaskSignList from './dialog/TaskSignList.vue' | ||||
| import { setConfAndFields2 } from '@/utils/formCreate' | ||||
| import * as TaskApi from '@/api/bpm/task' | ||||
| import * as ProcessInstanceApi from '@/api/bpm/processInstance' | ||||
|  | @ -486,7 +528,8 @@ const popOverVisible = ref({ | |||
|   addSign: false, | ||||
|   return: false, | ||||
|   copy: false, | ||||
|   cancel: false | ||||
|   cancel: false, | ||||
|   deleteSign: false | ||||
| }) // 气泡卡是否展示 | ||||
| const returnList = ref([] as any) // 退回节点 | ||||
| 
 | ||||
|  | @ -504,6 +547,7 @@ const genericRule = reactive({ | |||
|   assigneeUserId: [{ required: true, message: '新审批人不能为空', trigger: 'change' }], | ||||
|   delegateUserId: [{ required: true, message: '接收人不能为空', trigger: 'change' }], | ||||
|   addSignUserIds: [{ required: true, message: '加签处理人不能为空', trigger: 'change' }], | ||||
|   deleteSignTaskId: [{ required: true, message: '减签人员不能为空', trigger: 'change' }], | ||||
|   targetTaskDefinitionKey: [{ required: true, message: '退回节点不能为空', trigger: 'change' }] | ||||
| }) // 表单校验规则 | ||||
| 
 | ||||
|  | @ -742,12 +786,36 @@ const handleReCreate = async () => { | |||
|   }) | ||||
| } | ||||
| 
 | ||||
| /** 子任务 */ | ||||
| const taskSignListRef = ref() | ||||
| const openChildrenTask = () => { | ||||
|   taskSignListRef.value.open(runningTask.value) | ||||
| /** 获取减签人员标签 */ | ||||
| const getDeleteSignUserLabel =  (task:any) : string => { | ||||
|   const deptName = task?.assigneeUser?.deptName || task?.ownerUser?.deptName | ||||
|   const nickname = task?.assigneeUser?.nickname || task?.ownerUser?.nickname | ||||
|   return  `${nickname} ( 所属部门:${deptName} )`; | ||||
| } | ||||
| /** 处理减签 */ | ||||
| const handlerDeleteSign = async () => { | ||||
|   formLoading.value = true | ||||
|   try { | ||||
|     const deleteFormRef = proxy.$refs['formRef'] | ||||
|     // 1.1 校验表单 | ||||
|     const elForm = unref(deleteFormRef) | ||||
|     if (!elForm) return | ||||
|     const valid = await elForm.validate() | ||||
|     if (!valid) return | ||||
|     // 1.2 提交减签 | ||||
|     const data = { | ||||
|       id: genericForm.value.deleteSignTaskId, | ||||
|       reason: genericForm.value.reason, | ||||
|     } | ||||
|     await TaskApi.signDeleteTask(data) | ||||
|     message.success('减签成功') | ||||
|     popOverVisible.value.deleteSign = false | ||||
|     // 2 加载最新数据 | ||||
|     reload() | ||||
|   } finally { | ||||
|     formLoading.value = false | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| /** 重新加载数据 */ | ||||
| const reload = () => { | ||||
|   emit('success') | ||||
|  |  | |||
|  | @ -41,7 +41,7 @@ | |||
|           <div v-for="(task, idx) in activity.tasks" :key="idx" class="flex items-center"> | ||||
|             <div class="flex flex-col pr-2 gap2"> | ||||
|               <div | ||||
|                 class="position-relative flex flex-wrap gap2" | ||||
|                 class="position-relative pt-2 flex flex-wrap gap2" | ||||
|                 v-if="task.assigneeUser || task.ownerUser" | ||||
|               > | ||||
|                 <!-- 信息:头像昵称 --> | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 jason
						jason