|
@@ -0,0 +1,145 @@
|
|
|
|
+<template>
|
|
|
|
+ <div class="payment-code-container">
|
|
|
|
+ <van-form
|
|
|
|
+ @submit="onSubmit">
|
|
|
|
+ <van-field
|
|
|
|
+ readonly
|
|
|
|
+ clickable
|
|
|
|
+ name="picker"
|
|
|
|
+ :value="accountName"
|
|
|
|
+ label="账号"
|
|
|
|
+ placeholder="请选择账户"
|
|
|
|
+ @click="showPicker = true"/>
|
|
|
|
+ <van-field
|
|
|
|
+ class="fbt-van-cell"
|
|
|
|
+ v-model.trim="orderPrice"
|
|
|
|
+ :border="false"
|
|
|
|
+ label="充值金额"
|
|
|
|
+ placeholder="请输入充值金额"
|
|
|
|
+ @input="orderPrice = orderPrice.replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, '$1').replace(/^0\d*/, '0').replace(/^\./, '0.')"/>
|
|
|
|
+ <div>
|
|
|
|
+ <van-button
|
|
|
|
+ block
|
|
|
|
+ type="info"
|
|
|
|
+ native-type="submit"
|
|
|
|
+ :disabled="booLock"
|
|
|
|
+ style="width: 80%;margin: 0 auto;">提交
|
|
|
|
+ </van-button>
|
|
|
|
+ </div>
|
|
|
|
+ </van-form>
|
|
|
|
+ <van-popup
|
|
|
|
+ v-model="showPicker"
|
|
|
|
+ position="bottom"
|
|
|
|
+ @click-overlay="onCancel">
|
|
|
|
+ <van-picker
|
|
|
|
+ show-toolbar
|
|
|
|
+ :columns="columns"
|
|
|
|
+ @confirm="onConfirm"
|
|
|
|
+ @cancel="onCancel"
|
|
|
|
+ ref="myPicker"
|
|
|
|
+ />
|
|
|
|
+ </van-popup>
|
|
|
|
+ </div>
|
|
|
|
+</template>
|
|
|
|
+
|
|
|
|
+<script>
|
|
|
|
+import { Form, Field, Popup, Picker, Button, Toast } from 'vant'
|
|
|
|
+import { apiOrgList, apiWechatPay } from './api/api'
|
|
|
|
+import { yuan2Fen } from '@/utils'
|
|
|
|
+
|
|
|
|
+export default {
|
|
|
|
+ name: 'index',
|
|
|
|
+ components: {
|
|
|
|
+ 'van-form': Form,
|
|
|
|
+ 'van-field': Field,
|
|
|
|
+ 'van-popup': Popup,
|
|
|
|
+ 'van-picker': Picker,
|
|
|
|
+ 'van-button': Button
|
|
|
|
+ },
|
|
|
|
+ data () {
|
|
|
|
+ return {
|
|
|
|
+ accountName: '', // 账号名称
|
|
|
|
+ id: '', // 账号ID
|
|
|
|
+ orderPrice: '', // 重置金额
|
|
|
|
+ showPicker: false,
|
|
|
|
+ columns: [],
|
|
|
|
+ errorList: [],
|
|
|
|
+ booLock: false
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ created () {
|
|
|
|
+ this.fetchOrgList()
|
|
|
|
+ },
|
|
|
|
+ methods: {
|
|
|
|
+ onConfirm (val) {
|
|
|
|
+ const { text, id } = val
|
|
|
|
+ this.accountName = text
|
|
|
|
+ this.id = id
|
|
|
|
+ this.showPicker = false
|
|
|
|
+ },
|
|
|
|
+ onCancel () {
|
|
|
|
+ const index = this.columns.findIndex(item => item.id === this.id)
|
|
|
|
+ if (index > -1) {
|
|
|
|
+ this.$refs.myPicker.setIndexes([index])
|
|
|
|
+ }
|
|
|
|
+ this.showPicker = false
|
|
|
|
+ },
|
|
|
|
+ verifyData () {
|
|
|
|
+ this.errorList = []
|
|
|
|
+ if (!this.id) {
|
|
|
|
+ this.errorList.push('请选择账户')
|
|
|
|
+ }
|
|
|
|
+ if (!this.orderPrice) {
|
|
|
|
+ this.errorList.push('请输入充值金额')
|
|
|
|
+ }
|
|
|
|
+ return this.errorList.length > 0
|
|
|
|
+ },
|
|
|
|
+ async fetchOrgList () {
|
|
|
|
+ try {
|
|
|
|
+ const { status, data, msg } = await apiOrgList()
|
|
|
|
+ if (status) {
|
|
|
|
+ if (Array.isArray(data)) {
|
|
|
|
+ this.columns = data.map(item => ({
|
|
|
|
+ ...item,
|
|
|
|
+ text: item.account_name
|
|
|
|
+ }))
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ Toast(msg)
|
|
|
|
+ }
|
|
|
|
+ } catch (err) {}
|
|
|
|
+ },
|
|
|
|
+ async onSubmit () {
|
|
|
|
+ if (this.verifyData()) {
|
|
|
|
+ Toast(this.errorList[0])
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ try {
|
|
|
|
+ this.booLock = true
|
|
|
|
+ const { status, data, msg } = await apiWechatPay(this.id, yuan2Fen(this.orderPrice))
|
|
|
|
+ this.booLock = false
|
|
|
|
+ if (status) {
|
|
|
|
+ top.location.href = data.code_url
|
|
|
|
+ } else {
|
|
|
|
+ Toast(msg)
|
|
|
|
+ }
|
|
|
|
+ } catch (err) {}
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+</script>
|
|
|
|
+
|
|
|
|
+<style lang="scss" scoped>
|
|
|
|
+.payment-code-container {
|
|
|
|
+ padding-top: 100px;
|
|
|
|
+ background: #fff;
|
|
|
|
+
|
|
|
|
+ ::v-deep .van-form {
|
|
|
|
+ padding: 20px 0;
|
|
|
|
+
|
|
|
|
+ .van-cell {
|
|
|
|
+ margin-bottom: 20px;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+</style>
|