源文件

This commit is contained in:
gyq
2024-05-23 14:39:33 +08:00
commit a1128dd791
2997 changed files with 500069 additions and 0 deletions

View File

@@ -0,0 +1,165 @@
<template>
<uni-popup ref="popup" type="bottom" mask-background-color="rgba(0,0,0,.5)" :safe-area="false" @maskClick="emits('cancel')">
<!-- 通用提示弹窗 用于提示用户 数据含义 -->
<view class="card-wrapper">
<view class="card-title flex-center">手持承诺函</view>
<view class="image-wrapper">
<view class="tips-title">手持承诺函示例图</view>
<image src="/pageWork/static/images/authorize.svg" mode="aspectFit" />
<view class="download" @tap="downLoad">模板下载</view>
</view>
<view class="card-button flex-center" hover-class="touch-hover" @tap="confirm"> 我知道了</view>
</view>
</uni-popup>
<JeepayPopupConfirm ref="confirmSave" />
</template>
<script setup>
import { onMounted, reactive, ref, inject } from 'vue'
const emits = defineEmits(['cancel'])
const vdata = reactive({})
const popup = ref(null)
const confirmSave = ref(null)
const open = (url) => {
vdata.url = url
console.log('url', url)
popup.value.open()
}
const confirm = () => {
emits('cancel')
popup.value.close()
}
const downLoad = () => {
popup.value.close()
// #ifdef APP-PLUS
confirmSave.value.open('确认下载模板吗?').then((res) => {
uni.downloadFile({
url: vdata.url, //仅为示例,并非真实的资源
success: (res) => {
uni.saveFile({
tempFilePath: res.tempFilePath,
success: function (val) {
uni.openDocument({
filePath: val.savedFilePath,
success: function (res) {
uni.showToast({
title: '保存成功',
})
},
fail: function (err) {},
})
},
})
},
})
})
// #endif
//#ifdef MP-WEIXIN
confirmSave.value
.open('确认下载模板吗?')
.then((res) => {
uni.setClipboardData({ data: vdata.url }).then((res) => {
uni.showToast({ title: '下载链接复制成功,请到浏览器中粘贴下载', icon: 'none' })
})
// downloadQR(vdata.url)
})
.catch(() => {
popup.value.open()
})
//#endif
}
//#ifdef MP-WEIXIN
function downloadQR() {
wx.getSetting({
//获取权限
success(res) {
if (res.authSetting['scope.writePhotosAlbum']) {
download(vdata.url)
} else {
wx.authorize({
scope: 'scope.writePhotosAlbum',
success() {
download(vdata.url)
},
})
}
},
})
}
function download(data) {
wx.downloadFile({
url: data,
success: (res) => {
const FileSystemManager = wx.getFileSystemManager()
FileSystemManager.saveFile({
tempFilePath: res.tempFilePath,
filePath: wx.env.USER_DATA_PATH + '/' + '授权函模板' + '.docx',
success: function (val) {
console.log('val', val)
console.log('val.savedFilePath', val.savedFilePath)
uni.showToast({
title: '下载成功保存路径' + val.savedFilePath,
icon: 'none',
mask: true,
})
uni.vibrateShort()
},
fail: function (err) {
console.log('err', err)
uni.showToast({
title: '下载失败',
icon: 'error|none',
mask: true,
})
},
})
},
})
}
//#endif
defineExpose({ open })
</script>
<style lang="scss" scoped>
.card-wrapper {
border-radius: 32rpx 32rpx 0 0;
background-color: #fff;
padding-bottom: 60rpx;
max-height: 70vh;
.card-title {
margin-bottom: 20rpx;
height: 110rpx;
font-size: 30rpx;
font-weight: 400;
border-bottom: 1rpx solid rgba(0, 0, 0, 0.07);
}
.card-button {
margin-top: 20rpx;
height: 110rpx;
font-size: 32rpx;
color: #2980fd;
border-top: 20rpx solid #f7f7f7;
}
}
.image-wrapper {
display: flex;
flex-direction: column;
align-items: center;
image {
width: 200rpx;
height: 200rpx;
border-radius: 10rpx;
}
.tips-title {
margin: 20rpx 0;
font-size: 25rpx;
color: #888;
}
.download {
margin: 30rpx 0;
font-size: 32rpx;
color: #2980fd;
}
}
</style>

