HomeLease/pages/InstallationAgreement/InstallationAgreement.vue
2025-09-10 11:06:11 +08:00

165 lines
4.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="page">
<uv-form ref="form" :model="userInfo" :rules="rules" labelPosition="left" labelWidth="auto">
<uv-form-item borderBottom label="电话:" prop="userInfo.phone">
<uv-input v-model="userInfo.phone" border="none"></uv-input>
</uv-form-item>
<uv-form-item borderBottom label="地址:" prop="userInfo.location">
<uv-input v-model="userInfo.location" border="none"></uv-input>
</uv-form-item>
<uv-form-item borderBottom label="主体名称:" prop="userInfo.name">
<uv-input v-model="userInfo.name" border="none"></uv-input>
</uv-form-item>
<uv-form-item borderBottom label="统一社会信用代码:" prop="userInfo.code">
<uv-input v-model="userInfo.code" border="none"></uv-input>
</uv-form-item>
<uv-form-item label="营业执照" prop="pics">
<uv-upload
:fileList="fileList"
:maxCount="9"
:previewFullImage="true"
multiple
name="1"
@afterRead="afterRead"
@delete="deletePic"
></uv-upload>
</uv-form-item>
<uv-button
customStyle="margin-top: 10px"
text="提交"
type="primary"
@click="submit"
></uv-button>
<uv-button customStyle="margin-top: 10px" text="重置" type="error" @click="reset"></uv-button>
</uv-form>
<uv-action-sheet
ref="sexSelect"
:actions="actions"
description="如果选择保密会报错"
title="请选择性别"
@select="sexSelect"
>
</uv-action-sheet>
</view>
</template>
<script>
export default {
data() {
return {
userInfo: {
name: '',
sex: '',
code: '',
phone: '',
location: '',
businessLicense: '',
pics: [],
},
actions: [
{
name: '男',
},
{
name: '女',
},
{
name: '保密',
},
],
rules: {
'userInfo.name': {
type: 'string',
required: true,
message: '请填写姓名',
trigger: ['blur', 'change'],
},
'userInfo.sex': {
type: 'string',
max: 1,
required: true,
message: '请选择男或女',
trigger: ['blur', 'change'],
},
pics: {
type: 'array',
required: true,
message: '请上传照片',
trigger: ['blur', 'change'],
},
},
radio: '',
switchVal: false,
}
},
methods: {
// 提交
submit() {
// 如果有错误会在catch中返回报错信息数组校验通过则在then中返回true
this.$refs.form
.validate()
.then(res => {
uni.showToast({
icon: 'success',
title: '校验通过',
})
})
.catch(errors => {
uni.showToast({
icon: 'error',
title: '校验失败',
})
})
},
// 重置
reset() {
this.$refs.form.resetFields()
this.$refs.form.clearValidate()
},
// 性别选择
showSexSelect() {
this.$refs.sexSelect.open()
this.hideKeyboard()
},
// 性别选择返回结果
sexSelect(e) {
this.userInfo.sex = e.name
// 对部分表单字段进行校验
this.$refs.form.validateField('userInfo.sex', err => {
// 处理错误后的逻辑
})
},
hideKeyboard() {
uni.hideKeyboard()
},
afterRead(e) {
// 这里直接模拟上传成功这里的真实逻辑参考uv-upload组件示例
setTimeout(() => {
this.fileList = [
{
url: 'https://via.placeholder.com/100x100.png/3c9cff',
},
{
url: 'https://via.placeholder.com/100x100.png/ff0000',
},
]
this.userInfo.pics = this.fileList
this.$refs.form.validateField('pics', err => {
// 处理错误后的逻辑
})
})
},
deletePic(e) {
this.fileList.splice(e.index, 1)
this.$refs.form.validateField('pics', err => {
// 处理错误后的逻辑
})
},
},
}
</script>
<style lang="scss">
.page {
padding: 10rpx 30rpx;
}
</style>