|
@@ -25,23 +25,23 @@
|
|
|
<div class="flex-box flex-v-ce">
|
|
|
<div class="name">{{ item_info.name }}</div>
|
|
|
<div class="flex-1"></div>
|
|
|
- <el-button type="primary" size="medium" plain @click="open_right(item_info)">刷新</el-button>
|
|
|
+ <el-button type="text" size="medium" style=" padding: 0; line-height: initial;" v-show="item_info.code !== 'creator'" @click="dataAccessPopup">数据查看权限</el-button>
|
|
|
+ <el-button type="text" size="medium" plain @click="open_right(item_info)">刷新</el-button>
|
|
|
</div>
|
|
|
- <div class="user_text fontColorF" v-if="item_info.code == 'creator'">创始人默认为开通【功道云积分制】的人</div>
|
|
|
- <div class="user_text fontColorF" v-if="item_info.code == 'admin'">公司管理员即钉钉的【子管理员】,在钉钉管理后台设置后即可同步</div>
|
|
|
+ <div class="user_text fontColorF" v-if="item_info.code == 'creator'">创始人默认为开通【功道云积分制】的人,拥有所有的功能及管理权限</div>
|
|
|
+ <div class="user_text fontColorF" v-if="item_info.code == 'admin'">公司管理员一般为合伙人、股东等高级管理人员,可管理多个部门和人员</div>
|
|
|
<div class="user_text fontColorF" v-if="item_info.code == 'point_manager'">积分专员一般为人事、行政等管理督办人员,可管理多个部门和人员</div>
|
|
|
<div class="user_text fontColorF" v-if="item_info.code == 'dept_manager'">部门管理员一般为部门/团队经理、主管、组长,可管理一部分人员</div>
|
|
|
<div class="user_text fontColorF" v-if="item_info.code == 'employee'">员工为默认角色,每个人都拥有员工角色的功能权限,该角色不可修改</div>
|
|
|
</div>
|
|
|
<div class="flex-box btns flex-v-ce margin-bottom">
|
|
|
- <el-button size="small" v-show="item_info.code == 'creator' && table_list.length > 1 && isStart" @click="del_creator" type="danger">删除</el-button>
|
|
|
- <el-button size="small" v-show="item_info.code == 'creator' && isStart" @click="dialogFormVisible=true" type="primary">添加</el-button>
|
|
|
-
|
|
|
- <el-button size="small" v-show="item_info.code != 'creator' && table_list.length > 0" @click="del_item" type="danger">删除</el-button>
|
|
|
- <el-button size="small" v-show="item_info.code != 'creator'" @click="add_item" type="primary">添加</el-button>
|
|
|
+ <el-button size="small" v-show="item_info.code == 'creator' && table_list.length > 1 && isStart" @click="del_creator" type="danger">删除</el-button>
|
|
|
+ <el-button size="small" v-show="item_info.code == 'creator' && isStart" @click="dialogFormVisible=true" type="primary">添加</el-button>
|
|
|
+ <el-button size="small" v-show="item_info.code != 'creator' && table_list.length > 0" @click="del_item" type="danger">删除</el-button>
|
|
|
+ <el-button size="small" v-show="item_info.code != 'creator'" @click="add_item" type="primary">添加</el-button>
|
|
|
</div>
|
|
|
<div v-if="item_info.code == 'creator'||item_info.code == 'employee'">
|
|
|
- <el-table :data="table_list" v-loading="table_loading" v-if="table_list.length > 0">
|
|
|
+ <el-table :data="table_list" v-loading="table_loading">
|
|
|
<el-table-column width="40" fixed v-if="item_info.code == 'creator' && table_list.length > 1 && isStart">
|
|
|
<template slot-scope="scope">
|
|
|
<el-radio v-model="radioVal" :label="scope.row.id"></el-radio>
|
|
@@ -61,13 +61,13 @@
|
|
|
<template v-slot:default>
|
|
|
<div style="position: inherit;">
|
|
|
还没有{{ item_info.name }},
|
|
|
- <span style="color:#26A2FF;cursor:pointer;" @click="add_item">去添加>></span>
|
|
|
+ <span style="color:#26A2FF;cursor:pointer;" @click="dialogFormVisible=true">去添加>></span>
|
|
|
</div>
|
|
|
</template>
|
|
|
</noData>
|
|
|
</template>
|
|
|
</el-table>
|
|
|
- <div v-else style="text-align: center;">
|
|
|
+<!-- <div v-else style="text-align: center;">
|
|
|
<template>
|
|
|
<div style="margin-top: 10%;margin-bottom: 10px;">
|
|
|
创始人即钉钉的主管理员,请确认应用的使用范围中是否选择了主管理员设置步骤:
|
|
@@ -76,7 +76,7 @@
|
|
|
进入【<span class="blue">钉钉管理后台</span>】→【<span class="blue">工作台</span>】→【<span class="blue">功道云积分制</span>】→【<span class="blue">设置</span>】,修改可见范围为全部员工或从部分员工中选上主管理员
|
|
|
</div>
|
|
|
</template>
|
|
|
- </div>
|
|
|
+ </div> -->
|
|
|
</div>
|
|
|
|
|
|
<el-table :data="table_list" fit v-else v-loading="table_loading">
|
|
@@ -408,13 +408,33 @@
|
|
|
:can_select_dept="false"
|
|
|
@confirm="selectBoss">
|
|
|
</EmployeeSelector>
|
|
|
- <div style="text-align: center;" class="fontColorT">创始人至少有一位,创始人不能删除增加</div>
|
|
|
+ <div style="text-align: center;" class="fontColorT">创始人至少有一位,创始人不能删除自己</div>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
<el-button @click="dialogFormVisible=false" :disabled="isShowBoss">取 消</el-button>
|
|
|
<el-button type="primary" :loading="isShowBoss" :disabled="isShowBoss" @click="add_creator()">确 定</el-button>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
-
|
|
|
+ <!-- 查看管理范围 -->
|
|
|
+ <el-dialog
|
|
|
+ title="数据查看权限"
|
|
|
+ :visible.sync="dataAccessShow"
|
|
|
+ width="600px">
|
|
|
+ <div v-loading="dataAccessLoading">
|
|
|
+ <el-form label-width="120px">
|
|
|
+ <el-form-item v-for="(item,index) in jurisdiction" :key="index" :label="item.title">
|
|
|
+ <el-radio-group v-model="item.code">
|
|
|
+ <el-col :span="24" v-for="(d,index) in item.list" :key="index" style="padding: 10px 0" >
|
|
|
+ <el-radio :label="d.id" class="radioBox" >{{d.name}}</el-radio>
|
|
|
+ </el-col>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ <span slot="footer">
|
|
|
+ <el-button :disabled="setDataAccessBtn" @click="dataAccessShow = false">取消</el-button>
|
|
|
+ <el-button :disabled="setDataAccessBtn" type="primary" @click="setDataAccess">确定</el-button>
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -479,7 +499,74 @@ export default {
|
|
|
// BOSS操作
|
|
|
dialogFormVisible:false,//控制添加老板弹窗
|
|
|
bossObj:'',
|
|
|
- isShowBoss:false
|
|
|
+ isShowBoss:false,
|
|
|
+
|
|
|
+ // 控制管理范围
|
|
|
+ dataAccessShow: false,
|
|
|
+ setDataAccessBtn: false,
|
|
|
+ dataAccessLoading: false,
|
|
|
+ jurisdiction:[],
|
|
|
+ // 除员工外权限范围数据
|
|
|
+ dataAccessList: [
|
|
|
+ {
|
|
|
+ title: '查看积分事件',
|
|
|
+ name: 'event_range',
|
|
|
+ code: 0,
|
|
|
+ list: [
|
|
|
+ {name: '仅查看自己的数据', id: 1},
|
|
|
+ {name: '查看自己以及管理范围内用户的数据', id: 2},
|
|
|
+ {name: '查看全员数据', id: 3}
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '管理者奖扣',
|
|
|
+ name: 'prize_range',
|
|
|
+ code: 0,
|
|
|
+ list: [
|
|
|
+ {name: '查看自己以及管理范围内管理者的数据', id: 1},
|
|
|
+ {name: '查看全部管理者的数据', id: 2},
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ // {
|
|
|
+ // title: '团队绩效',
|
|
|
+ // name: 'performance_range',
|
|
|
+ // code: 0,
|
|
|
+ // list: [
|
|
|
+ // {name: '查看自己以及管理范围内用户的数据', id: 1},
|
|
|
+ // {name: '查看全员数据', id: 2},
|
|
|
+ // ]
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // title: '团队数据',
|
|
|
+ // name: 'statistics_range',
|
|
|
+ // code: 0,
|
|
|
+ // list: [
|
|
|
+ // {name: '查看自己以及管理范围内用户的数据', id: 1},
|
|
|
+ // {name: '查看全员数据', id: 2},
|
|
|
+ // ]
|
|
|
+ // },
|
|
|
+ ],
|
|
|
+ // 员工权限范围数据
|
|
|
+ dataAccessListEmployee: [
|
|
|
+ {
|
|
|
+ title: '积分事件',
|
|
|
+ name: 'event_range',
|
|
|
+ code: 0,
|
|
|
+ list: [
|
|
|
+ {name: '看自己的', id: 2},
|
|
|
+ {name: '查看全员数据', id: 3}
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '团队绩效',
|
|
|
+ name: 'performance_range',
|
|
|
+ code: 0,
|
|
|
+ list: [
|
|
|
+ {name: '仅查看自己的数据', id: 1},
|
|
|
+ {name: '查看全员数据', id: 2},
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
};
|
|
|
},
|
|
|
components: { EmployeeSelector, noData },
|
|
@@ -496,6 +583,67 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
+ // 数据查看权限弹窗
|
|
|
+ dataAccessPopup(){
|
|
|
+ this.dataAccessShow = true
|
|
|
+ this.getDataAccess()
|
|
|
+ },
|
|
|
+ // 获取数据范围权限
|
|
|
+ getDataAccess(){
|
|
|
+ let self = this
|
|
|
+ self.dataAccessLoading = true
|
|
|
+ self.$axios('get','/api/role/range',{role_id: self.item_info.id}).then((res) => {
|
|
|
+ if (res.data.code == 1) {
|
|
|
+ const resData = res.data.data
|
|
|
+ if(this.item_info.id != '909'){
|
|
|
+ self.dataAccessList.forEach(element => {
|
|
|
+ element.name == 'event_range'?element.code = resData.event_range:''
|
|
|
+ element.name == 'prize_range'?element.code = resData.prize_range:''
|
|
|
+ element.name == 'performance_range'?element.code = resData.performance_range:''
|
|
|
+ element.name == 'statistics_range'?element.code = resData.statistics_range:''
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ self.dataAccessListEmployee.forEach(element => {
|
|
|
+ element.name == 'event_range'?element.code = resData.event_range:''
|
|
|
+ element.name == 'performance_range'?element.code = resData.performance_range:''
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ self.$message.error(res.data.msg)
|
|
|
+ }
|
|
|
+ }).finally(()=>{
|
|
|
+ self.dataAccessLoading = false
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 设置数据范围权限
|
|
|
+ setDataAccess(){
|
|
|
+ let self = this
|
|
|
+ let data = {
|
|
|
+ role_id: self.item_info.id
|
|
|
+ }
|
|
|
+ self.setDataAccessBtn = true
|
|
|
+ self.jurisdiction.forEach(element => {
|
|
|
+ data[element.name] = element.code
|
|
|
+ });
|
|
|
+ if(self.item_info.id == '909'){
|
|
|
+ data.prize_range = '1',
|
|
|
+ data.statistics_range = '1'
|
|
|
+ }
|
|
|
+ data.performance_range="1";
|
|
|
+ data.statistics_range="1";
|
|
|
+ self.$axios('post','/api/role/range',data).then((res) => {
|
|
|
+ if (res.data.code == 1) {
|
|
|
+ self.dataAccessShow = false
|
|
|
+ self.$message.success(res.data.msg)
|
|
|
+ }else{
|
|
|
+ self.$message.error(res.data.msg)
|
|
|
+ }
|
|
|
+ }).finally(()=>{
|
|
|
+ self.setDataAccessBtn = false
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
selectBoss(val){
|
|
|
if(val.employee.length>0){
|
|
|
this.bossObj=val.employee[0].id
|
|
@@ -751,6 +899,7 @@ export default {
|
|
|
});
|
|
|
},
|
|
|
open_right(data) {
|
|
|
+ this.jurisdiction=data.code=='employee'? this.dataAccessListEmployee:this.dataAccessList;
|
|
|
this.item_info = data;
|
|
|
this.get_table_list();
|
|
|
},
|
|
@@ -774,10 +923,9 @@ export default {
|
|
|
});
|
|
|
this.table_list = list||[];
|
|
|
}
|
|
|
- })
|
|
|
- .finally(() => {
|
|
|
- this.table_loading = false;
|
|
|
- });
|
|
|
+ }).finally(() => {
|
|
|
+ this.table_loading = false;
|
|
|
+ });
|
|
|
},
|
|
|
// 关闭提示语
|
|
|
tips_close() {
|
|
@@ -792,6 +940,9 @@ export default {
|
|
|
::v-deep .el-radio .el-radio__label {
|
|
|
display: none;
|
|
|
}
|
|
|
+::v-deep .radioBox .el-radio__label {
|
|
|
+ display: inline-block;
|
|
|
+}
|
|
|
.tips {
|
|
|
background: #dcdfe6;
|
|
|
border-radius: 50%;
|