const app = getApp();
Page({
  data: {
    params: null,
    data_list_loding_status: 1,
    data_list_loding_msg: '',
    data_bottom_line_status: false,
    popup_delivery_status: false,

    // 接口数据
    editor_path_type: '',
    order_data: null,
    new_aftersale_data: null,
    step_data: null,
    returned_data: null,
    return_only_money_reason: [],
    return_money_goods_reason: [],
    aftersale_type_list: [],
    reason_data_list: [],
    return_goods_address: null,
    
    // 售后基础信息
    panel_base_data_list: [
      {
        name: '退款类型',
        field: 'type_text',
      },
      {
        name: '当前状态',
        field: 'status_text',
      },
      {
        name: '申请原因',
        field: 'reason',
      },
      {
        name: '退货数量',
        field: 'number',
      },
      {
        name: '退款金额',
        field: 'price',
      },
      {
        name: '退款说明',
        field: 'msg',
      },
      {
        name: '退款方式',
        field: 'refundment_text',
      },
      {
        name: '拒绝原因',
        field: 'refuse_reason',
      },
      {
        name: '申请时间',
        field: 'apply_time_time',
      },
      {
        name: '确认时间',
        field: 'confirm_time_time',
      },
      {
        name: '退货时间',
        field: 'delivery_time_time',
      },
      {
        name: '审核时间',
        field: 'audit_time_time',
      },
      {
        name: '取消时间',
        field: 'cancel_time_time',
      },
      {
        name: '添加时间',
        field: 'add_time_time',
      },
      {
        name: '更新时间',
        field: 'upd_time_time',
      }
    ],

    // 快递信息
    panel_express_data_list: [
      {
        name: '快递名称',
        field: 'express_name',
      },
      {
        name: '快递单号',
        field: 'express_number',
      },
      {
        name: '退货时间',
        field: 'delivery_time_time',
      }
    ],

    // 表单数据
    form_button_disabled: false,
    form_type: null,
    form_reason_index: null,
    form_price: '',
    form_msg: '',
    form_number: 0,
    form_images_list: [],
    form_express_name: '',
    form_express_number: '',
  },

  onLoad(params) {
    this.setData({
      params: params,
      popup_delivery_status: ((params.is_delivery_popup || 0) == 1),
    });
  },

  onShow() {
    qq.setNavigationBarTitle({ title: app.data.common_pages_title.user_orderaftersale_detail });

    // 数据加载
    this.init();
  },

  // 获取数据
  init() {
    var self = this;
    qq.showLoading({ title: "加载中..." });
    this.setData({
      data_list_loding_status: 1
    });

    qq.request({
      url: app.get_request_url("aftersale", "orderaftersale"),
      method: "POST",
      data: {
        oid: this.data.params.oid,
        did: this.data.params.did
      },
      dataType: "json",
      success: res => {
        qq.hideLoading();
        qq.stopPullDownRefresh();
        if (res.data.code == 0) {
          var data = res.data.data;
          self.setData({
            data_list_loding_status: 3,
            data_bottom_line_status: true,
            data_list_loding_msg: '',

            editor_path_type: data.editor_path_type || '',
            order_data: data.order_data || null,
            new_aftersale_data: ((data.new_aftersale_data || null) == null || data.new_aftersale_data.length <= 0) ? null : data.new_aftersale_data,
            step_data: data.step_data || null,
            returned_data: data.returned_data || null,
            return_only_money_reason: data.return_only_money_reason || [],
            return_money_goods_reason: data.return_money_goods_reason || [],
            aftersale_type_list: data.aftersale_type_list || [],
            return_goods_address: data.return_goods_address || null,

            form_price: (data.returned_data || null != null) ? data.returned_data.refund_price : 0,
          });
        } else {
          self.setData({
            data_list_loding_status: 0,
            data_bottom_line_status: false,
            data_list_loding_msg: res.data.msg,
          });
          app.showToast(res.data.msg);
        }
      },
      fail: () => {
        qq.hideLoading();
        qq.stopPullDownRefresh();
        self.setData({
          data_list_loding_status: 2,
          data_bottom_line_status: false,
          data_list_loding_msg: '服务器请求出错',
        });

        app.showToast("服务器请求出错");
      }
    });
  },

  // 类型选择
  form_type_event(e) {
    var value = e.currentTarget.dataset.value;
    this.setData({
      form_type: value,
      form_reason_index: (this.data.form_type == value) ? this.data.form_reason_index : null,
      reason_data_list: (value == 0) ? this.data.return_only_money_reason : this.data.return_money_goods_reason,
      form_number: (value == 0) ? 0 : this.data.returned_data.returned_quantity,
    });
  },

  // 原因选择
  form_reason_event(e) {
    this.setData({
      form_reason_index: e.detail.value
    });
  },

  // 商品件数
  form_number_event(e) {
    this.setData({
      form_number: e.detail.value
    });
  },

  // 退款金额
  form_price_event(e) {
    this.setData({
      form_price: e.detail.value
    });
  },

  // 退款说明
  form_msg_event(e) {
    this.setData({
      form_msg: e.detail.value
    });
  },

  // 快递名称
  form_express_name_event(e) {
    this.setData({
      form_express_name: e.detail.value
    });
  },

  // 快递单号
  form_express_number_event(e) {
    this.setData({
      form_express_number: e.detail.value
    });
  },

  // 上传图片预览
  upload_show_event(e) {
    qq.previewImage({
      current: this.data.form_images_list[e.currentTarget.dataset.index],
      urls: this.data.form_images_list,
    });
  },

  // 图片删除
  upload_delete_event(e) {
    var self = this;
    qq.showModal({
      title: '温馨提示',
      content: '删除后不可恢复、继续吗？',
      success(res) {
        if (res.confirm) {
          var list = self.data.form_images_list;
          list.splice(e.currentTarget.dataset.index, 1);
          self.setData({
            form_images_list: list,
          });
        }
      }
    });
  },

  // 文件上传
  file_upload_event(e) {
    var self = this;
    qq.chooseImage({
      count: 3,
      success(res) {
        var success = 0;
        var fail = 0;
        var length = res.tempFilePaths.length;
        var count = 0;
        self.upload_one_by_one(res.tempFilePaths, success, fail, count, length);
      }
    });
  },

  // 采用递归的方式上传多张
  upload_one_by_one(img_paths, success, fail, count, length) {
    var self = this;
    if (self.data.form_images_list.length < 3) {
      qq.uploadFile({
        url: app.get_request_url("index", "ueditor"),
        filePath: img_paths[count],
        name: 'upfile',
        formData: {
          action: 'uploadimage',
          path_type: self.data.editor_path_type
        },
        success: function (res) {
          success++;
          if (res.statusCode == 200) {
            var data = (typeof (res.data) == 'object') ? res.data : JSON.parse(res.data);
            if (data.code == 0 && (data.data.url || null) != null) {
              var list = self.data.form_images_list;
              list.push(data.data.url);
              self.setData({ form_images_list: list });
            } else {
              app.showToast(data.msg);
            }
          }
        },
        fail: function (e) {
          fail++;
        },
        complete: function (e) {
          count++; // 下一张
          if (count >= length) {
            // 上传完毕，作一下提示
            //app.showToast('上传成功' + success +'张', 'success');
          } else {
            // 递归调用，上传下一张
            self.upload_one_by_one(img_paths, success, fail, count, length);
          }
        }
      });
    }
  },

  // 售后表单提交
  form_submit_event(e) {
    // 表单数据
    var form_data = {
      order_id: this.data.params.oid,
      order_detail_id: this.data.params.did,
      type: this.data.form_type,
      reason: this.data.reason_data_list[this.data.form_reason_index],
      number: (this.data.form_type == 0) ? 0 : this.data.form_number,
      price: this.data.form_price,
      msg: this.data.form_msg,
      images: (this.data.form_images_list.length > 0) ? JSON.stringify(this.data.form_images_list) : '',
    }

    // 防止金额大于计算的金额
    if (form_data['price'] > this.data.returned_data['refund_price'])
    {
      form_data['price'] = this.data.returned_data['refund_price'];
    }

    // 防止数量大于计算的数量
    if (form_data['number'] > this.data.returned_data['returned_quantity']) {
      form_data['number'] = this.data.returned_data['returned_quantity'];
    }

    // 数据校验
    var validation = [
      { fields: "type", msg: "请选择操作类型", is_can_zero: 1 },
      { fields: "reason", msg: "请选择原因" }
    ];
    if (form_data['type'] == 1)
    {
      validation.push({ fields: "number", msg: "请选择退货数量" });
    }

    // 校验参数并提交
    if (app.fields_check(form_data, validation)) {
      var self = this;
      qq.showLoading({ title: "处理中..." });
      self.setData({ form_button_disabled: true });
      qq.request({
        url: app.get_request_url("create", "orderaftersale"),
        method: "POST",
        data: form_data,
        dataType: "json",
        header: { 'content-type': 'application/x-www-form-urlencoded' },
        success: res => {
          qq.hideLoading();
          if (res.data.code == 0) {
            app.showToast(res.data.msg, "success");
            setTimeout(function () {
              self.setData({ form_button_disabled: false });
              self.init();
            }, 1000);
          } else {
            self.setData({ form_button_disabled: false});
            app.showToast(res.data.msg);
          }
        },
        fail: () => {
          qq.hideLoading();
          self.setData({ form_button_disabled: false });
          app.showToast("服务器请求出错");
        }
      });
    }
  },

  // 退货开启弹层
  delivery_submit_event(e) {
    this.setData({ popup_delivery_status: true });
  },

  // 退货弹层关闭
  popup_delivery_close_event(e) {
    this.setData({ popup_delivery_status: false });
  },

  // 退货表单
  form_delivery_submit_event(e) {
    // 表单数据
    var form_data = {
      id: this.data.new_aftersale_data.id,
      express_name: this.data.form_express_name,
      express_number: this.data.form_express_number,
    }

    // 数据校验
    var validation = [
      { fields: "express_name", msg: "请填写快递名称" },
      { fields: "express_number", msg: "请填写快递单号" },
    ];

    // 校验参数并提交
    if (app.fields_check(form_data, validation)) {
      var self = this;
      qq.showLoading({ title: "处理中..." });
      self.setData({ form_button_disabled: true });
      qq.request({
        url: app.get_request_url("delivery", "orderaftersale"),
        method: "POST",
        data: form_data,
        dataType: "json",
        header: { 'content-type': 'application/x-www-form-urlencoded' },
        success: res => {
          qq.hideLoading();
          self.setData({ popup_delivery_status: false});
          if (res.data.code == 0) {
            app.showToast(res.data.msg, "success");
            setTimeout(function () {
              self.setData({ form_button_disabled: false });
              self.init();
            }, 1000);
          } else {
            self.setData({ form_button_disabled: false });
            app.showToast(res.data.msg);
          }
        },
        fail: () => {
          qq.hideLoading();
          self.setData({ form_button_disabled: false });
          app.showToast("服务器请求出错");
        }
      });
    }
  },

  // 凭证图片预览
  images_view_event(e) {
    qq.previewImage({
      current: this.data.new_aftersale_data.images[e.currentTarget.dataset.index],
      urls: this.data.new_aftersale_data.images,
    });
  },

  // 查看售后数据
  show_aftersale_event(e) {
    qq.navigateTo({
      url: "/pages/user-orderaftersale/user-orderaftersale?keywords=" + this.data.new_aftersale_data.order_no
    });
  },

  // 下拉刷新
  onPullDownRefresh() {
    this.init();
  },

});
