From ac0c15457c9b9a7a0199ef0b1b0d4b5f7e420124 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 28 二月 2025 11:53:21 +0800
Subject: [PATCH] 人员-岗位职责搬迁
---
src/views/CNAS/personnel/personnelInfo/index.vue | 10 +-
src/api/cnas/personal/personJobResponsibilities.js | 35 +++++++++++
src/views/CNAS/personnel/personnelInfo/tabs/job-responsibilities.vue | 107 ++++++++++++++++++-----------------
3 files changed, 94 insertions(+), 58 deletions(-)
diff --git a/src/api/cnas/personal/personJobResponsibilities.js b/src/api/cnas/personal/personJobResponsibilities.js
new file mode 100644
index 0000000..0c2673b
--- /dev/null
+++ b/src/api/cnas/personal/personJobResponsibilities.js
@@ -0,0 +1,35 @@
+import request from "@/utils/request";
+
+// 鍒嗛〉鏌ヨ宀椾綅鑱岃矗
+export function personJobResponsibilitiesSelect(query) {
+ return request({
+ url: "/personJobResponsibilities/personJobResponsibilitiesSelect",
+ method: "get",
+ params: query
+ });
+}
+// 鏂板宀椾綅鑱岃矗
+export function personJobResponsibilitiesSave(query) {
+ return request({
+ url: "/personJobResponsibilities/personJobResponsibilitiesSave",
+ method: "post",
+ data: query
+ });
+}
+// 瀵煎嚭宀椾綅鑱岃矗
+export function exportPersonJobResponsibilities(query) {
+ return request({
+ url: "/personJobResponsibilities/exportPersonJobResponsibilities",
+ method: "post",
+ params: query,
+ responseType: "blob"
+ });
+}
+// 鍒犻櫎宀椾綅鑱岃矗
+export function personJobResponsibilitiesDelete(query) {
+ return request({
+ url: "/personJobResponsibilities/personJobResponsibilitiesDelete",
+ method: "delete ",
+ params: query
+ });
+}
diff --git a/src/views/CNAS/personnel/personnelInfo/index.vue b/src/views/CNAS/personnel/personnelInfo/index.vue
index 2bae370..216f325 100644
--- a/src/views/CNAS/personnel/personnelInfo/index.vue
+++ b/src/views/CNAS/personnel/personnelInfo/index.vue
@@ -61,11 +61,11 @@
<PersonnelTraining v-if="activeName === '鍩硅璁″垝'" ref="personnelTraining"
:departId="departId" :isDepartment="isDepartment"></PersonnelTraining>
</el-tab-pane>
-<!-- <el-tab-pane label="宀椾綅鑱岃矗" name="宀椾綅鑱岃矗">-->
-<!-- <job-responsibilities v-if="activeName === '宀椾綅鑱岃矗'" ref="jobResponsibilities"-->
-<!-- :departId="departId"-->
-<!-- :isDepartment="isDepartment"></job-responsibilities>-->
-<!-- </el-tab-pane>-->
+ <el-tab-pane label="宀椾綅鑱岃矗" name="宀椾綅鑱岃矗">
+ <job-responsibilities v-if="activeName === '宀椾綅鑱岃矗'" ref="jobResponsibilities"
+ :departId="departId"
+ :isDepartment="isDepartment"></job-responsibilities>
+ </el-tab-pane>
<!-- <el-tab-pane label="濂栨儵璁板綍" name="濂栨儵璁板綍">-->
<!-- <rewardPunishmentRecord v-if="activeName === '濂栨儵璁板綍'"-->
<!-- :departId="departId" :isDepartment="isDepartment"></rewardPunishmentRecord>-->
diff --git a/src/views/CNAS/personnel/personnelInfo/tabs/job-responsibilities.vue b/src/views/CNAS/personnel/personnelInfo/tabs/job-responsibilities.vue
index 2f7d422..227b749 100644
--- a/src/views/CNAS/personnel/personnelInfo/tabs/job-responsibilities.vue
+++ b/src/views/CNAS/personnel/personnelInfo/tabs/job-responsibilities.vue
@@ -1,17 +1,22 @@
<!-- 宀椾綅鑱岃矗 -->
<template>
<div class="view">
- <div style="text-align: left; margin-bottom: 15px;padding: 0 10px">
- <label>鍛樺伐锛�</label>
- <el-input v-model="userName" clearable placeholder="璇疯緭鍏ュ憳宸�" size="small" style="width: 20vh;"></el-input>
- <el-button size="small" type="primary" @click="refreshTable">鏌ヨ</el-button>
- <div v-if="isDepartment" style="float: right;">
+ <div style="display: flex;justify-content: space-between;">
+ <el-form ref="page" size="small" :inline="true">
+ <el-form-item label="鍛樺伐">
+ <el-input v-model="userName" clearable placeholder="璇疯緭鍏ュ憳宸�" size="small" style="width: 20vh;"></el-input>
+ </el-form-item>
+ <el-form-item>
+ <el-button size="small" type="primary" @click="refreshTable">鏌ヨ</el-button>
+ </el-form-item>
+ </el-form>
+ <div>
<el-button size="small" type="primary" @click="addPost">鏂板</el-button>
<!-- <el-button size="small" type="primary">瀵煎嚭excel</el-button>-->
</div>
</div>
- <div class="table" style="padding: 0 10px">
- <el-table :data="tableData" height="70vh" style="width: 100%">
+ <div class="table">
+ <el-table :data="tableData" v-loading="tableLoading" height="66.5vh" style="width: 100%">
<el-table-column label="搴忓彿" type="index" width="60"></el-table-column>
<el-table-column label="鍛樺伐缂栧彿" min-width="120" prop="account"></el-table-column>
<el-table-column label="宀椾綅鍚嶇О" min-width="180" prop="postName"></el-table-column>
@@ -22,7 +27,7 @@
<el-table-column label="浠昏亴浜哄鏍告棩鏈�" min-width="180" prop="incumbentDate"></el-table-column>
<el-table-column label="涓荤" min-width="180" prop="supervisorName"></el-table-column>
<el-table-column label="涓荤瀹℃牳鏃ユ湡" min-width="180" prop="supervisorDate"></el-table-column>
- <el-table-column fixed="right" label="鎿嶄綔" width="140">
+ <el-table-column fixed="right" label="鎿嶄綔" width="140" align="center">
<template v-slot="scope">
<el-button v-if="!isDepartment || scope.row.currentState === '鍏抽棴'" size="small" type="text"
@click="handleViewClick(scope.row, 'view')">鏌ョ湅
@@ -31,12 +36,13 @@
@click="handleViewClick(scope.row, 'edit')">缂栬緫
</el-button>
<el-button size="small" type="text" @click="downLoadPost(scope.row)">瀵煎嚭</el-button>
- <el-button v-if="isDepartment" size="small" type="text" @click="deletePost(scope.row)">鍒犻櫎</el-button>
+ <el-button v-if="isDepartment" size="small" style="color: #f56c6c" type="text" @click="deletePost(scope.row)">鍒犻櫎</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]"
:total="search.total" layout="->,total, sizes, prev, pager, next, jumper"
+ background
@size-change="handleSizeChange"
@current-change="handleCurrentChange">
</el-pagination>
@@ -123,13 +129,21 @@
</template>
<script>
-// import { dateFormat } from '../../../util/date';
+import { dateFormat } from '@/utils/date'
+import {
+ exportPersonJobResponsibilities, personJobResponsibilitiesDelete,
+ personJobResponsibilitiesSave,
+ personJobResponsibilitiesSelect
+} from "@/api/cnas/personal/personJobResponsibilities";
+import {selectUserCondition} from "@/api/cnas/resourceDemand/facilitiesEnvironment/facilitiesAndEnvironment";
+import {mapGetters} from "vuex";
export default {
data() {
return {
userName: '',
tableData: [],
+ tableLoading: false,
responsibleOptions: [],
search: {
size: 20,
@@ -192,19 +206,32 @@
// 鏌ヨ鍒楄〃淇℃伅
getPostList(userId) {
this.search.userId = userId;
- const name = this.isDepartment ? 'departmentId' : 'userId';
- this.$axios.get(this.$api.personnel.personJobResponsibilitiesSelect + '?userName=' + this.userName + `&${name}=` + this.search.userId + '&size=' + this.search.size + '¤t=' + this.search.current).then(res => {
- if (res.code === 201) return;
+ const params = this.isDepartment ? {
+ userName: this.userName,
+ departmentId: this.search.userId,
+ size: this.search.size,
+ current: this.search.current,
+ }: {
+ userName: this.userName,
+ userId: this.search.userId,
+ size: this.search.size,
+ current: this.search.current,
+ }
+ this.tableLoading = true
+ personJobResponsibilitiesSelect(params).then(res => {
+ this.tableLoading = false
this.tableData = res.data.records;
this.search.total = res.data.total;
- });
+ }).catch(err => {
+ this.tableLoading = false
+ })
},
//鎻愪氦琛ㄥ崟
async submitForm(saveState) {
this.$refs.form.validate((valid) => {
if (valid === true || saveState !== '1submit') {
// 缁欏綋鍓嶇幆鑺傝缃垱寤轰汉涓庢椂闂�
- let user = JSON.parse(localStorage.getItem('user'));
+ let user = this.nickName;
const dateTime = dateFormat(new Date());
// 鑾峰彇褰撳墠鐜妭鎿嶄綔浜轰笌鏃ユ湡
switch (this.currentStep) {
@@ -254,12 +281,7 @@
}
// 鑾峰彇褰撳墠鐘舵��
this.form.currentState = currentStepAction === 3 ? '鍏抽棴' : this.steps[currentStepAction];
- this.$axios.post(this.$api.personnel.personJobResponsibilitiesSave, this.form, {
- headers: {
- 'Content-Type': 'application/json'
- },
- noQs: true
- }).then(res => {
+ personJobResponsibilitiesSave(this.form).then(res => {
if (res.code == 200) {
this.$message.success('鎻愪氦鎴愬姛');
this.getPostList(this.departId);
@@ -307,34 +329,10 @@
},
// 涓嬭浇宀椾綅鑱岃矗
downLoadPost(row) {
- this.$axios.post(this.$api.personPostAuthorizationRecord.exportPersonJobResponsibilities,{id:row.id},{responseType: "blob"}).then(res => {
+ exportPersonJobResponsibilities({id:row.id}).then(res => {
const blob = new Blob([res],{ type: 'application/octet-stream' });
- //灏咮lob 瀵硅薄杞崲鎴愬瓧绗︿覆
- let reader = new FileReader();
- reader.readAsText(blob, 'utf-8');
- reader.onload = () => {
- try {
- let result = JSON.parse(reader.result);
- if (result.message) {
- this.$message.error(result.message);
- } else {
- const url = URL.createObjectURL(blob);
- const link = document.createElement('a');
- link.href = url;
- link.download = row.incumbentName+'-宀椾綅鑱岃矗'+'.docx';
- link.click();
- this.$message.success('瀵煎嚭鎴愬姛')
- }
- } catch (err) {
- console.log(err);
- const url = URL.createObjectURL(blob);
- const link = document.createElement('a');
- link.href = url;
- link.download = row.incumbentName+'-宀椾綅鑱岃矗'+'.docx';
- link.click();
- this.$message.success('瀵煎嚭鎴愬姛')
- }
- }
+ this.$download.saveAs(blob, row.incumbentName+'-宀椾綅鑱岃矗'+'.docx');
+ this.$message.success('瀵煎嚭鎴愬姛')
})
},
// 鍒犻櫎宀椾綅鑱岃矗
@@ -344,7 +342,7 @@
cancelButtonText: '鍙栨秷',
type: 'warning'
}).then(() => {
- this.$axios.delete(this.$api.personnel.personJobResponsibilitiesDelete + '?id=' + row.id).then(res => {
+ personJobResponsibilitiesDelete({id: row.id}).then(res => {
if (res.code == 200) {
this.$message.success('鍒犻櫎鎴愬姛');
this.getPostList(this.departId);
@@ -362,11 +360,11 @@
},
// 鑾峰彇璐熻矗浜轰俊鎭帴鍙�
getUserList() {
- this.$axios.get(this.$api.deviceScope.selectUserList).then(res => {
+ selectUserCondition().then(res => {
if (res.code == 200) {
- this.responsibleOptions = res.data;
+ this.responsibleOptions = res.data
}
- });
+ })
},
choiceStep(index) {
this.currentStepClick = index;
@@ -386,7 +384,10 @@
this.getPostList(newId);
}
}
- }
+ },
+ computed: {
+ ...mapGetters(['nickName'])
+ },
};
</script>
<style scoped>
--
Gitblit v1.9.3