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

342 lines
7.7 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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: 1,
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 && this.tabsIndex == 1) {
_type = this.transferType == 0 ? 4 : 6
} else if( this.type == 5 ) {
_type = 5
} else if( this.type == 3) {
_type = 3
} else if(this.type == 1) {
_type = 1
} else{
_type = 2
}
this.$httpJson('POST', url.asset.transferAccount, {
type:_type,
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>