You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.8 KiB
82 lines
1.8 KiB
<template> |
|
<view class="wrapper"> |
|
<view class="header"> |
|
<text>总耗时</text> |
|
<text class="ml-8">{{ getTotalTime() }}</text> |
|
</view> |
|
<view class="body" > |
|
<view v-for="item in flows" class="flow-node"> |
|
<view class="flex gap flow-info"> |
|
<text class="info">{{ item.createTime }}</text> |
|
<text>{{ item.handlerDeptName }}</text> |
|
<text class="primary bold">{{ item.flowAfterName }}</text> |
|
</view> |
|
<view class="flex-inline gap flow-time"> |
|
<text class="info">用时</text> |
|
<text class="primary bold">{{ formatTimeText(item.consumingTime) }}</text> |
|
</view> |
|
</view> |
|
</view> |
|
</view> |
|
</template> |
|
|
|
<script setup> |
|
import { inject } from 'vue' |
|
import { formatTimeText } from '@/common/util' |
|
const flows = inject("flows"); |
|
|
|
function getTotalTime() { |
|
if (!flows.value.length) { |
|
return ""; |
|
} |
|
const sum = flows.value |
|
.map((item) => item.consumingTime) |
|
.reduce((a, b) => a + b); |
|
return formatTimeText(sum); |
|
} |
|
</script> |
|
|
|
<style lang="scss" scoped> |
|
.wrapper { |
|
background-color: #fff; |
|
|
|
.header { |
|
border-bottom: 1px solid #E5E5E5; |
|
padding: 18px 12px; |
|
line-height: 1; |
|
font-size: 14px; |
|
} |
|
.body { |
|
font-size: 12px; |
|
padding: 12px; |
|
.flow-node { |
|
margin-bottom: 8px; |
|
.flow-info { |
|
margin-bottom: 8px; |
|
padding-left: 18px; |
|
position: relative; |
|
&:before { |
|
content: ''; |
|
display: block; |
|
position: absolute; |
|
left: 0; |
|
top: 50%; |
|
transform: translate(-50%, -50%); |
|
width: 10px; |
|
height: 10px; |
|
background-color: #bfbfbf; |
|
border: 1px solid #f1fff1; |
|
border-radius: 50%; |
|
} |
|
} |
|
.flow-time { |
|
height: 28px; |
|
padding: 0 16px; |
|
line-height: 28px; |
|
background: #F5F6FF; |
|
border-left: 2px solid #00D050; |
|
} |
|
} |
|
} |
|
} |
|
</style> |