irc_web/.svn/pristine/e4/e4f4f9bd6e81c0e9b38e6568acd...

235 lines
7.9 KiB
Plaintext
Raw Blame History

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>
<el-form
ref="userForm"
size="small"
:model="user"
:rules="userFormRules"
label-width="150px"
style="width:800px;"
>
<el-card class="Basic" shadow="never" size="small">
<div slot="header" class="clearfix">
<span>Basic Information</span>
</div>
<el-form-item v-if="user.UserCode" label="S/N: " prop="UserCode">
<el-input v-model="user.UserCode" disabled />
</el-form-item>
<el-form-item label="User ID: " prop="UserName">
<el-input v-model="user.UserName" />
</el-form-item>
<el-form-item label="Surname: " prop="LastName">
<el-input v-model="user.LastName" />
</el-form-item>
<el-form-item label="Given Name: " prop="FirstName">
<el-input v-model="user.FirstName" />
</el-form-item>
<el-form-item label="Gender: " prop="Sex" style="margin-right:40px;">
<el-radio-group v-model="user.Sex">
<el-radio :label="1">Male</el-radio>
<el-radio :label="0">Female</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="Email: " prop="EMail">
<el-input v-model="user.EMail" />
</el-form-item>
<el-form-item label="Phone: " prop="Phone">
<el-input v-model="user.Phone" />
</el-form-item>
<el-form-item v-if="type==1" label="Disable:">
<el-switch v-model="user.Status" :active-value="0" :inactive-value="1" />
</el-form-item>
<el-form-item label="IsTestUser:">
<el-switch v-model="user.IsTestUser" />
</el-form-item>
<el-form-item label="User Type: " prop="UserTypeId">
<el-select ref="userType" v-model="user.UserTypeId" size="small" placeholder="Please select" style="width:100%;" :disabled="user.CanEditUserType === false">
<el-option
v-for="(userType,key) of userTypeOptions"
v-if="userType.UserTypeEnum !== 20"
:key="key"
:label="userType.UserType"
:value="userType.Id"
/>
</el-select>
</el-form-item>
</el-card>
<el-card class="Affiliation" shadow="never" style="margin-top:10px;" size="small">
<div slot="header" class="clearfix">
<span>Affiliation</span>
</div>
<el-form-item prop="IsZhiZhun">
<el-radio-group v-model="user.IsZhiZhun" @change="OrgnizationTypeChanged">
<el-radio :label="true">Internal</el-radio>
<el-radio :label="false">External</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-show="user.IsZhiZhun === false" label="Organization Name: ">
<el-input v-model="user.OrganizationName" />
</el-form-item>
<el-form-item label="Department: " prop="DepartmentName">
<el-input v-model="user.DepartmentName" />
</el-form-item>
<el-form-item label="Position: " prop="PositionName">
<el-input v-model="user.PositionName" />
</el-form-item>
</el-card>
<el-form-item>
<el-button
type="primary"
size="small"
:disabled="isDisabled"
style="margin:10px 15px"
@click="handleSave"
>Save</el-button>
</el-form-item>
</el-form>
</template>
<script>
import { getUser, addUser, updateUser, getUserTypeListByUserType } from '@/api/admin.js'
export default {
name: 'UserInfo',
props: {
userId: { type: String, default: '' }
},
data() {
var validatePassword = (rule, value, callback) => {
var lang = zzSessionStorage.getItem('lang')?zzSessionStorage.getItem('lang'):'zh'
/* eslint-disable */
var reg1 = /^[a-zA-Z0-9_]{4,16}$/; //密码必须是8位以上、必须含有字母、数字、特殊符号
console.log(!reg1.test(value))
if (!reg1.test(value)) {
callback(lang==='zh' ? new Error("1新建账号用户名字符长度最小为4个字符最大为16个字符只可使用字母、数字、下划线") : new Error('Passwords must have: 1) 8 - 32 characters; 2) At least 1 number; 3) At least 1 uppercase letter; 4) At least 1 lowercase letter; 5) At least 1 special character (~!-@#$%^&*_+?) '))
} else {
callback();
}
}
return {
user: {
UserName: '',
LastName: '',
FirstName: '',
Sex: '',
EMail: '',
Phone: '',
UserTypeId: '',
IsZhiZhun: '',
OrganizationName: '',
DepartmentName: '',
PositionName: '',
IsTestUser: false
},
userFormRules: {
UserName: [
{ required: true, validator: validatePassword, trigger: 'blur' }
],
UserTypeId: [
{ required: true, message: 'Please Select', trigger: ['blur', 'change'] }
],
IsZhiZhun: [
{ required: true, message: 'Please Select', trigger: ['blur', 'change'] }
],
OrganizationName: [
{ required: true, message: 'Please specify', trigger: 'blur' }
],
LastName: [
{ required: true, message: 'Please specify', trigger: 'blur' },
{ max: 50, message: 'The maximum length is 50' }
],
FirstName: [
{ required: true, message: 'Please specify', trigger: 'blur' },
{ max: 50, message: 'The maximum length is 50' }
],
Phone: [
{ max: 20, min: 7, message: 'The length is 7 to 20', trigger: ['blur'] }
],
EMail: [
{
required: true,
message: 'Please input the email address',
trigger: 'blur'
},
{
type: 'email',
message: 'Please input the correct email address',
trigger: ['blur']
},
{ max: 50, message: 'The maximum length is 50' }
],
Sex: [
{ required: true, message: 'Please specify', trigger: 'blur' }
],
Status: [
{ required: true, message: 'Please specify', trigger: 'blur' }
],
DepartmentName: [
{ max: 50, message: 'The maximum length is 50' }],
PositionName: [{ max: 50, message: 'The maximum length is 50' }
]
},
userTypeOptions: [],
isDisabled: false,
type: 0 // 1为编辑0为新增
}
},
created() {
this.getUserTypeList()
if (this.userId !== '') {
this.getUserInfo()
this.type = 1
} else {
this.type = 0
}
},
methods: {
handleSave() {
this.$refs.userForm.validate(valid => {
if (valid) {
this.isDisabled = true
const selectedUserType = this.userTypeOptions.filter(item => item.Id === this.user.UserTypeId)
if (selectedUserType.length > 0) {
this.user.UserTypeEnum = selectedUserType[0].UserTypeEnum
}
this.user.BaseUrl = `${location.protocol}//${location.host}/login`
this.user.RouteUrl = `${location.protocol}//${location.host}/email-recompose`
if (this.user.Id) {
updateUser(this.user).then(res => {
this.isDisabled = false
this.$message.success('Updated successfully')
}).catch(() => { this.isDisabled = false })
} else {
addUser(this.user).then(res => {
this.isDisabled = false
this.user.Id = res.Result.Id
this.user.UserCode = res.Result.UserCode
this.$emit('getUserId', res.Result.Id)
this.$message.success('Added successfully')
this.$router.push({ path: '/system/user/list' })
}).catch(() => { this.isDisabled = false })
}
}
})
},
getUserTypeList() {
getUserTypeListByUserType(0).then(res => {
if (res.IsSuccess) {
this.userTypeOptions = res.Result
}
})
},
getUserInfo() {
getUser(this.userId).then(res => {
this.user = res.Result
})
},
OrgnizationTypeChanged(val) {
this.user.OrganizationName = ''
}
}
}
</script>