index.vue 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. <template>
  2. <div class="purchase-layout">
  3. <div class="plate01">
  4. <div class="main-layout">
  5. <!-- <img class="pro" :src="`${$cdn}images/banner_pro.png`" alt=""> -->
  6. <browse
  7. :idata='browdata'
  8. :floder="'probrowse'"
  9. />
  10. <div class="txt-con">
  11. <img class="p-logo" :src="language==='en'?`${$cdn}images/pro-logo-m-en.png`:`${$cdn}images/pro-logo-m.png`" alt="">
  12. <div class="p-label" v-html="langPurchase.dec"></div>
  13. <div class="p-price">{{langPurchase.price}}<span class="zdj">{{langPurchase.yushou}}</span></div>
  14. </div>
  15. <div class="attr-con">
  16. <div class="attr">{{langPurchase.color.key}}</div>
  17. <div class="box color">
  18. <i class="iconfont icon-yuandian">{{langPurchase.color.val}}</i>
  19. </div>
  20. <div class="attr">{{langPurchase.service.key}}</div>
  21. <div class="box service">
  22. <i class="iconfont icon-yuandian">{{langPurchase.service.type}}</i>
  23. <!-- <span @click="scrollTo('rlgz')">{{langPurchase.why}}</span> -->
  24. <ul>
  25. <li v-for="(item,i) in langPurchase.service.val" :key="i" v-html="item"></li>
  26. </ul>
  27. </div>
  28. <div class="attr">{{langPurchase.gift.key}}</div>
  29. <div class="box zhijia" :class="{'no-active':!selectParts}" @click="selectParts=!selectParts">
  30. <img :src="`${$cdn}images/tag-icon.png`" class="t-click" alt>
  31. <img :src="`${$cdn}images/zhijia.png`" alt>
  32. <div>
  33. <p>{{langPurchase.gift.val}}</p>
  34. <p>{{langPurchase.gift.price}}</p>
  35. </div>
  36. </div>
  37. <p class="title peijian" @click="$router.push({name:'purchasezhijia'})">
  38. <img :src="`${$cdn}images/perjian-warn.png`" alt="">
  39. <span>{{langPurchase.gift.peijian}}</span>
  40. </p>
  41. <div v-if="language!=='en'" class="attr">{{langPurchase.count.key}}</div>
  42. <spinner v-if="language!=='en'" class="count" @count='handleNum' />
  43. <div class="dec">{{langPurchase.tiaokuan}}</div>
  44. </div>
  45. </div>
  46. </div>
  47. <div class="plate02" ref="jsgg">
  48. <div class="p2-name">{{langPurchase.parmas.name}}</div>
  49. <div class="p2-imgc">
  50. <img :src="`${$cdn}images/m-paramspro.png`" alt="">
  51. </div>
  52. <div class="p2-pramas">
  53. <div v-for="(item,i) in langPurchase.parmas.detail" :key="i">
  54. <p class="title">{{item.label}}</p>
  55. <div class="name">{{item.name}}</div>
  56. <div class="detail" >
  57. <span v-for="(sub,idx) in item.dec" :key="idx">
  58. <span v-html="sub">* 付款成功后5个工作日内发货,默认顺丰快递包邮</span>
  59. </span>
  60. </div>
  61. </div>
  62. </div>
  63. </div>
  64. <!-- <div class="plate03" ref="rlgz">
  65. <div class="p03">
  66. <div class="b-title">{{langPurchase.pricename}}</div>
  67. <priceTable/>
  68. <ul class="price-txt">
  69. <li v-for="(item,i) in langPurchase.pricetxt" :key="i">
  70. <p>{{item.q}}</p>
  71. <p v-html="item.a"></p>
  72. </li>
  73. </ul>
  74. <p class="peijian" @click="$router.push({name:'pricedetail'})">
  75. <img :src="`${$cdn}images/perjian-warn.png`" alt="">
  76. <span style="width:calc(100% - 24px);margin-left:1%;">{{langPurchase.view}}</span>
  77. </p>
  78. </div>
  79. </div> -->
  80. <div class="hover-btns">
  81. <div class="h-price">
  82. {{language!=='en'? `RMB ${selectParts?count*(9800 + 899):count*9800}`:'USD 1799'}}
  83. </div>
  84. <div class="h-btns">
  85. <span v-if="language!=='en'" @click="addcart">加入购物车</span>
  86. <span class="primary" @click="tobuy">{{langPurchase.buy}}</span>
  87. </div>
  88. </div>
  89. </div>
  90. </template>
  91. <script>
  92. import { mapState } from 'vuex'
  93. import spinner from '@/components/spinner'
  94. import priceTable from '@/components/priceTable'
  95. import browse from '@/components/browse'
  96. import { getPosition } from '@/util'
  97. export default {
  98. components: {
  99. spinner,
  100. browse,
  101. priceTable
  102. },
  103. computed: {
  104. ...mapState({
  105. token: state => state.user.token,
  106. language: state => state.language.current,
  107. langPurchase: state => state.language.home.purchase
  108. })
  109. },
  110. data () {
  111. let browdata = [
  112. {
  113. small: 'small-0',
  114. big: 'big-0',
  115. video: 'pro-post'
  116. }, {
  117. small: 'small-1',
  118. big: 'big-1'
  119. },
  120. {
  121. small: 'small-2',
  122. big: 'big-2'
  123. },
  124. {
  125. small: 'small-3',
  126. big: 'big-3'
  127. }]
  128. return {
  129. count: 1,
  130. browdata,
  131. selectParts: true
  132. }
  133. },
  134. methods: {
  135. handleNum (data) {
  136. this.count = data
  137. },
  138. async addcart () {
  139. if (!this.token) {
  140. return this.$router.push({path: '/login'})
  141. }
  142. let params = {
  143. goodsId: 4,
  144. goodsCount: this.count,
  145. skuSn: 'U15609161635760015'
  146. }
  147. let zhijia = {
  148. goodsId: 7,
  149. goodsCount: this.count,
  150. skuSn: 'U15604134406280073'
  151. }
  152. await this.$store.dispatch('addCart', params)
  153. this.selectParts && await this.$store.dispatch('addCart', zhijia)
  154. this.$toast.showAddCart('success', '商品加入购物车成功', '前往购物车', () => {
  155. this.$router.push({path: '/cart'})
  156. })
  157. },
  158. async tobuy () {
  159. if (!this.token) {
  160. return this.$router.push({path: '/login'})
  161. }
  162. if (this.language === 'en') {
  163. return window.open('https://www.alibaba.com/product-detail/4DKanKan-Pro-3D-camera-3D-space_62183626283.html?spm=a2700.icbuShop.74.1.66b35b10I4miJd')
  164. }
  165. let params = {
  166. goodsId: 4,
  167. price: 9800,
  168. goodsCount: this.count,
  169. skuSn: 'U15609161635760015'
  170. }
  171. let zhijia = {
  172. goodsId: 7,
  173. goodsCount: this.count,
  174. price: 899,
  175. skuSn: 'U15604134406280073'
  176. }
  177. let tmpcart = []
  178. let temp = {}
  179. tmpcart.push(params)
  180. this.selectParts && tmpcart.push(zhijia)
  181. temp['goods'] = tmpcart
  182. this.$store.commit('PAYINFO', temp)
  183. this.$router.push({path: '/vieworder'})
  184. },
  185. scrollTo (href) {
  186. this.interval = null
  187. let inter = 0
  188. let tag = getPosition(this.$refs[href]).y - 80
  189. let speed = Math.ceil(tag / 40)
  190. this.interval = setInterval(() => {
  191. window.scrollTo(0, inter)
  192. inter += speed
  193. if ((window.scrollY || window.pageYOffset) >= tag) {
  194. clearInterval(this.interval)
  195. }
  196. })
  197. }
  198. }
  199. }
  200. </script>
  201. <style lang="scss" scoped>
  202. @import './style.scss';
  203. </style>