From df43dbd4f80baedb88764ca9545e4b5ec7e1ac73 Mon Sep 17 00:00:00 2001
From: PC-20250623MANY\Administrator <344137771@qq.com>
Date: Sun, 27 Jul 2025 16:26:34 +0800
Subject: [PATCH] 1

---
 src/page/bankCard/banklist.vue |  258 +++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 219 insertions(+), 39 deletions(-)

diff --git a/src/page/bankCard/banklist.vue b/src/page/bankCard/banklist.vue
index db92095..751ec87 100644
--- a/src/page/bankCard/banklist.vue
+++ b/src/page/bankCard/banklist.vue
@@ -1,48 +1,65 @@
 <template>
   <div class="bank_card_page">
-    <van-nav-bar
-      :placeholder="true"
-      :safe-area-inset-top="true"
-      :title="$t('hj247')"
-      left-arrow
-      @click-left="$router.go(-1)"
-    >
+    <van-nav-bar :placeholder="true" :safe-area-inset-top="true" :title="$t('hj247')" left-arrow
+      @click-left="$router.go(-1)">
     </van-nav-bar>
     <div class="content">
       <div class="bank">
-        <van-swipe-cell
-          v-for="(item, index) in banklist"
-          :key="index"
-          :right-width="65"
-          @close="onClose"
-        >
-          <div class="bank_name" @click="goBankcard(item)">
+        <!-- <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)">
+            <!-- <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>
-          <template #right>
-            <van-button
-              square
-              class="delete-btn"
-              type="danger"
-              :text="$t('删除')"
-              @click="deleteBank(item, index)"
-            />
-          </template>
+          <!-- <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')">
+        <!-- <div class="bank_box" @click="$router.push('/bankcard')"> -->
+        <div class="bank_box" @click="openEditDialog()">
           {{ $t("hj220").substring(0, 2) }}{{ $t("hj247") }}
         </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 { Toast } from "mint-ui";
+import { Toast, Dialog } from 'vant';
 import { isNull, bankNoReg, isName } from "@/utils/utils";
 
 export default {
@@ -61,26 +78,96 @@
       addBank: false,
       id: "",
       code: "",
-      name: ""
-    };
+      name: "",
+      // 编辑弹窗相关数据
+      showEditDialog: false,
+      editForm: {
+        bankName: "",
+        bankNo: "",
+        bankCardholderName: "",
+        id: "",
+      }
+    }
   },
   created() {
     this.getCardDetail();
     this.getbanklist();
   },
   methods: {
-    async deleteBank(item, index) {
-      // this.$dialog
-      //   ? await this.$dialog.confirm({ message: "确定删除该银行卡吗?" })
-      //   : null;
-      // 调用删除接口
-      let res = await api.deleteBankCard({ id: item.id });
-      if (res.status === 0) {
-        this.banklist.splice(index, 1);
-        Toast(res.msg);
+    // 打开编辑弹窗
+    openEditDialog(item) {
+      if (!item) {
+        this.editForm = {
+          bankName: '',
+          bankNo: '',
+          bankCardholderName: "", // 如果没有持卡人信息,设置为空字符串
+        }
       } else {
-        Toast(res.msg);
+        this.editForm = {
+          bankName: item.bankName,
+          bankNo: item.bankNo,
+          bankCardholderName: item.bankCardholderName || "", // 如果没有持卡人信息,设置为空字符串
+          id: item.id,
+        };
       }
+      this.showEditDialog = true;
+    },
+    // 保存编辑
+    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 {
+          data = await api.addBankCard(opts);
+        }
+        if (data.status === 0) {
+          // Toast(this.$t("hj220"));
+          // this.$router.go(-1);
+          this.showEditDialog = false;
+          this.getCardDetail();
+        } else {
+          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) {
       // 跳转修改银行卡
@@ -167,6 +254,8 @@
 </script>
 
 <style scoped lang="less">
+@green: #c4d600;
+
 .bank_box {
   width: 100%;
   display: flex;
@@ -174,6 +263,7 @@
   align-items: center;
   font-size: 20px;
 }
+
 .bank_card_page {
   width: 100%;
   height: 100%;
@@ -188,7 +278,7 @@
       width: 100%;
       height: 2rem;
 
-      > div {
+      >div {
         width: 10%;
         height: 100%;
         display: flex;
@@ -217,7 +307,7 @@
     width: 100%;
     height: 1.5rem;
     display: flex;
-    padding: 0 0.2rem;
+    padding: 0 0 0 .2rem;
     background: rgb(247, 247, 247);
     border-radius: 0.2rem;
     margin-top: 0.3rem;
@@ -261,9 +351,11 @@
     font-weight: 600;
   }
 }
+
 /deep/ .van-nav-bar__content {
   height: 65px;
 }
+
 /deep/ .van-nav-bar__title {
   font-family: "DINPro";
   width: 100%;
@@ -288,8 +380,96 @@
   font-size: 16px;
   letter-spacing: 2px;
   transition: background 0.2s;
+
   &:active {
     background: #d9363e;
   }
 }
+
+/* 编辑弹窗样式 */
+/deep/ .van-popup {
+  border-radius: .5rem !important;
+}
+
+.edit-popup {
+  width: 100%;
+  padding: .25rem 0;
+  box-sizing: border-box;
+
+  .division {
+    width: 100%;
+    height: 0.25rem;
+    background-color: #f5f5f5;
+  }
+}
+
+.edit-title {
+  text-align: center;
+  font-size: .45rem;
+  font-weight: 700;
+  padding: .25rem;
+  color: #333;
+}
+
+.edit-form {
+  padding: .25rem;
+}
+
+.form-item {
+  // margin-bottom: 15px;
+  border-bottom: 1px solid #f5f5f5;
+  padding: .35rem 0 .25rem;
+}
+
+.form-label {
+  font-size: .4rem;
+  margin-bottom: .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: .3rem;
+  box-sizing: border-box;
+}
+
+.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