diff --git a/pc/src/api/oa.js b/pc/src/api/oa.js
new file mode 100644
index 0000000..3d58c76
--- /dev/null
+++ b/pc/src/api/oa.js
@@ -0,0 +1,15 @@
+import request from '@/utils/request';
+
+/**
+ * 获取OA基础数据(部门、职位、角色)
+ * 这是一个合并接口,一次性获取所有基础数据,减少网络请求次数
+ * @param {number} tenantId - 租户ID
+ * @returns {Promise} 返回包含 departments, positions, roles 的数据
+ */
+export function getOABaseData(tenantId) {
+ return request({
+ url: `/api/oa/base-data/${tenantId}`,
+ method: 'get',
+ });
+}
+
diff --git a/pc/src/components/CommonAside.vue b/pc/src/components/CommonAside.vue
index 6442b30..d4e474e 100644
--- a/pc/src/components/CommonAside.vue
+++ b/pc/src/components/CommonAside.vue
@@ -33,16 +33,15 @@
+
diff --git a/pc/src/views/apps/oa/components/departments/DepartmentList.vue b/pc/src/views/apps/oa/components/departments/DepartmentList.vue
new file mode 100644
index 0000000..4a18aac
--- /dev/null
+++ b/pc/src/views/apps/oa/components/departments/DepartmentList.vue
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+ {{ scope.row.status === 1 ? "启用" : "禁用" }}
+
+
+
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pc/src/views/apps/oa/components/employees/EmployeeEdit.vue b/pc/src/views/apps/oa/components/employees/EmployeeEdit.vue
new file mode 100644
index 0000000..6adce9c
--- /dev/null
+++ b/pc/src/views/apps/oa/components/employees/EmployeeEdit.vue
@@ -0,0 +1,315 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 暂无部门数据,请先创建部门
+
+
+ 警告:当前选择的部门ID ({{ form.department_id }}) 在部门列表中不存在
+
+
+
+
+
+
+
+ 该部门暂无职位
+
+
+ 警告:当前选择的职位ID ({{ form.position_id }}) 在职位列表中不存在
+
+
+
+
+
+ {{ role.roleName || role.name || role.role_name }}
+
+ ({{ role.roleCode || role.code || role.role_code }})
+
+
+
+
+ 暂无可用角色
+
+
+ 警告:当前选择的角色ID ({{ form.role }}) 在角色列表中不存在
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 保存
+
+
+
+
+
+
+
+
diff --git a/pc/src/views/apps/oa/components/employees/EmployeeList.vue b/pc/src/views/apps/oa/components/employees/EmployeeList.vue
new file mode 100644
index 0000000..cc47a58
--- /dev/null
+++ b/pc/src/views/apps/oa/components/employees/EmployeeList.vue
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+
+
+
+ {{ scope.row.roleName || '未分配' }}
+
+
+
+
+ {{ scope.row.departmentName || '未分配' }}
+
+
+
+
+ {{ scope.row.positionName || '未分配' }}
+
+
+
+
+ {{ scope.row.bankName || '-' }}
+
+
+
+
+ {{ scope.row.bankAccount || '-' }}
+
+
+
+
+
+ {{ scope.row.status === 1 ? "在职" : "离职" }}
+
+
+
+
+
+
+ 编辑
+ 重置密码
+ 修改密码
+ 删除
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pc/src/views/apps/oa/components/employees/EmployeePasswordChange.vue b/pc/src/views/apps/oa/components/employees/EmployeePasswordChange.vue
new file mode 100644
index 0000000..826fcac
--- /dev/null
+++ b/pc/src/views/apps/oa/components/employees/EmployeePasswordChange.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 确定
+
+
+
+
+
+
diff --git a/pc/src/views/apps/oa/components/organization/DepartmentEdit.vue b/pc/src/views/apps/oa/components/organization/DepartmentEdit.vue
new file mode 100644
index 0000000..2108bb4
--- /dev/null
+++ b/pc/src/views/apps/oa/components/organization/DepartmentEdit.vue
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 保存
+
+
+
+
+
+
diff --git a/pc/src/views/apps/oa/components/organization/DepartmentTree.vue b/pc/src/views/apps/oa/components/organization/DepartmentTree.vue
new file mode 100644
index 0000000..b082f41
--- /dev/null
+++ b/pc/src/views/apps/oa/components/organization/DepartmentTree.vue
@@ -0,0 +1,257 @@
+
+
+
+
+
+
+ handleNodeLabelClick(node, data, e)"
+ >
+
+ {{ node.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pc/src/views/apps/oa/components/organization/PositionEdit.vue b/pc/src/views/apps/oa/components/organization/PositionEdit.vue
new file mode 100644
index 0000000..1c24e55
--- /dev/null
+++ b/pc/src/views/apps/oa/components/organization/PositionEdit.vue
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 保存
+
+
+
+
+
+
diff --git a/pc/src/views/apps/oa/components/organization/PositionList.vue b/pc/src/views/apps/oa/components/organization/PositionList.vue
new file mode 100644
index 0000000..6ae4fb9
--- /dev/null
+++ b/pc/src/views/apps/oa/components/organization/PositionList.vue
@@ -0,0 +1,196 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.status === 1 ? "启用" : "禁用" }}
+
+
+
+
+
+
+
+
+ 编辑
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pc/src/views/apps/oa/components/positions/PositionEdit.vue b/pc/src/views/apps/oa/components/positions/PositionEdit.vue
new file mode 100644
index 0000000..4e780c3
--- /dev/null
+++ b/pc/src/views/apps/oa/components/positions/PositionEdit.vue
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 保存
+
+
+
+
+
+
diff --git a/pc/src/views/apps/oa/components/positions/PositionList.vue b/pc/src/views/apps/oa/components/positions/PositionList.vue
new file mode 100644
index 0000000..3923233
--- /dev/null
+++ b/pc/src/views/apps/oa/components/positions/PositionList.vue
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.status === 1 ? "启用" : "禁用" }}
+
+
+
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pc/src/views/apps/oa/departments/index.vue b/pc/src/views/apps/oa/departments/index.vue
index 9a0a229..46b0326 100644
--- a/pc/src/views/apps/oa/departments/index.vue
+++ b/pc/src/views/apps/oa/departments/index.vue
@@ -16,116 +16,42 @@
-
-
-
-
-
-
-
- {{ scope.row.status === 1 ? "启用" : "禁用" }}
-
-
-
-
-
-
-
- 编辑
- 删除
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 取消
- 保存
-
-
+
+
diff --git a/pc/src/views/apps/oa/positions/index.vue b/pc/src/views/apps/oa/positions/index.vue
index af3f3aa..6460ad1 100644
--- a/pc/src/views/apps/oa/positions/index.vue
+++ b/pc/src/views/apps/oa/positions/index.vue
@@ -16,148 +16,44 @@
-
-
-
-
-
-
-
-
-
- {{ scope.row.status === 1 ? "启用" : "禁用" }}
-
-
-
-
-
-
-
- 编辑
- 删除
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 取消
- 保存
-
-
+
+