recordItem.vue 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <template>
  2. <div class="record-item">
  3. <div class="record-title">
  4. <slot name="title"></slot>
  5. </div>
  6. <div class="record-content">
  7. <div class="info-item">
  8. 触发条件:
  9. <span class="info-val">{{ recordItemData?.condition }}</span>
  10. </div>
  11. <div class="info-item">
  12. 农事编号:
  13. <span class="info-val">{{ recordItemData?.code }}</span>
  14. </div>
  15. <div class="info-item">
  16. 推荐时间:
  17. <span class="info-val">{{ recordItemData?.executeDate }}</span>
  18. </div>
  19. <div class="info-item" v-if="recordItemData?.attention">
  20. 巡园提醒:
  21. <span class="info-val">{{ recordItemData?.attention }}</span>
  22. </div>
  23. <div class="info-item recipe-name" v-if="onlyRecipeName && recordItemData?.prescriptionList && recordItemData?.prescriptionList.length">
  24. <span class="name-text">药物处方:</span>
  25. <div class="rescription info-val">
  26. <span
  27. v-for="(
  28. fertilizer, fertilizerI
  29. ) in recordItemData.prescriptionList"
  30. :key="fertilizerI"
  31. >
  32. <span v-for="(pest, pestI) in fertilizer.pesticideFertilizerList" :key="'sub' + pestI">
  33. {{ pest.defaultName }}
  34. <span
  35. v-if="
  36. (pestI !== fertilizer.pesticideFertilizerList.length - 1) || (fertilizerI !== recordItemData.prescriptionList.length - 1)
  37. "
  38. >
  39. +
  40. </span>
  41. </span>
  42. </span>
  43. </div>
  44. </div>
  45. <div class="info-item" v-if="!onlyRecipeName && recordItemData?.prescriptionList && recordItemData?.prescriptionList.length">
  46. 药物处方
  47. <div class="info-table">
  48. <div class="table">
  49. <div class="th">
  50. <div class="td">名称</div>
  51. <div class="td width">品牌</div>
  52. <div class="td">配比</div>
  53. <div class="td">方式</div>
  54. </div>
  55. <div v-for="(prescriptionItem, prescriptionI) in recordItemData.prescriptionList" :key="prescriptionI">
  56. <div class="tr" v-for="(subP, subI) in prescriptionItem.pesticideFertilizerList" :key="subI">
  57. <div class="td">{{ subP.typeName }}</div>
  58. <div class="td width">{{ subP.defaultName }}</div>
  59. <div class="td">{{ subP.ratio }}</div>
  60. <div class="td">人工</div>
  61. </div>
  62. </div>
  63. <!-- <div class="tr">
  64. <div class="td width">80%代森锰锌</div>
  65. <div class="td">山德生</div>
  66. <div class="td">1:2000</div>
  67. <div class="td">人工</div>
  68. </div> -->
  69. </div>
  70. </div>
  71. </div>
  72. </div>
  73. <slot name="footer"></slot>
  74. </div>
  75. </template>
  76. <script setup>
  77. const props = defineProps({
  78. onlyRecipeName: {
  79. type: Boolean,
  80. default: false,
  81. },
  82. recordItemData: {
  83. type: Object,
  84. default: () => ({}),
  85. },
  86. });
  87. </script>
  88. <style lang="scss" scoped>
  89. .record-item {
  90. background: #ffffff;
  91. border-radius: 8px;
  92. padding: 12px;
  93. margin: 0 10px 10px;
  94. .record-title {
  95. font-size: 16px;
  96. color: #333333;
  97. }
  98. .record-content {
  99. font-size: 12px;
  100. .info-item {
  101. color: #bbbbbb;
  102. margin-bottom: 4px;
  103. .info-val {
  104. color: #666666;
  105. }
  106. }
  107. .recipe-name {
  108. display: flex;
  109. .name-text {
  110. flex: none;
  111. }
  112. .rescription {
  113. max-width: 100%;
  114. white-space: nowrap;
  115. overflow: hidden;
  116. text-overflow: ellipsis;
  117. }
  118. }
  119. .info-table {
  120. margin-top: 8px;
  121. .table {
  122. border: 1px solid rgba(196, 196, 196, 0.8);
  123. border-radius: 4px;
  124. font-size: 13px;
  125. .th {
  126. background: #f6f6f6;
  127. color: #999999;
  128. display: flex;
  129. justify-content: space-between;
  130. border-radius: 4px 4px 0 0;
  131. padding: 4px 0;
  132. }
  133. .tr {
  134. display: flex;
  135. justify-content: space-between;
  136. align-items: center;
  137. color: #333333;
  138. padding: 10px 0;
  139. }
  140. .tr + .tr {
  141. border-top: 1px solid rgba(0, 0, 0, 0.08);
  142. }
  143. .td {
  144. width: 25%;
  145. padding: 0 2px;
  146. text-align: center;
  147. }
  148. .width {
  149. width: 55%;
  150. }
  151. }
  152. }
  153. }
  154. }
  155. </style>