|
@@ -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;
|
|
|
}
|
|
|
}
|
|
|
}
|