View File

@@ -0,0 +1,80 @@
<template>
<JPopup ref="popup">
<JMainCard wrapPd="30rpx" pd="0" @tap.stop v-if="selectType.type === 0">
<JLine
name="个人"
iconOn="/static/iconImg/user-active.svg"
iconClose="/static/iconImg/user.svg"
:isBorder="true"
:isSelect="selectType.value === 1"
@tap="selected(1)"
></JLine>
<JLine
name="企业"
iconOn="/static/iconImg/building-active.svg"
iconClose="/static/iconImg/building.svg"
:isSelect="selectType.value === 2"
@tap="selected(2)"
></JLine>
<view class="content"> 选择企业后可设置收款账户为对公账户但需要上传营业执照及法人信息 </view>
</JMainCard>
<JMainCard wrapPd="30rpx" pd="0" @tap.stop v-if="selectType.type === 1">
<JLine
name="对私账户"
:isBorder="true"
:isSelect="selectType.value === 'BANK_PRIVATE'"
@tap="selected('BANK_PRIVATE')"
></JLine>
<JLine
name="对公账户"
:isSelect="selectType.value === 'BANK_PUBLIC'"
@tap="selected('BANK_PUBLIC')"
v-if="selectType.agentType === 2"
></JLine>
<!-- <JLine name="个人微信" :isSelect="selectType.value === 'WX_CASH'" @tap="selected('WX_CASH')"></JLine> -->
<JLine name="个人支付宝" :isSelect="selectType.value === 'ALIPAY_CASH'" @tap="selected('ALIPAY_CASH')"></JLine>
</JMainCard>
<JButton pd="0 30rpx 50rpx 30rpx" bgColor="rgba(255, 255, 255, 0.8)" pdTop="0" @HandleTouch="popup.close()"
>取消</JButton
>
</JPopup>
</template>
<script setup>
import { ref } from "vue"
import JPopup from "@/components/newComponents/JPopup/JPopup"
import JMainCard from "@/components//newComponents/JMainCard/JMainCard"
import JLine from "@/components//newComponents/JLine/JLine"
import JButton from "@/components//newComponents/JButton/JButton"
const emits = defineEmits(["synData"])
const popup = ref()
const selectType = ref({})
const open = (val) => {
selectType.value = val
popup.value.open()
}
const selected = (val) => {
selectType.value.value = val
emits("synData", selectType.value)
popup.value.close()
}
defineExpose({ open })
</script>
<style lang="scss" scoped>
.content {
margin: 0 30rpx 30rpx 30rpx;
background-color: #f2f2f2;
padding: 20rpx;
border-radius: 10px;
font-size: 27rpx;
color: #666666;
}
.confirm {
padding: 32rpx 0;
text-align: center;
font-size: 33rpx;
color: $primaryColor;
}
</style>

View File

