| New file |
| | |
| | | <template> |
| | | <div> |
| | | <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" |
| | | /> |
| | | </template> |
| | | </van-nav-bar> |
| | | <main> |
| | | <div> |
| | | <div class="main-title">{{ $t("支持得支付渠道") }}</div> |
| | | <van-cell |
| | | is-link |
| | | :title="paymentSelectData.channelAccount || $t('請選擇')" |
| | | @click="paymentShow = true" |
| | | /> |
| | | <!-- paymentSelectData.channelMinLimit --> |
| | | <van-action-sheet |
| | | v-model="paymentShow" |
| | | :actions="paymentActions" |
| | | :cancel-text="$t('qx')" |
| | | close-on-click-action |
| | | @select="paymentSelect" |
| | | /> |
| | | |
| | | <template v-if="paymentSelectData.channelAccount !== undefined"> |
| | | <div class="main-title">{{ $t("收款卡號") }}</div> |
| | | <div class="white-input"> |
| | | <span>{{ paymentSelectData.channelAccount }}</span> |
| | | <i |
| | | class="iconfont icon-fuzhi fuzhi" |
| | | @click="(e) => copyText(e, channelAccount)" |
| | | ></i> |
| | | </div> |
| | | <div class="main-title">{{ $t("收款銀行") }}</div> |
| | | <div class="white-input"> |
| | | <span>{{ paymentSelectData.channelDesc }}</span> |
| | | <i |
| | | class="iconfont icon-fuzhi fuzhi" |
| | | @click="(e) => copyText(e, paymentSelectData.channelDesc)" |
| | | ></i> |
| | | </div> |
| | | <div class="main-title">{{ $t("收款人名字") }}</div> |
| | | <div class="white-input"> |
| | | <span>{{ paymentSelectData.channelName }}</span> |
| | | <i |
| | | class="iconfont icon-fuzhi fuzhi" |
| | | @click="(e) => copyText(e, paymentSelectData.channelName)" |
| | | ></i> |
| | | </div> |
| | | <div class="main-title">{{ $t("請選擇充值賬戶") }}</div> |
| | | <van-cell |
| | | is-link |
| | | :title="$t(rechargeAccountData.key) || $t('請選擇')" |
| | | /> |
| | | <!-- @click="rechargeAccountShow = true" --> |
| | | <van-action-sheet |
| | | v-model="rechargeAccountShow" |
| | | :actions="rechargeAccountActions" |
| | | :cancel-text="$t('qx')" |
| | | /> |
| | | <!-- close-on-click-action --> |
| | | <!-- @select="rechargeAccountSelect" --> |
| | | <div class="main-title">{{ $t("請選擇充值金額") }}</div> |
| | | <div class="white-input"> |
| | | <input type="number" :value="value" @input="inputValue" /> |
| | | <span class="myr"> {{ rechargeAccountData.symbolCode }}</span> |
| | | </div> |
| | | |
| | | <div class="bottom-text"> |
| | | <div class="balance" style="margin-top: 10px"> |
| | | <div>{{ $t("最小充值金額") }}</div> |
| | | <div class="balance-text" style="margin-bottom: 0px"> |
| | | {{ paymentSelectData.channelMinLimit }} |
| | | {{ rechargeAccountData.symbolCode }} |
| | | </div> |
| | | </div> |
| | | <div class="division"></div> |
| | | <div class="upload-text"> |
| | | <div style="margin-bottom: 0.37333rem"> |
| | | {{ $t("上傳憑證:") }} |
| | | </div> |
| | | <el-upload |
| | | v-loading="loading" |
| | | :with-credentials="true" |
| | | class="avatar-uploader" |
| | | :action="admin + '/user/upload.do'" |
| | | list-type="picture-card" |
| | | name="upload_file" |
| | | :show-file-list="false" |
| | | :on-success="handleAvatarSuccess" |
| | | :on-error="handleError" |
| | | :before-upload="beforeAvatarUpload" |
| | | :disabled="!showBtn" |
| | | :limit="1" |
| | | > |
| | | <img |
| | | v-if="form.img1key" |
| | | :src="form.img1key" |
| | | class="id-img avatar" |
| | | style="width: 100%; height: 100%" |
| | | /> |
| | | </el-upload> |
| | | </div> |
| | | </div> |
| | | <!-- :disabled="butFlg" --> |
| | | <van-button |
| | | class="but" |
| | | type="primary" |
| | | style="margin-top: 1.04rem; margin-bottom: 1.04rem" |
| | | @click="selCzFns" |
| | | >{{ $t("hj172") }}</van-button |
| | | > |
| | | </template> |
| | | </div> |
| | | </main> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { ActionSheet } from "vant"; |
| | | import ClipboardJS from "clipboard"; |
| | | import apiUrl from "@/axios/api.url.js"; |
| | | import { siteGetPayInfo, selCzFn } 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: "", |
| | | }, |
| | | }; |
| | | }, |
| | | 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() { |
| | | 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; |
| | | } |
| | | }); |
| | | }, |
| | | }, |
| | | }; |
| | | </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 { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | color: #181818; |
| | | font-family: PingFang SC; |
| | | font-size: 0.32rem; |
| | | font-style: normal; |
| | | font-weight: 500; |
| | | 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; |
| | | } |
| | | } |
| | | /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; |
| | | } |
| | | </style> |