From b74d628be8ff57a22e4e4a5a164e755a509820ec Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 07 七月 2026 16:50:18 +0800
Subject: [PATCH] 银川 1.员工管理页面开发、联调 2.薪资发放页面开发联调 3.薪酬管理页面开发联调 4.添加请假扣薪管理页面开发联调
---
src/views/hrm/employee/modules/detail.vue | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 102 insertions(+), 0 deletions(-)
diff --git a/src/views/hrm/employee/modules/detail.vue b/src/views/hrm/employee/modules/detail.vue
new file mode 100644
index 0000000..ca20c47
--- /dev/null
+++ b/src/views/hrm/employee/modules/detail.vue
@@ -0,0 +1,102 @@
+<script lang="ts" setup>
+import type { HrmEmployeeApi } from '#/api/hrm/employee';
+
+import { computed } from 'vue';
+
+import { Descriptions, DescriptionsItem, Tabs, TabPane, Tag } from 'ant-design-vue';
+
+import { DICT_TYPE } from '#/packages/constants/src';
+import { getDictLabel } from '#/packages/effects/hooks/src';
+
+import EducationList from './education-list.vue';
+import WorkHistoryList from './work-history-list.vue';
+import EmergencyContactList from './emergency-contact-list.vue';
+import SocialSecurityList from './social-security-list.vue';
+
+const props = defineProps<{
+ employee: HrmEmployeeApi.Employee;
+}>();
+
+const genderLabel = computed(() =>
+ getDictLabel(DICT_TYPE.HRM_GENDER, props.employee.gender),
+);
+
+const employeeStatusLabel = computed(() =>
+ getDictLabel(DICT_TYPE.HRM_EMPLOYEE_STATUS, props.employee.employeeStatus),
+);
+
+const employeeStatusColor = computed(() => {
+ const status = props.employee.employeeStatus;
+ if (status === 1) return 'success';
+ if (status === 2) return 'processing';
+ if (status === 3) return 'default';
+ return 'default';
+});
+</script>
+
+<template>
+ <div class="employee-detail">
+ <!-- 鍩烘湰淇℃伅 -->
+ <Descriptions title="鍩烘湰淇℃伅" bordered :column="2" class="mb-4">
+ <DescriptionsItem label="鍛樺伐缂栧彿">{{ employee.employeeNo }}</DescriptionsItem>
+ <DescriptionsItem label="鍛樺伐濮撳悕">{{ employee.name }}</DescriptionsItem>
+ <DescriptionsItem label="鎬у埆">{{ genderLabel }}</DescriptionsItem>
+ <DescriptionsItem label="鍑虹敓鏃ユ湡">{{ employee.birthday || '-' }}</DescriptionsItem>
+ <DescriptionsItem label="鎵嬫満鍙风爜">{{ employee.phone }}</DescriptionsItem>
+ <DescriptionsItem label="閭">{{ employee.email || '-' }}</DescriptionsItem>
+ <DescriptionsItem label="韬唤璇佸彿">{{ employee.idCard || '-' }}</DescriptionsItem>
+ <DescriptionsItem label="鍛樺伐鐘舵��">
+ <Tag :color="employeeStatusColor">{{ employeeStatusLabel }}</Tag>
+ </DescriptionsItem>
+ </Descriptions>
+
+ <!-- 宸ヤ綔淇℃伅 -->
+ <Descriptions title="宸ヤ綔淇℃伅" bordered :column="2" class="mb-4">
+ <DescriptionsItem label="褰掑睘閮ㄩ棬">{{ employee.deptName || '-' }}</DescriptionsItem>
+ <DescriptionsItem label="宀椾綅">{{ employee.postName || '-' }}</DescriptionsItem>
+ <DescriptionsItem label="鍏ヨ亴鏃ユ湡">{{ employee.hireDate }}</DescriptionsItem>
+ <DescriptionsItem label="杞鏃ユ湡">{{ employee.regularDate || '-' }}</DescriptionsItem>
+ <DescriptionsItem label="绂昏亴鏃ユ湡">{{ employee.leaveDate || '-' }}</DescriptionsItem>
+ <DescriptionsItem label="鍩烘湰宸ヨ祫">{{ employee.baseSalary ? `楼${employee.baseSalary.toFixed(2)}` : '-' }}</DescriptionsItem>
+ <DescriptionsItem label="鐢ㄦ埛瑙掕壊" :span="2">
+ {{ Array.isArray(employee.roleNames) ? employee.roleNames.join('銆�') : employee.roleNames || '-' }}
+ </DescriptionsItem>
+ <DescriptionsItem label="骞村亣浣欓">{{ employee.annualLeaveBalance ?? 0 }} 澶�</DescriptionsItem>
+ <DescriptionsItem label="鐥呭亣浣欓">{{ employee.sickLeaveBalance ?? 0 }} 澶�</DescriptionsItem>
+ </Descriptions>
+
+ <!-- 璐㈠姟淇℃伅 -->
+ <Descriptions title="璐㈠姟淇℃伅" bordered :column="2" class="mb-4">
+ <DescriptionsItem label="寮�鎴烽摱琛�">{{ employee.bankName || '-' }}</DescriptionsItem>
+ <DescriptionsItem label="閾惰璐﹀彿">{{ employee.bankAccount || '-' }}</DescriptionsItem>
+ <DescriptionsItem label="灞呬綇鍦板潃" :span="2">{{ employee.address || '-' }}</DescriptionsItem>
+ </Descriptions>
+
+ <!-- 澶囨敞 -->
+ <Descriptions title="鍏朵粬淇℃伅" bordered :column="1" class="mb-4">
+ <DescriptionsItem label="澶囨敞">{{ employee.remark || '-' }}</DescriptionsItem>
+ </Descriptions>
+
+ <!-- 瀛愯〃淇℃伅 -->
+ <Tabs v-if="employee.id" class="mt-4">
+ <Tabs.TabPane key="education" tab="鏁欒偛缁忓巻">
+ <EducationList form-type="detail" :employee-id="employee.id" />
+ </Tabs.TabPane>
+ <Tabs.TabPane key="workHistory" tab="宸ヤ綔缁忓巻">
+ <WorkHistoryList form-type="detail" :employee-id="employee.id" />
+ </Tabs.TabPane>
+ <Tabs.TabPane key="emergencyContact" tab="绱ф�ヨ仈绯讳汉">
+ <EmergencyContactList form-type="detail" :employee-id="employee.id" />
+ </Tabs.TabPane>
+ <Tabs.TabPane key="socialSecurity" tab="绀句繚鍏Н閲戞。妗�">
+ <SocialSecurityList form-type="detail" :employee-id="employee.id" :user-id="employee.userId" />
+ </Tabs.TabPane>
+ </Tabs>
+ </div>
+</template>
+
+<style scoped>
+.employee-detail {
+ padding: 0 16px;
+}
+</style>
\ No newline at end of file
--
Gitblit v1.9.3