Browse Source

考核目标设置模块完成

dev
超级管理员 3 years ago
parent
commit
2e517461d0
  1. 6
      .env.development
  2. 51
      src/api/duty/postapi.js
  3. 52
      src/api/systemaccredit/systemapi.js
  4. 11
      src/router/index.js
  5. 2
      src/views/approvalData/index.vue
  6. 143
      src/views/basicCont/targetConfigLayout.vue
  7. 1021
      src/views/basicCont/targetDepartmentConfig.vue
  8. 3
      src/views/basicCont/targetLayout.vue
  9. 1093
      src/views/basicCont/targetPostConfig.vue
  10. 3
      src/views/purview/postpower.vue
  11. 582
      src/views/purview/rolepower.vue

6
.env.development

@ -2,6 +2,6 @@
ENV = 'development' ENV = 'development'
# base api # base api
VUE_APP_BASE_API = 'http://vue.admin.net/api' VUE_APP_BASE_API = 'http://ginvue.admin.net/api'
VUE_APP_BASE_API1 = 'http://vue.admin.net/hrapi' VUE_APP_BASE_API1 = 'http://ginvue.admin.net/hrapi'
VUE_APP_BASE_API2 = 'http://vue.admin.net/kpiapi' VUE_APP_BASE_API2 = 'http://ginvue.admin.net/kpiapi'

51
src/api/duty/postapi.js

@ -0,0 +1,51 @@
import request from '@/utils/requestFile'
//PC岗位考核相关考核API
// 岗位定量考核目标列表
export function postRationTargetConfigList(data) {
return request({
url: '/postpc/post_config_list_news',
method: 'post',
data
})
};
// 岗位定量考核指标列表
export function postRationTargetList(data) {
return request({
url: '/postpc/getpostabouttarget',
method: 'post',
data
})
};
// 提交岗位考核定量指标目标值设定
export function postRationTargetCont(data) {
return request({
url: '/postpc/set_evaluation_objectives',
method: 'post',
data
})
};
// 查看岗位考核指标目标值
export function getRationTargetCont(data) {
return request({
url: '/postpc/lookposttiveconfig',
method: 'post',
data
})
};
// 删除岗位考核指标目标值
export function delRationTargetCont(data) {
return request({
url: '/postpc/new_del_quantitative_config',
method: 'post',
data
})
};
// 编辑岗位考核指标目标值
export function editRationTargetCont(data) {
return request({
url: '/postpc/eite_quantitative_config',
method: 'post',
data
})
};

52
src/api/systemaccredit/systemapi.js

@ -9,7 +9,7 @@ export const getsystemlist = (data) => {
data: data data: data
}) })
} }
//获取系统菜单树 //获取系统菜单树(行政组织岗位)
export const getSystemMenuThree = (data) => { export const getSystemMenuThree = (data) => {
return request({ return request({
url: '/powerpc/system_about_menu', url: '/powerpc/system_about_menu',
@ -17,7 +17,14 @@ export const getSystemMenuThree = (data) => {
data: data data: data
}) })
} }
//获取系统菜单树(角色)
export const getSystemRoleMenuThree = (data) => {
return request({
url: '/powerpc/system_about_role_menu',
method: 'post',
data: data
})
}
//编辑权限 //编辑权限
export const editPower = (data) => { export const editPower = (data) => {
return request({ return request({
@ -26,3 +33,44 @@ export const editPower = (data) => {
data: data data: data
}) })
} }
//编辑权限(角色)
export const editRolePower = (data) => {
return request({
url: '/powerpc/edit_role_power_new',
method: 'post',
data: data
})
}
//获取角色列表
export const getRoleList = (data) => {
return request({
url: '/powerpc/system_role_list',
method: 'post',
data: data
})
}
//编辑角色状态
export const editRoleCont = (data) => {
return request({
url: '/powerpc/edit_system_role_state',
method: 'post',
data: data
})
}
//添加角色
export const addRoleCont = (data) => {
return request({
url: '/powerpc/add_system_role',
method: 'post',
data: data
})
}
//编辑角色
export const editRoleInfo = (data) => {
return request({
url: '/powerpc/edit_system_role',
method: 'post',
data: data
})
}

11
src/router/index.js

@ -277,6 +277,11 @@ export const constantRoutes = [
component: () => import('@/views/basicCont/targetLayout'), component: () => import('@/views/basicCont/targetLayout'),
meta: { title: '考核指标'} meta: { title: '考核指标'}
}, },
{
path: 'targetconfig',
component: () => import('@/views/basicCont/targetConfigLayout'),
meta: { title: '定量考核指标目标设置'}
},
] ]
}, },
// { // {
@ -455,7 +460,11 @@ export const constantRoutes = [
component: () => import('@/views/purview/postpower'), component: () => import('@/views/purview/postpower'),
meta: { title: '行政组织配权'} meta: { title: '行政组织配权'}
}, },
{
path: 'rolepower',
component: () => import('@/views/purview/rolepower'),
meta: { title: '角色配权'}
},
], ],
}, },

