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