员工岗位修改

This commit is contained in:
2309368887@qq.com 2022-07-18 09:59:46 +08:00
parent 4e3da40fdb
commit b3c432c35d
4 changed files with 254 additions and 203 deletions

View File

@ -262,15 +262,6 @@ export default {
return await http.post(this.url,data); return await http.post(this.url,data);
} }
}, },
/*update: {
name: "更新岗位",
req: async function(id, data){
return await http.put(
`${config.API_URL}/system/post_role/${id}/`,
data
);
}
},*/
delete: { delete: {
name: "删除岗位", name: "删除岗位",
req: async function(id){ req: async function(id){

View File

@ -603,7 +603,8 @@ const routes = [
"meta": { "meta": {
"title": "相关证书", "title": "相关证书",
"icon": "el-icon-menu", "icon": "el-icon-menu",
"hidden": true "hidden": true,
"perms": ["certificates"]
}, },
"component": "hrm/certificate" "component": "hrm/certificate"
}, },

View File

@ -1,199 +1,259 @@
<template> <template>
<el-container> <el-container>
<el-aside width="40%"> <el-aside width="40%">
<el-container> <el-container>
<el-header> <el-header>
<div class="left-panel"> <div class="left-panel">
<div style="margin-right: 20px">岗位列表</div> <div style="margin-right: 20px">岗位列表</div>
<el-button type="primary" icon="el-icon-plus" @click="add"></el-button> <el-button
</div> type="primary"
</el-header> icon="el-icon-plus"
<el-main class="nopadding"> @click="add"
<scTable ref="table" :apiObj="apiObj" row-key="id" stripe highlightCurrentRow @row-click="rowClick" ></el-button>
:hidePagination="true"> </div>
<!-- <el-table-column type="selection" width="50"></el-table-column> --> </el-header>
<el-table-column label="" type="index"></el-table-column> <el-main class="nopadding">
<el-table-column label="名称" prop="name" width="120"></el-table-column> <scTable
<el-table-column label="标识" prop="code" width="60"></el-table-column> ref="table"
<el-table-column label="最短在岗(h)" prop="min_hour" width="100"></el-table-column> :apiObj="apiObj"
<el-table-column label="最长在岗(h)" prop="max_hour" width="100"></el-table-column> row-key="id"
<el-table-column label="操作" fixed="right" align="right"> stripe
<template #default="scope"> highlightCurrentRow
<el-button type="warning" link size="small" @click="table_edit(scope.row)">编辑 @row-click="rowClick"
</el-button> :hidePagination="true"
</template> >
</el-table-column> <!-- <el-table-column type="selection" width="50"></el-table-column> -->
</scTable> <el-table-column label="" type="index"></el-table-column>
</el-main> <el-table-column
</el-container> label="名称"
</el-aside> prop="name"
<el-container> width="120"
<el-header> ></el-table-column>
<div class="left-panel"> <el-table-column
<div style="margin-right: 20px">岗位权限</div> label="标识"
<el-button type="primary" icon="el-icon-plus" @click="addPostRole"></el-button> prop="code"
<el-button type="danger" plain icon="el-icon-delete" @click="delPostRole"></el-button> width="60"
</div> ></el-table-column>
</el-header> <el-table-column
<el-main class="nopadding"> label="最短在岗(h)"
<scTable ref="table2" :apiObj="apiObj2" row-key="id" stripe :hidePagination="true"> prop="min_hour"
<!-- <el-table-column type="selection" width="50"></el-table-column> --> width="100"
<el-table-column label="" type="index"></el-table-column> ></el-table-column>
<el-table-column label="所属岗位" prop="post" min-width="80"> <el-table-column
<template #default="scope">{{scope.row.post_.name}}</template> label="最长在岗(h)"
</el-table-column> prop="max_hour"
<el-table-column label="拥有角色" prop="role" min-width="80"> width="100"
<template #default="scope">{{scope.row.role_.name}}</template> ></el-table-column>
</el-table-column> <el-table-column label="操作" fixed="right" align="right">
<el-table-column label="权限范围" prop="data_range" min-width="80"> <template #default="scope">
<template #default="scope">{{options[scope.row.data_range]}}</template> <el-button
</el-table-column> type="warning"
<el-table-column label="操作" fixed="right" align="right"> link
<template #default="scope"> size="small"
<el-button type="warning" link size="small" @click="postRoleEdit(scope.row)">编辑 @click="table_edit(scope.row)"
</el-button> >编辑
<el-button type="warning" link size="small" @click="postRoleDel(scope.row)">删除 </el-button>
</el-button> </template>
</template> </el-table-column>
</el-table-column> </scTable>
</scTable> </el-main>
</el-main> </el-container>
</el-container> </el-aside>
</el-container> <el-container>
<save-dialog v-if="dialog.save" ref="saveDialog" @success="handleSaveSuccess" <el-header>
@closed="dialog.save=false"></save-dialog> <div class="left-panel">
<save-role-dialog v-if="dialog.roleSave" ref="saveRoleDialog" @success="handleSaveRoleSuccess" <div style="margin-right: 20px">岗位权限</div>
@closed="dialog.roleSave=false"></save-role-dialog> <el-button
type="primary"
icon="el-icon-plus"
@click="addPostRole"
></el-button>
<el-button
type="danger"
plain
icon="el-icon-delete"
@click="delPostRole"
></el-button>
</div>
</el-header>
<el-main class="nopadding">
<scTable
ref="table2"
:apiObj="apiObj2"
row-key="id"
stripe
:hidePagination="true"
>
<!-- <el-table-column type="selection" width="50"></el-table-column> -->
<el-table-column label="" type="index"></el-table-column>
<el-table-column label="所属岗位" prop="post" min-width="80">
<template #default="scope">{{ scope.row.post_.name }}</template>
</el-table-column>
<el-table-column label="拥有角色" prop="role" min-width="80">
<template #default="scope">{{ scope.row.role_.name }}</template>
</el-table-column>
<el-table-column label="权限范围" prop="data_range" min-width="80">
<template #default="scope">{{
options[scope.row.data_range]
}}</template>
</el-table-column>
<el-table-column label="操作" fixed="right" align="right">
<template #default="scope">
<el-button
type="warning"
link
size="small"
@click="postRoleDel(scope.row)"
>删除
</el-button>
</template>
</el-table-column>
</scTable>
</el-main>
</el-container>
</el-container>
<save-dialog
v-if="dialog.save"
ref="saveDialog"
@success="handleSaveSuccess"
@closed="dialog.save = false"
></save-dialog>
<save-role-dialog
v-if="dialog.roleSave"
ref="saveRoleDialog"
@success="handleSaveRoleSuccess"
@closed="dialog.roleSave = false"
></save-role-dialog>
</template> </template>
<script> <script>
import saveDialog from './post_form.vue' import saveDialog from "./post_form.vue";
import saveRoleDialog from './post_role_form.vue' import saveRoleDialog from "./post_role_form.vue";
export default { export default {
name: 'listSon', name: "listSon",
components: { components: {
saveDialog, saveDialog,
saveRoleDialog, saveRoleDialog,
}, },
data() { data() {
return { return {
apiObj: this.$API.system.post.list, apiObj: this.$API.system.post.list,
apiObj2: this.$API.system.postrole.list, apiObj2: this.$API.system.postrole.list,
dialog: { dialog: {
save: false, save: false,
roleSave: false, roleSave: false,
}, },
selection: [], selection: [],
postId:'', postId: "",
options: { options: {
10: "全部", 10: "全部",
20: "自定义", 20: "自定义",
30: "同级及以下", 30: "同级及以下",
40: "本级及以下", 40: "本级及以下",
50: "本级", 50: "本级",
60: "仅本人" 60: "仅本人",
}, },
} };
}, },
methods: { methods: {
rowClick(row) { rowClick(row) {
let params = { let params = {
post: row.id post: row.id,
}; };
this.postId = row.id; this.apiObj2 = this.$API.system.postrole.list;
this.$refs.table2.reload(params) this.postId = row.id;
}, this.$refs.table2.reload(params);
// },
add() { //
this.dialog.save = true; add() {
this.$nextTick(() => { this.dialog.save = true;
this.$refs.saveDialog.open() this.$nextTick(() => {
}) this.$refs.saveDialog.open();
}, });
// },
table_edit(row) { //
this.dialog.save = true; table_edit(row) {
this.$nextTick(() => { this.dialog.save = true;
this.$refs.saveDialog.open('edit').setData(row) this.$nextTick(() => {
}) this.$refs.saveDialog.open("edit").setData(row);
}, });
// },
async batch_del() { //
var confirmRes = await this.$confirm(`确定删除选中的 ${this.selection.length} 项吗?`, '提示', { async batch_del() {
type: 'warning', var confirmRes = await this.$confirm(
confirmButtonText: '删除', `确定删除选中的 ${this.selection.length} 项吗?`,
confirmButtonClass: 'el-button--danger' "提示",
}).catch(() => { {
}) type: "warning",
confirmButtonText: "删除",
confirmButtonClass: "el-button--danger",
}
).catch(() => {});
if (!confirmRes) { if (!confirmRes) {
return false return false;
} }
var ids = this.selection.map(v => v.id) var ids = this.selection.map((v) => v.id);
this.$refs.table.removeKeys(ids) this.$refs.table.removeKeys(ids);
this.$message.success("操作成功") this.$message.success("操作成功");
},
//
handleSaveSuccess(data, mode) {
//
if (mode == "add") {
this.$refs.table.unshiftRow(data);
} else if (mode == "edit") {
this.$refs.table.updateKey(data);
}
}, //
// // this.$refs.table.refresh()
handleSaveSuccess(data, mode) { },
// //
if (mode == 'add') { handleSaveRoleSuccess() {
this.$refs.table.unshiftRow(data) this.$refs.table2.refresh();
} else if (mode == 'edit') { },
this.$refs.table.updateKey(data) addPostRole() {
} this.dialog.roleSave = true;
this.$nextTick(() => {
// this.$refs.saveRoleDialog.open("add").setData({ postId: this.postId });
// this.$refs.table.refresh() });
}, },
// postRoleEdit(row) {
handleSaveRoleSuccess() { this.dialog.roleSave = true;
this.$refs.table2.refresh() this.$nextTick(() => {
}, this.$refs.saveRoleDialog.open("edit").setData(row);
addPostRole(){ });
this.dialog.roleSave = true; },
this.$nextTick(() => { delPostRole() {},
this.$refs.saveRoleDialog.open("add").setData({postId:this.postId}) closed() {
}) this.dialog.save = false;
}, this.dialog.roleSave = false;
postRoleEdit(row){ this.postId = "";
this.dialog.roleSave = true; this.$refs.table2.refresh();
this.$nextTick(() => { },
this.$refs.saveRoleDialog.open("edit").setData(row) postRoleDel(row) {
}) this.$confirm(`确定删除选中的岗位关系吗?`, "提示", {
}, type: "warning",
delPostRole(){ })
.then(() => {
}, this.$API.system.postrole.delete.req(row.id).then((res) => {
closed(){ if (res.err_msg) {
this.dialog.save = false; this.$message.error(res.err_msg);
this.dialog.roleSave = false; } else {
this.postId = ''; const loading = this.$loading();
this.$refs.table2.refresh(); this.$refs.table2.refresh();
}, loading.close();
postRoleDel(row){ this.$message.success("操作成功");
this.$confirm(`确定删除选中的岗位关系吗?`, '提示', { }
type: 'warning' });
}).then(() => { })
this.$API.system.postrole.delete.req(row.id).then(res=>{ .catch(() => {});
if(res.err_msg){ },
this.$message.error(res.err_msg) },
}else{ };
const loading = this.$loading();
this.$refs.table2.refresh();
loading.close();
this.$message.success("操作成功")
}
})
}).catch(() => {
})
},
}
}
</script> </script>
<style> <style>

View File

@ -133,6 +133,7 @@ export default {
}, },
// //
async submit() { async submit() {
var valid = await this.$refs.form.validate().catch(() => {}); var valid = await this.$refs.form.validate().catch(() => {});
if (!valid) { if (!valid) {
return false; return false;
@ -140,11 +141,9 @@ export default {
this.isSaveing = true; this.isSaveing = true;
try { try {
let res; let res;
if (this.mode === "add") {
res = await this.$API.system.postrole.create.req(this.form); res = await this.$API.system.postrole.create.req(this.form);
} else if (this.mode === "edit") {
res = await this.$API.system.postrole.update.req(this.form.id, this.form);
}
this.isSaveing = false; this.isSaveing = false;
this.$emit("success", this.form, this.mode); this.$emit("success", this.form, this.mode);
this.visible = false; this.visible = false;