Browse Source

配权

master
超级管理员 3 years ago
parent
commit
5a4ebdc895
  1. 2
      .env.development
  2. 6
      public/index.html
  3. 6
      src/App.vue
  4. 17
      src/api/duty/group.js
  5. 2
      src/api/duty/projectNew.js
  6. 17
      src/api/personnel/post.js
  7. 19
      src/api/systemaccredit/systemapi.js
  8. 10
      src/layout/index.vue
  9. 46
      src/router/index.js
  10. 3
      src/views/assessmentProgram/departmentBase.vue
  11. 9
      src/views/assessmentProgram/departmentalAssessment.vue
  12. 3
      src/views/assessmentProgram/gwDepartmentalAssessment.vue
  13. 2
      src/views/assessmentProgram/qualitativeIndicators.vue
  14. 3
      src/views/assessmentProgram/qualitativeIndicatorsBase.vue
  15. 796
      src/views/basicCont/departTarget.vue
  16. 152
      src/views/basicCont/targetLayout.vue
  17. 3
      src/views/basicInfo/gwProject copy.vue
  18. 5
      src/views/basicInfo/gwProject.vue
  19. 10
      src/views/basicInfo/project.vue
  20. 7
      src/views/basicInfo/projectBase.vue
  21. 3
      src/views/basicInfo/targetBase.vue
  22. 3
      src/views/hr/personnel.vue
  23. 2
      src/views/permission/permissionSetting.vue
  24. 189
      src/views/purview/postpower.vue

2
.env.development

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

6
public/index.html

@ -8,6 +8,12 @@
<title><%= webpackConfig.name %></title> <title><%= webpackConfig.name %></title>
<script src="//res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> <script src="//res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script> <script src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script>
<style>
body,html{
height: 100%;
margin: 0;
}
</style>
</head> </head>
<body> <body>
<noscript> <noscript>

6
src/App.vue

@ -59,3 +59,9 @@ if(this.$router.path !== currentPath){
} }
</script> </script>
<style>
#app {
height: 100%;
}
</style>

17
src/api/duty/group.js

@ -123,10 +123,25 @@ export const grouplist = (data) => {
// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}" // @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /group/grouplist [get] // @Router /group/grouplist [get]
export const getgroupdepartmap = (data) => { export const getgroupdepartmap = (data) => {
var dataJson = {
id:309,
all:1
}
if(data){
// let dataJsonKeys=Object.keys(dataJson);
let keys=Object.keys(data);
// console.log('-------------------->key:',data,'value:',keys);
keys.forEach((items) => {
// console.log('------------12-------->key:',items,'value:',data[items]);
dataJson[items] = data[items]
})
}
// console.log('------------END-------->key:',dataJson,'value:',dataJson);
return service({ return service({
url: '/group/getgroupdepartmap', url: '/group/getgroupdepartmap',
method: 'post', method: 'post',
data data:dataJson
}) })
} }
// @Tags Api // @Tags Api

2
src/api/duty/projectNew.js

@ -130,7 +130,7 @@ export function gettargetreport(data) {
}) })
} }
// 添加定性考核子栏目及细则 // 添加定性考核子栏目及细则
export function addsuntargetdetailed(data) { export function addsuntargetdetailed(data) {
return request({ return request({
url: '/department_pc/addsuntargetdetailed', url: '/department_pc/addsuntargetdetailed',
method: 'post', method: 'post',

17
src/api/personnel/post.js

@ -57,10 +57,25 @@ export const govlist = (data) => {
} }
//行政组织树 //行政组织树
export const govthree = (data) => { export const govthree = (data) => {
var dataJson = {
id:309,
all:1
}
if(data){
// let dataJsonKeys=Object.keys(dataJson);
let keys=Object.keys(data);
console.log('-------------------->key:',data,'value:',keys);
keys.forEach((items) => {
console.log('------------12-------->key:',items,'value:',data[items]);
dataJson[items] = data[items]
})
}
console.log('------------END-------->key:',dataJson,'value:',dataJson);
return request({ return request({
url: '/org/govthree', url: '/org/govthree',
method: 'post', method: 'post',
data: data data: dataJson
}) })
} }
//岗位(职位)配权 //岗位(职位)配权

19
src/api/systemaccredit/systemapi.js

@ -0,0 +1,19 @@
// 系统授权相关
import request from '@/utils/requestFile'
//获取系统列表列表
export const getsystemlist = (data) => {
return request({
url: '/powerpc/system_list',
method: 'post',
data: data
})
}
//获取系统菜单树
export const getSystemMenuThree = (data) => {
return request({
url: '/powerpc/system_about_menu',
method: 'post',
data: data
})
}

10
src/layout/index.vue

@ -2,13 +2,13 @@
<div :class="classObj" class="app-wrapper"> <div :class="classObj" class="app-wrapper">
<div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside" /> <div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside" />
<sidebar class="sidebar-container" /> <sidebar class="sidebar-container" />
<div class="main-container"> <div class="main-container rightBootempHeight">
<div :class="{'fixed-header':fixedHeader}"> <div :class="{'fixed-header':fixedHeader}">
<navbar /> <navbar />
<tags-view /> <tags-view />
</div> </div>
<!-- <HistoryComponent ref="layoutHistoryComponent" /> --> <!-- <HistoryComponent ref="layoutHistoryComponent" /> -->
<router-view key="/characterlist/index"/> <router-view key="/characterlist/index" />
</div> </div>
</div> </div>
</template> </template>
@ -45,6 +45,7 @@ export default {
return this.$store.state.app.device return this.$store.state.app.device
}, },
fixedHeader() { fixedHeader() {
// console.log("AppMain----------------------?",this.$store.state.settings.fixedHeader)
return this.$store.state.settings.fixedHeader return this.$store.state.settings.fixedHeader
}, },
classObj() { classObj() {
@ -58,6 +59,7 @@ export default {
}, },
methods: { methods: {
handleClickOutside() { handleClickOutside() {
this.$store.dispatch('app/closeSideBar', { withoutAnimation: false }) this.$store.dispatch('app/closeSideBar', { withoutAnimation: false })
} }
} }
@ -104,4 +106,8 @@ export default {
.mobile .fixed-header { .mobile .fixed-header {
width: 100%; width: 100%;
} }
.rightBootempHeight{
height:100%
}
</style> </style>

46
src/router/index.js

@ -258,8 +258,27 @@ export const constantRoutes = [
component: () => import('@/views/basicInfo/targetBase'), component: () => import('@/views/basicInfo/targetBase'),
meta: { title: '考核目标'} meta: { title: '考核目标'}
}, },
{
path: 'targetbasic',
component: () => import('@/views/basicCont/targetLayout'),
meta: { title: '考核指标'}
},
], ],
}, },
//基础信息(新版)
{
path: '/basicCont',
component: Layout,
children: [
// 当 /user/:id 匹配成功
// UserHome 将被渲染到 User 的 <router-view> 内部
{
path: 'targetbasic',
component: () => import('@/views/basicCont/targetLayout'),
meta: { title: '考核指标'}
},
]
},
// { // {
// path: '/', // path: '/',
// component: Layout, // component: Layout,
@ -424,6 +443,33 @@ export const constantRoutes = [
// meta: { title: '考核记录详情'} // meta: { title: '考核记录详情'}
}] }]
}, },
//权限管理
{
path: '/purview',
component: Layout,
children: [
// 当 /user/:id 匹配成功
// UserHome 将被渲染到 User 的 <router-view> 内部
{
path: 'postpower',
component: () => import('@/views/purview/postpower'),
meta: { title: '行政组织配权'}
},
],
},
// 404 page must be placed at the end !!! // 404 page must be placed at the end !!!
{ path: '*', redirect: '/404', hidden: true } { path: '*', redirect: '/404', hidden: true }

