持续学习vue3
template
<template>
<view class="formSub">
<uni-forms ref="form" :modelValue="formData" :rules="rules" label-position="top">
<uni-forms-item label="企业名称" name="name">
<view class="lebelPosition">
企业名称 <text>*</text>
</view>
<uni-easyinput type="text" v-model="formData.name" placeholder="请输入企业名称" />
</uni-forms-item>
<uni-forms-item label="联系人" name="linkman">
<view class="lebelPosition">
联系人 <text>*</text>
</view>
<uni-easyinput type="text" v-model="formData.linkman" placeholder="请输入联系人昵称" />
</uni-forms-item>
<uni-forms-item label="联系人电话" name="linktel">
<view class="lebelPosition">
联系人电话 <text>*</text>
</view>
<uni-easyinput type="text" v-model="formData.linktel" placeholder="请输入联系人电话" />
</uni-forms-item>
<view class="" v-if="pageFlag==1">
<uni-forms-item label="日用电量" name="electricityDay">
<view class="lebelPosition">
日用电量 <text>*</text>
</view>
<uni-easyinput type="text" v-model="formData.electricityDay" placeholder="请输入日用电量" />
</uni-forms-item>
<uni-forms-item label="办公地址" name="businessAddress">
<view class="lebelPosition">
办公地址 <text>*</text>
</view>
<uni-easyinput type="text" v-model="formData.businessAddress" placeholder="请输入办公地址" />
</uni-forms-item>
</view>
<view class="" v-if="pageFlag==2">
<uni-forms-item label="当前社保缴纳基数" name="socialBase">
<view class="lebelPosition">
当前社保缴纳基数 <text>*</text>
</view>
<uni-easyinput type="text" v-model="formData.socialBase" placeholder="请输入当前社保缴纳基数" />
</uni-forms-item>
<uni-forms-item label="社保缴纳人数" name="socialPerson">
<view class="lebelPosition">
社保缴纳人数 <text>*</text>
</view>
<uni-easyinput type="text" v-model="formData.socialPerson" placeholder="请输入社保缴纳人数" />
</uni-forms-item>
<uni-forms-item label="办公地址" name="businessAddress">
<view class="lebelPosition">
办公地址 <text>*</text>
</view>
<uni-easyinput type="text" v-model="formData.businessAddress" placeholder="请输入办公地址" />
</uni-forms-item>
</view>
<view class="" v-if="pageFlag==3">
<uni-forms-item label="企业地址" name="businessAddress">
<view class="lebelPosition">
企业地址 <text>*</text>
</view>
<uni-easyinput type="text" v-model="formData.businessAddress" placeholder="请输入办公地址" />
</uni-forms-item>
</view>
</uni-forms>
<view class="formsubBtn">
<button @click="submit">确认提交</button>
</view>
<uni-popup ref="popup" background-color="#fff" @change="change">
<view class="popup-content" :class="{ 'popup-height': type === 'left' || type === 'right' }">
<view class="tanchuceng">
<view class="from_img">
<image class="fromimg" src="../../static/from/success.png" mode=""></image>
</view>
<view class="from_succ">
提交成功
</view>
<view class="from_text">
请耐心等待审核...
</view>
</view>
</view>
</uni-popup>
</view>
</template>
这是vue2
<script>
export default {
onLoad(option) {
this.$refs.form.clearValidate([])
// detail=1 实惠售电 detail=2 灵活用工 detail=3 贷款申请
console.log(option, 'option');
if (option.detail == 1) {
this.pageFlag = 1
this.formData.electricityDay = ""
this.formData.businessAddress = ""
this.rules.electricityDay = {
rules: [{
required: true,
errorMessage: '请输入日用电量',
}]
}
this.rules.businessAddress = {
rules: [{
required: true,
errorMessage: '请输入办公地址',
}]
}
uni.setNavigationBarTitle({
title: '实惠售电'
})
} else if (option.detail == 2) {
this.pageFlag = 2
this.formData.socialBase = ""
this.formData.socialPerson = ""
this.formData.businessAddress = ""
this.rules.socialBase = {
rules: [{
required: true,
errorMessage: '请输入当前社保缴纳基数',
}]
}
this.rules.socialPerson = {
rules: [{
required: true,
errorMessage: '请输入社保缴纳人数',
}]
}
this.rules.businessAddress = {
rules: [{
required: true,
errorMessage: '请输入办公地址',
}]
}
uni.setNavigationBarTitle({
title: '灵活用工'
})
} else {
this.pageFlag = 3
this.formData.businessAddress = ""
this.rules.businessAddress = {
rules: [{
required: true,
errorMessage: '请输入办公地址',
}]
}
uni.setNavigationBarTitle({
title: '贷款申请'
})
}
},
data() {
return {
pageFlag: 1,
// 表单数据
formData: {
name: '',
linkman: '',
linktel: '',
},
rules: {
// 对name字段进行必填验证
name: {
rules: [{
required: true,
errorMessage: '请输入企业名称',
}
]
},
linkman: {
rules: [{
required: true,
errorMessage: '请输入联系人',
}]
},
linktel: {
rules: [{
required: true,
errorMessage: '请输入联系人电话',
}]
},
}
}
},
methods: {
submit() {
this.$refs.form.validate().then(res => {
console.log('表单数据信息:', res);
this.$refs.popup.open('center')
if(this.pageFlag==3){
uni.setStorageSync('daikuan', 1)
}
setTimeout(()=>{
uni.navigateBack({
delta: 1
});
},2000)
// 清除验证
// this.$refs.form.clearValidate()
}).catch(err => {
console.log('表单错误信息:', err);
})
}
}
}
</script>
vue3
<script>
import {
onLoad
} from "@dcloudio/uni-app"
import {
ref,
reactive,
onMounted
} from 'vue'
let onloadVal = null
export default {
setup() {
let pageFlag = ref(0)
const formData = reactive({
name: '',
linkman: '',
linktel: ''
})
const rules = reactive({
// 对name字段进行必填验证
name: {
rules: [{
required: true,
errorMessage: '请输入企业名称',
}]
},
linkman: {
rules: [{
required: true,
errorMessage: '请输入联系人',
}]
},
linktel: {
rules: [{
required: true,
errorMessage: '请输入联系人电话',
}]
},
})
const form = ref(null)
const popup = ref(null)
onLoad((option) => {
// form.value.clearValidate([])
// detail=1 实惠售电 detail=2 灵活用工 detail=3 贷款申请
console.log(option, 'option');
onloadVal = option.detail
pageFlag.value = onloadVal
})
const submit = () => {
form.value.validate().then(res => {
console.log('表单数据信息:', res);
popup.value.open('center')
if (pageFlag == 3) {
uni.setStorageSync('daikuan', 1)
}
setTimeout(() => {
uni.navigateBack({
delta: 1
});
}, 2000)
// 清除验证
// form.value.clearValidate()
}).catch(err => {
console.log('表单错误信息:', err);
})
}
onMounted(() => {
console.log(pageFlag.value, '---');
if (pageFlag.value == 1) {
formData.electricityDay = ""
formData.businessAddress = ""
console.log(formData, 'formData===');
rules.electricityDay = {
rules: [{
required: true,
errorMessage: '请输入日用电量',
}]
}
rules.businessAddress = {
rules: [{
required: true,
errorMessage: '请输入办公地址',
}]
}
uni.setNavigationBarTitle({
title: '实惠售电'
})
} else if (pageFlag.value == 2) {
formData.socialBase = ""
formData.socialPerson = ""
formData.businessAddress = ""
rules.socialBase = {
rules: [{
required: true,
errorMessage: '请输入当前社保缴纳基数',
}]
}
rules.socialPerson = {
rules: [{
required: true,
errorMessage: '请输入社保缴纳人数',
}]
}
rules.businessAddress = {
rules: [{
required: true,
errorMessage: '请输入办公地址',
}]
}
uni.setNavigationBarTitle({
title: '灵活用工'
})
} else {
formData.businessAddress = ""
rules.businessAddress = {
rules: [{
required: true,
errorMessage: '请输入办公地址',
}]
}
uni.setNavigationBarTitle({
title: '贷款申请'
})
}
})
return {
pageFlag,
formData,
rules,
submit,
form,
popup
}
}
}
</script>
css
<style lang="scss" scoped>
.formSub {
background-color: #F6F6F6;
height: 100vh;
padding-top: 20upx;
.tanchuceng {
width: 535upx;
height: 274upx;
border-radius: 10rpx;
padding: 41upx 0;
box-sizing: border-box;
.from_img {
width: 100%;
display: flex;
align-items: center;
justify-content: center;
.fromimg {
width: 68upx;
height: 67upx;
}
}
.from_succ {
margin-top: 16upx;
text-align: center;
font-size: 30upx;
font-family: PingFang SC;
font-weight: 500;
color: #080808;
}
.from_text {
margin-top: 12upx;
text-align: center;
font-size: 28upx;
font-family: PingFang SC;
font-weight: 500;
color: #999999;
}
}
}
</style>
<style lang="scss">
.formSub .uni-forms-item.is-direction-top .uni-forms-item__label {
display: none;
}
.formSub .is-input-border {
border: none;
border-bottom: 1upx solid #EEEEEE;
border-radius: 0;
}
.formSub .uni-easyinput__content-input {
text-align: right;
padding-right: 30upx;
padding-left: 210upx !important;
}
.formSub .uni-forms-item__content {
position: relative;
height: 93upx !important;
.uni-easyinput__content-input {
height: 93upx !important;
}
.lebelPosition {
position: absolute;
top: 28upx;
left: 43upx;
z-index: 9;
text {
color: #D5132B;
}
}
}
.formSub .uni-forms-item {
margin-bottom: 0 !important;
}
.formSub .uni-forms-item__error {
z-index: 9;
// display: none;
}
.formsubBtn {
margin-top: 36upx;
button {
width: 696upx;
height: 85upx;
background: #01417E;
border-radius: 4upx;
font-size: 32upx;
font-family: PingFang SC;
font-weight: 500;
color: #FFFFFF;
}
}
.formSub {
.uni-popup .uni-popup__wrapper {
border-radius: 10upx;
}
}
</style>