<template>
  <div class="bank">
    <van-cell-group>
      <van-cell
        is-link
        :value="form.bankName"
        title="所属银行"
        placeholder="请选择"
        size="large"
        @click="sheetShow = true"
      />
      <van-field
        v-model="form.cardNumber"
        type="number"
        maxlength="19"
        label="银行卡卡号"
        placeholder="请输入"
        size="large"
      />
      <van-field
        v-model="form.name"
        label="姓名"
        placeholder="请输入"
        size="large"
      />
      <van-field
        v-model="form.idCardNo"
        maxlength="18"
        label="身份证号"
        placeholder="请输入"
        size="large"
      />
    </van-cell-group>
    <van-button
      type="primary"
      block
      class="btn"
      size="large"
      @click="addAndEditBankInfo"
      >编辑</van-button
    >
    <van-popup v-model="sheetShow" round position="bottom">
      <van-picker
        show-toolbar
        title="请选择银行"
        :columns="actions"
        :default-index="2"
        @cancel="sheetShow = false"
        @confirm="onSelect"
      />
    </van-popup>
    <!-- <van-action-sheet v-model="sheetShow" :actions="actions" @select="onSelect" /> -->
  </div>
</template>

<script>
import {
  getUserBankInfo,
  addUserBankInfo,
  editUserBankInfo,
  getBankList
} from "@/api/bank";
export default {
  name: "Bank",
  data() {
    return {
      sheetShow: false,
      actions: [],
      form: {
        bankName: "",
        cardNumber: "",
        name: "",
        id: "",
        idCardNo: ""
      }
    };
  },
  mounted() {
    this.getBank();
    this.getBankInfo();
  },
  methods: {
    onSelect(item) {
      this.form.bankName = item;
      this.sheetShow = false;
    },
    getBank() {
      getBankList().then(res => {
        if (res.code === 0) {
          this.actions = res.data;
        }
      });
    },
    addAndEditBankInfo() {
      if (!this.form.bankName) {
        this.$toast.fail("请填写所属银行");
        return;
      } else if (!this.form.cardNumber) {
        this.$toast.fail("请填写银行卡号");
        return;
      } else if (!this.form.name) {
        this.$toast.fail("请填写姓名");
        return;
      } else if (!this.form.idCardNo) {
        this.$toast.fail("请输入身份证号");
        return;
      }
      if (!/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test(this.form.idCardNo)) {
        this.$toast.fail("请输入正确的身份证号");
        return;
      }
      const params = this.form;
      if (this.form.id) {
        editUserBankInfo(params)
          .then(res => {
            if (res.code === 0) {
              this.$toast.success("编辑成功");
              this.$router.go(-1);
            } else {
              this.$toast.fail("编辑失败");
            }
          })
          .catch(error => {
            this.$toast.fail(
              error.response.data.error + error.response.data.message
            );
          });
      } else {
        const addParams = params;
        addParams.userId = JSON.parse(localStorage.getItem("user")).userId;
        addUserBankInfo(params)
          .then(res => {
            if (res.code === 0) {
              this.$toast.success("添加成功");
              this.$router.go(-1);
            } else {
              this.$toast.fail("添加失败");
            }
          })
          .catch(error => {
            this.$toast.fail(
              error.response.data.error + error.response.data.message
            );
          });
      }
    },
    getBankInfo() {
      const params = {
        userId: JSON.parse(localStorage.getItem("user")).userId
      };
      getUserBankInfo(params).then(res => {
        if (res.code === 0 && res.data) {
          this.form = res.data;
        }
      });
    }
  }
};
</script>

<style lang="scss" scoped>
.bank {
  padding: 10px 16px;
}
.van-cell-group {
  border-radius: 4px;
}
.btn {
  margin-top: 20px;
}
::v-deep .van-field__control {
  text-align: right;
}
</style>