@@ -0,0 +1,212 @@
<template>
<view class="page-wrapper bgF2">
<JHeaderTitle :back="false" :logOut="true" title="完善资料" :bgColor="userInfo.state == 3 ? '#ff4c5b' : '#f2f2f2'"></JHeaderTitle>
<view class="page-header" v-if="userInfo.state == 3">
<image src="/static/iconImg/icon-striped.svg" mode="scaleToFill" />
<view class="tips">您的资料审核失败请修改后重新提交</view>
<view class="why">驳回原因{{ userInfo.auditRemark }}</view>
</view>
<JMainCard wrapPd="0 30rpx" pd="0x">
<JInput name="代理商类型" v-model:value="userInfo.agentType" :img="true" :isBorder="true" @tap="select.open({ type: 0, value: userInfo.agentType })">
<view class="agent-type">{{ userInfo.agentType == 1 ? '个人' : '企业' }}</view>
</JInput>
</JMainCard>
<JMainCard wrapPd="30rpx" pd="0">
<template v-if="userInfo.agentType === 1">
<JInput name="代理商全称" v-model:value="userInfo.agentName" :rules="{ name: 'agentName', rule: 'REG_NotNUll' }" place="请输入代理商全称"></JInput>
<JInput name="代理商简称" v-model:value="userInfo.agentShortName" :rules="{ name: 'agentShortName', rule: 'REG_NotNUll' }" place="请输入代理商简称"></JInput>
</template>
<template v-if="userInfo.agentType === 2">
<JInput name="企业全称" v-model:value="userInfo.agentName" :rules="{ name: 'agentName', rule: 'REG_NotNUll' }" place="请输入企业全称"></JInput>
<JInput name="企业简称" v-model:value="userInfo.agentShortName" :rules="{ name: 'agentShortName', rule: 'REG_NotNUll' }" place="请输入代理商简称"></JInput>
</template>
<JInput name="联系人姓名" v-model:value="userInfo.contactName" :rules="{ name: 'contactName', rule: 'REG_NotNUll' }" place="请输入联系人姓名"></JInput>
<JInput name="联系人邮箱" v-model:value="userInfo.contactEmail" place="请输入邮箱"></JInput>
</JMainCard>
<JMainCard wrapPd="0 30rpx" pd="0">
<template v-if="userInfo.agentType === 1">
<JUpLoad name="联系人身份证人像面" v-model:value="userInfo.idcard1Img"></JUpLoad>
<JUpLoad name="联系人身份证国徽面" v-model:value="userInfo.idcard2Img" :rules="{ name: 'idcard2Img', rule: 'REG_NotNUll' }"></JUpLoad>
<JUpLoad v-model:value="userInfo.idcardInHandImg" :rules="{ name: 'idcardInHandImg', rule: 'REG_NotNUll' }">
<template #title>
<view class="title">
<text>[联系人]手持承诺函照片</text>
<uni-icons type="help-filled" size="22" color="#c6c6c6" @tap="refTips.open(userInfo.promiseFile)" />
</view>
</template>
</JUpLoad>
</template>
<template v-if="userInfo.agentType === 2">
<JUpLoad name="营业执照" v-model:value="userInfo.licenseImg" :rules="{ name: 'licenseImg', rule: 'REG_NotNUll' }" borderNone></JUpLoad>
<JUpLoad name="法人身份证人像面" v-model:value="userInfo.idcard1Img" :rules="{ name: 'idcard1Img', rule: 'REG_NotNUll' }"></JUpLoad>
<JUpLoad name="法人身份证国徽面" v-model:value="userInfo.idcard2Img" :rules="{ name: 'idcard2Img', rule: 'REG_NotNUll' }"></JUpLoad>
<JUpLoad v-model:value="userInfo.idcardInHandImg" :rules="{ name: 'idcardInHandImg', rule: 'REG_NotNUll' }">
<template #title>
<view class="title">
<text>[联系人]手持承诺函照片</text>
<uni-icons type="help-filled" size="22" color="#c6c6c6" @tap="refTips.open(userInfo.promiseFile)" />
</view>
</template>
</JUpLoad>
</template>
</JMainCard>
<JMainCard wrapPd="30rpx 30rpx 40rpx 30rpx" pd="0">
<JInput
name="收款账户类型"
v-model:value="userInfo.settAccountType"
:img="true"
:isBorder="true"
@tap="select.open({ type: 1, value: userInfo.settAccountType, agentType: userInfo.agentType })"
>
<view class="agent-type">{{ settAccountType[userInfo.settAccountType] }}</view>
</JInput>
<template v-if="userInfo.settAccountType" >
<JInput name="账户姓名" v-model:value="userInfo.settAccountName" :rules="{ name: 'settAccountName', rule: 'REG_NotNUll' }" place="请输入账户姓名" ></JInput>
</template>
<template v-if="userInfo.settAccountType === 'BANK_PRIVATE'">
<JUpLoad name="收款银行卡照片" v-model:value="userInfo.bankCardImg"></JUpLoad>
<JInput name="开户银行名称" v-model:value="userInfo.settAccountBank" :rules="{ name: 'settAccountBank', rule: 'REG_NotNUll' }" place="请输入开户银行名称"></JInput>
<JInput name="收款银行卡号" v-model:value="userInfo.settAccountNo" :rules="{ name: 'settAccountNo', rule: 'REG_NotNUll' }" place="请输入收款银行卡号"></JInput>
</template>
<template v-if="userInfo.settAccountType === 'WX_CASH'">
<JInput name="个人微信号" v-model:value="userInfo.settAccountNo" :rules="{ name: 'settAccountNo', rule: 'REG_NotNUll' }" place="请输入个人微信号"></JInput>
</template>
<template v-if="userInfo.settAccountType === 'ALIPAY_CASH'">
<JInput name="支付宝账号" v-model:value="userInfo.settAccountNo" :rules="{ name: 'settAccountNo', rule: 'REG_NotNUll' }" place="请输入支付宝账号"></JInput>
</template>
<template v-if="userInfo.settAccountType === 'BANK_PUBLIC'">
<JUpLoad name="开户许可证照片" v-model:value="userInfo.permitImg" :rules="{ name: 'permitImg', rule: 'REG_NotNUll' }"></JUpLoad>
<JInput name="对公账号" v-model:value="userInfo.settAccountNo" :rules="{ name: 'settAccountNo', rule: 'REG_NotNUll' }" place="请输入对公账号"></JInput>
<JInput name="开户银行名称" v-model:value="userInfo.settAccountBank" :rules="{ name: 'settAccountBank', rule: 'REG_NotNUll' }" place="请输入开户银行名称"></JInput>
<JInput
name="开户行支行名称"
v-model:value="userInfo.settAccountSubBank"
:rules="{ name: 'settAccountSubBank', rule: 'REG_NotNUll' }"
place="请输入开户行支行名称"
></JInput>
</template>
</JMainCard>
<JButton
pd="0 30rpx 50rpx 30rpx"
@HandleTouch="tips.open('选择企业后可设置收款账户为对公账户,但需要上传营业执照及法人信息。')"
:bgColor="userInfo.state == 3 ? '#ff4c5b' : '$primaryColor'"
>
{{ userInfo.state == 3 ? '重新提交' : '提交' }}
</JButton>
</view>
<Selected ref="select" @synData="synData"></Selected>
<JDeletedTips ref="tips" @confirm="submit" />
<JTipsPopupContent ref="refTips" />
</template>
<script setup>
import { reactive, ref } from 'vue';
import { onLoad } from '@dcloudio/uni-app';
import { $getMainUserInfo, $auditInfo } from '@/http/apiManager.js';
import JHeaderTitle from '@/components/newComponents/JHeaderTitle/JHeaderTitle.vue';
import JMainCard from '@/components/newComponents/JMainCard/JMainCard';
import JInput from '@/components/newComponents/JInput/JInput';
import JUpLoad from '@/components/newComponents/JUpLoad/JUpLoad';
import JButton from '@/components/newComponents/JButton/JButton';
import JDeletedTips from '@/components/newComponents/JDeletedTips/JDeletedTips';
import Selected from './component/Selected';
import JTipsPopupContent from './component/JTipsPopupContent.vue';
import { validateArray } from '@/hooks/rules';
onLoad(() => {
getMainUserInfo();
});
const select = ref(null);
const tips = ref(null);
const refTips = ref(null);
const userInfo = ref({
agentType: 1,
settAccountType: 'BANK_PRIVATE'
});
const settAccountType = reactive({
BANK_PRIVATE: '对私账户',
BANK_PUBLIC: '对公账户',
WX_CASH: '个人微信',
ALIPAY_CASH: '个人支付宝'
});
const synData = data => {
switch (data.type) {
case 0:
userInfo.value.agentType = data.value;
break;
case 1:
userInfo.value.settAccountType = data.value;
break;
}
};
const getMainUserInfo = () => {
$getMainUserInfo().then(({ bizData }) => {
userInfo.value = bizData;
if (userInfo.value.state == 2 || userInfo.value.state == 1) {
return uni.reLaunch({ url: './readOnlyInformation' });
}
});
};
const submit = () => {
if (validateArray(userInfo.value)) {
uni.showLoading({
title: '提交中',
mask: true
});
$auditInfo(userInfo.value).then(res => {
uni.hideLoading();
uni.showToast({ title: '提交成功', icon: 'success', mask: true });
getMainUserInfo();
});
}
};
</script>
<style lang="scss" scoped>
.page-wrapper {
width: 100%;
.page-header {
position: relative;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
background-color: #ff4c5b;
// padding-bottom: 47rpx;
margin-bottom: 20rpx;
image {
width: 48.76rpx;
height: 57.67rpx;
}
view {
font-size: 28rpx;
color: #ffd9dc;
}
.tips {
margin: 50rpx 0;
}
.why {
flex-grow: 1;
min-width: 626rpx;
word-break: break-all;
padding: 30rpx 62rpx;
background-color: rgba(255, 255, 255, 0.2);
border-radius: 32rpx 32rpx 0px 0px;
}
}
.agent-type {
font-size: 33rpx;
color: #666666;
}
}
.title {
display: flex;
align-items: center;
vertical-align: middle;
text {
margin-right: 5rpx;
vertical-align: middle;
}
}
</style>

