approvedItem.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <template>
  2. <!-- 左侧列表 -->
  3. <div class="flow-content">
  4. <!-- 搜索条件 -->
  5. <div class="search-box">
  6. <div class="search-segment" style="flex: 1 1 0%">
  7. <el-input v-model="input3" placeholder="流程名称">
  8. <template #append>
  9. <el-button :icon="Search" />
  10. </template>
  11. </el-input>
  12. </div>
  13. <div class="search-segment">
  14. <el-tooltip effect="dark" content="重置" placement="top">
  15. <el-button :icon="Refresh" />
  16. </el-tooltip>
  17. </div>
  18. <div class="search-segment">
  19. <el-button :icon="Filter" />
  20. </div>
  21. </div>
  22. <!-- 内容值 -->
  23. <div v-infinite-scroll="load" class="flow-list-box">
  24. <div v-for="i in count" :key="i" class="item-box" :class="[i === 2 ? 'item-box-choosed' : '']">
  25. <div class="flow-card-box flow-card-box-hoverable">
  26. <!--头部-->
  27. <div class="header">
  28. <el-text tag="b">我是Bold {{ i }}</el-text>
  29. <el-tag type="primary">待审核</el-tag>
  30. </div>
  31. <!--操作类容-->
  32. <div class="summary-list"></div>
  33. <!--底部-->
  34. <div class="footer">
  35. <!-- 头像 -->
  36. <div class="initiator">
  37. <FlowNodeAvatar id="1" />
  38. </div>
  39. <!-- 时间 -->
  40. <div class="begin-time">提交于 2024-02-29 15:30:23</div>
  41. </div>
  42. </div>
  43. </div>
  44. </div>
  45. </div>
  46. </template>
  47. <script setup>
  48. import FlowNodeAvatar from '@/components/Flow/FlowNodeAvatar.vue'
  49. import { Search, Filter, Refresh } from '@element-plus/icons-vue'
  50. import { ref } from 'vue'
  51. const count = ref(0)
  52. const load = () => {
  53. count.value += 2
  54. }
  55. </script>
  56. <style scoped lang="scss">
  57. .flow-content {
  58. width: 330px;
  59. min-width: 330px;
  60. height: 100%;
  61. overflow: hidden;
  62. background: var(--el-bg-color);
  63. border-radius: 6px;
  64. // 搜搜条件
  65. .search-box {
  66. display: flex;
  67. align-items: center;
  68. height: 56px;
  69. padding: 0 12px;
  70. .search-segment + .search-segment {
  71. margin-left: 4px;
  72. }
  73. //> .el-button {
  74. // padding: 0;
  75. // width: 32px;
  76. // background-color: var(--el-fill-color-light);
  77. //}
  78. }
  79. .flow-list-box {
  80. background-color: #fff;
  81. padding: 0 12px;
  82. height: calc(100vh - 161px);
  83. overflow: hidden auto;
  84. scroll-snap-type: y mandatory;
  85. will-change: scroll-position;
  86. .item-box {
  87. margin-bottom: 12px;
  88. &.item-box-choosed {
  89. .flow-card-box {
  90. border-color: var(--el-color-primary);
  91. }
  92. }
  93. }
  94. .flow-card-box {
  95. -webkit-user-select: none;
  96. user-select: none;
  97. border-radius: 6px;
  98. overflow: hidden;
  99. border: 1px solid #e9ebef;
  100. padding: 10px 12px;
  101. cursor: pointer;
  102. transition: box-shadow 0.2s cubic-bezier(0, 0, 1, 1);
  103. &.flow-card-box-hoverable {
  104. &:hover {
  105. box-shadow: 4px 4px 12px rgb(229, 230, 235);
  106. }
  107. }
  108. // 头部
  109. .header {
  110. display: flex;
  111. align-items: center;
  112. justify-content: space-between;
  113. }
  114. // 操作类容
  115. .summary-list {
  116. margin-top: 10px;
  117. }
  118. // 底部
  119. .footer {
  120. margin-top: 10px;
  121. display: flex;
  122. align-items: center;
  123. justify-content: space-between;
  124. font-size: 13px;
  125. .begin-time {
  126. color: var(--el-text-color-regular);
  127. }
  128. }
  129. }
  130. }
  131. }
  132. </style>