Explorar el Código

feat: 评论 拒绝 同意 接口对接

luoyali hace 1 año
padre
commit
37e978b6a7

+ 35 - 2
src/api/flow/processTask.ts

@@ -8,7 +8,10 @@ const api = {
 	pageMyReceived: '/v1/process-task/page-my-received',
 	pageMyApplication: '/v1/process-task/page-my-application',
 	pageApproved: '/v1/process-task/page-approved',
-	listHisTask: '/v1/process-task/list-his-task'
+	listHisTask: '/v1/process-task/list-his-task',
+	consentTask: '/v1/process-task/approval-consent', // 审批同意
+	rejectionTask: '/v1/process-task/approval-rejection', // 审批拒绝
+	reviewTask: '/v1/process-task/approval-comment' // 评论审批
 }
 
 // 待认领任务分页列表
@@ -63,8 +66,38 @@ export function processTaskListHisTaskApi(instanceId: string): AxiosPromise {
 	})
 }
 
+// 审批同意
+export function processConsentTaskApi(data: any): AxiosPromise {
+	return request({
+		url: api.consentTask,
+		method: 'post',
+		data
+	})
+}
+
+// 审批拒绝
+export function processRejectionTaskApi(data: any): AxiosPromise {
+	return request({
+		url: api.rejectionTask,
+		method: 'post',
+		data
+	})
+}
+
+// 评论审批
+export function processReviewTaskApi(data: any): AxiosPromise {
+	return request({
+		url: api.reviewTask,
+		method: 'post',
+		data
+	})
+}
+
 export default {
 	processTaskPageMyApplicationApi,
 	processTaskPageApprovedApi,
-	processTaskListHisTaskApi
+	processTaskListHisTaskApi,
+	processConsentTaskApi,
+	processRejectionTaskApi,
+	processReviewTaskApi
 }

+ 4 - 0
src/views/approve/components/addSignDialog.vue

@@ -49,6 +49,10 @@ const props = defineProps({
 	linkType: {
 		type: String,
 		default: '1'
+	},
+	taskId: {
+		type: String,
+		default: undefined
 	}
 })
 const btnDisabled = ref(false)

+ 32 - 12
src/views/approve/components/consentOrRefuseDialog.vue

@@ -1,11 +1,11 @@
 <template>
-	<!-- 同意 拒绝 弹窗 -->
-	<el-dialog v-model="operaVisibleDialog" title="同意/拒绝审批" width="700" destroy-on-close>
+	<!-- 同意 拒绝 弹窗  同意/拒绝审批 -->
+	<el-dialog v-model="operaVisibleDialog" :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="review" :rules="[{ required: true, message: '审批意见不能为空' }]">
-				<el-input v-model="form.review" type="textarea" placeholder="请输入内容" maxlength="64" show-word-limit> </el-input>
+			<el-form-item label="审批意见" 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 prop="attachment" label="附件" class="example-img-box">
+			<el-form-item v-if="false" prop="attachment" label="附件" class="example-img-box">
 				<!--'.docx', '.doc', '.pptx', '.ppt', '.xlsx', '.xls', '.zip', '.csv', '.pdf', '.png', '.jpg'  因前端不支持图片以外格式,所以注释 -->
 				<FileUpload
 					v-model="form.attachment"
@@ -30,12 +30,24 @@
 <script setup>
 import { computed, reactive, ref } from 'vue'
 import FileUpload from '@/components/FileUpload.vue'
