processItem.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <template>
  2. <view class="set-item-box">
  3. <view class="process-set-item" v-for="(item,index) in list" :key="item.id">
  4. <!-- 状态 -->
  5. <view :class="'process-set-state ' + returnItemClass(item)">
  6. <view class="process-set-state-2">
  7. <view class="process-set-state-1"></view>
  8. </view>
  9. </view>
  10. <!-- line -->
  11. <view :class="'line line-top ' + returnItemClass(item)" v-if="index > 0"></view>
  12. <view :class="'line line-bottom ' + returnItemClass(item)" v-if="index < list.length-1">
  13. </view>
  14. <!-- 标题 -->
  15. <view class="process-item-title">
  16. <text class="label">{{index+1}}.{{item.name}}</text>
  17. </view>
  18. <!-- 内容 -->
  19. <view class="process-item-content" v-if="item.children">
  20. <!-- 附件 -->
  21. <view v-if="item.type === 1">
  22. <view class="process-set-item" v-for="(node,i) in item.children" :key="node.id">
  23. <!-- 状态 -->
  24. <view :class="'process-set-state ' + returnItemClass(item,node)">
  25. <view class="process-set-state-2">
  26. <view class="process-set-state-1"></view>
  27. </view>
  28. </view>
  29. <!-- 标题 -->
  30. <view class="process-item-title">
  31. <text class="label">{{node.name}}</text>
  32. </view>
  33. <!-- 内容 -->
  34. <view class="process-item-content">
  35. <!-- 展示 -->
  36. <view v-if="item.status !== 1 && node.attachmentContent">
  37. <upload :list="node.attachmentContent ? JSON.parse(node.attachmentContent) : []"
  38. type="preview">
  39. </upload>
  40. </view>
  41. </view>
  42. </view>
  43. </view>
  44. <!-- 可付款 -->
  45. <view v-else-if="item.type === 2">
  46. <view v-if="(item.status === 1 || item.status === 4) && item.roleId === roleType">
  47. <view>
  48. <text>待付款</text>
  49. <text class="color-danger">¥</text>
  50. <text class="color-danger">{{item.totalFee}}</text>
  51. </view>
  52. </view>
  53. <!-- 展示 -->
  54. <view v-else-if="item.type === 2 && item.status === 3">
  55. <view class="hui-state">
  56. <view class="hui-state-bage hui-state-success"></view>
  57. <view class="hui-state-label">
  58. <text>已支付</text>
  59. <text class="color-success">¥</text>
  60. <text class="color-success">{{item.totalFee}}</text>
  61. </view>
  62. </view>
  63. </view>
  64. </view>
  65. <!-- 不可添加附件 -->
  66. <view v-else-if="item.children.length === 0"></view>
  67. <process-item v-else :list="item.children" :parent="item" :roleType="roleType">
  68. </process-item>
  69. </view>
  70. </view>
  71. </view>
  72. </template>
  73. <script>
  74. import processItem from '@/subPages/indexPage/components/processItem.vue';
  75. import upload from '@/components/common/upload.vue'
  76. export default {
  77. props: ['list', 'roleType'],
  78. data() {
  79. return {
  80. }
  81. },
  82. mounted() {},
  83. methods: {
  84. returnItemClass(item, node) {
  85. let str = '';
  86. let status = node ? (node.status > 0 ? node.status : item.status) : item.status;
  87. switch (status) {
  88. case 1:
  89. case 2:
  90. str = 'waiting'
  91. break;
  92. case 3:
  93. str = 'success'
  94. break;
  95. case 4:
  96. str = 'error'
  97. break;
  98. default:
  99. str = 'info'
  100. break;
  101. }
  102. return str;
  103. }
  104. },
  105. components: {
  106. processItem,
  107. upload
  108. }
  109. }
  110. </script>
  111. <style>
  112. </style>