2
src/views/approvalData/index.vue

@ -28,7 +28,7 @@
</div> --> </div> -->
<el-table :data="tableData"> <el-table :data="tableData">
<el-table-column align="left" label="审批编号" prop="outid"/> <el-table-column align="left" label="审批编号" prop="outid"/>
<el-table-column align="left" label="审批名称" prop="tittle"/> <el-table-column align="left" label="审批名称" prop="title"/>
<el-table-column align="left" label="指标性质" prop="class"> <el-table-column align="left" label="指标性质" prop="class">
<template #default="scope"> <template #default="scope">
<div v-if="scope.row.class==1"> <div v-if="scope.row.class==1">

143
src/views/basicCont/targetConfigLayout.vue

@ -0,0 +1,143 @@
<template>
<!-- 指标外层布局矿建 -->
<el-container>
<!-- 行政组织级 -->
<el-aside width="220px">
<el-scrollbar >
<el-tree
:data="GovthreeList2"
:props="defaultProps1"
@node-click="handleNodeClick"
></el-tree>
</el-scrollbar>
</el-aside>
<el-aside v-show="postList.length > 0"
width="200px"
>
<el-tree
:data="postList"
:props="defaultProps1"
@node-click="NodePostClick"
></el-tree>
</el-aside>
<el-main>
<el-scrollbar >
<div v-if="postShow">
<targetPostConfig :gwFromList="gwFromList" :gwId="gwId"></targetPostConfig>
</div>
<div v-if="departShow">
<targetDepartmentConfig :bmId="bmId"></targetDepartmentConfig>
</div>
</el-scrollbar>
</el-main>
</el-container>
</template>
<script>
import { govthree, positionlist } from "@/api/personnel/post";
import targetDepartmentConfig from "@/views/basicCont/targetDepartmentConfig.vue";
import targetPostConfig from "@/views/basicCont/targetPostConfig.vue";
export default {
components: {
// project,
targetDepartmentConfig,
targetPostConfig
},
data() {
return {
GovthreeList2: [], //
defaultProps1: {
children: "child",
label: "name",
},
postList: [], //
departShow:true, //
postShow:false, //
bmId:1, //ID
gwId:1, //
gwFromList:{ //
gwId:1,
bmId:1
},
}
},
created() {
//
this.getGovthree2();
},
methods: {
//
async getGovthree2() {
const res = await govthree();
// this.GovthreeList2 = res.data[0].child;
this.GovthreeList2 = res.data
console.log("this.GovthreeList2===>",res.data);
},
//
handleNodeClick(val) {
// this.searchInfo.organization=val.id
// this.searchInfo.organization=this.searchInfo.organization.toString()
this.getPost(val.id);
console.log('bumen----------->layout')
this.bmId=val.id
this.gwFromList.bmId=val.id
this.postShow=false
this.departShow=true
// console.log(val);
},
//
async getPost(val) {
const from = {
organization: val.toString(),
page: 1,
pagesize: 10,
};
const res = await positionlist(from);
this.postList = res.data.list;
},
//
NodePostClick(val) {
this.gwId=val.id
this.gwFromList.gwId=val.id
this.postShow=true
this.departShow=false
console.log('岗位')
console.log(this.gwFromList);
},
}
}
</script>
<style>
.el-aside {
text-align: center;
height: calc(103% - 2px);
overflow: hidden;
overflow-y: auto;
overflow-x: hidden;
border-right: 1px solid rgb(220, 223, 230);
margin: 2px 0 0 0;
padding-bottom: 10px;
}
.el-main{
height: 105%;
}
.el-container {
height:calc(100% - 50px);
overflow: hidden;
}
.el-scrollbar {
height: 100%;
}
.el-scrollbar__wrap {
overflow: hidden;
overflow-y: auto;
overflow: scroll;
}
.el-tree-node.is-current>.el-tree-node__content {
color:#2E89DE!important
}
.el-tree-node_black {
background-color:red !important;
color:#2E89DE!important
}
</style>

