From 350b540485669e9f5e5a91c1be8bb4a37ef98841 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 20 八月 2026 15:04:19 +0800
Subject: [PATCH] 天津-阳光彩印 1.员工合同编辑页面自动带出员工关联基础信息 2.合同到期提前45 天系统弹窗提醒,到期预警天数固定 45 天
---
src/views/personnelManagement/employeeRecord/components/Show.vue | 213 +++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 174 insertions(+), 39 deletions(-)
diff --git a/src/views/personnelManagement/employeeRecord/components/Show.vue b/src/views/personnelManagement/employeeRecord/components/Show.vue
index 9220d45..1f5211b 100644
--- a/src/views/personnelManagement/employeeRecord/components/Show.vue
+++ b/src/views/personnelManagement/employeeRecord/components/Show.vue
@@ -2,20 +2,131 @@
<div>
<el-dialog
v-model="dialogFormVisible"
- title="璇︽儏"
- width="70%"
+ title="鍛樺伐璇︽儏"
+ width="80%"
+ top="5vh"
@close="closeDia"
>
- <PIMTable
- rowKey="id"
- :column="tableColumn"
- :tableData="tableData"
- :tableLoading="tableLoading"
- height="600"
- ></PIMTable>
+ <div v-loading="loading" class="detail-body">
+ <!-- 鍩烘湰淇℃伅 -->
+ <el-card shadow="never" class="detail-card">
+ <template #header>
+ <span class="card-title">
+ <span class="card-title-line">|</span>
+ 鍩烘湰淇℃伅
+ </span>
+ </template>
+ <el-descriptions :column="4" border>
+ <el-descriptions-item label="鍛樺伐缂栧彿">{{ detail.staffNo || '-' }}</el-descriptions-item>
+ <el-descriptions-item label="濮撳悕">{{ detail.staffName || '-' }}</el-descriptions-item>
+ <el-descriptions-item label="鍒悕">{{ detail.alias || '-' }}</el-descriptions-item>
+ <el-descriptions-item label="鎬у埆">{{ detail.sex || '-' }}</el-descriptions-item>
+ <el-descriptions-item label="鎵嬫満">{{ detail.phone || '-' }}</el-descriptions-item>
+ <el-descriptions-item label="鍑虹敓鏃ユ湡">{{ detail.birthDate || '-' }}</el-descriptions-item>
+ <el-descriptions-item label="骞撮緞">{{ detail.age ?? '-' }}</el-descriptions-item>
+ <el-descriptions-item label="绫嶈疮">{{ detail.nativePlace || '-' }}</el-descriptions-item>
+ <el-descriptions-item label="姘戞棌">{{ detail.nation || '-' }}</el-descriptions-item>
+ <el-descriptions-item label="濠氬Щ鐘跺喌">{{ detail.maritalStatus || '-' }}</el-descriptions-item>
+ <el-descriptions-item label="鏀挎不闈㈣矊">{{ detail.politicalStatus || '-' }}</el-descriptions-item>
+ <el-descriptions-item label="韬唤璇佸彿">{{ detail.idCardNo || '-' }}</el-descriptions-item>
+ <el-descriptions-item label="鎴峰彛绫诲瀷">{{ detail.hukouType || '-' }}</el-descriptions-item>
+ <el-descriptions-item label="閭">{{ detail.email || '-' }}</el-descriptions-item>
+ <el-descriptions-item label="鐜颁綇鍧�" :span="2">{{ detail.currentAddress || '-' }}</el-descriptions-item>
+ <el-descriptions-item label="閫氳鍦板潃" :span="2">{{ detail.contactAddress || '-' }}</el-descriptions-item>
+ </el-descriptions>
+ </el-card>
+
+ <!-- 鍦ㄨ亴淇℃伅 -->
+ <el-card shadow="never" class="detail-card">
+ <template #header>
+ <span class="card-title">
+ <span class="card-title-line">|</span>
+ 鍦ㄨ亴淇℃伅
+ </span>
+ </template>
+ <el-descriptions :column="4" border>
+ <el-descriptions-item label="鍏ヨ亴鏃ユ湡">{{ detail.contractStartTime || '-' }}</el-descriptions-item>
+ <el-descriptions-item label="鍚堝悓缁撴潫鏃ユ湡">{{ detail.contractEndTime || '-' }}</el-descriptions-item>
+ <el-descriptions-item label="璇曠敤鏈燂紙鏈堬級">{{ detail.proTerm ?? '-' }}</el-descriptions-item>
+ <el-descriptions-item label="杞鏃ユ湡">{{ detail.positiveDate || '-' }}</el-descriptions-item>
+ <el-descriptions-item label="閮ㄩ棬">{{ detail.deptName || detail.sysDeptId || '-' }}</el-descriptions-item>
+ <el-descriptions-item label="宀椾綅">{{ detail.postName || detail.sysPostId || '-' }}</el-descriptions-item>
+ <el-descriptions-item label="鍩烘湰宸ヨ祫">{{ detail.basicSalary ?? '-' }}</el-descriptions-item>
+ <el-descriptions-item label="鍛樺伐鐘舵��">{{ formatStaffState(detail.staffState) }}</el-descriptions-item>
+ </el-descriptions>
+ </el-card>
+
+ <!-- 閾惰鍗′俊鎭� -->
+ <el-card shadow="never" class="detail-card">
+ <template #header>
+ <span class="card-title">
+ <span class="card-title-line">|</span>
+ 閾惰鍗′俊鎭�
+ </span>
+ </template>
+ <el-descriptions :column="2" border>
+ <el-descriptions-item label="寮�鎴疯">{{ detail.bankName || '-' }}</el-descriptions-item>
+ <el-descriptions-item label="閾惰鍗″彿">{{ detail.bankCardNo || '-' }}</el-descriptions-item>
+ </el-descriptions>
+ </el-card>
+
+ <!-- 鏁欒偛缁忓巻 -->
+ <el-card shadow="never" class="detail-card">
+ <template #header>
+ <span class="card-title">
+ <span class="card-title-line">|</span>
+ 鏁欒偛缁忓巻
+ </span>
+ </template>
+ <el-table :data="detail.staffEducationList || []" border>
+ <el-table-column label="瀛﹀巻" align="center">
+ <template #default="{ row }">{{ formatEducation(row.education) }}</template>
+ </el-table-column>
+ <el-table-column label="姣曚笟闄㈡牎" prop="schoolName" align="center" />
+ <el-table-column label="鍏ュ鏃堕棿" prop="enrollTime" align="center" />
+ <el-table-column label="姣曚笟鏃堕棿" prop="graduateTime" align="center" />
+ <el-table-column label="涓撲笟" prop="major" align="center" />
+ <el-table-column label="瀛︿綅" prop="degree" align="center" />
+ </el-table>
+ </el-card>
+
+ <!-- 宸ヤ綔缁忓巻 -->
+ <el-card shadow="never" class="detail-card">
+ <template #header>
+ <span class="card-title">
+ <span class="card-title-line">|</span>
+ 宸ヤ綔缁忓巻
+ </span>
+ </template>
+ <el-table :data="detail.staffWorkExperienceList || []" border>
+ <el-table-column label="鍓嶅叕鍙�" prop="formerCompany" align="center" />
+ <el-table-column label="鍓嶅叕鍙搁儴闂�" prop="formerDept" align="center" />
+ <el-table-column label="鍓嶅叕鍙歌亴浣�" prop="formerPosition" align="center" />
+ <el-table-column label="寮�濮嬫棩鏈�" prop="startDate" align="center" />
+ <el-table-column label="缁撴潫鏃ユ湡" prop="endDate" align="center" />
+ <el-table-column label="宸ヤ綔鎻忚堪" prop="workDesc" align="center" />
+ </el-table>
+ </el-card>
+
+ <!-- 绱ф�ヨ仈绯讳汉 -->
+ <el-card shadow="never" class="detail-card">
+ <template #header>
+ <span class="card-title">
+ <span class="card-title-line">|</span>
+ 绱ф�ヨ仈绯讳汉
+ </span>
+ </template>
+ <el-table :data="detail.staffEmergencyContactList || []" border>
+ <el-table-column label="濮撳悕" prop="contactName" align="center" />
+ <el-table-column label="鍏崇郴" prop="contactRelation" align="center" />
+ <el-table-column label="鎵嬫満" prop="contactPhone" align="center" />
+ <el-table-column label="浣忓潃" prop="contactAddress" align="center" />
+ </el-table>
+ </el-card>
+ </div>
<template #footer>
<div class="dialog-footer">
- <el-button @click="closeDia">鍙栨秷</el-button>
+ <el-button @click="closeDia">鍏抽棴</el-button>
</div>
</template>
</el-dialog>
@@ -23,51 +134,75 @@
</template>
<script setup>
-import {ref} from "vue";
-import {staffOnJobInfo} from "@/api/personnelManagement/staffOnJob.js";
-const { proxy } = getCurrentInstance()
-const emit = defineEmits(['close'])
+import { ref } from "vue";
+import { staffOnJobInfo } from "@/api/personnelManagement/staffOnJob.js";
+
+const emit = defineEmits(["close"]);
const dialogFormVisible = ref(false);
-const operationType = ref('')
-const tableColumn = ref([
- // {
- // label: "鍚堝悓骞撮檺",
- // prop: "contractTerm",
- // },
- {
- label: "鍚堝悓寮�濮嬫棩鏈�",
- prop: "contractStartTime",
- },
- {
- label: "鍚堝悓缁撴潫鏃ユ湡",
- prop: "contractEndTime",
- },
-]);
-const tableData = ref([]);
-const tableLoading = ref(false);
+const loading = ref(false);
+const detail = ref({});
+
+const educationMap = {
+ secondary: "涓笓鍙婁互涓�",
+ junior_college: "澶т笓",
+ bachelor: "鏈",
+ master: "纭曞+",
+ doctor: "鍗氬+鍙婁互涓�",
+};
+
+const formatEducation = (v) => educationMap[v] || v || "-";
+
+const formatStaffState = (v) => {
+ if (v == 0) return "绂昏亴";
+ if (v == 1) return "鍦ㄨ亴";
+ return "-";
+};
// 鎵撳紑寮规
const openDialog = (type, row) => {
- operationType.value = type;
+ detail.value = {};
dialogFormVisible.value = true;
- if (operationType.value === 'edit') {
- staffOnJobInfo({staffNo: row.staffNo}).then(res => {
- tableData.value = res.data
- })
+ if (row?.id) {
+ loading.value = true;
+ staffOnJobInfo(row.id, {})
+ .then((res) => {
+ detail.value = res.data || {};
+ })
+ .finally(() => {
+ loading.value = false;
+ });
}
-}
+};
// 鍏抽棴寮规
const closeDia = () => {
dialogFormVisible.value = false;
- emit('close')
+ emit("close");
};
+
defineExpose({
openDialog,
});
</script>
<style scoped>
+.detail-body {
+ max-height: 70vh;
+ overflow-y: auto;
+ padding: 4px;
+}
-</style>
\ No newline at end of file
+.detail-card {
+ margin-bottom: 16px;
+}
+
+.card-title {
+ font-weight: 600;
+}
+
+.card-title-line {
+ color: #f56c6c;
+ margin-right: 4px;
+}
+</style>
--
Gitblit v1.9.3