Files
jsowell-charger-web/jsowell-ui/src/views/pile/merchant/components/adapayMember.vue

522 lines
21 KiB
Vue
Raw Normal View History

2023-06-09 10:38:23 +08:00
<template>
2023-06-21 09:52:12 +08:00
<div class="app-container">
2023-06-21 11:46:16 +08:00
<!-- <div>
<input type="file" accept="image/*" @change="getFile($event)" />
</div> -->
2023-06-21 09:52:12 +08:00
<el-card v-if="adapayMember == null" shadow="hover" style="margin-bottom:10px">
2023-06-15 15:59:40 +08:00
<div style="margin: 12px 0" >
2023-06-28 10:25:19 +08:00
没有查询到汇付会员配置请点击按钮创建会员信息及结算账号
2023-06-09 11:37:58 +08:00
<!-- 刷新按钮 -->
2023-06-13 16:36:32 +08:00
<el-button
size="medium"
type="primary"
2023-06-21 09:52:12 +08:00
@click="dialog = true"
2023-06-13 16:36:32 +08:00
>
2023-06-28 10:25:19 +08:00
创建会员信息与结算账号
2023-06-09 11:37:58 +08:00
</el-button>
</div>
2023-06-15 15:59:40 +08:00
</el-card>
<template v-else>
<el-card class="box-card" shadow="hover" style="margin-bottom: 10px">
2023-06-27 09:16:47 +08:00
<h2>会员信息</h2>
2023-06-15 15:59:40 +08:00
<hr>
2023-06-27 09:16:47 +08:00
<el-descriptions>
<!-- <el-descriptions-item label="会员昵称">{{
2023-06-21 09:58:07 +08:00
dialogForm.nickname
2023-06-27 09:16:47 +08:00
}}</el-descriptions-item> -->
2023-06-13 16:36:32 +08:00
<el-descriptions-item label="会员邮箱">{{
2023-06-21 09:58:07 +08:00
dialogForm.email
2023-06-13 16:36:32 +08:00
}}</el-descriptions-item>
2023-06-27 09:16:47 +08:00
<!-- <el-descriptions-item label="会员性别">{{
2023-06-21 09:58:07 +08:00
dialogForm.gender === "FEMALE" ? "女" : "男"
2023-06-27 09:16:47 +08:00
}}</el-descriptions-item> -->
2023-06-21 09:52:12 +08:00
<el-descriptions-item label="公司地址">{{
2023-06-21 09:58:07 +08:00
dialogForm.location
2023-06-13 16:36:32 +08:00
}}</el-descriptions-item>
2023-06-21 09:58:07 +08:00
</el-descriptions>
2023-06-09 11:37:58 +08:00
</el-card>
2023-06-21 09:52:12 +08:00
<el-card class="box-card" shadow="hover" style="margin:20px 0">
2023-06-15 09:38:12 +08:00
<!-- <div style="margin: 12px 0">汇付结算账户</div> -->
2023-06-27 09:16:47 +08:00
<h2>结算账户</h2>
2023-06-15 09:38:12 +08:00
<hr>
2023-06-15 15:40:46 +08:00
<el-descriptions :column="2" v-for="(item,index) in settleAccountList" :key="index">
<el-descriptions-item label="银行账户类型">{{ item.bankAcctType === '1'? '对公':'对私'}}</el-descriptions-item>
2023-06-15 09:38:12 +08:00
<el-descriptions-item label="银行卡号">{{
2023-06-15 15:40:46 +08:00
item.cardId
2023-06-15 09:38:12 +08:00
}}</el-descriptions-item>
<el-descriptions-item label="银行卡对应的户名">{{
2023-06-15 15:40:46 +08:00
item.cardName
2023-06-15 09:38:12 +08:00
}}</el-descriptions-item>
<el-descriptions-item label="手机号">{{
2023-06-15 15:40:46 +08:00
item.telNo
2023-06-15 09:38:12 +08:00
}}</el-descriptions-item>
<el-descriptions-item label="银行编码">{{
2023-06-15 15:40:46 +08:00
item.bankCode
2023-06-15 09:38:12 +08:00
}}</el-descriptions-item>
2023-06-16 09:09:38 +08:00
<el-descriptions-item label="银行账户开户银行所在省份编码">{{provCode(item.provCode)}}/ {{areaCode(item.areaCode)}}
</el-descriptions-item>
2023-06-15 09:38:12 +08:00
</el-descriptions>
2023-06-09 11:37:58 +08:00
</el-card>
2023-06-15 15:59:40 +08:00
</template>
2023-06-21 09:52:12 +08:00
<el-dialog title="创建结算账户" :visible.sync="dialog" width="50%">
<el-form :model="dialogForm" :rules="dialogRules" ref="dialogForm" label-width="220px">
<el-form-item label="银行账户类型" prop="bankAcctType">
<el-radio-group v-model="dialogForm.bankAcctType">
<el-radio label="1">对公</el-radio>
<el-radio label="2">对私</el-radio>
</el-radio-group>
2023-06-09 11:59:23 +08:00
</el-form-item>
2023-06-21 09:52:12 +08:00
<template v-if="dialogForm.bankAcctType === '1'">
<el-form-item label="企业名称" prop="businessName">
<el-input type="textarea" v-model="dialogForm.businessName" maxlength="50"></el-input>
2023-06-09 11:59:23 +08:00
</el-form-item>
2023-06-21 09:52:12 +08:00
<el-form-item label="省份编码" prop="provCode">
<el-cascader
v-model="value"
:options="options"
@change="enterpriseChange"
:props="cateProps"
></el-cascader>
2023-06-09 11:59:23 +08:00
</el-form-item>
2023-06-21 09:52:12 +08:00
<el-form-item label="统一社会信用码" prop="socialCreditCode">
<el-input v-model.number="dialogForm.socialCreditCode" maxlength="18"></el-input>
2023-06-09 11:59:23 +08:00
</el-form-item>
2023-06-21 09:52:12 +08:00
<el-form-item label="统一社会信用证有效期" prop="socialCreditCodeExpires">
<el-input v-model.number="dialogForm.socialCreditCodeExpires" maxlength="8" placeholder="有效期格式为:20190909"></el-input>
2023-06-09 11:59:23 +08:00
</el-form-item>
2023-06-21 09:52:12 +08:00
<el-form-item label="经营范围" prop="businessScope">
<el-input type="textarea" v-model="dialogForm.businessScope"></el-input>
</el-form-item>
<el-form-item label="法人姓名" prop="legalPerson">
<el-input v-model="dialogForm.legalPerson"></el-input>
</el-form-item>
<el-form-item label="法人身份证号码" prop="legalCertId">
<el-input v-model="dialogForm.legalCertId" maxlength="20"></el-input>
</el-form-item>
<el-form-item label="法人身份证有效期" prop="legalCertIdExpires">
<el-input v-model.number="dialogForm.legalCertIdExpires" maxlength="8" placeholder="有效期格式为:20190909"></el-input>
</el-form-item>
<el-form-item label="法人手机号" prop="legalMp">
<el-input v-model="dialogForm.legalMp"></el-input>
</el-form-item>
<el-form-item label="企业地址" prop="address">
<el-input v-model="dialogForm.address"></el-input>
</el-form-item>
<el-form-item label="邮编">
<el-input v-model="dialogForm.zipCode"></el-input>
</el-form-item>
<el-form-item label="企业电话">
<el-input v-model="dialogForm.telphone"></el-input>
</el-form-item>
<el-form-item label="企业邮箱">
<el-input v-model="dialogForm.email"></el-input>
</el-form-item>
2023-06-21 11:46:16 +08:00
<el-form-item label="上传附件" prop="imgList">
2023-06-21 09:52:12 +08:00
<el-upload
class="upload-demo"
:action="actionUrl"
:headers="headers"
:on-success="handleSuccess"
:on-preview="handlePreview"
:on-remove="handleRemove"
:file-list="fileList"
list-type="picture"
:limit="3"
accept=".png,.jpg"
:on-exceed="handleExceed">
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">上传法人身份证正面照法人身份证反面照开户银行许可证</div>
</el-upload>
</el-form-item>
<el-form-item label="银行代码" prop="bankCode">
<el-input v-model="dialogForm.bankCode"></el-input>
</el-form-item>
<el-form-item label="银行卡号" prop="cardNo">
<el-input v-model="dialogForm.cardNo"></el-input>
</el-form-item>
<el-form-item label="银行卡对应的户名" prop="cardName">
<el-input v-model="dialogForm.cardName"></el-input>
</el-form-item>
</template>
<template v-else>
<el-form-item label="会员邮箱" prop="email">
<el-input v-model="dialogForm.email"></el-input>
</el-form-item>
<!-- <el-form-item label="会员性别" prop="gender">
<el-radio-group v-model="dialogForm.gender">
<el-radio label="MALE"></el-radio>
<el-radio label="FEMALE"></el-radio>
</el-radio-group>
</el-form-item> -->
2023-06-14 16:41:55 +08:00
<el-form-item label="银行卡号" prop="cardId">
2023-06-21 09:52:12 +08:00
<el-input v-model="dialogForm.cardId"></el-input>
2023-06-09 11:59:23 +08:00
</el-form-item>
2023-06-14 16:41:55 +08:00
<el-form-item label="银行卡对应的户名" prop="cardName">
2023-06-21 09:52:12 +08:00
<el-input v-model="dialogForm.cardName"></el-input>
2023-06-09 11:59:23 +08:00
</el-form-item>
<el-form-item
2023-06-21 09:52:12 +08:00
v-if="dialogForm.bankAcctType === '2'"
2023-06-09 11:59:23 +08:00
label="证件号"
2023-06-14 16:41:55 +08:00
prop="certId"
2023-06-09 11:59:23 +08:00
:rules="
2023-06-21 09:52:12 +08:00
dialogForm.bankAcctType === '2'
? dialogRules.certId
2023-06-13 16:36:32 +08:00
: [{ required: false }]
"
2023-06-09 11:59:23 +08:00
>
2023-06-21 09:52:12 +08:00
<el-input v-model="dialogForm.certId"></el-input>
2023-06-09 11:59:23 +08:00
</el-form-item>
2023-06-09 10:38:23 +08:00
2023-06-14 16:41:55 +08:00
<el-form-item label="手机号" prop="telNo">
2023-06-21 09:52:12 +08:00
<el-input v-model="dialogForm.telNo"></el-input>
2023-06-09 11:59:23 +08:00
</el-form-item>
2023-06-21 09:52:12 +08:00
<el-form-item label="公司地址" prop="location">
<!-- type="textarea" -->
<el-input v-model="dialogForm.location"></el-input>
2023-06-09 11:59:23 +08:00
</el-form-item>
2023-06-21 09:52:12 +08:00
</template>
2023-06-09 16:03:32 +08:00
<el-form-item>
2023-06-21 09:52:12 +08:00
<el-button type="primary" @click="submitDialogForm('dialogForm')"
2023-06-13 16:36:32 +08:00
>提交</el-button
2023-06-09 16:03:32 +08:00
>
2023-06-21 11:46:16 +08:00
<el-button @click="resetForm('dialogForm')">重置</el-button>
2023-06-09 16:03:32 +08:00
</el-form-item>
2023-06-09 11:59:23 +08:00
</el-form>
</el-dialog>
2023-06-21 11:46:16 +08:00
2023-06-09 10:38:23 +08:00
</div>
</template>
<script>
import {
selectAdapayMember,
2023-06-21 09:58:07 +08:00
createAdapayMember,createCorpMember,createSettleAccount
2023-06-09 10:38:23 +08:00
} from "@/api/adapayMember/adapayMember";
2023-06-21 09:52:12 +08:00
import { getToken } from "@/utils/auth";
2023-06-09 10:38:23 +08:00
export default {
props: ["merchantId"],
data() {
return {
2023-06-21 09:52:12 +08:00
dialog:false,
2023-06-21 11:46:16 +08:00
dialogForm:{
bankAcctType:'1'
},
2023-06-09 11:37:58 +08:00
// 汇付会员
2023-06-15 15:59:40 +08:00
adapayMember: '',
2023-06-09 11:59:23 +08:00
openCreateAdapayMember: false,
2023-06-09 11:37:58 +08:00
// 汇付结算账户
adapaySettleAccount: null,
2023-06-21 09:52:12 +08:00
dialogRules: {
2023-06-09 10:38:23 +08:00
email: [
{
required: true,
message: "请填写会员邮箱",
trigger: "blur",
},
{
type: "email",
message: "请输入正确的邮箱地址",
trigger: "blur",
},
],
gender: [
{
required: true,
message: "请选择会员性别",
trigger: "blur",
},
],
location: [
{
required: true,
message: "请填写会员地址",
trigger: "blur",
},
],
nickname: [
{
required: true,
message: "请填写会员昵称",
trigger: "blur",
},
],
2023-06-14 16:41:55 +08:00
cardId: [
2023-06-09 10:38:23 +08:00
{
required: true,
message: "请填写银行卡号",
trigger: "blur",
},
{
pattern: /^[1-9]\d{9,29}$/,
message: "银行卡号格式有误",
trigger: "blur",
},
],
2023-06-14 16:41:55 +08:00
cardName: [
2023-06-09 10:38:23 +08:00
{
required: true,
message: "请填写银行卡号对应的户名",
trigger: "blur",
},
],
2023-06-14 16:41:55 +08:00
telNo: [
2023-06-09 10:38:23 +08:00
{
required: true,
message: "请填写手机号",
trigger: "blur",
},
{
pattern: /^(?:(?:\+|00)86)?1\d{10}$/,
message: "手机号格式有误",
trigger: "blur",
},
],
2023-06-14 16:41:55 +08:00
bankAcctType: [
2023-06-09 10:38:23 +08:00
{
required: true,
message: "请选择银行账户类型",
trigger: "blur",
},
],
2023-06-14 16:41:55 +08:00
areaCode: [
2023-06-09 10:38:23 +08:00
{
required: true,
message: "银行账户开户银行所在地区编码",
trigger: "blur",
},
],
2023-06-14 16:41:55 +08:00
certId: [
2023-06-09 10:38:23 +08:00
{
required: true,
message: "请填写证件号",
trigger: "blur",
},
],
2023-06-14 16:41:55 +08:00
bankCode: [
2023-06-09 10:38:23 +08:00
{
required: true,
message: "请填写银行编码",
trigger: "blur",
2023-06-21 11:46:16 +08:00
}
],
imgList: [
{
required: true,
message: "请上传三张照片",
2023-06-15 09:38:12 +08:00
trigger: "change",
2023-06-21 11:46:16 +08:00
}
2023-06-09 10:38:23 +08:00
],
2023-06-21 09:52:12 +08:00
businessName:[{
required: true,
message: "请输入企业名称",
trigger: "blur",
},],
provCode:[{
required: true,
message: "请选择省份编码",
2023-06-21 11:46:16 +08:00
trigger: "change",
2023-06-21 09:52:12 +08:00
},],
socialCreditCode:[{
required: true,
message: "请输入统一社会信用码",
trigger: "blur",
},],
socialCreditCodeExpires:[{
required: true,
message: "请输入统一社会信用证有效期",
trigger: "blur",
},
{
type: "number",
message: "请输入正确的统一社会信用证有效期",
trigger: "blur",
},
],
businessScope:[{
required: true,
message: "请输入经营范围",
trigger: "blur",
},],
legalPerson:[{
required: true,
message: "请输入法人姓名",
trigger: "blur",
},],
legalCertId:[{
required: true,
message: "请输入法人身份证号码",
trigger: "blur",
},
],
legalCertIdExpires:[{
required: true,
message: "请输入法人身份证有效期",
trigger: "blur",
},
{
type: "number",
message: "请输入正确的法人身份证有效期",
trigger: "blur",
},
],
legalMp:[{
required: true,
message: "请输入法人手机号",
trigger: "blur",
},
{
pattern: /^1\d{10}$/,
message: "手机号码格式有误",
trigger: "blur",
},
],
address:[{
required: true,
message: "请输入企业地址",
trigger: "blur",
},]
2023-06-09 10:38:23 +08:00
},
2023-06-14 09:35:55 +08:00
cateProps: {
expandTrigger: "click",
label: "title",
value: "value",
children: "cities",
},
2023-06-13 16:36:32 +08:00
value: [],
2023-06-14 09:35:55 +08:00
options: [],
2023-06-15 15:40:46 +08:00
settleAccount:{},
2023-06-21 09:52:12 +08:00
settleAccountList:[],
actionUrl: process.env.VUE_APP_BASE_API + "/common/uploadOSS",
dialogImageUrl: "",
headers: {
Authorization: "Bearer " + getToken(),
},
imageUrl: null,
fileList: [],
2023-06-09 10:38:23 +08:00
};
},
methods: {
2023-06-21 11:46:16 +08:00
getFile(e){
// console.log(e,'file');
const file = e.target.files
// this.file = e.target.files[0]
if(file.length !== 0) {
const reader = new FileReader()
reader.readAsDataURL(file[0])
// reader.readAsText(file[0])
reader.addEventListener('load',() =>{
console.log('asdfjao',reader.result);
})
}
},
2023-06-21 09:52:12 +08:00
handleExceed(files, fileList) {
this.$message.warning(
`当前限制选择 3 张图片,本次选择了 ${
files.length
} 共选择了 ${files.length + fileList.length} `
);
},
handleSuccess(res, file) {
this.imageUrl = URL.createObjectURL(file.raw);
console.log("图片上传成功 url", this.imageUrl);
2023-06-21 11:46:16 +08:00
// console.log("图片上传成功 res", res);
2023-06-21 09:52:12 +08:00
this.fileList.push({ url: res.url });
console.log('push方法', this.fileList);
this.dialogForm.imgList = this.fileList
2023-06-21 11:46:16 +08:00
// console.log(this.dialogForm.imgList,'this.dialogForm.imgList');
2023-06-21 09:52:12 +08:00
},
handleRemove(file, fileList) {
console.log("移除图片", file, fileList);
// 从pics数组中找到图片对应的索引值
const i = this.fileList.findIndex((x) => x.uid === file.uid);
// 调用splice方法移除图片信息
this.fileList.splice(i, 1);
},
handlePreview(file) {
// console.log(file);
this.dialogImageUrl = file.url;
console.log(this.dialogImageUrl);
},
2023-06-16 09:09:38 +08:00
areaCode(area){
let arr = this.options.find(item => item.cities[0].value == area)
return arr.title
},
provCode(code){
let arr = this.options.find(item => item.value == code)
return arr.title
},
2023-06-21 09:52:12 +08:00
enterpriseChange(value) {
this.dialogForm.provCode = value[0]
this.dialogForm.areaCode = value[1]
2023-06-13 16:36:32 +08:00
},
2023-06-21 09:52:12 +08:00
submitDialogForm(dialogForm){
2023-06-21 11:46:16 +08:00
console.log(this.dialogForm);
2023-06-21 09:52:12 +08:00
this.$refs[dialogForm].validate((valid) =>{
2023-06-09 10:38:23 +08:00
if (valid) {
2023-06-21 11:46:16 +08:00
if(this.dialogForm.imgList.length !== 3 ) return this.$message.warning('请上传三张照片')
2023-06-21 09:52:12 +08:00
console.log(valid,'valid');
2023-06-21 09:58:07 +08:00
createSettleAccount(this.dialogForm).then((response) =>{
console.log('新增',response);
this.dialog = false
this.selectAdapayMember();
})
2023-06-09 10:38:23 +08:00
} else {
2023-06-21 09:52:12 +08:00
console.log('表格提交失败');
return false
2023-06-09 10:38:23 +08:00
}
2023-06-21 09:52:12 +08:00
})
2023-06-09 10:38:23 +08:00
},
2023-06-21 11:46:16 +08:00
resetForm(dialogForm) {
this.$refs[dialogForm].resetFields();
2023-06-09 10:38:23 +08:00
},
2023-06-09 11:37:58 +08:00
// 查询汇付会员
2023-06-09 14:44:32 +08:00
selectAdapayMember() {
2023-06-09 10:38:23 +08:00
console.log("this.merchantId", this.merchantId);
let param = {
merchantId: this.merchantId,
};
2023-06-09 11:37:58 +08:00
selectAdapayMember(param).then((response) => {
2023-06-15 14:11:50 +08:00
console.log("查询 selectAdapayMember", response);
2023-06-15 15:47:14 +08:00
this.adapayMember = response.data;
2023-06-09 15:56:08 +08:00
if (response.data != null) {
2023-06-21 09:58:07 +08:00
this.dialogForm = response.data.adapayMember;
2023-06-15 15:40:46 +08:00
this.settleAccountList= response.data.settleAccountList
console.log(' this.settleAccountList', this.settleAccountList)
2023-06-09 15:56:08 +08:00
}
2023-06-09 10:38:23 +08:00
});
},
2023-06-14 09:35:55 +08:00
jsonHttp() {
var that = this;
2023-06-13 17:02:28 +08:00
//(1).实例化ajax对象
2023-06-14 09:35:55 +08:00
let xhr = new XMLHttpRequest();
2023-06-13 17:02:28 +08:00
//(2).设置请求方法和地址
//get请求的数据直接添加在url的后面 格式是 url?key=value
2023-06-14 09:35:55 +08:00
xhr.open(
"get",
"https://cdn.cloudpnr.com/adapayresource/documents/Adapay%E7%9C%81%E5%B8%82%E7%BC%96%E7%A0%81%EF%BC%88%E5%9B%9B%E4%BD%8D%EF%BC%89.json"
);
2023-06-13 17:02:28 +08:00
//(3).发送请求
2023-06-14 09:35:55 +08:00
xhr.send();
2023-06-13 17:02:28 +08:00
//(4).注册回调函数
2023-06-14 09:35:55 +08:00
xhr.onload = function () {
// console.log(xhr.responseText,'responseText')
that.options = JSON.parse(xhr.responseText);
};
},
2023-06-09 10:38:23 +08:00
},
created() {
2023-06-09 14:44:32 +08:00
this.selectAdapayMember();
2023-06-13 16:51:41 +08:00
this.jsonHttp();
2023-06-09 10:38:23 +08:00
},
};
</script>
2023-06-15 17:03:55 +08:00
<style lang="scss" scoped>
::v-deep .el-input .el-input--medium{
width: 43% !important;
}
</style>