bank.vue 4.24 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
        label="银行卡卡号"
        placeholder="请输入"
        size="large"
      />
      <van-field
        v-model="form.name"
        label="姓名"
        placeholder="请输入"
        size="large"
25
        maxlength="8"
26
      />
全球's avatar
全球 committed
27
      <van-field
leiqingsong's avatar
leiqingsong committed
28
        v-model="form.idCardNo"
leiqingsong's avatar
leiqingsong committed
29
        maxlength="18"
leiqingsong's avatar
leiqingsong committed
30 31 32
        label="身份证号"
        placeholder="请输入"
        size="large"
全球's avatar
全球 committed
33
      />
34
    </van-cell-group>
leiqingsong's avatar
leiqingsong committed
35 36 37 38 39 40 41 42
    <van-button
      type="primary"
      block
      class="btn"
      size="large"
      @click="addAndEditBankInfo"
      >编辑</van-button
    >
leiqingsong's avatar
leiqingsong committed
43 44 45 46 47
    <van-popup v-model="sheetShow" round position="bottom">
      <van-picker
        show-toolbar
        title="请选择银行"
        :columns="actions"
leiqingsong's avatar
leiqingsong committed
48
        :default-index="2"
leiqingsong's avatar
leiqingsong committed
49 50 51 52 53
        @cancel="sheetShow = false"
        @confirm="onSelect"
      />
    </van-popup>
    <!-- <van-action-sheet v-model="sheetShow" :actions="actions" @select="onSelect" /> -->
54 55 56 57
  </div>
</template>

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