<template>
  <div class="content">
    <!-- 寄件地址 -->
    <div class="jjinfo">
      <div>
        <div class="jj">
          <div class="jjaddress">
            <p>寄</p>
            <div>
              <p v-if="jjname == '' || jjname == ' '">寄件地址</p>
              <p v-else>{{ jjname }}</p>
              <p v-if="jjadd == '' || jjadd == ' '" @click="addtype(1)">
                填写寄件地址
              </p>
              <p v-else @click="addtype(1)">{{ jjadd }}</p>
            </div>
          </div>
          <div class="dzb" @click="link(1)">
            <img src="../assets/images/addlist.png" alt="" />
            <p>地址簿</p>
          </div>
        </div>
        <div class="jj" style="border-top:.01rem solid #ededed">
          <div class="jjaddress">
            <p style="background: #fa9c22;">收</p>
            <div>
              <p v-if="sjname == '' || sjname == ' '">收件地址</p>
              <p v-else>{{ sjname }}</p>
              <p v-if="sjadd == '' || sjadd == ' '" @click="addtype(2)">
                填写收件地址
              </p>
              <p v-else @click="addtype(2)">{{ sjadd }}</p>
            </div>
          </div>
          <div class="dzb" @click="link(2)">
            <img src="../assets/images/addlist.png" alt="" />
            <p>地址簿</p>
          </div>
        </div>
      </div>
    </div>

    <!-- 快递公司 -->
    <div class="kdshow">
      <van-field
        readonly
        clickable
        name="picker"
        :value="expressInfoShow"
        label="快递公司"
        placeholder="请选择快递公司"
        @click="showPicker = false"
      />
      <van-popup v-model="showPicker" position="bottom">
        <van-picker
          show-toolbar
          :columns="columns"
          @confirm="onConfirm"
          @cancel="showPicker = false"
        />
      </van-popup>
    </div>

    <!-- 主体类型 -->
    <!-- <div class="kdshow">
			<van-field readonly clickable name="picker" :value="mainType" label="主体类型" placeholder="请选择主体类型" @click="showPicker2 = true" />
			<van-popup v-model="showPicker2" position="bottom">
			  <van-picker
			    show-toolbar
			    :columns="columns2"
			    @confirm="onConfirm0"
			    @cancel="showPicker2 = false"
			  />
			</van-popup>
		</div> -->

    <!-- 寄件属性 -->
    <div class="choose">
      <div>
        <div class="type_wp">
          <div>
            <p>物品类型</p>
            <p v-if="wptype == ''" @click="wpshow = true">请选择</p>
            <p v-else @click="wpshow = true">{{ wptype }}</p>
          </div>
          <div>
            <p>
              <template v-if="wptype == '物品'">重量(公斤)</template>
              <template v-if="wptype == '文件'">数量(件数)</template>
            </p>
            <p>
              <van-field name="stepper" style="padding: 0px;">
                <template #input>
                  <van-stepper v-model="stepper"></van-stepper>
                </template>
              </van-field>
            </p>
          </div>
        </div>
        <div class="type_price">
          <div>
            <p>付款方式</p>
            <p v-if="pricetype == ''" @click="priceshow = true">请选择</p>
            <p v-else @click="priceshow = true">{{ pricetype }}</p>
          </div>
          <div>
            <p>声明价值</p>
            <p style="display: flex;justify-content: center;">
              <input
                style="width: 1rem;border: none;text-align: center;"
                v-model="declaredValue"
                type="number"
              />元
            </p>
          </div>
        </div>
      </div>
    </div>
    <!-- 备注 -->
    <div class="bz">
      <div>
        <van-field
          v-model="bz"
          name="备注"
          label="备注"
          placeholder="包装运输等要求"
        />
      </div>
    </div>
    <!-- 我同意 -->
    <div class="check">
      <van-checkbox icon-size=".24rem" v-model="check" shape=""
        >我同意《电子运单契约条款》</van-checkbox
      >
    </div>
    <!-- 寄件 -->
    <div class="btn-jj">
      <van-button type="info" color="#0c2469" @click="save()"
        >立即寄件</van-button
      >
    </div>
    <!-- 弹窗物品类型 -->
    <van-popup v-model="wpshow" position="bottom">
      <van-picker
        title="物品类型"
        show-toolbar
        :columns="wplist"
        @confirm="onConfirm1"
        @cancel="wpshow = false"
      />
    </van-popup>
    <!-- 弹窗付款方式 -->
    <van-popup v-model="priceshow" position="bottom">
      <van-picker
        title="付款方式"
        show-toolbar
        :columns="pricelist"
        @confirm="onConfirm2"
        @cancel="priceshow = false"
      />
    </van-popup>
    <!-- 填写地址 -->
    <van-popup
      round
      v-model="addshow"
      class="whrite_add"
      closeable
      @closed="close"
      :close-on-click-overlay="false"
    >
      <div>
        <p style="font-size: 16px;text-align: center;margin-bottom: 16px;">
          {{ title }}
        </p>
        <van-form @submit="onSubmit">
          <van-field
            v-model="name"
            name="姓名"
            label="姓名"
            placeholder="请输入姓名"
            :rules="[{ required: false }]"
          />
          <van-field
            v-model="phone"
            maxlength="11"
            type="number"
            name="手机"
            label="手机"
            placeholder="请输入手机"
            :rules="[{ required: false }]"
          />
          <van-field
            readonly
            clickable
            name="area"
            :value="city"
            label="省市区"
            placeholder="请选择省市区"
            @click="areashow = true"
            :rules="[{ required: false }]"
          />
          <van-field
            v-model="address"
            maxlength="50"
            name="详细地址"
            label="详细地址"
            placeholder="请输入详细地址"
            :rules="[{ required: false }]"
          />
          <div style="margin-top: 16px;">
            <van-button color="#0c2469" block type="info" native-type="submit"
              >确定</van-button
            >
          </div>
        </van-form>
      </div>
    </van-popup>
    <!-- 城市选择 -->
    <van-popup v-model="areashow" position="bottom">
      <van-area
        :area-list="areaList"
        @confirm="onConfirm3"
        @cancel="areashow = false"
      />
    </van-popup>
  </div>
