源文件
This commit is contained in:
230
jeepay-ui-uapp-agent/pageApply/components/ApplyCard.vue
Normal file
230
jeepay-ui-uapp-agent/pageApply/components/ApplyCard.vue
Normal file
@@ -0,0 +1,230 @@
|
||||
<template>
|
||||
<JMainCard pd="0" wrapPd="15rpx 30rpx" @click="toParent">
|
||||
<view class="apply-header">
|
||||
<view class="apply-left">
|
||||
<view class="apply-logo bdR10" :style="{ backgroundColor: bgColor }">
|
||||
<image :src="icon" mode="scaleToFill" />
|
||||
</view>
|
||||
<view class="single-text-beyond">
|
||||
{{ ifName }}
|
||||
<text>{{ createdAt.split("-").join("/") }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="apply-right">
|
||||
<image :src="stateList[state].image" mode="scaleToFill" />
|
||||
{{ stateList[state].text }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="apply-info">
|
||||
<view>
|
||||
<view>商户进件名</view>
|
||||
{{ mchFullName }}
|
||||
</view>
|
||||
<view class="info-mar">
|
||||
<view>用户号</view>
|
||||
{{ mchNo }}
|
||||
</view>
|
||||
<view>
|
||||
<view>进件单号</view>
|
||||
{{ applyId }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="apply-err bdR10" v-if="applyErrorInfo && state === 3"> 驳回原因:{{ applyErrorInfo }} </view>
|
||||
<view class="button-wrapper">
|
||||
<view
|
||||
class="apply-button"
|
||||
hover-class="u-cell-hover"
|
||||
hover-stay-time="150"
|
||||
@tap.stop="copyApply(applyId,mchNo,ifCode)">创建副本</view>
|
||||
<view
|
||||
class="apply-button"
|
||||
hover-class="u-cell-hover"
|
||||
hover-stay-time="150"
|
||||
v-if="state == 1 || state == 4 || state == 5"
|
||||
@tap.stop="emits('getNewState')"
|
||||
>获取最新结果</view
|
||||
>
|
||||
<view
|
||||
class="apply-button"
|
||||
hover-class="u-cell-hover"
|
||||
hover-stay-time="150"
|
||||
v-if="state == 2"
|
||||
@tap.stop="toH5ApplyOptionPage(applyId, 'APP_CONFIG')"
|
||||
>参数配置</view
|
||||
>
|
||||
<view
|
||||
class="apply-button"
|
||||
hover-class="u-cell-hover"
|
||||
hover-stay-time="150"
|
||||
v-if="state == 2 || state == 1 || state == 4 || state == 5 || state == 6"
|
||||
@tap.stop="toH5ApplyOptionPage(applyId, 'NEXT_BIZS')"
|
||||
>签约开通</view
|
||||
>
|
||||
</view>
|
||||
</JMainCard>
|
||||
<SelectedPay :confirmBut="true" @confirm="confirm" />
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive, ref } from "vue"
|
||||
import JMainCard from "@/components/newComponents/JMainCard/JMainCard"
|
||||
import SelectedPay from "./SelectedPay.vue"
|
||||
const props = defineProps({
|
||||
ifName: { type: String },
|
||||
icon: { type: String },
|
||||
bgColor: { type: String },
|
||||
createdAt: { type: String },
|
||||
mchFullName: { type: String },
|
||||
mchNo: { type: String },
|
||||
applyId: { type: String },
|
||||
state: { type: Number },
|
||||
applyErrorInfo: { type: String },
|
||||
ifCode:{type:String}
|
||||
})
|
||||
const emits = defineEmits(["getNewState", "click"])
|
||||
const stateList = reactive([
|
||||
{
|
||||
text: "草稿", //0
|
||||
image: "/static/iconImg/draft.svg",
|
||||
},
|
||||
{
|
||||
text: "审核中", //1
|
||||
image: "/static/iconImg/icon-apply-examine.svg",
|
||||
},
|
||||
{
|
||||
text: "已开通", //2
|
||||
image: "/static/equipmentImg/check.svg",
|
||||
},
|
||||
{
|
||||
text: "申请被驳回", //3
|
||||
image: "/static/iconImg/icon-apply-error.svg",
|
||||
},
|
||||
{
|
||||
text: "待验证", //4
|
||||
image: "/static/iconImg/icon-apply-examine.svg",
|
||||
},
|
||||
{
|
||||
text: "待签约", //5
|
||||
image: "/static/equipmentImg/check.svg",
|
||||
},
|
||||
{
|
||||
text: "", //6 占位
|
||||
image: "/static/equipmentImg/check.svg",
|
||||
},
|
||||
{
|
||||
text: "等待预审", //7
|
||||
image: "/static/iconImg/pending-review.svg",
|
||||
},
|
||||
{
|
||||
text: "预审拒绝", //8
|
||||
image: "/static/iconImg/passerror.svg",
|
||||
},
|
||||
])
|
||||
function confirm(){
|
||||
|
||||
}
|
||||
const toParent=()=>{
|
||||
emits('click')
|
||||
}
|
||||
function toH5ApplyOptionPage(applyId, configPage) {
|
||||
uni.navigateTo({ url: `/pageApply/applyDetailH5ApplyOption?applyId=${applyId}&configPage=${configPage}` })
|
||||
}
|
||||
// 创建副本
|
||||
function copyApply(applyId,mchNo,ifCode){
|
||||
uni.navigateTo({url:`/pageApply/selectChannel?applyId=${applyId}&mchNo=${mchNo}&ifCode=${ifCode}`})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.apply-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
padding: 30rpx 30rpx 30rpx 0;
|
||||
margin-left: 30rpx;
|
||||
border-bottom: 1rpx solid rgba(0, 0, 0, 0.1);
|
||||
.apply-left {
|
||||
display: flex;
|
||||
.apply-logo {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin-right: 30rpx;
|
||||
width: 93rpx;
|
||||
height: 93rpx;
|
||||
overflow: hidden;
|
||||
image {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
}
|
||||
}
|
||||
|
||||
view {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
font-size: 30rpx;
|
||||
font-weight: 700;
|
||||
text {
|
||||
margin-top: 16rpx;
|
||||
font-size: 25rpx;
|
||||
font-weight: 500;
|
||||
color: #8c8c8c;
|
||||
}
|
||||
}
|
||||
}
|
||||
.apply-right {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
white-space: nowrap;
|
||||
image {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.apply-info {
|
||||
padding: 30rpx;
|
||||
|
||||
view {
|
||||
display: flex;
|
||||
font-size: 28rpx;
|
||||
view {
|
||||
width: 190rpx;
|
||||
color: #8c8c8c;
|
||||
}
|
||||
}
|
||||
.info-mar {
|
||||
margin: 23rpx 0;
|
||||
}
|
||||
}
|
||||
.apply-err {
|
||||
padding: 20rpx;
|
||||
margin: 30rpx;
|
||||
background-color: rgba(229, 61, 46, 0.1);
|
||||
word-break: break-all;
|
||||
font-size: 28rpx;
|
||||
color: #e53d2e;
|
||||
}
|
||||
.button-wrapper {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
.apply-button {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 70rpx;
|
||||
padding: 0 33rpx;
|
||||
margin: 20rpx;
|
||||
margin-left: 0;
|
||||
border-radius: 10rpx;
|
||||
text-align: center;
|
||||
font-size: 28rpx;
|
||||
font-weight: 500;
|
||||
border: 1rpx solid rgba(179, 179, 179, 1);
|
||||
white-space: nowrap;
|
||||
}
|
||||
.u-cell-hover {
|
||||
opacity: 0.5;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
62
jeepay-ui-uapp-agent/pageApply/components/ApplyHeader.vue
Normal file
62
jeepay-ui-uapp-agent/pageApply/components/ApplyHeader.vue
Normal file
@@ -0,0 +1,62 @@
|
||||
<template>
|
||||
<view class="a-wrapper">
|
||||
<block v-for="v in list" :key="v.value">
|
||||
<view class="a-text" :class="{ selected: v.value === index }" @tap="selected(v)">
|
||||
{{ v.text }}
|
||||
<view class="solid" v-show="v.value === index"></view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive, ref } from "vue"
|
||||
const emits = defineEmits(["selected"])
|
||||
const list = reactive([
|
||||
{
|
||||
text: "全部",
|
||||
value: "",
|
||||
},
|
||||
{
|
||||
text: "成功",
|
||||
value: 2,
|
||||
},
|
||||
{
|
||||
text: "审核",
|
||||
value: 1,
|
||||
},
|
||||
{
|
||||
text: "驳回",
|
||||
value: 3,
|
||||
},
|
||||
])
|
||||
const index = ref("")
|
||||
const selected = (val) => {
|
||||
index.value = val.value
|
||||
emits("selected", val.value)
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.a-wrapper {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
.a-text {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
font-size: 28rpx;
|
||||
|
||||
.solid {
|
||||
width: 20rpx;
|
||||
height: 6rpx;
|
||||
margin-top: 12rpx;
|
||||
background-color: $primaryColor;
|
||||
}
|
||||
}
|
||||
.selected {
|
||||
font-weight: 700;
|
||||
color: $primaryColor;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
81
jeepay-ui-uapp-agent/pageApply/components/SelectBank.vue
Normal file
81
jeepay-ui-uapp-agent/pageApply/components/SelectBank.vue
Normal file
@@ -0,0 +1,81 @@
|
||||
<template>
|
||||
<uni-popup ref="popup" type="bottom">
|
||||
<view class="list-wrapper">
|
||||
<view class="search-input">
|
||||
<input
|
||||
focus
|
||||
v-model="searchText"
|
||||
placeholder="请输入银行名称"
|
||||
@input="filerBank"
|
||||
/>
|
||||
</view>
|
||||
<view class="list-mian">
|
||||
<view
|
||||
class="list-item"
|
||||
v-for="v in filerBank()"
|
||||
:key="v[key]"
|
||||
@tap="choice(v)"
|
||||
>
|
||||
{{ v[value] }}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</uni-popup>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from "vue";
|
||||
const props = defineProps({
|
||||
key: {
|
||||
type: String,
|
||||
},
|
||||
value: {
|
||||
type: String,
|
||||
},
|
||||
list: {
|
||||
type: Array,
|
||||
},
|
||||
});
|
||||
const emits = defineEmits(["choiceValue"]);
|
||||
const popup = ref();
|
||||
const open = () => {
|
||||
popup.value.open();
|
||||
};
|
||||
const searchText = ref("");
|
||||
const filerBank = () => {
|
||||
return props.list.filter((v) => v[props.value].includes(searchText.value));
|
||||
};
|
||||
const choice = (val) => {
|
||||
emits("choiceValue", val);
|
||||
popup.value.close();
|
||||
};
|
||||
defineExpose({ open });
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.list-wrapper {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
border-radius: 16rpx 16rpx 0 0;
|
||||
background-color: #fff;
|
||||
max-height: 1000rpx;
|
||||
padding: 30rpx;
|
||||
.search-input {
|
||||
input {
|
||||
border-bottom: 1px solid #ccc;
|
||||
text-indent: 1rem;
|
||||
padding: 10rpx 0;
|
||||
}
|
||||
}
|
||||
.list-mian {
|
||||
flex: 1;
|
||||
overflow-y: scroll;
|
||||
margin-top: 20rpx;
|
||||
.list-item {
|
||||
margin: 10rpx 0;
|
||||
padding: 10rpx;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
120
jeepay-ui-uapp-agent/pageApply/components/SelectedIsv.vue
Normal file
120
jeepay-ui-uapp-agent/pageApply/components/SelectedIsv.vue
Normal file
@@ -0,0 +1,120 @@
|
||||
<template>
|
||||
<JPopup ref="popup">
|
||||
<JMainCard pd="0" wrapPd="0 30rpx">
|
||||
<view class="title">请选择渠道</view>
|
||||
<view class="list-wrapper">
|
||||
<block v-for="(v, i) in channelList" :key="i">
|
||||
<view class="list" @tap="selected(v)">
|
||||
<view class="list-left">
|
||||
<view class="imag-wrapper" :style="{ backgroundColor: v.bgColor }">
|
||||
<image :src="v.icon" mode="" />
|
||||
</view>
|
||||
<view>
|
||||
<view class="l-f-top"> {{ v.isvName }} </view>
|
||||
<view class="l-f-bottom">{{ v.isvNo }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="list-selected" v-if="codeInfo.ifCode === v.ifCode">
|
||||
<image src="/static/equipmentImg/check.svg" mode="scaleToFill" />
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</JMainCard>
|
||||
<JButton pd="30rpx 30rpx 50rpx 30rpx" bgColor="#f2f2f2" color="#000" pdTop="0" @HandleTouch="popup.close()">取消
|
||||
</JButton>
|
||||
</JPopup>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from "vue"
|
||||
import { $rateConfig, $getAcountInfo,$getIsvInfoList } from "@/http/apiManager.js"
|
||||
import JPopup from "@/components/newComponents/JPopup/JPopup"
|
||||
import JMainCard from "@/components/newComponents/JMainCard/JMainCard"
|
||||
import JButton from "@/components/newComponents/JButton/JButton"
|
||||
const emits = defineEmits(["selected"])
|
||||
const popup = ref(null)
|
||||
const channelList = ref([])
|
||||
const codeInfo = ref("")
|
||||
// 定义父组件的传值
|
||||
const props = defineProps({
|
||||
channelRange: { type: String, default:0 }, // 当前配置的所属infoId
|
||||
channelIfCode: { type: String ,default: '' }, // 默认选中的支付接口
|
||||
infoId: { type: String ,default: '' }, // 默认选中的支付接口
|
||||
})
|
||||
console.log(props,'propsprops');
|
||||
const open = () => {
|
||||
getList()
|
||||
popup.value.open()
|
||||
}
|
||||
const getList = () => {
|
||||
console.log(props,'propsprops')
|
||||
$getIsvInfoList({pageNumber:-1,ifCode:props.channelIfCode,range:props.channelRange,infoId:props.infoId}).then(({ bizData }) => {
|
||||
channelList.value=bizData.records
|
||||
console.log(bizData);
|
||||
})
|
||||
}
|
||||
const selected = (val) => {
|
||||
emits("selected", val)
|
||||
popup.value.close()
|
||||
}
|
||||
defineExpose({ open })
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.title {
|
||||
padding: 30rpx;
|
||||
text-align: center;
|
||||
border-bottom: 1rpx solid #999;
|
||||
}
|
||||
|
||||
.list-wrapper {
|
||||
height: calc(100vh - 500rpx);
|
||||
padding-bottom: 40rpx;
|
||||
overflow-y: scroll;
|
||||
|
||||
.list {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 30rpx;
|
||||
|
||||
.list-left {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
|
||||
.imag-wrapper {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 52rpx;
|
||||
height: 52rpx;
|
||||
border-radius: 50%;
|
||||
margin-right: 20rpx;
|
||||
|
||||
image {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.l-f-top {
|
||||
font-size: 30rpx;
|
||||
}
|
||||
|
||||
.l-f-bottom {
|
||||
margin-top: 15rpx;
|
||||
font-size: 22rpx;
|
||||
color: #666f80;
|
||||
}
|
||||
}
|
||||
|
||||
.list-selected {
|
||||
image {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}</style>
|
||||
115
jeepay-ui-uapp-agent/pageApply/components/SelectedPay.vue
Normal file
115
jeepay-ui-uapp-agent/pageApply/components/SelectedPay.vue
Normal file
@@ -0,0 +1,115 @@
|
||||
<template>
|
||||
<JPopup ref="popup">
|
||||
<JMainCard pd="0" wrapPd="0 30rpx">
|
||||
<view class="title">请选择通道</view>
|
||||
<view class="list-wrapper">
|
||||
<block v-for="(v, i) in channelList" :key="i">
|
||||
<view class="list" @tap="selected(v)">
|
||||
<view class="list-left">
|
||||
<view class="imag-wrapper" :style="{ backgroundColor: v.bgColor }">
|
||||
<image :src="v.icon" mode="" />
|
||||
</view>
|
||||
<view>
|
||||
<view class="l-f-top"> {{ v.ifName }} </view>
|
||||
<view class="l-f-bottom">{{ v.remark }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="list-selected" v-if="codeInfo.ifCode === v.ifCode">
|
||||
<image src="/static/equipmentImg/check.svg" mode="scaleToFill" />
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</JMainCard>
|
||||
<JButton pd="30rpx 30rpx 50rpx 30rpx" bgColor="#f2f2f2" color="#000" pdTop="0" @HandleTouch="popup.close()">取消
|
||||
</JButton>
|
||||
</JPopup>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from "vue"
|
||||
import { $rateConfig, $getAcountInfo } from "@/http/apiManager.js"
|
||||
import JPopup from "@/components/newComponents/JPopup/JPopup"
|
||||
import JMainCard from "@/components/newComponents/JMainCard/JMainCard"
|
||||
import JButton from "@/components/newComponents/JButton/JButton"
|
||||
const emits = defineEmits(["selected"])
|
||||
const popup = ref(null)
|
||||
const channelList = ref([])
|
||||
const codeInfo = ref("")
|
||||
const open = () => {
|
||||
getList()
|
||||
popup.value.open()
|
||||
}
|
||||
const getList = () => {
|
||||
$getAcountInfo().then(({ bizData }) => {
|
||||
$rateConfig(bizData.agentNo).then(({ bizData }) => {
|
||||
channelList.value = bizData.filter(v => {
|
||||
return v.isOpenApplyment == 1
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
const selected = (val) => {
|
||||
emits("selected", val)
|
||||
popup.value.close()
|
||||
}
|
||||
defineExpose({ open })
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.title {
|
||||
padding: 30rpx;
|
||||
text-align: center;
|
||||
border-bottom: 1rpx solid #999;
|
||||
}
|
||||
|
||||
.list-wrapper {
|
||||
height: calc(100vh - 500rpx);
|
||||
padding-bottom: 40rpx;
|
||||
overflow-y: scroll;
|
||||
|
||||
.list {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 30rpx;
|
||||
|
||||
.list-left {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
|
||||
.imag-wrapper {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 52rpx;
|
||||
height: 52rpx;
|
||||
border-radius: 50%;
|
||||
margin-right: 20rpx;
|
||||
|
||||
image {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.l-f-top {
|
||||
font-size: 30rpx;
|
||||
}
|
||||
|
||||
.l-f-bottom {
|
||||
margin-top: 15rpx;
|
||||
font-size: 22rpx;
|
||||
color: #666f80;
|
||||
}
|
||||
}
|
||||
|
||||
.list-selected {
|
||||
image {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}</style>
|
||||
20
jeepay-ui-uapp-agent/pageApply/components/contract.vue
Normal file
20
jeepay-ui-uapp-agent/pageApply/components/contract.vue
Normal file
@@ -0,0 +1,20 @@
|
||||
<template>
|
||||
<view>
|
||||
<web-view :src="url"></web-view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import { ref } from 'vue'
|
||||
|
||||
let url = ref('')
|
||||
|
||||
onLoad((option) => {
|
||||
url.value = option.url
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
810
jeepay-ui-uapp-agent/pageApply/components/dataEcho/dataEcho.js
Normal file
810
jeepay-ui-uapp-agent/pageApply/components/dataEcho/dataEcho.js
Normal file
@@ -0,0 +1,810 @@
|
||||
function shengpay(val) {
|
||||
return [
|
||||
[
|
||||
{ title: "基础信息" },
|
||||
{ text: "商户类型", value: val.merchantText },
|
||||
{ text: "行业MCC", value: val.mccText },
|
||||
{ text: "商户联系人姓名", value: val.contactName },
|
||||
{ text: "商户联系人电话", value: val.contactPhone },
|
||||
{ text: "商户联系人邮箱", value: val.contactEmail },
|
||||
],
|
||||
[
|
||||
{ title: "经营信息" },
|
||||
{ text: "商户简称", value: val.mchShortName },
|
||||
{ text: "商户名称全称", value: val.mchFullName },
|
||||
{ text: "商户地理位置", value: val.areaText },
|
||||
{ text: "商户详细地址", value: val.address },
|
||||
{ text: "门头照", src: val.storeOuterImg },
|
||||
{ text: "收银台照片", src: val.storeCashierImg },
|
||||
{ text: "店内环境照", src: val.storeInnerImg },
|
||||
],
|
||||
[
|
||||
{ title: "证件信息" },
|
||||
{ text: "法人身份证人像面照", src: val.idcard1Img },
|
||||
{ text: "法人身份证姓名", value: val.idcardName },
|
||||
{ text: "法人身份证号", value: val.idcardNo },
|
||||
{ text: "法人身份证国徽面照片", src: val.idcard2Img },
|
||||
{ text: "法人身份证起始有效期", value: val.idcardEffectBegin },
|
||||
{ text: "法人身份证结束有效期", value: val.idcardEffectEnd },
|
||||
{ text: "法人手持身份证照片", src: val.idcardInHandImg },
|
||||
{ text: "营业执照编号", value: val.licenseNo },
|
||||
{ text: "营业执照照片", src: val.licenseImg },
|
||||
{ text: "营业执照起始有效期", value: val.licenseEffectBegin },
|
||||
{ text: "营业执照有效期截止", value: val.licenseEffectEnd },
|
||||
],
|
||||
ownerInfo(val), // 受益人卡片
|
||||
[
|
||||
{ title: "账号信息" },
|
||||
{ text: "结算账号类型", value: val.settAccountText },
|
||||
{ text: "结算银行名称", value: val.settAccountBankName },
|
||||
{
|
||||
text: "结算银行卡分支行所在地区",
|
||||
value: val.settAccountBankBranchAreaText,
|
||||
},
|
||||
{ text: "结算银行卡支行名称", value: val.settAccountBankBranchName },
|
||||
{
|
||||
text: val.settAccountType == "B" ? "开户许可证照片" : "结算银行卡照片",
|
||||
src: val.settAccountLicenseImg,
|
||||
},
|
||||
{
|
||||
text: val.settAccountType == "B" ? "对公账号" : "银行卡帐号",
|
||||
value: val.settAccountNo,
|
||||
},
|
||||
{ text: "对公账户名称", value: val.companyAccountName },
|
||||
{ text: "对公账户银行卡号", value: val.companyAccountNo },
|
||||
{ text: "对公账户开户银行名称", value: val.companyAccountBankName },
|
||||
{
|
||||
text: "对公账户开户支行所在地区",
|
||||
value: val.settAccountBankBranchAreaText,
|
||||
},
|
||||
{
|
||||
text: "对公账户开户支行名称",
|
||||
value: val.companyAccountBankBranchName,
|
||||
},
|
||||
{ text: "开户许可证照片", src: val.companyAccountLicenseImg },
|
||||
{ text: "持卡人身份证号", value: val.settAccountIdcardNo },
|
||||
{ text: "请输入持卡人身份证号", value: val.settAccountIdcardNo },
|
||||
{ text: "持卡人身份证人像照", src: val.settAccountIdcard1Img },
|
||||
{ text: "持卡人身份证国徽面照片", src: val.settAccountIdcard2Img },
|
||||
{
|
||||
text: "持卡人身份证起始有效期",
|
||||
value: val.settAccountIdcardEffectBegin,
|
||||
},
|
||||
{
|
||||
text: "持卡人身份证结束有效期",
|
||||
value: val.settAccountIdcardEffectEnd,
|
||||
},
|
||||
],
|
||||
rate(val),
|
||||
[
|
||||
{ title: "pos信息" },
|
||||
{ type: "posInfo", typevalue: val.posInfoList }
|
||||
]
|
||||
];
|
||||
}
|
||||
function alipay(val) {
|
||||
return [
|
||||
[
|
||||
{ title: "经营信息" },
|
||||
{ text: "选择产品类型", value: "当面付" },
|
||||
{ text: "经营类目", value: val.mccText },
|
||||
{ text: "营业执照图片", src: val.licenseImg },
|
||||
{ text: "请输入营业执照编号", value: val.licenseNo },
|
||||
{ text: "营业执照有效期截止", value: val.licenseEffectEnd },
|
||||
{ text: "特殊资质照", src: val.specialLicenseImg },
|
||||
],
|
||||
[
|
||||
{ title: "门店信息" },
|
||||
{ text: "商户名称全称", value: val.mchFullName },
|
||||
{ text: "商户地理位置选择省市县", value: val.areaText },
|
||||
{ text: "商户详细地址", value: val.address },
|
||||
{ text: "门头照", src: val.storeOuterImg },
|
||||
{ text: "店内环境照", src: val.storeInnerImg },
|
||||
],
|
||||
[
|
||||
{ title: "联系人信息" },
|
||||
{ text: "支付宝账号", value: val.accountNo },
|
||||
{ text: "商户联系人姓名", value: val.contactName },
|
||||
{ text: "商户联系人电话", value: val.contactPhone },
|
||||
{ text: "商户联系人邮箱", value: val.contactEmail },
|
||||
],
|
||||
rate(val),
|
||||
];
|
||||
}
|
||||
function wxpay(val) {
|
||||
return [
|
||||
[
|
||||
{ title: "主体信息" },
|
||||
{ text: "商户类型", value: val.merchantType == 2 ? "个体" : "企业" },
|
||||
{ text: "营业执照照片", src: val.licenseImg },
|
||||
{ text: "营业执照编号", value: val.licenseNo },
|
||||
{ text: "商户名称全称", value: val.mchFullName },
|
||||
{ text: "法人身份证人像面照", src: val.idcard1Img },
|
||||
{ text: "法人身份证国徽面照", src: val.idcard2Img },
|
||||
{ text: "法人身份证姓名", value: val.idcardName },
|
||||
{ text: "法人身份证号", value: val.idcardNo },
|
||||
{ text: "法人身份证起始有效期", value: val.idcardEffectBegin },
|
||||
{ text: "法人身份证结束有效期", value: val.idcardEffectEnd },
|
||||
],
|
||||
ownerInfo(val), // 受益人卡片
|
||||
[
|
||||
{ title: "经营信息" },
|
||||
{ text: "商户简称", value: val.mchShortName },
|
||||
{ text: "客服电话", value: val.servicePhone },
|
||||
{ text: "门店名称", value: val.storeName },
|
||||
{ text: "商户地理位置", value: val.areaText },
|
||||
{ text: "商户详细地址", value: val.address },
|
||||
{ text: "门头照", src: val.storeOuterImg },
|
||||
{ text: "店内环境照", src: val.storeInnerImg },
|
||||
],
|
||||
[
|
||||
{ title: "结算规则" },
|
||||
{ text: "结算规则信息", value: val.setRulesText },
|
||||
{ text: "行业", value: val.mccCode },
|
||||
{ text: "特殊资质照", src: val.qualifications },
|
||||
{
|
||||
text: "优惠费率活动",
|
||||
value:
|
||||
val.activityIndex == 0
|
||||
? "泛行业活动【优惠区间0.2%~0.6%】"
|
||||
: "不参与活动",
|
||||
},
|
||||
],
|
||||
[
|
||||
{ title: "结算账户" },
|
||||
{
|
||||
text: "结算账号类型",
|
||||
value: val.settAccountType == "C" ? "对私" : "对公",
|
||||
},
|
||||
{ text: "开户名称", value: val.settAccountName },
|
||||
{ text: "银行卡账号", value: val.settAccountNo },
|
||||
{ text: "开户行", value: val.settAccountBankName },
|
||||
{ text: "结算银行卡分支行所在地区", value: val.bankText },
|
||||
{ text: "开户行支行名称", value: val.settAccountBankBranchName },
|
||||
],
|
||||
[
|
||||
{ title: "超管信息" },
|
||||
{
|
||||
text: "超管身份",
|
||||
value: val.adminIdentity == "legel" ? "法人" : "负责人",
|
||||
},
|
||||
{ text: "超级管理员姓名", value: val.contactName },
|
||||
{ text: "超级管理员身份证号", value: val.contactIdNumber },
|
||||
{ text: "手机号", value: val.contactPhone },
|
||||
{ text: "邮箱", value: val.contactEmail },
|
||||
],
|
||||
rate(val),
|
||||
];
|
||||
}
|
||||
function zftpay(val) {
|
||||
return [
|
||||
[
|
||||
{ title: "主体信息" },
|
||||
{
|
||||
text: "超管身份",
|
||||
value:
|
||||
val.merchantType == 1
|
||||
? "个人"
|
||||
: val.merchantType == 2
|
||||
? "个体"
|
||||
: "企业",
|
||||
},
|
||||
{ text: "营业执照图片", src: val.licenseImg },
|
||||
{ text: "营业执照编号", value: val.licenseNo },
|
||||
{ text: "用户名称", value: val.mchFullName },
|
||||
{ text: "法人身份证人像面照", src: val.idcard1Img },
|
||||
{ text: "法人身份证姓名", value: val.idcardName },
|
||||
{ text: "法人身份证号", value: val.idcardNo },
|
||||
{ text: "法人身份证国徽面照片", src: val.idcard2Img },
|
||||
{ text: "法人身份证起始有效期", value: val.idcardEffectBegin },
|
||||
{ text: "法人身份证结束有效期", value: val.idcardEffectEnd },
|
||||
],
|
||||
[
|
||||
{ title: "经营信息" },
|
||||
{ text: "经营类目", value: val.mccCodeText },
|
||||
{ text: "资质图片", src: val.industryQualificationImage },
|
||||
{ text: "商户简称", value: val.mchShortName },
|
||||
{ text: "商户联系人姓名", value: val.contactName },
|
||||
{ text: "商户联系人手机号", value: val.contactPhone },
|
||||
{ text: "商户经营省市县", value: val.areaCodeText },
|
||||
{ text: "商户详细地址", value: val.address },
|
||||
{ text: "门头照", src: val.storeOuterImg },
|
||||
{ text: "店内环境照", src: val.storeInnerImg },
|
||||
],
|
||||
[
|
||||
{ title: "结算账户" },
|
||||
{
|
||||
text: "结算类型",
|
||||
value:
|
||||
val.defaultSettleType == "alipayAccount" ? "支付宝账号" : "银行卡",
|
||||
},
|
||||
{ text: "结算支付宝账号", value: val.alipayLogonId },
|
||||
{
|
||||
text: "账户类型",
|
||||
value: val.settAccountType == "C" ? "对私" : "对公",
|
||||
},
|
||||
{ text: "银行开户名", value: val.settAccountName },
|
||||
{ text: "银行账号", value: val.settAccountNo },
|
||||
{ text: "银行名称", value: val.settAccountBankName },
|
||||
{ text: "银行简称", value: val.accountInstId },
|
||||
{ text: "开户行分支行所在地区", value: val.bankCodeText },
|
||||
{ text: "开户支行名称", value: val.settAccountBankBranchName },
|
||||
{ text: "授权函照", src: val.licenseAuthLetterImage },
|
||||
],
|
||||
[
|
||||
{ title: "签约信息站点资料" },
|
||||
{ text: "签约支付宝账号", value: val.bindingAlipayLogonId },
|
||||
{ text: "选择服务", value: val.bindingAlipayLogonId },
|
||||
{ text: "站点信息 ", type: "siteInfos", typevalue: val.siteInfos },
|
||||
],
|
||||
];
|
||||
}
|
||||
function sftpay(val) {
|
||||
return [
|
||||
[
|
||||
{ title: "主体信息" },
|
||||
{ text: "商户类型", value: val.merchantText },
|
||||
{ text: "营业执照照片", src: val.licenseImg },
|
||||
{ text: "营业执照编号", value: val.licenseNo },
|
||||
{ text: "商户名称全称", value: val.mchFullName },
|
||||
{ text: "法人身份证人像面照片", src: val.idcard1Img },
|
||||
{ text: "法人身份证国徽面照片", src: val.idcard2Img },
|
||||
{ text: "法人身份证姓名", value: val.idcardName },
|
||||
{ text: "法人身份证号", value: val.idcardNo },
|
||||
{ text: "法人身份证结束有效期", value: val.idcardEffectEnd },
|
||||
],
|
||||
ownerInfo(val), // 受益人卡片
|
||||
[
|
||||
{ title: "店铺信息" },
|
||||
{ text: "商户简称", value: val.mchShortName },
|
||||
{ text: "店铺名称", value: val.storeName },
|
||||
{ text: "店铺链接", value: val.storeUrl },
|
||||
{ text: "店铺二维码", src: val.storeUrl },
|
||||
{ text: "小程序AppID", value: val.miniProgramSubAppid },
|
||||
],
|
||||
[
|
||||
{ title: "超级管理员" },
|
||||
{
|
||||
text: "超管身份",
|
||||
value: val.contactType == "65" ? "经营者/法人" : "负责人",
|
||||
},
|
||||
{ text: "超管姓名", value: val.contactName },
|
||||
{ text: "超管身份证号码", value: val.contactIdNumber },
|
||||
{ text: "手机号", value: val.contactPhone },
|
||||
{ text: "邮箱", value: val.contactEmail },
|
||||
],
|
||||
[
|
||||
{ title: "结算账户" },
|
||||
{ text: "账户类型", value: val.settAccountText },
|
||||
{ text: "开户名称", value: val.settAccountName },
|
||||
{ text: "银行账号", value: val.settAccountNo },
|
||||
{ text: "开户行", value: val.accountBankNameShow },
|
||||
{ text: "开户行省市区", value: val.settAccountBankBranchAreaText },
|
||||
{ text: "支行所在地区", value: val.bankBranchAreaCodeText },
|
||||
{ text: "支行名称", value: val.settAccountBankBranchName },
|
||||
],
|
||||
];
|
||||
}
|
||||
function lklpay(val) {
|
||||
return [
|
||||
[
|
||||
{ title: "主体信息" },
|
||||
{ text: "商户类型", value: val.merchantText },
|
||||
{ text: "营业执照照片", src: val.licenseImg },
|
||||
{ text: "营业执照编号", value: val.licenseNo },
|
||||
{ text: "营业执照起始有效期", value: val.licenseEffectBegin },
|
||||
{ text: "营业执照有效期截止", value: val.licenseEffectEnd },
|
||||
{ text: "用户名称", value: val.mchFullName },
|
||||
{ text: "法人身份证人像面照", src: val.idcard1Img },
|
||||
{ text: "法人身份证姓名", value: val.idcardName },
|
||||
{ text: "法人身份证号", value: val.idcardNo },
|
||||
{ text: "法人身份证国徽面照片", src: val.idcard2Img },
|
||||
{ text: "法人身份证起始有效期", value: val.idcardEffectBegin },
|
||||
{ text: "法人身份证结束有效期", value: val.idcardEffectEnd },
|
||||
],
|
||||
[
|
||||
{ title: "经营信息" },
|
||||
{ text: "经营类目", value: val.mccText },
|
||||
{ text: "经营内容", value: val.merBusiText },
|
||||
{ text: "商户联系人姓名", value: val.contactName },
|
||||
{ text: "商户联系人手机号", value: val.contactPhone },
|
||||
{ text: "商户经营省市县", value: val.areaText },
|
||||
{ text: "商户经营地址", value: val.address },
|
||||
{ text: "门头照", src: val.storeOuterImg },
|
||||
{ text: "店内环境照", src: val.storeInnerImg },
|
||||
],
|
||||
[
|
||||
{ title: "结算账户" },
|
||||
{
|
||||
text: "账户类型",
|
||||
value: val.settAccountType == "C" ? "对私" : "对公",
|
||||
},
|
||||
{ text: "银行开户名", value: val.settAccountName },
|
||||
{ text: "银行账号", value: val.settAccountNo },
|
||||
// { text: "结算周期", value: val.settleText },
|
||||
{ text: "结算人身份证号", value: val.settAccountIdcardNo },
|
||||
{
|
||||
text: "结算人身份证结束有效期",
|
||||
value: val.settAccountIdcardEffectEnd,
|
||||
},
|
||||
// { text: "POS类型", value: val.posText },
|
||||
{ text: "其他材料", value: val.otherFile },
|
||||
],
|
||||
rate(val),
|
||||
];
|
||||
}
|
||||
function ysfpay(val) {
|
||||
return [
|
||||
[
|
||||
{ title: "基础项" },
|
||||
{
|
||||
text: "商户类型",
|
||||
value:
|
||||
val.merchantType == 1
|
||||
? "个人"
|
||||
: val.merchantType == 2
|
||||
? "个体工商户"
|
||||
: "企业",
|
||||
},
|
||||
{
|
||||
text: "机构类型",
|
||||
value:
|
||||
val.acqOrgType == "RYX"
|
||||
? "瑞银信"
|
||||
: val.acqOrgType == "ZF"
|
||||
? "中付"
|
||||
: "其他",
|
||||
},
|
||||
{ text: "营业执照照片", src: val.licenseImg },
|
||||
{ text: "营业执照编号", value: val.licenseNo },
|
||||
{ text: "营业执照有效期截止", value: val.licenseEffectEnd },
|
||||
{ text: "用户名称", value: val.mchFullName },
|
||||
{ text: "法人身份证人像面照", src: val.idcard1Img },
|
||||
{ text: "法人身份证姓名", value: val.idcardName },
|
||||
{ text: "法人身份证号", value: val.idcardNo },
|
||||
{ text: "法人身份证国徽面照片", src: val.idcard2Img },
|
||||
],
|
||||
[
|
||||
{ title: "经营信息" },
|
||||
{ text: "经营类目", value: val.mccText },
|
||||
{ text: "商户联系人姓名", value: val.contactName },
|
||||
{ text: "商户联系人手机号", value: val.contactPhone },
|
||||
{ text: "客服电话", value: val.serviceTel },
|
||||
{ text: "邮箱地址", value: val.contactEmail },
|
||||
{ text: "商户经营省市县", value: val.areaText },
|
||||
{ text: "商户经营地址", value: val.address },
|
||||
{ text: "门头照", src: val.storeOuterImg },
|
||||
{ text: "门店外景照", src: val.storeOuter2Img },
|
||||
{ text: "店内环境照", src: val.storeInnerImg },
|
||||
{ text: "收银台照", src: val.storeCashierImg },
|
||||
],
|
||||
[
|
||||
{ title: "结算账户" },
|
||||
{
|
||||
text: "账户类型",
|
||||
value:
|
||||
val.settleAccountType == 1
|
||||
? "对公"
|
||||
: val.settleAccountType == 2
|
||||
? "对私"
|
||||
: "授权人账户",
|
||||
},
|
||||
{ text: "结算周期", value: val.settleText },
|
||||
{ text: "银行卡正面照", src: val.settAccountLicenseImg },
|
||||
{ text: "银行开户名", value: val.settAccountName },
|
||||
{ text: "银行预留手机号", value: val.openBankReservePhone },
|
||||
{ text: "银行账号", value: val.settAccountNo },
|
||||
{ text: "银行名称", value: val.settAccountBankName },
|
||||
{ text: "开户支行名称", value: val.settAccountBankBranchName },
|
||||
{ text: "联行行号", value: val.openBankCode },
|
||||
{ text: "被授权人证件人像照", src: val.settAccountIdcard1Img },
|
||||
{ text: "被授权人证件国徽照", src: val.settAccountIdcard2Img },
|
||||
{ text: "被授权人身份证号", value: val.settAccountIdcardNo },
|
||||
{ text: "结算授权证书", src: val.applymentDetailInfo },
|
||||
{ text: "开户许可证", src: val.applymentDetailInfo },
|
||||
{ text: "商户收单协议", src: val.acquiringAgreementPhoto },
|
||||
{ text: "拓展资料", src: val.reserve1 },
|
||||
],
|
||||
rate(val),
|
||||
];
|
||||
}
|
||||
function fuioupay(val) {
|
||||
return [
|
||||
[
|
||||
{ title: "基础信息" },
|
||||
{
|
||||
text: "商户类型",
|
||||
value:
|
||||
val.merchantType == 1
|
||||
? "个人"
|
||||
: val.merchantType == 2
|
||||
? "个体工商户"
|
||||
: "企业",
|
||||
},
|
||||
{ text: "证件类型", value: val.licenseText },
|
||||
{ text: "营业执照照片", src: val.licenseImg },
|
||||
{ text: "商户名称全称", value: val.mchFullName },
|
||||
{
|
||||
text: val.licenseType == "A" ? "身份证号码" : "营业执照号",
|
||||
value: val.licenseNo,
|
||||
},
|
||||
{ text: "营业执照注册地址", value: val.licRegisAddr },
|
||||
{ text: "证件有效期开始时间", value: val.licenseEffectBegin },
|
||||
{ text: "营业执照有效期截止", value: val.licenseEffectEnd },
|
||||
{ text: "法人身份证人像面照", src: val.idcard1Img },
|
||||
{ text: "法人身份证姓名", value: val.idcardName },
|
||||
{ text: "法人身份证号", value: val.idcardNo },
|
||||
{ text: "法人身份证国徽面照片", src: val.idcard2Img },
|
||||
{ text: "法人身份证起始有效期", value: val.idcardEffectBegin },
|
||||
{ text: "法人身份证结束有效期", value: val.idcardEffectEnd },
|
||||
],
|
||||
[
|
||||
{ title: " 经营信息" },
|
||||
{ text: "经营类目", value: val.mccText },
|
||||
{ text: "商户简称", value: val.mchShortName },
|
||||
{ text: "客服电话", value: val.servicePhone },
|
||||
{ text: "商户经营地区县代码", value: val.areaText },
|
||||
{ text: "商户详细地址", value: val.address },
|
||||
{ text: "门头照", src: val.storeOuterImg },
|
||||
{ text: "店内环境照", src: val.storeInnerImg },
|
||||
{ text: "商户联系人姓名", value: val.contactName },
|
||||
{ text: "商户联系人身份证号", value: val.contactCertNo },
|
||||
{ text: "商户联系人电话", value: val.contactPhone },
|
||||
{ text: "商户联系人邮箱", value: val.contactEmail },
|
||||
],
|
||||
[
|
||||
{ title: "结算账户" },
|
||||
{ text: "账户类型", value: val.settAccountText },
|
||||
{ text: "结算银行卡照片", src: val.settAccountLicenseImg },
|
||||
{ text: "开户许可证照片", src: val.companyAccountLicenseImg },
|
||||
{ text: "开户名称", value: val.settAccountName },
|
||||
{ text: "银行账号", value: val.settAccountNo },
|
||||
{ text: "开户行", value: val.settAccountBankName },
|
||||
{ text: "联行号", value: val.interBankNo },
|
||||
{ text: "开户支行名称", value: val.settAccountBankBranchName },
|
||||
{ text: "法人入账标识", value: val.acntArtifText },
|
||||
{ text: "入账账户身份证人像面照片", src: val.settAccountIdcard1Img },
|
||||
{ text: "入账非法人证明照片", src: val.acntArtifImg },
|
||||
{ text: "入账证件号", value: val.acntCertifId },
|
||||
{ text: "入账证件到期日", value: val.acntCertifExpireDt },
|
||||
{ text: "清算类型", value: val.settleText },
|
||||
],
|
||||
[
|
||||
{ title: "补充资料" },
|
||||
{ text: "组织机构代码证照片", src: val.organizationImg },
|
||||
{ text: "税务登记证照片", src: val.taxRegistrationImg },
|
||||
{ text: "手持证件照片", src: val.handCertificateImg },
|
||||
{ text: "补充资料照片", src: val.additionImg },
|
||||
],
|
||||
];
|
||||
}
|
||||
function dgpay(val) {
|
||||
return [
|
||||
[
|
||||
{ title: "主体信息" },
|
||||
{ text: "商户类型", value: val.merchantType == 1 ? "个人" : "企业" },
|
||||
{ text: "营业执照", src: val.licenseImg },
|
||||
{ text: "商户简称", value: val.mchShortName },
|
||||
{ text: "营业执照编号", value: val.licenseNo },
|
||||
{ text: "营业执照起始有效期", value: val.licenseEffectBegin },
|
||||
{ text: "营业执照有效期截止", value: val.licenseEffectEnd },
|
||||
{ text: "用户名称", value: val.mchFullName },
|
||||
{ text: "管理员账号", value: val.loginUserName },
|
||||
{ text: "法人身份证人像面照片", src: val.idcard1Img },
|
||||
{ text: "法人身份证国徽面照片", src: val.idcard2Img },
|
||||
{ text: "法人身份证姓名", value: val.idcardName },
|
||||
{ text: "法人身份证号", value: val.idcardNo },
|
||||
{ text: "法人身份证起始有效期", value: val.idcardEffectBegin },
|
||||
{ text: "法人身份证结束有效期", value: val.idcardEffectEnd },
|
||||
],
|
||||
[
|
||||
{ title: "经营信息" },
|
||||
{ text: "经营类目", value: val.mccText },
|
||||
{ text: "经营类型", value: val.busiTypeText },
|
||||
{ text: "小票名称", value: val.receiptName },
|
||||
{ text: "公司类型", value: val.entText },
|
||||
{ text: "联系人姓名", value: val.contactName },
|
||||
{ text: "联系人手机号", value: val.contactPhone },
|
||||
{ text: "联系人邮箱", value: val.contactEmail },
|
||||
{ text: "经营省市县", value: val.areaText },
|
||||
{ text: "经营地址", value: val.address },
|
||||
{ text: "客服电话", value: val.servicePhone },
|
||||
],
|
||||
[
|
||||
{ title: "结算账户" },
|
||||
{
|
||||
text: "账户类型",
|
||||
value:
|
||||
val.settAccountType == "B"
|
||||
? "对公"
|
||||
: val.settAccountType == "C"
|
||||
? "对私"
|
||||
: "对私非法人",
|
||||
},
|
||||
{ text: "银行卡开户名", value: val.settAccountName },
|
||||
{ text: "结算卡正面", src: val.settAccountLicenseImg },
|
||||
{ text: "结算卡反面", src: val.settBankCardBackImg },
|
||||
{ text: "银行卡号", value: val.settAccountNo },
|
||||
{ text: "银行卡开户地", value: val.settAccountBankBranchAreaText },
|
||||
{ text: "银行编码", value: val.bankCode },
|
||||
{ text: "联行行号", value: val.branchCode },
|
||||
{ text: "结算人身份证人像面照片", src: val.settAccountIdcard1Img },
|
||||
{ text: "结算人身份证国徽面照片", src: val.settAccountIdcard2Img },
|
||||
{ text: "[持卡人]人身份证号", value: val.settAccountIdcardNo },
|
||||
{
|
||||
text: "[持卡人]身份证起始有效期",
|
||||
value: val.settAccountIdcardEffectBegin,
|
||||
},
|
||||
{
|
||||
text: "[持卡人]身份证结束有效期",
|
||||
value: val.settAccountIdcardEffectEnd,
|
||||
},
|
||||
{ text: "[持卡人]手机号", value: val.settAccountBindPhone },
|
||||
],
|
||||
[
|
||||
{ title: "材料信息" },
|
||||
{ text: "业务类型", value: val.cashText },
|
||||
{ text: "手续费类型", value: val.selectFeeText },
|
||||
{ text: "提现手续费(固定/元)", value: val.fixAmt },
|
||||
{ text: "费率(百分比/%)", value: val.feeRate },
|
||||
{ text: "结算周期", value: val.settleCycleText },
|
||||
{ text: "起结金额(元)", value: val.minAmt },
|
||||
{ text: "留存金额(元)", value: val.remainedAmt },
|
||||
{ text: "门头照", src: val.storeOuterImg },
|
||||
{ text: "店内环境照", src: val.storeInnerImg },
|
||||
{ text: "收银台照", src: val.storeCashierImg },
|
||||
{ text: "组织机构代码证照片", src: val.orgCodePic },
|
||||
{ text: "开户许可证照片", src: val.companyAccountLicenseImg },
|
||||
{ text: "税务登记证照片", src: val.taxRegPic },
|
||||
{ text: "商务协议", src: val.bankPic },
|
||||
{ text: "D1结算协议图片", value: val.settleAgreePic },
|
||||
{ text: "授权委托书", value: val.authEnturstPic },
|
||||
{ text: "支付宝商户经营类目", value: val.aliMccText },
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
function utmpay(val) {
|
||||
return [
|
||||
[
|
||||
{ title: "基础项" },
|
||||
{
|
||||
text: "商户类型",
|
||||
value: val.merchantType == "2" ? "个体工商户" : "企业",
|
||||
},
|
||||
{
|
||||
text: "执照类型",
|
||||
value:
|
||||
val.businessLicenseType == "00"
|
||||
? "统一社会信用代码证号(三证合一) "
|
||||
: obj.businessLicenseType == "01"
|
||||
? "营业执照(非三证合一)"
|
||||
: "其他",
|
||||
},
|
||||
{ text: "营业执照图片", src: val.licenseImg },
|
||||
{ text: "营业执照编号", value: val.licenseNo },
|
||||
{ text: "法人姓名", value: val.legalPerson },
|
||||
{ text: "用户名称", value: val.mchFullName },
|
||||
{ text: "商户简称", value: val.mchShortName },
|
||||
{ text: "法人身份证人像面照", src: val.idcard1Img },
|
||||
{ text: "法人身份证国徽面照", src: val.idcard2Img },
|
||||
{ text: "联系人身份证姓名", value: val.idcardName },
|
||||
{ text: "联系人身份证号", value: val.idcardNo },
|
||||
{ text: "商户联系人手机号", value: val.contactPhone },
|
||||
{ text: "商户联系人邮箱", value: val.contactEmail },
|
||||
],
|
||||
[
|
||||
{ title: "经营信息" },
|
||||
{ text: "经营类目", value: val.mccText },
|
||||
{ text: "商户地理位置省市县", value: val.areaText },
|
||||
{ text: "商户经营地址", value: val.address },
|
||||
{ text: "客服电话", value: val.customerPhone },
|
||||
{ text: "门头照", src: val.storeOuterImg },
|
||||
{ text: "店内环境照", src: val.storeInnerImg },
|
||||
],
|
||||
[
|
||||
{ title: "账户信息" },
|
||||
{ text: "账户类型", value: val.settAccountType == "C" ? "个人" : "企业" },
|
||||
{ text: "是否为负责人", value: val.isContactInfo == "1" ? "是" : "否" },
|
||||
{ text: "银行开户名", value: val.settAccountName },
|
||||
{ text: "持卡人身份证号", value: val.settAccountIdcardNo },
|
||||
{ text: "银行预留手机号", value: val.bankCardPhone },
|
||||
{ text: "银行卡照片", src: val.settAccountLicenseImg },
|
||||
{ text: "银行账号", value: val.settAccountNo },
|
||||
{ text: "开户行省市县", value: val.settAccountBankBranchAreaText },
|
||||
{ text: "开户行支行名称", value: val.settAccountBankBranchName },
|
||||
{ text: "开户银行ID", value: val.bankId },
|
||||
{ text: "银行账号", value: val.settAccountNo },
|
||||
{ text: "联行行号", value: val.contactLine },
|
||||
],
|
||||
[
|
||||
{ title: "其他信息" },
|
||||
{ text: "商户协议照片1", src: val.protocolPhoto1 },
|
||||
{ text: "商户协议照片2", src: val.protocolPhoto2 },
|
||||
{ text: "商户协议照片3", src: val.protocolPhoto3 },
|
||||
{ text: "商户协议照片4", src: val.protocolPhoto4 },
|
||||
{ text: "其他资料照片", src: val.otherDoc },
|
||||
{ text: "组织机构代码证照片", src: val.orgPhoto },
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
function yspay(val) {
|
||||
return [
|
||||
[
|
||||
{ title: "基础项" },
|
||||
{
|
||||
text: "商户类型",
|
||||
value:
|
||||
val.merchantType == 1
|
||||
? "小微商户"
|
||||
: val.merchantType == 2
|
||||
? "个体商户"
|
||||
: "企业",
|
||||
},
|
||||
{ text: "营业执照照片", src: val.licenseImg },
|
||||
{ text: "营业执照编号", value: val.licenseNo },
|
||||
{ text: "营业执照起始有效期", value: val.licenseEffectBegin },
|
||||
{ text: "营业执照有效期截止", value: val.licenseEffectEnd },
|
||||
{
|
||||
text: val.merchantType == 1 ? "用户名称" : "营业执照名称",
|
||||
value: val.mchFullName,
|
||||
},
|
||||
{ text: "商户简称", value: val.mchShortName },
|
||||
{ text: "法人身份证人像面照", src: val.idcard1Img },
|
||||
{ text: "法人身份证国徽面照片", src: val.idcard2Img },
|
||||
{ text: "法人手持身份证照片", src: val.idcardInHandImg },
|
||||
{ text: "法人身份证姓名", value: val.idcardName },
|
||||
{ text: "法人身份证号", value: val.idcardNo },
|
||||
{ text: "法人地址", value: val.idcardAddress },
|
||||
{ text: "法人电话", value: val.legalPersonPhone },
|
||||
{ text: "法人性别", value: val.crpGender == 0 ? "男" : "女" },
|
||||
{ text: "法人职业", value: val.crpProfessionText },
|
||||
{ text: "法人身份证起始有效期", value: val.idcardEffectBegin },
|
||||
{ text: "法人身份证结束有效期", value: val.idcardEffectEnd },
|
||||
],
|
||||
[
|
||||
{ title: "经营信息" },
|
||||
{ text: "经营类目(MCC)", value: val.mccText },
|
||||
{ text: "实际控制人姓名", value: val.actualManager },
|
||||
{ text: "是否为法人信息", value: val.isLegalInfo == 1 ? "是" : "否" },
|
||||
{ text: "商户联系人姓名", value: val.contactName },
|
||||
{ text: "商户联系人手机号", value: val.contactPhone },
|
||||
{ text: "商户联系人邮箱", value: val.contactEmail },
|
||||
{ text: "商户经营省市县", value: val.areaText },
|
||||
{ text: "商户经营地址", value: val.address },
|
||||
{ text: "门头照", src: val.storeOuterImg },
|
||||
{ text: "店内环境照", src: val.storeInnerImg },
|
||||
{ text: "收银台照", src: val.storeCashierImg },
|
||||
],
|
||||
[
|
||||
{ title: "结算账户" },
|
||||
{ text: "账户类型", value: val.settAccountType == "C" ? "对私" : "对公" },
|
||||
{
|
||||
text: "结算类型",
|
||||
value: val.settlementType == "00" ? "结算至内部" : "结算至银行卡",
|
||||
},
|
||||
{ text: "银行开户名", value: val.settAccountName },
|
||||
{ text: "开户许可证照片", value: val.companyAccountLicenseImg },
|
||||
{ text: "银行卡正面照", src: val.settAccountLicenseImg },
|
||||
{ text: "银行卡反面照", src: val.settAccountBankImg2 },
|
||||
{ text: "银行卡账号", value: val.settAccountNo },
|
||||
{ text: "开户行编号", value: val.bankType },
|
||||
{ text: "银行名称", value: val.settAccountBankName },
|
||||
{ text: "开户行行号", value: val.openAccBanktype },
|
||||
{ text: "开户行支行名称", value: val.settAccountBankBranchName },
|
||||
{ text: "开户行省市县", value: val.bankText },
|
||||
{ text: "银行预留手机号", value: val.bankMobile },
|
||||
{
|
||||
text: "是否法人结算",
|
||||
value: val.codeLegalPersonAcc == "0" ? "非法人" : "法人",
|
||||
},
|
||||
{ text: "结算人身份证人像面照片", src: val.settAccountIdcard1Img },
|
||||
{ text: "结算人身份证国徽面照片", src: val.settAccountIdcard2Img },
|
||||
{ text: "结算人姓名", value: val.unincorporatedName },
|
||||
{ text: "结算人身份证号", value: val.settAccountIdcardNo },
|
||||
{ text: "结算人证件有效期", value: val.settAccountIdcardEffectEnd },
|
||||
{ text: "结算人身份证地址", value: val.authAddress },
|
||||
],
|
||||
rate(val),
|
||||
];
|
||||
}
|
||||
function lklspay(val) {
|
||||
return [
|
||||
[
|
||||
{ title: "基础项" },
|
||||
{
|
||||
text: "商户类型",
|
||||
value:
|
||||
val.merchantType == 1
|
||||
? "小微商户"
|
||||
: val.merchantType == 3
|
||||
? "企业"
|
||||
: "'",
|
||||
},
|
||||
{
|
||||
text: "营业执照名称",
|
||||
value: val.merchantType == 1 ? "" : val.mchFullName,
|
||||
},
|
||||
{ text: "营业执照照片", src: val.licenseImg },
|
||||
{ text: "营业执照编号", value: val.licenseNo },
|
||||
{ text: "营业执照起始有效期", value: val.licenseEffectBegin },
|
||||
{ text: "营业执照有效期截止", value: val.licenseEffectEnd },
|
||||
{ text: "商户注册名称", value: val.merRegName },
|
||||
{ text: "商户经营名称", value: val.mchShortName },
|
||||
|
||||
{ text: "法人身份证人像面照", src: val.idcard1Img },
|
||||
{ text: "法人身份证国徽面照片", src: val.idcard2Img },
|
||||
{ text: "法人手持身份证照片", src: val.idcardInHandImg },
|
||||
{ text: "法人身份证姓名", value: val.idcardName },
|
||||
{ text: "法人身份证号", value: val.idcardNo },
|
||||
{ text: "法人身份证起始有效期", value: val.idcardEffectBegin },
|
||||
{ text: "法人身份证结束有效期", value: val.idcardEffectEnd },
|
||||
],
|
||||
[
|
||||
{ title: "经营信息" },
|
||||
{ text: "经营类目(MCC)", value: val.mccText },
|
||||
{ text: "商户联系人姓名", value: val.contactName },
|
||||
{ text: "商户联系人手机号", value: val.contactPhone },
|
||||
{ text: "商户联系人邮箱", value: val.contactEmail },
|
||||
{ text: "商户经营省市县", value: val.areaText },
|
||||
{ text: "门头照", src: val.storeOuterImg },
|
||||
{ text: "店内环境照", src: val.storeInnerImg },
|
||||
{ text: "收银台照", src: val.storeCashierImg },
|
||||
{ text: "经纬度地址", value: val.address },
|
||||
],
|
||||
[
|
||||
{ title: "结算账户" },
|
||||
{ text: "账户类型", value: val.settAccountType == "C" ? "对私" : "对公" },
|
||||
|
||||
{ text: "银行开户名", value: val.settAccountName },
|
||||
|
||||
{ text: "银行卡账号", value: val.settAccountNo },
|
||||
{ text: "支行地址", value: val.settAccountBankBranchAreaText },
|
||||
{ text: "银行名称", value: val.settAccountBankName },
|
||||
{ text: "联行行号", value: val.openningBankCode },
|
||||
{ text: "清算行号", value: val.clearingBankCode },
|
||||
|
||||
{
|
||||
text: "是否法人结算",
|
||||
value: val.codeLegalPersonAcc == "0" ? "非法人" : "法人",
|
||||
},
|
||||
{ text: "结算人身份证人像面照片", src: val.settAccountIdcard1Img },
|
||||
{ text: "结算人身份证国徽面照片", src: val.settAccountIdcard2Img },
|
||||
{ text: "结算人姓名", value: val.unincorporatedName },
|
||||
{ text: "结算人身份证号", value: val.settAccountIdcardNo },
|
||||
{ text: "结算人证件有效期", value: val.settAccountIdcardEffectEnd },
|
||||
{ text: "结算人身份证地址", value: val.authAddress },
|
||||
{ text: "其他材料", value: val.otherFile },
|
||||
],
|
||||
rate(val),
|
||||
];
|
||||
}
|
||||
// 费率
|
||||
function rate(val) {
|
||||
return ["fee", val.paywayFeeList ? val.paywayFeeList : ""];
|
||||
}
|
||||
|
||||
// 受益人卡片
|
||||
function ownerInfo(val) {
|
||||
return [
|
||||
"owner",
|
||||
val.companyBeneficiaryList && val.companyBeneficiaryList.length > 0
|
||||
? val.companyBeneficiaryList
|
||||
: "",
|
||||
];
|
||||
}
|
||||
|
||||
export default {
|
||||
shengpay,
|
||||
alipay,
|
||||
wxpay,
|
||||
sftpay,
|
||||
lklpay,
|
||||
ysfpay,
|
||||
fuioupay,
|
||||
dgpay,
|
||||
utmpay,
|
||||
yspay,
|
||||
lklspay,
|
||||
};
|
||||
428
jeepay-ui-uapp-agent/pageApply/components/defaultRate.vue
Normal file
428
jeepay-ui-uapp-agent/pageApply/components/defaultRate.vue
Normal file
@@ -0,0 +1,428 @@
|
||||
<template>
|
||||
<!-- 板块标题 -->
|
||||
<view class="rate-title" @click="rateHeightHandle" v-if="vdata.isShowRate">
|
||||
<view style="font-size: 28rpx; font-weight: 700;">{{ props.title }}</view>
|
||||
<text class="svg" :class="{trans:(rateheight != '0px')}"></text>
|
||||
</view>
|
||||
|
||||
<!-- 父元素 ,用于展开和收起 -->
|
||||
<view class="rate-list" ref="rateListRef" :style="{height: rateheight}" v-if="vdata.isShowRate">
|
||||
<!-- 一键全开全关 -->
|
||||
<JeePayForm :start="false" text="全部开启" backColor="#fff" border="bottom-border">
|
||||
<switch @change="allOnHandle" :checked="vdata.allOn" class="name" />
|
||||
</JeePayForm>
|
||||
|
||||
<view class="list-item" v-for="(item, index) in paramsList" :key="index">
|
||||
|
||||
<view class="title">
|
||||
<view class="name">{{ item.wayName }} {{ item.wayCode }}</view>
|
||||
<switch :checked="item.state == 1" @change="switchHandle($event, index)" class="name" />
|
||||
</view>
|
||||
|
||||
<!-- 是否为银联模式 有bug 待后台优化 -->
|
||||
<!-- <view class="title" v-if="item.feeType == 'LEVEL'">
|
||||
<view class="name">银联模式</view>
|
||||
<switch :checked="item.creditCardPaywayFee" @change="isUpMode($event, index)" class="name" />
|
||||
</view> -->
|
||||
|
||||
<view class="line" v-if="item.feeType == 'SINGLE'">单笔费率: <input type="text" v-model="item.feeRate" /> %</view>
|
||||
|
||||
<view v-if="item.feeType == 'LEVEL'">
|
||||
|
||||
<template v-if="item.creditCardPaywayFee">
|
||||
<view>借记卡(储蓄卡):</view>
|
||||
<view class="line">保底费用:<input type="text" v-model="item.minFee" /> 元,</view>
|
||||
<view class="line">封顶费用:<input type="text" v-model="item.maxFee" />元</view>
|
||||
|
||||
<template v-for="(levelItem, i) in item.levelList" :key="i">
|
||||
<view style="margin: 10rpx 0;"></view>
|
||||
{{ levelItem.minFee }} 元 ~ {{ levelItem.maxFee }}元,
|
||||
<view class="line">费率:<input type="text" v-model='levelItem.feeRate' /> %</view>
|
||||
</template>
|
||||
|
||||
<view style="margin-top: 20rpx">贷记卡(信用卡):</view>
|
||||
<view class="line">保底费用:<input type="text" v-model="item.creditCardPaywayFee.minFee" /> 元,</view>
|
||||
<view class="line">封顶费用:<input type="text" v-model="item.creditCardPaywayFee.maxFee" />元</view>
|
||||
|
||||
<template v-for="(levelItem, i) in item.creditCardPaywayFee.levelList" :key="i">
|
||||
<view style="margin: 10rpx 0;"></view>
|
||||
{{ levelItem.minFee }} 元 ~ {{ levelItem.maxFee }}元,
|
||||
<view class="line">费率:<input type="text" v-model='levelItem.feeRate' /> %</view>
|
||||
</template>
|
||||
|
||||
</template>
|
||||
|
||||
<template v-else>
|
||||
阶梯费率:
|
||||
<view class="line">保底费用:<input type="text" v-model="item.minFee" /> 元,</view>
|
||||
<view class="line">封顶费用:<input type="text" v-model="item.maxFee" />元</view>
|
||||
|
||||
<template v-for="(levelItem, i) in item.levelList" :key="i">
|
||||
<view style="margin: 10rpx 0;"></view>
|
||||
{{ levelItem.minFee }} 元 ~ {{ levelItem.maxFee }}元,
|
||||
<view class="line">费率:<input type="text" v-model='levelItem.feeRate' /> %</view>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, inject, reactive } from 'vue'
|
||||
import {$getRateConfigPayways, $getRateConfigSavedMapData} from '@/http/apiManager.js'
|
||||
import JeePayForm from "@/components/applyComponents/JeePayForm.vue"; // 通用左右结构布局
|
||||
|
||||
/*
|
||||
* 核心逻辑
|
||||
* 1. 从可配置接口中,获取费率列表 (payways 接口)
|
||||
* 2. 从已配置接口中,获取具体的费率值 (savedMapData接口)
|
||||
MCHRATE 进件时自己配置的费率,如果存在进件信息,费率值和状态以此为准
|
||||
READONLYPARENTDEFRATE 代理商给商户配置的费率,不存在进件信息以此为准,费率组件展示几条数据,以此为准
|
||||
READONLYPARENTAGENT 代理商自己配置的费率,只读即可,目前用不到
|
||||
* 3. 将上面两个接口中的相关字段存入一个新数组
|
||||
* 4. 切换与修改费率值时,都在修改这个新数组
|
||||
* 5. 点击提交按钮后,父组件调用子组件的方法,将该数组传递至父组件,提交前删除渠道名字段(wayName)
|
||||
* 6. 遍历该数组,将状态为1(开通)的费率对象保存至用于提交的参数数组中
|
||||
* 7. 获取费率时要整乘100,提交前费率要整除100
|
||||
* 8. 针对'支付宝产品和微信产品'的费率值,要确保所有的费率值一致
|
||||
* 9. 针对微信进件'渠道',选择参与费率活动时,才展开费率板块
|
||||
*/
|
||||
|
||||
const props = defineProps({
|
||||
// 是否对费率值进行校验 all:全部校验 separate:支付宝 微信分开校验 默认不校验
|
||||
// 目前只有微信 支付宝 和 富友会进行校验
|
||||
isCheck: {type: String, default: ''},
|
||||
title: {type: String, default: '签约产品费率'},
|
||||
isUtmpay: {type: Boolean, default: false },
|
||||
})
|
||||
|
||||
const emits = defineEmits(['autoPos'])
|
||||
|
||||
const channelInfo = inject('channelInfo')
|
||||
|
||||
let rateheight = ref('0px') // 费率板块的高度
|
||||
|
||||
// 如果是银联前置渠道 则rateheight的高度 变为auto 让其自动展开
|
||||
if (props.isUtmpay) rateheight.value = 'auto'
|
||||
|
||||
function rateHeightHandle () {
|
||||
rateheight.value == '0px' ? rateheight.value = 'auto' : rateheight.value = '0px'
|
||||
}
|
||||
|
||||
let rateListRef = ref(null)
|
||||
|
||||
let infoId = `_${channelInfo.mchNo}` // 用于传参
|
||||
|
||||
const vdata = reactive({
|
||||
isShowRate: true, // 是否展示签约产品费率列表,READONLYPARENTDEFRATE为空不展示
|
||||
allOn: false, // 是否全部展开
|
||||
})
|
||||
|
||||
// 存在进件信息时,存入以下信息
|
||||
if (channelInfo.applyId) {
|
||||
infoId = `${channelInfo.applyId}_${channelInfo.mchNo}`
|
||||
}
|
||||
|
||||
let paramsList = ref([]) // 用于传值
|
||||
|
||||
// 可配置费率列表
|
||||
$getRateConfigPayways(infoId,'agentApplyment', channelInfo.code).then( ({bizData}) => {
|
||||
|
||||
bizData.records.forEach(item => {
|
||||
|
||||
// 从可配置列表中,获取并保存以下信息
|
||||
paramsList.value.push({
|
||||
wayCode: item.wayCode, // 渠道code
|
||||
wayName: item.wayName // 渠道名
|
||||
})
|
||||
})
|
||||
|
||||
// 请求已配置费率列表
|
||||
return $getRateConfigSavedMapData(infoId, 'agentApplyment', channelInfo.code)
|
||||
}).then(({bizData}) => {
|
||||
|
||||
// 如果可配置列表中内容为空,则不可进选择费率
|
||||
if (Object.keys(paramsList.value).length === 0) {
|
||||
vdata.isShowRate = false
|
||||
return false
|
||||
}
|
||||
|
||||
// 从此处获取 费率类型 费率值等信息,以READONLYPARENTDEFRATE为准,READONLYPARENTAGENT 只读, 并且将其状态设置为 未开启 0
|
||||
Object.keys(bizData.READONLYPARENTAGENT).forEach(item => {
|
||||
bizData.READONLYPARENTAGENT[item].state = 0
|
||||
})
|
||||
|
||||
let rateConfigList = Object.assign(bizData.READONLYPARENTAGENT, bizData.READONLYPARENTDEFRATE)
|
||||
|
||||
// 组装数据(rateConfigList,paramsList), 用于渲染与传参
|
||||
Object.keys(rateConfigList).forEach(item => {
|
||||
for (let i = 0; i < paramsList.value.length; i++) {
|
||||
if (item === paramsList.value[i].wayCode) {
|
||||
Object.assign(paramsList.value[i], rateConfigList[item])
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
paramsList.value.forEach(item => {
|
||||
// 如果某一项没有 费率类型,则代表未匹配到费率, 未其添加默认值
|
||||
if (!item.feeType) {
|
||||
item['state'] = '0'
|
||||
item['feeType'] = 'SINGLE'
|
||||
item['feeRate'] = '0'
|
||||
}
|
||||
})
|
||||
|
||||
// 判断是否存在进件信息,若存在则用进件信息的费率再匹配一次
|
||||
if (channelInfo.applyId) {
|
||||
Object.keys(bizData.MCHRATE).forEach(item => {
|
||||
for (let i = 0; i < paramsList.value.length; i++) {
|
||||
if (item === paramsList.value[i].wayCode) {
|
||||
Object.assign(paramsList.value[i], bizData.MCHRATE[item])
|
||||
break
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 合并之后调用遍历数据方法,费率百分比值 乘100 金额分转元 除100
|
||||
rateEach(paramsList.value)
|
||||
|
||||
})
|
||||
|
||||
// 遍历费率的方法
|
||||
const rateEach = data => {
|
||||
|
||||
data.forEach(item => {
|
||||
// 如果某一项的state为0,则代表未全部开启费率
|
||||
if(item.state == 0) vdata.allOn = false
|
||||
|
||||
if (item['feeRate']) item['feeRate'] = (item['feeRate'] * 100).toFixed(2)
|
||||
if (item['levelList']) {
|
||||
for (let i = 0; i< item['levelList'].length; i++) {
|
||||
item['levelList'][i].feeRate = (item['levelList'][i].feeRate * 100).toFixed(2)
|
||||
}
|
||||
}
|
||||
if (item['creditCardPaywayFee']) {
|
||||
item['creditCardPaywayFee'].maxFee = (item['creditCardPaywayFee'].maxFee / 100).toFixed(2)
|
||||
item['creditCardPaywayFee'].minFee = (item['creditCardPaywayFee'].minFee / 100).toFixed(2)
|
||||
for (let i = 0; i< item['creditCardPaywayFee']['levelList'].length; i++) {
|
||||
item['creditCardPaywayFee']['levelList'][i].feeRate = (item['creditCardPaywayFee']['levelList'][i].feeRate * 100).toFixed(2)
|
||||
}
|
||||
}
|
||||
if (item['maxFee']) item['maxFee'] = (item['maxFee'] / 100).toFixed(2)
|
||||
if (item['minFee']) item['minFee'] = (item['minFee'] / 100).toFixed(2)
|
||||
})
|
||||
}
|
||||
|
||||
// 全部开启的开关
|
||||
const allOnHandle = e => {
|
||||
let flag = e.detail.value
|
||||
flag ? paramsList.value.forEach(item => item.state = 1)
|
||||
: paramsList.value.forEach(item => item.state = 0)
|
||||
}
|
||||
|
||||
// 切换事件
|
||||
const switchHandle = (e, index) => {
|
||||
let flag = e.detail.value
|
||||
flag ? paramsList.value[index].state = 1
|
||||
: paramsList.value[index].state = 0
|
||||
for (let i = 0; i < paramsList.value.length; i++) {
|
||||
if (paramsList.value[i].state == 0) {
|
||||
vdata.allOn = false
|
||||
} else {
|
||||
vdata.allOn = true
|
||||
}
|
||||
}
|
||||
|
||||
// 如果开启了 auto-pos 则向父组件传递信息
|
||||
if (paramsList.value[index].wayCode === 'AUTO_POS') {
|
||||
emits('autoPos', e.detail.value)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 银联模式切换事件
|
||||
const isUpMode = (e, index) => {
|
||||
// 打开银联模式
|
||||
if (e.detail.value) {
|
||||
paramsList.value[index].creditCardPaywayFee = {
|
||||
levelList: [{
|
||||
maxFee: 0,
|
||||
feeRate: 0,
|
||||
minFee: 0
|
||||
}, {
|
||||
maxFee: 0,
|
||||
feeRate: 0,
|
||||
minFee: 0
|
||||
}],
|
||||
maxFee: 0,
|
||||
minFee: 0
|
||||
}
|
||||
} else {
|
||||
delete paramsList.value[index].creditCardPaywayFee
|
||||
}
|
||||
}
|
||||
|
||||
// 父组件调用此方法,传值回去
|
||||
const getList = isTempData => {
|
||||
|
||||
// 深拷贝,因为要整除100,防止页面中的值受到影响
|
||||
let data = JSON.parse(JSON.stringify(paramsList.value)),
|
||||
rateList = [], // 传给父组件的费率信息
|
||||
errInfo = '' // 错误信息
|
||||
// 费率值校验,判断是否相等 全部判断模式 适用于 支付宝官方和微信官方
|
||||
if ((props.isCheck == 'all') && !isTempData) {
|
||||
for(let i = 0; i < data.length; i++) {
|
||||
if (data[i].state != 1) continue
|
||||
if (data[0].feeRate != data[i].feeRate) {
|
||||
errInfo = '设置了不同的费率值,请确保一致'
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 支付宝和微信分开 验证 适用于 富友进件
|
||||
if ((props.isCheck == 'separate') && !isTempData) {
|
||||
let wxList = []
|
||||
let aliList = []
|
||||
|
||||
data.forEach(item => {
|
||||
if ((item.wayCode.indexOf('ALI') != -1) && item.state == 1) aliList.push(item)
|
||||
if ((item.wayCode.indexOf('WX') != -1) && item.state == 1) wxList.push(item)
|
||||
})
|
||||
|
||||
for (let j = 0; j < aliList.length; j++) {
|
||||
if (aliList[0].feeRate != aliList[j].feeRate) {
|
||||
errInfo = '支付宝费率设置了不同的费率值,请确保一致'
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
for (let i = 0; i < wxList.length; i++) {
|
||||
if (wxList[0].feeRate != wxList[i].feeRate) {
|
||||
errInfo = '微信费率设置了不同的费率值,请确保一致'
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 如果存在保存信息往下不执行
|
||||
if (errInfo) return errInfo
|
||||
|
||||
// 要把费率都除100
|
||||
data.forEach(item => {
|
||||
delete item.wayName // 删除渠道名字
|
||||
|
||||
// 金额元转分
|
||||
if (item.feeType === 'SINGLE' ) {
|
||||
item.feeRate = (item.feeRate / 100).toFixed(4)
|
||||
} else {
|
||||
item.levelList.forEach(item => item.feeRate = (item.feeRate / 100).toFixed(4))
|
||||
item.maxFee *= 100
|
||||
item.minFee *= 100
|
||||
if (item.creditCardPaywayFee) {
|
||||
item.creditCardPaywayFee.levelList.forEach(item => item.feeRate = (item.feeRate / 100).toFixed(4))
|
||||
item.creditCardPaywayFee.maxFee *= 100
|
||||
item.creditCardPaywayFee.minFee *= 100
|
||||
}
|
||||
}
|
||||
|
||||
// 传值时只传已开通的
|
||||
if(item.state == 1) {
|
||||
rateList.push(item)
|
||||
}
|
||||
})
|
||||
|
||||
return rateList
|
||||
}
|
||||
|
||||
// 向父元素导出方法
|
||||
defineExpose({ getList })
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.rate-title {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 30rpx;
|
||||
color:#000;
|
||||
font-weight: 550;
|
||||
border-bottom: 1px solid #ebeef5;
|
||||
image {
|
||||
width: 28rpx;
|
||||
height: 28rpx;
|
||||
}
|
||||
.svg {
|
||||
font-family: uniicons;
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
color: rgb(187, 187, 187);
|
||||
font-size: 14px;
|
||||
&::before {
|
||||
content: "\e6b8";
|
||||
}
|
||||
}
|
||||
}
|
||||
.trans{
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
.rate-list {
|
||||
// height: 600rpx;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.list-item {
|
||||
border-bottom: 1px solid #ebeef5;
|
||||
padding: 35rpx 30rpx;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
font-size: 28rpx;
|
||||
|
||||
input {
|
||||
border: 1px solid #ebeef5;
|
||||
display: inline-block;
|
||||
width: 180rpx;
|
||||
margin: 0 10rpx;
|
||||
padding: 0 10rpx;
|
||||
}
|
||||
|
||||
.title {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
// 不存咋费率值时设置的属性
|
||||
.none {
|
||||
padding: 0 !important;
|
||||
border: none !important;
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.line {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.submit{
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin: 0 auto ;
|
||||
width: 380rpx;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
border-radius: 10rpx;
|
||||
background: #3981FF;
|
||||
font-weight: 500;
|
||||
font-size: 30rpx;
|
||||
color: #fff;
|
||||
}
|
||||
</style>
|
||||
227
jeepay-ui-uapp-agent/pageApply/components/ownerCard.vue
Normal file
227
jeepay-ui-uapp-agent/pageApply/components/ownerCard.vue
Normal file
@@ -0,0 +1,227 @@
|
||||
<template>
|
||||
<!-- 折叠面版存在BUG,所以收益人卡片也采取了 手写的折叠面板 所用样式和 费率板块一致 -->
|
||||
<view class="rate-title" @click="rateHeightHandle">
|
||||
<view style="font-size: 28rpx; font-weight: 700;">受益人卡片</view>
|
||||
<text class="svg" :class="{trans:(rateheight != '0px')}"></text>
|
||||
</view>
|
||||
|
||||
<view class="rate-list" ref="rateListRef" :style="{height: rateheight}">
|
||||
|
||||
<view @click="addOwner" class="add-owner">新增企业受益人</view>
|
||||
|
||||
<view class="owner-box" v-for="(item, index) in vdata.companyBeneficiaryList" :key="index">
|
||||
<view class="owner-title">
|
||||
<view>企业受益人信息{{ index + 1 }}</view>
|
||||
<view>
|
||||
<view v-if="props.legalBtn" @click="emits('setLegalInfo', index)" class="owner-del" style="margin-bottom: 20rpx;">将法人设置为受益人</view>
|
||||
<view @click="delOwnerCard(index)" class="owner-del">删除该受益人</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<JeePayForm text="受益人身份证人像面照" backColor="#fff" :start="!props.isOwner">
|
||||
<JeepayUpLoad ocrFlag="idCard" :imgUrl="vdata.companyBeneficiaryList[index].idcard1Img" @uploadSuccess="uploadSucOwner($event, index, 'idcard1Img')" @clear="clearOwner('idcard1Img', index)" />
|
||||
</JeePayForm>
|
||||
|
||||
<JeePayForm text="受益人身份证国徽面照" backColor="#fff" :start="!props.isOwner">
|
||||
<JeepayUpLoad ocrFlag="idCard" :imgUrl="vdata.companyBeneficiaryList[index].idcard2Img" @uploadSuccess="uploadSucOwner($event, index, 'idcard2Img')" @clear="clearOwner('idcard2Img', index)" />
|
||||
</JeePayForm>
|
||||
|
||||
<JeePayForm text="受益人身份证姓名" v-model:value="vdata.companyBeneficiaryList[index].idcardName" backColor="#fff" :start="!props.isOwner" />
|
||||
<JeePayForm text="受益人身份证号" v-model:value="vdata.companyBeneficiaryList[index].idcardNo" backColor="#fff" :start="!props.isOwner" />
|
||||
|
||||
<JeePayForm text="受益人身份证起始有效期" backColor="#fff" :start="!props.isOwner">
|
||||
<termOfValidity :defaultDate="vdata.companyBeneficiaryList[index].idcardEffectBegin" @publicSelect="publicSelect($event, 'idcardEffectBegin')" :isEnd="false" />
|
||||
</JeePayForm>
|
||||
|
||||
<JeePayForm text="受益人身份证结束有效期" backColor="#fff" :start="!props.isOwner">
|
||||
<termOfValidity :defaultDate="vdata.companyBeneficiaryList[index].idcardEffectEnd" @publicSelect="publicSelect($event, 'idcardEffectEnd')" />
|
||||
</JeePayForm>
|
||||
|
||||
<JeePayForm text="受益人身份证居住地址" backColor="#fff" v-model:value="vdata.companyBeneficiaryList[index].idcardAddress" :start="!props.isOwner" />
|
||||
|
||||
</view>
|
||||
|
||||
</view>
|
||||
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
import { ref, reactive, watch, onMounted, toRaw, nextTick } from 'vue'
|
||||
import JeepayUpLoad from '@/components/JeepayUpLoad/JeepayUpLoad.vue' // 图片上传
|
||||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import JeePayForm from '@/components/applyComponents/JeePayForm.vue' // 通用左右结构布局
|
||||
import termOfValidity from '@/components/applyComponents/termOfValidity.vue' // 选择证件有效期
|
||||
|
||||
const props = defineProps({
|
||||
isOwner: { type: Boolean, default: false }, // 法人是否为收益人,是收益人可以删除最后一个卡片,不是则不能删除最后一个
|
||||
legalBtn: { type: Boolean, default: false }, // 法人设置为收益人按钮
|
||||
isShengft: { type: Boolean, default: false }, // 盛付通页面 会自动生成一个卡片
|
||||
})
|
||||
|
||||
const emits = defineEmits(['setLegalInfo'])
|
||||
|
||||
let rateheight = ref('0px') // 费率板块的高度
|
||||
function rateHeightHandle () {
|
||||
rateheight.value == '0px' ? rateheight.value = 'auto' : rateheight.value = '0px'
|
||||
}
|
||||
|
||||
const vdata = reactive({
|
||||
companyBeneficiaryList: []
|
||||
})
|
||||
|
||||
// 盛付通进件 受益人信息必填一项
|
||||
onMounted(() => {
|
||||
if (props.isShengft && vdata.companyBeneficiaryList.length == 0) {
|
||||
addOwner()
|
||||
}
|
||||
})
|
||||
|
||||
// 信息回显
|
||||
const ownerInfoBack = info => Object.assign(vdata.companyBeneficiaryList, info)
|
||||
|
||||
// 新增受益人卡片
|
||||
const addOwner = () => {
|
||||
nextTick(() => {
|
||||
// 法人是受益人,最多数组最多3项, 不是,数组最多4项
|
||||
let len = vdata.companyBeneficiaryList.length
|
||||
if (props.owner && len >= 3) {
|
||||
return uni.showToast({ title: '最多新增三个企业受益人', icon: 'none' })
|
||||
}
|
||||
if (!props.owner && len >= 4) {
|
||||
return uni.showToast({ title: '最多新增四个企业受益人', icon: 'none' })
|
||||
}
|
||||
vdata.companyBeneficiaryList.push({
|
||||
idcard1Img: '',
|
||||
idcardNo: '',
|
||||
idcardName: '',
|
||||
idcardAddress: '',
|
||||
idcard2Img: '',
|
||||
idcardEffectEnd: '',
|
||||
idcardEffectBegin: '',
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
// 删除卡片
|
||||
const delOwnerCard = i => {
|
||||
if (vdata.companyBeneficiaryList.length == 1 && !props.isOwner) {
|
||||
return uni.showToast({ title: '最后一项不可删除', icon: 'none' })
|
||||
}
|
||||
vdata.companyBeneficiaryList.splice(i, 1)
|
||||
}
|
||||
|
||||
// 受益人身份证图片上传成功
|
||||
const uploadSucOwner = (res, index, name) => {
|
||||
vdata.companyBeneficiaryList[index][name] = res.data // 图片回显
|
||||
// ocr信息回显
|
||||
Object.assign(vdata.companyBeneficiaryList[index], res.ocrInfo)
|
||||
}
|
||||
|
||||
// 删除收益人图片
|
||||
const clearOwner = (name, index) => vdata.companyBeneficiaryList[index][name] = ''
|
||||
|
||||
// 父组件进件时,会调用该方法获取参数
|
||||
const ownerInfo = () => toRaw(vdata.companyBeneficiaryList)
|
||||
|
||||
defineExpose({ ownerInfo, ownerInfoBack })
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
// 新建受益人卡片
|
||||
.add-owner {
|
||||
width: 320rpx;
|
||||
height: 60rpx;
|
||||
line-height: 60rpx;
|
||||
border-radius: 0.3125rem;
|
||||
text-align: center;
|
||||
background: #0041c4;
|
||||
font-weight: 500;
|
||||
font-size: 0.9375rem;
|
||||
color: #fff;
|
||||
margin: 20rpx auto;
|
||||
}
|
||||
.owner-box {
|
||||
border: 1rpx solid #e8e8e8;
|
||||
margin: 20rpx;
|
||||
padding: 30rpx 30rpx 3rpx 30rpx;
|
||||
box-sizing: border-box;
|
||||
border-radius: 10rpx;
|
||||
.item {
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
}
|
||||
.owner-title {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
.owner-del {
|
||||
border-radius: 0.3125rem;
|
||||
background: #0041c4;
|
||||
font-weight: 500;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
padding: 8rpx 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.rate-title {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 30rpx;
|
||||
color:#000;
|
||||
font-weight: 550;
|
||||
border-bottom: 1px solid #ebeef5;
|
||||
image {
|
||||
width: 28rpx;
|
||||
height: 28rpx;
|
||||
}
|
||||
.svg {
|
||||
font-family: uniicons;
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
color: rgb(187, 187, 187);
|
||||
font-size: 14px;
|
||||
&::before {
|
||||
content: "\e6b8";
|
||||
}
|
||||
}
|
||||
}
|
||||
.trans{
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
.rate-list {
|
||||
// height: 600rpx;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.list-item {
|
||||
border-bottom: 1px solid #ebeef5;
|
||||
padding: 35rpx 30rpx;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
font-size: 28rpx;
|
||||
|
||||
input {
|
||||
border: 1px solid #ebeef5;
|
||||
display: inline-block;
|
||||
width: 180rpx;
|
||||
margin: 0 10rpx;
|
||||
padding: 0 10rpx;
|
||||
}
|
||||
|
||||
.title {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
519
jeepay-ui-uapp-agent/pageApply/components/readOnlyInfo.vue
Normal file
519
jeepay-ui-uapp-agent/pageApply/components/readOnlyInfo.vue
Normal file
@@ -0,0 +1,519 @@
|
||||
<template>
|
||||
<view class="read-page">
|
||||
<!-- 本页面为只读信息页面 -->
|
||||
<!-- 双重for循环 -->
|
||||
<view class="box" :class="{ fold: isFold }" ref="boxRef">
|
||||
<view v-for="(item, index) in applyInfoList" :key="index" class="list">
|
||||
<view v-for="(val, valIndex) in item" :key="valIndex">
|
||||
<!-- 只有标题 -->
|
||||
<view v-if="val.title" class="title">{{ val.title }}</view>
|
||||
|
||||
<!-- 文字回显 -->
|
||||
<view v-if="val.value" class="item-text">
|
||||
<text class="grey">{{ val.text }}</text>
|
||||
<view style="white-space: pre-wrap; word-wrap: break-word">{{
|
||||
val.value
|
||||
}}</view>
|
||||
</view>
|
||||
|
||||
<!-- 图片回显 -->
|
||||
<view v-if="val.src" class="item-img">
|
||||
<text class="grey">{{ val.text }}</text>
|
||||
<image
|
||||
:src="val.src"
|
||||
mode="aspectFit"
|
||||
@click="openBackImg(val.src)"
|
||||
></image>
|
||||
</view>
|
||||
|
||||
<!-- 支付通站点回显 -->
|
||||
<template v-if="val.type == 'siteInfos'">
|
||||
<view v-for="(siteTtem, siteIndex) in val.typevalue" :key="siteIndex">
|
||||
<view class="item-img"
|
||||
><text class="grey">站点类型</text>
|
||||
<text> {{ siteTypeHandle(siteTtem.siteType) }}</text></view
|
||||
>
|
||||
<view class="item-img"
|
||||
><text class="grey">站点地址</text>
|
||||
<text> {{ siteTtem.siteUrl }}</text></view
|
||||
>
|
||||
<view class="item-img"
|
||||
><text class="grey">站点名称</text>
|
||||
<text> {{ siteTtem.siteName }}</text></view
|
||||
>
|
||||
<view class="item-img"
|
||||
><text class="grey">站点账号</text>
|
||||
<text> {{ siteTtem.account }}</text></view
|
||||
>
|
||||
<view class="item-img"
|
||||
><text class="grey">站点密码</text>
|
||||
<text> {{ siteTtem.password }}</text></view
|
||||
>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<!-- 受益人卡片 -->
|
||||
<view v-if="val == 'owner' && val[0].idcard1Img" class="title"
|
||||
>受益人信息</view
|
||||
>
|
||||
<view v-if="Array.isArray(val) && val[0].idcard1Img">
|
||||
<view v-for="(ownerItem, ownerIndex) in val" :key="ownerIndex">
|
||||
<view class="item-img margin-b-20">
|
||||
<text class="grey">受益人身份证人像面照</text>
|
||||
<image
|
||||
:src="ownerItem.idcard1Img"
|
||||
mode="aspectFit"
|
||||
@click="openBackImg(ownerItem.idcard1Img)"
|
||||
/>
|
||||
</view>
|
||||
<view class="item-img margin-b-20">
|
||||
<text class="grey">受益人身份证国徽面照</text>
|
||||
<image
|
||||
:src="ownerItem.idcard2Img"
|
||||
mode="aspectFit"
|
||||
@click="openBackImg(ownerItem.idcard2Img)"
|
||||
/>
|
||||
</view>
|
||||
<view class="item-img margin-b-20">
|
||||
<text class="grey">受益人身份证姓名</text>
|
||||
<text>{{ ownerItem.idcardName }}</text>
|
||||
</view>
|
||||
<view class="item-img margin-b-20">
|
||||
<text class="grey">受益人身份证号</text>
|
||||
<text>{{ ownerItem.idcardNo }}</text>
|
||||
</view>
|
||||
<view class="item-img margin-b-20">
|
||||
<text class="grey">受益人身份证起始有效期</text>
|
||||
<text>{{ ownerItem.idcardEffectBegin }}</text>
|
||||
</view>
|
||||
<view class="item-img margin-b-20">
|
||||
<text class="grey">受益人身份证结束有效期</text>
|
||||
<text>{{ ownerItem.idcardEffectEnd }}</text>
|
||||
</view>
|
||||
<view class="item-img margin-b-20">
|
||||
<text class="grey">受益人身份证居住地址</text>
|
||||
<text>{{ ownerItem.idcardAddress }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 只有标题 -->
|
||||
<view v-if="val == 'fee'" class="title">费率信息</view>
|
||||
<!-- 费率回显 -->
|
||||
<view v-if="Array.isArray(val) && val[0].wayCode">
|
||||
<view
|
||||
v-for="(feeItem, index) in val"
|
||||
:key="index"
|
||||
class="margin-30"
|
||||
>
|
||||
<view class="name grey">{{ feeItem.wayCode }}</view>
|
||||
<view v-if="feeItem.feeType == 'SINGLE'" class="item-text">
|
||||
<text class="grey">单笔费率:</text>
|
||||
<text>{{ (feeItem.feeRate * 100).toFixed(2) }} %</text>
|
||||
</view>
|
||||
|
||||
<view v-if="feeItem.feeType == 'LEVEL'">
|
||||
<!-- 银联模式的阶梯费率 -->
|
||||
<template v-if="feeItem.creditCardPaywayFee">
|
||||
<view
|
||||
>借记卡(储蓄卡): [ 保底费用:{{
|
||||
feeItem.minFee / 100
|
||||
}}
|
||||
元, 封顶费用:{{ feeItem.maxFee / 100 }} 元 ]</view
|
||||
>
|
||||
<template
|
||||
v-for="(levelItem, i) in feeItem.levelList"
|
||||
:key="i"
|
||||
>
|
||||
<view style="margin: 10rpx 0"></view>
|
||||
{{ levelItem.minFee }} 元 ~ {{ levelItem.maxFee }}元,
|
||||
费率: {{ (levelItem.feeRate * 100).toFixed(2) }}%
|
||||
</template>
|
||||
|
||||
<view style="margin-top: 20rpx"
|
||||
>贷记卡(信用卡): [ 保底费用:{{
|
||||
feeItem.creditCardPaywayFee.minFee / 100
|
||||
}}
|
||||
元, 封顶费用:{{
|
||||
feeItem.creditCardPaywayFee.maxFee / 100
|
||||
}}
|
||||
元 ]</view
|
||||
>
|
||||
<template
|
||||
v-for="(levelItem, i) in feeItem.creditCardPaywayFee
|
||||
.levelList"
|
||||
:key="i"
|
||||
>
|
||||
<view style="margin: 10rpx 0"></view>
|
||||
{{ levelItem.minFee }} 元 ~ {{ levelItem.maxFee }}元,
|
||||
费率: {{ (levelItem.feeRate * 100).toFixed(2) }}%
|
||||
</template>
|
||||
</template>
|
||||
|
||||
<!-- 普通模式的阶梯费率 -->
|
||||
<template v-else>
|
||||
阶梯费率: [ 保底费用:{{ feeItem.minFee / 100 }} 元,
|
||||
封顶费用:{{ feeItem.maxFee / 100 }} 元 ]
|
||||
<template
|
||||
v-for="(levelItem, i) in feeItem.levelList"
|
||||
:key="i"
|
||||
>
|
||||
<view style="margin: 10rpx 0"></view>
|
||||
{{ levelItem.minFee }} 元 ~ {{ levelItem.maxFee }}元,
|
||||
费率: {{ (levelItem.feeRate * 100).toFixed(2) }}%
|
||||
</template>
|
||||
</template>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- POS信息回显 -->
|
||||
<template v-if="val.type == 'posInfo'">
|
||||
<view v-for="(posItem, posIndex) in val.typevalue" :key="posIndex">
|
||||
<view class="item-img margin-b-20"
|
||||
><text class="grey">pos安装地址</text>
|
||||
<text> {{ posItem.areaText }}</text></view
|
||||
>
|
||||
<view class="item-img margin-b-20"
|
||||
><text class="grey">具体位置</text>
|
||||
<text> {{ posItem.terminalDetailAddress }}</text></view
|
||||
>
|
||||
<view class="item-img margin-b-20"
|
||||
><text class="grey">小票名称</text>
|
||||
<text> {{ posItem.ticketName }}</text></view
|
||||
>
|
||||
<view class="item-img margin-b-20">
|
||||
<text class="grey">终端数量</text>
|
||||
<text> {{ posItem.terminalCount }}</text>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
||||
<!-- 挑高用 -->
|
||||
<view v-if="!isFold" style="height: 70rpx"></view>
|
||||
<!-- 上下拉 -->
|
||||
<view class="btn-box">
|
||||
<!-- <view v-if="isFold" class="btn-back"></view> -->
|
||||
<view v-if="false" class="btn-back"></view>
|
||||
<view class="btn" @click="changeHeight">
|
||||
{{ isFold ? "查看全部" : "收起" }}
|
||||
<image
|
||||
v-if="isFold"
|
||||
src="../../static/img/jt-btm.svg"
|
||||
style="transform: rotate(180deg)"
|
||||
mode=""
|
||||
></image>
|
||||
<image
|
||||
v-if="!isFold"
|
||||
src="../../static/img/jt-btm.svg"
|
||||
mode=""
|
||||
></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 支付宝待签约二维码 -->
|
||||
<view
|
||||
class="box wx-open"
|
||||
v-if="channelInfo.state == 5 && channelInfo.applyName == 'alipay'"
|
||||
>
|
||||
<view class="down-img">
|
||||
<image :src="vdata.contractImg" mode="aspectFit"></image>
|
||||
<view style="margin-top: 30rpx"
|
||||
>请使用支付宝扫描二维码,根据页面指引完成签约</view
|
||||
>
|
||||
<view class="down" @click="down(vdata.contractImg)">保存至相册</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 微信待签约二维码 -->
|
||||
<view
|
||||
class="box wx-open"
|
||||
v-if="channelInfo.state == 5 && channelInfo.applyName == 'wxpay'"
|
||||
>
|
||||
<view class="down-img">
|
||||
<image :src="channelInfo.img" mode="aspectFit"></image>
|
||||
<view style="margin-top: 30rpx"
|
||||
>请超级管理员使用微信扫描二维码,根据页面指引完成签约</view
|
||||
>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 收付通待签约二维码 -->
|
||||
<view
|
||||
class="box wx-open"
|
||||
v-if="channelInfo.state == 5 && channelInfo.applyName == 'sftpay'"
|
||||
>
|
||||
<view class="down-img">
|
||||
<image :src="vdata.contractImg" mode="aspectFit"></image>
|
||||
<view style="margin-top: 30rpx"
|
||||
>请超级管理员使用微信扫描二维码,根据页面指引完成签约</view
|
||||
>
|
||||
<view class="down" @click="down(vdata.contractImg)">保存至相册</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 图片预览(手写非原生) -->
|
||||
<enlarge
|
||||
v-if="isPreview"
|
||||
:imgs="imgBackUrl"
|
||||
@enlargeClose="enlargeClose"
|
||||
:changeIsShow="false"
|
||||
/>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import qrcode from "@/util/qrcode.js";
|
||||
import { ref, onMounted, reactive, inject } from "vue";
|
||||
import {
|
||||
$elecContractGenerate,
|
||||
$elecContractSign,
|
||||
$fuiouUpload,
|
||||
} from "@/http/apiManager.js";
|
||||
import { saveHeadImgFile } from "@/util/saveImg.js"; // 用于base64图片下载
|
||||
import enlarge from "@/components/JeepayUpLoad/enlarge.vue"; // 图片预览
|
||||
import useBackPress from "@/hooks/useBackPress.js"; // 返回阻断函数
|
||||
import JeepayUpLoad from "@/components/JeepayUpLoad/JeepayUpLoad.vue"; // 图片上传
|
||||
import echo from "./dataEcho/dataEcho";
|
||||
|
||||
const channelInfo = inject("channelInfo");
|
||||
|
||||
const vdata = reactive({
|
||||
contractImg: "", // 签约图片
|
||||
});
|
||||
|
||||
let applyInfoList = ref([]); // 信息列表
|
||||
|
||||
// 高度切换
|
||||
let isFold = ref(true);
|
||||
const changeHeight = () => {
|
||||
isFold.value = !isFold.value;
|
||||
};
|
||||
|
||||
let isPreview = ref(false); // 图片预览是否展示
|
||||
let imgBackUrl = ref(""); // 图片预览大图
|
||||
const openBackImg = (url) => {
|
||||
isPreview.value = true;
|
||||
imgBackUrl.value = url;
|
||||
// #ifdef H5 || APP-PLUS
|
||||
active();
|
||||
// #endif
|
||||
};
|
||||
// 关闭图片预览
|
||||
const enlargeClose = () => {
|
||||
isPreview.value = false;
|
||||
// #ifdef H5 || APP-PLUS
|
||||
inactive();
|
||||
// #endif
|
||||
};
|
||||
const { active, inactive } = useBackPress(enlargeClose); // onBackPress 阻断返回
|
||||
|
||||
// 在这里处理不同进件渠道的签约
|
||||
onMounted(() => {
|
||||
if (channelInfo.applyName == "alipay") {
|
||||
vdata.contractImg = drawQRcode(channelInfo.img); // 生成支付宝签约图片
|
||||
}
|
||||
});
|
||||
// 保存待签约图片
|
||||
const down = (url) => {
|
||||
// #ifdef APP-PLUS
|
||||
saveHeadImgFile(url, 80)
|
||||
.then((success) => {
|
||||
uni.showToast({ title: "保存成功", icon: "none" });
|
||||
})
|
||||
.catch((err) => {
|
||||
uni.showToast({ title: "保存失败,请重试", icon: "none" });
|
||||
});
|
||||
// #endif
|
||||
//#ifdef MP-WEIXIN
|
||||
var aa = wx.getFileSystemManager();
|
||||
aa.writeFile({
|
||||
filePath: wx.env.USER_DATA_PATH + "/ali.png",
|
||||
data: url.slice(22),
|
||||
encoding: "base64",
|
||||
success: (res) => {
|
||||
wx.saveImageToPhotosAlbum({
|
||||
filePath: wx.env.USER_DATA_PATH + "/ali.png",
|
||||
success: function (res) {
|
||||
wx.showToast({ title: "保存成功" });
|
||||
},
|
||||
});
|
||||
},
|
||||
});
|
||||
//#endif
|
||||
};
|
||||
|
||||
// 制作图片
|
||||
const drawQRcode = (url) => {
|
||||
return qrcode.drawImg(url, {
|
||||
typeNumber: 4, // 密度
|
||||
errorCorrectLevel: "Q", // 纠错等级
|
||||
size: 175, // 白色边框
|
||||
});
|
||||
};
|
||||
|
||||
// 用于甄选数据
|
||||
const getApplyInof = (val) => {
|
||||
// vdata.applyDetailInfo = val;
|
||||
applyInfoList.value = echo[channelInfo.code](val);
|
||||
};
|
||||
|
||||
// 转换站点类型
|
||||
const siteTypeHandle = (val) => {
|
||||
let text;
|
||||
switch (val) {
|
||||
case "01":
|
||||
text = "微信";
|
||||
break;
|
||||
case "02":
|
||||
text = "APP";
|
||||
break;
|
||||
case "03":
|
||||
text = "服务窗";
|
||||
break;
|
||||
case "04":
|
||||
text = "公众号";
|
||||
break;
|
||||
case "05":
|
||||
text = "其他";
|
||||
break;
|
||||
case "06":
|
||||
text = "支付宝小程序";
|
||||
break;
|
||||
}
|
||||
return text;
|
||||
};
|
||||
|
||||
defineExpose({ getApplyInof });
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.page-only {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.box {
|
||||
height: auto;
|
||||
transition: 0.3s;
|
||||
position: relative;
|
||||
border-radius: 20rpx;
|
||||
background: #fff;
|
||||
padding: 0rpx 40rpx;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.list {
|
||||
& > view {
|
||||
margin: 30rpx 0;
|
||||
}
|
||||
.title {
|
||||
font-weight: 600;
|
||||
color: #000;
|
||||
}
|
||||
.item-text {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.item-img {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
justify-content: space-between;
|
||||
image {
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 微信签约
|
||||
.wx-open {
|
||||
margin-top: 30rpx;
|
||||
padding: 40rpx;
|
||||
.first-title {
|
||||
font-size: 28rpx;
|
||||
color: #18191d;
|
||||
font-weight: bold;
|
||||
}
|
||||
.tips {
|
||||
font-size: 25rpx;
|
||||
color: #7e7e80;
|
||||
margin: 20rpx 0 40rpx;
|
||||
}
|
||||
.state {
|
||||
margin-bottom: 30rpx;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.second-title {
|
||||
font-size: 27rpx;
|
||||
color: #000;
|
||||
}
|
||||
.wx-img {
|
||||
width: 300rpx;
|
||||
height: 300rpx;
|
||||
margin: 30rpx 0 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
// 灰色文字/
|
||||
.grey {
|
||||
white-space: nowrap;
|
||||
color: #a3a3a5;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
// 下拉按钮
|
||||
.btn {
|
||||
height: 100rpx;
|
||||
color: #3981ff;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background-color: #fff;
|
||||
image {
|
||||
width: 20rpx;
|
||||
height: 20rpx;
|
||||
margin-left: 20rpx;
|
||||
}
|
||||
}
|
||||
.btn-back {
|
||||
background: linear-gradient(transparent, #f5f6fc);
|
||||
height: 100rpx;
|
||||
}
|
||||
.fold {
|
||||
height: 460rpx;
|
||||
overflow: hidden;
|
||||
}
|
||||
.btn-box {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
// 图片预览
|
||||
.preview-img {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
background-color: #000;
|
||||
z-index: 25;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.margin-30 {
|
||||
margin: 30rpx 0;
|
||||
}
|
||||
.margin-b-20 {
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
</style>
|
||||
2325
jeepay-ui-uapp-agent/pageApply/components/rules.js
Normal file
2325
jeepay-ui-uapp-agent/pageApply/components/rules.js
Normal file
File diff suppressed because it is too large
Load Diff
164
jeepay-ui-uapp-agent/pageApply/components/signing.vue
Normal file
164
jeepay-ui-uapp-agent/pageApply/components/signing.vue
Normal file
@@ -0,0 +1,164 @@
|
||||
<template>
|
||||
<!-- 自主签约 -->
|
||||
<view class="box wx-open">
|
||||
<view class="first-title">
|
||||
<text>电子合同签约</text>
|
||||
<view class="submit-btn" @tap="getSignInfo(true)">刷新</view>
|
||||
</view>
|
||||
<view class="tips">如需使用支付功能,请完成以下签约和授权</view>
|
||||
|
||||
<view class="state">
|
||||
<text>签约状态</text>
|
||||
<view>{{ vdata.bizSignInfo.state || '异常[' + vdata.bizSignInfo.errInfo + ']' }}</view>
|
||||
</view>
|
||||
|
||||
<template v-if="vdata.bizSignInfo.signUrl">
|
||||
<view class="second-title">电子合同签约地址和二维码:</view>
|
||||
<view style="margin-top: 20rpx;white-space: pre-wrap; word-wrap: break-word; color: #3981ff" @click="toContract()">
|
||||
{{ vdata.bizSignInfo.signUrl }}
|
||||
</view>
|
||||
<view style="display: flex;justify-content: center;margin-bottom: 20rpx">
|
||||
<image :src="drawQRcode(vdata.bizSignInfo.signUrl)" class="wx-img" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<view class="state" style="margin-top: 40rpx;">
|
||||
<text style="white-space: nowrap; margin-right: 10rpx">商户确认状态</text>
|
||||
<view>{{ vdata.wxOpenInfo.state || '异常[' + vdata.wxOpenInfo.errInfo + ']' }}</view>
|
||||
</view>
|
||||
|
||||
<template v-if="vdata.wxOpenInfo.signUrl">
|
||||
<view class="second-title">
|
||||
<text>微信开户意愿确认:</text>
|
||||
<view class="submit-btn" @tap="getWxInfo(true)">刷新</view>
|
||||
</view>
|
||||
<view style="color:#666666;font-size: 25rpx;margin-top: 20rpx">商户联系人使用已绑定银行卡的微信扫下面的二维码:</view>
|
||||
|
||||
<view style="display: flex;justify-content: center;">
|
||||
<image v-if="vdata.wxOpenInfo.imgType == 'qrContent'" :src="drawQRcode(vdata.wxOpenInfo.signUrl)" class="wx-img" />
|
||||
|
||||
<image v-else :src="'data:image/jpg;base64,' + vdata.wxOpenInfo.signUrl" mode="" class="wx-img" />
|
||||
</view>
|
||||
<view style="color:#666666;font-size: 25rpx;margin-top: 20rpx">(温馨提示:自助认证不限制谁来操作认证,但建议是商户联系人进行认证,以免后期需要扫码找不到微信认证管理员)</view>
|
||||
</template>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted, inject } from 'vue'
|
||||
import JeePayForm from '@/components/applyComponents/JeePayForm.vue' // 通用左右结构布局
|
||||
import JeepayUpLoad from '@/components/JeepayUpLoad/JeepayUpLoad.vue' // 图片上传
|
||||
import qrcode from '@/util/qrcode.js'
|
||||
import { $getMchApplymentChannelSignInfo, $getMchApplymentWxOpenInfo } from '@/http/apiManager.js'
|
||||
|
||||
const channelInfo = inject('channelInfo')
|
||||
|
||||
onMounted(() => {
|
||||
if (['2', '5'].includes(channelInfo.state)) {
|
||||
getWxInfo()
|
||||
getSignInfo()
|
||||
}
|
||||
})
|
||||
|
||||
const vdata = reactive({
|
||||
bizSignInfo: {}, // 电子合同状态查询
|
||||
wxOpenInfo: {}, // 微信开户意愿信息
|
||||
isRefresh: false, // 是否点击了刷新按钮
|
||||
})
|
||||
|
||||
// 电子合同状态查询
|
||||
const getSignInfo = (flag = false) => {
|
||||
vdata.isRefresh = flag
|
||||
$getMchApplymentChannelSignInfo(channelInfo.applyId).then(({bizData}) => {
|
||||
vdata.bizSignInfo = bizData
|
||||
if (vdata.isRefresh) {
|
||||
uni.showToast({title: '已刷新', icon: 'none'})
|
||||
vdata.isRefresh = false
|
||||
}
|
||||
}).catch(err => vdata.isRefresh = false)
|
||||
}
|
||||
|
||||
// 微信开户意愿查询
|
||||
const getWxInfo = (flag = false) => {
|
||||
vdata.isRefresh = flag
|
||||
$getMchApplymentWxOpenInfo(channelInfo.applyId).then(({bizData}) => {
|
||||
vdata.wxOpenInfo = bizData
|
||||
if (vdata.isRefresh) {
|
||||
uni.showToast({title: '已刷新', icon: 'none'})
|
||||
vdata.isRefresh = false
|
||||
}
|
||||
}).catch(err => vdata.isRefresh = false)
|
||||
}
|
||||
|
||||
// 跳转至电子合同页 盛付通 富友 会用到
|
||||
const toContract = () => {
|
||||
uni.navigateTo({ url: '../../components/contract?url=' + vdata.bizSignInfo.signUrl })
|
||||
}
|
||||
|
||||
// 制作图片
|
||||
const drawQRcode = url => {
|
||||
return qrcode.drawImg(url, {
|
||||
typeNumber: 4, // 密度
|
||||
errorCorrectLevel: 'Q', // 纠错等级
|
||||
size: 175, // 白色边框
|
||||
})
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.flex {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.box {
|
||||
height: auto;
|
||||
transition: .3s;
|
||||
position: relative;
|
||||
border-radius: 20rpx;
|
||||
background: #f5f6fc;
|
||||
padding: 10rpx 40rpx;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
// 微信签约
|
||||
.wx-open {
|
||||
margin-top: 30rpx;
|
||||
padding: 40rpx;
|
||||
.first-title {
|
||||
font-size: 28rpx;
|
||||
color: #18191d;
|
||||
font-weight: bold;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.tips {
|
||||
font-size: 25rpx;
|
||||
color: #7e7e80;
|
||||
margin: 20rpx 0 40rpx;
|
||||
}
|
||||
.state {
|
||||
margin-bottom: 30rpx;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.second-title {
|
||||
font-size: 27rpx;
|
||||
color: #000;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.wx-img {
|
||||
width: 300rpx;
|
||||
height: 300rpx;
|
||||
margin: 30rpx 0 20rpx ;
|
||||
}
|
||||
}
|
||||
.submit-btn {
|
||||
border-radius: 0.3125rem;
|
||||
background: #3981FF;
|
||||
color: #fff;
|
||||
padding: 0.15625rem 0.46875rem;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user