功能变化:

1.用户管理-加入密码填写框
pull/57/head
猿小天 2022-05-13 23:32:27 +08:00
parent 03f51f3706
commit 90a33eb4ea
3 changed files with 85 additions and 27 deletions

View File

@ -170,11 +170,12 @@ class ApiLogin(APIView):
def post(self, request):
username = request.data.get("username")
password = request.data.get("password")
if user_obj := auth.authenticate(
user_obj = auth.authenticate(
request,
username=username,
password=hashlib.md5(password.encode(encoding="UTF-8")).hexdigest(),
):
)
if user_obj:
login(request, user_obj)
return redirect("/")
else:

View File

@ -45,6 +45,15 @@ class UserCreateSerializer(CustomModelSerializer):
),
)
def validate_password(self, value):
"""
对密码进行验证
"""
password = self.initial_data.get("password")
if password:
return make_password(value)
return value
def save(self, **kwargs):
data = super().save(**kwargs)
data.post.set(self.initial_data.get("post", []))

View File

@ -109,20 +109,39 @@ export const crudOptions = (vm) => {
type: 'input',
form: {
rules: [ // 表单校验规则
{ required: true, message: '账号必填项' }
{
required: true,
message: '账号必填项'
}
],
component: {
placeholder: '请输入账号'
},
itemProps: {
class: { yxtInput: true }
},
helper: {
render (h) {
return (< el-alert title="密码默认为:admin123456" type="warning"/>
)
}
}
},
{
title: '密码',
key: 'password',
minWidth: 90,
type: 'input',
form: {
component: {
span: 12,
showPassword: true,
placeholder: '不填则默认为:admin123456'
},
itemProps: {
class: { yxtInput: true }
}
},
disabled: true,
valueResolve (row, key) {
if (row.password) {
row.password = vm.$md5(row.password)
}
}
},
{
@ -135,7 +154,10 @@ export const crudOptions = (vm) => {
type: 'input',
form: {
rules: [ // 表单校验规则
{ required: true, message: '姓名必填项' }
{
required: true,
message: '姓名必填项'
}
],
component: {
span: 12,
@ -153,24 +175,28 @@ export const crudOptions = (vm) => {
disabled: true
},
minWidth: 140,
type: 'table-selector',
type: 'tree-selector',
dict: {
cache: false,
isTree: true,
url: deptPrefix,
value: 'id', // 数据字典中value字段的属性名
label: 'name', // 数据字典中label字段的属性名
getData: (url, dict, { form, component }) => {
return request({ url: url, params: { page: 1, limit: 10, status: 1 } }).then(ret => {
component._elProps.page = ret.data.page
component._elProps.limit = ret.data.limit
component._elProps.total = ret.data.total
return ret.data.data
})
}
label: 'name' // 数据字典中label字段的属性名
// getData: (url, dict, { form, component }) => {
// return request({ url: url, params: { page: 1, limit: 10, status: 1 } }).then(ret => {
// component._elProps.page = ret.data.page
// component._elProps.limit = ret.data.limit
// component._elProps.total = ret.data.total
// return ret.data.data
// })
// }
},
form: {
rules: [ // 表单校验规则
{ required: true, message: '必填项' }
{
required: true,
message: '必填项'
}
],
itemProps: {
class: { yxtInput: true }
@ -208,8 +234,15 @@ export const crudOptions = (vm) => {
type: 'input',
form: {
rules: [
{ max: 20, message: '请输入正确的手机号码', trigger: 'blur' },
{ pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号码' }
{
max: 20,
message: '请输入正确的手机号码',
trigger: 'blur'
},
{
pattern: /^1[3-9]\d{9}$/,
message: '请输入正确的手机号码'
}
],
itemProps: {
class: { yxtInput: true }
@ -224,7 +257,11 @@ export const crudOptions = (vm) => {
minWidth: 180,
form: {
rules: [
{ type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }
{
type: 'email',
message: '请输入正确的邮箱地址',
trigger: ['blur', 'change']
}
],
component: {
placeholder: '请输入邮箱'
@ -250,7 +287,6 @@ export const crudOptions = (vm) => {
title: '用户类型',
key: 'user_type',
search: {
value: 0,
disabled: false
},
width: 140,
@ -316,8 +352,17 @@ export const crudOptions = (vm) => {
url: '/api/system/role/',
value: 'id', // 数据字典中value字段的属性名
label: 'name', // 数据字典中label字段的属性名
getData: (url, dict, { form, component }) => {
return request({ url: url, params: { page: 1, limit: 10 } }).then(ret => {
getData: (url, dict, {
form,
component
}) => {
return request({
url: url,
params: {
page: 1,
limit: 10
}
}).then(ret => {
component._elProps.page = ret.data.page
component._elProps.limit = ret.data.limit
component._elProps.total = ret.data.total
@ -327,7 +372,10 @@ export const crudOptions = (vm) => {
},
form: {
rules: [ // 表单校验规则
{ required: true, message: '必填项' }
{
required: true,
message: '必填项'
}
],
itemProps: {
class: { yxtInput: true }