多租户商城-客户PC端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

222 lines
5.1 KiB

3 years ago
2 years ago
3 years ago
3 years ago
  1. <template>
  2. <div class="shopOrder">
  3. <div class="shopName flexCom">
  4. <div class="flex1 itemShop">店铺{{shopsData.shopName}}</div>
  5. <div class="flex3 itemName">{{ $t('common.beautiproduct') }}</div>
  6. <div class="flex1">宝贝属性</div>
  7. <div class="flex1">单价</div>
  8. <div class="flex1">数量</div>
  9. <div class="flex2">优惠方式</div>
  10. <div class="flex1">小计</div>
  11. </div>
  12. <div class="orderList">
  13. <div class="orderItem flexCom" v-for="order of shopsData.skus" :key="order.skuId">
  14. <div class="itemImg flex1">
  15. <img :src="order.image" :alt="order.productName">
  16. </div>
  17. <div class="itemName flex3">
  18. <span>{{order.productName}}</span>
  19. </div>
  20. <div class="itemSku flex1">
  21. <span>{{order.sku}}</span>
  22. <span>{{order.value}}</span>
  23. </div>
  24. <div class="itemPrice flex1">{{order.price}}</div>
  25. <div class="itemNum flex1">{{order.number}}</div>
  26. <div class="activityBox flex2">
  27. {{
  28. type == 1
  29. ?'拼团':(order.platformSeckillId || order.shopSeckillId)
  30. ?'秒杀' : (order.platformDiscountId || order.shopDiscountId)
  31. ?'折扣' : order.priceId
  32. ?'定价捆绑' : order.composeId
  33. ?'组合捆绑' : order.sceneId
  34. ? '场景营销': order.useMember
  35. ? '会员价' : '无'
  36. }}
  37. </div>
  38. <div class="totalBox flex1">{{order.total}}</div>
  39. </div>
  40. </div>
  41. <div v-if="shopsData.receiveNotMatch" class="adressTips">当前地址不支持配送可更换其他地址试试</div>
  42. <slot name="coupon"></slot>
  43. <div class="remarksBox">
  44. <div class="remarksInfo">
  45. <el-input
  46. type="textarea"
  47. :rows="2"
  48. resize="none"
  49. placeholder="如有其他要求,请备注。"
  50. v-model="shopsData.remark">
  51. </el-input>
  52. </div>
  53. </div>
  54. <div class="orderTotalBox">
  55. <div class="discount" v-if="shopsData.skuDiscountInfoMap">
  56. <div class="shippingBox"
  57. v-for="item in Object.keys(shopsData.skuDiscountInfoMap)"
  58. :key="item"
  59. >
  60. {{ shopsData.skuDiscountInfoMap[item][0] }}
  61. <span>{{ shopsData.skuDiscountInfoMap[item][1].replace('优惠', '-') }}</span>
  62. </div>
  63. </div>
  64. <div class="shippingBox">运费<span>{{ shopsData.distribution.distributionPrice || 0 }}</span></div>
  65. <div class="orderTotalBox">店铺合计<b>{{ (shopsData.total + (shopsData.distribution.distributionPrice || 0)).toFixed(2) }}</b></div>
  66. </div>
  67. </div>
  68. </template>
  69. <script>
  70. import CouponBox from '@/views/placeOrder/components/couponBox.vue'
  71. export default {
  72. name: 'shopOrder',
  73. components: {
  74. CouponBox
  75. },
  76. props: {
  77. shopsData: {
  78. type: Object,
  79. default: () => ({})
  80. },
  81. type: Number
  82. },
  83. data () {
  84. return {
  85. index: 0
  86. }
  87. },
  88. methods: {
  89. couponSelect (item) {
  90. this.$emit('couponSelect', item)
  91. }
  92. }
  93. }
  94. </script>
  95. <style lang="scss" scoped>
  96. .shopOrder {
  97. margin-bottom: 50px;
  98. .orderTotalBox {
  99. margin-top: 20px;
  100. text-align: right;
  101. font-size: 16px;
  102. .shippingBox {
  103. margin: 16px 0;
  104. color: #333333;
  105. }
  106. .orderTotalBox {
  107. color: #333333;
  108. }
  109. b {
  110. color: $mainGlod;
  111. }
  112. span {
  113. color: #C83732;
  114. }
  115. }
  116. .shopName {
  117. height: 50px;
  118. padding: 0 15px;
  119. color: #FFF;
  120. background-color: #333;
  121. font-size: 16px;
  122. .itemShop{
  123. white-space: nowrap;
  124. }
  125. }
  126. .flexCom{
  127. display: flex;
  128. align-items: center;
  129. text-align: center;
  130. .flex1{
  131. flex: 1;
  132. }
  133. .flex2{
  134. flex: 2;
  135. }
  136. .flex3{
  137. flex: 3;
  138. }
  139. .flex4{
  140. flex: 4;
  141. }
  142. .flex5{
  143. flex: 5;
  144. }
  145. }
  146. .orderList {
  147. width: 100%;
  148. margin-bottom: 30px;
  149. .orderItem {
  150. color: #333;
  151. border: 1px solid #E5E5E5;
  152. border-bottom: none;
  153. padding: 15px;
  154. img{
  155. width: 100px;
  156. height: 100px;
  157. }
  158. .itemName{
  159. text-align: center;
  160. }
  161. .activityBox {
  162. width: 10%;
  163. text-align: center;
  164. font-size: 16px;
  165. }
  166. .discountBox {
  167. width: 20%;
  168. display: flex;
  169. justify-content: center;
  170. color: #666666;
  171. >>> .el-select {
  172. width: 200px;
  173. .el-input__inner {
  174. height: 34px;
  175. line-height: 34px;
  176. }
  177. }
  178. }
  179. .totalBox {
  180. width: 10%;
  181. text-align: center;
  182. color: $mainGlod;
  183. font-weight: bold;
  184. }
  185. }
  186. .orderItem:last-child {
  187. border-bottom: 1px solid #E5E5E5;
  188. }
  189. }
  190. .adressTips{
  191. color: #C83732;
  192. }
  193. .remarksBox {
  194. display: flex;
  195. background: #F7F7F7;
  196. padding: 25px 35px;
  197. .remarksInfo {
  198. width: 100%;
  199. >>> .el-textarea__inner {
  200. width: 100%;
  201. height: 84px;
  202. }
  203. }
  204. .selectBox {
  205. margin-left: 70px;
  206. label {
  207. color: #666666;
  208. font-size: 16px;
  209. font-weight: normal;
  210. }
  211. }
  212. .shopTotal {
  213. color: $mainGlod;
  214. flex: 1;
  215. text-align: right;
  216. }
  217. }
  218. }
  219. </style>