feat(admin): 账号创建支持单位电话
This commit is contained in:
parent
334aa77622
commit
34bce0f5df
|
|
@ -275,6 +275,7 @@ def admin_create_user():
|
||||||
return jsonify({"success": False, "message": "用户名和密码均不能为空"}), 400
|
return jsonify({"success": False, "message": "用户名和密码均不能为空"}), 400
|
||||||
parent_department_id = (payload.get("parent_department_id") or "").strip() or None
|
parent_department_id = (payload.get("parent_department_id") or "").strip() or None
|
||||||
service_department_id = (payload.get("service_department_id") or "").strip() or None
|
service_department_id = (payload.get("service_department_id") or "").strip() or None
|
||||||
|
department_phone = (payload.get("department_phone") or "").strip() or None
|
||||||
|
|
||||||
# 如果未显式绑定部门,则为该用户创建一个同名单位,并按父级决定层级
|
# 如果未显式绑定部门,则为该用户创建一个同名单位,并按父级决定层级
|
||||||
created_department: Optional[Dict[str, Any]] = None
|
created_department: Optional[Dict[str, Any]] = None
|
||||||
|
|
@ -285,6 +286,7 @@ def admin_create_user():
|
||||||
created_department = create_service_department(
|
created_department = create_service_department(
|
||||||
name=dept_name,
|
name=dept_name,
|
||||||
code=dept_code,
|
code=dept_code,
|
||||||
|
phone=department_phone,
|
||||||
parent_id=parent_department_id,
|
parent_id=parent_department_id,
|
||||||
)
|
)
|
||||||
service_department_id = created_department.get("id")
|
service_department_id = created_department.get("id")
|
||||||
|
|
@ -301,6 +303,7 @@ def admin_create_user():
|
||||||
service_department_id=service_department_id,
|
service_department_id=service_department_id,
|
||||||
department_role=payload.get("department_role"),
|
department_role=payload.get("department_role"),
|
||||||
parent_department_id=parent_department_id,
|
parent_department_id=parent_department_id,
|
||||||
|
service_department_phone=department_phone,
|
||||||
)
|
)
|
||||||
return jsonify({"success": True, "data": {"user": user, "department": created_department}})
|
return jsonify({"success": True, "data": {"user": user, "department": created_department}})
|
||||||
except ValueError as exc:
|
except ValueError as exc:
|
||||||
|
|
|
||||||
|
|
@ -419,6 +419,7 @@ def create_user(
|
||||||
service_department_id: Optional[str] = None,
|
service_department_id: Optional[str] = None,
|
||||||
department_role: Optional[str] = None,
|
department_role: Optional[str] = None,
|
||||||
parent_department_id: Optional[str] = None,
|
parent_department_id: Optional[str] = None,
|
||||||
|
service_department_phone: Optional[str] = None,
|
||||||
) -> Dict[str, Any]:
|
) -> Dict[str, Any]:
|
||||||
username_clean = (username or "").strip().lower()
|
username_clean = (username or "").strip().lower()
|
||||||
if not username_clean or not password:
|
if not username_clean or not password:
|
||||||
|
|
@ -433,6 +434,7 @@ def create_user(
|
||||||
created = lic_repo.create_service_department(
|
created = lic_repo.create_service_department(
|
||||||
name=dept_name,
|
name=dept_name,
|
||||||
code=dept_code,
|
code=dept_code,
|
||||||
|
phone=(service_department_phone or "").strip() or None,
|
||||||
parent_id=(parent_department_id or "").strip() or None,
|
parent_id=(parent_department_id or "").strip() or None,
|
||||||
)
|
)
|
||||||
dept_token = created.get("id")
|
dept_token = created.get("id")
|
||||||
|
|
|
||||||
|
|
@ -1211,6 +1211,9 @@
|
||||||
<label>显示名称
|
<label>显示名称
|
||||||
<input type="text" name="display_name" placeholder="可选,用于展示">
|
<input type="text" name="display_name" placeholder="可选,用于展示">
|
||||||
</label>
|
</label>
|
||||||
|
<label>单位电话(可选)
|
||||||
|
<input type="text" name="department_phone" placeholder="用于自动创建的单位联系电话">
|
||||||
|
</label>
|
||||||
<label>上级单位(可选,不选则创建顶级市级单位)
|
<label>上级单位(可选,不选则创建顶级市级单位)
|
||||||
<select id="userCreateParent" class="form-select">
|
<select id="userCreateParent" class="form-select">
|
||||||
<option value="">不选择上级(顶级单位)</option>
|
<option value="">不选择上级(顶级单位)</option>
|
||||||
|
|
@ -1672,12 +1675,14 @@ function fillUserDrawer(user) {
|
||||||
}
|
}
|
||||||
if (userSummaryBox) {
|
if (userSummaryBox) {
|
||||||
const dept = user.department ? `${user.department.name || ''}${user.department.code ? ' · ' + user.department.code : ''}` : '未绑定';
|
const dept = user.department ? `${user.department.name || ''}${user.department.code ? ' · ' + user.department.code : ''}` : '未绑定';
|
||||||
|
const deptPhone = user.department ? (user.department.phone || '—') : '—';
|
||||||
userSummaryBox.innerHTML = `
|
userSummaryBox.innerHTML = `
|
||||||
<div class="summary-grid">
|
<div class="summary-grid">
|
||||||
<div><div class="label">登录账号</div><div class="value">${user.username || '—'}</div></div>
|
<div><div class="label">登录账号</div><div class="value">${user.username || '—'}</div></div>
|
||||||
<div><div class="label">显示名</div><div class="value">${user.display_name || '—'}</div></div>
|
<div><div class="label">显示名</div><div class="value">${user.display_name || '—'}</div></div>
|
||||||
<div><div class="label">角色</div><div class="value"><span class="pill">${getRoleLabel(user.role)}</span></div></div>
|
<div><div class="label">角色</div><div class="value"><span class="pill">${getRoleLabel(user.role)}</span></div></div>
|
||||||
<div><div class="label">绑定部门</div><div class="value">${dept}</div></div>
|
<div><div class="label">绑定部门</div><div class="value">${dept}</div></div>
|
||||||
|
<div><div class="label">单位电话</div><div class="value">${deptPhone}</div></div>
|
||||||
<div><div class="label">创建时间</div><div class="value">${formatDate(user.created_at)}</div></div>
|
<div><div class="label">创建时间</div><div class="value">${formatDate(user.created_at)}</div></div>
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
|
|
@ -1779,7 +1784,8 @@ if (userCreateForm) {
|
||||||
username: form.username.value.trim(),
|
username: form.username.value.trim(),
|
||||||
password: form.password.value.trim(),
|
password: form.password.value.trim(),
|
||||||
display_name: form.display_name.value.trim(),
|
display_name: form.display_name.value.trim(),
|
||||||
parent_department_id: parentDepartmentId || null
|
parent_department_id: parentDepartmentId || null,
|
||||||
|
department_phone: (form.department_phone.value || '').trim()
|
||||||
};
|
};
|
||||||
try {
|
try {
|
||||||
const resp = await fetchJSON(`${API_BASE}/admin/users`, {
|
const resp = await fetchJSON(`${API_BASE}/admin/users`, {
|
||||||
|
|
@ -1793,6 +1799,7 @@ if (userCreateForm) {
|
||||||
if (parentSelect) {
|
if (parentSelect) {
|
||||||
parentSelect.value = '';
|
parentSelect.value = '';
|
||||||
}
|
}
|
||||||
|
form.department_phone.value = '';
|
||||||
switchUserSubtab('user-list-panel');
|
switchUserSubtab('user-list-panel');
|
||||||
await refreshDepartments();
|
await refreshDepartments();
|
||||||
await refreshUsers();
|
await refreshUsers();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue