|  | @@ -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%;
 |