overDetail.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <template>
  2. <zj-page-layout
  3. :isScroll="true"
  4. :hasFooter="false"
  5. :refresherTriggered="refresherTriggered"
  6. @refresherrefresh="refresherrefresh"
  7. >
  8. <view class="list-container">
  9. <view class="item" v-for="(item, index) in dataList" :key="index">
  10. <view class="row">
  11. <view class="label">采集时间</view>
  12. <view class="value">{{ item.giveTime }}</view>
  13. </view>
  14. <view class="row">
  15. <view class="label">采集状态</view>
  16. <view class="value">{{ item.status | statusFilter }}</view>
  17. </view>
  18. <view class="row">
  19. <view class="label">主工程师</view>
  20. <view class="value">{{ item.workerName }}</view>
  21. </view>
  22. <view class="row" v-if="item.pgOrderWorkers.filter(o => !o.isMaster).length">
  23. <view class="label">辅工程师</view>
  24. <view class="value">{{
  25. item.pgOrderWorkers
  26. .filter(o => !o.isMaster)
  27. .map(o => o.workerName)
  28. .join(',')
  29. }}</view>
  30. </view>
  31. <view class="row">
  32. <view class="label">采集图片</view>
  33. <view class="images">
  34. <view class="it" v-for="(it, idx) in item.pgOrderProductDetails" :key="idx">
  35. <image :src="it.fileUrl" mode="aspectFill" @tap="prevImg(it.fileUrl)"></image>
  36. <view class="text">{{ it.fileName }}</view>
  37. </view>
  38. </view>
  39. </view>
  40. </view>
  41. </view>
  42. <Loading :type="2" :loadStatus="loadStatus" :dataList="dataList" />
  43. </zj-page-layout>
  44. </template>
  45. <script>
  46. export default {
  47. filters: {
  48. statusFilter(val) {
  49. const MAP = {
  50. WAIT: '待采集',
  51. WAIT_SAVE: '待完善',
  52. OK: '已采集'
  53. }
  54. return MAP[val]
  55. }
  56. },
  57. data() {
  58. return {
  59. loadStatus: 1,
  60. refresherTriggered: false,
  61. dataList: []
  62. }
  63. },
  64. async onLoad({ id }) {
  65. this.id = id
  66. this.getList()
  67. },
  68. methods: {
  69. // 预览图片
  70. prevImg(url) {
  71. uni.previewImage({
  72. current: url,
  73. urls: [url]
  74. })
  75. },
  76. refresherrefresh(e) {
  77. this.refresherTriggered = true
  78. this.getList()
  79. },
  80. getList() {
  81. this.$api
  82. .post('/changeOrder/productDetailList', {
  83. workerOrderId: this.id
  84. })
  85. .then(res => {
  86. this.dataList = res.data
  87. })
  88. .finally(res => {
  89. this.loadStatus = 0
  90. this.refresherTriggered = false
  91. })
  92. }
  93. }
  94. }
  95. </script>
  96. <style lang="scss" scoped>
  97. .list-container {
  98. .item {
  99. margin-top: 30rpx;
  100. background: #ffffff;
  101. padding: 30rpx;
  102. }
  103. .row {
  104. display: flex;
  105. margin-top: 20rpx;
  106. &:first-child {
  107. margin-top: 0;
  108. }
  109. .label {
  110. font-size: 28rpx;
  111. color: $sec-font;
  112. margin-right: 20rpx;
  113. flex-shrink: 0;
  114. }
  115. .value {
  116. font-size: 28rpx;
  117. }
  118. .images {
  119. display: flex;
  120. flex-wrap: wrap;
  121. .it {
  122. margin-bottom: 20rpx;
  123. margin-right: 20rpx;
  124. display: flex;
  125. flex-direction: column;
  126. align-items: center;
  127. image {
  128. width: 120rpx;
  129. height: 120rpx;
  130. display: block;
  131. }
  132. .text {
  133. font-size: 24rpx;
  134. color: $sec-font;
  135. margin-top: 8rpx;
  136. }
  137. }
  138. }
  139. }
  140. }
  141. </style>