22
22
{{ currentNode.name }}
23
23
</div >
24
24
</div >
25
- <div class =" node-content" @click =" openNodeConfig " >
25
+ <div class =" node-content" @click =" nodeClick " >
26
26
<div class =" node-text" :title =" currentNode.showText" v-if =" currentNode.showText" >
27
27
{{ currentNode.showText }}
28
28
</div >
37
37
</div >
38
38
</div >
39
39
<StartUserNodeConfig v-if =" !readonly && currentNode" ref =" nodeSetting" :flow-node =" currentNode" />
40
+ <!-- 审批记录 -->
41
+ <el-dialog :title =" dialogTitle || '审批记录'" v-model =" dialogVisible" width =" 1000px" append-to-body >
42
+ <el-row >
43
+ <el-table
44
+ :data =" selectTasks"
45
+ size =" small"
46
+ border
47
+ header-cell-class-name =" table-header-gray"
48
+ >
49
+ <el-table-column
50
+ label =" 序号"
51
+ header-align =" center"
52
+ align =" center"
53
+ type =" index"
54
+ width =" 50"
55
+ />
56
+ <el-table-column
57
+ label =" 审批人"
58
+ min-width =" 100"
59
+ align =" center"
60
+ >
61
+ <template #default =" scope " >
62
+ {{ scope.row.assigneeUser?.nickname || scope.row.ownerUser?.nickname }}
63
+ </template >
64
+ </el-table-column >
65
+
66
+ <el-table-column label =" 部门" min-width =" 100" align =" center" >
67
+ <template #default =" scope " >
68
+ {{ scope.row.assigneeUser?.deptName || scope.row.ownerUser?.deptName }}
69
+ </template >
70
+ </el-table-column >
71
+ <el-table-column
72
+ :formatter =" dateFormatter"
73
+ align =" center"
74
+ label =" 开始时间"
75
+ prop =" createTime"
76
+ min-width =" 140"
77
+ />
78
+ <el-table-column
79
+ :formatter =" dateFormatter"
80
+ align =" center"
81
+ label =" 结束时间"
82
+ prop =" endTime"
83
+ min-width =" 140"
84
+ />
85
+ <el-table-column align =" center" label =" 审批状态" prop =" status" min-width =" 90" >
86
+ <template #default =" scope " >
87
+ <dict-tag :type =" DICT_TYPE.BPM_TASK_STATUS" :value =" scope.row.status" />
88
+ </template >
89
+ </el-table-column >
90
+ <el-table-column
91
+ align =" center"
92
+ label =" 审批建议"
93
+ prop =" reason"
94
+ min-width =" 120"
95
+ />
96
+ <el-table-column align =" center" label =" 耗时" prop =" durationInMillis" width =" 100" >
97
+ <template #default =" scope " >
98
+ {{ formatPast2(scope.row.durationInMillis) }}
99
+ </template >
100
+ </el-table-column >
101
+ </el-table >
102
+ </el-row >
103
+ </el-dialog >
40
104
</template >
41
105
<script setup lang="ts">
42
106
import NodeHandler from ' ../NodeHandler.vue'
43
107
import { useWatchNode , useNodeName2 , useTaskStatusClass } from ' ../node'
44
108
import { SimpleFlowNode , NODE_DEFAULT_TEXT , NodeType } from ' ../consts'
45
109
import StartUserNodeConfig from ' ../nodes-config/StartUserNodeConfig.vue'
110
+ import { dateFormatter , formatPast2 } from ' @/utils/formatTime'
111
+ import { DICT_TYPE } from ' @/utils/dict'
46
112
defineOptions ({
47
113
name: ' StartEventNode'
48
114
})
@@ -53,6 +119,7 @@ const props = defineProps({
53
119
}
54
120
})
55
121
const readonly = inject <Boolean >(' readonly' ) // 是否只读
122
+ const tasks = inject <Ref <any []>>(' tasks' )
56
123
// 定义事件,更新父组件。
57
124
const emits = defineEmits <{
58
125
' update:modelValue' : [node : SimpleFlowNode | undefined ]
@@ -63,15 +130,27 @@ const currentNode = useWatchNode(props)
63
130
const { showInput, blurEvent, clickTitle } = useNodeName2 (currentNode , NodeType .START_USER_NODE )
64
131
65
132
const nodeSetting = ref ()
66
- // 打开节点配置
67
- const openNodeConfig = () => {
133
+ //
134
+ const nodeClick = () => {
68
135
if (readonly ) {
69
- return
136
+ // 只读模式,弹窗显示任务信息
137
+ if (tasks && tasks .value ){
138
+ dialogTitle .value = currentNode .value .name
139
+ selectTasks .value = tasks .value .filter ((item : any ) => item ?.taskDefinitionKey === currentNode .value .id )
140
+ dialogVisible .value = true
141
+ }
142
+ } else {
143
+ // 编辑模式,打开节点配置、把当前节点传递给配置组件
144
+ nodeSetting .value .showStartUserNodeConfig (currentNode .value )
145
+ nodeSetting .value .openDrawer ()
70
146
}
71
- // 把当前节点传递给配置组件
72
- nodeSetting .value .showStartUserNodeConfig (currentNode .value )
73
- nodeSetting .value .openDrawer ()
147
+
74
148
}
75
149
150
+ // 任务的弹窗显示,用于只读模式
151
+ const dialogVisible = ref (false ) // 弹窗可见性
152
+ const dialogTitle = ref <string | undefined >(undefined ) // 弹窗标题
153
+ const selectTasks = ref <any []| undefined >([]) // 选中的任务数组
154
+
76
155
</script >
77
156
<style lang="scss" scoped></style >
0 commit comments