ZaiZai 10 kuukautta sitten
vanhempi
commit
42c8ef3463
1 muutettua tiedostoa jossa 163 lisäystä ja 3 poistoa
  1. 163 3
      src/views/system/modules/user/data.vue

+ 163 - 3
src/views/system/modules/user/data.vue

@@ -2,10 +2,87 @@
     <hc-dialog v-model="isShow" widths="800px" :padding="false" :title="`${isNullES(rowInfo.id) ? '新增' : '编辑'}用户信息`" is-table is-footer-center @close="dialogClose">
         <el-tabs tab-position="left" class="hc-user-data-dialog h-full w-full">
             <el-tab-pane label="基础信息">
-                11111
+                <el-form ref="formRef1" :model="formModel" :rules="formRules1" label-position="top" label-width="auto">
+                    <el-row :gutter="24">
+                        <el-col :span="12">
+                            <el-form-item label="登录账号:" prop="account">
+                                <el-input v-model="formModel.account" clearable />
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="所属租户:" prop="tenantId">
+                                <el-input v-model="formModel.tenantId" clearable />
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="登录密码:" prop="password">
+                                <el-input v-model="formModel.password" clearable />
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="确认密码:" prop="password2">
+                                <el-input v-model="formModel.password2" clearable />
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="用户平台:" prop="userType">
+                                <el-select v-model="formModel.userType" filterable block placeholder="选择用户平台">
+                                    <el-option label="是" :value="1" />
+                                    <el-option label="否" :value="0" />
+                                </el-select>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </el-form>
             </el-tab-pane>
             <el-tab-pane label="详细信息">
-                11111
+                <el-form ref="formRef2" :model="formModel" :rules="formRules2" label-position="top" label-width="auto">
+                    <el-row :gutter="24">
+                        <el-col :span="12">
+                            <el-form-item label="用户姓名:" prop="realName">
+                                <el-input v-model="formModel.realName" clearable />
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="手机号码:" prop="phone">
+                                <el-input v-model="formModel.phone" clearable />
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="身份证号码:">
+                                <el-input v-model="formModel.idNumber" clearable />
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="所属部门:" prop="deptId">
+                                <el-input v-model="formModel.deptId" clearable />
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="证书编号:">
+                                <el-input v-model="formModel.accCode" clearable />
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="允许登录:" prop="status">
+                                <el-select v-model="formModel.status" block placeholder="是否允许登录">
+                                    <el-option label="是" :value="1" />
+                                    <el-option label="否" :value="0" />
+                                </el-select>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="单位名称:">
+                                <el-input v-model="formModel.companyName" clearable />
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="职位:">
+                                <el-input v-model="formModel.position" clearable />
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </el-form>
             </el-tab-pane>
             <el-tab-pane label="职能描述">
                 11111
@@ -20,7 +97,7 @@
 
 <script setup>
 import { ref, watch } from 'vue'
-import { isNullES } from 'js-fast-way'
+import { isNullES, isPhone } from 'js-fast-way'
 import mainApi from '~api/system/user'
 
 const props = defineProps({
@@ -71,6 +148,88 @@ const dialogClose = () => {
     submitLoading.value = false
     emit('close')
 }
+
+//表单
+const formRef1 = ref(null)
+const formRef2 = ref(null)
+//表单内容
+const formModel = ref({})
+//表单效验
+const formRules1 = {
+    account: {
+        required: true,
+        trigger: 'blur',
+        validator: (rule, value, callback) => {
+            if (value === '') {
+                callback(new Error('请输入登录账号'))
+            } else if (/^[a-z0-9]+$/i.test(value)) {
+                callback()
+            } else {
+                callback(new Error('登录账号只能是字母和数字'))
+            }
+        },
+    },
+    tenantId: { required: true, trigger: 'blur', message: '请选择所属租户' },
+    password: {
+        trigger: 'blur',
+        required: true,
+        validator: (rule, value, callback) => {
+            const { password2 } = formModel.value
+            if (value === '') {
+                callback(new Error('请输入密码'))
+            } else if (value !== password2) {
+                callback(new Error('两次输入密码不一致'))
+            } else {
+                callback()
+            }
+        },
+    },
+    password2: {
+        required: true, trigger: 'blur',
+        validator: (rule, value, callback) => {
+            const { password } = formModel.value
+            if (value === '') {
+                callback(new Error('请再次输入密码'))
+            } else if (value !== password) {
+                callback(new Error('两次输入密码不一致'))
+            } else {
+                callback()
+            }
+        },
+    },
+    userType: { required: true, trigger: 'blur', message: '请选择用户平台' },
+}
+const formRules2 = {
+    realName: { required: true, trigger: 'blur', message: '请输入用户姓名' },
+    phone: {
+        required: true,
+        trigger: 'blur',
+        validator: (rule, value, callback) => {
+            if (value === '') {
+                callback(new Error('请输入手机号'))
+            } else if (isPhone(value)) {
+                callback()
+            } else {
+                callback(new Error('请输入正确的手机号'))
+            }
+        },
+    },
+    idNumber: {
+        required: true,
+        trigger: 'blur',
+        validator: (rule, value, callback) => {
+            if (isNullES(value)) {
+                callback()
+            } else if (isPhone(value)) {
+                callback()
+            } else {
+                callback(new Error('请输入正确的身份证号'))
+            }
+        },
+    },
+    deptId: { required: true, trigger: 'blur', message: '请选择所属部门' },
+    status: { required: true, trigger: 'blur', message: '请选择是否允许登录' },
+}
 </script>
 
 <style lang="scss">
@@ -87,6 +246,7 @@ const dialogClose = () => {
             height: 100%;
             width: 100%;
             overflow: auto;
+            padding: 10px 5px 10px 10px;
         }
     }
 }