View File

@@ -0,0 +1,197 @@
<template>
<view class="page-wrapper bgF">
<JHeaderTitle :back="false" :logOut="true" title="完善资料" :bgColor="userInfo.state == 1 ? '#1dcc64' : '#FFCC66'"></JHeaderTitle>
<view class="page-header" :style="{ backgroundColor: userInfo.state == 1 ? '#1dcc64' : '#FFCC66' }">
<image v-if="userInfo.state != 1" :class="[animation]" src="/static/iconImg/icon-examine.svg" mode="scaleToFill" />
<view v-if="userInfo.state != 1">您的资料正在审核中请耐心等待</view>
<view v-if="userInfo.state === 1" class="login bdR20" @tap="loginOut">审核通过请点击重新登录</view>
</view>
<view class="page-main">
<JMainCard wrapPd="30rpx" pd="0" bgColor="#f2f2f2">
<JInput name="代理商类型" :img="true" :isBorder="true">
<view class="agent-type">{{ userInfo.agentType == 1 ? '个人' : '企业' }}</view>
</JInput>
</JMainCard>
<JMainCard wrapPd="30rpx" pd="0" bgColor="#f2f2f2">
<template v-if="userInfo.agentType === 1">
<JInput name="代理商全称" :isBorder="true">{{ userInfo.agentName }}</JInput>
<JInput name="代理商简称" borderBg="#D9D9D9">{{ userInfo.agentShortName }}</JInput>
</template>
<template v-if="userInfo.agentType === 2">
<JInput name="企业全称" borderBg="#D9D9D9">
{{ userInfo.agentName }}
</JInput>
<JInput name="企业简称" borderBg="#D9D9D9">
{{ userInfo.agentShortName }}
</JInput>
</template>
<JInput name="联系人姓名" borderBg="#D9D9D9">
{{ userInfo.contactName }}
</JInput>
<JInput name="联系人邮箱" borderBg="#D9D9D9">
{{ userInfo.contactEmail }}
</JInput>
</JMainCard>
<JMainCard wrapPd="0 30rpx" pd="0" bgColor="#f2f2f2">
<JUpLoad name="联系人身份证人像面" :imgUrl="userInfo.idcard1Img || imgUrl" borderNone></JUpLoad>
<JUpLoad name="联系人身份证国徽面" :imgUrl="userInfo.idcard2Img || imgUrl"></JUpLoad>
<JUpLoad :imgUrl="userInfo.idcardInHandImg || imgUrl">
<template #title>
<view class="title"><text>[联系人]手持承诺函照片</text> <uni-icons type="help-filled" size="22" color="#c6c6c6" @tap="refTips.open(userInfo.promiseFile)" /> </view>
</template>
</JUpLoad>
</JMainCard>
<JMainCard wrapPd="30rpx 30rpx 40rpx 30rpx" pd="0" bgColor="#f2f2f2">
<JInput name="收款账户类型" :img="true" :isBorder="true">
<view class="agent-type">{{ settAccountType[userInfo.settAccountType] }}</view>
</JInput>
<template v-if="userInfo.settAccountType === 'BANK_PRIVATE'">
<JUpLoad name="收款银行卡照片" :imgUrl="userInfo.bankCardImg || imgUrl"></JUpLoad>
<JInput name="开户银行名称">{{ userInfo.settAccountBank }}</JInput>
<JInput name="收款银行卡号">{{ userInfo.settAccountNo }}</JInput>
</template>
<template v-if="userInfo.settAccountType === 'WX_CASH'">
<JInput name="个人微信号">{{ userInfo.settAccountNo }}</JInput>
</template>
<template v-if="userInfo.settAccountType === 'ALIPAY_CASH'">
<JInput name="支付宝账号">{{ userInfo.settAccountNo }}</JInput>
</template>
<template v-if="userInfo.settAccountType === 'BANK_PUBLIC'">
<JUpLoad name="开户许可证照片" :imgUrl="userInfo.permitImg || imgUrl"></JUpLoad>
<JInput name="对公账户名称">{{ userInfo.settAccountName }}</JInput>
<JInput name="对公账号">{{ userInfo.settAccountNo }}</JInput>
<JInput name="开户银行名称">{{ userInfo.settAccountBank }}</JInput>
<JInput name="开户行支行名称">{{ userInfo.settAccountSubBank }}</JInput>
</template>
</JMainCard>
</view>
</view>
<JTipsPopupContent ref="refTips" />
</template>
<script setup>
import { onBeforeUnmount, reactive, ref } from 'vue'
import { onLoad, onPullDownRefresh } from '@dcloudio/uni-app'
import user from '@/hooks/user.js'
import JHeaderTitle from '@/components/newComponents/JHeaderTitle/JHeaderTitle.vue'
import JInput from '@/components/newComponents/JInput/JInput'
import JMainCard from '@/components/newComponents/JMainCard/JMainCard'
import JUpLoad from '@/components/newComponents/JUpLoad/JUpLoad'
import { $getMainUserInfo } from '@/http/apiManager.js'
import JTipsPopupContent from './component/JTipsPopupContent.vue'
const imgUrl = ref('/static/iconImg/defaultImg.svg')
onLoad(() => {
getUserInfo()
})
let timeOut = undefined
const getUserInfo = () => {
$getMainUserInfo().then(({ bizData }) => {
userInfo.value = bizData
uni.stopPullDownRefresh()
timeOut = setTimeout(() => {
animation.value = ''
audit()
}, 1500)
})
}
const refTips = ref(null)
const userInfo = ref({})
const animation = ref('')
const settAccountType = reactive({
BANK_PRIVATE: '对私账户',
BANK_PUBLIC: '对公账户',
WX_CASH: '个人微信',
ALIPAY_CASH: '个人支付宝',
})
onPullDownRefresh(() => {
getUserInfo()
animation.value = 'animation'
})
const audit = () => {
if (userInfo.value.state === 3)
return uni.showToast({
title: '审核未通过',
icon: 'error',
mask: true,
success: () => {
uni.reLaunch({
url: '/pageWork/information/information',
})
},
})
}
const loginOut = () => {
user.logout()
uni.showToast({
icon: 'none',
title: '退出成功',
})
}
onBeforeUnmount(() => {
clearTimeout(timeOut)
})
</script>
<style lang="scss" scoped>
.page-wrapper {
width: 100%;
min-height: 100%;
.page-header {
position: relative;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
// background-color: #ffcc66;
padding-bottom: 47rpx;
image {
width: 45rpx;
height: 52.5rpx;
}
view {
padding: 50rpx 0;
font-size: 28rpx;
color: #906a1f;
}
.login {
padding: 30rpx 50rpx;
margin: 30rpx 0;
background-color: rgba(255, 255, 255, 0.2);
letter-spacing: 4rpx;
color: #fff;
}
&::after {
content: '';
display: block;
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 47rpx;
background-color: #fff;
border-radius: 32rpx 32rpx 0px 0px;
}
}
}
.animation {
animation: rotate 1.5s linear;
}
@keyframes rotate {
to {
transform: rotate(0deg);
}
from {
transform: rotate(-720deg);
}
}
.title {
display: flex;
align-items: center;
vertical-align: middle;
text {
margin-right: 5rpx;
vertical-align: middle;
}
}
</style>