You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
house/fount/views/center.vue

261 lines
12 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div>
<!-- 表单容器使用 Element UI 的表单组件 -->
<el-form
class="detail-form-content" <!-- -->
ref="ruleForm" <!-- 表单引用用于表单验证 -->
:model="ruleForm" <!-- 表单数据绑定 -->
label-width="80px" <!-- 表单标签宽度 -->
>
<el-row> <!-- 表单布局行 -->
<el-col :span="12"> <!-- 12列宽布局 -->
<!-- 用户名表单项仅当 flag 'yonghu' 时显示 -->
<el-form-item v-if="flag=='yonghu'" label="用户名" prop="yonghuming">
<!-- 用户名输入框,只读 -->
<el-input v-model="ruleForm.yonghuming" readonly placeholder="用户名" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="12"> <!-- 12列宽布局 -->
<!-- 姓名表单项,仅当 flag 为 'yonghu' 时显示 -->
<el-form-item v-if="flag=='yonghu'" label="姓名" prop="xingming">
<!-- 姓名输入框 -->
<el-input v-model="ruleForm.xingming" placeholder="姓名" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="24"> <!-- 24列宽布局占满整行 -->
<!-- 头像表单项,仅当 flag 为 'yonghu' 时显示 -->
<el-form-item v-if="flag=='yonghu'" label="头像" prop="touxiang">
<!-- 文件上传组件,用于上传头像 -->
<file-upload
tip="点击上传头像" <!-- 提示信息 -->
action="file/upload" <!-- 上传接口地址 -->
:limit="3" <!-- 上传文件数量限制 -->
:multiple="true" <!-- 是否支持多文件上传 -->
:fileUrls="ruleForm.touxiang?ruleForm.touxiang:''" <!-- 已上传文件地址 -->
@change="yonghutouxiangUploadChange" <!-- 文件上传变化事件 -->
></file-upload>
</el-form-item>
</el-col>
<el-col :span="12"> <!-- 12列宽布局 -->
<!-- 性别表单项,仅当 flag 为 'yonghu' 时显示 -->
<el-form-item v-if="flag=='yonghu'" label="性别" prop="xingbie">
<!-- 性别选择下拉框 -->
<el-select v-model="ruleForm.xingbie" placeholder="请选择性别">
<!-- 性别选项循环 -->
<el-option
v-for="(item,index) in yonghuxingbieOptions"
v-bind:key="index"
:label="item"
:value="item">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12"> <!-- 12列宽布局 -->
<!-- 职业表单项,仅当 flag 为 'yonghu' 时显示 -->
<el-form-item v-if="flag=='yonghu'" label="职业" prop="zhiye">
<!-- 职业输入框 -->
<el-input v-model="ruleForm.zhiye" placeholder="职业" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="12"> <!-- 12列宽布局 -->
<!-- 联系电话表单项,仅当 flag 为 'yonghu' 时显示 -->
<el-form-item v-if="flag=='yonghu'" label="联系电话" prop="lianxidianhua">
<!-- 联系电话输入框 -->
<el-input v-model="ruleForm.lianxidianhua" placeholder="联系电话" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="12"> <!-- 12列宽布局 -->
<!-- 身份证表单项,仅当 flag 为 'yonghu' 时显示 -->
<el-form-item v-if="flag=='yonghu'" label="身份证" prop="shenfenzheng">
<!-- 身份证输入框 -->
<el-input v-model="ruleForm.shenfenzheng" placeholder="身份证" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="12"> <!-- 12列宽布局 -->
<!-- 房主账号表单项,仅当 flag 为 'fangzhu' 时显示 -->
<el-form-item v-if="flag=='fangzhu'" label="房主账号" prop="fangzhuzhanghao">
<!-- 房主账号输入框,只读 -->
<el-input v-model="ruleForm.fangzhuzhanghao" readonly placeholder="房主账号" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="12"> <!-- 12列宽布局 -->
<!-- 房主姓名表单项,仅当 flag 为 'fangzhu' 时显示 -->
<el-form-item v-if="flag=='fangzhu'" label="房主姓名" prop="fangzhuxingming">
<!-- 房主姓名输入框 -->
<el-input v-model="ruleForm.fangzhuxingming" placeholder="房主姓名" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="12"> <!-- 12列宽布局 -->
<!-- 性别表单项,仅当 flag 为 'fangzhu' 时显示 -->
<el-form-item v-if="flag=='fangzhu'" label="性别" prop="xingbie">
<!-- 性别选择下拉框 -->
<el-select v-model="ruleForm.xingbie" placeholder="请选择性别">
<!-- 性别选项循环 -->
<el-option
v-for="(item,index) in fangzhuxingbieOptions"
v-bind:key="index"
:label="item"
:value="item">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="24"> <!-- 24列宽布局占满整行 -->
<!-- 头像表单项,仅当 flag 为 'fangzhu' 时显示 -->
<el-form-item v-if="flag=='fangzhu'" label="头像" prop="touxiang">
<!-- 文件上传组件,用于上传头像 -->
<file-upload
tip="点击上传头像" <!-- 提示信息 -->
action="file/upload" <!-- 上传接口地址 -->
:limit="3" <!-- 上传文件数量限制 -->
:multiple="true" <!-- 是否支持多文件上传 -->
:fileUrls="ruleForm.touxiang?ruleForm.touxiang:''" <!-- 已上传文件地址 -->
@change="fangzhutouxiangUploadChange" <!-- 文件上传变化事件 -->
></file-upload>
</el-form-item>
</el-col>
<el-col :span="12"> <!-- 12列宽布局 -->
<!-- 手机表单项,仅当 flag 为 'fangzhu' 时显示 -->
<el-form-item v-if="flag=='fangzhu'" label="手机" prop="shouji">
<!-- 手机输入框 -->
<el-input v-model="ruleForm.shouji" placeholder="手机" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="12"> <!-- 12列宽布局 -->
<!-- 身份证表单项,仅当 flag 为 'fangzhu' 时显示 -->
<el-form-item v-if="flag=='fangzhu'" label="身份证" prop="shenfenzheng">
<!-- 身份证输入框 -->
<el-input v-model="ruleForm.shenfenzheng" placeholder="身份证" clearable></el-input>
</el-form-item>
</el-col>
<el-form-item v-if="flag=='users'" label="用户名" prop="username">
<!-- 用户名表单项,仅当 flag 为 'users' 时显示 -->
<el-input v-model="ruleForm.username"
placeholder="用户名"></el-input>
</el-form-item>
<el-col :span="24"> <!-- 24 -->
<el-form-item>
<!-- 修改按钮点击触发表单提交 -->
<el-button type="primary" @click="onUpdateHandler"> </el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</template>
<script>
// 引入表单验证工具函数
import { isNumber,isIntNumer,isEmail,isMobile,isPhone,isURL,checkIdCard } from "@/utils/validate";
export default {
data() {
return {
ruleForm: {}, // 表单数据对象
flag: '', // 标志位,用于区分用户类型
usersFlag: false, // 用户标志位
yonghuxingbieOptions: [], // 用户性别选项
fangzhuxingbieOptions: [], // 房主性别选项
};
},
mounted() {
// 组件挂载后执行
var table = this.$storage.get("sessionTable"); // 获取存储的会话表
this.flag = table; // 设置标志位
// 发起 HTTP 请求获取表单数据
this.$http({
url: `${this.$storage.get("sessionTable")}/session`,
method: "get"
}).then(({ data }) => {
if (data && data.code === 0) { // 请求成功
this.ruleForm = data.data; // 填充表单数据
} else {
this.$message.error(data.msg); // 显示错误消息
}
});
// 设置用户性别选项
this.yonghuxingbieOptions = "男,女".split(',')
// 设置房主性别选项
this.fangzhuxingbieOptions = "男,女".split(',')
},
methods: {
// 用户头像上传变化事件
yonghutouxiangUploadChange(fileUrls) {
this.ruleForm.touxiang = fileUrls; // 更新表单头像数据
},
// 房主头像上传变化事件
fangzhutouxiangUploadChange(fileUrls) {
this.ruleForm.touxiang = fileUrls; // 更新表单头像数据
},
// 表单修改提交事件
onUpdateHandler() {
// 用户名验证,当标志位为 'yonghu' 时
if((!this.ruleForm.yonghuming)&& 'yonghu'==this.flag){
this.$message.error('用户名不能为空'); // 提示用户名不能为空
return
}
// 密码验证,当标志位为 'yonghu' 时
if((!this.ruleForm.mima)&& 'yonghu'==this.flag){
this.$message.error('密码不能为空'); // 提示密码不能为空
return
}
// 联系电话格式验证,当标志位为 'yonghu' 时
if( 'yonghu' ==this.flag && this.ruleForm.lianxidianhua&&(!isMobile(this.ruleForm.lianxidianhua))){
this.$message.error(`联系电话应输入手机格式`); // 提示联系电话格式错误
return
}
// 身份证格式验证,当标志位为 'yonghu' 时
if( 'yonghu' ==this.flag && this.ruleForm.shenfenzheng&&(!checkIdCard(this.ruleForm.shenfenzheng))){
this.$message.error(`身份证应输入身份证格式`); // 提示身份证格式错误
return
}
// 房主账号验证,当标志位为 'fangzhu' 时
if((!this.ruleForm.fangzhuzhanghao)&& 'fangzhu'==this.flag){
this.$message.error('房主账号不能为空'); // 提示房主账号不能为空
return
}
// 密码验证,当标志位为 'fangzhu' 时
if((!this.ruleForm.mima)&& 'fangzhu'==this.flag){
this.$message.error('密码不能为空'); // 提示密码不能为空
return
}
// 房主姓名验证,当标志位为 'fangzhu' 时
if((!this.ruleForm.fangzhuxingming)&& 'fangzhu'==this.flag){
this.$message.error('房主姓名不能为空'); // 提示房主姓名不能为空
return
}
// 手机格式验证,当标志位为 'fangzhu' 时
if( 'fangzhu' ==this.flag && this.ruleForm.shouji&&(!isMobile(this.ruleForm.shouji))){
this.$message.error(`手机应输入手机格式`); // 提示手机格式错误
return
}
// 身份证格式验证,当标志位为 'fangzhu' 时
if( 'fangzhu' ==this.flag && this.ruleForm.shenfenzheng&&(!checkIdCard(this.ruleForm.shenfenzheng))){
this.$message.error(`身份证应输入身份证格式`); // 提示身份证格式错误
return
}
// 发起 HTTP 请求提交表单数据
this.$http({
url: `${this.$storage.get("sessionTable")}/update`,
method: "post",
data: this.ruleForm
}).then(({ data }) => {
if (data && data.code === 0) { // 提交成功
this.$message({
message: "修改信息成功", // 成功消息
type: "success",
duration: 1500,
onClose: () => {
}
});
} else {
this.$message.error(data.msg); // 提交失败消息
}
});
}
}
};
</script>
<style lang="scss" scoped>
// 组件私有样式,使用 SCSS 语法
</style>