From 58b0f1e9bd03a472321acf1dfc4e89fc4ce9df7a Mon Sep 17 00:00:00 2001
From: PC-20250623MANY\Administrator <344137771@qq.com>
Date: Mon, 29 Sep 2025 01:14:10 +0800
Subject: [PATCH] 9.28更换api
---
src/page/bankCard/banklist.vue | 658 ++++++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 468 insertions(+), 190 deletions(-)
diff --git a/src/page/bankCard/banklist.vue b/src/page/bankCard/banklist.vue
index 194b8c1..e794398 100644
--- a/src/page/bankCard/banklist.vue
+++ b/src/page/bankCard/banklist.vue
@@ -10,235 +10,513 @@
</van-nav-bar>
<div class="content">
<div class="bank">
- <!-- <div class="bank_list" v-for="(item,index) in banklist" :key="index" @click="$router.push('/updatabank')"> -->
- <div class="bank_list" v-for="(item,index) in banklist" :key="index">
- <div class="bank_name" >
- <div class="lefts" >{{item.bankName}}</div>
- <div class="rights">{{item.bankNo}}</div>
+ <!-- <van-swipe-cell v-for="(item, index) in banklist" :key="index" :right-width="65" @close="onClose"> -->
+ <van-swipe-cell
+ v-for="(item, index) in banklist"
+ :key="index"
+ :right-width="65"
+ >
+ <div
+ class="bank_name"
+ @click="openEditDialog(item)"
+ style="background-color: #777;"
+ >
+ <!-- <div class="bank_name" @click="goBankcard(item)"> -->
+ <div class="lefts">{{ item.bankName }}</div>
+ <div class="rights">{{ item.bankNo }}</div>
+ <van-button
+ square
+ class="delete-btn"
+ type="danger"
+ :text="$t('删除')"
+ @click.stop="deleteBank(item, index)"
+ />
</div>
- </div>
+ <!-- <template #right>
+ <van-button square class="delete-btn" type="danger" :text="$t('删除')" @click="deleteBank(item, index)" />
+ </template> -->
+ </van-swipe-cell>
</div>
<div class="bank_name">
- <div class="bank_box" @click="$router.push('/bankcard')">{{$t('hj220').substring(0,2)}}{{$t('hj247')}}</div>
+ <!-- <div class="bank_box" @click="$router.push('/bankcard')"> -->
+ <div class="bank_box" @click="openEditDialog()">
+ {{ $t("abc") }}
+ </div>
</div>
</div>
+
+ <!-- 编辑银行卡弹窗 -->
+ <van-popup v-model="showEditDialog" position="center" round>
+ <div class="edit-popup">
+ <div class="edit-title">
+ {{ !this.editForm.id ? $t("hj211") : $t("hj212") }}
+ </div>
+ <div class="division"></div>
+
+ <div class="edit-form">
+ <div class="form-item">
+ <div class="form-label">
+ <span class="required">*</span>{{ $t("hj213") }}
+ </div>
+ <input
+ type="text"
+ v-model="editForm.bankName"
+ :placeholder="$t('hj213')"
+ class="form-input"
+ />
+ </div>
+ <div class="form-item">
+ <div class="form-label">
+ <span class="required">*</span>{{ $t("hj215") }}
+ </div>
+ <input
+ type="text"
+ v-model="editForm.bankNo"
+ :placeholder="$t('hj215')"
+ class="form-input"
+ />
+ </div>
+ <div class="form-item" v-if="!editForm.id">
+ <div class="form-label">
+ <span class="required">*</span>{{ $t("银行卡户主名称") }}
+ </div>
+ <input
+ type="text"
+ v-model="editForm.bankCardholderName"
+ :placeholder="$t('银行卡户主名称')"
+ class="form-input"
+ />
+ </div>
+ </div>
+
+ <div class="division"></div>
+ <div class="edit-buttons">
+ <div class="cancel-btn" @click="showEditDialog = false">
+ {{ $t("qx") }}
+ </div>
+ <div class="save-btn" @click="saveEdit">{{ $t("qr") }}</div>
+ </div>
+ </div>
+ </van-popup>
</div>
</template>
<script>
- import * as api from "@/axios/api";
- import {
- Toast
- } from "mint-ui";
- import {
- isNull,
- bankNoReg,
- isName
- } from '@/utils/utils'
+import * as api from "@/axios/api";
+// import { Toast } from "mint-ui";
+import { Toast, Dialog } from "vant";
+import { isNull, bankNoReg, isName } from "@/utils/utils";
- export default {
- name: "bankCard",
- data() {
- return {
- showPicker: false,
- bankName: "", //银行名称,
- bankAddress: "", //需要精确到分行或者支行,
- bankNo: "", // 印象卡号
- banif: "",
- bankun: "",
- banklist:[],
- array: [],
- index: 0,
- addBank: false,
- id: '',
- code: '',
- name: '',
- };
+export default {
+ name: "bankCard",
+ data() {
+ return {
+ showPicker: false,
+ bankName: "", //银行名称,
+ bankAddress: "", //需要精确到分行或者支行,
+ bankNo: "", // 印象卡号
+ banif: "",
+ bankun: "",
+ banklist: [],
+ array: [],
+ index: 0,
+ addBank: false,
+ id: "",
+ code: "",
+ name: "",
+ // 编辑弹窗相关数据
+ showEditDialog: false,
+ editForm: {
+ bankName: "",
+ bankNo: "",
+ bankCardholderName: "",
+ id: ""
+ }
+ };
+ },
+ created() {
+ this.getCardDetail();
+ this.getbanklist();
+ },
+ methods: {
+ // 打开编辑弹窗
+ openEditDialog(item) {
+ if (!item) {
+ this.editForm = {
+ bankName: "",
+ bankNo: "",
+ bankCardholderName: "" // 如果没有持卡人信息,设置为空字符串
+ };
+ } else {
+ this.editForm = {
+ bankName: item.bankName,
+ bankNo: item.bankNo,
+ bankCardholderName: item.bankCardholderName || "", // 如果没有持卡人信息,设置为空字符串
+ id: item.id
+ };
+ }
+ this.showEditDialog = true;
},
- created() {
- this.getCardDetail();
- this.getbanklist()
- },
- methods: {
- quxiao() {
- this.showPicker = false
- },
- gotodaka() {
- this.showPicker = true
- },
- onConfirm(item) {
- console.log(item)
- this.id = item.id
- this.code = item.code
- this.name = item.name
- this.showPicker = !this.showPicker
- // this.lever = item.value
- },
- async getbanklist() {
- // 获取银行名称
- let data = await api.getbank()
- if (data.status === 0) {
- console.log(data);
- this.array = data.data
- console.log(this.array);
- } else {}
- },
- async toSure() {
- // 添加银行卡
- if (isNull(this.bankNo)) {
- Toast(this.$t("hj217"));
- } else if (isNull(this.name)) {
- Toast(this.$t("hj218"));
- } else if (isNull(this.banif)) {
- Toast(this.$t("hj218a"));
+ // 保存编辑
+ async saveEdit() {
+ // 表单验证
+ if (isNull(this.editForm.bankName)) {
+ Toast(this.$t("hj218"));
+ } else if (isNull(this.editForm.bankNo)) {
+ Toast(this.$t("hj217"));
+ } else if (
+ isNull(this.editForm.bankCardholderName) &&
+ !this.editForm.id
+ ) {
+ Toast(this.$t("hj316"));
+ } else {
+ let opts = {
+ bankName: this.editForm.bankName,
+ bankNo: this.editForm.bankNo,
+ // bankAddress: this.editForm.banif,
+ // bankImg: this.editForm.code,
+ // bankEmail: this.editForm.bankEmail,
+ bankCardholderName: this.editForm.bankCardholderName
+ };
+
+ let data;
+ // 编辑
+ if (!!this.editForm.id) {
+ opts.id = this.editForm.id;
+ data = await api.getUpdate(opts);
}
- // else if (isNull(this.bankAddress) ) {
- // Toast(this.$t("hj219"));
- // }
+ // 新增
else {
- let opts = {
- bankName: this.name,
- bankNo: this.bankNo,
- bankAddress: this.banif,
- bankImg: this.code,
-
- };
- let data = await api.addBankCard(opts);
- if (data.status === 0) {
- Toast(this.$t("hj220"));
- this.$router.push("/newUser");
- } else {
- Toast(data.msg);
- }
+ data = await api.addBankCard(opts);
}
- },
- async getCardDetail() {
- // 获取银行卡信息
- let data = await api.getBankCard()
if (data.status === 0) {
- // const {
- // bankAddress,
- // bankName,
- // bankNo,
- // bankImg
- // } = data.data;
- this.banklist = data.data
+ // Toast(this.$t("hj220"));
+ // this.$router.go(-1);
+ this.showEditDialog = false;
+ this.getCardDetail();
} else {
- this.addBank = true;
+ Toast(data.msg);
}
- },
+ }
+ },
+ deleteBank(item, index) {
+ Dialog.confirm({
+ title: this.$t("删除") + "?",
+ confirmButtonText: this.$t("qr"),
+ cancelButtonText: this.$t("qx")
+ }).then(async () => {
+ // 调用删除接口
+ let res = await api.deleteBankCard({ id: item.id });
+ if (res.status === 0) {
+ this.banklist.splice(index, 1);
+ // Toast(res.msg);
+ } else {
+ Toast(res.msg);
+ }
+ });
+ },
+ goBankcard(item) {
+ // 跳转修改银行卡
+ this.$router.push({
+ path: "/bankcard",
+ query: {
+ bankName: item.bankName,
+ bankNo: item.bankNo,
+ bankAddress: item.bankAddress,
+ bankImg: item.bankImg,
+ id: item.id
+ }
+ });
+ },
+ quxiao() {
+ this.showPicker = false;
+ },
+ gotodaka() {
+ this.showPicker = true;
+ },
+ onConfirm(item) {
+ console.log(item);
+ this.id = item.id;
+ this.code = item.code;
+ this.name = item.name;
+ this.showPicker = !this.showPicker;
+ // this.lever = item.value
+ },
+ async getbanklist() {
+ // 获取银行名称
+ let data = await api.getbank();
+ if (data.status === 0) {
+ console.log(data);
+ this.array = data.data;
+ console.log(this.array);
+ } else {
+ }
+ },
+ async toSure() {
+ // 添加银行卡
+ if (isNull(this.bankNo)) {
+ Toast(this.$t("hj217"));
+ } else if (isNull(this.name)) {
+ Toast(this.$t("hj218"));
+ } else if (isNull(this.banif)) {
+ Toast(this.$t("hj218a"));
+ }
+ // else if (isNull(this.bankAddress) ) {
+ // Toast(this.$t("hj219"));
+ // }
+ else {
+ let opts = {
+ bankName: this.name,
+ bankNo: this.bankNo,
+ bankAddress: this.banif,
+ bankImg: this.code
+ };
+ let data = await api.addBankCard(opts);
+ if (data.status === 0) {
+ Toast(this.$t("hj220"));
+ this.$router.push("/newUser");
+ } else {
+ Toast(data.msg);
+ }
+ }
+ },
+ async getCardDetail() {
+ // 获取银行卡信息
+ let data = await api.getBankCard();
+ if (data.status === 0) {
+ // const {
+ // bankAddress,
+ // bankName,
+ // bankNo,
+ // bankImg
+ // } = data.data;
+ this.banklist = data.data;
+ } else {
+ this.addBank = true;
+ }
}
- };
+ }
+};
</script>
<style scoped lang="less">
- .bank_box{
- width: 100%;
- display: flex;
- justify-content: center;
- align-items: center;
- font-size: 20px;
- }
- .bank_card_page {
+@green: #287dff;
+
+.bank_box {
+ width: 100%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: 20px;
+}
+
+.bank_card_page {
+ width: 100%;
+ height: 100%;
+ // background: #fff;
+
+ .content {
width: 100%;
height: 100%;
- background: #fff;
+ padding: 0 0.6rem;
- .content {
+ .top_back {
width: 100%;
- height: 100%;
- padding: 0 0.6rem;
+ height: 2rem;
- .top_back {
- width: 100%;
- height: 2rem;
-
- >div {
- width: 10%;
- height: 100%;
- display: flex;
- align-items: center;
- }
-
- img {
- width: 0.6rem;
- height: 0.6rem;
- }
+ > div {
+ width: 10%;
+ height: 100%;
+ display: flex;
+ align-items: center;
}
- .titles {
- width: 100%;
- height: 1.5rem;
- font-size: 0.641rem;
- margin-top: 1rem;
-
- span {
- font-weight: 600;
- }
+ img {
+ width: 0.6rem;
+ height: 0.6rem;
}
}
- .bank_name {
+ .titles {
width: 100%;
height: 1.5rem;
- display: flex;
- padding: 0 0.2rem;
- background: rgb(247, 247, 247);
- border-radius: 0.2rem;
- margin-top: 0.3rem;
+ font-size: 0.641rem;
+ margin-top: 1rem;
- .lefts {
- width: 38%;
- height: 100%;
- display: flex;
- align-items: center;
- font-size: 0.3846rem;
-
- span {
- font-weight: 600;
- }
- }
-
- .rights {
- width: 75%;
- height: 100%;
- display: flex;
- align-items: center;
- // justify-content: center;
-
- input {
- width: 100%;
- height: 100%;
- }
+ span {
+ font-weight: 600;
}
}
}
- .bank_name.bind {
- display: flex;
- align-items: center;
- justify-content: center;
- background: #1B79F5;
- font-size: 0.4103rem;
- color: #fff;
-
- span {
- font-weight: 600;
- }
- }
- /deep/ .van-nav-bar__content {
- height: 65px;
- }
- /deep/ .van-nav-bar__title {
- font-family: "DINPro";
+ .bank_name {
width: 100%;
- height: 1.17333rem;
+ height: 1.5rem;
display: flex;
- justify-content: center;
- align-items: center;
- font-style: normal;
- font-weight: 500;
- font-size: 0.48rem;
- color: #14181f;
+ padding: 0 0 0 0.2rem;
+ background: @green;
+ border-radius: 0.2rem;
+ margin-top: 0.3rem;
+
+ .lefts {
+ width: 38%;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ font-size: 0.3846rem;
+
+ span {
+ font-weight: 600;
+ }
+ }
+
+ .rights {
+ width: 75%;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ // justify-content: center;
+
+ input {
+ width: 100%;
+ height: 100%;
+ }
+ }
}
+}
+
+.bank_name.bind {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: #1b79f5;
+ font-size: 0.4103rem;
+ color: #fff;
+
+ span {
+ font-weight: 600;
+ }
+}
+
+/deep/ .van-nav-bar__content {
+ height: 65px;
+}
+
+/deep/ .van-nav-bar__title {
+ font-family: "DINPro";
+ width: 100%;
+ height: 1.17333rem;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-style: normal;
+ font-weight: 500;
+ font-size: 0.48rem;
+ color: #14181f;
+}
+
+.delete-btn {
+ height: 100%;
+ min-width: 65px;
+ background: linear-gradient(90deg, #ff4d4f 0%, #ff7875 100%);
+ border: none;
+ border-radius: 0 8px 8px 0;
+ color: #fff;
+ font-weight: bold;
+ font-size: 16px;
+ letter-spacing: 2px;
+ transition: background 0.2s;
+
+ &:active {
+ background: #d9363e;
+ }
+}
+
+/* 编辑弹窗样式 */
+/deep/ .van-popup {
+ border-radius: 0.5rem !important;
+}
+
+.edit-popup {
+ width: 100%;
+ padding: 0.25rem 0;
+ box-sizing: border-box;
+
+ .division {
+ width: 100%;
+ height: 0.25rem;
+ background-color: #f5f5f5;
+ }
+}
+
+.edit-title {
+ text-align: center;
+ font-size: 0.45rem;
+ font-weight: 700;
+ padding: 0.25rem;
+ color: #333;
+}
+
+.edit-form {
+ padding: 0.25rem;
+}
+
+.form-item {
+ // margin-bottom: 15px;
+ border-bottom: 1px solid #f5f5f5;
+ padding: 0.35rem 0 0.25rem;
+}
+
+.form-label {
+ font-size: 0.4rem;
+ margin-bottom: 0.2rem;
+ color: #333;
+}
+
+.required {
+ color: red;
+ margin-right: 4px;
+}
+
+.form-input {
+ width: 100%;
+ height: 1.1rem;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ padding: 0 10px;
+ font-size: 0.3rem;
+ box-sizing: border-box;
+ color: #333;
+}
+
+.edit-buttons {
+ display: flex;
+ justify-content: space-between;
+ border-top: 1px solid #f5f5f5;
+ padding-top: 15px;
+}
+
+.cancel-btn,
+.save-btn {
+ flex: 1;
+ height: 40px;
+ line-height: 40px;
+ text-align: center;
+ font-size: 16px;
+ cursor: pointer;
+}
+
+.cancel-btn {
+ color: #333;
+}
+
+.save-btn {
+ color: @green;
+ font-weight: 500;
+}
+
+/deep/ .van-popup {
+ width: 80%;
+ border-radius: 8px;
+}
</style>
--
Gitblit v1.9.3