</template>

<script>
import areaList from "@/script/areas.js";
import { Stepper, Toast } from "vant";
export default {
  data() {
    return {
      titlename: "同城急送",
      wptype: "物品", //物品类型
      wpshow: false, //物品类型弹窗显示
      wplist: ["物品", "文件"],
      pricetype: "月结(公司件)", //付款类型
      stepper: "",
      priceshow: false, //付款类型弹窗显示
      pricelist: ["自费(个人件)", "月结(公司件)"],
      addshow: false,
      name: "",
      phone: "",
      city: "",
      address: "",
      areashow: false,
      index: "",
      title: "",
      jjname: "",
      jjadd: "",
      sjname: "",
      sjadd: "",
      bz: "",
      check: false,
      userId: "",
      showPicker: false, //快递
      expressInfoShow: "同城急送", //快递公司展示
      expressPhone: "", //快递公司电话传值
      expressInfo: "5", //快递公司传值
      columns: [], //快递公司列表
      columns2: ["个人件", "公司件"],
      jjInfo: {},
      sjInfo: {},
      declaredValue: "0", //声明价值
      showPicker2: false,
      jjLocation: {}, //寄件经纬度
      sjLocation: {} //收件经纬度
      //mainType:''
    };
  },
  created: function() {
    this.isLogin();
    this.userId = localStorage.getItem("userId");

    //寄件地址
    if (JSON.stringify(this.$store.state.jjInfo) != "{}") {
      this.jjname = this.$store.state.jjInfo.jjname;
      this.jjadd = this.$store.state.jjInfo.jjadd;
      this.jjInfo = this.$store.state.jjInfo;
      this.getLat(this.jjadd, 1);
    } else {
      this.getDefaultAddress();
    }

    //收件地址
    if (JSON.stringify(this.$store.state.sjInfo) != "{}") {
      this.sjname = this.$store.state.sjInfo.sjname;
      this.sjadd = this.$store.state.sjInfo.sjadd;
      this.sjInfo = this.$store.state.sjInfo;
      this.getLat(this.sjadd, 2);
    }
    //this.getLogisticsList()
  },
  methods: {
    getLat(address, type) {
      this.$jsonp(
        "http://api.map.baidu.com/geocoding/v3?address=" +
          address +
          "&output=json&ak=AFb5d4d8279a19b2fc3a16d063f26772&callback=showLocation"
      ).then(res => {
        if (type == 1) {
          this.showLocation(res);
        }
        if (type == 2) {
          this.showLocation2(res);
        }
      });
    },
    showLocation(e) {
      if (e.status == 0) {
        console.log(e.result.location);
        this.jjLocation = e.result.location;
      } else {
        Toast("寄件地址获取经纬度错误！");
      }
    },
    showLocation2(e) {
      if (e.status == 0) {
        console.log(e.result.location);
        this.sjLocation = e.result.location;
      } else {
        Toast("收件地址获取经纬度错误！");
      }
    },
    // 选择快递公司
    onConfirm(e) {
      this.expressInfoShow = e.text;
      this.expressInfo = e.expressCompany;
      this.expressPhone = e.phone;
      this.showPicker = false;
    },
    onConfirm0(e) {
      this.mainType = e;
      this.showPicker2 = false;
    },
    // 选择物品确定
    onConfirm1(e) {
      //确定
      this.wptype = e;
      this.wpshow = false;
    },
    // 选择付款方式确定
    onConfirm2(e) {
      //确定
      this.pricetype = e;
      this.priceshow = false;
    },
    // 填写地址确定
    onConfirm3(e) {
      //确定
      this.city = e[0].name + " " + e[1].name + " " + e[2].name;
      this.areashow = false;
    },
    // 寄件地址1与收件地址2
    addtype(obj) {
      this.index = obj;
      if (obj == 1) {
        this.title = "寄件地址";
      }
      if (obj == 2) {
        this.title = "收件地址";
      }
      this.addshow = true;
    },
    // 填写地址确定
    onSubmit() {
      if (this.name == "" || this.name == undefined) {
        Toast("请填写姓名");
        return;
      }
      if (this.phone == "" || this.phone == undefined) {
        Toast("请填写手机");
        return;
      }
      let regPhone = new RegExp(this.$store.state.regPhone);
      if (!regPhone.test(this.phone)) {
        Toast("手机号格式不正确");
        return;
      }
      if (this.city == "" || this.city == undefined) {
        Toast("请选择省市区");
        return;
      }
      if (this.address == "" || this.address == undefined) {
        Toast("请填写详细地址");
        return;
      }
      if (this.index == 1) {
        this.jjname = this.name + " " + this.phone;
        this.jjadd = this.city + " " + this.address;
        this.jjInfo.jjname = this.jjname;
        this.jjInfo.jjadd = this.jjadd;
        this.jjInfo.sender = this.name;
        this.jjInfo.senderPhone = this.phone;
        this.jjInfo.sendAddr = this.city;
        this.jjInfo.sendAddress = this.address;
        this.$store.commit("getJjInfo", this.jjInfo);
        this.getLat(this.jjadd, 1);
      }
      if (this.index == 2) {
        this.sjname = this.name + " " + this.phone;
        this.sjadd = this.city + " " + this.address;
        this.sjInfo.sjname = this.sjname;
        this.sjInfo.sjadd = this.sjadd;
        this.sjInfo.receiver = this.name;
        this.sjInfo.receiverPhone = this.phone;
        this.sjInfo.receiveAddr = this.city;
        this.sjInfo.receiveAddress = this.address;
        this.$store.commit("getSjInfo", this.sjInfo);
        this.getLat(this.sjadd, 2);
      }

      this.addshow = false;
      this.name = "";
      this.phone = "";
      this.city = "";
      this.address = "";
    },
    close() {
      this.name = "";
      this.phone = "";
      this.city = "";
      this.address = "";
    },
    // 地址簿跳转
    link(obj) {
      this.$router.push({ path: "/CityAddressbook", query: { active: obj } });
    },
    //立即寄件交互
    save() {
      if (
        this.jjname == "" ||
        this.jjname == undefined ||
        this.jjadd == "" ||
        this.jjadd == undefined
      ) {
        Toast("请填写寄件人信息");
        return;
      }

      if (JSON.stringify(this.jjLocation) == "{}") {
        Toast("寄件地址经纬度为空");
        return;
      }

      if (
        this.sjname == "" ||
        this.sjname == undefined ||
        this.sjadd == "" ||
        this.sjadd == undefined
      ) {
        Toast("请填写收件人信息");
        return;
      }

      if (JSON.stringify(this.sjLocation) == "{}") {
        Toast("收件地址经纬度为空");
        return;
      }

      /* if(this.expressInfo == '' || this.expressInfo == undefined){
				Toast('请选择快递公司')
				return
			} */

      if (this.wptype == "" || this.wptype == undefined) {
        Toast("请选择物品类型");
        return;
      }

      if (this.stepper == "" || this.stepper == undefined) {
        Toast("请选择重量");
        return;
      }

      if (this.pricetype == "" || this.pricetype == undefined) {
        Toast("请选择付款方式");
        return;
      }
      let payWay = "";
      let mainType = "";
      if (this.pricetype == "自费(个人件)") {
        payWay = "自费";
        mainType = "个人件";
      }
      if (this.pricetype == "月结(公司件)") {
        payWay = "月结";
        mainType = "公司件";
      }

      if (this.check == false) {
        Toast("请点击同意《电子运单契约条款》");
        return;
      }

      Toast.loading({
        message: "保存中...",
        forbidClick: true,
        duration: 0
      });

      this.$http
        .post(
          this.$store.state.host + "/sendMail/saveMail.do",
          {
            userId: this.userId,
            sender: this.jjInfo.sender,
            senderPhone: this.jjInfo.senderPhone,
            sendAddr: this.jjInfo.sendAddr,
            sendAddress: this.jjInfo.sendAddress,
            receiver: this.sjInfo.receiver,
            receiverPhone: this.sjInfo.receiverPhone,
            receiveAddr: this.sjInfo.receiveAddr,
            receiveAddress: this.sjInfo.receiveAddress,
            expressInfo: 5,
            itemType: this.wptype,
            mainType: mainType,
            weight: this.stepper,
            itemNum: this.stepper,
            payWay: payWay,
            expressType: "外部件",
            declaredValue: this.declaredValue,
            itemRemark: this.bz,
            expressPhone: this.expressPhone,
            lat: this.jjLocation.lat, //寄件纬度
            lon: this.jjLocation.lng, //寄件经度
            toLat: this.sjLocation.lat, //收件纬度
            toLon: this.sjLocation.lng //收件经度
          },
          { emulateJSON: true }
        )
        .then(
          res => {
            //发送成功
            if (res.body.msg == "success") {
              Toast("下单成功，快递员将尽快上门取件！");
              let that = this;
              setTimeout(function() {
                that.$router.push({ path: "/" });
              }, 1000);
            } else {
              Toast("寄件失败");
            }
          },
          res => {
            //发送失败
            Toast("网络错误");
          }
        );
      Toast.clear();
    }
  },

  computed: {
    areaList() {
      return areaList;
    }
  }
};
</script>

