index.vue 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. <template>
  2. <div class="purchase-layout" v-show="split">
  3. <div class="plate01">
  4. <div class="main-detail">
  5. <browse
  6. :idata='browdata'
  7. :iactive='browactive'
  8. :floder="'probrowse'"
  9. class="product-img"
  10. :style="{marginLeft:(split - 350)+ 'px'}"
  11. />
  12. <!-- <img
  13. class="product-img"
  14. :style="{marginLeft:(split - 170)+ 'px'}"
  15. :src="`${$cdn}images/banner_pro-white.png`"
  16. alt
  17. > -->
  18. <div class="layout">
  19. <img class="pro-logo" :src="language==='en'?`${$cdn}images/pro-logo-en.png`:`${$cdn}images/pro-logo.png`" alt="">
  20. <p class="sub b-label" v-html="langPurchase.dec"></p>
  21. <p class="price">
  22. {{langPurchase.price}}
  23. <span>{{langPurchase.yushou}}</span>
  24. </p>
  25. <template>
  26. <p class="title first-title">{{langPurchase.color.key}}</p>
  27. <div class="detail-box">
  28. <i class="iconfont icon-yuandian">{{langPurchase.color.val}}</i>
  29. </div>
  30. <p class="title">{{langPurchase.service.key}}</p>
  31. <div class="detail-box sceond-box">
  32. <i class="iconfont icon-yuandian">{{langPurchase.service.type}}</i>
  33. <!-- <span @click="scrollTo('rlgz')">{{langPurchase.why}}</span> -->
  34. <ul>
  35. <li v-for="(item, i) in langPurchase.service.val" :key="i">{{item}}</li>
  36. </ul>
  37. </div>
  38. <p class="title ">{{langPurchase.gift.peijian}}</p>
  39. <div class="detail-box zhijia" :style="{padding:language==='en'?'10px 2.5% 10px 3.5%':'10px 3.5%'}" :class="{'no-active':!selectParts}" @click="selectParts=!selectParts">
  40. <img :src="`${$cdn}images/tag-icon.png`" class="t-click" alt>
  41. <img :src="`${$cdn}images/zhijia.png`" alt>
  42. <div>
  43. <p>{{langPurchase.gift.val}}</p>
  44. <p>{{langPurchase.gift.price}}</p>
  45. </div>
  46. </div>
  47. <p class="title peijian">
  48. <img :src="`${$cdn}images/perjian-warn.png`" alt="">
  49. <span @click="$router.push({name:'purchasezhijia'})">{{langPurchase.gift.key}}</span>
  50. </p>
  51. </template>
  52. <template v-if="language!=='en'">
  53. <p class="title" style="margin-top:20px;">{{langPurchase.count.key}}</p>
  54. <spinner class="spinner" @count="handleSpinner"/>
  55. </template>
  56. <div>
  57. <div class="btns">
  58. <div v-if="language!=='en'" class="button add-cart" @click="addcart">
  59. <vcenter>
  60. <span>加入购物车</span>
  61. </vcenter>
  62. </div>
  63. <div class="button" @click="pay">
  64. <vcenter>
  65. <span>{{langPurchase.buy}}</span>
  66. </vcenter>
  67. </div>
  68. </div>
  69. <div class="btn-dec" >{{langPurchase.tiaokuan}}</div>
  70. </div>
  71. </div>
  72. </div>
  73. </div>
  74. <div class="plate02" >
  75. <div class="b-title">{{langPurchase.guige.name}}</div>
  76. <div class="params-img-con">
  77. <img class="params-img" :src="`${$cdn}images/product_img_content_6_w.png`" alt="">
  78. </div>
  79. <div class="params-body">
  80. <div class="params-con">
  81. <div class="params-item" v-for="(item,index) in langPurchase.guige.arr" :key="index">
  82. <div class="p-l">{{item.name}}</div>
  83. <div class="p-r">
  84. <div v-html="sub" v-for="(sub,i) in item.val" :key="i"></div>
  85. </div>
  86. </div>
  87. </div>
  88. <div class="sub">
  89. <p>{{langPurchase.guige.dec}}</p>
  90. </div>
  91. </div>
  92. </div>
  93. <!-- <div class="plate03" ref="rlgz">
  94. <div class="p03">
  95. <div class="b-title">{{langPurchase.pricename}}</div>
  96. <priceTable/>
  97. <ul class="qa-con">
  98. <li v-for="(item,i) in langPurchase.pricetxt" :key="i">
  99. <p>{{item.q}}</p>
  100. <p v-html="item.a"></p>
  101. </li>
  102. <p class="promise">{{langPurchase.notice}}</p>
  103. </ul>
  104. <p class="peijian" @click="$router.push({name:'pricedetail'})">
  105. <img :src="`${$cdn}images/perjian-warn.png`" alt="">
  106. <span>{{langPurchase.view}}</span>
  107. </p>
  108. </div>
  109. </div> -->
  110. </div>
  111. </template>
  112. <script>
  113. import { mapState } from 'vuex'
  114. import spinner from '@/components/spinner'
  115. import vcenter from '@/components/vcenter'
  116. import browse from '@/components/browse'
  117. import priceTable from '@/components/priceTable'
  118. import { getPosition } from '@/util'
  119. export default {
  120. components: {
  121. spinner,
  122. vcenter,
  123. browse,
  124. priceTable
  125. },
  126. computed: {
  127. ...mapState({
  128. split: state => state.ui.navDivision,
  129. isLogin: state => state.user.name,
  130. langPurchase: state => state.language.home.purchase,
  131. language: state => state.language.current,
  132. langToast: state => state.language.home.toast,
  133. token: state => state.user.token,
  134. cart: state => JSON.parse(state.user.cart)
  135. })
  136. },
  137. data () {
  138. let detail = {
  139. left: [
  140. '数据永久存储',
  141. '高速上传计算队列',
  142. '场景分享、热点编辑、隐私加密'
  143. ],
  144. right: ['多种个性化功能', '附送30G终身容量']
  145. }
  146. let guige = [
  147. {
  148. name: '容量和内存',
  149. val: ['LPDDR4X双通道', '6G内存', 'UFS 2.1', '64GB 机身存储']
  150. },
  151. {
  152. name: '机身尺寸和重量',
  153. val: ['高度 = 153.3m', '宽度 = 74.5mm', '厚度 = 7.9mm', '重量 = 170g']
  154. },
  155. {
  156. name: '处理器平台',
  157. val: [
  158. 'Qualcomm® 骁龙™ 845 处理器',
  159. '10nm 先进制程',
  160. '单核主频可达 2.8GHz',
  161. 'Adreno™ 630 图形处理器,主频可达 700MHz',
  162. '配备人工智能引擎(AI Engine)'
  163. ]
  164. },
  165. {
  166. name: '网络',
  167. val: ['支持 VoLTE 高质量宽带', '支持三载波聚', '支持 LTE B41 4x4 MIMO']
  168. },
  169. {
  170. name: '屏幕',
  171. val: [
  172. '6.17 英寸 In-Cell 全高清显示屏',
  173. '2242 x 1080 分辨率,403 ppi',
  174. '康宁®第三代大猩猩®玻璃'
  175. ]
  176. }
  177. ]
  178. let browdata = [
  179. {
  180. small: 'small-0',
  181. big: 'big-0',
  182. video: true
  183. }, {
  184. small: 'small-1',
  185. big: 'big-1'
  186. },
  187. {
  188. small: 'small-2',
  189. big: 'big-2'
  190. },
  191. {
  192. small: 'small-3',
  193. big: 'big-3'
  194. }]
  195. let browactive = browdata[0]
  196. return {
  197. detail,
  198. guige,
  199. browactive,
  200. browdata,
  201. count: 1,
  202. selectParts: true
  203. }
  204. },
  205. methods: {
  206. handleSpinner (data) {
  207. this.count = data
  208. },
  209. async addcart () {
  210. if (!this.token) {
  211. return this.$bus.$emit('showAside')
  212. }
  213. let zhijia = {
  214. goodsId: 7,
  215. goodsCount: this.count,
  216. skuSn: 'U15604134406280073'
  217. }
  218. let params = {
  219. goodsId: 4,
  220. goodsCount: this.count,
  221. skuSn: 'U15609161635760015'
  222. }
  223. await this.$store.dispatch('addCart', params)
  224. this.selectParts && await this.$store.dispatch('addCart', zhijia)
  225. this.$toast.show('success', this.langToast['39'])
  226. },
  227. pay () {
  228. if (this.language === 'en') {
  229. return window.open('https://www.alibaba.com/product-detail/4DKanKan-Pro-3D-camera-3D-space_62183626283.html?spm=a2700.icbuShop.74.1.66b35b10I4miJd')
  230. }
  231. let params = {
  232. type: 'detail',
  233. sku: [{
  234. goodsId: 4,
  235. goodsCount: this.count,
  236. price: 9800,
  237. skuSn: 'U15609161635760015'
  238. }],
  239. fromList: false
  240. }
  241. let zhijia = {
  242. goodsId: 7,
  243. goodsCount: this.count,
  244. price: 899,
  245. skuSn: 'U15604134406280073'
  246. }
  247. this.selectParts && params.sku.push(zhijia)
  248. this.$bus.$emit('showAside', params)
  249. },
  250. scrollTo (href) {
  251. this.interval = null
  252. let inter = 0
  253. let tag = getPosition(this.$refs[href]).y - 90
  254. let speed = Math.ceil(tag / 40)
  255. this.interval = setInterval(() => {
  256. window.scrollTo(0, inter)
  257. inter += speed
  258. if ((window.scrollY || window.pageYOffset) >= tag) {
  259. clearInterval(this.interval)
  260. }
  261. })
  262. }
  263. },
  264. beforeDestroy () {
  265. clearInterval(this.interval)
  266. }
  267. }
  268. </script>
  269. <style lang="scss" scoped>
  270. @import "./style.scss";
  271. </style>