mall_client/zyhs3_uniapp/pages/user/balance/greenTransferNew.vue

336 lines
7.6 KiB
Vue
Raw Permalink Normal View History

2026-03-13 07:50:35 +00:00
<template>
<view class="containear bg-w">
<u-tabs v-if="type == 2" class="bg-w" :list="tabsList" @click="handlerTabClick"></u-tabs>
<u--form
:model="model1"
:rules="rules"
ref="uForm"
labelPosition="left"
labelWidth="90">
<u-form-item
label="转账类型"
prop="form.transferType"
borderBottom
@click="showTransferType = true; hideKeyboard()"
ref="item1"
v-if="type == 2 && tabsIndex == 1"
>
<u--input
:value="transferType != null ? actions[transferType]['name']:''"
disabled
disabledColor="#ffffff"
placeholder="请选择转账类型"
border="none"
></u--input>
<u-icon
slot="right"
name="arrow-right"
></u-icon>
</u-form-item>
<u-form-item
label="转入账号"
prop="form.proceedUsername"
borderBottom
>
<u--input
v-model="model1.form.proceedUsername"
disabledColor="#ffffff"
placeholder="请输入转入账号"
border="none"
></u--input>
<u-button
slot="right"
@tap="handlerCheck"
text="校验"
type="success"
size="mini"
:disabled="disabled1"
></u-button>
</u-form-item>
<u-form-item
label="账号昵称"
prop="nickname"
borderBottom
>
<u--input
v-model="nickname"
disabledColor="#ffffff"
disabled
placeholder="账号昵称"
border="none"
></u--input>
</u-form-item>
<u-form-item
label="转账数量"
prop="form.transferAccount"
borderBottom
>
<u--input
type="number"
v-model="model1.form.transferAccount"
disabledColor="#ffffff"
placeholder="请输入转账数量"
border="none"
></u--input>
</u-form-item>
<u-form-item
label="备注"
prop="form.remar"
borderBottom
>
<u--input
v-model="model1.form.remark"
disabledColor="#ffffff"
placeholder="请输入备注"
border="none"
></u--input>
</u-form-item>
<u-form-item
label="验证码"
prop="form.code"
borderBottom
class="flex"
>
<u--input
v-model="model1.form.code"
disabledColor="#ffffff"
placeholder="请输入验证码"
border="none"
></u--input>
<sms :phone="userInfo.mobile" :username="userInfo.username" typeCode="5"></sms>
<!-- <u-button
slot="right"
@tap="getCode"
:text="tips"
type="success"
size="mini"
:disabled="disabled1"
></u-button> -->
</u-form-item>
<u-form-item
label="支付密码"
prop="form.payPassword"
borderBottom
>
<u--input
type="password"
v-model="model1.form.payPassword"
disabledColor="#ffffff"
placeholder="请输入支付密码"
border="none"
></u--input>
</u-form-item>
</u--form>
<u-button
type="primary"
text="提交"
customStyle="margin-top: 50px"
@click="handlerSubmit"
></u-button>
<u-action-sheet
:show="showTransferType"
:actions="actions"
title="请选择转账类型"
@close="showTransferType = false"
@select="handlerTransferType"
>
</u-action-sheet>
<u-code
ref="uCode"
@change="codeChange"
seconds="60"
@start="disabled1 = true"
@end="disabled1 = false"
></u-code>
</view>
</template>
<script>
import url from '@/common/http/url.js';
import sms from "@/components/sms.vue";
import { mapState } from 'vuex'
export default {
components: {
sms
},
data() {
return {
disabled1: false,
tips: '获取验证码',
tabsList: [
{ name: '转绿色积分'},
{ name: '转管理钱包'}
],
tabsIndex: 0,
transferType: 0,
nickname: null,
model1: {
form: {
proceedUsername: null,
transferAccount: null,
code: null,
payPassword: null
}
},
showTransferType: false,
actions: [
{
name: '转账给自己',
index: 0
},
{
name: '转账给他人',
index: 1
}
],
rules: {
'form.proceedUsername': {
type: 'string',
required: true,
message: '请输入转入账号',
trigger: ['blur', 'change']
},
'form.transferAccount': {
type: 'string',
required: true,
message: '请输入转账数量',
trigger: ['blur', 'change']
},
'form.code': {
type: 'string',
required: true,
message: '请输入验证码',
trigger: ['blur', 'change']
},
'form.payPassword': {
type: 'string',
required: true,
message: '请输入支付密码',
trigger: ['blur', 'change']
},
},
type: null
};
},
onReady() {
//如果需要兼容微信小程序并且校验规则中含有方法等只能通过setRules方法设置规则。
console.log('this.$refs.uForm', this.$refs.uForm)
this.$refs.uForm.setRules(this.rules)
},
onLoad(e) {
this.type = e.type || null;
let title = ''
// if (e.type == 1) {
// title = '转账'
// }
// uni.setNavigationBarTitle({
// title: title
// })
},
computed: {
...mapState(["userInfo"])
},
methods: {
handlerCheck () {
let userName = this.model1.form.proceedUsername
if (!userName) return this.$msg('请输入转入账号')
this.$http("GET", url.user.getUserInfo, {
username: userName
}).then(({ code, data }) => {
if (code == 200) {
if (data == null) this.$msg('用户不存在');
else this.nickname = data.nickname;
}
})
},
handlerTransferType (e) {
console.log(e)
let { index } = e;
this.transferType = index;
if (index == 0) {
this.model1.form.proceedUsername = this.userInfo.username;
this.model1.form.nickname = this.userInfo.nickname;
} else {
this.model1.form.proceedUsername = '';
this.model1.form.nickname = '';
}
},
handlerTransfer () {
if (!this.nickname) return this.$msg('请校验用户是否存在');
if (this.model1.form.transferAccount <=0) return this.$msg('转账数量必须大于0')
let _type = null;
if( this.type == 2) {
_type = this.transferType == 0 ? 4 : 6
} else {
_type = 2
}
this.$httpJson('POST', url.asset.transferAccount, {
type:2,
memberUsername: this.userInfo.username,
mobile: this.userInfo.mobile,
...this.model1.form
}).then(({ code, msg }) => {
this.$msg(msg);
if (code == 200) {
setTimeout(() => {
uni.navigateBack()
},2000)
}
})
},
handlerSubmit () {
// 如果有错误会在catch中返回报错信息数组校验通过则在then中返回true
if (this.tabsIndex == 1) {
if (this.transferType == null)return this.$msg('请选择转账类型');
}
this.$refs.uForm.validate().then(res => {
this.handlerTransfer()
}).catch(errors => {
// uni.$u.toast('校验失败')
})
},
handlerTabClick (e) {
console.log(e);
let { index } = e;
this.tabsIndex = index;
},
codeChange(text) {
this.tips = text;
},
getCode() {
if (this.$refs.uCode.canGetCode) {
// 模拟向后端请求验证码
uni.showLoading({
title: '正在获取验证码'
})
setTimeout(() => {
uni.hideLoading();
// 这里此提示会被this.start()方法中的提示覆盖
uni.$u.toast('验证码已发送');
// 通知验证码组件内部开始倒计时
this.$refs.uCode.start();
}, 2000);
} else {
uni.$u.toast('倒计时结束后再发送');
}
},
hideKeyboard () {
uni.hideKeyboard()
}
}
}
</script>
<style lang="scss">
/deep/.u-tabs__wrapper__nav__item {
flex: 1;
}
.containear {
height: 100%;
padding: 0 20rpx;
}
</style>