3
src/views/assessmentProgram/departmentBase.vue

@ -200,7 +200,8 @@
// //
async getGovthree2() { async getGovthree2() {
const res = await govthree(); const res = await govthree();
this.GovthreeList2 = res.data[0].child; // this.GovthreeList2 = res.data[0].child;
this.GovthreeList2 = res.data
console.log("this.GovthreeList2"); console.log("this.GovthreeList2");
console.log(res.data[0].child); console.log(res.data[0].child);
}, },

9
src/views/assessmentProgram/departmentalAssessment.vue

@ -933,8 +933,13 @@ export default {
}, },
// //
async getGovthree2(){ async getGovthree2(){
const res = await govthree() var dataJson = {
this.GovthreeList2 = res.data[0].child id:309,
all:1
}
const res = await govthree(dataJson)
// this.GovthreeList2 = res.data[0].child
this.GovthreeList2 = res.data
console.log("this.GovthreeList2") console.log("this.GovthreeList2")
console.log(res.data[0].child) console.log(res.data[0].child)
}, },

3
src/views/assessmentProgram/gwDepartmentalAssessment.vue

@ -1128,7 +1128,8 @@
// //
async getGovthree2(){ async getGovthree2(){
const res = await govthree() const res = await govthree()
this.GovthreeList2 = res.data[0].child // this.GovthreeList2 = res.data[0].child
this.GovthreeList2 = res.data
console.log("this.GovthreeList2") console.log("this.GovthreeList2")
console.log(res.data[0].child) console.log(res.data[0].child)
}, },

2
src/views/assessmentProgram/qualitativeIndicators.vue

