Parcourir la source

feat: 撤销换成实例id

luoyali il y a 1 an
Parent
commit
478d70b388

+ 8 - 7
src/api/flow/processTask.ts

@@ -16,7 +16,7 @@ const api = {
 	appendNode: '/v1/process-task/append-node', // 加签审批
 	transfer: '/v1/process-task/transfer', // 转交任务
 	claimProcess: '/v1/process-task/claim', // 认领任务
-	withDrawProcess: '/v1/process-task/withdraw', // 撤回任务
+	revokeProcess: '/v1/process-task/revoke', // 撤回任务
 	previousNodeName: '/v1/process-task/previous-node-names', // 以前节点名称列表
 	processTaskJump: '/v1/process-task/jump' // 跳到指定节点任务
 }
@@ -143,11 +143,12 @@ export function processClaimTaskApi(taskId: string): AxiosPromise {
 	})
 }
 
-// 认领任务
-export function processWithDrawTaskApi(taskId: string): AxiosPromise {
+// 撤回任务
+export function processRevokeTaskApi(data: any): AxiosPromise {
 	return request({
-		url: `${api.withDrawProcess}-${taskId}`,
-		method: 'post'
+		url: `${api.revokeProcess}`,
+		method: 'post',
+		data
 	})
 }
 
@@ -160,7 +161,7 @@ export function processPreviousNodeNameApi(taskId: string): AxiosPromise {
 }
 
 // 跳到指定节点任务
-export function processTaskJumpApi(data: string): AxiosPromise {
+export function processTaskJumpApi(data: any): AxiosPromise {
 	return request({
 		url: `${api.processTaskJump}`,
 		method: 'post',
@@ -180,7 +181,7 @@ export default {
 	processAppendNodeApi,
 	processTransferApi,
 	processClaimTaskApi,
-	processWithDrawTaskApi,
+	processRevokeTaskApi,
 	processPreviousNodeNameApi,
 	processTaskJumpApi
 }

+ 14 - 6
src/views/approve/components/approvedContent.vue

@@ -74,7 +74,7 @@
             4、我收到的任务显示评论
             -->
 				<div class="flow-actions">
-					<el-button :icon="ChatLineSquare" @click="openComment('reviewVisible')">评论</el-button>
+					<el-button :icon="ChatLineSquare" @click="openComment('reviewVisible', 'review')">评论</el-button>
 					<template v-if="currentTaskType !== 'myReceived' || currentTaskType !== 'approved'">
 						<el-button
 							v-if="currentTaskType === 'pendingApproval'"
@@ -90,7 +90,7 @@
 							@click="openComment('consentOrRefuseVisible', 'reject')"
 							>拒绝</el-button
 						>
-						<el-button v-if="currentTaskType === 'myApplication'" :icon="Close" @click="withDrawTaskEv">撤回</el-button>
+						<el-button v-if="currentTaskType === 'myApplication'" :icon="Close" @click="openComment('reviewVisible', 'revoke')">撤回</el-button>
 						<el-button v-if="currentTaskType === 'pendingClaim'" :icon="Close" @click="claimTaskEv">认领</el-button>
 						<el-dropdown v-if="currentTaskType === 'pendingApproval'" style="margin-left: 12px">
 							<el-button :icon="More">更多</el-button>
@@ -121,7 +121,14 @@
 		</div>
 
 		<!-- 评论弹窗-->
-		<review-dialog v-if="reviewVisible" v-model="reviewVisible" :task-id="taskId" @success-cb="closeDetailEv"></review-dialog>
+		<review-dialog
+			v-if="reviewVisible"
+			v-model="reviewVisible"
+			:instance-id="currentTaskRow.instanceId"
+			:task-id="taskId"
+			:current-type="currentType"
+			@success-cb="closeDetailEv"
+		></review-dialog>
 
 		<!-- 加签弹窗 -->
 		<add-sign-dialog v-if="addSignVisible" v-model="addSignVisible" :task-id="taskId" @success-cb="closeDetailEv"></add-sign-dialog>
@@ -160,7 +167,7 @@ import FlowStatusTag from '@/components/Flow/FlowStatusTag.vue'
 import FlowNodeAvatar from '@/components/Flow/FlowNodeAvatar.vue'
 import FlowTypeDot from '@/components/Flow/FlowTypeDot.vue'
 import { ChatLineSquare, Check, Close, Switch, DArrowLeft, Plus, Minus, More } from '@element-plus/icons-vue'
-import { processApprovalInfoApi, processTaskApprovalInfo, processClaimTaskApi, processWithDrawTaskApi } from '@/api/flow/processTask'
+import { processApprovalInfoApi, processTaskApprovalInfo, processClaimTaskApi, processRevokeTaskApi } from '@/api/flow/processTask'
 import { formatTimestamp } from '@/utils/datetime'
 import ReviewDialog from './reviewDialog'
 import AddSignDialog from './addSignDialog'
@@ -233,6 +240,7 @@ const closeDetailEv = () => {
 const openComment = async (visibleType, item) => {
 	switch (visibleType) {
 		case 'reviewVisible':
+			currentType.value = item
 			reviewVisible.value = !reviewVisible.value
 			break
 		case 'addSignVisible':
@@ -346,12 +354,12 @@ const claimTaskEv = async () => {
 
 /** 撤回审批 **/
 const withDrawTaskEv = async () => {
-	const res = await processWithDrawTaskApi(currentTaskRow.value.taskId)
+	const res = await processRevokeTaskApi({ instanceId: currentTaskRow.value.instanceId })
 	console.log(res)
 }
 
 /**
- * 监听同级子组件的taskId的值变化
+ * 监听同级子组件的taskId的值变化 这里可能也有实例Id
  * 1、监听taskId的值变化,如果值有变化,则重新获取审批详情
  * 2、如果taskId没有值,则不请求接口,暂时暂无数据img
  */

+ 6 - 4
src/views/approve/components/approvedItem.vue

@@ -22,11 +22,11 @@
 		<!-- 内容值 -->
 		<div v-infinite-scroll="load" :infinite-scroll-disabled="disabledInfinite" class="flow-list-box">
 			<div
-				v-for="i in satelliteList"
+				v-for="(i, index) in satelliteList"
 				:key="i.taskId"
 				class="item-box"
-				:class="[i.taskId === taskProcessInfo.currentTaskRow.taskId ? 'item-box-choosed' : '']"
-				@click="getTaskDetail(i)"
+				:class="[activeItem === index ? 'item-box-choosed' : '']"
+				@click="getTaskDetail(i, index)"
 			>
 				<div class="flow-card-box flow-card-box-hoverable">
 					<!--头部-->
@@ -93,6 +93,7 @@ const props = defineProps({
 // store值
 const taskProcessInfo = useTaskProcessStore()
 
+const activeItem = ref(null)
 const input3 = ref('')
 // 下拉滚动属性值 start
 const loading = ref(false) // loading
@@ -159,7 +160,8 @@ const getPagedSatellites = async () => {
 }
 
 // 点击当前实例的具体
-const getTaskDetail = item => {
+const getTaskDetail = (item, index) => {
+	activeItem.value = index
 	taskProcessInfo.setCurrentTaskRow(item)
 }
 

+ 24 - 6
src/views/approve/components/reviewDialog.vue

@@ -1,8 +1,8 @@
 <template>
 	<!-- 评论弹窗 -->
-	<el-dialog class="le-dialog" v-model="reviewVisibleDialog" title="评论内容" width="700" destroy-on-close>
+	<el-dialog v-model="reviewVisibleDialog" class="le-dialog" :title="currentTip + '内容'" width="700" destroy-on-close>
 		<el-form ref="formRef" v-loading="uploadLoading" label-position="top" element-loading-text="图片上传中..." :model="form" label-width="80px">
-			<el-form-item label="评论" prop="content" :rules="[{ required: true, message: '评论内容不能为空' }]">
+			<el-form-item :label="currentTip" prop="content" :rules="[{ required: true, message: '内容不能为空' }]">
 				<el-input v-model="form.content" type="textarea" placeholder="请输入内容" maxlength="64" show-word-limit> </el-input>
 			</el-form-item>
 			<el-form-item v-if="false" prop="attachment" label="附件" class="example-img-box">
@@ -29,7 +29,7 @@
 
 <script setup>
 import { computed, reactive, ref } from 'vue'
-import { processReviewTaskApi } from '@/api/flow/processTask'
+import { processReviewTaskApi, processRevokeTaskApi } from '@/api/flow/processTask'
 import FileUpload from '@/components/FileUpload.vue'
 
 const props = defineProps({
@@ -40,11 +40,20 @@ const props = defineProps({
 	taskId: {
 		type: String,
 		default: undefined
+	},
+	instanceId: {
+		type: String,
+		default: undefined
+	},
+	// 审核类型 评论(review) or 撤销(revoke)
+	currentType: {
+		type: String,
+		default: 'review'
 	}
 })
 const btnDisabled = ref(false)
 const form = reactive({
-	content: '',
+	content: ''
 	// attachment: []
 })
 const formRef = ref(null)
@@ -60,8 +69,13 @@ const submitForm = () => {
 		.validate()
 		.then(async valid => {
 			if (valid) {
-				await processReviewTaskApi(formData)
-        $myEmit('successCb')
+				const flag = props.currentType === 'review'
+				if (flag) {
+					await processReviewTaskApi(formData)
+				} else {
+					await processRevokeTaskApi({ ...formData, instanceId: props.instanceId })
+				}
+				$myEmit('successCb')
 				closeDialog()
 				btnDisabled.value = false
 			}
@@ -84,6 +98,10 @@ const reviewVisibleDialog = computed({
 	}
 })
 
+const currentTip = computed(() => {
+	return props.currentType === 'review' ? '评论' : '撤销'
+})
+
 const clearValidate = () => {}
 </script>