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/contractManagement/index.vue |   66 ++++++++++++++++++++++++++++++++-
 1 files changed, 64 insertions(+), 2 deletions(-)

diff --git a/src/views/personnelManagement/contractManagement/index.vue b/src/views/personnelManagement/contractManagement/index.vue
index d947c5b..2f8fdee 100644
--- a/src/views/personnelManagement/contractManagement/index.vue
+++ b/src/views/personnelManagement/contractManagement/index.vue
@@ -66,6 +66,34 @@
       </template>
     </el-dialog>
     <files-dia ref="filesDia"></files-dia>
+
+    <!-- 鍚堝悓鍒版湡鎻愰啋寮圭獥 -->
+    <el-dialog
+      v-model="expireWarningVisible"
+      title="鍚堝悓鍒版湡鎻愰啋"
+      width="720px"
+      @close="expireWarningVisible = false"
+    >
+      <div style="margin-bottom: 12px; color: #e6a23c; font-size: 14px;">
+        浠ヤ笅鍛樺伐鍚堝悓灏嗗湪 {{ EXPIRE_WARNING_DAYS }} 澶╁唴鍒版湡锛岃鍙婃椂澶勭悊锛�
+      </div>
+      <el-table :data="expireWarningList" border max-height="400">
+        <el-table-column label="濮撳悕" prop="staffName" align="center" />
+        <el-table-column label="鍛樺伐缂栧彿" prop="staffNo" align="center" />
+        <el-table-column label="鑱旂郴鐢佃瘽" prop="phone" align="center" />
+        <el-table-column label="鍚堝悓缁撴潫鏃ユ湡" prop="contractExpireTime" align="center" width="140" />
+        <el-table-column label="鍓╀綑澶╂暟" align="center" width="120">
+          <template #default="scope">
+            <el-tag :type="scope.row.expireDays < 0 ? 'danger' : 'warning'">
+              {{ formatExpireDays(scope.row.expireDays) }}
+            </el-tag>
+          </template>
+        </el-table-column>
+      </el-table>
+      <template #footer>
+        <el-button type="primary" @click="expireWarningVisible = false">鐭ラ亾浜�</el-button>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
@@ -207,6 +235,12 @@
 const formDia = ref()
 const { proxy } = getCurrentInstance()
 
+// 鍚堝悓鍒版湡棰勮澶╂暟锛堝浐瀹� 45 澶╋級
+const EXPIRE_WARNING_DAYS = 45
+// 鍚堝悓鍒版湡鎻愰啋寮圭獥
+const expireWarningVisible = ref(false)
+const expireWarningList = ref([])
+
 const changeDaterange = (value) => {
   searchForm.value.entryDateStart = undefined;
   searchForm.value.entryDateEnd = undefined;
@@ -239,13 +273,41 @@
   const params = { ...searchForm.value, ...page };
   params.entryDate = undefined
   params.staffState = 1
-  staffOnJobListPage(params).then(res => {
+  return staffOnJobListPage(params).then(res => {
     tableLoading.value = false;
     tableData.value = res.data.records
     page.total = res.data.total;
   }).catch(err => {
     tableLoading.value = false;
   })
+};
+
+// 妫�鏌ュ悎鍚屽埌鏈熸彁閱掞紙45 澶╁唴鍒版湡锛�
+const checkContractExpireWarning = () => {
+  const today = dayjs().startOf('day');
+  const list = (tableData.value || [])
+    .filter(item => {
+      if (!item.contractExpireTime) return false;
+      const expireDay = dayjs(item.contractExpireTime);
+      if (!expireDay.isValid()) return false;
+      const diffDays = expireDay.diff(today, 'day');
+      return diffDays <= EXPIRE_WARNING_DAYS;
+    })
+    .map(item => ({
+      ...item,
+      expireDays: dayjs(item.contractExpireTime).diff(today, 'day'),
+    }));
+  if (list.length > 0) {
+    expireWarningList.value = list;
+    expireWarningVisible.value = true;
+  }
+};
+
+// 鍓╀綑澶╂暟鏍煎紡鍖�
+const formatExpireDays = (days) => {
+  if (days < 0) return `宸茶繃鏈� ${Math.abs(days)} 澶ー;
+  if (days === 0) return "浠婂ぉ鍒版湡";
+  return `鍓╀綑 ${days} 澶ー;
 };
 // 琛ㄦ牸閫夋嫨鏁版嵁
 const handleSelectionChange = (selection) => {
@@ -308,7 +370,7 @@
   getList();
 };
 onMounted(() => {
-  getList();
+  getList().then(() => checkContractExpireWarning());
 });
 </script>
 

--
Gitblit v1.9.3