Преглед изворни кода

fix: 审批管理 待审批 查看 表单提交内容

lanceJiang пре 1 година
родитељ
комит
4ea5047721

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

@@ -63,6 +63,14 @@ export function processTaskListHisTaskApi(instanceId: string): AxiosPromise {
 	})
 }
 
+// 查看审批信息
+export function processTaskApprovalInfo(taskId: string): AxiosPromise {
+	return request({
+		url: `/v1/process-task/approval-info-${taskId}`,
+		method: 'post'
+	})
+}
+
 export default {
 	processTaskPageMyApplicationApi,
 	processTaskPageApprovedApi,

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

@@ -26,10 +26,8 @@
 					<div class="area-divider"></div>
 
 					<!-- 表单 -->
-					<el-descriptions :column="1" size="default">
-						<el-descriptions-item label="申请人">kooriookami</el-descriptions-item>
-						<el-descriptions-item label="日期">18100000000</el-descriptions-item>
-						<el-descriptions-item label="员工">Suzhou</el-descriptions-item>
+					<el-descriptions v-loading="descItemsData.loading" :column="1" size="default">
+						<el-descriptions-item v-for="(v, i) of descItemsData.list" :key="i" :label="v.showLabel">{{ v.showValue }}</el-descriptions-item>
 					</el-descriptions>
 
 					<div class="area-divider"></div>
@@ -116,7 +114,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 { processTaskListHisTaskApi } from '@/api/flow/processTask'
+import { processTaskListHisTaskApi, processTaskApprovalInfo } from '@/api/flow/processTask'
 import { formatTimestamp } from '@/utils/datetime'
 import ReviewDialog from '../components/reviewDialog'
 import AddSignDialog from '../components/addSignDialog'
@@ -130,9 +128,9 @@ const props = defineProps({
 		type: Boolean,
 		default: false
 	},
-	messageId: {
-		type: String,
-		default: undefined
+	activeItem: {
+		type: Object,
+		default: () => ({})
 	}
 })
 const emit = defineEmits(['update:modelValue', 'successFn'])
@@ -145,6 +143,11 @@ const deliverToReviewVisible = ref(false)
 const loseSignVisible = ref(false)
 const rollbackVisible = ref(false)
 const activeData = ref([])
+const descItemsData = ref({
+	origin: undefined,
+	list: [],
+	loading: false
+})
 
 // 关闭按钮
 const closeDrawer = () => {
@@ -190,7 +193,42 @@ const openComment = type => {
 }
 
 onMounted(() => {
-	processTaskListHisTaskApi(props.messageId).then(data => {
+	const cur = props.activeItem || {}
+	descItemsData.value.loading = true
+	processTaskApprovalInfo(cur.taskId)
+		.then(data => {
+			// console.log(data, 'data.......')
+			descItemsData.value.origin = data
+			try {
+				descItemsData.value.list = JSON.parse(data.formContent).map(item => {
+					const showLabel = item.title
+					let showValue = item.local_value
+					const options = item.options
+					if (Array.isArray(options) && showValue !== undefined) {
+						if (Array.isArray(showValue)) {
+							showValue = showValue.reduce(val => {
+								const cur = options.find(option => option.value === val)
+								return cur?.label || val
+							}, [])
+						} else {
+							const cur = options.find(option => option.value === showValue)
+							showValue = cur?.label || showValue
+						}
+					}
+					return {
+						showLabel,
+						showValue
+					}
+				})
+			} catch (e) {
+				console.error('解析 descItems 数据出现问题', e)
+				descItemsData.value.list = []
+			}
+		})
+		.finally(() => {
+			descItemsData.value.loading = false
+		})
+	processTaskListHisTaskApi(cur.instanceId).then(data => {
 		activeData.value = data
 	})
 })

+ 3 - 3
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" :active-item="activeItem" @closed="visibleDetail = false"> </message-detail>
 	</div>
 </template>
 <script lang="tsx" setup>
@@ -48,7 +48,7 @@ import { useRoute } from 'vue-router'
 const route = useRoute()
 
 const visibleDetail = ref(false) // 权限设置弹窗显示隐藏
-const currentId = ref(null)
+const activeItem = ref(null)
 
 // 表格搜索条件
 const forms = ref([
@@ -154,7 +154,7 @@ const { searchData, tableOpts, checkedColumns, activeColumns } = useTablePage(
 )
 
 const openDetail = (row: any) => {
-	currentId.value = row.instanceId
+	activeItem.value = row
 	visibleDetail.value = true
 }