From 80367ddf4383493729420bb62aa8c8ebb9616dd9 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期日, 04 一月 2026 16:54:04 +0800
Subject: [PATCH] 代码调整9

---
 src/views/contractor/compliance/index.vue |  843 ++++++++++++++-----------------------------------------
 1 files changed, 215 insertions(+), 628 deletions(-)

diff --git a/src/views/contractor/compliance/index.vue b/src/views/contractor/compliance/index.vue
index 7fbe1a2..97bdae4 100644
--- a/src/views/contractor/compliance/index.vue
+++ b/src/views/contractor/compliance/index.vue
@@ -1,664 +1,251 @@
 <template>
   <div class="app-container">
-    <el-form
-      :model="queryParams"
-      ref="queryRef"
-      :inline="true"
-      v-show="showSearch"
-      label-width="90px"
-    >
-      <el-form-item label="鍚堣鍚嶇О" prop="complianceName">
+    <div class="search_form">
+      <div>
+        <span class="search_title">鍚堣鍚嶇О锛�</span>
         <el-input
-          v-model="queryParams.complianceName"
-          placeholder="璇疯緭鍏ュ悎瑙勫悕绉�"
-          clearable
-          style="width: 220px"
-          @keyup.enter="handleQuery"
+            v-model="searchForm.staffName"
+            style="width: 240px"
+            placeholder="璇疯緭鍏ュ悎瑙勫悕绉�"
+            @change="handleQuery"
+            clearable
+            :prefix-icon="Search"
         />
-      </el-form-item>
-      <el-form-item label="鍚堣缂栧彿" prop="complianceCode">
-        <el-input
-          v-model="queryParams.complianceCode"
-          placeholder="璇疯緭鍏ュ悎瑙勭紪鍙�"
-          clearable
-          style="width: 240px"
-          @keyup.enter="handleQuery"
+        <span style="margin-left: 10px;"  class="search_title">鏈夋晥鏈熷紑濮嬶細</span>
+        <el-date-picker
+            v-model="searchForm.entryDateStart"
+            type="date"
+            placeholder="璇烽�夋嫨"
+            size="default"
+            @change="(date) => handleDateChange(date,1)"
         />
-      </el-form-item>
-      <el-form-item label="鎵�灞炴壙鍖呭晢" prop="contractorId">
-        <el-select
-          v-model="queryParams.contractorId"
-          placeholder="璇烽�夋嫨鎵垮寘鍟�"
-          clearable
-          style="width: 240px"
+        <span style="margin-left: 10px;" class="search_title">鏈夋晥鏈熺粨鏉燂細</span>
+        <el-date-picker
+            v-model="searchForm.entryDateEnd"
+            type="date"
+            placeholder="璇烽�夋嫨"
+            size="default"
+            @change="(date) => handleDateChange(date,2)"
+        />
+        <el-button type="primary" @click="handleQuery" style="margin-left: 10px"
+        >鎼滅储</el-button
         >