+import { processConsentTaskApi, processRejectionTaskApi } from '@/api/flow/processTask'
 
 const props = defineProps({
+	// 弹窗是否显示
 	modelValue: {
 		type: Boolean,
 		default: false
 	},
+	// 审核id
+	taskId: {
+		type: String,
+		default: undefined
+	},
+	// 审核类型 同意(agree) or 拒绝(reject)
+	currentType: {
+		type: String,
+		default: 'agree'
+	},
 	showOrderDesc: {
 		type: Boolean,
 		default: true
@@ -48,27 +60,31 @@ const props = defineProps({
 })
 const btnDisabled = ref(false)
 const form = reactive({
-	review: '',
-	attachment: []
+	content: '',
+	// attachment: []
 })
 const formRef = ref(null)
 const uploadLoading = ref(false)
 
-const $myEmit = defineEmits(['update:modelValue', 'confirm'])
+const $myEmit = defineEmits(['update:modelValue'])
 
 const submitForm = () => {
 	btnDisabled.value = true
-	const formData = { ...form }
+	const formData = { ...form, taskId: props.taskId }
 	formRef.value
 		.validate()
-		.then(valid => {
+		.then(async valid => {
 			if (valid) {
-				emit('confirm', formData)
+				if (currentTip.value) {
+					await processConsentTaskApi(formData)
+				} else {
+					await processRejectionTaskApi(formData)
+				}
+				closeDialog()
 				btnDisabled.value = false
 			}
 		})
 		.catch(err => {
-			console.error('挂起订单表单拦截', err)
 			btnDisabled.value = false
 		})
 }
@@ -86,6 +102,10 @@ const operaVisibleDialog = computed({
 	}
 })
 
+const currentTip = computed(() => {
+	return props.currentType === 'agree' ? '同意' : '拒绝'
+})
+
 const clearValidate = () => {}
 </script>
 

+ 4 - 0
src/views/approve/components/deliverToReviewDialog.vue

@@ -49,6 +49,10 @@ const props = defineProps({
 	linkType: {
 		type: String,
 		default: '1'
+	},
+	taskId: {
+		type: String,
+		default: undefined
 	}
 })
 const btnDisabled = ref(false)

+ 4 - 0
src/views/approve/components/loseSignDialog.vue

@@ -49,6 +49,10 @@ const props = defineProps({
 	linkType: {
 		type: String,
 		default: '1'
+	},
+	taskId: {
+		type: String,
+		default: undefined
 	}
 })
 const btnDisabled = ref(false)

+ 16 - 10
src/views/approve/components/reviewDialog.vue

@@ -2,10 +2,10 @@
 	<!-- 评论弹窗 -->
 	<el-dialog v-model="reviewVisibleDialog" title="评论内容" 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="review" :rules="[{ required: true, message: '评论内容不能为空' }]">
-				<el-input v-model="form.review" type="textarea" placeholder="请输入内容" maxlength="64" show-word-limit> </el-input>
+			<el-form-item label="评论" 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 prop="attachment" label="附件" class="example-img-box">
+			<el-form-item v-if="false" prop="attachment" label="附件" class="example-img-box">
 				<!--'.docx', '.doc', '.pptx', '.ppt', '.xlsx', '.xls', '.zip', '.csv', '.pdf', '.png', '.jpg'  因前端不支持图片以外格式,所以注释 -->
 				<FileUpload
 					v-model="form.attachment"
@@ -29,6 +29,7 @@
 
 <script setup>
 import { computed, reactive, ref } from 'vue'
+import { processReviewTaskApi } from '@/api/flow/processTask'
 import FileUpload from '@/components/FileUpload.vue'
 
 const props = defineProps({
@@ -44,31 +45,36 @@ const props = defineProps({
 	linkType: {
 		type: String,
 		default: '1'
+	},
+	taskId: {
+		type: String,
+		default: undefined
 	}
 })
 const btnDisabled = ref(false)
 const form = reactive({
-	review: '',
-	attachment: []
+	content: '',
+	// attachment: []
 })
 const formRef = ref(null)
 const uploadLoading = ref(false)
 
-const $myEmit = defineEmits(['update:modelValue', 'confirm'])
+const $myEmit = defineEmits(['update:modelValue'])
 
+// 提交
 const submitForm = () => {
 	btnDisabled.value = true
-	const formData = { ...form }
+	const formData = { ...form, taskId: props.taskId }
 	formRef.value
 		.validate()
-		.then(valid => {
+		.then(async valid => {
 			if (valid) {
-				emit('confirm', formData)
+				await processReviewTaskApi(formData)
+				closeDialog()
 				btnDisabled.value = false
 			}
 		})
 		.catch(err => {
-			console.error('挂起订单表单拦截', err)
 			btnDisabled.value = false
 		})
 }

+ 4 - 0
src/views/approve/components/rollbackDialog.vue

@@ -49,6 +49,10 @@ const props = defineProps({
 	linkType: {
 		type: String,
 		default: '1'
+	},
+	taskId: {
+		type: String,
+		default: undefined
 	}
 })
 const btnDisabled = ref(false)

+ 15 - 9
src/views/approve/pendingApproval/detail.vue

@@ -60,8 +60,8 @@
 			<template #footer>
 				<div class="flow-actions">
 					<el-button :icon="ChatLineSquare" @click="openComment('reviewVisible')">评论</el-button>
-					<el-button :icon="Check" type="success" @click="openComment('consentOrRefuseVisible')">同意</el-button>
-					<el-button :icon="Close" type="danger" @click="openComment('consentOrRefuseVisible')">拒绝</el-button>
+					<el-button :icon="Check" type="success" @click="openComment('consentOrRefuseVisible', 'agree')">同意</el-button>
+					<el-button :icon="Close" type="danger" @click="openComment('consentOrRefuseVisible', 'reject')">拒绝</el-button>
 					<el-dropdown style="margin-left: 12px">
 						<el-button :icon="More">更多</el-button>
 						<template #dropdown>
@@ -90,22 +90,22 @@
 		</el-drawer>
 
 		<!-- 评论弹窗-->
-		<review-dialog v-if="reviewVisible" v-model="reviewVisible"></review-dialog>
+		<review-dialog v-if="reviewVisible" v-model="reviewVisible" :task-id="taskId"></review-dialog>
 
 		<!-- 加签弹窗 -->
-		<add-sign-dialog v-if="addSignVisible" v-model="addSignVisible"></add-sign-dialog>
+		<add-sign-dialog v-if="addSignVisible" v-model="addSignVisible" :task-id="taskId"></add-sign-dialog>
 
 		<!-- 同意或拒绝弹窗 -->
-		<consent-or-refuse-dialog v-if="consentOrRefuseVisible" v-model="consentOrRefuseVisible"></consent-or-refuse-dialog>
+		<consent-or-refuse-dialog v-if="consentOrRefuseVisible" v-model="consentOrRefuseVisible" :task-id="taskId" :current-type="currentDialog"></consent-or-refuse-dialog>
 
 		<!-- 转交审批弹窗 -->
-		<deliver-to-review-dialog v-if="deliverToReviewVisible" v-model="deliverToReviewVisible"></deliver-to-review-dialog>
+		<deliver-to-review-dialog v-if="deliverToReviewVisible" v-model="deliverToReviewVisible" :task-id="taskId"></deliver-to-review-dialog>
 
 		<!-- 减签弹窗 -->
-		<lose-sign-dialog v-if="loseSignVisible" v-model="loseSignVisible"></lose-sign-dialog>
+		<lose-sign-dialog v-if="loseSignVisible" v-model="loseSignVisible" :task-id="taskId"></lose-sign-dialog>
 
 		<!-- 回退弹窗 -->
-		<rollback-dialog v-if="rollbackVisible" v-model="rollbackVisible"></rollback-dialog>
+		<rollback-dialog v-if="rollbackVisible" v-model="rollbackVisible" :task-id="taskId"></rollback-dialog>
 	</div>
 </template>
 
@@ -133,6 +133,10 @@ const props = defineProps({
 	messageId: {
 		type: String,
 		default: undefined
+	},
+	taskId: {
+		type: String,
+		default: undefined
 	}
 })
 const emit = defineEmits(['update:modelValue', 'successFn'])
@@ -145,6 +149,7 @@ const deliverToReviewVisible = ref(false)
 const loseSignVisible = ref(false)
 const rollbackVisible = ref(false)
 const activeData = ref([])
+const currentDialog = ref(null)
 
 // 关闭按钮
 const closeDrawer = () => {
@@ -166,7 +171,7 @@ const visibleDialog = computed({
 })
 
 // 操作按钮
-const openComment = type => {
+const openComment = (type, item) => {
 	switch (type) {
 		case 'reviewVisible':
 			reviewVisible.value = !reviewVisible.value
@@ -175,6 +180,7 @@ const openComment = type => {
 			addSignVisible.value = !addSignVisible.value
 			break
 		case 'consentOrRefuseVisible':
+			currentDialog.value = item
 			consentOrRefuseVisible.value = !consentOrRefuseVisible.value
 			break
 		case 'deliverToReviewVisible':

+ 3 - 1
src/views/approve/pendingApproval/index.vue

@@ -36,7 +36,7 @@
 			</LeTable>
 		</div>
 
-		<message-detail v-if="visibleDetail" v-model="visibleDetail" :message-id="currentId" @closed="visibleDetail = false"> </message-detail>
+		<message-detail v-if="visibleDetail" v-model="visibleDetail" :message-id="currentId" :task-id="taskId" @closed="visibleDetail = false"> </message-detail>
 	</div>
 </template>
 <script lang="tsx" setup>
@@ -49,6 +49,7 @@ const route = useRoute()
 
 const visibleDetail = ref(false) // 权限设置弹窗显示隐藏
 const currentId = ref(null)
+const taskId = ref(null) // 当前任务id
 
 // 表格搜索条件
 const forms = ref([
@@ -155,6 +156,7 @@ const { searchData, tableOpts, checkedColumns, activeColumns } = useTablePage(
 
 const openDetail = (row: any) => {
 	currentId.value = row.instanceId
+	taskId.value = row.taskId
 	visibleDetail.value = true
 }