1
jhzh
2026-02-27 5dfb843c29fdcc1693961b70a36ddee3fea85a4a
src/page/user/recharge.vue
@@ -1,30 +1,28 @@
<template>
  <div>
    <van-nav-bar
      :placeholder="true"
      :safe-area-inset-top="true"
      :title="$t('充值中心')"
      left-arrow
      @click-left="onClickLeft"
    >
    <van-nav-bar :placeholder="true" :safe-area-inset-top="true" :title="$t('充值中心')" left-arrow
      @click-left="onClickLeft">
      <template #right>
        <van-icon
          @click="$router.push('/rechargelist')"
          name="orders-o"
          size="20"
        />
        <van-icon @click="$router.push('/rechargelist')" name="orders-o" size="20" />
      </template>
    </van-nav-bar>
    <main>
      <div>
        <template >
        <template>
          <!-- @click="rechargeAccountShow = true" -->
          <!-- close-on-click-action -->
          <!-- @select="rechargeAccountSelect" -->
          <div class="list_title">
            <div class="list_top">{{$t('线上充值')}}</div>
            <div class="list_xx">
              <div class="list_xx_box" v-for="(item,index) in czlist" :key="index" @click="clicktype(item)">{{item}}
              </div>
            </div>
          </div>
          <div class="main-title">{{ $t("請選擇充值金額") }}</div>
          <div class="white-input">
            <input type="number" :value="value" @input="inputValue" />
@@ -37,23 +35,31 @@
              <div class="balance-text" style="margin-bottom: 0px">
                <!-- {{ paymentSelectData.channelMinLimit }}
                {{ rechargeAccountData.symbolCode }} -->
                1000
                100000
              </div>
            </div>
            <div class="division"></div>
          </div>
          <!--  :disabled="butFlg" -->
          <div style="font-size: 12px;">
            If you encounter any deposit problems, please contact online customer service
            </div>
          <van-button
            class="but"
            type="primary"
            style="margin-top: 1.04rem; margin-bottom: 1.04rem"
            @click="selCzFns"
            >{{ $t("hj172") }}</van-button
          >
          <div style="font-size: 12px;margin-top: 20px;color: #939298;">
            {{$t('tips333')}}
          </div>
          <div style="font-size: 12px;margin-top: 10px;color: #939298;line-height: 16px;">
            {{$t('tips111')}}
          </div>
          <div style="font-size: 12px;margin-top: 10px;color: #939298;line-height: 16px;">
            {{$t('tips222')}}
          </div>
          <!-- <div style="display: flex;justify-content: space-between;align-items: center;margin-top: 20px;">
            <div class="payclass" @click="paytype=1" :style="paytype==1?'border: 1px solid #185546;':'border: 1px solid  #e5e8ed;'">Pay 1</div>
            <div class="payclass" @click="paytype=2"  :style="paytype==2?'border: 1px solid #185546;':'border: 1px solid  #e5e8ed;'">Pay 2</div>
          </div> -->
          <van-button class="but" type="primary" style="margin-top: 1.04rem; margin-bottom: 1.04rem"
            @click="selCzFns">{{ $t("hj172") }}</van-button>
          <van-dialog v-model="dialogVisible" :title="$t('请联系客服进行充值服务')" show-cancel-button :confirm-button-text="$t('联系客服')"
            :cancel-button-text="$t('qx')" @confirm="onConfirm" @cancel="onCancel">
          </van-dialog>
        </template>
      </div>
    </main>
