328 lines
7.2 KiB
Vue
328 lines
7.2 KiB
Vue
<template>
|
|
<view>
|
|
<!-- 表单组件 -->
|
|
<view class="form-wrapper" :style="appThemeStyle">
|
|
{{form.imageList}}{{form.license}}
|
|
<u-form :model="form" ref="uForm" label-width="140rpx">
|
|
<!-- {{JSON.stringify(setting)}} -->
|
|
<u-form-item label="所在地区" prop="region">
|
|
<select-region ref="sRegion" :disabled="disabled" v-model="form.region" />
|
|
</u-form-item>
|
|
<u-form-item label="公司名称" prop="company">
|
|
<u-input v-model="form.company" :disabled="disabled" placeholder="请输入公司名称" />
|
|
</u-form-item>
|
|
<u-form-item label="联系电话" prop="phone">
|
|
<u-input v-model="form.phone" :disabled="disabled" placeholder="请输入联系电话" />
|
|
</u-form-item>
|
|
<u-form-item label="姓名" prop="real_name">
|
|
<u-input v-model="form.real_name" :disabled="disabled" placeholder="请输入商户姓名" />
|
|
</u-form-item>
|
|
<u-form-item label="手机号码" prop="mobile">
|
|
<u-input v-model="form.mobile" maxlength="11" :disabled="disabled" placeholder="请输入商户手机号" />
|
|
</u-form-item>
|
|
<u-form-item v-for="(item,imageIndex) in imageList" :key="imageIndex" :label="form.itemLabel[imageIndex]"
|
|
:prop="form.imageProp[imageIndex]">
|
|
<view class="image-preview">
|
|
<image mode="widthFix" :src="item.path" class="sfz" @click="chooseImage(imageIndex)"></image>
|
|
<text class="image-delete iconfont icon-shanchu" @click="deleteImage(imageIndex)"></text>
|
|
</view>
|
|
</u-form-item>
|
|
<view class="form-license dis-flex flex-x-center flex-y-center">
|
|
<view class="license-radio dis-flex flex-y-center" @click="isRead = !isRead">
|
|
<text class="license-icon f-38 iconfont icon-radio"
|
|
:class="[isRead ? 'c-violet' : 'col-bb']"></text>
|
|
<text class="f-28 col-80">我已阅读并了解</text>
|
|
</view>
|
|
<text @click="handleShowLicense()"
|
|
class="f-28 c-violet">【{{ form.licenseTitle }}】</text>
|
|
</view>
|
|
</u-form>
|
|
</view>
|
|
<!-- 操作按钮 -->
|
|
<view class="footer">
|
|
<view class="btn-wrapper">
|
|
<view class="btn-item btn-item-main" :class="{ disabled }" @click="handleSubmit()">{{ form.submitText }}
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import SelectRegion from '@/components/select-region/select-region'
|
|
import {
|
|
isMobile
|
|
} from '@/utils/verify'
|
|
import Empty from '@/components/empty'
|
|
import * as ApplyApi from '@/api/apply.js'
|
|
import SettingModel from '@/common/model/dealer/Setting'
|
|
|
|
// 表单验证规则
|
|
const rules = {
|
|
real_name: [{
|
|
required: true,
|
|
message: '请输入您的真实姓名',
|
|
trigger: ['blur', 'change']
|
|
}],
|
|
company: [{
|
|
required: true,
|
|
message: '请输入您的公司名称',
|
|
trigger: ['blur', 'change']
|
|
}],
|
|
phone: [{
|
|
required: true,
|
|
message: '请输入联系电话',
|
|
trigger: ['blur', 'change']
|
|
}],
|
|
mobile: [{
|
|
required: true,
|
|
message: '请输入手机号',
|
|
trigger: ['blur', 'change']
|
|
}, {
|
|
// 自定义验证函数
|
|
validator: (rule, value, callback) => {
|
|
// 返回true表示校验通过,返回false表示不通过
|
|
return isMobile(value)
|
|
},
|
|
message: '手机号码不正确',
|
|
// 触发器可以同时用blur和change
|
|
trigger: ['blur'],
|
|
}],
|
|
region: [{
|
|
required: true,
|
|
message: '请选择省市区',
|
|
trigger: ['blur', 'change'],
|
|
type: 'array'
|
|
}],
|
|
detail: [{
|
|
required: true,
|
|
message: '请输入详细地址',
|
|
trigger: ['blur', 'change']
|
|
}],
|
|
}
|
|
|
|
const maxImageLength = 2
|
|
|
|
|
|
export default {
|
|
components: {
|
|
Empty
|
|
},
|
|
props: {
|
|
form: {
|
|
type: Object,
|
|
default: null
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
rules,
|
|
// 入驻协议阅读状态
|
|
isRead: false
|
|
}
|
|
},
|
|
created() {},
|
|
// 必须要在onReady生命周期,因为onLoad生命周期组件可能尚未创建完毕
|
|
onReady() {
|
|
this.$refs.uForm.setRules(this.rules)
|
|
},
|
|
methods: {
|
|
// 选择图片
|
|
chooseImage(imageIndex) {
|
|
const app = this
|
|
const oldImageList = app.imageList
|
|
const { form } = this
|
|
// 是否可编辑
|
|
if (form.apply_status && form.apply_status != 30) {
|
|
return false
|
|
}
|
|
// 选择图片
|
|
uni.chooseImage({
|
|
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
|
|
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
|
|
success({
|
|
tempFiles
|
|
}) {
|
|
// 传递给父级
|
|
app.$emit('chooseImage',imageIndex,tempFiles[0])
|
|
}
|
|
});
|
|
|
|
},
|
|
|
|
// 删除图片
|
|
deleteImage(imageIndex) {
|
|
// 传递给父级
|
|
this.$emit('deleteImage', imageIndex)
|
|
|
|
},
|
|
|
|
// 显示入驻协议弹窗
|
|
handleShowLicense() {
|
|
this.$emit('showLicense',true)
|
|
this.showLicense = true
|
|
},
|
|
|
|
// 表单提交
|
|
handleSubmit() {
|
|
const app = this
|
|
const { form, imageList } = this
|
|
// 判断是否需要上传图片
|
|
if (imageList[0].size == 100 || imageList[1].size == 100 || imageList[2].size == 100) {
|
|
app.$toast('请上传图片!')
|
|
return false
|
|
}
|
|
app.$refs.uForm.validate(valid => {
|
|
if (valid) {
|
|
// 传递给父级
|
|
app.$emit('handleSubmit', form, imageList)
|
|
}
|
|
})
|
|
}
|
|
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
.form-wrapper {
|
|
margin: 20rpx auto 20rpx auto;
|
|
padding: 0 40rpx;
|
|
width: 94%;
|
|
box-shadow: 0 1rpx 5rpx 0px rgba(0, 0, 0, 0.05);
|
|
border-radius: 16rpx;
|
|
background: #fff;
|
|
}
|
|
.form-license {
|
|
padding: 20rpx;
|
|
}
|
|
|
|
// 上传凭证
|
|
.row-voucher {
|
|
padding: 24rpx 20rpx;
|
|
|
|
.image-list {
|
|
padding: 0 20rpx;
|
|
margin-top: 20rpx;
|
|
margin-bottom: -20rpx;
|
|
|
|
&:after {
|
|
clear: both;
|
|
content: " ";
|
|
display: table;
|
|
}
|
|
|
|
.image {
|
|
display: block;
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
|
|
.image-picker,
|
|
.image-preview {
|
|
width: 184rpx;
|
|
height: 184rpx;
|
|
margin-right: 30rpx;
|
|
margin-bottom: 30rpx;
|
|
float: left;
|
|
|
|
&:nth-child(3n+0) {
|
|
margin-right: 0;
|
|
}
|
|
}
|
|
|
|
.image-picker {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
align-items: center;
|
|
border: 1rpx dashed #ccc;
|
|
color: #ccc;
|
|
|
|
.choose-icon {
|
|
font-size: 48rpx;
|
|
margin-bottom: 6rpx;
|
|
}
|
|
|
|
.choose-text {
|
|
font-size: 24rpx;
|
|
}
|
|
}
|
|
|
|
.image-preview {
|
|
position: relative;
|
|
|
|
.image-delete {
|
|
position: absolute;
|
|
top: -15rpx;
|
|
right: -15rpx;
|
|
height: 42rpx;
|
|
width: 42rpx;
|
|
background: rgba(0, 0, 0, 0.64);
|
|
border-radius: 50%;
|
|
color: #fff;
|
|
font-weight: bolder;
|
|
font-size: 22rpx;
|
|
z-index: 10;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.pops-content {
|
|
padding: 20rpx;
|
|
}
|
|
|
|
.sfz,
|
|
.sfz1,
|
|
.sfz2,
|
|
.yyzz {
|
|
width: 140rpx;
|
|
padding-top: 20rpx;
|
|
padding-right: 10rpx;
|
|
}
|
|
|
|
/* 底部操作栏 */
|
|
|
|
.footer {
|
|
margin-top: 80rpx;
|
|
|
|
.btn-wrapper {
|
|
height: 100%;
|
|
// display: flex;
|
|
// align-items: center;
|
|
padding: 0 20rpx;
|
|
}
|
|
|
|
.btn-item {
|
|
flex: 1;
|
|
font-size: 28rpx;
|
|
height: 86rpx;
|
|
color: #fff;
|
|
border-radius: 50rpx;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
}
|
|
|
|
.btn-item-wechat {
|
|
background: #0ba90b;
|
|
margin-bottom: 26rpx;
|
|
}
|
|
|
|
.btn-item-main {
|
|
background: linear-gradient(to right, $main-bg, $main-bg2);
|
|
|
|
// 禁用按钮
|
|
&.disabled {
|
|
opacity: 0.6;
|
|
}
|
|
}
|
|
|
|
}
|
|
</style>
|