buy.js 9.2 KB
Newer Older
D
v1.2.0  
devil_gong 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14
const app = getApp();
Page({
  data: {
    data_list_loding_status: 1,
    buy_submit_disabled_status: false,
    data_list_loding_msg: '',
    params: null,
    payment_list: [],
    goods_list: [],
    address: null,
    address_id: 0,
    total_price: 0,
    user_note_value: '',
    is_first: 1,
D
devil_gong 已提交
15
    extension_data: [],
D
v1.2.0  
devil_gong 已提交
16 17
    payment_id: 0,
    common_order_is_booking: 0,
D
devil_gong 已提交
18 19
    common_site_type: 0,
    extraction_address: [],
D
devil 已提交
20 21 22 23 24
    site_model: 0,
    buy_header_nav: [
      { name: "快递邮寄", value: 0 },
      { name: "自提点取货", value: 2 }
    ],
D
devil_gong 已提交
25 26 27 28 29 30

    // 优惠劵
    plugins_coupon_data: null,
    plugins_use_coupon_id: 0,
    plugins_choice_coupon_value: '选择优惠劵',
    popup_plugins_coupon_status: false,
D
v1.2.0  
devil_gong 已提交
31 32
  },
  onLoad(params) {
D
devil_gong 已提交
33
    //params['data'] = '{"buy_type":"goods","goods_id":"1","stock":"1","spec":"[]"}';
D
v1.2.0  
devil_gong 已提交
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
    if((params.data || null) == null || app.get_length(JSON.parse(params.data)) == 0)
    {
      my.alert({
        title: '温馨提示',
        content: '订单信息有误',
        buttonText: '确认',
        success: () => {
          my.navigateBack();
        },
      });
    } else {
      this.setData({ params: JSON.parse(params.data)});

      // 删除地址缓存
      my.removeStorageSync({key: app.data.cache_buy_user_address_select_key});
    }
  },

  onShow() {
    my.setNavigationBar({title: app.data.common_pages_title.buy});
    this.init();
    this.setData({is_first: 0});
  },

  // 获取数据列表
  init() {
D
devil_gong 已提交
60 61 62 63 64 65 66 67 68 69
    // 订单参数信息是否正确
    if (this.data.params == null) {
      this.setData({
        data_list_loding_status: 2,
        data_list_loding_msg: '订单信息有误',
      });
      my.stopPullDownRefresh();
      return false;
    }
    
D
v1.2.0  
devil_gong 已提交
70 71 72 73 74 75 76 77 78 79
    // 本地缓存地址
    if(this.data.is_first == 0)
    {
      var cache_address = my.getStorageSync({
        key: app.data.cache_buy_user_address_select_key
      });
      if((cache_address.data || null) != null)
      {
        this.setData({
          address: cache_address.data,
D
devil_gong 已提交
80
          address_id: cache_address.data.id || 0,
D
v1.2.0  
devil_gong 已提交
81 82 83 84 85 86 87 88 89 90 91 92
        });
      }
    }

    // 加载loding
    my.showLoading({content: '加载中...'});
    this.setData({
      data_list_loding_status: 1
    });

    var data = this.data.params;
    data['address_id'] = this.data.address_id;
G
gongfuxiang 已提交
93
    data['payment_id'] = this.data.payment_id;
D
devil_gong 已提交
94
    data['coupon_id'] = this.data.plugins_use_coupon_id;
D
devil 已提交
95
    data['site_model'] = this.data.site_model;
D
1.6  
devil_gong 已提交
96
    my.request({
D
v1.2.0  
devil_gong 已提交
97 98 99 100
      url: app.get_request_url("index", "buy"),
      method: "POST",
      data: data,
      dataType: "json",
D
1.6  
devil_gong 已提交
101
      headers: { 'content-type': 'application/x-www-form-urlencoded' },
D
v1.2.0  
devil_gong 已提交
102
      success: res => {
D
devil_gong 已提交
103
        my.stopPullDownRefresh();
D
v1.2.0  
devil_gong 已提交
104 105 106 107 108 109 110 111 112
        my.hideLoading();
        if (res.data.code == 0) {
          var data = res.data.data;
          if (data.goods_list.length == 0)
          {
            this.setData({data_list_loding_status: 0});
          } else {
            this.setData({
              goods_list: data.goods_list,
D
devil_gong 已提交
113
              total_price: data.base.actual_price,
D
devil_gong 已提交
114
              extension_data: data.extension_data || [],
D
v1.2.0  
devil_gong 已提交
115 116
              data_list_loding_status: 3,
              common_order_is_booking: data.common_order_is_booking || 0,
D
devil_gong 已提交
117 118
              common_site_type: data.common_site_type || 0,
              extraction_address: data.base.extraction_address || [],
D
devil_gong 已提交
119
              plugins_coupon_data: data.plugins_coupon_data || null,
D
v1.2.0  
devil_gong 已提交
120 121
            });

D
devil_gong 已提交
122 123 124 125 126 127 128 129 130 131 132 133
            // 优惠劵选择处理
            if ((data.plugins_coupon_data || null) != null)
            {
              if ((data.plugins_coupon_data.coupon_choice || null) != null)
              {
                this.setData({ plugins_choice_coupon_value: data.plugins_coupon_data.coupon_choice.coupon.desc });
              } else {
                var coupon_count = ((data.plugins_coupon_data.coupon_list || null) != null) ? data.plugins_coupon_data.coupon_list.length : 0;
                this.setData({ plugins_choice_coupon_value: (coupon_count > 0) ? '可选优惠劵' + coupon_count + '' : '暂无可用优惠劵' });
              }
            }

D
v1.2.0  
devil_gong 已提交
134
            // 地址
D
devil_gong 已提交
135 136 137 138 139 140 141 142
            this.setData({
              address: data.base.address || null,
              address_id: ((data.base.address || null) != null && (data.base.address.id || null) != null) ? data.base.address.id : null,
            });
            my.setStorage({
              key: app.data.cache_buy_user_address_select_key,
              data: data.base.address || null,
            });
D
v1.2.0  
devil_gong 已提交
143 144 145 146 147 148 149 150 151

            // 支付方式
            this.payment_list_data(data.payment_list);
          }
        } else {
          this.setData({
            data_list_loding_status: 2,
            data_list_loding_msg: res.data.msg,
          });
D
devil_gong 已提交
152
          if (app.is_login_check(res.data, this, 'init')) {
D
devil_gong 已提交
153 154
            app.showToast(res.data.msg);
          }
D
v1.2.0  
devil_gong 已提交
155 156 157
        }
      },
      fail: () => {
D
devil_gong 已提交
158
        my.stopPullDownRefresh();
D
v1.2.0  
devil_gong 已提交
159 160 161 162 163
        my.hideLoading();
        this.setData({
          data_list_loding_status: 2,
          data_list_loding_msg: '服务器请求出错',
        });
D
devil_gong 已提交
164
        app.showToast('服务器请求出错');
D
v1.2.0  
devil_gong 已提交
165 166 167 168
      }
    });
  },

D
devil_gong 已提交
169 170 171 172 173
  // 下拉刷新
  onPullDownRefresh() {
    this.init();
  },

D
v1.2.0  
devil_gong 已提交
174 175 176 177 178 179 180 181 182 183 184 185
  // 用户留言事件
  bind_user_note_event(e) {
    this.setData({user_note_value: e.detail.value});
  },

  // 提交订单
  buy_submit_event(e) {
    // 表单数据
    var data = this.data.params;
    data['address_id'] = this.data.address_id;
    data['payment_id'] = this.data.payment_id;
    data['user_note'] = this.data.user_note_value;
D
devil_gong 已提交
186
    data['coupon_id'] = this.data.plugins_use_coupon_id;
D
devil 已提交
187
    data['site_model'] = this.data.site_model;
D
v1.2.0  
devil_gong 已提交
188 189

    // 数据验证
D
devil_gong 已提交
190
    var validation = [];
D
devil 已提交
191
    if (this.data.common_site_type == 0 || this.data.common_site_type == 2 || this.data.common_site_type == 4)
D
devil_gong 已提交
192 193 194
    {
      validation.push({ fields: 'address_id', msg: '请选择地址', is_can_zero: 1 });
    }
D
v1.2.0  
devil_gong 已提交
195 196 197 198 199 200 201 202
    if (this.data.common_order_is_booking != 1) {
      validation.push({ fields: 'payment_id', msg: '请选择支付方式' });
    }
    if (app.fields_check(data, validation)) {
      // 加载loding
      my.showLoading({content: '提交中...'});
      this.setData({ buy_submit_disabled_status: true });

D
1.6  
devil_gong 已提交
203
      my.request({
D
v1.2.0  
devil_gong 已提交
204 205 206 207
        url: app.get_request_url("add", "buy"),
        method: "POST",
        data: data,
        dataType: "json",
D
1.6  
devil_gong 已提交
208
        headers: { 'content-type': 'application/x-www-form-urlencoded' },
D
v1.2.0  
devil_gong 已提交
209 210 211 212 213 214 215 216 217 218 219 220
        success: res => {
          my.hideLoading();
          if (res.data.code == 0) {
            if (res.data.data.order.status == 1) {
              my.redirectTo({
                url: '/pages/user-order/user-order?is_pay=1&order_id=' + res.data.data.order.id
              });
            } else {
              my.redirectTo({url: '/pages/user-order/user-order'});
            }
          } else {
            this.setData({ buy_submit_disabled_status: false });
D
devil_gong 已提交
221 222 223
            if (app.is_login_check(res.data, this, 'buy_submit_event')) {
              app.showToast(res.data.msg);
            }
D
v1.2.0  
devil_gong 已提交
224 225 226 227 228
          }
        },
        fail: () => {
          my.hideLoading();
          this.setData({buy_submit_disabled_status: false});
D
devil_gong 已提交
229
          app.showToast('服务器请求出错');
D
v1.2.0  
devil_gong 已提交
230 231 232 233 234 235 236 237 238
        }
      });
    }
  },

  // 支付方式选择
  payment_event(e) {
    this.setData({ payment_id: e.target.dataset.value});
    this.payment_list_data(this.data.payment_list);
G
gongfuxiang 已提交
239
    this.init();
D
v1.2.0  
devil_gong 已提交
240 241
  },

D
devil_gong 已提交
242
  // 支付方式数据处理
D
v1.2.0  
devil_gong 已提交
243 244 245 246 247 248 249 250 251 252 253
  payment_list_data(data) {
    if (this.data.payment_id != 0) {
      for (var i in data) {
        if (data[i]['id'] == this.data.payment_id) {
          data[i]['selected'] = 'selected';
        } else {
          data[i]['selected'] = '';
        }
      }
    }
    this.setData({payment_list: data || []});
D
devil_gong 已提交
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284
  },

  // 优惠劵弹层开启
  plugins_coupon_open_event(e) {
    this.setData({ popup_plugins_coupon_status: true});
  },

  // 优惠劵弹层关闭
  plugins_coupon_close_event(e) {
    this.setData({ popup_plugins_coupon_status: false });
  },

  // 优惠劵选择
  plugins_coupon_use_event(e) {
    var index = e.currentTarget.dataset.index;
    var value = e.currentTarget.dataset.value;
    this.setData({
      plugins_use_coupon_id: value,
      popup_plugins_coupon_status: false,
    });
    this.init();
  },

  // 不使用优惠劵
  plugins_coupon_not_use_event(e) {
    this.setData({
      plugins_use_coupon_id: 0,
      popup_plugins_coupon_status: false,
    });
    this.init();
  },
D
v1.2.0  
devil_gong 已提交
285

D
devil_gong 已提交
286 287
  // 地址选择事件
  address_event(e) {
D
devil 已提交
288
    if (this.data.common_site_type == 0 || (this.data.common_site_type == 4 && this.data.site_model == 0))
D
devil_gong 已提交
289 290 291 292
    {
      my.navigateTo({
        url: '/pages/user-address/user-address?is_back=1'
      });
D
devil 已提交
293
    } else if (this.data.common_site_type == 2 || (this.data.common_site_type == 4 && this.data.site_model == 2))
D
devil_gong 已提交
294 295 296 297 298 299 300 301 302
    {
      my.navigateTo({
        url: '/pages/extraction-address/extraction-address?is_back=1'
      });
    } else {
      app.showToast('当前模式不允许使用地址');
    }
  },

D
devil 已提交
303 304 305 306 307 308 309 310 311 312 313 314 315 316 317
  // 销售+自提 模式选择事件
  buy_header_nav_event(e) {
    // 数据设置
    this.setData({
      address: null,
      address_id: null,
      site_model: e.currentTarget.dataset.value || 0,
    });
    
    // 删除地址缓存
    my.removeStorageSync({key: app.data.cache_buy_user_address_select_key});

    // 数据初始化
    this.init();
  },
D
v1.2.0  
devil_gong 已提交
318
});