@@ -61,273 +67,377 @@
</template>
<script>
import { ActionSheet } from "vant";
import ClipboardJS from "clipboard";
import apiUrl from "@/axios/api.url.js";
import { siteGetPayInfo, selCzFn ,thirdPartyRecharge } from "../../axios/api";
import { Notify } from "vant";
import { rechargeAccountActions } from "@/utils/rechargeActions";
// baseURL
export default {
  components: { ActionSheet, [Notify.Component.name]: Notify.Component },
  mounted() {
    this.getPayInfos();
  },
  // getPayInfo
  data() {
    return {
      loading: false,
      butFlg: true,
      admin: apiUrl.baseURL,
      value: 0,
      rechargeSelect: {},
      paymentSelectData: {},
      rechargeAccountData: {},
      show: false,
      actions: [{ name: this.$t("銀行卡充值"), key: "YHK" }],
      paymentShow: false,
      paymentActions: [],
      rechargeAccountShow: false,
      rechargeAccountActions: rechargeAccountActions,
      showBtn: true,
      imgStatus: false,
      form: {
        img1key: "",
  import {
    ActionSheet
  } from "vant";
  import ClipboardJS from "clipboard";
  import apiUrl from "@/axios/api.url.js";
  import {
    siteGetPayInfo,
    selCzFn,
    thirdPartyRecharge
  } from "../../axios/api";
  import {
    Notify
  } from "vant";
  import {
    rechargeAccountActions
  } from "@/utils/rechargeActions";
  // baseURL
  export default {
    components: {
      ActionSheet,
      [Notify.Component.name]: Notify.Component
    },
    mounted() {
      this.getPayInfos();
    },
    // getPayInfo
    data() {
      return {
        dialogVisible: false,
        loading: false,
        butFlg: true,
        admin: apiUrl.baseURL,
        value: 0,
        rechargeSelect: {},
        paymentSelectData: {},
        rechargeAccountData: {},
        show: false,
        actions: [{
          name: this.$t("銀行卡充值"),
          key: "YHK"
        }],
        paymentShow: false,
        paymentActions: [],
        rechargeAccountShow: false,
        rechargeAccountActions: rechargeAccountActions,
        showBtn: true,
        imgStatus: false,
        paytype: 1,
        form: {
          img1key: "",
        },
        czlist: ['500000', '1000000', '1500000', '2000000', '2500000', '3000000']
      };
    },
    methods: {
      clicktype(e) {
        this.value = e
      },
    };
  },
  methods: {
    judgeValue() {
      console.log(this.form.img1key, this.value);
      if (this.form.img1key && this.value) {
        this.butFlg = false;
      } else {
        this.butFlg = true;
      }
    },
    inputValue(e) {
      this.value = e.target.value;
      this.judgeValue();
    },
    async selCzFns() {
      const res = await thirdPartyRecharge({
        tradeAmoun: this.value,
      });
      console.log(res);
      if(res.status==0){
        window.open(res.data);
      }
      // if (!this.value) {
      //   return Notify(this.$t("hj171"));
      // }
      // if (!this.form.img1key) {
      //   return Notify(this.$t("请上传文件"));
      // }
      // const res = await selCzFn({
      //   payTypeId: this.paymentSelectData.id,
      //   payAmt: this.value,
      //   img: this.form.img1key,
      // });
      // if (res.status === 0) {
      //   Notify({ type: "success", message: this.$t("hj182") });
      //   setTimeout(() => {
      //     this.$router.push("/rechargelist");
      //   }, 500);
      // }
      //  Notify("请上传文件");
    },
    async getPayInfos() {
      const res = await siteGetPayInfo();
      if (res.status === 0) {
        res.data.map((item) => {
          item.name = item.channelAccount;
        });
        this.paymentActions = res.data;
      }
      console.log(res);
    },
    handleAvatarSuccess(res, file) {
      this.imgStatus = false;
      this.form.img1key = res.data.url;
      this.loading = false;
      this.judgeValue();
    },
    beforeAvatarUpload(file) {
      this.loading = true;
      this.judgeValue();
      this.imgStatus = true;
    },
    handleError() {
      this.loading = false;
      this.imgStatus = false;
    },
    // upload
    async afterRead(file) {
      let formData = new FormData();
      formData.append("file", file.file || file.raw);
      // console.log(formData);
      const res = await upload({ file: formData });
      // console.log(res);
    },
    copyText(e, data) {
      var clipboard = new ClipboardJS(".copy-button", {
        text: () => data,
      });
      clipboard.on("success", () => {
        clipboard.destroy();
      });
      clipboard.onClick(e);
    },
    onClickLeft() {
      this.$router.push("/user");
    },
    select(e) {
      this.rechargeSelect = e;
    },
    rechargeAccountSelect(e) {
      this.rechargeAccountData = e;
    },
    paymentSelect(e) {
      this.paymentSelectData = e;
      this.rechargeAccountActions.map((item) => {
        if (item.key === e.assetsType) {
          this.rechargeAccountData = item;
      judgeValue() {
        console.log(this.form.img1key, this.value);
        if (this.form.img1key && this.value) {
          this.butFlg = false;
        } else {
          this.butFlg = true;
        }
      });
      },
      inputValue(e) {
        this.value = e.target.value;
        this.judgeValue();
      },
      async selCzFns() {
        // const res = await thirdPartyRecharge({
        //   tradeAmoun: this.value,
        //   type:this.paytype
        // });
        // console.log(res);
        // if (res.status == 0) {
        //   window.open(res.data);
        // }else{
        //     Notify(res.msg);
        // }
        // if (!this.value) {
        //   return Notify(this.$t("hj171"));
        // }
        // if (!this.form.img1key) {
        //   return Notify(this.$t("请上传文件"));
        // }
        if(this.value<100000){
            return Notify(this.$t("最小充值金額")+100000);
        }
        const res = await selCzFn({
          // payTypeId: this.paymentSelectData.id,
          payAmt: this.value,
          // img: this.form.img1key,
        });
        if (res.status === 0) {
          // Notify({
          //   type: "success",
          //   message: this.$t("请联系客服")
          // });
          this.dialogVisible = !this.dialogVisible
          // setTimeout(() => {
          //   this.$router.push("/rechargelist");
          // }, 500);
        }
        // Notify("请上传文件");
        //   return Notify(this.$t("请上传文件"));
      },
      // 点击确认按钮时的事件
      onConfirm() {
        this.dialogVisible = false;
          window.open('https://line.me/ti/p/3Cg9N_baNj', '_blank');
        console.log("已确认操作");
      },
      // 点击取消按钮时的事件
      onCancel() {
        this.dialogVisible = false;
        console.log("已取消操作");
      },
      async getPayInfos() {
        const res = await siteGetPayInfo();
        if (res.status === 0) {
          res.data.map((item) => {
            item.name = item.channelAccount;
          });
          this.paymentActions = res.data;
        }
        console.log(res);
      },
      handleAvatarSuccess(res, file) {
        this.imgStatus = false;
        this.form.img1key = res.data.url;
        this.loading = false;
        this.judgeValue();
      },
      beforeAvatarUpload(file) {
        this.loading = true;
        this.judgeValue();
        this.imgStatus = true;
      },
      handleError() {
        this.loading = false;
        this.imgStatus = false;
      },
      // upload
      async afterRead(file) {
        let formData = new FormData();
        formData.append("file", file.file || file.raw);
        // console.log(formData);
        const res = await upload({
          file: formData
        });
        // console.log(res);
      },
      copyText(e, data) {
        var clipboard = new ClipboardJS(".copy-button", {
          text: () => data,
        });
        clipboard.on("success", () => {
          clipboard.destroy();
        });
        clipboard.onClick(e);
      },
      onClickLeft() {
        this.$router.push("/user");
      },
      select(e) {
        this.rechargeSelect = e;
      },
      rechargeAccountSelect(e) {
        this.rechargeAccountData = e;
      },
      paymentSelect(e) {
        this.paymentSelectData = e;
        this.rechargeAccountActions.map((item) => {
          if (item.key === e.assetsType) {
            this.rechargeAccountData = item;
          }
        });
      },
    },
  },
};
  };
</script>
<style lang="less" scoped>
.but {
  width: 100%;
  color: #ffffff;
  background-color: #1989fa;
  border-radius: 8px;
  height: 66px;
  font-size: 22px;
}
.bottom-text {
  width: 100%;
  background-color: #fff;
  padding: 0.26667rem 0.37333rem;
  box-sizing: border-box;
  margin-top: 0.26667rem;
  // margin-bottom: 80px;
  .balance {
  /deep/.van-dialog__header--isolated{
    padding: 0.444444rem;
  }
  .list_xx_box {
    padding: 10px 20px;
    border: 1px solid #d4d4d4;
    border-radius: 8px;
    font-size: 20px;
    width: 160px;
    text-align: center;
    display: flex;
    justify-content: space-between;
    color: #181818;
    font-family: PingFang SC;
    font-size: 0.32rem;
    font-style: normal;
    align-items: center;
    justify-content: center;
    margin-bottom: 10px;
    font-weight: 500;
  }
  .list_xx {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
  }
  .list_top {
    font-size: 24px;
    margin-bottom: 20px;
    font-weight: bold;
  }
  .list_title {
    display: flex;
    flex-direction: column;
    margin-top: 20px;
  }
  .payclass {
    width: 150px;
    height: 40px;
    border-radius: 5px;
    border: 1px solid #e5e8ed;
    text-align: center;
    line-height: 40px;
  }
  .but {
    width: 100%;
    color: #ffffff;
    background-color: #185546;
    border-radius: 8px;
    height: 66px;
    font-size: 22px;
  }
  .bottom-text {
    width: 100%;
    background-color: #fff;
    padding: 0.26667rem 0.37333rem;
    box-sizing: border-box;
    .balance-text {
    margin-top: 0.26667rem;
    // margin-bottom: 80px;
    .balance {
      display: flex;
      justify-content: space-between;
      color: #181818;
      font-family: PingFang SC;
      font-size: 0.32rem;
      font-style: normal;
      font-weight: 500;
      line-height: 0.37333rem;
      margin-bottom: 0.37333rem;
      box-sizing: border-box;
      .balance-text {
        color: #181818;
        font-family: PingFang SC;
        font-size: 0.32rem;
        font-style: normal;
        font-weight: 500;
        line-height: 0.37333rem;
        margin-bottom: 0.37333rem;
      }
    }
    .division {
      width: 100%;
      height: 0.02667rem;
      flex-shrink: 0;
      background-color: #e5e8ed;
      margin: 0.37333rem 0;
    }
    .upload-text {
      color: #181818;
      font-family: PingFang SC;
      font-size: 0.32rem;
      font-style: normal;
      font-weight: 500;
    }
  }
  .division {
    width: 100%;
    height: 0.02667rem;
    flex-shrink: 0;
    background-color: #e5e8ed;
    margin: 0.37333rem 0;
  /deep/ .van-nav-bar__content {
    height: 65px;
  }
  .upload-text {
    color: #181818;
    font-family: PingFang SC;
    font-size: 0.32rem;
  /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;
  }
}
/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;
}
/deep/ .van-cell {
  list-style: none;
  width: 100%;
  margin-top: 0.26667rem;
  background: #fff;
  border-radius: 0.10667rem;
  list-style: none;
  border: none;
  font-family: Arial, sans-serif;
  font-style: normal;
  font-weight: 500;
  font-size: 0.37333rem;
  line-height: 0.53333rem;
  padding: 0.32rem 0.4rem;
  box-sizing: border-box;
  margin-top: 0.26667rem;
  box-shadow: 0 0.16rem 0.32rem #eaeaea99;
}
main {
  padding: 0 0.4rem 0.53333rem;
  box-sizing: border-box;
}
.main-title {
  font-style: normal;
  font-weight: 400;
  font-size: 0.37333rem;
  color: #8c9fad;
  margin-top: 0.53333rem;
}
.white-input {
  width: 100%;
  background: #fff;
  border-radius: 0.10667rem;
  list-style: none;
  border: none;
  font-family: Arial, sans-serif;
  font-style: normal;
  font-weight: 500;
  font-size: 0.37333rem;
  line-height: 0.53333rem;
  padding: 0.32rem 0.4rem;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  margin-top: 0.26667rem;
  -webkit-box-shadow: 0 0.16rem 0.32rem #eaeaea99;
  box-shadow: 0 0.16rem 0.32rem #eaeaea99;
  display: flex;
  justify-content: space-between;
}
.fuzhi {
  font-size: 28px;
  cursor: pointer;
}
.myr {
  color: rgb(150, 151, 153);
}
/deep/ .el-upload__input {
  display: none !important;
}
/deep/ .avatar-uploader {
  width: 2.740741rem;
  height: 2.740741rem;
}
  /deep/ .van-cell {
    list-style: none;
    width: 100%;
    margin-top: 0.26667rem;
    background: #fff;
    border-radius: 0.10667rem;
    list-style: none;
    border: none;
    font-family: Arial, sans-serif;
    font-style: normal;
    font-weight: 500;
    font-size: 0.37333rem;
    line-height: 0.53333rem;
    padding: 0.32rem 0.4rem;
    box-sizing: border-box;
    margin-top: 0.26667rem;
    box-shadow: 0 0.16rem 0.32rem #eaeaea99;
  }
  main {
    padding: 0 0.4rem 0.53333rem;
    box-sizing: border-box;
  }
  .main-title {
    font-style: normal;
    font-weight: 400;
    font-size: 0.37333rem;
    color: #8c9fad;
    margin-top: 0.53333rem;
  }
  .white-input {
    width: 100%;
    background: #fff;
    border-radius: 0.10667rem;
    list-style: none;
    border: none;
    font-family: Arial, sans-serif;
    font-style: normal;
    font-weight: 500;
    font-size: 0.37333rem;
    line-height: 0.53333rem;
    padding: 0.32rem 0.4rem;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
    margin-top: 0.26667rem;
    -webkit-box-shadow: 0 0.16rem 0.32rem #eaeaea99;
    box-shadow: 0 0.16rem 0.32rem #eaeaea99;
    display: flex;
    justify-content: space-between;
  }
  .fuzhi {
    font-size: 28px;
    cursor: pointer;
  }
  .myr {
    color: rgb(150, 151, 153);
  }
  /deep/ .el-upload__input {
    display: none !important;
  }
  /deep/ .avatar-uploader {
    width: 2.740741rem;
    height: 2.740741rem;
  }
</style>