From ee0dd1393e5e1417b1c81cc6228a59ad108b108a Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 24 十一月 2025 11:24:01 +0800
Subject: [PATCH] 1.金鹰黄金-新增入职添加导入功能
---
src/views/personnelManagement/onboarding/components/formDia.vue | 8 ++--
src/views/personnelManagement/onboarding/index.vue | 93 +++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 95 insertions(+), 6 deletions(-)
diff --git a/src/views/personnelManagement/onboarding/components/formDia.vue b/src/views/personnelManagement/onboarding/components/formDia.vue
index b49e668..ce89cea 100644
--- a/src/views/personnelManagement/onboarding/components/formDia.vue
+++ b/src/views/personnelManagement/onboarding/components/formDia.vue
@@ -36,8 +36,8 @@
</el-row>
<el-row :gutter="30">
<el-col :span="12">
- <el-form-item label="宀椾綅锛�" prop="postJob">
- <el-select v-model="form.postJob" filterable placeholder="璇烽�夋嫨宀椾綅" :loading="positionLoading" clearable>
+ <el-form-item label="宀椾綅锛�" prop="deptPositionId">
+ <el-select v-model="form.deptPositionId" filterable placeholder="璇烽�夋嫨宀椾綅" :loading="positionLoading" clearable>
<el-option v-for="p in positionOptions" :key="p.id" :label="p.name || p.label" :value="p.id" />
</el-select>
</el-form-item>
@@ -151,7 +151,7 @@
staffName: "",
sex: "",
nativePlace: "",
- postJob: "",
+ deptPositionId: "",
adress: "",
firstStudy: "",
profession: "",
@@ -169,7 +169,7 @@
staffName: [{required: true, message: "璇疯緭鍏�", trigger: "blur"}],
sex: [{required: true, message: "璇疯緭鍏�", trigger: "blur"}],
nativePlace: [{required: true, message: "璇疯緭鍏�", trigger: "blur"}],
- postJob: [{required: true, message: "璇疯緭鍏�", trigger: "blur"}],
+ deptPositionId: [{required: true, message: "璇疯緭鍏�", trigger: "blur"}],
adress: [{required: true, message: "璇疯緭鍏�", trigger: "blur"}],
firstStudy: [{required: true, message: "璇疯緭鍏�", trigger: "blur"}],
profession: [{required: true, message: "璇疯緭鍏�", trigger: "blur"}],
diff --git a/src/views/personnelManagement/onboarding/index.vue b/src/views/personnelManagement/onboarding/index.vue
index 9151a6c..ad9dd5c 100644
--- a/src/views/personnelManagement/onboarding/index.vue
+++ b/src/views/personnelManagement/onboarding/index.vue
@@ -33,6 +33,7 @@
</div>
<div>
<el-button type="primary" @click="openForm('add')">鏂板鍏ヨ亴</el-button>
+ <el-button type="info" @click="handleImport">瀵煎叆</el-button>
<el-button @click="handleOut">瀵煎嚭</el-button>
<el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
</div>
@@ -51,17 +52,60 @@
></PIMTable>
</div>
<form-dia ref="formDia" @close="handleQuery"></form-dia>
+
+ <!-- 浜哄憳鍏ヨ亴瀵煎叆瀵硅瘽妗� -->
+ <el-dialog
+ :title="upload.title"
+ v-model="upload.open"
+ width="400px"
+ append-to-body
+ >
+ <el-upload
+ ref="uploadRef"
+ :limit="1"
+ accept=".xlsx, .xls"
+ :headers="upload.headers"
+ :action="upload.url + '?updateSupport=' + upload.updateSupport"
+ :disabled="upload.isUploading"
+ :on-progress="handleFileUploadProgress"
+ :on-success="handleFileSuccess"
+ :auto-upload="false"
+ 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="upload.open = false">鍙� 娑�</el-button>
+ </div>
+ </template>
+ </el-dialog>
</div>
</template>
<script setup>
-import { Search } from "@element-plus/icons-vue";
+import { Search, UploadFilled } from "@element-plus/icons-vue";
import {onMounted, ref} from "vue";
import FormDia from "@/views/personnelManagement/onboarding/components/formDia.vue";
// import FormDia from "@/views/personnelManagement/onboarding/components/formDiaXJHT.vue"; // 鏂扮枂椋熷搧鍏徃鐢ㄧ殑琛ㄥ崟
import {staffJoinDel, staffJoinListPage} from "@/api/personnelManagement/onboarding.js";
import {ElMessageBox} from "element-plus";
import dayjs from "dayjs";
+import { getToken } from "@/utils/auth.js";
const data = reactive({
searchForm: {
@@ -111,7 +155,7 @@
},
{
label: "宀椾綅",
- prop: "postJob",
+ prop: "deptPositionName",
},
{
label: "鐜颁綇鍧�",
@@ -186,6 +230,21 @@
});
const formDia = ref()
const { proxy } = getCurrentInstance()
+
+const upload = reactive({
+ // 鏄惁鏄剧ず寮瑰嚭灞傦紙浜哄憳鍏ヨ亴瀵煎叆锛�
+ open: false,
+ // 寮瑰嚭灞傛爣棰橈紙浜哄憳鍏ヨ亴瀵煎叆锛�
+ title: "",
+ // 鏄惁绂佺敤涓婁紶
+ isUploading: false,
+ // 鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹�
+ updateSupport: 1,
+ // 璁剧疆涓婁紶鐨勮姹傚ご閮�
+ headers: { Authorization: "Bearer " + getToken() },
+ // 涓婁紶鐨勫湴鍧�
+ url: import.meta.env.VITE_APP_BASE_API + "/staff/staffJoinLeaveRecord/import",
+});
const handleDateChange = (value,type) => {
searchForm.value.entryDateEnd = null
@@ -272,6 +331,36 @@
proxy.$modal.msg("宸插彇娑�");
});
};
+
+/** 瀵煎叆鎸夐挳鎿嶄綔 */
+function handleImport() {
+ upload.title = "浜哄憳鍏ヨ亴瀵煎叆";
+ upload.open = true;
+}
+
+/** 涓嬭浇妯℃澘鎿嶄綔 */
+function importTemplate() {
+ proxy.download("/staff/staffJoinLeaveRecord/importTemplate", {}, "浜哄憳鍏ヨ亴妯℃澘.xlsx");
+}
+
+/** 鎻愪氦涓婁紶鏂囦欢 */
+function submitFileForm() {
+ proxy.$refs["uploadRef"].submit();
+}
+
+/**鏂囦欢涓婁紶涓鐞� */
+const handleFileUploadProgress = (event, file, fileList) => {
+ upload.isUploading = true;
+};
+
+/** 鏂囦欢涓婁紶鎴愬姛澶勭悊 */
+const handleFileSuccess = (response, file, fileList) => {
+ upload.open = false;
+ upload.isUploading = false;
+ proxy.$refs["uploadRef"].handleRemove(file);
+ getList();
+};
+
onMounted(() => {
getList();
});
--
Gitblit v1.9.3