<style scoped lang="less">
.content {
  .jjinfo {
    font-size: 0.24rem;
    color: #999999;
    padding: 0.33rem;
    word-break: break-word;

    > div {
      background: white;
      border-radius: 0.05rem;
      padding: 0.1rem 0.3rem;

      .jj {
        display: flex;
        justify-content: space-between;
        padding: 0.2rem 0rem;

        .jjaddress {
          display: flex;
          padding: 0.1rem 0rem;

          > p {
            font-size: 0.24rem;
            font-weight: bold;
            display: inline-block;
            width: 0.5rem;
            height: 0.5rem;
            background: #0c2469;
            text-align: center;
            line-height: 0.5rem;
            color: white;
            border-radius: 50%;
            margin-right: 0.3rem;
          }

          div {
            //font-weight: bold;
            max-width: 4.2rem;

            p:nth-of-type(1) {
              font-size: 0.24rem;
              color: #333;
              margin-bottom: 0.2rem;
            }

            p:nth-of-type(2) {
              font-size: 0.3rem;
            }
          }
        }

        .dzb {
          text-align: center;
          border-left: 0.01rem solid #ededed;
          padding-left: 0.3rem;

          img {
            width: 0.39rem;
            height: 0.42rem;
            padding-top: 0.2rem;
          }

          p {
            font-size: 0.2rem;
          }
        }
      }
    }
  }

  .kdshow {
    font-size: 0.3rem;
    padding: 0.3rem 0px;
    width: 6.84rem;
    background: white;
    border-radius: 0.05rem;
    margin: 0rem auto 0.2rem;

    /deep/.van-cell {
      padding: 0px 0.3rem;
      overflow: unset;

      input {
        text-align: right;
        height: 0.5rem;
        padding-right: 0.25rem;
      }
    }

    /deep/.van-cell::after {
      //content: "";
      display: none;
      border-right: 0.01rem solid #b0b0b0;
      border-bottom: 0.01rem solid #b0b0b0;
      transform: rotate(-45deg);
      left: unset;
      position: absolute;
      right: 0.3rem;
      bottom: 0.15rem;
      width: 0.2rem;
      height: 0.2rem;
    }
  }

  .choose {
    font-size: 0.3rem;
    color: #999999;
    font-weight: bold;
    padding: 0rem 0.33rem;

    > div {
      background: white;

      padding: 0.3rem 0.3rem;
      border-radius: 0.05rem;

      .type_wp {
        display: flex;
        justify-content: center;

        div {
          flex: 1;
          text-align: center;

          p:nth-of-type(2) {
            color: #333;
            margin-top: 0.2rem;
            font-size: 0.36rem;
            //position: relative;
          }
        }

        div:nth-of-type(1) {
          border-right: 0.01rem solid #ededed;

          p:nth-of-type(2):after {
            content: "";
            display: inline-block;
            width: 0.15rem;
            height: 0.15rem;
            border-bottom: 0.01rem solid #999;
            border-right: 0.01rem solid #999;
            transform: rotate(45deg);
            margin-left: 0.15rem;
            position: relative;
            top: -0.08rem;
          }
        }
      }

      .type_price {
        display: flex;
        justify-content: center;
        border-top: 0.01rem solid #ededed;
        margin-top: 0.3rem;
        padding-top: 0.3rem;

        div {
          flex: 1;
          text-align: center;

          p:nth-of-type(2) {
            color: #333;
            margin-top: 0.2rem;
            font-size: 0.36rem;
          }
        }

        div:nth-of-type(1) {
          border-right: 0.01rem solid #ededed;

          p:nth-of-type(2):after {
            content: "";
            display: inline-block;
            width: 0.15rem;
            height: 0.15rem;
            border-bottom: 0.01rem solid #999;
            border-right: 0.01rem solid #999;
            transform: rotate(45deg);
            margin-left: 0.15rem;
            position: relative;
            top: -0.08rem;
          }
        }
      }
    }
  }

  .bz {
    padding: 0.33rem;
    font-size: 0.3rem;

    /deep/.van-field__value {
      input {
        text-align: right;
      }
    }
  }

  .check {
    font-size: 0.24rem;

    text-align: center;

    /deep/.van-checkbox {
      justify-content: center;

      .van-checkbox__label {
        color: #999;
      }
    }
  }

  .btn-jj {
    padding: 0.33rem;

    button {
      width: 100%;
    }
  }
}

.whrite_add {
  width: 6.6rem;
  padding: 0.4rem 0.2rem;

  /deep/.van-field__value {
    input {
      text-align: right;
    }
  }

  /deep/.van-popup__close-icon--top-right {
    top: 5px;
    right: 10px;
  }
}
</style>
