From 41aaf3c396081a45908c9a964c43e523cc4a1f4e Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期四, 11 七月 2024 10:55:05 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- src/views/user/teacher/edit.vue | 166 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 166 insertions(+), 0 deletions(-) diff --git a/src/views/user/teacher/edit.vue b/src/views/user/teacher/edit.vue new file mode 100644 index 0000000..e9c9774 --- /dev/null +++ b/src/views/user/teacher/edit.vue @@ -0,0 +1,166 @@ +<template> + <div class="app-container"> + + <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules"> + <el-form-item label="鐪熷疄濮撳悕锛�" prop="realName" required> + <el-input v-model="form.realName"></el-input> + </el-form-item> + <el-form-item label="鎵嬫満鍙风爜锛�" prop="phone" required> + <el-input v-model="form.phone"></el-input> + </el-form-item> + <el-form-item label="鐧诲綍璐﹀彿锛�" prop="userName" required> + <el-input v-model="form.userName"></el-input> + </el-form-item> + <el-form-item label="鐧诲綍瀵嗙爜锛�" prop="password" required> + <el-input v-model="form.password" show-password></el-input> + </el-form-item> + <el-form-item label="骞撮緞锛�"> + <el-input v-model="form.age"></el-input> + </el-form-item> + <el-form-item label="鎬у埆锛�"> + <el-select v-model="form.sex" placeholder="鎬у埆" clearable> + <el-option v-for="item in sexEnum" :key="item.key" :value="item.key" :label="item.value"></el-option> + </el-select> + </el-form-item> + <el-form-item label="鍑虹敓鏃ユ湡锛�"> + <el-date-picker v-model="form.birthDay" value-format="yyyy-MM-dd" type="date" placeholder="閫夋嫨鏃ユ湡"/> + </el-form-item> + <el-form-item label="鐘舵�侊細" required> + <el-select v-model="form.status" placeholder="鐘舵��"> + <el-option v-for="item in statusEnum" :key="item.key" :value="item.key" :label="item.value"></el-option> + </el-select> + </el-form-item> + <el-form-item> + <el-button type="primary" @click="submitForm">鎻愪氦</el-button> + <el-button @click="resetForm">閲嶇疆</el-button> + </el-form-item> + </el-form> + </div> +</template> + +<script> +import { mapGetters, mapState, mapActions } from 'vuex' +import userApi from '@/api/user' + +export default { + data () { + var validatePassword = (rule, value, callback) => { + if (value === '') { + callback(new Error('璇疯緭鍏ュ瘑鐮�')) + } else if (!/[A-Z]/.test(value)) { + callback(new Error('瀵嗙爜蹇呴』鍖呭惈鑷冲皯涓�涓ぇ鍐欏瓧姣�')) + } else if (!/[a-z]/.test(value)) { + callback(new Error('瀵嗙爜蹇呴』鍖呭惈鑷冲皯涓�涓皬鍐欏瓧姣�')) + } else if (!/[0-9]/.test(value)) { + callback(new Error('瀵嗙爜蹇呴』鍖呭惈鑷冲皯涓�涓暟瀛�')) + } else { + callback() + } + } + var validatePhone = (rule, value, callback) => { + // 鎵嬫満鍙烽獙璇侀�昏緫 + const phoneRegex = /^1[3-9]\d{9}$/; + if (!value) { + callback(new Error('璇疯緭鍏ユ墜鏈哄彿')); + } else if (!phoneRegex.test(value)) { + callback(new Error('鎵嬫満鍙锋牸寮忎笉姝g‘')); + } else { + callback(); + } + } + return { + form: { + id: null, + userName: '', + password: '', + realName: '', + role: 2, + status: 1, + age: '', + sex: '', + birthDay: null, + phone: null + }, + formLoading: false, + rules: { + userName: [ + { required: true, message: '璇疯緭鍏ョ敤鎴峰悕', trigger: 'blur' } + ], + realName: [ + { required: true, message: '璇疯緭鍏ョ湡瀹炲鍚�', trigger: 'blur' } + ], + password: [ + { validator: validatePassword, trigger: 'blur' } + ], + phone: [ + { validator: validatePhone, trigger: 'blur' } + ] + } + } + }, + created () { + let id = this.$route.query.id + let _this = this + if (id && parseInt(id) !== 0) { + _this.formLoading = true + userApi.selectUser(id).then(re => { + _this.form = re.data + _this.formLoading = false + }) + } + }, + methods: { + submitForm () { + let _this = this + this.$refs.form.validate((valid) => { + if (valid) { + this.formLoading = true + userApi.createUser(this.form).then(data => { + if (data.code === 1) { + _this.$message.success(data.message) + _this.delCurrentView(_this).then(() => { + _this.$router.push('/user/teacher/list') + }) + } else { + _this.$message.error(data.message) + _this.formLoading = false + } + }).catch(e => { + _this.formLoading = false + }) + } else { + return false + } + }) + }, + resetForm () { + let lastId = this.form.id + this.$refs['form'].resetFields() + this.form = { + id: null, + userName: '', + password: '', + realName: '', + role: 2, + status: 1, + age: '', + sex: '', + birthDay: null, + phone: null + } + this.form.id = lastId + }, + ...mapActions('tagsView', { delCurrentView: 'delCurrentView' }) + }, + computed: { + ...mapGetters('enumItem', [ + 'enumFormat' + ]), + ...mapState('enumItem', { + sexEnum: state => state.user.sexEnum, + roleEnum: state => state.user.roleEnum, + statusEnum: state => state.user.statusEnum + }) + } +} +</script> -- Gitblit v1.8.0