CfStatus.vue 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <template>
  2. <view class="cf-status">
  3. <pub-loading-view :loaded="loaded" height="100%">
  4. <view class="status-item" :class="item.isCur?'is-current':''" v-for="(item,index) in dataList" :key="index">
  5. <view class="status-item-left">
  6. <view class="icon">
  7. <text class="iconfont">{{ item.icon }}</text>
  8. </view>
  9. <view class="line"></view>
  10. </view>
  11. <view class="status-item-right">
  12. <view class="status-item-title">{{item.title}}</view>
  13. <view>{{item.time}}</view>
  14. </view>
  15. </view>
  16. </pub-loading-view>
  17. </view>
  18. </template>
  19. <script lang="ts" setup>
  20. import { ref, PropType, onMounted } from 'vue'
  21. import { cfStatusVO } from '../../lib/type';
  22. const props = defineProps({
  23. ptwybh: {
  24. type: String,
  25. default: ""
  26. },
  27. dataList: {
  28. type: Array as PropType<cfStatusVO[]>,
  29. default: () => []
  30. },
  31. })
  32. const loaded = ref(false)
  33. onMounted(() => {
  34. })
  35. </script>
  36. <style lang="scss" scoped>
  37. .cf-status {
  38. background: #fff;
  39. padding: $uni-spacing-col-s3 $page-row-spacing;
  40. height: 100%;
  41. box-sizing: border-box;
  42. overflow-y: auto;
  43. .status-item {
  44. color: $uni-text-color-grey;
  45. display: flex;
  46. height: 140rpx;
  47. .status-item-left {
  48. @include flex;
  49. flex-direction: column;
  50. margin-right: 24rpx;
  51. .icon {
  52. width: 64rpx;
  53. height: 64rpx;
  54. background: $uni-bg-icon;
  55. border-radius: 50%;
  56. @include flex-center;
  57. .iconfont {
  58. background: linear-gradient(180deg, #46ACFF 0%, $uni-color-primary 100%);
  59. background-clip: text;
  60. text-fill-color: transparent;
  61. -webkit-background-clip: text;
  62. -webkit-text-fill-color: transparent;
  63. font-size: 40rpx;
  64. }
  65. }
  66. .line {
  67. flex: 1;
  68. // width: 1px;
  69. border-left: 1px solid $uni-border-color;
  70. margin: 12rpx 0;
  71. }
  72. }
  73. .status-item-right {
  74. .status-item-title {
  75. font-size: $uni-font-size-lg;
  76. line-height: $uni-line-height-lg;
  77. margin-bottom: 8rpx;
  78. }
  79. }
  80. &.is-current {
  81. .status-item-left {
  82. .line {
  83. border-left: 1px dashed $uni-color-primary;
  84. }
  85. }
  86. .status-item-right {
  87. color: $uni-text-color;
  88. .status-item-title {
  89. font-size: 32rpx;
  90. font-weight: 800;
  91. }
  92. }
  93. }
  94. &:last-child {
  95. .status-item-left {
  96. .line {
  97. display: none;
  98. }
  99. }
  100. }
  101. }
  102. }
  103. </style>