bank.vue 4.04 KB
Newer Older
1 2 3
<template>
  <div class="bank">
    <van-cell-group>
leiqingsong's avatar
leiqingsong committed
4 5 6 7
      <van-cell
        is-link
        :value="form.bankName"
        title="所属银行"
8 9
        placeholder="请选择"
        size="large"
leiqingsong's avatar
leiqingsong committed
10
        @click="sheetShow = true"
11 12
      />
      <van-field
leiqingsong's avatar
leiqingsong committed
13
        v-model="form.cardNumber"
14
        type="number"
leiqingsong's avatar
leiqingsong committed
15
        maxlength="19"
16 17 18 19 20 21 22 23 24 25
        label="银行卡卡号"
        placeholder="请输入"
        size="large"
      />
      <van-field
        v-model="form.name"
        label="姓名"
        placeholder="请输入"
        size="large"
      />
全球's avatar
全球 committed
26
      <van-field
leiqingsong's avatar
leiqingsong committed
27
        v-model="form.idCardNo"
leiqingsong's avatar
leiqingsong committed
28
        maxlength="18"
leiqingsong's avatar
leiqingsong committed
29 30 31
        label="身份证号"
        placeholder="请输入"
        size="large"
全球's avatar
全球 committed
32
      />
33
    </van-cell-group>
leiqingsong's avatar
leiqingsong committed
34 35 36 37 38 39 40 41
    <van-button
      type="primary"
      block
      class="btn"
      size="large"
      @click="addAndEditBankInfo"
      >编辑</van-button
    >
leiqingsong's avatar
leiqingsong committed
42 43 44 45 46
    <van-popup v-model="sheetShow" round position="bottom">
      <van-picker
        show-toolbar
        title="请选择银行"
        :columns="actions"
leiqingsong's avatar
leiqingsong committed
47
        :default-index="2"
leiqingsong's avatar
leiqingsong committed
48 49 50 51 52
        @cancel="sheetShow = false"
        @confirm="onSelect"
      />
    </van-popup>
    <!-- <van-action-sheet v-model="sheetShow" :actions="actions" @select="onSelect" /> -->
53 54 55 56
  </div>
</template>

<script>
leiqingsong's avatar
leiqingsong committed
57 58 59 60 61 62
import {
  getUserBankInfo,
  addUserBankInfo,
  editUserBankInfo,
  getBankList
} from "@/api/bank";
63 64 65 66
export default {
  name: "Bank",
  data() {
    return {
leiqingsong's avatar
leiqingsong committed
67
      sheetShow: false,
leiqingsong's avatar
leiqingsong committed
68
      actions: [],
69
      form: {
leiqingsong's avatar
leiqingsong committed
70 71 72
        bankName: "",
        cardNumber: "",
        name: "",
全球's avatar
全球 committed
73
        id: "",
leiqingsong's avatar
leiqingsong committed
74
        idCardNo: ""
75 76
      }
    };
leiqingsong's avatar
leiqingsong committed
77 78
  },
  mounted() {
leiqingsong's avatar
leiqingsong committed
79
    this.getBank();
leiqingsong's avatar
leiqingsong committed
80 81 82
    this.getBankInfo();
  },
  methods: {
leiqingsong's avatar
leiqingsong committed
83 84 85 86 87 88 89 90 91
    onSelect(item) {
      this.form.bankName = item;
      this.sheetShow = false;
    },
    getBank() {
      getBankList().then(res => {
        if (res.code === 0) {
          this.actions = res.data;
        }
leiqingsong's avatar
leiqingsong committed
92
      });
leiqingsong's avatar
leiqingsong committed
93
    },
leiqingsong's avatar
leiqingsong committed
94
    addAndEditBankInfo() {
leiqingsong's avatar
leiqingsong committed
95 96 97 98 99 100 101
      if (!this.form.bankName) {
        this.$toast.fail("请填写所属银行");
        return;
      } else if (!this.form.cardNumber) {
        this.$toast.fail("请填写银行卡号");
        return;
      } else if (!this.form.name) {
leiqingsong's avatar
leiqingsong committed
102
        this.$toast.fail("请填写姓名");
leiqingsong's avatar
leiqingsong committed
103
        return;
leiqingsong's avatar
leiqingsong committed
104 105
      } else if (!this.form.idCardNo) {
        this.$toast.fail("请输入身份证号");
leiqingsong's avatar
leiqingsong committed
106 107 108 109 110
        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;
leiqingsong's avatar
leiqingsong committed
111
      }
leiqingsong's avatar
leiqingsong committed
112 113 114 115 116 117
      const params = this.form;
      if (this.form.id) {
        editUserBankInfo(params)
          .then(res => {
            if (res.code === 0) {
              this.$toast.success("编辑成功");
leiqingsong's avatar
leiqingsong committed
118
              this.$router.go(-1);
leiqingsong's avatar
leiqingsong committed
119 120 121 122 123 124 125 126 127 128
            } else {
              this.$toast.fail("编辑失败");
            }
          })
          .catch(error => {
            this.$toast.fail(
              error.response.data.error + error.response.data.message
            );
          });
      } else {
leiqingsong's avatar
leiqingsong committed
129
        const addParams = params;
leiqingsong's avatar
leiqingsong committed
130
        addParams.userId = JSON.parse(localStorage.getItem("user")).userId;
leiqingsong's avatar
leiqingsong committed
131
        addUserBankInfo(params)
leiqingsong's avatar
leiqingsong committed
132 133 134
          .then(res => {
            if (res.code === 0) {
              this.$toast.success("添加成功");
leiqingsong's avatar
leiqingsong committed
135
              this.$router.go(-1);
leiqingsong's avatar
leiqingsong committed
136 137 138 139 140 141 142 143 144 145 146 147 148
            } else {
              this.$toast.fail("添加失败");
            }
          })
          .catch(error => {
            this.$toast.fail(
              error.response.data.error + error.response.data.message
            );
          });
      }
    },
    getBankInfo() {
      const params = {
leiqingsong's avatar
leiqingsong committed
149
        userId: JSON.parse(localStorage.getItem("user")).userId
leiqingsong's avatar
leiqingsong committed
150 151
      };
      getUserBankInfo(params).then(res => {
leiqingsong's avatar
leiqingsong committed
152
        if (res.code === 0 && res.data) {
leiqingsong's avatar
leiqingsong committed
153 154 155 156
          this.form = res.data;
        }
      });
    }
157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
  }
};
</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>