657 lines
17 KiB
Vue
657 lines
17 KiB
Vue
<template>
|
|
<view class="content">
|
|
<view class="top">
|
|
<view class="base">
|
|
<view class="base-tab">
|
|
<view class="base-tab-item">
|
|
<image class="base-tab-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/b1eda850ca6b6ad74695d92617e9cdb5.png" mode="aspectFill"></image>
|
|
<view class="base-tab-cont">
|
|
<view class="base-tab-name">
|
|
银行信息
|
|
</view>
|
|
<view class="base-tab-tips">
|
|
待完善
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="base-tab-spot">
|
|
<text></text>
|
|
<text></text>
|
|
<text></text>
|
|
</view>
|
|
<view class="base-tab-item">
|
|
<image class="base-tab-img" src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/79d462eea520cbef881afc2c79a5b0d4.png" mode="aspectFill"></image>
|
|
<view class="base-tab-cont">
|
|
<view class="base-tab-name">
|
|
其他信息
|
|
</view>
|
|
<view @click="nextStep" class="base-tab-tips">
|
|
去完善 >
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="white">
|
|
<view class="base-title">
|
|
<view class="base-name">
|
|
基本信息
|
|
</view>
|
|
<!-- <view class="base-number">
|
|
6/12
|
|
</view> -->
|
|
</view>
|
|
<view class="base-list">
|
|
<!-- items.type === 'text' || items.type === 'textarea' -->
|
|
<view class="base-block" :class="{baseAline : items.flex == 100, radioAline : items.type == 'radio'}" v-for="(items, itemsIndex) in backParams" :key="itemsIndex" v-if="items.pre_key != null ? isShowBlock(backParams, items): true">
|
|
<view class="base-block-name" v-if="items.label == 1">
|
|
<text>*</text>{{items.title}}
|
|
<image class="base-notesIcon" v-if="items.reason != ''" @click="seeTips('驳回原因', items.reason.description)" src="/static/icon/notesIcon.png" mode="aspectFill"></image>
|
|
</view>
|
|
|
|
<!-- 单输入框 -->
|
|
<view class="base-block-write" v-if="items.type === 'price' || items.type === 'number' || items.type === 'text' || items.type === 'password' || items.type === 'mobile' || items.type === 'day'">
|
|
<mouldInput class="idcardAdd-input" :blur-value="items.value" :input-type="items.type" :input-key="items.key" @onValue="($event) => {items.value = $event}"></mouldInput>
|
|
</view>
|
|
|
|
<!-- 单选 -->
|
|
|
|
|
|
<!-- 单选 -->
|
|
<view class="idcardAdd-aline" v-if="items.type === 'radio'">
|
|
<radio-group @change="items.value = parseFloat($event.detail.value)">
|
|
<label class="idcardAdd-aline-write" v-for="(limitItem, limitIndex) in items.options" :key="limitIndex">
|
|
<radio :value="String(limitIndex)" :checked="items.value === limitIndex" color="#4e7bfe" style="transform:scale(.65)"/>
|
|
<text>{{limitItem}}</text>
|
|
</label>
|
|
</radio-group>
|
|
</view>
|
|
|
|
<!-- 多选 -->
|
|
<block v-if="items.type === 'checkbox'">
|
|
<mouldCheckbox :checkbox-list="items.options" :checkboxVlaue="items.value || []" @onCheckbox="($event) => {items.value = $event}"></mouldCheckbox>
|
|
</block>
|
|
|
|
<!-- 办卡城市 -->
|
|
<view class="base-block-write" v-if="items.type === 'city'">
|
|
<mouldInput class="idcardAdd-input" :blur-value="items.value" :input-type="items.type" :input-key="items.key" @onValue="($event) => {items.value = $event}"></mouldInput>
|
|
</view>
|
|
|
|
<!-- 描述 -->
|
|
<block v-if="items.label == 1">
|
|
<view class="base-block-textarea" v-if="items.type === 'textarea'">
|
|
<mouldText class="idcardAdd-depict-textarea" :blur-value="items.value" @onTextarea="($event) => {items.value = $event}"></mouldText>
|
|
</view>
|
|
</block>
|
|
|
|
<!-- 下拉框 -->
|
|
<view class="base-block-write" v-if="items.type === 'select'">
|
|
<mouldSelect class="idcardAdd-picker" :select-value="items.value.toString()" :select-list="items.options" @bankPicker="($event) => {items.value = $event}"></mouldSelect>
|
|
<image src="@/static/imgs/basic_down.png" mode="aspectFill"></image>
|
|
</view>
|
|
|
|
<!-- 日期选择 -->
|
|
<view class="base-block-write" v-if="items.type === 'date'">
|
|
<!-- <picker mode="date" :value-date="values[items.key]" :start="startDate" :end="endDate" @change="($event) => {values[items.key] = $event.detail.value}">
|
|
<view class="uni-input">{{values[items.key]}}</view>
|
|
</picker> -->
|
|
<mouldDate :value-date="items.value || '请选择日期'" class="idcardAdd-picker" @onDate="($event) => {items.value = $event}"></mouldDate>
|
|
<image src="@/static/imgs/basic_date.png" mode="aspectFill"></image>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="introduce-btn">
|
|
<button class="btn" size="mini" @click="cacheSave">暂时保存</button>
|
|
<!-- -->
|
|
<view @click="nextStep" class="btn" size="mini">下一步</view>
|
|
</view>
|
|
|
|
<!-- 驳回提示 -->
|
|
<mouldTips :see-data="seeData" @tipsClose="($event) => {seeData.seeShow = $event}"></mouldTips>
|
|
|
|
<!-- 是否使用首次录入信息 -->
|
|
<view class="backFirst" v-if="popFirst"></view>
|
|
<view class="contFirst" v-if="popFirst">
|
|
<view class="tipsWhite">
|
|
<view class="tipsWhite-top">
|
|
<view class="tipsWhite-name">
|
|
温馨提示
|
|
</view>
|
|
<view class="tipsWhite-text">
|
|
是否使用首次录入信息
|
|
</view>
|
|
</view>
|
|
<view class="tipsWhite-btn">
|
|
<view class="idcardBtn-go active" @click="popFirst = false">
|
|
暂不使用
|
|
</view>
|
|
<view class="idcardBtn-go" @click="goFirst">
|
|
立即使用
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import { userBank, cacheBank, cacheBankPut } from '@/apis/interfaces/user'
|
|
|
|
import mouldCheckbox from '@/components/mould-checkbox.vue'
|
|
import mouldInput from '@/components/mould-input.vue'
|
|
import mouldRadio from '@/components/mould-radio.vue'
|
|
import mouldText from '@/components/mould-text.vue'
|
|
import mouldSelect from '@/components/mould_select.vue'
|
|
import mouldDate from '@/components/mould-date.vue'
|
|
import mouldTips from '@/components/mould-tips.vue'
|
|
export default {
|
|
components: {
|
|
mouldCheckbox,
|
|
mouldInput,
|
|
mouldRadio,
|
|
mouldText,
|
|
mouldSelect,
|
|
mouldDate,
|
|
mouldTips
|
|
},
|
|
data() {
|
|
return {
|
|
popFirst : false, // 首次录入信息状态
|
|
disabled : false, // 按钮状态
|
|
bankData : '', // 基础信息
|
|
backParams: [], // 字段数组
|
|
|
|
// 查看提示组件
|
|
seeData : {
|
|
seeShow : false,
|
|
seeTitle: '',
|
|
seeText : '',
|
|
},
|
|
|
|
values : '',
|
|
|
|
marriage: [],
|
|
marriageIndex : 0, // 婚姻选择index
|
|
|
|
education: [],
|
|
educationIndex: 0, // 学历选择index
|
|
|
|
userId : '', // 第二个id
|
|
baseId : '' ,// 第二个id
|
|
|
|
institutionId: '',
|
|
|
|
cacheData: '' //缓存数据
|
|
}
|
|
},
|
|
computed: {
|
|
// isChecked(){
|
|
// return (val, vals) => {
|
|
// let valsArr = vals || []
|
|
// return valsArr.findIndex(v => v == val) >= 0
|
|
// }
|
|
// },
|
|
isShowBlock(){
|
|
return (backParams, items) => {
|
|
if(items.pre_key != null){
|
|
let paramsValue = backParams.find(v => v.key == items.pre_key)
|
|
return paramsValue.value == items.pre_value
|
|
}
|
|
return true
|
|
}
|
|
}
|
|
},
|
|
|
|
onShow() {
|
|
// 获取基础信息
|
|
this.baseInfo();
|
|
},
|
|
|
|
methods: {
|
|
// 基础信息
|
|
baseInfo() {
|
|
uni.showLoading({
|
|
title: '加载中...',
|
|
mask : true
|
|
})
|
|
userBank(this.$Route.query.id).then(res => {
|
|
// 是否使用首次录入信息
|
|
// if(res.is_finish == 0 && res.user_bank) {
|
|
// this.popFirst = true
|
|
// this.baseId = res.user_bank.user_bank_id
|
|
// }
|
|
|
|
let { item, params, business_order_user_bank_id } = res;
|
|
cacheBank(business_order_user_bank_id).then(StorageRes => {
|
|
this.userId = res.business_order_user_bank_id
|
|
uni.hideLoading()
|
|
if(StorageRes === ''){
|
|
this.backParams = params
|
|
return
|
|
}
|
|
let storageParams = []
|
|
storageParams = params.map(val => {
|
|
if(val.type == 'checkbox' && StorageRes[val.key].length > 0){
|
|
val.value = StorageRes[val.key]
|
|
return val
|
|
}
|
|
if(val.type == 'select' && StorageRes[val.key] === null){
|
|
val.value = 0
|
|
return val
|
|
}
|
|
val.value = StorageRes[val.key] === null ? "" : StorageRes[val.key]
|
|
return val;
|
|
})
|
|
this.backParams = storageParams
|
|
}).catch(StorageErr => {
|
|
uni.showToast({
|
|
title: StorageErr.message,
|
|
icon : 'none'
|
|
})
|
|
})
|
|
}).catch( err => {
|
|
uni.showToast({
|
|
title: err.message,
|
|
icon: "none"
|
|
})
|
|
})
|
|
},
|
|
|
|
// 线上保存 - 缓存
|
|
cacheSave() {
|
|
let SaveArr = new Object;
|
|
this.backParams.map(val => {
|
|
SaveArr[val.key] = val.value
|
|
})
|
|
|
|
cacheBankPut(this.$Route.query.id, {...SaveArr}).then(res => {
|
|
uni.showToast({
|
|
title: '保存成功',
|
|
icon: "none"
|
|
})
|
|
}).catch( err => {
|
|
uni.showToast({
|
|
title: err.message,
|
|
icon: "none"
|
|
})
|
|
})
|
|
},
|
|
|
|
// 下一步
|
|
nextStep(){
|
|
// 本地保存备份
|
|
// let newSaveArr = this.backParams.map(val => {
|
|
// return {
|
|
// key: val.key,
|
|
// value: val.value == null ? '' : val.value
|
|
// }
|
|
// })
|
|
|
|
let newSaveArr = new Object;
|
|
this.backParams.map(val => {
|
|
newSaveArr[val.key] = val.value
|
|
// 本地保存备份
|
|
// SaveArr.push({
|
|
// key: val.key,
|
|
// value: val.value
|
|
})
|
|
|
|
// 线上保存
|
|
cacheBankPut(this.$Route.query.id, {...newSaveArr}).then(res => {
|
|
// 跳转
|
|
this.$router.push({
|
|
name: 'ModifyOther',
|
|
params: {
|
|
id: this.$Route.query.id
|
|
}
|
|
})
|
|
}).catch( err => {
|
|
uni.showToast({
|
|
title: err.message,
|
|
icon: "none"
|
|
})
|
|
})
|
|
},
|
|
|
|
// 提示组件 -- 赋值
|
|
seeTips(title, text) {
|
|
this.seeData.seeShow = true
|
|
this.seeData.seeTitle = title
|
|
this.seeData.seeText = text
|
|
},
|
|
|
|
// 跳转新页面-首次录入信息
|
|
goFirst() {
|
|
this.popFirst = false
|
|
this.$Router.replace({name: 'userBank', params: {userId: this.userId, id: this.baseId, type: 'first'}})
|
|
},
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.top {
|
|
background-color: #f5f5f5;
|
|
border-bottom: transparent 140rpx solid;
|
|
position: relative;
|
|
height: 100vh;
|
|
overflow-y: scroll;
|
|
&::after {
|
|
content: '';
|
|
position: absolute;
|
|
background-color: $mian-color;
|
|
border-radius: 0 0 $radius*5 $radius*5;
|
|
width: 100%;
|
|
height: 260rpx;
|
|
left: 0;
|
|
top: 0;
|
|
}
|
|
.base {
|
|
position: absolute;
|
|
z-index: 9;
|
|
padding: $padding + 20 $padding;
|
|
box-sizing: border-box;
|
|
.base-tab {
|
|
overflow: hidden;
|
|
display: flex;
|
|
padding: 0 $padding 20rpx 10rpx;
|
|
position: relative;
|
|
.base-tab-item {
|
|
color: #ffffff;
|
|
position: relative;
|
|
display: flex;
|
|
.base-tab-img {
|
|
width: 120rpx;
|
|
height: 120rpx;
|
|
}
|
|
.base-tab-cont {
|
|
padding-top: $padding - 15;
|
|
box-sizing: border-box;
|
|
.base-tab-name {
|
|
font-size: $title-size-sm;
|
|
}
|
|
.base-tab-tips {
|
|
font-size: $title-size-sm - 2;
|
|
border: 2rpx solid #ffeaea;
|
|
border-radius: $radius * 4;
|
|
width: 110rpx;
|
|
text-align: center;
|
|
opacity: .8;
|
|
margin-top: 10rpx;
|
|
}
|
|
}
|
|
}
|
|
.base-tab-spot {
|
|
text-align: center;
|
|
width: 180rpx;
|
|
float: left;
|
|
margin-top: $margin;
|
|
text {
|
|
border-radius: 50%;
|
|
background-color: #ffffff;
|
|
display: inline-block;
|
|
margin-left: 15rpx;
|
|
&:nth-child(1) {
|
|
width: 10rpx;
|
|
height: 10rpx;
|
|
opacity: .5;
|
|
}
|
|
&:nth-child(2) {
|
|
width: 14rpx;
|
|
height: 14rpx;
|
|
opacity: .8;
|
|
}
|
|
&:nth-child(3) {
|
|
width: 16rpx;
|
|
height: 16rpx;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.white {
|
|
padding: $padding;
|
|
box-sizing: border-box;
|
|
background-color: #ffffff;
|
|
border-radius: $radius-m;
|
|
overflow: hidden;
|
|
.base-title {
|
|
display: flex;
|
|
line-height: 38rpx;
|
|
.base-name {
|
|
flex: 1;
|
|
color: $mian-color;
|
|
font-weight: 600;
|
|
font-size: $title-size + 2;
|
|
}
|
|
.base-number {
|
|
color: #999999;
|
|
font-size: $title-size-m;
|
|
}
|
|
}
|
|
.base-list {
|
|
margin: 0 -10rpx 0;
|
|
overflow: hidden;
|
|
.base-block {
|
|
width: calc(50% - 20rpx);
|
|
// width: calc(100% - 20rpx);
|
|
margin: 20rpx 10rpx;
|
|
float: left;
|
|
.base-block-name {
|
|
// margin: $margin + 20 0 $margin - 10;
|
|
color: #111111;
|
|
display: flex;
|
|
text {
|
|
color: $mian-color;
|
|
padding-right: 10rpx;
|
|
}
|
|
.base-notesIcon {
|
|
width: 32rpx;
|
|
height: 32rpx;
|
|
margin: 6rpx 0 0 10rpx;
|
|
}
|
|
}
|
|
.base-block-textarea {
|
|
background-color: #F6F6F6;
|
|
border-radius: $radius-sm;
|
|
padding: $padding;
|
|
font-size: $title-size-lg;
|
|
color: #111111;
|
|
}
|
|
.base-block-write {
|
|
background-color: #F6F6F6;
|
|
border-radius: $radius-sm;
|
|
padding: 0 $padding;
|
|
box-sizing: border-box;
|
|
position: relative;
|
|
display: flex;
|
|
color: #111111;
|
|
font-size: $title-size-m;
|
|
height: 84rpx;
|
|
line-height: 84rpx;
|
|
margin-top: $margin - 10;
|
|
&.prohibit {
|
|
color: #999999;
|
|
}
|
|
.idcardAdd-picker {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
.base-block-input {
|
|
width: 100%;
|
|
height: 100%;
|
|
font-size: $title-size-lg;
|
|
}
|
|
.base-block-textarea {
|
|
padding: $padding 0;
|
|
}
|
|
.idcardAdd-input {
|
|
display: flex;
|
|
flex: 1;
|
|
}
|
|
.placeholderClass {
|
|
color: #999999;
|
|
}
|
|
image {
|
|
width: 24rpx;
|
|
height: 24rpx;
|
|
position: absolute;
|
|
top: $margin;
|
|
right: $margin;
|
|
}
|
|
}
|
|
.base-block-site {
|
|
display: flex;
|
|
margin: 0 -5rpx;
|
|
.base-site-white {
|
|
background-color: #F6F6F6;
|
|
border-radius: $radius-sm;
|
|
flex: 3;
|
|
color: #111111;
|
|
font-size: $title-size-lg;
|
|
height: 84rpx;
|
|
line-height: 84rpx;
|
|
padding: 0 $padding - 10 0 $padding;
|
|
box-sizing: border-box;
|
|
position: relative;
|
|
margin: 0 5rpx;
|
|
width: 100%;
|
|
.picker {
|
|
width: calc(100% - 30rpx)
|
|
}
|
|
image {
|
|
width: 24rpx;
|
|
height: 24rpx;
|
|
position: absolute;
|
|
top: $margin;
|
|
right: 0;
|
|
}
|
|
}
|
|
}
|
|
.idcardAdd-aline {
|
|
font-size: $title-size-m;
|
|
color: #999999;
|
|
.idcardAdd-aline-write {
|
|
margin-right: $margin;
|
|
}
|
|
}
|
|
&.baseAline {
|
|
width: calc(100% - 20rpx);
|
|
}
|
|
&.radioAline {
|
|
display: flex;
|
|
.base-block-name {
|
|
flex: 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.introduce-btn {
|
|
position: fixed;
|
|
width: 100%;
|
|
left: 0;
|
|
bottom: 0;
|
|
background-color: #f5f5f5;
|
|
text-align: center;
|
|
padding: $padding $padding - 20;
|
|
box-sizing: border-box;
|
|
z-index: 9;
|
|
.btn {
|
|
background-color: $mian-color;
|
|
border: 2rpx solid transparent;
|
|
box-sizing: border-box;
|
|
color: #ffffff;
|
|
border-radius: $radius-sm;
|
|
width: calc(50% - 30rpx);
|
|
margin: 0 15rpx;
|
|
line-height: 90rpx;
|
|
font-size: $title-size;
|
|
float: left;
|
|
&:first-child {
|
|
background-color: transparent;
|
|
border-color: $mian-color;
|
|
color: $mian-color;
|
|
}
|
|
}
|
|
}
|
|
|
|
.backFirst {
|
|
position: fixed;
|
|
width: 100%;
|
|
height: 100vh;
|
|
z-index: 99;
|
|
background-color: rgba(0, 0, 0, .6);
|
|
left: 0;
|
|
top: 0;
|
|
}
|
|
|
|
.contFirst {
|
|
display: -webkit-box;
|
|
-webkit-box-orient: vertical;
|
|
-webkit-box-pack: center;
|
|
position: fixed;
|
|
left: 0;
|
|
right: 0;
|
|
top: 0;
|
|
bottom: 0;
|
|
z-index: 100;
|
|
padding: 0 10%;
|
|
box-sizing: border-box;
|
|
.tipsWhite {
|
|
background-color: #ffffff;
|
|
border-radius: 20rpx;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.tipsWhite-top {
|
|
padding: 30rpx;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.tipsWhite-name {
|
|
text-align: center;
|
|
color: #111111;
|
|
font-size: 34rpx;
|
|
font-weight: 600;
|
|
margin-bottom: 30rpx;
|
|
padding-bottom: $padding;
|
|
border-bottom: solid #F6F6F6 2rpx;
|
|
}
|
|
|
|
.tipsWhite-text {
|
|
font-size: 30rpx;
|
|
color: #666666;
|
|
line-height: 48rpx;
|
|
text-align: center;
|
|
padding: $padding + 10 0;
|
|
}
|
|
|
|
.tipsWhite-btn {
|
|
line-height: 90rpx;
|
|
border-top: 2rpx solid #F6F6F6;
|
|
display: flex;
|
|
box-sizing: border-box;
|
|
.idcardBtn-go {
|
|
width: 50%;
|
|
background-color: $mian-color;
|
|
color: #ffffff;
|
|
height: 90rpx;
|
|
line-height: 90rpx;
|
|
font-size: $title-size;
|
|
text-align: center;
|
|
&.active {
|
|
background-color: #ffffff;
|
|
color: $mian-color;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</style> |