-          <el-option
-            v-for="contractor in contractorOptions"
-            :key="contractor.contractorId"
-            :label="contractor.contractorName"
-            :value="contractor.contractorId"
-          />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="鍚堣鐘舵��" prop="status">
-        <el-select
-          v-model="queryParams.status"
-          placeholder="鍚堣鐘舵��"
-          clearable
-          style="width: 240px"
-        >
-          <el-option
-            v-for="dict in compliance_status"
-            :key="dict.value"
-            :label="dict.label"
-            :value="dict.value"
-          />
-        </el-select>
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="Search" @click="handleQuery"
-          >鎼滅储</el-button
-        >
-        <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button>
-      </el-form-item>
-    </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="Plus"
-          @click="handleAdd"
-          >鏂板</el-button
-        >
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="Edit"
-          :disabled="single"
-          @click="handleUpdate"
-          >淇敼</el-button
-        >
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="Delete"
-          :disabled="multiple"
-          @click="handleDelete"
-          >鍒犻櫎</el-button
-        >
-      </el-col>
-      <right-toolbar
-        v-model:showSearch="showSearch"
-        @queryTable="getList"
-        :columns="columns"
-      ></right-toolbar>
-    </el-row>
-
-    <el-table
-      v-loading="loading"
-      :data="complianceList"
-      @selection-change="handleSelectionChange"
-      stripe
-    >
-      <el-table-column type="selection" width="50" align="center" />
-      <el-table-column
-        label="鍚堣ID"
-        align="center"
-        key="complianceId"
-        prop="complianceId"
-        v-if="columns[0].visible"
-      />
-      <el-table-column
-        label="鍚堣鍚嶇О"
-        align="center"
-        key="complianceName"
-        prop="complianceName"
-        v-if="columns[1].visible"
-        :show-overflow-tooltip="true"
-      />
-      <el-table-column
-        label="鍚堣缂栧彿"
-        align="center"
-        key="complianceCode"
-        prop="complianceCode"
-        v-if="columns[2].visible"
-      />
-      <el-table-column
-        label="鎵�灞炴壙鍖呭晢"
-        align="center"
-        key="contractorName"
-        prop="contractorName"
-        v-if="columns[3].visible"
-        :show-overflow-tooltip="true"
-      />
-      <el-table-column
-        label="鍚堣绫诲瀷"
-        align="center"
-        key="complianceType"
-        prop="complianceType"
-        v-if="columns[4].visible"
-      >
-        <template #default="scope">
-          {{ getComplianceTypeLabel(scope.row.complianceType) }}
-        </template>
-      </el-table-column>
-      <el-table-column
-        label="鏈夋晥鏈熷紑濮�"
-        align="center"
-        key="validStartDate"
-        prop="validStartDate"
-        v-if="columns[5].visible"
-        width="140"
-      />
-      <el-table-column
-        label="鏈夋晥鏈熺粨鏉�"
-        align="center"
-        key="validEndDate"
-        prop="validEndDate"
-        v-if="columns[6].visible"
-        width="140"
-      />
-      <el-table-column
-        label="鐘舵��"
-        align="center"
-        key="status"
-        v-if="columns[7].visible"
-      >
-        <template #default="scope">
-          <el-switch
-            v-model="scope.row.status"
-            active-value="0"
-            inactive-value="1"
-            @change="handleStatusChange(scope.row)"
-          ></el-switch>
-        </template>
-      </el-table-column>
-      <el-table-column
-        label="鍒涘缓鏃堕棿"
-        align="center"
-        prop="createTime"
-        v-if="columns[8].visible"
-        width="160"
-      >
-        <template #default="scope">
-          <span>{{ parseTime(scope.row.createTime) }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column
-        label="鎿嶄綔"
-        align="center"
-        width="150"
-        class-name="small-padding fixed-width"
-      >
-        <template #default="scope">
-          <el-tooltip
-            content="淇敼"
-            placement="top"
-          >
-            <el-button
-              link
-              type="primary"
-              icon="Edit"
-              @click="handleUpdate(scope.row)"
-            ></el-button>
-          </el-tooltip>
-          <el-tooltip
-            content="鍒犻櫎"
-            placement="top"
-          >
-            <el-button
-              link
-              type="primary"
-              icon="Delete"
-              @click="handleDelete(scope.row)"
-            ></el-button>
-          </el-tooltip>
-        </template>
-      </el-table-column>
-    </el-table>
-    <pagination
-      v-show="total > 0"
-      :total="total"
-      v-model:page="queryParams.pageNum"
-      v-model:limit="queryParams.pageSize"
-      @pagination="getList"
-    />
-
-    <!-- 娣诲姞鎴栦慨鏀瑰悎瑙勯厤缃璇濇 -->
-    <el-dialog :title="title" v-model="open" width="600px" append-to-body>
-      <el-form :model="form" :rules="rules" ref="complianceRef" label-width="80px">
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="鍚堣鍚嶇О" prop="complianceName">
-              <el-input
-                v-model="form.complianceName"
-                placeholder="璇疯緭鍏ュ悎瑙勫悕绉�"
-                maxlength="50"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="鍚堣缂栧彿" prop="complianceCode">
-              <el-input
-                v-model="form.complianceCode"
-                placeholder="璇疯緭鍏ュ悎瑙勭紪鍙�"
-                maxlength="20"
-              />
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="鎵�灞炴壙鍖呭晢" prop="contractorId">
-              <el-select
-                v-model="form.contractorId"
-                placeholder="璇烽�夋嫨鎵垮寘鍟�"
-                clearable
-              >
-                <el-option
-                  v-for="contractor in contractorOptions"
-                  :key="contractor.contractorId"
-                  :label="contractor.contractorName"
-                  :value="contractor.contractorId"
-                />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="鍚堣绫诲瀷" prop="complianceType">
-              <el-select
-                v-model="form.complianceType"
-                placeholder="璇烽�夋嫨鍚堣绫诲瀷"
-                clearable
-              >
-                <el-option
-                  v-for="type in compliance_types"
-                  :key="type.value"
-                  :label="type.label"
-                  :value="type.value"
-                />
-              </el-select>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="鏈夋晥鏈熷紑濮�" prop="validStartDate">
-              <el-date-picker
-                v-model="form.validStartDate"
-                type="date"
-                placeholder="閫夋嫨寮�濮嬫棩鏈�"
-                value-format="YYYY-MM-DD"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="鏈夋晥鏈熺粨鏉�" prop="validEndDate">
-              <el-date-picker
-                v-model="form.validEndDate"
-                type="date"
-                placeholder="閫夋嫨缁撴潫鏃ユ湡"
-                value-format="YYYY-MM-DD"
-              />
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="鐘舵��">
-              <el-radio-group v-model="form.status">
-                <el-radio
-                  v-for="dict in sys_normal_disable"
-                  :key="dict.value"
-                  :value="dict.value"
-                  >{{ dict.label }}</el-radio
-                >
-              </el-radio-group>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="24">
-            <el-form-item label="澶囨敞">
-              <el-input
-                v-model="form.remark"
-                type="textarea"
-                placeholder="璇疯緭鍏ュ唴瀹�"
-              ></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-      <template #footer>
-        <div class="dialog-footer">
-          <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
-          <el-button @click="cancel">鍙� 娑�</el-button>
-        </div>
-      </template>
-    </el-dialog>
+      </div>
+      <div>
+        <el-button type="primary" @click="openForm('add')">鏂板</el-button>
+        <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
+      </div>
+    </div>
+    <div class="table_list">
+      <PIMTable
+          rowKey="id"
+          :column="tableColumn"
+          :tableData="tableData"
+          :page="page"
+          :isSelection="true"
+          @selection-change="handleSelectionChange"
+          :tableLoading="tableLoading"
+          @pagination="pagination"
+          :total="page.total"
+      ></PIMTable>
+    </div>
+    <form-dia ref="formDia" @close="handleQuery"></form-dia>
   </div>
 </template>
 
-<script setup name="ContractorCompliance">
-import { ref, reactive, toRefs, watch, onMounted } from 'vue';
-import { ElMessage } from 'element-plus';
-import { parseTime } from '@/utils/ruoyi';
-
-const complianceList = ref([]);
-const open = ref(false);
-const loading = ref(true);
-const showSearch = ref(true);
-const ids = ref([]);
-const single = ref(true);
-const multiple = ref(true);
-const total = ref(0);
-const title = ref("");
-
-// 鍒楁樉闅愪俊鎭�
-const columns = ref([
-  { key: 0, label: `鍚堣ID`, visible: true },
-  { key: 1, label: `鍚堣鍚嶇О`, visible: true },
-  { key: 2, label: `鍚堣缂栧彿`, visible: true },
-  { key: 3, label: `鎵�灞炴壙鍖呭晢`, visible: true },
-  { key: 4, label: `鍚堣绫诲瀷`, visible: true },
-  { key: 5, label: `鏈夋晥鏈熷紑濮媊, visible: true },
-  { key: 6, label: `鏈夋晥鏈熺粨鏉焋, visible: true },
-  { key: 7, label: `鐘舵�乣, visible: true },
-  { key: 8, label: `鍒涘缓鏃堕棿`, visible: true },
-]);
+<script setup>
+import { Search } from "@element-plus/icons-vue";
+import {onMounted, ref} from "vue";
+import FormDia from "@/views/contractor/compliance/components/formDia.vue";
+import {staffJoinDel, staffJoinListPage} from "@/api/personnelManagement/onboarding.js";
+import {ElMessageBox} from "element-plus";
+import dayjs from "dayjs";
 
 const data = reactive({
-  form: {
-    complianceId: undefined,
-    complianceName: undefined,
-    complianceCode: undefined,
-    contractorId: undefined,
-    contractorName: undefined,
-    complianceType: undefined,
-    validStartDate: undefined,
-    validEndDate: undefined,
-    status: "0",
-    remark: undefined,
-  },
-  queryParams: {
-    pageNum: 1,
-    pageSize: 10,
-    complianceName: undefined,
-    complianceCode: undefined,
-    contractorId: undefined,
-    status: undefined,
-  },
-  rules: {
-    complianceName: [
-      { required: true, message: "鍚堣鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
-    ],
-    complianceCode: [
-      { required: true, message: "鍚堣缂栧彿涓嶈兘涓虹┖", trigger: "blur" },
-    ],
-    contractorId: [
-      { required: true, message: "鎵�灞炴壙鍖呭晢涓嶈兘涓虹┖", trigger: "blur" },
-    ],
-    complianceType: [
-      { required: true, message: "鍚堣绫诲瀷涓嶈兘涓虹┖", trigger: "blur" },
-    ],
-    validStartDate: [
-      { required: true, message: "鏈夋晥鏈熷紑濮嬩笉鑳戒负绌�", trigger: "blur" },
-    ],
-    validEndDate: [
-      { required: true, message: "鏈夋晥鏈熺粨鏉熶笉鑳戒负绌�", trigger: "blur" },
-    ],
+  searchForm: {
+    staffName: "",
   },
 });
-
-const { queryParams, form, rules } = toRefs(data);
-
-// 妯℃嫙鎵垮寘鍟嗘暟鎹�
-const contractorOptions = ref([
-  { contractorId: 1, contractorName: "鍖椾含寤哄伐闆嗗洟" },
-  { contractorId: 2, contractorName: "涓婃捣鍩庡缓闆嗗洟" },
-  { contractorId: 3, contractorName: "骞垮窞寤虹瓚闆嗗洟" },
-  { contractorId: 4, contractorName: "娣卞湷寤哄伐闆嗗洟" },
-  { contractorId: 5, contractorName: "鏉窞寤哄伐闆嗗洟" },
-]);
-
-// 鍚堣绫诲瀷瀛楀吀
-const compliance_types = ref([
-  { value: "license", label: "璁稿彲璇�" },
-  { value: "certificate", label: "璇佷功" },
-  { value: "regulation", label: "娉曡閬靛惊" },
-  { value: "standard", label: "鏍囧噯鍚堣" },
-  { value: "other", label: "鍏朵粬" },
-]);
-
-// 鍚堣鐘舵�佸瓧鍏�
-const compliance_status = ref([
-  { value: "0", label: "姝e父" },
-  { value: "1", label: "绂佺敤" },
-  { value: "2", label: "鍗冲皢杩囨湡" },
-  { value: "3", label: "宸茶繃鏈�" },
-]);
-
-// 姝e父绂佺敤瀛楀吀
-const sys_normal_disable = ref([
-  { value: "0", label: "姝e父" },
-  { value: "1", label: "绂佺敤" },
-]);
-
-// 妯℃嫙鍚堣鏁版嵁
-const mockCompliances = ref([
+const { searchForm } = toRefs(data);
+const tableColumn = ref([
   {
-    complianceId: 1,
-    complianceName: "寤虹瓚鏂藉伐璁稿彲璇�",
-    complianceCode: "COMP001",
-    contractorId: 1,
-    contractorName: "鍖椾含寤哄伐闆嗗洟",
-    complianceType: "license",
-    validStartDate: "2024-01-01",
-    validEndDate: "2025-12-31",
-    status: "0",
-    createTime: "2024-01-01 10:00:00",
-    remark: "寤虹瓚鏂藉伐璁稿彲璇�",
+    label: "鍚堣鍚嶇О",
+    prop: "staffName",
   },
   {
-    complianceId: 2,
-    complianceName: "瀹夊叏鐢熶骇璁稿彲璇�",
-    complianceCode: "COMP002",
-    contractorId: 2,
-    contractorName: "涓婃捣鍩庡缓闆嗗洟",
-    complianceType: "license",
-    validStartDate: "2024-01-02",
-    validEndDate: "2025-12-31",
-    status: "0",
-    createTime: "2024-01-02 10:00:00",
-    remark: "瀹夊叏鐢熶骇璁稿彲璇�",
+    label: "鍚堣缂栧彿",
+    prop: "staffNo",
   },
   {
-    complianceId: 3,
-    complianceName: "璐ㄩ噺绠$悊浣撶郴璁よ瘉",
-    complianceCode: "COMP003",
-    contractorId: 3,
-    contractorName: "骞垮窞寤虹瓚闆嗗洟",
-    complianceType: "certificate",
-    validStartDate: "2024-01-03",
-    validEndDate: "2025-12-31",
-    status: "1",
-    createTime: "2024-01-03 10:00:00",
-    remark: "ISO9001璐ㄩ噺绠$悊浣撶郴璁よ瘉",
+    label: "鎵�灞炴壙鍖呭晢",
+    prop: "nativePlace",
   },
   {
-    complianceId: 4,
-    complianceName: "鐜绠$悊浣撶郴璁よ瘉",
-    complianceCode: "COMP004",
-    contractorId: 4,
-    contractorName: "娣卞湷寤哄伐闆嗗洟",
-    complianceType: "certificate",
-    validStartDate: "2024-01-04",
-    validEndDate: "2025-12-31",
-    status: "0",
-    createTime: "2024-01-04 10:00:00",
-    remark: "ISO14001鐜绠$悊浣撶郴璁よ瘉",
+    label: "鍚堣绫诲瀷",
+    prop: "postJob",
   },
   {
-    complianceId: 5,
-    complianceName: "鑱屼笟鍋ュ悍瀹夊叏绠$悊浣撶郴璁よ瘉",
-    complianceCode: "COMP005",
-    contractorId: 5,
-    contractorName: "鏉窞寤哄伐闆嗗洟",
-    complianceType: "certificate",
-    validStartDate: "2024-01-05",
-    validEndDate: "2025-12-31",
-    status: "0",
-    createTime: "2024-01-05 10:00:00",
-    remark: "ISO45001鑱屼笟鍋ュ悍瀹夊叏绠$悊浣撶郴璁よ瘉",
+    label: "鍚堝悓寮�濮嬫棩鏈�",
+    prop: "contractStartTime",
+    width: 120
+  },
+  {
+    label: "鍚堝悓缁撴潫鏃ユ湡",
+    prop: "contractEndTime",
+    width: 120
+  },
+  {
+    label: "澶囨敞",
+    prop: "postJob",
+  },
+  {
+    dataType: "action",
+    label: "鎿嶄綔",
+    align: "center",
+    fixed: 'right',
+    operation: [
+      {
+        name: "缂栬緫",
+        type: "text",
+        clickFun: (row) => {
+          openForm("edit", row);
+        },
+      },
+    ],
   },
 ]);
+const tableData = ref([]);
+const selectedRows = ref([]);
+const tableLoading = ref(false);
+const page = reactive({
+  current: 1,
+  size: 100,
+  total: 0,
+});
+const formDia = ref()
+const { proxy } = getCurrentInstance()
 
-/** 鑾峰彇鍚堣绫诲瀷鏍囩 */
-function getComplianceTypeLabel(value) {
-  const type = compliance_types.value.find(item => item.value === value);
-  return type ? type.label : value;
-}
-
-/** 鏌ヨ鍚堣鍒楄〃 */
-function getList() {
-  loading.value = true;
-  // 妯℃嫙API璇锋眰寤惰繜
-  setTimeout(() => {
-    let data = [...mockCompliances.value];
-    // 妯℃嫙鎼滅储杩囨护
-    if (queryParams.value.complianceName) {
-      data = data.filter(item => item.complianceName.includes(queryParams.value.complianceName));
+const handleDateChange = (value,type) => {
+  searchForm.value.entryDateEnd = null
+  searchForm.value.entryDateStart = null
+  if(type === 1){
+    if (value) {
+      searchForm.value.entryDateStart = dayjs(value).format("YYYY-MM-DD");
     }
-    if (queryParams.value.complianceCode) {
-      data = data.filter(item => item.complianceCode.includes(queryParams.value.complianceCode));
+  }else{
+    if (value) {
+      searchForm.value.entryDateEnd = dayjs(value).format("YYYY-MM-DD");
     }
-    if (queryParams.value.contractorId) {
-      data = data.filter(item => item.contractorId === queryParams.value.contractorId);
-    }
-    if (queryParams.value.status) {
-      data = data.filter(item => item.status === queryParams.value.status);
-    }
-    // 妯℃嫙鍒嗛〉
-    const start = (queryParams.value.pageNum - 1) * queryParams.value.pageSize;
-    const end = start + queryParams.value.pageSize;
-    complianceList.value = data.slice(start, end);
-    total.value = data.length;
-    loading.value = false;
-  }, 500);
-}
-
-/** 鎼滅储鎸夐挳鎿嶄綔 */
-function handleQuery() {
-  queryParams.value.pageNum = 1;
-  getList();
-}
-
-/** 閲嶇疆鎸夐挳鎿嶄綔 */
-function resetQuery() {
-  Object.assign(queryParams.value, {
-    complianceName: undefined,
-    complianceCode: undefined,
-    contractorId: undefined,
-    status: undefined,
-  });
-  handleQuery();
-}
-
-/** 鍒犻櫎鎸夐挳鎿嶄綔 */
-function handleDelete(row) {
-  const complianceIds = row.complianceId || ids.value;
-  ElMessage.confirm(`鏄惁纭鍒犻櫎鍚堣缂栧彿涓�"${complianceIds}"鐨勬暟鎹」锛焋).then(() => {
-    // 妯℃嫙鍒犻櫎鎿嶄綔
-    ElMessage.success("鍒犻櫎鎴愬姛");
-    getList();
-  }).catch(() => {});
-}
-
-/** 鐘舵�佷慨鏀� */
-function handleStatusChange(row) {
-  let text = row.status === "0" ? "鍚敤" : "鍋滅敤";
-  ElMessage.confirm(`纭瑕�"${text}""${row.complianceName}"鍚堣璁板綍鍚�?`).then(() => {
-    // 妯℃嫙鐘舵�佷慨鏀�
-    ElMessage.success(text + "鎴愬姛");
-    getList();
-  }).catch(() => {
-    row.status = row.status === "0" ? "1" : "0";
-  });
-}
-
-/** 閫夋嫨鏉℃暟  */
-function handleSelectionChange(selection) {
-  ids.value = selection.map((item) => item.complianceId);
-  single.value = selection.length != 1;
-  multiple.value = !selection.length;
-}
-
-/** 閲嶇疆鎿嶄綔琛ㄥ崟 */
-function reset() {
-  form.value = {
-    complianceId: undefined,
-    complianceName: undefined,
-    complianceCode: undefined,
-    contractorId: undefined,
-    contractorName: undefined,
-    complianceType: undefined,
-    validStartDate: undefined,
-    validEndDate: undefined,
-    status: "0",
-    remark: undefined,
-  };
-}
-
-/** 鍙栨秷鎸夐挳 */
-function cancel() {
-  open.value = false;
-  reset();
-}
-
-/** 鏂板鎸夐挳鎿嶄綔 */
-function handleAdd() {
-  reset();
-  open.value = true;
-  title.value = "娣诲姞鍚堣璁板綍";
-}
-
-/** 淇敼鎸夐挳鎿嶄綔 */
-function handleUpdate(row) {
-  reset();
-  const complianceId = row.complianceId || ids.value;
-  // 妯℃嫙鑾峰彇璇︽儏
-  const compliance = mockCompliances.find(item => item.complianceId === complianceId);
-  if (compliance) {
-    form.value = { ...compliance };
-    open.value = true;
-    title.value = "淇敼鍚堣璁板綍";
   }
-}
+  getList();
+};
+// 鏌ヨ鍒楄〃
+/** 鎼滅储鎸夐挳鎿嶄綔 */
+const handleQuery = () => {
+  page.current = 1;
+  getList();
+};
+const pagination = (obj) => {
+  page.current = obj.page;
+  page.size = obj.limit;
+  getList();
+};
+const getList = () => {
+  tableLoading.value = true;
+  staffJoinListPage({...page, ...searchForm.value, staffState: 1}).then(res => {
+    tableLoading.value = false;
+    tableData.value = res.data.records
+    page.total = res.data.total;
 
-/** 鎻愪氦鎸夐挳 */
-function submitForm() {
-  // 妯℃嫙琛ㄥ崟楠岃瘉
-  const requiredFields = ['complianceName', 'complianceCode', 'contractorId', 'complianceType', 'validStartDate', 'validEndDate'];
-  const isInvalid = requiredFields.some(field => !form.value[field]);
+    // 妫�鏌ユ槸鍚︽湁涓磋繎杞鐨勫憳宸ュ苟鎻愰啋
+    checkProbationEnding(tableData.value);
+  }).catch(err => {
+    tableLoading.value = false;
+  })
+};
+// 妫�鏌ヤ复杩戣浆姝g殑鍛樺伐骞舵彁閱�
+const checkProbationEnding = (data) => {
+  const probationEndingSoon = [];
 
-  if (isInvalid) {
-    ElMessage.error("璇峰~鍐欏繀濉瓧娈�");
+  data.forEach(item => {
+    // 淇敼涓轰娇鐢ㄥ悎鍚屽紑濮嬫棩鏈熸鏌�
+    if (item.contractStartTime && item.probationPeriod) {
+      const probationEndDate = dayjs(item.contractStartTime).add(item.probationPeriod, 'month');
+      const daysUntilProbationEnd = probationEndDate.diff(dayjs(), 'day');
+
+      if (daysUntilProbationEnd >= 0 && daysUntilProbationEnd <= 7) {
+        probationEndingSoon.push({
+          staffName: item.staffName,
+          probationEndDate: probationEndDate.format('YYYY-MM-DD'),
+          daysLeft: daysUntilProbationEnd
+        });
+      }
+    }
+  });
+
+  if (probationEndingSoon.length > 0) {
+    let message = '浠ヤ笅鍛樺伐灏嗗湪7澶╁唴杞锛歕n';
+    probationEndingSoon.forEach(item => {
+      message += `${item.staffName}锛�${item.probationEndDate}锛岃繕鏈�${item.daysLeft}澶╋級\n`;
+    });
+
+    // 鏄剧ず鎻愰啋娑堟伅
+    proxy.$modal.msgInfo(message);
+  }
+};
+// 琛ㄦ牸閫夋嫨鏁版嵁
+const handleSelectionChange = (selection) => {
+  selectedRows.value = selection;
+};
+
+// 鎵撳紑寮规
+const openForm = (type, row) => {
+  nextTick(() => {
+    formDia.value?.openDialog(type, row)
+  })
+};
+
+// 鍒犻櫎
+const handleDelete = () => {
+  let ids = [];
+  if (selectedRows.value.length > 0) {
+    ids = selectedRows.value.map((item) => item.id);
+  } else {
+    proxy.$modal.msgWarning("璇烽�夋嫨鏁版嵁");
     return;
   }
-
-  // 妯℃嫙鎻愪氦鎿嶄綔
-  ElMessage.success(title.value === "娣诲姞鍚堣璁板綍" ? "鏂板鎴愬姛" : "淇敼鎴愬姛");
-  open.value = false;
-  getList();
-}
-
+  ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�", "瀵煎嚭", {
+    confirmButtonText: "纭",
+    cancelButtonText: "鍙栨秷",
+    type: "warning",
+  })
+      .then(() => {
+        staffJoinDel(ids).then((res) => {
+          proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+          getList();
+        });
+      })
+      .catch(() => {
+        proxy.$modal.msg("宸插彇娑�");
+      });
+};
+// 瀵煎嚭
+const handleOut = () => {
+  ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
+    confirmButtonText: "纭",
+    cancelButtonText: "鍙栨秷",
+    type: "warning",
+  })
+      .then(() => {
+        proxy.download("/staff/staffJoinLeaveRecord/export", {staffState: 1}, "浜哄憳鍏ヨ亴.xlsx");
+      })
+      .catch(() => {
+        proxy.$modal.msg("宸插彇娑�");
+      });
+};
 onMounted(() => {
   getList();
 });
 </script>
+
+<style scoped></style>

--
Gitblit v1.9.3