From cf2aadd89a936886f02cfc232b70ca7cb25fe85b Mon Sep 17 00:00:00 2001
From: Flow <958079825@qq.com>
Date: Fri, 18 Jul 2025 11:14:47 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9C=BA=E6=9E=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/org/index.ts | 5 ++
src/api/system/user/index.ts | 2 +
src/views/system/user/OrgList.vue | 125 +++++++++++++++++++++++++++++
src/views/system/user/UserForm.vue | 50 +++++++++++-
src/views/system/user/index.vue | 35 +++++---
5 files changed, 201 insertions(+), 16 deletions(-)
create mode 100644 src/views/system/user/OrgList.vue
diff --git a/src/api/org/index.ts b/src/api/org/index.ts
index d515196..328e71f 100644
--- a/src/api/org/index.ts
+++ b/src/api/org/index.ts
@@ -48,5 +48,10 @@ export const OrgApi = {
// 查询上级机构
getParentOrgList: async () => {
return await request.get({ url: `/system/org/parent-org-list` })
+ },
+
+ // 查询机构列表
+ getOrgList: async () => {
+ return await request.get({ url: `/system/org/list` })
}
}
diff --git a/src/api/system/user/index.ts b/src/api/system/user/index.ts
index 36776ea..d19e2b4 100644
--- a/src/api/system/user/index.ts
+++ b/src/api/system/user/index.ts
@@ -4,6 +4,8 @@ export interface UserVO {
id: number
username: string
nickname: string
+ orgId: number
+ orgName: string
deptId: number
postIds: string[]
email: string
diff --git a/src/views/system/user/OrgList.vue b/src/views/system/user/OrgList.vue
new file mode 100644
index 0000000..45ffe13
--- /dev/null
+++ b/src/views/system/user/OrgList.vue
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ org.orgName }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/system/user/UserForm.vue b/src/views/system/user/UserForm.vue
index 630688a..8a0a881 100644
--- a/src/views/system/user/UserForm.vue
+++ b/src/views/system/user/UserForm.vue
@@ -13,7 +13,7 @@
-
+
+
+
+
+
+
+
@@ -68,7 +80,7 @@
-
+
@@ -103,6 +115,7 @@ import * as PostApi from '@/api/system/post'
import * as DeptApi from '@/api/system/dept'
import * as UserApi from '@/api/system/user'
import { FormRules } from 'element-plus'
+import { OrgApi, OrgVO } from '@/api/org'
defineOptions({ name: 'SystemUserForm' })
@@ -116,6 +129,8 @@ const formType = ref('') // 表单的类型:create - 新增;update - 修改
const formData = ref({
nickname: '',
deptId: '',
+ orgId: '',
+ orgName: '',
mobile: '',
email: '',
id: undefined,
@@ -149,6 +164,22 @@ const formRules = reactive({
const formRef = ref() // 表单 Ref
const deptList = ref([]) // 树形结构
const postList = ref([] as PostApi.PostVO[]) // 岗位列表
+const orgList = ref([] as OrgVO[]) // 机构列表
+
+// 监听机构选择变化,自动设置orgName
+watch(
+ () => formData.value.orgId,
+ (newOrgId) => {
+ if (newOrgId) {
+ const selectedOrg = orgList.value.find((org) => org.orgId === Number(newOrgId))
+ if (selectedOrg) {
+ formData.value.orgName = selectedOrg.orgName
+ }
+ } else {
+ formData.value.orgName = ''
+ }
+ }
+)
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
@@ -169,6 +200,9 @@ const open = async (type: string, id?: number) => {
deptList.value = handleTree(await DeptApi.getSimpleDeptList())
// 加载岗位列表
postList.value = await PostApi.getSimplePostList()
+ // 加载机构列表
+ const orgResponse = await OrgApi.getOrgList()
+ orgList.value = Array.isArray(orgResponse) ? orgResponse : orgResponse.list || []
}
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
@@ -182,12 +216,18 @@ const submitForm = async () => {
// 提交请求
formLoading.value = true
try {
- const data = formData.value as unknown as UserApi.UserVO
+ // 确保orgId为数字类型
+ const submitData = {
+ ...formData.value,
+ orgId: formData.value.orgId ? Number(formData.value.orgId) : undefined
+ }
+ const data = submitData as unknown as UserApi.UserVO
if (formType.value === 'create') {
await UserApi.createUser(data)
message.success(t('common.createSuccess'))
} else {
await UserApi.updateUser(data)
+ console.log(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
@@ -203,6 +243,8 @@ const resetForm = () => {
formData.value = {
nickname: '',
deptId: '',
+ orgId: '',
+ orgName: '',
mobile: '',
email: '',
id: undefined,
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index d594f25..fa69f77 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -4,10 +4,10 @@
-
+
-
+
@@ -119,12 +119,19 @@
prop="nickname"
:show-overflow-tooltip="true"
/>
- -->
+
@@ -219,7 +226,7 @@ import * as UserApi from '@/api/system/user'
import UserForm from './UserForm.vue'
import UserImportForm from './UserImportForm.vue'
import UserAssignRoleForm from './UserAssignRoleForm.vue'
-import DeptTree from './DeptTree.vue'
+import OrgList from './OrgList.vue'
defineOptions({ name: 'SystemUser' })
@@ -236,7 +243,9 @@ const queryParams = reactive({
mobile: undefined,
status: undefined,
deptId: undefined,
- createTime: []
+ createTime: [],
+ orgId: undefined,
+ orgName: undefined
})
const queryFormRef = ref() // 搜索的表单
@@ -264,15 +273,17 @@ const resetQuery = () => {
handleQuery()
}
-/** 处理部门被点击 */
-const handleDeptNodeClick = async (row: any) => {
- if (row === undefined) {
- queryParams.deptId = undefined
- await getList()
+/** 处理机构被点击 */
+const handleOrgNodeClick = async (org: any) => {
+ if (org === undefined) {
+ queryParams.orgId = undefined
+ queryParams.orgName = undefined
} else {
- queryParams.deptId = row.id
- await getList()
+ queryParams.orgId = org.orgId || org.id // 尝试两个字段
+ queryParams.orgName = org.orgName
}
+ queryParams.pageNo = 1 // 重置到第一页
+ await getList()
}
/** 添加/修改操作 */