feat: [bpm] review 修改

This commit is contained in:
jason
2026-01-17 16:38:07 +08:00
parent d970dfe481
commit 46bbb26699
3 changed files with 47 additions and 42 deletions

View File

@@ -10,21 +10,21 @@
<!-- 审批表单 -->
<view class="p-24rpx">
<view class="overflow-hidden rounded-12rpx bg-white shadow-sm">
<view class="p-24rpx">
<view class="mb-16rpx text-32rpx text-[#333] font-semibold">
审批意见
</view>
<wd-form ref="formRef" :model="formData" :rules="formRules">
<wd-cell-group border>
<!-- 审批意见 -->
<wd-textarea
v-model="formData.reason"
prop="reason"
label="审批意见:"
label-width="180rpx"
placeholder="请输入审批意见"
:maxlength="500"
show-word-limit
clearable
custom-class="border border-solid border-[#e5e5e5] rounded-8rpx"
/>
</view>
</view>
</wd-cell-group>
</wd-form>
<!-- 提交按钮 -->
<view class="mt-48rpx">
@@ -43,14 +43,16 @@
</template>
<script lang="ts" setup>
import { computed, reactive, ref } from 'vue'
import type { FormInstance } from 'wot-design-uni/components/wd-form/types'
import { computed, onMounted, reactive, ref } from 'vue'
import { useToast } from 'wot-design-uni'
import { approveTask, rejectTask } from '@/api/bpm/task'
import { navigateBackPlus } from '@/utils'
const props = defineProps<{
id?: string | any
pass?: string | any
processInstanceId?: string
taskId?: string
pass?: string
}>()
definePage({
@@ -60,7 +62,8 @@ definePage({
},
})
const taskId = computed(() => props.id || '')
const taskId = computed(() => props.taskId || '')
const processInstanceId = computed(() => props.processInstanceId)
const isPass = computed(() => props.pass !== 'false') // true: 同意, false: 拒绝
const toast = useToast()
const formLoading = ref(false)
@@ -68,54 +71,57 @@ const formData = reactive({
reason: '',
})
const formRules = {
reason: [
{ required: true, message: '审批意见不能为空' },
],
}
const formRef = ref<FormInstance>()
/** 是否为同意操作 */
const isApprove = computed(() => isPass.value)
/** 返回上一页 */
function handleBack() {
navigateBackPlus(`/pages-bpm/processInstance/detail/index?id=${taskId.value}`)
}
/** 初始化校验 */
if (!props.id) {
toast.show('参数错误')
}
/** 校验表单 */
function validateForm() {
if (!formData.reason.trim()) {
toast.show('请输入审批意见')
return false
}
return true
navigateBackPlus(`/pages-bpm/processInstance/detail/index?id=${processInstanceId.value}&taskId=${taskId.value}`)
}
/** 提交审批 */
async function handleSubmit() {
// TODO @jason看看是不是要用原生的校验
if (formLoading.value) {
return
}
if (!validateForm()) {
// 使用 wd-form 的校验方法
const { valid } = await formRef.value!.validate()
if (!valid) {
return
}
formLoading.value = true
try {
const api = isApprove.value ? approveTask : rejectTask
// TODO @jason这里看看不用 result
const result = await api({
await api({
id: taskId.value as string,
reason: formData.reason,
})
if (result) {
toast.success('审批成功')
setTimeout(() => {
handleBack()
}, 1500)
}
toast.success('审批成功')
setTimeout(() => {
uni.redirectTo({
url: `/pages-bpm/processInstance/detail/index?id=${processInstanceId.value}&taskId=${taskId.value}`,
})
}, 1000)
} finally {
formLoading.value = false
}
}
/** 页面加载时 */
onMounted(() => {
/** 初始化校验 */
if (!props.taskId || !props.processInstanceId) {
toast.show('参数错误')
}
})
</script>

View File

@@ -52,7 +52,6 @@ import type { Action } from 'wot-design-uni/components/wd-action-sheet/types'
import type { ButtonType } from 'wot-design-uni/components/wd-button/types'
import type { ProcessInstance } from '@/api/bpm/processInstance'
import type { Task } from '@/api/bpm/task'
import { useToast } from 'wot-design-uni'
import { useUserStore } from '@/store'
import {
BpmProcessInstanceStatus,
@@ -198,10 +197,10 @@ function init(theProcessInstance: ProcessInstance, task: Task) {
function handleOperation(operationType: number) {
switch (operationType) {
case BpmTaskOperationButtonTypeEnum.APPROVE:
uni.navigateTo({ url: `/pages-bpm/processInstance/detail/audit/index?id=${runningTask.value.id}&pass=true` })
uni.navigateTo({ url: `/pages-bpm/processInstance/detail/audit/index?processInstanceId=${processInstance.value.id}&taskId=${runningTask.value?.id}&pass=true` })
break
case BpmTaskOperationButtonTypeEnum.REJECT:
uni.navigateTo({ url: `/pages-bpm/processInstance/detail/audit/index?id=${runningTask.value.id}&pass=false` })
uni.navigateTo({ url: `/pages-bpm/processInstance/detail/audit/index?processInstanceId=${processInstance.value.id}&taskId=${runningTask.value?.id}&pass=false` })
break
case BpmTaskOperationButtonTypeEnum.DELEGATE:
uni.navigateTo({

View File

@@ -123,12 +123,12 @@ function handleDetail(item: Task) {
/** 同意 */
function handleApprove(item: Task) {
uni.navigateTo({ url: `/pages-bpm/processInstance/detail/audit/index?id=${item.id}&pass=true` })
uni.navigateTo({ url: `/pages-bpm/processInstance/detail/audit/index?processInstanceId=${item.processInstance.id}&taskId=${item.id}&pass=true` })
}
/** 拒绝 */
function handleReject(item: Task) {
uni.navigateTo({ url: `/pages-bpm/processInstance/detail/audit/index?id=${item.id}&pass=false` })
uni.navigateTo({ url: `/pages-bpm/processInstance/detail/audit/index?processInstanceId=${item.processInstance.id}&taskId=${item.id}&pass=false` })
}
/** 触底加载更多 */