|
@@ -0,0 +1,114 @@
|
|
|
+<template>
|
|
|
+ <div class="item-wrap">
|
|
|
+ <div class="icon-wrap">
|
|
|
+ <div :class="['icon',node.nodeStatus]"></div>
|
|
|
+ <div :class="['line',isLast?'last':'',node.nodeStatus]"></div>
|
|
|
+ </div>
|
|
|
+ <div class="info-wrap">
|
|
|
+ <!-- 发起人或审批人 -->
|
|
|
+ <div class="normal-text">
|
|
|
+ <p>{{node.nodeText}}</p>
|
|
|
+ </div>
|
|
|
+ <ul class="approve-list">
|
|
|
+ <li v-for="(item,itemIndex) in node.approveList" :key="itemIndex">
|
|
|
+ <div class="approve-item-wrap">
|
|
|
+ <!-- 审批人(审批状态) 审批时间-->
|
|
|
+ <div class="normal-text">
|
|
|
+ <p>{{item.approverName}} <span v-if="item.approveStatus">{{'('+item.approveStatus+')'}}</span> </p>
|
|
|
+ <span class="time">{{item.approveTime||''}}</span>
|
|
|
+ </div>
|
|
|
+ <!-- 驳回理由 -->
|
|
|
+ <div class="approve-reason" v-if="item.approveReason">
|
|
|
+ 驳回理由:{{item.approveReason}}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+export default {
|
|
|
+ props:{
|
|
|
+ node:{
|
|
|
+ type:Object,
|
|
|
+ default:{}
|
|
|
+ },
|
|
|
+ isLast:{
|
|
|
+ type:Boolean,
|
|
|
+ default:false
|
|
|
+ }
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+
|
|
|
+ };
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped lang="scss">
|
|
|
+.item-wrap{
|
|
|
+ display: flex;
|
|
|
+ width:100%;
|
|
|
+ .icon-wrap{
|
|
|
+ width:25px;
|
|
|
+ /* border:1px solid black; */
|
|
|
+ position:relative;
|
|
|
+ .icon,.line{
|
|
|
+ position:absolute;
|
|
|
+ left:50%;
|
|
|
+ transform: translateX(-50%);
|
|
|
+ }
|
|
|
+ .icon{
|
|
|
+ width:20px;
|
|
|
+ height:20px;
|
|
|
+ border-radius: 50%;
|
|
|
+ background-color: aquamarine;
|
|
|
+ &.process{
|
|
|
+ background-color: orange;
|
|
|
+ }
|
|
|
+ &.future{
|
|
|
+ background-color: gray;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .line{
|
|
|
+ top:20px;
|
|
|
+ width:1px;
|
|
|
+ height:calc(100% - 20px);
|
|
|
+ background-color: aquamarine;
|
|
|
+ &.process,&.future{
|
|
|
+ background-color: gray;
|
|
|
+ }
|
|
|
+ &.last{
|
|
|
+ background-color: transparent;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .info-wrap{
|
|
|
+ flex:1;
|
|
|
+ margin-left: 15px;
|
|
|
+ margin-bottom: 20px;
|
|
|
+ .approve-list{
|
|
|
+ .approve-item-wrap{
|
|
|
+ .normal-text{
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ .time{
|
|
|
+ color:gray;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .approve-reason{
|
|
|
+ padding-top:5px;
|
|
|
+ color:gray;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|