1021
src/views/basicCont/targetDepartmentConfig.vue

File diff suppressed because it is too large

3
src/views/basicCont/targetLayout.vue

@ -149,4 +149,7 @@ export default {
overflow-y: auto; overflow-y: auto;
overflow: scroll; overflow: scroll;
} }
.el-tree-node.is-current>.el-tree-node__content {
color:#2E89DE!important
}
</style> </style>

1093
src/views/basicCont/targetPostConfig.vue

File diff suppressed because it is too large

3
src/views/purview/postpower.vue

@ -349,4 +349,7 @@ export default {
.xxCard{ .xxCard{
padding: 10px 0; padding: 10px 0;
} }
.el-tree-node.is-current>.el-tree-node__content {
color:#2E89DE!important
}
</style> </style>

582
src/views/purview/rolepower.vue

@ -0,0 +1,582 @@
<template>
<el-container>
<!-- 角色列表 -->
<el-aside width="300px">
<el-scrollbar >
<el-select v-model="selectNAme" filterable placeholder="搜索" style="width:94%; margin-top: 5px" @change="selectRoleNAme">
<el-option key="0" label="全部" value=""></el-option>
<el-option
v-for="item in rolelist"
:key="item.id"
:label="item.name"
:value="item.name"
>
</el-option>
</el-select>
<el-table style="width: 100%"
:data="rolelist"
@row-click="selectRow"
:row-style="rowStyle"
>
<el-table-column prop="name" label="角色名称" >
<template slot-scope="{ row }">
<div class="roleTitle " @click="setupEmpower(row)">{{row.name}}</div>
</template>
</el-table-column>
<el-table-column prop="state" label="状态" align="center">
<template slot-scope="{ row }">
<el-switch
@change="systemRoleState(row)"
v-model="row.istrue"
active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>
</template>
</el-table-column>
<el-table-column fixed="right" prop="name" label="操作" width="100" align="center">
<template slot-scope="scope">
<el-button type="text" @click="editcont(scope.row)" size="small">编辑</el-button>
<el-button type="text" @click="delcont(scope.row)" size="small">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-button type="primary" @click="addSystemRole" icon="el-icon-plus" style="width:94%; margin: 15px 0 15px 0;">添加角色</el-button>
</el-scrollbar>
</el-aside>
<el-main>
<!--头部系统页面-->
<el-row>
<el-col :span="24">
<div>
<el-radio-group v-model="choiceSystem" size="medium" @change="systemChange">
<el-radio-button :label="sysItem.coder" v-for="(sysItem,sysIndex) in systemList" :key="sysIndex">{{sysItem.title}}</el-radio-button>
</el-radio-group>
</div>
</el-col>
</el-row>
<el-row>
<el-col :span="24" class="xxCard">
<el-radio-group v-model="viewRange" size="small">
<el-radio-button label="1">本岗位</el-radio-button>
<el-radio-button label="2">本部门</el-radio-button>
<el-radio-button label="3">本分部</el-radio-button>
<el-radio-button label="4" disabled>指定行政组织</el-radio-button>
<el-radio-button label="5">所有</el-radio-button>
</el-radio-group>
</el-col>
</el-row>
<el-scrollbar style="max-height:90%">
<el-table
:data="systemRoleMenuList"
style="width: 100%;margin-bottom: 20px;"
row-key="id"
border
default-expand-all
:tree-props="{children: 'child', hasChildren: 'hasChildren'}">
<el-table-column
label="菜单名称"
>
<template slot-scope="{ row }">
<el-checkbox v-model="row.istrue" :label="row.name" @change="menuSelect(row)"></el-checkbox>
</template>
</el-table-column>
<el-table-column
label="操作"
>
<template slot-scope="{ row }">
<el-checkbox v-model="mItem.istrue" v-for="(mItem,mIndex) in row.menuOperation" :label="mItem.name" :key="mIndex" @change="menuOperationSelect(row,mItem)"></el-checkbox>
</template>
</el-table-column>
</el-table>
<div style="margin: 2px 0 20px 0;">
<el-button type="primary" :loading="buttonLoading" @click="subewport">确定授权</el-button>
</div>
</el-scrollbar>
<!--新增角色-->
<el-dialog :close-on-click-modal="false" :visible.sync="addDialogForm" :before-close="closeAddDialog" title="新增" width="30%">
<el-form ref="addForm" :model="addDiaFormDatal" :rules="addrules" label-width="80px" >
<el-form-item label="角色名称" prop="name">
<el-input v-model="addDiaFormDatal.name" autocomplete="off" placeholder="请输入角色名称" />
</el-form-item>
<el-form-item label="排序" >
<el-input-number v-model="addDiaFormDatal.sort" controls-position="right" :min="1" :max="999999999999" value="50" placeholder="请输入序号" ></el-input-number>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button size="small" @click="closeAddDialog"> </el-button>
<el-button size="small" type="primary" @click="enterAddDialog"> </el-button>
</div>
</template>
</el-dialog>
<!--编辑角色-->
<el-dialog :close-on-click-modal="false" :visible.sync="editDialogForm" :before-close="closeEditDialog" title="新增" width="30%">
<el-form ref="editForm" :model="editSystemRoleCont" :rules="addrules" label-width="80px" >
<el-form-item label="角色名称" prop="name">
<el-input v-model="editSystemRoleCont.name" autocomplete="off" placeholder="请输入角色名称" />
</el-form-item>
<el-form-item label="排序" >
<el-input-number v-model="editSystemRoleCont.sort" controls-position="right" :min="1" :max="999999999999" value="50" placeholder="请输入序号" ></el-input-number>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button size="small" @click="closeEditDialog"> </el-button>
<el-button size="small" type="primary" @click="enterEditDialog"> </el-button>
</div>
</template>
</el-dialog>
</el-main>
</el-container>
</template>
<script>
import { getRoleList,editRoleCont,addRoleCont,editRoleInfo,getsystemlist,getSystemRoleMenuThree,editRolePower } from "@/api/systemaccredit/systemapi"; //
import { MessageBox, Message } from 'element-ui'
export default {
data() {
return {
tablename:"",
roleid:"",
addDialogForm:false, //
editDialogForm:false, //
selectNAme:"", //
rolelist:[], //
addDiaFormDatal:{
name:"",
sort:50
}, //
//
addrules: {
name: [{ required: true, message: '必填', trigger: 'blur' }],
},
editSystemRoleCont:{
id:"",
name:"",
sort:50
},
viewRange:2, //
buttonLoading:false,
choiceSystem:'kpi',
systemList:[],
systemRoleMenuList:[], //
}
},
created() {
this.getRoleList()
this.systemInit()
},
methods: {
//
async getRoleList(){
const from = {
name: this.selectNAme,
};
const res = await getRoleList(from);
this.rolelist = res.data
console.log("获取角色列表----》",res.data)
},
//
selectRoleNAme(){
this.getRoleList()
},
//
addSystemRole(){
this.addDialogForm = true
},
//
closeAddDialog() {
this.initAddForm()
this.editSystemRoleCont.sort=50
this.addDialogForm = false
},
//
initAddForm() {
this.$refs.addForm.resetFields()
this.editSystemRoleCont = {
name:"",
sort:50
}
},
//
enterAddDialog(){
this.$refs.addForm.validate(async valid => {
if (valid) {
this.addDiaFormDatal.sort =parseInt(this.addDiaFormDatal.sort)
const res = await addRoleCont(this.addDiaFormDatal)
if (res.code === 0) {
this.$message({
type: 'success',
message: '添加成功',
showClose: true
})
}
this.getRoleList();
this.closeAddDialog();
}
})
},
//
editcont(data){
this.editDialogForm = true
this.editSystemRoleCont = {
id:data.id.toString(),
name:data.name,
sort:data.sort
}
},
//
closeEditDialog() {
this.iniEditForm()
this.addDiaFormDatal.sort=50
this.editDialogForm = false
},
//
iniEditForm() {
this.$refs.editForm.resetFields()
this.editSystemRoleCont = {
id:"",
name:"",
sort:50
}
},
//
enterEditDialog(){
this.$refs.editForm.validate(async valid => {
if (valid) {
this.editSystemRoleCont.sort =parseInt(this.editSystemRoleCont.sort)
this.editSystemRoleCont.id = this.editSystemRoleCont.id.toString()
const res = await editRoleInfo(this.editSystemRoleCont)
if (res.code === 0) {
this.$message({
type: 'success',
message: res.msg,
showClose: true
})
}
this.getRoleList();
this.closeEditDialog();
}
})
},
//
delcont(data){
this.$confirm('此操作将永久删除该角色, 是否继续操作?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
center: true
}).then(() => {
const delfrom = {
id: data.id.toString(),
state:3,
istrue:2
};
this.delSystemRoleCont(delfrom)
});
},
//
async delSystemRoleCont(data){
const res = await editRoleCont(data);
if (res.code === 0) {
this.$message({
type: 'success',
message: res.msg,
showClose: true
})
}
this.getRoleList();
},
//
async systemRoleState(data){
console.log("编辑角色状态----》",data)
let stateVal = 1;
if(!data.istrue){
stateVal = 2;
}
const from = {
id: data.id.toString(),
state:stateVal,
istrue:2
};
const res = await editRoleCont(from);
if(res.code != 0){
data.istrue = !data.istrue
}
console.log("编辑角色状态返回----》",res)
},
//
setupEmpower(data){
console.log("配置授权----》",data)
this.roleid = data.id
this.getAboutSystemMenu()
},
//
async systemInit(){
const from = {
page: 1,
pagesize: 100000,
};
const res = await getsystemlist(from);
console.log("初始话要授权的系统----》",res.data)
this.systemList = res.data.list
if(res.data.list.length > 0){
this.choiceSystem = res.data.list[0].coder
}
this.getAboutSystemMenu(); //
},
//
systemChange(val){
console.log("选择系统-----》",val)
this.choiceSystem = val
this.getAboutSystemMenu()
},
//
async getAboutSystemMenu(){
const from = {
name: this.choiceSystem,
roleid:this.roleid.toString(),
};
const res = await getSystemRoleMenuThree(from);
console.log("系统菜单树-----》",res)
res.data.forEach(item =>{
// console.log("-----",item)
})
this.systemRoleMenuList = res.data;
},
//
async subewport(){
this.buttonLoading = true
console.log("提交授权-----》",this.systemRoleMenuList)
this.viewRange =parseInt(this.viewRange)
const from = {
systemname: this.choiceSystem,
roleid:this.roleid.toString(),
level:this.viewRange,
power:this.systemRoleMenuList
};
const res = await editRolePower(from);
console.log("系统菜单树-----》",res)
if (res.code != 0){
this.buttonLoading = false
}else{
Message({
message: res.msg || 'success',
type: 'success',
duration: 5 * 1000
})
this.buttonLoading = false
// this.roleid=0
this.viewRange = 2
this.postList = []
this.systemInit(); //
}
},
//
menuSelect(val){
// console.log("-----",val)
if(val.menuOperation){
val.menuOperation.forEach(item =>{
item.istrue = val.istrue
})
}
if(val.child){
this.menuSunDigui(val.child,val.istrue)
}
if(val.parentid != "0"){
this.menuParentDigui(val.parentid,val.istrue)
}
},
//
menuSunDigui(childList,enterClick){
if(childList){
childList.forEach(cItem=>{
cItem.istrue = enterClick
if(cItem.menuOperation){
cItem.menuOperation.forEach(cmitem =>{
cmitem.istrue = enterClick
})
}
this.menuSunDigui(cItem.child,enterClick)
})
}else{
return
}
},
//
menuParentDigui(parentId,enterClick){
// console.log("===>",parentId,enterClick);
if (parentId == "0") return;
if(enterClick == true){
}
let listAry = this.getParentId(this.systemMenuList,parentId,enterClick)
// console.log("==list==>",listAry);
},
getParentId(list,id,enterClick) {
for (let i in list) {
// console.log("==1==>",list[i].id,id);
if(list[i].id===id){
if(enterClick == true){
list[i].istrue = enterClick
}else{
if(list[i].child){
let falseNum = 0
list[i].child.forEach(lcItem =>{
if(lcItem.istrue){
falseNum++
}
})
if(falseNum <=0){
list[i].istrue = enterClick
}
}else{
list[i].istrue = enterClick
}
}
// console.log("==2==>",list[i],id);
return [list[i]]
}
if(list[i].child!=null){
let node = this.getParentId(list[i].child,id,enterClick);
if(node!==undefined){
if(enterClick == true){
list[i].istrue = enterClick
}else{
if(list[i].child){
let falseNum = 0
list[i].child.forEach(lcItem =>{
if(lcItem.istrue){
falseNum++
}
})
if(falseNum <=0){
list[i].istrue = enterClick
}
}else{
list[i].istrue = enterClick
}
}
// console.log("==3==>",list[i],id);
return node.concat(list[i])
}
}
}
},
//
menuOperationSelect(val,mation){
if (mation.istrue){
val.istrue = mation.istrue
}else{
var jiBuqian = 0
val.menuOperation.forEach(item =>{
if(!item.istrue){
jiBuqian++;
}
})
if(jiBuqian == val.menuOperation.length){
val.istrue = false
}
}
let listAry = this.getParentId(this.systemMenuList,val.parentid,mation.istrue)
},
//
//
selectRow(row, column, event) {
console.log(row);
console.log(column);
console.log(event);
this.tablename = row.name;
},
//
rowStyle({ row }) {
console.log("更改选中行背景色",row);
if (this.tablename === row.name) {
return { 'background-color': '#F56C6C', cursor: 'pointer' };
}
return { cursor: 'pointer' };
},
}
}
</script>
<style>
.el-aside {
text-align: center;
height: calc(103% - 2px);
overflow: hidden;
overflow-y: auto;
overflow-x: hidden;
border-right: 1px solid rgb(220, 223, 230);
margin: 2px 0 0 0;
padding-bottom: 10px;
}
.el-main{
height: 105%;
}
.el-container {
height:calc(100% - 50px);
overflow: hidden;
}
.el-scrollbar {
height: 100%;
}
.el-scrollbar__wrap {
overflow: hidden;
overflow-y: auto;
overflow: scroll;
}
.xxCard{
padding: 10px 0;
}
.roleTitle{
color: #409EFF;
cursor: pointer;
}
.el-table__row:hover > td {
background-color: transparent;
}
</style>
Loading…
Cancel
Save