Commit 883c66c3 authored by wanli's avatar wanli

update

parent 15ef1eea
No preview for this file type
...@@ -39,23 +39,11 @@ class UserManager(object): ...@@ -39,23 +39,11 @@ class UserManager(object):
if not editor: if not editor:
return False, "current user is not exists" return False, "current user is not exists"
if "role" in data:
role = Role.get(uuid=data.get("role"))
if not role:
return False, "role does not exists"
data.update({ "role": role.id })
if "depot" in data:
# depot = Depot.select().where(uuid=data["depot"]).first()
depot = Depot.get(uuid=data.get("depot"))
if not depot:
return False, "depot does not exists"
data.update({ "depot": depot.id })
if "username" not in data or not data.get("username"): if "username" not in data or not data.get("username"):
data.update({ "username": data.get("account") }) data.update({ "username": data.get("account") })
print(data)
# 密码加密 # 密码加密
data['password'] = md5_salt(data['password']) data['password'] = md5_salt(data['password'])
data.update({ data.update({
...@@ -103,18 +91,6 @@ class UserManager(object): ...@@ -103,18 +91,6 @@ class UserManager(object):
if "password" in data: if "password" in data:
data["password"] = md5_salt(data['password']) data["password"] = md5_salt(data['password'])
if "role" in data:
role = Role.get(uuid=data.get("role"))
if not role:
return False, "role does not exists"
data.update({ "role": role.id })
if "depot" in data:
depot = Depot.get(uuid=data.get("depot"))
if not depot:
return False, "depot does not exists"
data.update({ "depot": depot.id })
user = User.get(uuid=uuid) user = User.get(uuid=uuid)
if user: if user:
user.set(update_at=datetime.now(), update_by=editor.id, **data) user.set(update_at=datetime.now(), update_by=editor.id, **data)
...@@ -131,12 +107,9 @@ class UserManager(object): ...@@ -131,12 +107,9 @@ class UserManager(object):
''' '''
result = User.get(id=request.current_user.get("id"), is_delete=False) result = User.get(id=request.current_user.get("id"), is_delete=False)
if result: if result:
temp = result.to_dict(with_collections=True, related_objects=True, only=["uuid", "username", "account", "phone", "email", "hometown", "gender", "birthday", "entry_time", "expire_date", "create_at", "update_at"]) temp = result.to_dict(with_collections=True, related_objects=True, only=["uuid", "username", "account", "phone", "email", "gender", "create_at", "update_at"])
temp.update({ temp.update({
"birthday": result.birthday.strftime("%Y-%m-%d") if result.birthday else None,
"create_at": result.create_at.strftime("%Y-%m-%d %H:%M:%S") if result.create_at else None, "create_at": result.create_at.strftime("%Y-%m-%d %H:%M:%S") if result.create_at else None,
"entry_time": result.entry_time.strftime("%Y-%m-%d %H:%M:%S") if result.entry_time else None,
"expire_date": result.expire_date.strftime("%Y-%m-%d %H:%M:%S") if result.expire_date else None,
"update_at": result.update_at.strftime("%Y-%m-%d %H:%M:%S") if result.update_at else None, "update_at": result.update_at.strftime("%Y-%m-%d %H:%M:%S") if result.update_at else None,
}) })
result = temp result = temp
...@@ -149,39 +122,6 @@ class UserManager(object): ...@@ -149,39 +122,6 @@ class UserManager(object):
# 当参数为空时,直接返回错误 # 当参数为空时,直接返回错误
if not data or len(data) <= 0: if not data or len(data) <= 0:
return False, 0, "parameters can not be null." return False, 0, "parameters can not be null."
# select_sql = "select `id`, `account`, `username` from `{}`".format(User._table_)
# conditions = []
# globals_dict = dict()
# if "id" in data and data.get("id"):
# conditions.append(" id = $id")
# globals_dict.update({ "id": data.get("id") })
# if "account" in data and data.get("account"):
# conditions.append("account = \"$account\"")
# globals_dict.update({ "account": sql_filter(data.get("account")) })
# if "username" in data and data.get("username"):
# conditions.append("username = \"$username\"")
# globals_dict.update({ "username": sql_filter(data.get("username")) })
# if len(conditions):
# select_sql = select_sql + " where " + " and ".join(conditions)
# conditions = []
# select_sql = select_sql + " "
# conditions.append("order by $order")
# globals_dict.update({ "order": sql_filter(data.get("order", "create_at")) })
# conditions.append("limit $limit")
# globals_dict.update({ "limit": data.get("pagesize", 10) })
# conditions.append("offset $offset")
# globals_dict.update({ "offset": (data.get("pagenum", 1) - 1) * data.get("pagesize", 10) })
# result = User.select_by_sql(select_sql + " ".join(conditions), globals=globals_dict)
temp = copy.deepcopy(data) temp = copy.deepcopy(data)
if 'pagenum' in temp: if 'pagenum' in temp:
...@@ -190,18 +130,7 @@ class UserManager(object): ...@@ -190,18 +130,7 @@ class UserManager(object):
temp.pop('pagesize') temp.pop('pagesize')
if 'scope_type' in temp: if 'scope_type' in temp:
temp.pop('scope_type') temp.pop('scope_type')
if 'role' in temp:
role = Role.get(uuid=temp.get('role'))
if role:
temp.update({ "role": role })
else:
temp.pop('pagenum')
if 'depot' in temp:
depot = Depot.get(uuid=temp.get('depot'))
if depot:
temp.update({ "depot": depot })
else:
temp.pop('pagenum')
temp.setdefault("is_delete", False) temp.setdefault("is_delete", False)
if "scope_type" in data and data.get("scope_type") == "list": if "scope_type" in data and data.get("scope_type") == "list":
...@@ -218,13 +147,10 @@ class UserManager(object): ...@@ -218,13 +147,10 @@ class UserManager(object):
if result and len(result): if result and len(result):
temp = [] temp = []
for item in result: for item in result:
t = item.to_dict(with_collections=True, related_objects=True, only=["uuid", "username", "account", "phone", "email", "hometown", "gender", "birthday", "entry_time", "expire_date", "create_at", "update_at", "remarks"]) t = item.to_dict(with_collections=True, related_objects=True, only=["uuid", "username", "account", "phone", "email", "gender", "create_at", "update_at", "remarks"])
t.update({ t.update({
"email": "" if item.email == "user@example.com" else item.email, "email": "" if item.email == "user@example.com" else item.email,
"birthday": item.birthday.strftime("%Y-%m-%d") if item.birthday else None,
"create_at": item.create_at.strftime("%Y-%m-%d %H:%M:%S"), "create_at": item.create_at.strftime("%Y-%m-%d %H:%M:%S"),
"entry_time": item.entry_time.strftime("%Y-%m-%d %H:%M:%S"),
"expire_date": item.expire_date.strftime("%Y-%m-%d %H:%M:%S"),
"update_at": item.update_at.strftime("%Y-%m-%d %H:%M:%S"), "update_at": item.update_at.strftime("%Y-%m-%d %H:%M:%S"),
}) })
temp.append(t) temp.append(t)
......
...@@ -16,13 +16,10 @@ class User(db.Entity): ...@@ -16,13 +16,10 @@ class User(db.Entity):
account = Required(str, unique=True) # 账号 account = Required(str, unique=True) # 账号
username = Required(str, max_len=100) # 用户名 username = Required(str, max_len=100) # 用户名
password = Required(str, max_len=64) password = Required(str, max_len=64)
gender = Required(int, size=8) # 性别,未知0 男1 女2 gender = Optional(int, size=8) # 性别,未知0 男1 女2
birthday = Optional(date, default=date.today()) # 使用age会带来age无法随时间变化问题 birthday = Optional(date, default=date.today()) # 使用age会带来age无法随时间变化问题
phone = Required(str, max_len=11) # 联系方式 phone = Optional(str, max_len=11) # 联系方式
email = Optional(str, max_len=100) # 邮箱 email = Optional(str, max_len=100) # 邮箱
hometown = Optional(str, max_len=50) # 籍贯
entry_time = Required(datetime, default=datetime.now) # 入职时间
expire_date = Required(datetime, default=datetime.now) # 劳动合同到期时间
create_at = Required(datetime, default=datetime.now) create_at = Required(datetime, default=datetime.now)
create_by = Required(int) create_by = Required(int)
update_at = Required(datetime, default=datetime.now) update_at = Required(datetime, default=datetime.now)
......
...@@ -16,15 +16,10 @@ class AddSchema(BaseSchema): ...@@ -16,15 +16,10 @@ class AddSchema(BaseSchema):
account = fields.String(required=True, validate=validate.Length(min=2, max=20)) account = fields.String(required=True, validate=validate.Length(min=2, max=20))
username = fields.String(required=False, validate=validate.Length(min=2, max=20)) username = fields.String(required=False, validate=validate.Length(min=2, max=20))
password = fields.String(required=True, validate=validate.Length(min=6, max=18)) password = fields.String(required=True, validate=validate.Length(min=6, max=18))
email = fields.Email(required=False) email = fields.Email(required=False, default="")
phone = fields.String(required=True, validate=validate.Length(min=11, max=11)) phone = fields.String(required=False, default="")
gender = fields.Int(required=True) gender = fields.Int(required=False, default=1)
birthday = fields.Date(missing=None) birthday = fields.Date(required=False, default=None)
hometown = fields.String(missing="")
role = fields.UUID(required=True)
depot = fields.UUID(required=True)
entry_time = fields.DateTime(required=False, nullable=True)
expire_date = fields.DateTime(required=False, nullable=True)
remarks = fields.String(required=False) remarks = fields.String(required=False)
class Meta: class Meta:
...@@ -39,14 +34,9 @@ class UpdateSchema(BaseSchema): ...@@ -39,14 +34,9 @@ class UpdateSchema(BaseSchema):
account = fields.String(required=False, validate=validate.Length(min=2, max=20)) account = fields.String(required=False, validate=validate.Length(min=2, max=20))
username = fields.String(required=False, validate=validate.Length(min=2, max=20)) username = fields.String(required=False, validate=validate.Length(min=2, max=20))
email = fields.Email(required=False) email = fields.Email(required=False)
phone = fields.String(required=False, validate=validate.Length(min=11, max=11)) phone = fields.String(required=False)
gender = fields.Int(required=False) gender = fields.Int(required=False)
birthday = fields.Date(required=False) birthday = fields.Date(missing=False)
hometown = fields.String(required=False)
role = fields.UUID(required=False)
depot = fields.UUID(required=False)
entry_time = fields.DateTime(required=False)
expire_date = fields.DateTime(required=False)
remarks = fields.String(required=False) remarks = fields.String(required=False)
class Meta: class Meta:
...@@ -55,8 +45,6 @@ class UpdateSchema(BaseSchema): ...@@ -55,8 +45,6 @@ class UpdateSchema(BaseSchema):
class QuerySchema(BaseSchema): class QuerySchema(BaseSchema):
uuid = fields.UUID(required=False) uuid = fields.UUID(required=False)
scope_type = fields.String(required=False) scope_type = fields.String(required=False)
role = fields.UUID(required=False)
depot = fields.UUID(required=False)
pagenum = fields.Int(required=False) pagenum = fields.Int(required=False)
pagesize = fields.Int(required=False, max=50) # 防止用户传特别大的数,导致数据库查询阻塞 pagesize = fields.Int(required=False, max=50) # 防止用户传特别大的数,导致数据库查询阻塞
...@@ -69,12 +57,10 @@ class ResponseSchema(BaseSchema): ...@@ -69,12 +57,10 @@ class ResponseSchema(BaseSchema):
username = fields.String(required=True, validate=validate.Length(min=2, max=20)) username = fields.String(required=True, validate=validate.Length(min=2, max=20))
password = fields.String(required=True, validate=validate.Length(min=6, max=18)) password = fields.String(required=True, validate=validate.Length(min=6, max=18))
email = fields.Email(required=False) email = fields.Email(required=False)
phone = fields.String(required=True, validate=validate.Length(min=11, max=11)) phone = fields.String(required=True)
gender = fields.Int(required=True) gender = fields.Int(required=True)
birthday = fields.Date(required=False) birthday = fields.Date(required=False)
hometown = fields.String(required=False) hometown = fields.String(required=False)
role = fields.Int(required=True)
depot = fields.Int(required=True)
entry_time = fields.DateTime(required=True) entry_time = fields.DateTime(required=True)
expire_date = fields.DateTime(required=True) expire_date = fields.DateTime(required=True)
remarks = fields.String(required=True) remarks = fields.String(required=True)
......
...@@ -6,16 +6,6 @@ ...@@ -6,16 +6,6 @@
<el-option v-for="(item, index) in users" :key="index" :label="item.account" :value="item.uuid"></el-option> <el-option v-for="(item, index) in users" :key="index" :label="item.account" :value="item.uuid"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="角色" prop="role">
<el-select v-model="form.role" filterable placeholder="请选择角色">
<el-option v-for="(item, index) in roles" :key="index" :label="item.name" :value="item.uuid"></el-option>
</el-select>
</el-form-item>
<el-form-item label="部门" prop="depot">
<el-select v-model="form.depot" filterable placeholder="请选择角色">
<el-option v-for="(item, index) in depots" :key="index" :label="item.name" :value="item.uuid"></el-option>
</el-select>
</el-form-item>
<el-form-item><el-button type="primary" @click="onSubmit">查询</el-button></el-form-item> <el-form-item><el-button type="primary" @click="onSubmit">查询</el-button></el-form-item>
<el-form-item><el-button @click="onReset('form')">重置</el-button></el-form-item> <el-form-item><el-button @click="onReset('form')">重置</el-button></el-form-item>
<el-form-item><el-button type="warning" @click="onAdd">添加</el-button></el-form-item> <el-form-item><el-button type="warning" @click="onAdd">添加</el-button></el-form-item>
...@@ -23,23 +13,11 @@ ...@@ -23,23 +13,11 @@
<el-table v-loading="isLoading" element-loading-text="Loading" :data="list" size="mini" border stripe fit highlight-current-row> <el-table v-loading="isLoading" element-loading-text="Loading" :data="list" size="mini" border stripe fit highlight-current-row>
<el-table-column prop="username" label="用户名" align="center" width="150"></el-table-column> <el-table-column prop="username" label="用户名" align="center" width="150"></el-table-column>
<el-table-column prop="account" label="账号" align="center" width="120"></el-table-column> <el-table-column prop="account" label="账号" align="center" width="120"></el-table-column>
<el-table-column prop="role.name" label="角色" width="120" :show-overflow-tooltip="true"></el-table-column> <el-table-column prop="phone" label="手机" width="150"></el-table-column>
<el-table-column prop="depot.name" label="部门" width="120" :show-overflow-tooltip="true"></el-table-column> <el-table-column prop="email" label="邮箱" width="200" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="phone" label="联系方式" width="150"></el-table-column> <el-table-column prop="remarks" label="备注" width="240" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="birthday" label="出生年月" width="150"></el-table-column>
<el-table-column prop="email" label="邮箱" width="180" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="hometown" label="籍贯" min-width="100"></el-table-column>
<el-table-column prop="entry_time" label="入职时间" width="150"></el-table-column>
<el-table-column prop="expire_date" label="到期时间" width="150">
<template slot="header">
<el-tooltip effect="dark" content="劳动合同到期时间" placement="top">
<span>到期时间</span>
</el-tooltip>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注" width="180" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="create_at" label="创建时间" width="150"></el-table-column> <el-table-column prop="create_at" label="创建时间" width="150"></el-table-column>
<el-table-column label="操作" align="center" width="180" fixed="right"> <el-table-column label="操作" align="center" min-width="180" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="success" @click="handleEdit(scope.$index, scope.row)">编辑</el-button> <el-button size="mini" type="success" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
<el-button size="mini" type="danger" @click="handleDelete(scope.$index, scope.row)">删除</el-button> <el-button size="mini" type="danger" @click="handleDelete(scope.$index, scope.row)">删除</el-button>
...@@ -64,40 +42,12 @@ ...@@ -64,40 +42,12 @@
<el-form-item label="用户名" prop="username"> <el-form-item label="用户名" prop="username">
<el-input type="text" v-model="post.username" autocomplete="off"></el-input> <el-input type="text" v-model="post.username" autocomplete="off"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="性别" prop="gender">
<el-radio-group v-model="post.gender">
<el-radio :label="0"></el-radio>
<el-radio :label="1"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="出生年月" prop="birthday">
<el-date-picker v-model="post.birthday" format="yyyy-MM-dd" value-format="yyyy-MM-dd" type="date" placeholder="选择出生年月"></el-date-picker>
</el-form-item>
<el-form-item label="籍贯" prop="hometown">
<el-input type="text" v-model="post.hometown" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="联系方式" prop="phone"> <el-form-item label="联系方式" prop="phone">
<el-input type="text" v-model="post.phone" autocomplete="off"></el-input> <el-input type="text" v-model="post.phone" autocomplete="off"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="邮箱" prop="email"> <el-form-item label="邮箱" prop="email">
<el-input type="email" v-model="post.email" autocomplete="off"></el-input> <el-input type="email" v-model="post.email" autocomplete="off"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="部门" prop="depot">
<el-select v-model="post.depot" filterable placeholder="请选择部门">
<el-option v-for="(item, index) in depots" :key="index" :label="item.name" :value="item.uuid"></el-option>
</el-select>
</el-form-item>
<el-form-item label="角色" prop="role">
<el-select v-model="post.role" filterable placeholder="请选择角色">
<el-option v-for="(item, index) in roles" :key="index" :label="item.name" :value="item.uuid"></el-option>
</el-select>
</el-form-item>
<el-form-item label="入职时间" prop="entry_time">
<el-date-picker v-model="post.entry_time" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="选择入职时间"></el-date-picker>
</el-form-item>
<el-form-item label="到期时间" prop="expire_date">
<el-date-picker v-model="post.expire_date" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="选择到期时间"></el-date-picker>
</el-form-item>
<el-form-item label="备注" prop="remarks"> <el-form-item label="备注" prop="remarks">
<el-input type="text" v-model="post.remarks" autocomplete="off"></el-input> <el-input type="text" v-model="post.remarks" autocomplete="off"></el-input>
</el-form-item> </el-form-item>
...@@ -155,15 +105,15 @@ export default { ...@@ -155,15 +105,15 @@ export default {
{ min: 1, max: 20, message: '字符串长度在 1 到 20 之间', trigger: 'blur' } { min: 1, max: 20, message: '字符串长度在 1 到 20 之间', trigger: 'blur' }
], ],
password: [{ type: 'string', required: true, message: '密码不能为空', trigger: 'blur' }, { min: 6, max: 18, message: '长度在 6 到 18 个字符', trigger: 'blur' }], password: [{ type: 'string', required: true, message: '密码不能为空', trigger: 'blur' }, { min: 6, max: 18, message: '长度在 6 到 18 个字符', trigger: 'blur' }],
phone: [{ type: 'string', required: true, message: '手机号不能为空', trigger: 'blur' }, { len: 11, message: '手机号长度为11', trigger: 'blur' }], phone: [{ type: 'string', required: false, message: '手机号不能为空', trigger: 'blur' }, { len: 11, message: '手机号长度为11', trigger: 'blur' }],
birthday: [{ required: false, message: '出生年月不能为空', trigger: 'blur' }], birthday: [{ required: false, message: '出生年月不能为空', trigger: 'blur' }],
gender: [{ type: 'number', required: true, message: '性别不能为空', trigger: 'blur' }], gender: [{ type: 'number', required: false, message: '性别不能为空', trigger: 'blur' }],
email: [{ type: 'email', required: true, message: '邮箱不能为空', trigger: 'blur' }], email: [{ type: 'email', required: false, message: '邮箱不能为空', trigger: 'blur' }],
hometown: [{ type: 'string', required: true, message: '籍贯不能为空', trigger: 'blur' }], hometown: [{ type: 'string', required: false, message: '籍贯不能为空', trigger: 'blur' }],
entry_time: [{ required: false, message: '入职时间不能为空', trigger: 'blur' }], entry_time: [{ required: false, message: '入职时间不能为空', trigger: 'blur' }],
expire_date: [{ required: false, message: '到期时间不能为空', trigger: 'blur' }], expire_date: [{ required: false, message: '到期时间不能为空', trigger: 'blur' }],
depot: [{ type: 'string', required: true, message: '部门不能为空', trigger: 'blur' }], depot: [{ type: 'string', required: false, message: '部门不能为空', trigger: 'blur' }],
role: [{ type: 'string', required: true, message: '角色不能为空', trigger: 'blur' }], role: [{ type: 'string', required: false, message: '角色不能为空', trigger: 'blur' }],
remarks: [{ type: 'string', required: false, message: '备注不能为空', trigger: 'blur' }], remarks: [{ type: 'string', required: false, message: '备注不能为空', trigger: 'blur' }],
} }
} }
......
...@@ -31,7 +31,7 @@ module.exports = { ...@@ -31,7 +31,7 @@ module.exports = {
// change xxx-api/login => mock/login // change xxx-api/login => mock/login
// detail: https://cli.vuejs.org/config/#devserver-proxy // detail: https://cli.vuejs.org/config/#devserver-proxy
"/api/v1": { "/api/v1": {
target: "http://127.0.0.1:9999/", target: "http://127.0.0.1:5000/",
changeOrigin: true, changeOrigin: true,
pathRewrite: {}, pathRewrite: {},
}, },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment