Blame view

src/store/modules/details.js 4.36 KB
3cda19af7   范牧   详情页-售后保障
1
2
3
4
5
  import urlAlias from '../url'
  import request from '../request'
  
  const {
    read,
530bb7e83   范牧   重构详情页-商品介绍
6
    cartList,
5bca13074   范牧   分享功能
7
    makePost,
3cda19af7   范牧   详情页-售后保障
8
9
10
  } = urlAlias
  
  const state = {
88c0598d3   范牧   详情页参数选择修改
11
12
    // 为配合参数选择框
    goodInfo: {},
3cda19af7   范牧   详情页-售后保障
13
14
15
16
17
18
19
20
21
22
23
    // 轮播图
    carousel: [
      '/static/img/detail/d9.png',
    ],
    // 商品基本信息
    goodsInfo: {
      name: '暂无名称',
      price: '暂无价格',
      discountPrice: undefined,
      tradeNumber: undefined,
    },
530bb7e83   范牧   重构详情页-商品介绍
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
    // 商品介绍
    tag: {
      prod_tag_style: [{
        label: '青春学子风',
        value: '54',
      }],
    },
    // 规格参数
    specification: [
      { key: 'frame_width', img: '/static/img/detail/d2.png', standard: '框架宽', slength: '139mm' },
      { key: 'glass_width', img: '/static/img/detail/d3.png', standard: '镜片宽', slength: '51mm' },
      { key: 'glass_height', img: '/static/img/detail/d4.png', standard: '镜片高', slength: '45mm' },
      { key: 'nose_width', img: '/static/img/detail/d5.png', standard: '鼻架宽', slength: '19mm' },
      { key: 'leg_long', img: '/static/img/detail/d6.png', standard: '框架耳长', slength: '138mm' },
      { key: 'weight', img: '/static/img/detail/d7.png', standard: '框架重', slength: '19克(grams)' },
    ],
    // 评价
    evaluate: {
      rate: '100%',
      star: 5,
      tag: [{ name: '价格实惠' }],
    },
    // 商品详情
    more: '',
    // 购物车数目
    cartNumber: 0,
5bca13074   范牧   分享功能
50
51
52
    // skuList
    skuList: [],
    postUrl: 'https://api.glass.xiuyetang.com/adv_pic/428_0_7.png',
3cda19af7   范牧   详情页-售后保障
53
54
55
  }
  
  const mutations = {
88c0598d3   范牧   详情页参数选择修改
56
57
    INIT: (state, { goodInfo, carousel, goodsInfo, tag, specification, evaluate, more, skuList }) => {
      state.goodInfo = goodInfo
3cda19af7   范牧   详情页-售后保障
58
59
      state.carousel = carousel
      state.goodsInfo = goodsInfo
530bb7e83   范牧   重构详情页-商品介绍
60
61
62
63
      state.tag = tag
      state.specification = specification
      state.evaluate = evaluate
      state.more = more
5bca13074   范牧   分享功能
64
      state.skuList = skuList
530bb7e83   范牧   重构详情页-商品介绍
65
66
67
    },
    CART: (state, number) => {
      state.cartNumber = number
3cda19af7   范牧   详情页-售后保障
68
    },
5bca13074   范牧   分享功能
69
70
71
    POST: (state, url) => {
      state.postUrl = url
    },
3cda19af7   范牧   详情页-售后保障
72
73
74
  }
  
  const actions = {
530bb7e83   范牧   重构详情页-商品介绍
75
76
    // 获取详情
    details({ commit, rootState }, param) {
3cda19af7   范牧   详情页-售后保障
77
78
79
80
      return new Promise((resolve, reject) => request({
        url: read,
        data: param,
        success: ({ data: { data } }) => {
530bb7e83   范牧   重构详情页-商品介绍
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
          console.log('data.tag', data.tag)
          // 规格参数设置
          const specification = rootState.details.specification
          const parameter = {
            frame_width: data.frame_width,
            glass_width: data.glass_width,
            glass_height: data.glass_height,
            nose_width: data.nose_width,
            leg_long: data.leg_long,
            weight: data.weight,
          }
          for (let index = 0; index < specification.length; index++) {
            if (specification[index].key !== 'weight') {
              specification[index].slength = `${parameter[specification[index].key]}mm`
            } else {
              specification[index].slength = `${parameter[specification[index].key]}克(grams)`
            }
          }
3cda19af7   范牧   详情页-售后保障
99
          commit('INIT', {
88c0598d3   范牧   详情页参数选择修改
100
            goodInfo: data,
5bca13074   范牧   分享功能
101
            skuList: data.skuList,
3cda19af7   范牧   详情页-售后保障
102
103
104
105
            carousel: data.pics,
            goodsInfo: {
              name: data.p_name,
              price: data.priceArea.Min_Price,
29c972fd5   范牧   再次购买、确认订单修改
106
              discountPrice: parseInt(data.priceArea.Min_Price * (1 + Number(data.priceArea.discount) / 100)),
3cda19af7   范牧   详情页-售后保障
107
108
              tradeNumber: data.trade_num,
            },
530bb7e83   范牧   重构详情页-商品介绍
109
110
111
112
113
114
115
            tag: data.tag,
            specification,
            evaluate: {
              rate: data.judgeInfo.good,
              tag: data.judge_tag,
              star: parseInt(5 * Number(data.judgeInfo.good.slice(0, -1)) / 100),
            },
5bca13074   范牧   分享功能
116
            // eslint-disable-next-line
530bb7e83   范牧   重构详情页-商品介绍
117
            more: data.prodIntro1.replace(/\<img/gi, '<img style="max-width:100%;height:auto"'),
3cda19af7   范牧   详情页-售后保障
118
119
120
121
122
123
124
125
          })
          resolve(data)
        },
        fail: (res) => {
          console.log('fail status ===>', res)
        },
      }))
    },
530bb7e83   范牧   重构详情页-商品介绍
126
127
128
129
130
131
    // 获取购物车列表
    getCartNumber({ commit }, param) {
      return new Promise((resolve) => request({
        url: cartList,
        data: param,
        success: ({ data: { data } }) => {
530bb7e83   范牧   重构详情页-商品介绍
132
133
134
135
136
137
138
139
          let number = 0
          for (let index = 0; index < data.length; index++) {
            number += Number(data[index].num)
          }
          commit('CART', number)
        },
      }))
    },
5bca13074   范牧   分享功能
140
141
142
143
144
145
146
147
148
149
150
    // 生成分享海报
    post({ commit }, param) {
      return new Promise((resolve) => request({
        url: makePost,
        data: param,
        success: ({ data }) => {
          commit('POST', data.data)
          resolve()
        },
      }))
    },
3cda19af7   范牧   详情页-售后保障
151
152
153
154
155
156
157
158
  }
  
  export default {
    namespaced: true,
    state,
    mutations,
    actions,
  }