From e40e1cf5d4aa99412ca3a87771b5d5a8ea5a105d Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 29 四月 2026 15:39:53 +0800
Subject: [PATCH] 天津军泰伟业 1.员工台账添加导入功能
---
src/views/personnelManagement/employeeRecord/index.vue | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 102 insertions(+), 0 deletions(-)
diff --git a/src/views/personnelManagement/employeeRecord/index.vue b/src/views/personnelManagement/employeeRecord/index.vue
index 19addfa..af1f58d 100644
--- a/src/views/personnelManagement/employeeRecord/index.vue
+++ b/src/views/personnelManagement/employeeRecord/index.vue
@@ -21,6 +21,7 @@
<div>
<el-button type="primary" @click="openFormNewOrEditFormDia('add')">鏂板鍏ヨ亴</el-button>
<el-button @click="handleOut">瀵煎嚭</el-button>
+ <el-button type="info" plain icon="Upload" @click="handleImport">瀵煎叆</el-button>
<el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
</div>
</div>
@@ -45,6 +46,50 @@
:id="id"
@completed="handleQuery"
/>
+ <el-dialog
+ :title="upload.title"
+ v-model="upload.open"
+ width="400px"
+ append-to-body
+ @close="handleImportDialogClose"
+ >
+ <el-upload
+ ref="uploadRef"
+ :limit="1"
+ accept=".xlsx,.xls"
+ :headers="upload.headers"
+ :action="upload.url"
+ :disabled="upload.isUploading"
+ :before-upload="upload.beforeUpload"
+ :on-progress="upload.onProgress"
+ :on-success="upload.onSuccess"
+ :on-error="upload.onError"
+ :on-change="upload.onChange"
+ :auto-upload="false"
+ name="file"
+ drag
+ >
+ <el-icon class="el-icon--upload"><upload-filled /></el-icon>
+ <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
+ <template #tip>
+ <div class="el-upload__tip text-center">
+ <span>浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢銆�</span>
+ <el-link
+ type="primary"
+ :underline="false"
+ style="font-size: 12px; vertical-align: baseline"
+ @click="importTemplate"
+ >涓嬭浇妯℃澘</el-link>
+ </div>
+ </template>
+ </el-upload>
+ <template #footer>
+ <div class="dialog-footer">
+ <el-button type="primary" @click="submitFileForm">纭� 瀹�</el-button>
+ <el-button @click="handleImportDialogClose">鍙� 娑�</el-button>
+ </div>
+ </template>
+ </el-dialog>
</div>
</template>
@@ -53,6 +98,7 @@
import {onMounted, ref} from "vue";
import {ElMessageBox} from "element-plus";
import {batchDeleteStaffOnJobs, staffOnJobListPage} from "@/api/personnelManagement/staffOnJob.js";
+import { getToken } from "@/utils/auth";
import dayjs from "dayjs";
const NewOrEditFormDia = defineAsyncComponent(() => import("@/views/personnelManagement/employeeRecord/components/NewOrEditFormDia.vue"));
const ShowFormDia = defineAsyncComponent(() => import( "@/views/personnelManagement/employeeRecord/components/Show.vue"));
@@ -205,9 +251,43 @@
size: 100,
total: 0
});
+const uploadRef = ref()
const formDia = ref()
const formDiaNewOrEditFormDia = ref()
const { proxy } = getCurrentInstance()
+const upload = reactive({
+ open: false,
+ title: "",
+ isUploading: false,
+ headers: { Authorization: "Bearer " + getToken() },
+ url: import.meta.env.VITE_APP_BASE_API + "/staff/staffOnJob/import",
+ beforeUpload: (file) => {
+ const isValid = file.type === "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" || file.name.endsWith(".xlsx") || file.name.endsWith(".xls");
+ if (!isValid) {
+ proxy.$modal.msgError("鍙兘涓婁紶 Excel 鏂囦欢");
+ }
+ return isValid;
+ },
+ onChange: () => {},
+ onSuccess: (response) => {
+ upload.isUploading = false;
+ if (response.code === 200) {
+ proxy.$modal.msgSuccess(response.msg || "瀵煎叆鎴愬姛");
+ upload.open = false;
+ uploadRef.value?.clearFiles();
+ getList();
+ return;
+ }
+ proxy.$modal.msgError(response.msg || "瀵煎叆澶辫触");
+ },
+ onError: () => {
+ upload.isUploading = false;
+ proxy.$modal.msgError("瀵煎叆澶辫触");
+ },
+ onProgress: () => {
+ upload.isUploading = true;
+ }
+})
const changeDaterange = (value) => {
searchForm.value.entryDateStart = undefined;
@@ -247,6 +327,28 @@
};
// 鎵撳紑寮规
+const submitFileForm = () => {
+ if (uploadRef.value) {
+ upload.isUploading = true;
+ uploadRef.value.submit();
+ }
+};
+
+const handleImport = () => {
+ upload.title = "鍦ㄨ亴鍛樺伐瀵煎叆";
+ upload.open = true;
+};
+
+const importTemplate = () => {
+ proxy.download("/staff/staffOnJob/downloadTemplate", {}, "鍦ㄨ亴鍛樺伐瀵煎叆妯℃澘.xlsx");
+};
+
+const handleImportDialogClose = () => {
+ upload.open = false;
+ upload.isUploading = false;
+ uploadRef.value?.clearFiles();
+};
+
const openForm = (type, row) => {
nextTick(() => {
formDia.value?.openDialog(type, row)
--
Gitblit v1.9.3