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