From 525be3cef03ca90710309bb2d5a0beae04588b32 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期日, 24 十一月 2024 22:04:14 +0800
Subject: [PATCH] !157 【重新提交】permission loadView避免整个modules循环,允许view中间有views文件夹。 Merge pull request !157 from lijfcn/dev
---
src/components/Process/approvalRecord.vue | 170 ++++++++++++++++++++------------------------------------
1 files changed, 62 insertions(+), 108 deletions(-)
diff --git a/src/components/Process/approvalRecord.vue b/src/components/Process/approvalRecord.vue
index d06e7ef..bb4ed91 100644
--- a/src/components/Process/approvalRecord.vue
+++ b/src/components/Process/approvalRecord.vue
@@ -1,49 +1,32 @@
<template>
- <el-dialog v-model="visible" draggable title="瀹℃壒璁板綍" :width="props.width" :height="props.height" append-to-body
- :close-on-click-modal="false">
- <div v-loading="loading">
- <div style="width: 100%;height: 300px;overflow: auto;position: relative;">
- <div v-for="(graphic, index) in graphicInfoVos" :key="index" :style="{
- position: 'absolute',
- left: `${graphic.x}px`,
- top: `${graphic.y}px`,
- width: `${graphic.width}px`,
- height: `${graphic.height}px`,
- cursor: 'pointer',
- zIndex: 99
- }" @mouseover="handleMouseOver(graphic)" @mouseleave="handleMouseLeave()"></div>
- <!-- 寮瑰嚭鐨� div 鍏冪礌 -->
- <div v-show="popupVisible" class="triangle" :style="{
- position: 'absolute',
- left: `${graphicX}px`,
- top: `${graphicY}px`,
- backgroundColor: '#fff',
- padding: '10px',
- zIndex: 100
- }">
- <p>瀹℃壒浜哄憳: {{ nodeInfo.nickName }}</p>
- <p>鑺傜偣鐘舵�侊細{{ nodeInfo.status }}</p>
- <p>寮�濮嬫椂闂达細{{ nodeInfo.startTime }}</p>
- <p>缁撴潫鏃堕棿锛歿{ nodeInfo.endTime }}</p>
- <p>瀹℃壒鑰楁椂锛歿{ nodeInfo.runDuration }}</p>
- </div>
- <el-image :src="src" />
- </div>
- <div>
- <el-table :data="historyList" style="width: 100%" border fit max-height="570">
- <el-table-column label="娴佺▼瀹℃壒鍘嗗彶璁板綍" align="center">
- <el-table-column type="index" label="搴忓彿" align="center" width="50"></el-table-column>
- <el-table-column prop="name" label="浠诲姟鍚嶇О" sortable align="center"></el-table-column>
- <el-table-column prop="nickName" label="鍔炵悊浜�" sortable align="center"></el-table-column>
- <el-table-column label="鐘舵��" sortable align="center">
- <template #default="scope">
- <el-tag type="success">{{ scope.row.statusName }}</el-tag>
- </template>
- </el-table-column>
- <el-table-column prop="comment" label="瀹℃壒鎰忚" sortable align="center"></el-table-column>
- <el-table-column prop="attachmentList" label="闄勪欢" sortable align="center">
- <template #default="scope">
- <el-popover placement="right" v-if="scope.row.attachmentList && scope.row.attachmentList.length > 0" :width="310" trigger="click">
+ <div class="container">
+ <el-dialog v-model="visible" draggable title="瀹℃壒璁板綍" :width="props.width" :height="props.height" :close-on-click-modal="false">
+ <el-tabs v-model="tabActiveName" class="demo-tabs">
+ <el-tab-pane label="娴佺▼鍥�" name="bpmn">
+ <BpmnView ref="bpmnViewRef"></BpmnView>
+ </el-tab-pane>
+ <el-tab-pane v-loading="loading" label="瀹℃壒淇℃伅" name="info">
+ <div>
+ <el-table :data="historyList" style="width: 100%" border fit>
+ <el-table-column type="index" label="搴忓彿" align="center" width="60"></el-table-column>
+ <el-table-column prop="name" label="浠诲姟鍚嶇О" sortable align="center"></el-table-column>
+ <el-table-column prop="nickName" :show-overflow-tooltip="true" label="鍔炵悊浜�" sortable align="center">
+ <template #default="scope">
+ <el-tag type="success">{{ scope.row.nickName || '鏃�' }}</el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column label="鐘舵��" sortable align="center">
+ <template #default="scope">
+ <el-tag type="success">{{ scope.row.statusName }}</el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="comment" label="瀹℃壒鎰忚" sortable align="center"></el-table-column>
+ <el-table-column prop="startTime" label="寮�濮嬫椂闂�" sortable align="center"></el-table-column>
+ <el-table-column prop="endTime" label="缁撴潫鏃堕棿" sortable align="center"></el-table-column>
+ <el-table-column prop="runDuration" label="杩愯鏃堕暱" sortable align="center"></el-table-column>
+ <el-table-column prop="attachmentList" label="闄勪欢" sortable align="center">
+ <template #default="scope">
+ <el-popover v-if="scope.row.attachmentList && scope.row.attachmentList.length > 0" placement="right" :width="310" trigger="click">
<template #reference>
<el-button style="margin-right: 16px">闄勪欢</el-button>
</template>
@@ -55,83 +38,47 @@
</template>
</el-table-column>
</el-table>
-
</el-popover>
- </template>
- </el-table-column>
- <el-table-column prop="startTime" label="寮�濮嬫椂闂�" sortable align="center"></el-table-column>
- <el-table-column prop="endTime" label="缁撴潫鏃堕棿" sortable align="center"></el-table-column>
- <el-table-column prop="runDuration" label="杩愯鏃堕暱" sortable align="center"></el-table-column>
- </el-table-column>
- </el-table>
- </div>
- </div>
- </el-dialog>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ </el-tab-pane>
+ </el-tabs>
+ </el-dialog>
+ </div>
</template>
<script lang="ts" setup>
-import { getHistoryProcessImage, getHistoryRecord } from '@/api/workflow/processInstance';
+import BpmnView from '@/components/BpmnView/index.vue';
+import processApi from '@/api/workflow/processInstance';
+import { propTypes } from '@/utils/propTypes';
+
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
-import { ref } from 'vue';
+
const props = defineProps({
- width: {
- type: String,
- default: '70%'
- },
- height: {
- type: String,
- default: '100%'
- }
+ width: propTypes.string.def('70%'),
+ height: propTypes.string.def('100%')
});
const loading = ref(false);
-const src = ref('');
const visible = ref(false);
const historyList = ref<Array<any>>([]);
-const deleteReason = ref<string>('');
-const graphicInfoVos = ref<Array<any>>([]);
-const nodeListInfo = ref<Array<any>>([]);
-const popupVisible = ref(false);
-const nodeInfo = ref<any>({});
-const graphicX = ref<number | string>(0);
-const graphicY = ref<number | string>(0);
+const tabActiveName = ref('bpmn');
+
+const bpmnViewRef = ref<BpmnView>();
+
//鍒濆鍖栨煡璇㈠鎵硅褰�
-const init = async (processInstanceId: string) => {
+const init = async (businessKey: string | number) => {
visible.value = true;
loading.value = true;
+ tabActiveName.value = 'bpmn';
historyList.value = [];
- graphicInfoVos.value = [];
- getHistoryProcessImage(processInstanceId).then((res) => {
- src.value = 'data:image/png;base64,' + res.data
- });
- getHistoryRecord(processInstanceId).then((response) => {
- historyList.value = response.data.historyRecordList;
- graphicInfoVos.value = response.data.graphicInfoVos;
- nodeListInfo.value = response.data.nodeListInfo;
- deleteReason.value = response.data.deleteReason;
+ processApi.getHistoryRecord(businessKey).then((resp) => {
+ historyList.value = resp.data;
loading.value = false;
});
-};
-//鎮诞浜嬩欢
-const handleMouseOver = async (graphic: any) => {
- graphicX.value = graphic.x + graphic.width + 10;
- graphicY.value = graphic.y - graphic.height + -10;
- nodeInfo.value = {};
- if (nodeListInfo.value && nodeListInfo.value.length > 0) {
- let info = nodeListInfo.value.find((e: any) => e.taskDefinitionKey == graphic.nodeId);
- if (info) {
- nodeInfo.value = {
- nickName: info.nickName,
- status: info.status,
- startTime: info.startTime,
- endTime: info.endTime,
- runDuration: info.runDuration
- };
- popupVisible.value = true;
- }
- }
-};
-//鍏抽棴
-const handleMouseLeave = async () => {
- popupVisible.value = false;
+ await nextTick(() => {
+ bpmnViewRef.value.init(businessKey);
+ });
};
/** 涓嬭浇鎸夐挳鎿嶄綔 */
@@ -145,7 +92,7 @@
init
});
</script>
-<style scoped>
+<style lang="scss" scoped>
.triangle {
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
border-radius: 6px;
@@ -159,4 +106,11 @@
border: 15px solid;
border-color: transparent #fff transparent transparent;
}
+
+.container {
+ :deep(.el-dialog .el-dialog__body) {
+ max-height: calc(100vh - 170px) !important;
+ min-height: calc(100vh - 170px) !important;
+ }
+}
</style>
--
Gitblit v1.9.3