breast.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <template>
  2. <view class="page" :style="{'height':(h-th)+'px','padding-top':mt+'px'}">
  3. <c-nav-bar title="添加商品" :showIcon="true"></c-nav-bar>
  4. <view class="content">
  5. <view class="item" v-for="(item,index) in list" :key="index">
  6. <text>{{item.breakfastName}}</text>
  7. <text>{{item.price}}</text>
  8. <u-number-box v-model="item.num" min="0">
  9. <view slot="minus" class="minus">
  10. <u-icon name="minus" size="22"></u-icon>
  11. </view>
  12. <text slot="input" class="input">{{item.num||0}}</text>
  13. <view slot="plus" class="plus">
  14. <u-icon name="plus" size="22"></u-icon>
  15. </view>
  16. </u-number-box>
  17. </view>
  18. <view class="item" v-for="(item,index) in list2" :key="index">
  19. <text>{{item.projectName}}</text>
  20. <text>{{item.defaultPrice}}</text>
  21. <u-number-box v-model="item.num" min="0">
  22. <view slot="minus" class="minus">
  23. <u-icon name="minus" size="22"></u-icon>
  24. </view>
  25. <text slot="input" class="input">{{item.num||0}}</text>
  26. <view slot="plus" class="plus">
  27. <u-icon name="plus" size="22"></u-icon>
  28. </view>
  29. </u-number-box>
  30. </view>
  31. </view>
  32. <view class="btn">
  33. <text @click="conform()">确定</text>
  34. </view>
  35. </view>
  36. </template>
  37. <script>
  38. import listItem from '../../uni_modules/uview-ui/libs/config/props/listItem';
  39. export default {
  40. data() {
  41. return {
  42. list: [],
  43. list2: []
  44. }
  45. },
  46. onLoad(opt) {
  47. console.log(opt)
  48. let list = JSON.parse(opt.list1);
  49. let list2 =JSON.parse(opt.list2);
  50. this.getBreastData(list);
  51. this.getOtherData(list2);
  52. },
  53. methods: {
  54. conform() {
  55. this.getOpenerEventChannel().emit('addSuccess', {
  56. 'data1': this.list,
  57. 'data2': this.list2
  58. });
  59. uni.navigateBack();
  60. },
  61. getBreastData(list) {
  62. this.$api.get('/merchant/hotel/order/getBreakfastList', {
  63. homestayId: '1711268640588517378'
  64. }).then(res => {
  65. console.log(res)
  66. if (res.data.code == 0) {
  67. if (list && list.length != 0) {
  68. for (let i = 0; i < res.data.data.length; i++) {
  69. let item = list.filter(
  70. (item) =>
  71. item.breakfastName == res.data.data[i].breakfastName
  72. );
  73. if (item) {
  74. res.data.data[i].num = item[0].num;
  75. }
  76. }
  77. }
  78. this.list = res.data.data
  79. }
  80. console.log(this.list)
  81. })
  82. },
  83. getOtherData(list2) {
  84. this.$api.get('/merchant/hotel/order/getOtherList', {
  85. homestayId: '1711268640588517378'
  86. }).then(res => {
  87. if (res.data.code == 0) {
  88. if (list2 && list2.length != 0) {
  89. for (let i = 0; i < res.data.data.length; i++) {
  90. let item = list2.filter(
  91. (item) =>
  92. item.projectName == res.data.data[i].projectName
  93. );
  94. if (item) {
  95. res.data.data[i].num = item[0].num;
  96. }
  97. }
  98. }
  99. this.list2 = res.data.data
  100. }
  101. })
  102. },
  103. }
  104. }
  105. </script>
  106. <style lang="scss">
  107. .btn {
  108. position: fixed;
  109. background-color: #fff;
  110. padding: 30rpx 0;
  111. z-index: 9;
  112. bottom: 0;
  113. width: 100%;
  114. left: 0;
  115. text-align: center;
  116. text {
  117. display: inline-block;
  118. width: 90%;
  119. height: 96rpx;
  120. line-height: 96rpx;
  121. background-color: #1372FF;
  122. color: #fff;
  123. font-size: 34rpx;
  124. border-radius: 48rpx;
  125. }
  126. }
  127. .page {
  128. background: #F3F4F4;
  129. box-sizing: border-box;
  130. overflow-y: auto;
  131. overflow-x: auto;
  132. }
  133. .content {
  134. padding: 0 30rpx 20rpx;
  135. width: 96%;
  136. margin: 20rpx auto 0;
  137. box-sizing: border-box;
  138. background-color: #fff;
  139. .item {
  140. padding: 36rpx 0;
  141. display: flex;
  142. align-items: center;
  143. justify-content: space-between;
  144. border-bottom: 1rpx solid #D1D1D1;
  145. &:last-child {
  146. border: 0;
  147. }
  148. text {
  149. font-size: 30rpx;
  150. color: #F14D4D;
  151. &:nth-of-type(1) {
  152. font-weight: bold;
  153. color: #333;
  154. }
  155. }
  156. }
  157. }
  158. .input {
  159. margin: 0 20rpx;
  160. font-size: 28rpx;
  161. }
  162. .minus,
  163. .plus {
  164. justify-content: center;
  165. display: flex;
  166. width: 34rpx;
  167. height: 34rpx;
  168. line-height: 34rpx;
  169. padding: 8rpx 6rpx;
  170. border: 1px solid #999;
  171. border-radius: 6rpx;
  172. }
  173. </style>