@ -921,7 +921,7 @@ import {
departmenttargetlist,getdepartabouttarget,gettargetreport,shiyan,getdepartmenttragetcontlist,basistargetdearpetmentgetpost,basistaegetdeparmentreport, departmenttargetlist,getdepartabouttarget,gettargetreport,shiyan,getdepartmenttragetcontlist,basistargetdearpetmentgetpost,basistaegetdeparmentreport,
delsontarget,basissontargetadddetailed,del_one_detailed_target, delsontarget,basissontargetadddetailed,del_one_detailed_target,
getsontargetcont,editsontargetdepartmentreport,getonedetailedtarget, getsontargetcont,editsontargetdepartmentreport,getonedetailedtarget,
get_one_terget_info,edit_one_target get_one_terget_info,edit_one_target,addsuntargetdetailed
} from '@/api/duty/projectNew' } from '@/api/duty/projectNew'
import { import {
grouplist, grouplist,

3
src/views/assessmentProgram/qualitativeIndicatorsBase.vue

@ -200,7 +200,8 @@ export default {
// //
async getGovthree2() { async getGovthree2() {
const res = await govthree(); const res = await govthree();
this.GovthreeList2 = res.data[0].child; // this.GovthreeList2 = res.data[0].child;
this.GovthreeList2 = res.data
console.log("this.GovthreeList2"); console.log("this.GovthreeList2");
console.log(res.data[0].child); console.log(res.data[0].child);
}, },

796
src/views/basicCont/departTarget.vue

@ -0,0 +1,796 @@
<template>
<div>
<el-row>
<!--搜索区域-->
<el-col :span="24">
<el-form ref="searchForm" :inline="true" :model="searchInfo" class="demo-form-inline">
<el-form-item label="考核指标">
<el-input v-model="searchInfo.title" placeholder="请输入指标名称"></el-input>
</el-form-item>
<el-form-item label="指标维度">
<el-select v-model="searchInfo.dimension" clearable placeholder="请选择指标维度">
<el-option
v-for="item in dutyclasslist"
:key="item.outId"
:label="item.title"
:value="item.outId">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="指标性质" prop="type">
<el-select v-model="searchInfo.type" placeholder="请选择指标性质">
<el-option label="定性指标" :value=1></el-option>
<el-option label="定量指标" :value=2></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="onSubmit">查询</el-button>
</el-form-item>
</el-form>
</el-col>
<el-col :span="24">
<div class="gva-btn-list">
<el-button size="mini" type="primary" icon="el-icon-plus" @click="showAdd()">新增</el-button>
</div>
</el-col>
<!--数据区域-->
<el-col :span="24">
<el-table
:data="tableData"
style="width: 95%"
max-height="100%">
<el-table-column
fixed
prop="title"
label="考核指标"
width="150">
</el-table-column>
<el-table-column
prop="dimensionname"
label="考核维度"
>
</el-table-column>
<el-table-column
label="指标性质"
>
<template #default="scope">
<div v-if="scope.row.type==1">定性指标</div>
<div v-if="scope.row.type==2">定量指标</div>
</template>
</el-table-column>
<el-table-column
prop="unites"
label="计量单位"
>
</el-table-column>
<el-table-column
prop="outId"
label="考核周期"
>
<template #default="scope">
<el-tag v-if="scope.row.cycle==1"></el-tag>
<el-tag v-if="scope.row.cycle==2"></el-tag>
<el-tag v-if="scope.row.cycle==3"></el-tag>
<el-tag v-if="scope.row.cycle==4"></el-tag>
<el-tag v-if="scope.row.cycle==5">季度</el-tag>
<el-tag v-if="scope.row.cycle==6"></el-tag>
</template>
</el-table-column>
<el-table-column
prop="outId"
label="计分方式"
>
<template #default="scope">
<el-tag v-if="scope.row.scoringmethod==1">自动计分</el-tag>
<el-tag v-if="scope.row.scoringmethod==2">手动计分</el-tag>
</template>
</el-table-column>
<el-table-column
label="关联部门"
>
<template #default="scope">
<el-collapse>
<el-collapse-item title="详情" name="1">
<div v-for="(iteam,index) in scope.row.relevantdepartmentsmap" :key="index">
{{iteam.title}}
</div>
</el-collapse-item>
</el-collapse>
</template>
</el-table-column>
<el-table-column
label="数据提交"
>
<template #default="scope">
<div v-for="item in scope.row.reportmap" :key="item.key">{{item.title}}</div>
</template>
</el-table-column>
<el-table-column
prop="cycleattr"
label="辅助计数"
>
</el-table-column>
<el-table-column
label="状态"
>
<template #default="scope">
<el-switch
inline-prompt
v-model="scope.row.state"
active-color="#13ce66"
inactive-color="#ff4949"
:active-value=1
:inactive-value=2
@change="changeVal($event,scope.row.outid)"
/>
</template>
</el-table-column>
<el-table-column
fixed="right"
label="操作"
width="220">
<template slot-scope="scope">
<el-button
icon="el-icon-edit"
size="small"
type="text"
@click="showPost(scope.row)"
>关联岗位</el-button>
<el-button
icon="el-icon-edit"
size="small"
type="text"
@click="showEdit(scope.row)"
>编辑</el-button>
<el-button
icon="el-icon-delete"
size="small"
type="text"
@click="deleteOperate(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
</el-col>
<el-col :span="24">
<el-pagination class="page_body"
background
@current-change="handleCurrentChange"
layout="prev, pager, next"
:total="total">
</el-pagination>
</el-col>
</el-row>
<!--新增-->
<el-dialog :close-on-click-modal="false" :visible.sync="addDialogForm" :before-close="closeAddDialog" title="新增" width="40%">
<el-form ref="addForm" :model="addDiaFormDatal" :rules="addrules" label-width="100px" >
<el-form-item label="指标名称" prop="name">
<el-input v-model="addDiaFormDatal.name" autocomplete="off" placeholder="请输入指标名称" />
</el-form-item>
<el-form-item label="关联部门" prop="acceptdepartmentid">
<el-cascader filterable clearable v-model="addDiaFormDatal.acceptdepartmentid" :options="grouplist" :show-all-levels="false" :props="propsdepart"></el-cascader>
</el-form-item>
<el-form-item label="指标维度" prop="dimension">
<el-select v-model="addDiaFormDatal.dimension" clearable placeholder="请选择考核维度">
<el-option
v-for="item in dutyclasslist"
:key="item.outId"
:label="item.title"
:value="item.outId">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="指标性质" prop="nature">
<el-select v-model="addDiaFormDatal.nature" placeholder="请选择指标性质">
<el-option label="定性指标" :value=1></el-option>
<el-option label="定量指标" :value=2></el-option>
</el-select>
</el-form-item>
<el-form-item label="计量单位" prop="unit">
<el-input v-model="addDiaFormDatal.unit" autocomplete="off" placeholder="请输入计量单位" />
</el-form-item>
<el-form-item label="数据提交" prop="userlist">
<!-- <el-cascader clearable v-model="form.report" :options="grouplistBackup" :show-all-levels="false" :props="userProps"></el-cascader> -->
<el-cascader filterable clearable v-model="addDiaFormDatal.userlist" :options="grouplistBackup" :show-all-levels="false" :props="userProps"></el-cascader>
</el-form-item>
<el-form-item label="计分方式" prop="scoringmethod">
<el-select v-model="addDiaFormDatal.scoringmethod" placeholder="请选择指标性质">
<el-option label="自动计分" :value=1></el-option>
<el-option label="手动计分" :value=2></el-option>
</el-select>
</el-form-item>
<el-form-item label="考核周期" prop="cycle">
<el-select v-model="addDiaFormDatal.cycle" placeholder="请选择考核周期">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="辅助计数" prop="cycleattr">
<el-input-number v-model="addDiaFormDatal.cycleattr" controls-position="right" :min="1" :max="12" value="1" 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="editDialogFormVisible" :before-close="editCloseDialog" title="修改" width="40%">
<el-form ref="editForm" :model="editAdd" :rules="addrules" label-width="100px" >
<el-form-item label="指标名称" prop="name">
<el-input v-model="editAdd.name" autocomplete="off" placeholder="请输入指标名称" />
</el-form-item>
<el-form-item label="关联部门" prop="acceptdepartmentid">
<el-cascader filterable clearable v-model="editAdd.acceptdepartmentid" :options="grouplist" :show-all-levels="false" :props="propsdepart"></el-cascader>
</el-form-item>
<el-form-item label="指标维度" prop="dimension">
<el-select v-model="editAdd.dimension" clearable placeholder="请选择考核维度">
<el-option
v-for="item in dutyclasslist"
:key="item.outId"
:label="item.title"
:value="item.outId">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="指标性质" prop="nature">
<el-select v-model="editAdd.nature" placeholder="请选择指标性质">
<el-option label="定性指标" :value=1></el-option>
<el-option label="定量指标" :value=2></el-option>
</el-select>
</el-form-item>
<el-form-item label="计量单位" prop="unit">
<el-input v-model="editAdd.unit" autocomplete="off" placeholder="请输入计量单位" />
</el-form-item>
<el-form-item label="数据提交" prop="userlist">
<!-- <el-cascader clearable v-model="form.report" :options="grouplistBackup" :show-all-levels="false" :props="userProps"></el-cascader> -->
<el-cascader filterable clearable v-model="editAdd.userlist" :options="grouplistBackup" :show-all-levels="false" :props="userProps"></el-cascader>
</el-form-item>
<el-form-item label="计分方式" prop="scoringmethod">
<el-select v-model="editAdd.scoringmethod" placeholder="请选择指标性质">
<el-option label="自动计分" :value=1></el-option>
<el-option label="手动计分" :value=2></el-option>
</el-select>
</el-form-item>
<el-form-item label="考核周期" prop="cycle">
<el-select v-model="editAdd.cycle" placeholder="请选择考核周期">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="辅助计数" prop="cycleattr">
<el-input-number v-model="editAdd.cycleattr" controls-position="right" :min="1" :max="12" value="1" placeholder="请输入辅助计数" ></el-input-number>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button size="small" @click="editCloseDialog"> </el-button>
<el-button size="small" type="primary" @click="editEnterDialog"> </el-button>
</div>
</template>
</el-dialog>
<!--关联岗位-->
<el-dialog :close-on-click-modal="false" :visible.sync="relationPost" :before-close="relationCloseDialog" title="关联岗位" width="40%">
<el-form ref="relationPostForm" :model="relationPostData" :rules="relationRules" label-width="80px">
<el-form-item
v-for = "(relItem,relIndex) in orglist"
:key="relIndex"
label="部门">
<el-cascader @change="changeBm(relIndex,relItem.id)" filterable clearable v-model="relItem.id" :options="grouplist" :show-all-levels="false" :props="relationPostDepart" ></el-cascader>
<el-button @click.prevent="removeBumen(relIndex)">删除</el-button>
<el-table
:data="relItem.child"
style="width: 100%">
<el-table-column
prop="date"
label="关联岗位"
width="180">
<template slot-scope="scope">
<el-select
clearable
v-model="scope.row.id"
filterable
placeholder="请选择"
>
<el-option
v-for="item in postList"
:key="item.idstr"
:label="item.name"
:value="item.idstr"
>
</el-option>
</el-select>
</template>
</el-table-column>
<el-table-column
prop="name"
label="提报人"
width="180">
<template slot-scope="scope">
<el-cascader
filterable
clearable
v-model="scope.row.childCopy"
:options="grouplistBackup"
:show-all-levels="false"
:props="userProps"
></el-cascader>
</template>
</el-table-column>
<el-table-column
prop="address"
label="操作">
<template slot-scope="scope">
<el-button @click="jiaArrAddXi(relIndex)" type="primary" icon="el-icon-plus" circle size="mini"></el-button>
<el-button
icon="el-icon-delete"
size="small"
type="text"
@click="deleteAddXiList(relIndex,scope)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
</el-form-item>
<el-button @click="addBumen">新增部门</el-button>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button size="small" @click="relationCloseDialog"> </el-button>
<el-button size="small" type="primary" @click="associationPost"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
acceptdepartmentid
<script>
import { positionlist } from "@/api/personnel/post"; //
import { dutyclasslist } from '@/api/duty/dimension' //api
import { add_department_target,get_one_terget_info,deparment_target_about_post,edit_one_target } from '@/api/duty/projectNew' //
import { gettarget,addtarget,gettargetinfo,eiteassessinfo,eitetarget,deltarget } from '@/api/duty/project' //api
import {
getgroupdepartmap,
getgroupuser
} from '@/api/duty/group' //
export default {
props:['bmId'],
data(){
return {
//
options: [
{
value: 4,
label: '月'
}, {
value: 5,
label: '季度'
}, {
value: 6,
label: '年'
}],
dutyclasslist:{}, //
//
searchInfo: {
page: 1,
pagesize: 10
},
//
searchList:{
page:1,
pagesize:10000,
},
tableData:[], //
total: 0,
grouplist:[], //
grouplistBackup:[], //
//
addDialogForm:false,
addDiaFormDatal:{
cycleattr:1
},
//
addrules: {
name: [{ required: true, message: '必填', trigger: 'blur' }],
type: [{ required: true, message: '必填', trigger: 'blur' }],
// share: [{ required: true, message: '', trigger: 'blur' }],
acceptdepartmentid: [{ required: true, message: '必填', trigger: 'blur' }],
dimension: [{ required: true, message: '必填', trigger: 'blur' }],
nature: [{ required: true, message: '必填', trigger: 'blur' }],
unit: [{ required: true, message: '必填', trigger: 'blur' }],
cycle: [{ required: true, message: '必填', trigger: 'blur' }],
cycleattr: [{ required: true, message: '必填', trigger: 'blur' }],
userlist: [{ required: true, message: '必填', trigger: 'blur' }],
scoringmethod: [{ required: true, message: '必填', trigger: 'blur' }],
},
//
relationRules:{
title: [{ required: true, message: '必填', trigger: 'blur' }],
type: [{ required: true, message: '必填', trigger: 'blur' }],
// share: [{ required: true, message: '', trigger: 'blur' }],
relevantdepartments: [{ required: true, message: '必填', trigger: 'blur' }],
dimension: [{ required: true, message: '必填', trigger: 'blur' }],
report: [{ required: true, message: '必填', trigger: 'blur' }],
unites: [{ required: true, message: '必填', trigger: 'blur' }],
cycle: [{ required: true, message: '必填', trigger: 'blur' }],
cycleattr: [{ required: true, message: '必填', trigger: 'blur' }],
},
propsdepart: {
checkStrictly: true,
value: "id",
label: "name",
children: "children",
emitPath:false,
multiple: true
}, //
userProps: {
value: "key",
label: "name",
children: "govlist",
emitPath:false,
multiple: true
},//
editDialogFormVisible:false, //
//
editAdd:{
unittitle:'',
parentId:''
},
editFrom:{}, //
//
relationPost:false,
orglist:[
{
// id
id:'',
//
child:[
{
// id
id:'',
//
child:[],
childCopy:[]
}
]
},
], //
relationPostData:{}, //
relationPostDepart: {
checkStrictly: true,
value: "id",
label: "name",
children: "children",
emitPath:false,
},
postList:[],
}
},
//
created() {
console.log(this.$store.state.user.token,"UserToken---------------->")
if (this.$store.state.user.token=='') {
this.$router.push('/login')
}
//
this.getDataList()
this.getDutyclasslist()
this.getSystemadminlist()
this.getGrouplist()
},
watch:{
bmId(){
console.log("bmid变化")
console.log(this.bmId)
const list = []
list.push(this.bmId)
this.searchInfo.relevantdepartments=list
this.getDataList()
},
},
methods: {
//
async getDataList() {
if(this.searchInfo.relevantdepartments!=null){
this.searchInfo.relevantdepartments=this.searchInfo.relevantdepartments.map(String)
}
const res = await gettarget(this.searchInfo)
// console.log("res------111----->",res)
if(res.data.list != null){
this.tableData = res.data.list
}else{
this.tableData = []
}
this.total = res.data.total
this.searchInfo.page = res.data.page
this.searchInfo.pagesize = res.data.pageSize
},
//
async getDutyclasslist(){
const res = await dutyclasslist(this.searchList)
this.dutyclasslist=res.data.list
},
//
onSubmit() {
this.searchInfo.page = 1
this.searchInfo.pagesize = 10
this.getDataList()
console.log("1111")
},
//
showAdd(){
this.addDialogForm=true;
console.log(this.dialogFormVisible)
},
// page
handleCurrentChange(val) {
this.searchInfo.page=val
this.getDataList(this.searchInfo)
},
//
closeAddDialog() {
console.log("closeDialog")
this.initAddForm()
this.addDiaFormDatal.cycleattr=1
this.addDialogForm = false
},
//
initAddForm() {
console.log("initForm")
this.$refs.addForm.resetFields()
this.addDiaFormDatal = {}
console.log(this.form)
},
//
async getGrouplist(){
const res = await getgroupdepartmap()
this.grouplist=res.data
},
//
async getSystemadminlist(){
const from = {
id:309,
level: 4
}
const res = await getgroupuser(from)
this.grouplistBackup=res.data
this.grouplistBackup.forEach(item => {
if (item.govlist != null) {
// this.digui(item);
item.govlist.forEach(items => {
// forEach,itemthis.digui(item);
this.digui(items); //
//
console.log(items, '看我查看完整的数据哦')
// children
})
} else {
item.govlist=item.child
//
}
})
console.log(this.grouplistBackup,"获取员工列表-------------------------->")
},
//
async enterAddDialog(){
this.$refs.addForm.validate(async valid => {
if (valid) {
if(this.addDiaFormDatal.acceptdepartmentid!=null){
this.addDiaFormDatal.acceptdepartmentid=this.addDiaFormDatal.acceptdepartmentid.map(String)
}
this.addDiaFormDatal.cycleattr =parseInt(this.addDiaFormDatal.cycleattr)
// const res = await addtarget(this.form)
const res = await add_department_target(this.addDiaFormDatal)
if (res.code === 0) {
this.$message({
type: 'success',
message: '添加成功',
showClose: true
})
}
this.getDataList();
this.closeAddDialog();
}
})
},
//
async showEdit(row){
console.log("this.editAdd=====================>",row)
this.editFrom.id=row.outid
// const res = await gettargetinfo(this.editFrom)
const res = await get_one_terget_info(this.editFrom)
this.editAdd = res.data
console.log("this.editAdd")
console.log(this.editAdd)
this.editDialogFormVisible=true;
},
//
editCloseDialog() {
this.editInitForm()
this.editDialogFormVisible = false
},
//
editInitForm() {
this.$refs.editForm.resetFields()
this.editAdd = {}
},
//
async editEnterDialog(){
console.log("修改数据表单----》",this.editAdd)
this.$refs.editForm.validate(async valid => {
console.log("修改数据表单---1-》",this.editAdd)
console.log("修改数据表单---2-》",valid)
if (valid) {
console.log("修改数据表单---3-》",valid)
console.log(this.editAdd.relevantdepartments)
if (this.editAdd.share==1) {
this.editAdd.relevantdepartments=[]
this.editAdd.relevantdepartmentsmap=[]
this.$delete(this.editAdd,'relevantdepartments')
this.$delete(this.editAdd,'relevantdepartmentsmap')
}
var newDeaprtAry = new Array
this.editAdd.acceptdepartmentid.forEach(item=>{
newDeaprtAry.push(item.toString())
})
this.editAdd.acceptdepartmentid = newDeaprtAry
this.editAdd.report=this.editAdd.reportmap
this.editAdd.dimension=this.editAdd.dimensionidstr;
this.editAdd.cycleattr =parseInt(this.editAdd.cycleattr)
const res = await edit_one_target(this.editAdd)
if (res.code === 0) {
this.$message({
type: 'success',
message: '编辑成功',
showClose: true
})
}
this.getDataList();
this.editCloseDialog();
}
})
},
//
relationCloseDialog(){
this.relationPost = false
},
//
showPost(row){
this.projectId=row.outid
this.relationPost=true
},
//
changeBm(index,id){
console.log("index:"+index+','+"id:"+id)
this.getPost(id)
},
//
async getPost(val) {
const from = {
organization: val.toString(),
page: 1,
pagesize: 1000000,
};
const res = await positionlist(from);
this.postList = res.data.list;
},
//
async getPostSubmitUser(departmentId){
},
//
addBumen(){
this.orglist.push({
// id
id:'',
//
child:[
{
// id
id:'',
//
child:[],
childCopy:[]
}
]
})
},
//
removeBumen(index){
console.log("index")
console.log(index)
this.orglist.splice(index,1);
},
//
jiaArrAddXi(index){
console.log("indexJia"+index)
console.log(this.orglist[index])
this.orglist[index].child.push({
// id
id:'',
//
child:[],
childCopy:[]
})
},
//
deleteAddXiList(index,row){
this.orglist[index].childCopy.splice(row.$index,1);
},
//
async associationPost(){
this.orglist.forEach(ele=>{
ele.child.forEach(item=>{
ele.id=ele.id.toString()
item.childCopy.forEach(it=>{
item.child.push({id:it,child:[]})
})
})
})
console.log("this.orglist------------------>",this.orglist)
const from = {
id:this.projectId,
orglist:this.orglist
}
const res = await deparment_target_about_post(from);
this.relationPost=false
},
},
}
</script>
<style>
@import url("//unpkg.com/element-ui@2.15.10/lib/theme-chalk/index.css");
.page_body{
margin: 15px 0 0 0px;
}
</style>

152
src/views/basicCont/targetLayout.vue

@ -0,0 +1,152 @@
<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">
<gwProject :gwFromList="gwFromList" :gwId="gwId"></gwProject>
</div>
<div v-if="departShow">
<department :bmId="bmId"></department>
</div>
</el-scrollbar>
</el-main>
</el-container>
</template>
<script>
import { govthree, positionlist } from "@/api/personnel/post";
import { dutyclasslist } from "@/api/duty/dimension";
import gwProject from "@/views/basicInfo/gwProject.vue";
import department from "@/views/basicCont/departTarget.vue";
import {
posttargetlist,
addtarget,
gettargetinfo,
eiteassessinfo,
eitetarget,
deltarget,
editposttarget,
editstate,
addposttarget,
} from "@/api/duty/project";
import { getgroupdepartmap, getgroupuser } from "@/api/duty/group";
export default {
components: {
// project,
department,
gwProject
},
name: "Dashboard",
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;
}
</style>

3
src/views/basicInfo/gwProject copy.vue

@ -635,7 +635,8 @@ export default {
// //
async getGovthree2() { async getGovthree2() {
const res = await govthree(); const res = await govthree();
this.GovthreeList2 = res.data[0].child; // this.GovthreeList2 = res.data[0].child;
this.GovthreeList2 = res.data
console.log("this.GovthreeList2"); console.log("this.GovthreeList2");
console.log(res.data[0].child); console.log(res.data[0].child);
}, },

5
src/views/basicInfo/gwProject.vue

@ -475,6 +475,7 @@
import { govthree, positionlist } from "@/api/personnel/post"; import { govthree, positionlist } from "@/api/personnel/post";
import { dutyclasslist } from "@/api/duty/dimension"; import { dutyclasslist } from "@/api/duty/dimension";
import project from "@/views/basicInfo/project.vue"; import project from "@/views/basicInfo/project.vue";
import department from "@/views/basicCont/departTarget.vue";
import { import {
posttargetlist, posttargetlist,
addtarget, addtarget,
@ -492,6 +493,7 @@ import { get_post_target } from '@/api/duty/projectNew'
export default { export default {
components: { components: {
project, project,
department
}, },
name: "Dashboard", name: "Dashboard",
props:['gwId','gwFromList'], props:['gwId','gwFromList'],
@ -738,7 +740,8 @@ export default {
// //
async getGovthree2() { async getGovthree2() {
const res = await govthree(); const res = await govthree();
this.GovthreeList2 = res.data[0].child; // this.GovthreeList2 = res.data[0].child;
this.GovthreeList2 = res.data
console.log("this.GovthreeList2"); console.log("this.GovthreeList2");
console.log(res.data[0].child); console.log(res.data[0].child);
}, },

10
src/views/basicInfo/project.vue

@ -258,7 +258,7 @@
<el-input v-model="editAdd.unit" autocomplete="off" /> <el-input v-model="editAdd.unit" autocomplete="off" />
</el-form-item> </el-form-item>
<el-form-item label="数据提交" prop="report"> <el-form-item label="数据提交" >
<el-cascader filterable clearable v-model="editAdd.userlist" :options="grouplistBackup" :show-all-levels="false" :props="userProps"></el-cascader> <el-cascader filterable clearable v-model="editAdd.userlist" :options="grouplistBackup" :show-all-levels="false" :props="userProps"></el-cascader>
</el-form-item> </el-form-item>
<el-form-item label="辅助计数" prop="cycleattr"> <el-form-item label="辅助计数" prop="cycleattr">
@ -290,7 +290,7 @@
</el-dialog> </el-dialog>
<!-- 关联岗位弹框 --> <!-- 关联岗位弹框 -->
<el-dialog :close-on-click-modal="false" :visible.sync="gwShow" :before-close="addCloseDialog" title="关联岗位" width="40%"> <el-dialog :close-on-click-modal="false" :visible.sync="gwShow" :before-close="addCloseDialog" title="关联岗位" width="40%">
<el-form ref="editForm" :model="editAdd" :rules="editRules" label-width="150px"> <el-form ref="editPostForm" :model="editAdd" :rules="editRules" label-width="150px">
<el-form-item <el-form-item
v-for="(iteam, index) in orglist" v-for="(iteam, index) in orglist"
label="部门" label="部门"
@ -634,7 +634,7 @@ export default {
// //
} }
}) })
console.log(this.grouplistBackup) console.log(this.grouplistBackup,"获取员工列表-------------------------->")
}, },
// //
async getGrouplist(){ async getGrouplist(){
@ -769,8 +769,12 @@ export default {
// //
async editEnterDialog(){ async editEnterDialog(){
console.log("修改数据表单----》",this.editAdd)
this.$refs.editForm.validate(async valid => { this.$refs.editForm.validate(async valid => {
console.log("修改数据表单---1-》",this.editAdd)
console.log("修改数据表单---2-》",valid)
if (valid) { if (valid) {
console.log("修改数据表单---3-》",valid)
if(this.editAdd.relevantdepartmentsmap!=null){ if(this.editAdd.relevantdepartmentsmap!=null){
this.editAdd.relevantdepartments=this.editAdd.relevantdepartmentsmap.map(String) this.editAdd.relevantdepartments=this.editAdd.relevantdepartmentsmap.map(String)
} }

7
src/views/basicInfo/projectBase.vue

@ -8,7 +8,7 @@
<el-aside <el-aside
width="300px" width="300px"
style="border-right: 1px solid rgb(220, 223, 230);height: 750px" style="border-right: 1px solid rgb(220, 223, 230);height: 100%; min-height:750px"
> >
<el-tree <el-tree
:data="GovthreeList2" :data="GovthreeList2"
@ -18,7 +18,7 @@
</el-aside> </el-aside>
<el-aside <el-aside
width="200px" width="200px"
style="border-right: 1px solid rgb(220, 223, 230);height: 750px" style="border-right: 1px solid rgb(220, 223, 230);height: 100%; min-height:750px"
> >
<el-tree <el-tree
:data="postList" :data="postList"
@ -200,7 +200,8 @@ export default {
// //
async getGovthree2() { async getGovthree2() {
const res = await govthree(); const res = await govthree();
this.GovthreeList2 = res.data[0].child; // this.GovthreeList2 = res.data[0].child;
this.GovthreeList2 = res.data
console.log("this.GovthreeList2"); console.log("this.GovthreeList2");
console.log(res.data[0].child); console.log(res.data[0].child);
}, },

3
src/views/basicInfo/targetBase.vue

@ -201,7 +201,8 @@ export default {
// //
async getGovthree2() { async getGovthree2() {
const res = await govthree(); const res = await govthree();
this.GovthreeList2 = res.data[0].child; // this.GovthreeList2 = res.data[0].child;
this.GovthreeList2 = res.data
console.log("this.GovthreeList2"); console.log("this.GovthreeList2");
console.log(res.data[0].child); console.log(res.data[0].child);
}, },

3
src/views/hr/personnel.vue

@ -2152,7 +2152,8 @@ handleNodeClick(val){
// //
async getGovthree2(){ async getGovthree2(){
const res = await govthree() const res = await govthree()
this.GovthreeList2 = res.data[0].child // this.GovthreeList2 = res.data[0].child
this.GovthreeList2 = res.data
}, },
// //
async getGroup(){ async getGroup(){

2
src/views/permission/permissionSetting.vue

@ -117,6 +117,8 @@ export default {
name: 'Dashboard', name: 'Dashboard',
data() { data() {
return { return {
form:"",
dialogFormVisible:false,
radio:'', radio:'',
checkAll: false, checkAll: false,
checkedCities: ['暂存', '提交', '打印'], checkedCities: ['暂存', '提交', '打印'],

189
src/views/purview/postpower.vue

@ -0,0 +1,189 @@
<template>
<el-container>
<!-- 行政组织级 -->
<el-aside width="220px">
<el-scrollbar >
<el-tree style="margin-top:10px"
:data="orglist"
:props="treeStruct"
@node-click="clickOrg"
></el-tree>
</el-scrollbar>
</el-aside>
<el-aside width="200px">
<el-tree style="margin-top:10px"
:data="postList"
:props="treeStruct"
@node-click="clickPost"
></el-tree>
</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-scrollbar style="max-height:95%">
<el-table
:data="systemMenuList"
style="width: 100%;margin-bottom: 20px;"
row-key="id"
border
default-expand-all
:tree-props="{children: 'child', hasChildren: 'hasChildren'}">
<el-table-column
label="菜单名称"
width="180">
<template slot-scope="scope">
<el-checkbox v-model="scope.row.istrue" :label="scope.row.name"></el-checkbox>
</template>
</el-table-column>
<el-table-column
label="操作"
>
<template slot-scope="scope">
<el-checkbox v-model="mItem.istrue" v-for="(mItem,mIndex) in scope.row.menuOperation" :label="mItem.name" :key="mIndex"></el-checkbox>
</template>
</el-table-column>
</el-table>
<el-button type="primary" :loading="buttonLoading" @click="subewport">确定授权</el-button>
</el-scrollbar>
</el-main>
</el-container>
</template>
<script>//systemaccredit
import { govthree, positionlist } from "@/api/personnel/post"; //
import { getsystemlist,getSystemMenuThree } from "@/api/systemaccredit/systemapi"; //
//
export default {
data () {
return {
buttonLoading:false,
choiceSystem:'kpi',
systemList:[],
//
orgAndPost:{
orgId:0,
postId:0
},
//
treeStruct: {
children: "child",
label: "name",
},
orglist:[], //
postList:[], //
systemMenuList:[], //
}
},
created() {
//
this.getOrgThree(); //
this.systemInit(); //
},
methods: {
//
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(); //
},
//
async getOrgThree(){
const res = await govthree();
this.orglist = res.data
},
//
clickOrg(val){
this.getPost(val.id);
this.orgAndPost.orgId = val.id;
},
//
async getPost(val) {
const from = {
organization: val.toString(),
page: 1,
pagesize: 10,
};
const res = await positionlist(from);
this.postList = res.data.list;
},
//
clickPost(val){
this.orgAndPost.postId = val.id;
this.getAboutSystemMenu()
},
//
//
systemChange(val){
console.log("选择系统-----》",val)
},
//
async getAboutSystemMenu(){
const from = {
name: this.choiceSystem,
ordid:this.orgAndPost.orgId.toString(),
postid:this.orgAndPost.postId.toString(),
};
const res = await getSystemMenuThree(from);
console.log("系统菜单树-----》",res)
res.data.forEach(item =>{
console.log("系统菜单树-----》",item)
})
this.systemMenuList = res.data;
},
//
subewport(){
this.buttonLoading = true
console.log("提交授权-----》",this.systemMenuList)
}
},
}
</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;
}
</style>
Loading…
Cancel
Save