Browse Source

'1.1.2.6'

哥哥玩剑魂呢 4 years ago
parent
commit
ac29972a95

+ 1 - 0
src/components/season.vue

@@ -118,6 +118,7 @@
     box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
     background: #fff;
     padding: 5px;
+    padding-right: 20px;
   }
 
   .show1 p:nth-child(1) {

+ 5 - 5
src/home.vue

@@ -1286,11 +1286,11 @@ export default {
     //     manage_scope: [{"id": 164,"name": "刘瑞欣"},{"id": 165,"name": "方慧毅"},{"id": 166,"name": "郭家裕(创始人)"},{"id": 184,"name": "莫仕钊"},{"id": 185,"name": "秦杨升"}],
     //     permission_list: [],
     //     role_list: [
-    //       { id: 15, name: 'employee', remark: '员工' },
-    //       { id: 12, name: 'admin', remark: '公司管理员' },
-    //       { id: 14, name: 'dept_manager', remark: '部门管理者' },
-    //       { id: 13, name: 'point_manager', remark: '积分管理员' },
-    //     //   { id: 11, name: 'creator', remark: '创始人' }
+        //   { id: 15, name: 'employee', remark: '员工' },
+        //   { id: 12, name: 'admin', remark: '公司管理员' },
+        //   { id: 14, name: 'dept_manager', remark: '部门管理者' },
+        //   { id: 13, name: 'point_manager', remark: '积分管理员' },
+        //   { id: 11, name: 'creator', remark: '创始人' }
     //     ],
     //     superior_list: [{id: 164,name: "刘瑞欣"},
 	// 			{id: 165,name: "方慧毅"},

+ 1 - 1
src/views/abPoint/award_punish.vue

@@ -179,7 +179,7 @@
 								</template>
 								<template slot="description" style="display:flex;">
 									<div style="color:rgb(130 130 130);">{{ item.time }}</div>
-									<div style="color:rgb(113 113 113);font-size:14px;">{{item.review_remark}}</div>
+									<div style="color:rgb(113 113 113);font-size:14px;margin-bottom:15px;">{{item.review_remark}}</div>
 								</template>
 							</el-step>
 						</el-steps>

+ 1017 - 0
src/views/ranking/custom_rank code.vue

@@ -0,0 +1,1017 @@
+<template>
+	<div class="all-box">
+		<div class="all">
+			<div class="flex-box" v-loading="groups_loading">
+				<div class="terr-left">
+					<el-button v-if="employeeOrdept" size="medium" @click="addGroup" type="primary">新建分组</el-button>
+					<el-menu default-active="0" class="el-menu-vertical-demo" style="border: none" v-if="groups_list.length>0">
+						<el-menu-item
+							style="height: 47px;line-height: 47px;"
+							:index="index.toString()"
+							class="font-flex-word"
+							v-for="(item, index) in groups_list"
+							:key="index"
+							@click="open_right(item)"
+							v-show="item.code !== 'employee'"
+						>
+							<i class="el-icon-document-copy"></i>
+							<span slot="title">{{ item.name }}</span>
+						</el-menu-item>
+					</el-menu>
+					<div v-else style="text-align: center;margin-top: 10%;" class="fontColorF">
+						<img src="@/assets/image/nodata.png" style="width: 180px;height: 120px;margin: 30px auto;">
+						还没有自定义分组
+					</div>
+				</div>
+				<div class="terr-right border-right flex-1" v-loading="table_loading">
+					<div class="listData" v-if="table_list.length > 0">
+						<div class="flex-box">
+							<div class="flex-box flex-v-ce margin-bottom">
+								<div class="groupsName">{{groups_info.name}}<span class="blue">({{total}}人)</span></div>
+								<el-button v-if="employeeOrdept" @click="editGroup" size="medium">编辑</el-button>
+							</div>
+						</div>
+						<!-- form -->
+						<el-form :model="params" :inline="true" ref="params">
+							<!-- <el-form-item label="时间" label-width="40px">
+								<el-date-picker v-model="params.month"  size="medium" type="month" placeholder="请选择月份" value-format="yyyy-MM"></el-date-picker>
+							</el-form-item> -->
+
+							<el-form-item label="月份" label-width="40px" v-if="newGroupForm.date_interval == 1">
+								<el-date-picker v-model="time.month" type="month" :clearable="false" placeholder="请选择月份" value-format="yyyy-MM"></el-date-picker>
+							</el-form-item>
+
+							<el-form-item label="年份" label-width="40px" v-if="newGroupForm.date_interval == 3">
+								<el-date-picker v-model="time.year" type="year" :clearable="false" placeholder="请选择年份" value-format="yyyy"></el-date-picker>
+							</el-form-item>
+							<el-form-item label="季度" label-width="40px" v-if="newGroupForm.date_interval == 2">
+								<!-- <el-date-picker
+								v-model="time.quarter"
+								type="month"
+								placeholder="请选择季度"
+								value-format="Q"
+								></el-date-picker> -->
+
+								<Season :defaultHint="true" :isActive="true" class="date-picker-width" @confirm="export_quarter_confirm"></Season>
+							</el-form-item>
+
+							<el-form-item>
+								<el-checkbox v-model="sort" size="medium" label="由低到高" border></el-checkbox>
+							</el-form-item>
+						</el-form>
+						<!-- 表格 -->
+						<el-table :data="table_list" style="width: 100%" >
+							<el-table-column label="名次" width="80" align="center">
+								<template slot-scope="scope">
+									<img v-if="scope.row.rank === 1" src="@/assets/image/statistics_NO1.png" alt="" />
+									<img v-if="scope.row.rank === 2" src="@/assets/image/statistics_NO2.png" alt="" />
+									<img v-if="scope.row.rank === 3" src="@/assets/image/statistics_NO3.png" alt="" />
+									<span v-if="scope.row.rank > 3">{{ scope.row.rank }}</span>
+								</template>
+							</el-table-column>
+							<el-table-column label="姓名" align="left">
+								<template slot-scope="scope">
+									<div class="flex-box">
+										<userImage	class="fl" :user_name="scope.row.name"	:img_url="scope.row.img_url" width="50px" height="50px"></userImage>
+										<span style="line-height: 50px; padding-left: 10px;">{{ scope.row.name }}</span>
+									</div>
+								</template>
+							</el-table-column>
+							<el-table-column label="B分" align="left" prop="point"></el-table-column>
+							<template slot="empty">
+								<noData></noData>
+							</template>
+						</el-table>
+						<center style="padding: 20px 0;">
+							<el-pagination
+								background
+								@size-change="handleSizeChange"
+								@current-change="handleCurrentChange"
+								:page-sizes="[10, 20, 30, 40, 50, 100]"
+								layout="total, sizes, prev, pager, next"
+								:page-size="params.page_size"
+								:current-page="params.page"
+								:total="total">
+							</el-pagination>
+						</center>
+					</div>
+					<div v-else style="margin-top: 10%;">
+						<noData :isSolt="true">
+							<template v-slot:default>
+								<div style="text-align: center;">还没有分组<span v-if="employeeOrdept">,</span><span v-if="employeeOrdept" style="color:#26A2FF;cursor:pointer" @click="addGroup">去添加 >></span></div>
+							</template>
+						</noData>
+					</div>
+				</div>
+			</div>
+		</div>
+		<!-- 新增编辑分组 -->
+		<el-dialog	:title="popupType? '新增分组':'编辑分组'" width="660px"  top="5%" :visible.sync="groupShow" @close="resetForm('newGroupForm')" :close-on-click-modal="false">
+			<el-form  ref="newGroupForm" :model="newGroupForm" :rules="rules" label-width="85px" @submit.native.prevent>
+				<el-form-item label="分组名称" prop="group_name">
+					<el-input v-model="newGroupForm.group_name" placeholder="请输入分组名称" :clearable="true"></el-input>
+				</el-form-item>
+				<el-form-item label="分组成员">
+				  <el-input v-model="employeeNames" placeholder="全部成员"></el-input>
+				  <div @click="isEmployeeShow=true" style="height:36px; position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;cursor:pointer"></div>
+				  <el-dialog title="选择人员" width="700px" :visible.sync="isEmployeeShow"  append-to-body :before-close="handleClose">
+					<EmployeeSelector
+						v-if="isEmployeeShow"
+						ref="Employee"
+						:user_no_select="false"
+						:can_select_dept="true"
+						:selected="employees_selected"
+						:close_clear_data="true"
+						@confirm="move_employee_confirm"/>
+						<span slot="footer" class="dialog-footer">
+							<el-button @click="isEmployeeShow = false">取 消</el-button>
+							<el-button type="primary" @click="submitEmployee()">确 定</el-button>
+						</span>
+				   </el-dialog>
+				   
+				</el-form-item> 
+				<el-form-item label="积分规则">
+				  <el-input v-model="newGroupFormRules" placeholder="全部规则分类"></el-input>
+				  <div @click="ruleDialogTableVisibles" style="height:36px; position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;cursor:pointer"></div>
+				  <div style="margin-bottom:12px;">
+				    <span style="font-size:13px;color:rgb(138 138 138);position: absolute; top: 30px; left: 0;">{{ruleHint}}</span>
+				  </div>
+				  <el-dialog title="选择规则" width="800px" :visible.sync="ruleDialogTableVisible" append-to-body :before-close="handleClose">
+					  <div style="display:flex;position: relative;width:100%;height:40px">
+						<span style="position: absolute;line-height:40px;left:20px">已选:{{ valuesOrLength.length }}条</span>
+						<el-input type="text" class="search" style="position: absolute;right:20px;width:20%" placeholder="输入关键字搜索" v-model.trim="keyword" />
+					  </div>
+					  <el-row class="architecture">
+						<el-col :span="8" class="RuleLeft" style="height:500px">
+						  <div  class="rule_class_box">
+							<el-tree
+							  ref="menum"
+							  class="cate-tree"
+							  node-key="id"
+							  :accordion="true"
+							  :highlight-current="true"
+							  :data="rule_trees"
+							  :default-expand-all="false"
+							  :props="defaultProps"
+							  :expand-on-click-node="false"
+							  @node-click="handleNodeClick"
+							>
+							  <div content="tree"  v-if="!data.dis"  v-show="rule_trees.length != 0"  slot-scope="{ node, data }">
+								<span class="name">{{ data.name }}</span>
+							  </div>
+							</el-tree>
+						  </div>
+						</el-col>
+						<el-col :span="16" class="RuleRight" v-loading="tableLoadingRule" style="height:500px;overflow-y:auto">
+						  <el-table
+							ref="multipleTable"
+							:data="tableData_rule"
+							tooltip-effect="dark"
+							style="width: 100%;cursor:pointer"
+							@select="onTableSelect"
+							@select-all="selectAll"
+							@cell-click="clicktable"
+						  >
+							<el-table-column type="selection" width="55"></el-table-column>
+							<el-table-column prop="remark" :label="'全选'" show-overflow-tooltip></el-table-column>
+						  </el-table>
+						</el-col>
+					  </el-row>
+					  <span slot="footer" class="dialog-footer">
+						<el-button @click="ruleDialogTableVisible = false">取 消</el-button>
+						<el-button type="primary" @click="ruleDialogTableVisibleQD">确 定</el-button>
+					  </span>
+				   </el-dialog>
+				</el-form-item>
+				
+				<el-form-item label="统计周期" label-width="85px" prop="date_interval" :show-message="false">
+				  <el-select v-model="newGroupForm.date_interval" placeholder="请选择周期">
+					<el-option v-for="item in options_time" :key="item.value" :label="item.label" :value="item.value"></el-option>
+				  </el-select>
+				</el-form-item>
+			</el-form>
+			<div class="flex-box flex-v-ce">
+				<el-button type="danger" v-if="!popupType" :disabled="delLoad" :loading="delLoad" @click="delItem">删除</el-button>
+				<div class="flex-1"></div>
+				<el-button @click="resetForm('newGroupForm')">取 消</el-button>
+				<el-button type="primary" :loading="saveLoad" :disabled="saveLoad" @click="subGroupForm('newGroupForm')">确 定</el-button>
+			</div>
+		</el-dialog>
+		
+	
+	</div>
+</template>
+
+<script>
+import EmployeeSelector from '@/components/EmployeeSelector.vue';
+import noData from '@/components/noData';
+import moment from 'moment'
+var selecteds = [];
+let selectionID = [];
+export default {
+	components: { EmployeeSelector, noData },
+	data() {
+		return {
+			page: 1,
+			page_size: 10,
+			total: null,
+			tips_show:false,
+			groups_list:[],
+			groups_loading:false,
+			table_loading:false,
+			table_list:[],
+			time: {
+				year: moment().format('YYYY'), //年
+				quarter: moment().format('YYYYQ'), //季度
+				month: moment().format('YYYY-MM') //月
+			},
+			groups_info: {
+				name:'',
+				employees: []
+			},
+			// 
+			params:{
+				page: 1,
+				page_size: 10,
+				group_id: '',
+				// month: moment().format('YYYY-MM'),
+				sort: 'asc',
+				// rule_id: '',
+			},
+			rule_trees: [],
+      		clickItem: null,
+			groupShow: false,
+			rules: { 
+				group_name: [{ required: true, message: '请输入分组名称', trigger: 'blur' },{ min: 2, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' }],
+				date_interval: [{ required: true, message: '请选择周期', trigger: 'change' }],
+			},
+			newGroupForm:{
+				group_name: "",
+				employees: [],
+				items:[],
+				date_interval:"1",
+			},
+			saveLoad: false,
+			delLoad: false,
+			show_employee_selector: false,
+			employee_not_select: [],
+			employees_selected: {employee:[], dept: []},
+			props:{checkStrictly: true,value: 'id', label: 'name',children:'child'},
+			sort: false,
+			
+			popupType: false,
+			
+			// 添加分组(第二期内容添加)
+			ruleDialogTableVisible:false,
+			defaultProps: {
+			  children: 'child',
+			  label: 'name'
+			},
+			tableLoadingRule:false,
+			tableData_rule: [],
+			options_time_value: '',
+			options_time: [
+			  {
+			    value: '1',
+			    label: '月度'
+			  },
+			  {
+			    value: '2',
+			    label: '季度'
+			  },
+			  {
+			    value: '3',
+			    label: '年度'
+			  }
+			],
+			newGroupFormRules:'',
+			ruleHint:'统计所有积分(基础分和工龄分除外)',
+			valuesOrLength: [],
+			keyword:'',
+			treedata: [],
+			isEmployeeShow:false,
+			employeeNames:'',
+			employeeOrdept:!this.$authoritys('employee') && !this.$authoritys('dept_manager'),
+		};
+	},
+	created() {
+		this.getRuleList();
+		this.get_groups_list(true);
+	},
+	watch:{
+		'params.rule_id'(){
+			this.$refs.rule.dropDownVisible = false;
+		},
+		
+		'time.month'(val, old_val) {
+			this.time.month = val;
+			this.params.page = 1;
+			this.open_right(this.clickItem);
+		},
+		'time.year'(val, old_val) {
+			this.time.year = val;
+			this.params.page = 1;
+			this.open_right(this.clickItem);
+		},
+		// 'params.month'(val,old_val){
+		// 	this.page = 1
+		// 	this.open_right()
+		// },
+		'sort'(val){
+			this.params.page = 1;
+			val ? (this.params.sort = 'desc') : (this.params.sort = 'asc');
+			this.open_right(this.clickItem);
+		},
+		keyword() {
+		  //函数节流
+		  if (this.timer) {
+		    clearTimeout(this.timer);
+		  }
+		  //清空 全部
+		  if (!this.keyword) {
+		    this.tableData_rule = this.tableData_rule2;
+		    this.ifPitchOnChild(this.tableData_rule, selecteds);
+		    return;
+		  }
+		  this.timer = setTimeout(() => {
+		    const result = [];
+		    this.tableData_rule2.forEach(val => {
+		      if (val.remark.indexOf(this.keyword) > -1) {
+		        result.push(val);
+		      }
+		    });
+		    this.tableData_rule = result;
+		    this.ifPitchOnChild(this.tableData_rule, selecteds);
+		  }, 100);
+		}
+	},
+	mounted() {
+
+	},
+	methods: {
+		// 第二期内容
+		
+		//
+		submitEmployee(){
+			this.$refs.Employee.confirm();//调用组件的confirm();
+		},
+		//点击规则弹出窗口
+		ruleDialogTableVisibles() {
+		  this.tableLoadingRule = true;
+		  selecteds = this.valuesOrLength;
+		  //点击弹出窗口并展示所有数据
+		  let tableData_r = [];
+		  for (let i in this.itemList) {
+		    for (let a in this.itemList[i]) {
+		      tableData_r.push(this.itemList[i][a]);
+		    }
+		  }
+		  this.tableData_rule2 = tableData_r; //赋予筛选数据
+		  this.tableData_rule = tableData_r;
+		  this.ruleDialogTableVisible = true;
+		  this.ifPitchOnChild(this.tableData_rule, selecteds);
+		},
+		
+		//规则弹窗确定
+		ruleDialogTableVisibleQD() {
+		  let valuesLengths = [];
+		  for (let i in selecteds) {
+		    valuesLengths.push(selecteds[i]);
+		  }
+		  this.valuesOrLength = valuesLengths;
+		  this.newGroupForm.items = this.valuesOrLength;
+		  if (this.valuesOrLength.length >= 1) {
+		    this.newGroupFormRules = this.valuesOrLength.length + '条规则';
+		    this.ruleHint = '统计已选规则的积分(只选分类不指定规则的积分除外)'
+		  } else {
+		    this.newGroupFormRules = '';
+		    this.ruleHint = '统计所有积分(基础分和工龄分除外)'
+		  }
+		  this.ruleDialogTableVisible = false;
+		},
+		//点击某行
+		clicktable(row, column, cell, event) {
+		  let selectedsif = false;
+		  for (let i in selecteds) {
+		    if (row.id == selecteds[i]) {
+		      selectedsif = true;
+		      selecteds.splice(i, 1);
+		      this.toggleSelection([row], false);
+		    }
+		  }
+		  if (selectedsif == false) {
+		    selecteds.push(row.id);
+		    this.ifPitchOnChild(this.tableData_rule, selecteds);
+		  }
+		},
+		//全选
+		selectAll(selection) {
+		  for (let i in selection) {
+		    selectionID.push(selection[i].id);
+		  }
+		  let tableData_rules = []; //当前分页id
+		  for (let i in this.tableData_rule) {
+		    tableData_rules.push(this.tableData_rule[i].id);
+		  }
+		  selectionID = [...new Set(selectionID)];
+		  if (selection.length == 0) {
+		    //全不选
+		    var diff = [];
+		    var tmp = tableData_rules;
+		    selectionID.forEach(function(val1, i) {
+		      if (tableData_rules.indexOf(val1) < 0) {
+		        diff.push(val1);
+		      } else {
+		        tmp.splice(tmp.indexOf(val1), 1);
+		      }
+		    });
+		    selectionID = diff.concat(tmp);
+		  }
+		  selecteds = [...new Set(selectionID)];
+		  this.valuesOrLength = selecteds;
+		},
+		onTableSelect(rows, row) {
+		  let selected = rows.length && rows.indexOf(row) !== -1;
+		  if (selected) {
+		    selecteds.push(row.id);
+		  } else {
+		    for (let i in selecteds) {
+		      if (row.id == selecteds[i]) {
+		        selecteds.splice(i, 1);
+		      }
+		    }
+		  }
+		},
+		//关闭
+		handleClose(done) {
+		  done();
+		},
+		// 选择时间-季度
+		export_quarter_confirm(val) {
+		this.time.quarter = val;
+		this.params.page = 1;
+		console.log("1")
+		this.open_right(this.clickItem);
+		},
+		//此方法:拿到当前点击规则分类的所有子节点ID,(为了包含子分类 规则)
+		menuIdInit(menus) {
+		  var _this = this;
+		  var _menu = menus;
+		  var menuId = [];
+		  var len = _menu.length;
+		  for (var i = 0; i < len; i++) {
+		    var item = _menu[i];
+		    if (item.child && item.child.length != 0) {
+		      var child = item.child;
+		      for (var j = 0; j < child.length; j++) {
+		        _menu[len + j] = child[j];
+		      }
+		      len = _menu.length;
+		    }
+		    menuId.push(item.id);
+		  }
+		  return menuId;
+		},
+		//点击规则分类
+		handleNodeClick(data) {
+		  let dataArr = this.menuIdInit([data]); //调用方法
+		  this.tableLoadingRule = true;
+		  this.keyword = ''; //切换规则重置搜索框
+		  let tableData_r = [];
+		  for (let i in this.itemList) {
+		    for (let a in this.itemList[i]) {
+		      for (let x in dataArr) {
+		        if (dataArr[x] == this.itemList[i][a].rule_id) {
+		          tableData_r.push(this.itemList[i][a]);
+		        }
+		      }
+		    }
+		  }
+		  this.tableData_rule2 = tableData_r; //赋予筛选数据
+		  this.tableData_rule = tableData_r;
+		  this.ifPitchOnChild(this.tableData_rule, selecteds);
+		},
+		ifPitchOnChild(item, indexID) {
+		  let pitchOnChild = [];
+		  for (let i in item) {
+		    for (let a in indexID) {
+		      //判断外层的值相不相等
+		      if (indexID[a] == item[i].id) {
+		        pitchOnChild.push(item[i]);
+		      }
+		    }
+		  }
+		  this.toggleSelection(pitchOnChild, true);
+		},
+		//默认选中
+		toggleSelection(rows, selected) {
+		  if (rows) {
+		    this.$nextTick(() => {
+		      rows.forEach(row => {
+		        this.$refs.multipleTable.toggleRowSelection(row, selected);
+		      });
+		    });
+		  } else {
+		    this.$refs.multipleTable.clearSelection();
+		  }
+		  setTimeout(() => {
+		    //给遮到层,让默认选中的有缓冲时间
+		    this.tableLoadingRule = false;
+		  }, 300);
+		},
+		
+
+		// 提交表单
+		subGroupForm(formName){
+		  this.$refs[formName].validate((valid) => {
+		    if (valid) {
+				this.saveFun()
+		    }
+		  });
+		},
+		//获取分组详情
+		getGroupDetail(func){
+			this.$axios('get','/api/integral/statistics/groups/info', {group_id: this.groups_info.id}).then(res => {
+				func(res.data.data);
+			})
+		},
+		//编辑
+		editGroup(){
+			var that=this;
+			this.getGroupDetail(function(res){
+				that.groups_info = res;
+				// 分组名称
+				that.newGroupForm.group_name = res.name;
+				
+				// 规则
+				that.newGroupForm.items = [];
+				for (let i in res.items) {
+				  that.newGroupForm.items.push(res.items[i].id);
+				}
+				that.valuesOrLength = that.newGroupForm.items;
+				if (that.valuesOrLength.length >= 1) {
+				  that.newGroupFormRules = that.valuesOrLength.length + '条规则';
+				  that.ruleHint = '统计已选规则的积分(只选分类不指定规则的积分除外)'
+				} else {
+				  that.newGroupFormRules = '';
+				  that.ruleHint = '统计所有积分(基础分和工龄分除外)'
+				}
+				
+				// 统计周期
+				that.newGroupForm.date_interval = String(res.date_interval);
+				that.options_time_value = res.date_interval == 1 ? '月度' : res.date_interval == 2 ? '季度' : res.date_interval == 3 ? '年度' : '';
+				
+				// 分组人员
+				that.newGroupForm.employees = [];
+				that.employeeNames ="";
+				res.employees.forEach(element => {
+				  that.newGroupForm.employees.push(element.id);
+				  that.employeeNames += element.name + ',';
+				});
+				that.employees_selected.employee=res.employees;
+				
+				
+				that.popupType = false;
+				that.groupShow = true;
+			})
+		},
+		//添加编辑组
+		saveFun(){
+		  this.saveLoad = true;
+		  var url=this.popupType? '/api/integral/statistics/groups/create':'/api/integral/statistics/groups'
+		  this.newGroupForm.group_id=this.groups_info.id;
+		  // return;
+		  var obj={//为编辑时
+			  name:this.newGroupForm.group_name,
+			  id:this.popupType?'':this.groups_info.id,
+			  employees:this.newGroupForm.employees,
+		  }
+		  this.$axios('post',url,this.newGroupForm).then((res) => {
+		    if (res.data.code == 1) {
+				this.$message.success(res.data.msg);
+				if(!this.popupType){//为编辑时
+					this.groups_info=obj;
+				}
+				if(this.groups_list.length==0){
+					this.get_groups_list(true)
+				}else{
+					this.get_groups_list()
+				}
+				this.resetForm('newGroupForm');
+		    }else{
+			  this.saveLoad = false
+		      this.$message.error(res.data.msg)
+		    }
+		  }).finally(()=>{
+				this.saveLoad = false
+		  })
+		},
+		// 重置表单
+		resetForm(formName){
+			this.$refs[formName].resetFields()
+			this.newGroupForm.employees = []
+			this.employee_not_select = []
+			this.employeeNames='';
+			this.employees_selected = {employee:[], dept: []}
+			this.groupShow = false
+		},
+		// 新增分组
+		addGroup(){
+			this.employee_not_select = []
+			this.newGroupFormRules='';
+			this.employees_selected = {employee:[], dept: []}
+			this.newGroupForm = {
+				group_name: "",
+				employees: [],
+				items:[],
+				date_interval:"1",
+			}
+			this.groupShow = true
+			this.popupType = true
+		},
+		// 删除分组
+		delItem(){
+			this.$confirm('确定要删除当前分组吗?, 是否继续?', '删除分组', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning'
+			}).then(() => {
+				let data = {group_id:this.groups_info.id};
+				this.delLoad = true
+				this.$axios('post','/api/integral/statistics/groups/drop',data).then((res) => {
+					if (res.data.code == 1) {
+						this.$message.success(res.data.msg)
+						this.groupShow = false
+						this.get_groups_list(true);
+					}else{
+						this.$message.error(res.data.msg)
+					}
+				}).finally(()=>{
+					this.delLoad = false
+				})
+			})
+		},
+		
+		// 选人组件提交
+		move_employee_confirm(data){
+			this.employeeNames='';
+			this.newGroupForm.employees=[];
+			var employee=data.employee;
+			if(employee.length>0){
+				employee.forEach(item=>{
+					this.employeeNames+=item.name+','
+					this.newGroupForm.employees.push(item.id);
+				})
+			}else{
+				this.newGroupForm.employees=[];
+			}
+			this.employees_selected.employee=employee;
+			this.isEmployeeShow=false;
+		},
+		// 递归判断列表,把最后的children设为undefined
+		getTreeData(data) {
+			for (var i = 0; i < data.length; i++) {
+				if (data[i].child.length < 1) {
+					// children若为空数组,则将children设为undefined
+					data[i].child = undefined;
+				} else {
+					// children若不为空数组,则继续 递归调用 本方法
+					this.getTreeData(data[i].child);
+				}
+			}
+			return data;
+		},
+		//获取规则
+		getRuleList() {
+			this.$axios('get','/api/integral/rule/trees', {cycle_type: 1}).then(res => {
+				this.rule_trees = this.getTreeData(res.data.data.rule_tree || []);
+				this.itemList = res.data.data.item_list; //规则
+			})
+		},
+		// 规则分类改变之后请求数据
+		rule_null(val){
+		  this.params.rule_id=val.length == 0? '': val[val.length -1]
+		  this.$nextTick(()=>{
+				this.page = 1
+				this.open_right()
+			})
+		},
+		//获取初始化数据
+		get_groups_list(isAdd) {
+			this.groups_loading = true;
+			this.$axios('get','/api/integral/statistics/groups').then(res => {
+				if (res.data.code == 1) {
+					let lists = res.data.data.list;
+					if(this.$authoritys('employee')){//员工权限只能查看包含自己的
+						let user = this.$getUserData().id
+						let data = []
+						lists.forEach(item=>{
+							if(item.employees.length == 0){
+								data.push(item)
+							}else{
+								if(item.employees.indexOf(user.toString())!=-1){
+									data.push(item)
+								}
+							}
+						})
+						this.groups_list = data;
+					}else{
+						this.groups_list = lists;
+					}
+					if(this.groups_list[0]){
+						isAdd? this.open_right(this.groups_list[0]):this.open_right();
+					}else{
+						this.table_list=[];
+					}
+				}
+			}).finally(() => {
+				this.groups_loading = false;
+			});
+		},
+		// 打开右边列表
+		open_right(item){
+			console.log(item)
+			this.table_loading = true;
+			this.clickItem = item;
+			  
+			if (!item) {
+				this.table_loading = false;
+				return false;
+			}
+
+			let data = JSON.parse(JSON.stringify(this.params));
+			data.rule ? '' : delete data.rule;
+			data.group_id = item.id;
+			let months;
+			if (this.newGroupForm.date_interval == '1') {
+				months = this.time.month.replace('-', '');
+			}
+			data.date =
+			this.newGroupForm.date_interval == '1' ? months : this.newGroupForm.date_interval == '2' ? this.time.quarter : this.newGroupForm.date_interval == '3' ? this.time.year : '';
+			// var data={};
+			// if(item){
+			// 	this.groups_info=item;
+			// 	data={
+			// 		group_id: item.id,
+			// 		month: this.params.month,
+			// 		sort: this.params.sort,
+			// 		rule_id: this.params.rule_id,
+			// 		pt_id: 3,
+			// 	}
+			// }else{
+			// 	data={
+			// 		group_id: this.groups_info.id,
+			// 		month: this.params.month,
+			// 		sort: this.params.sort,
+			// 		rule_id: this.params.rule_id,
+			// 		pt_id: 3,
+			// 	}
+			// }
+
+			// this.$axios('get','/api/integral/statistics/groups/rank',data).then((res) => {
+			// 	if (res.data.code == 1) {
+			// 			this.table_list = res.data.data.list
+			// 			this.total = res.data.data.total
+			// 	}else{
+			// 	  this.$message.error(res.data.data.msg)
+			// 	}
+		    // }).finally(() => {
+		    //     this.table_loading = false
+			// })
+			this.$axios('get','/api/integral/statistics/groups/rank',data).then(res => {
+				if (res.data.code == 1) {
+					this.table_list = res.data.data.list;
+					this.total = res.data.data.total;
+					// this.lastUpdateTime = res.data.data.update_time;
+				} else {
+					this.$message.error(res.data.data.msg)
+				}
+			}).finally(() => {
+			this.table_loading = false;
+			});
+				// this.$axios('get','/api/integral/statistics/ranking',data,'v2').then((res) => {
+				// 	if (res.data.code == 1) {
+				// 			this.table_list = res.data.data.list
+				// 			this.total = res.data.data.total
+				// 	}else{
+				// 	this.$message.error(res.data.data.msg)
+				// 	}
+				// }).finally(() => {
+				// 	this.table_loading = false
+				// })
+		},
+		// 页码变更
+		handleCurrentChange(val) {
+		  this.params.page = val
+		  this.open_right(this.groups_info)
+		},
+		handleSizeChange(val){
+		  this.params.page_size = val
+		  this.open_right(this.groups_info)
+		},
+	}
+};
+</script>
+
+<style scoped lang="scss">
+.architecture {
+  display: flex;
+  text-align: center;
+  padding-left: 0px;
+  background-color: #fff;
+  width: 100%;
+  overflow: hidden;
+  cursor: default;
+  min-height: calc(60vh - 160px);
+}
+.architecture .RuleLine {
+  display: table-cell;
+  width: 1px;
+  min-height: 600px;
+  background: hsl(0, 2%, 76%);
+}
+.architecture .RuleLeft {
+  display: block;
+  text-align: center;
+  padding: 20px 10px;
+  border-right: none;
+  overflow-y: auto;
+  overflow-x: none;
+}
+/*滚动条的宽度*/
+
+.architecture .RuleLeft::-webkit-scrollbar {
+  width: 9px;
+  height: 9px;
+}
+.architecture .RuleRight::-webkit-scrollbar {
+  width: 9px;
+  height: 9px;
+}
+
+/*外层轨道。可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果*/
+
+.architecture .RuleLeft::-webkit-scrollbar-track {
+  width: 6px;
+  background-color: #fff0;
+  -webkit-border-radius: 2em;
+  -moz-border-radius: 2em;
+  border-radius: 2em;
+}
+.architecture .RuleRight::-webkit-scrollbar-track {
+  width: 6px;
+  background-color: #fff0;
+  -webkit-border-radius: 2em;
+  -moz-border-radius: 2em;
+  border-radius: 2em;
+}
+
+/*滚动条的设置*/
+
+.architecture .RuleLeft::-webkit-scrollbar-thumb {
+  background-color: #fff0;
+  background-clip: padding-box;
+  min-height: 28px;
+  -webkit-border-radius: 2em;
+  -moz-border-radius: 2em;
+  border-radius: 2em;
+}
+.architecture .RuleRight::-webkit-scrollbar-thumb {
+  background-color: #fff0;
+  background-clip: padding-box;
+  min-height: 28px;
+  -webkit-border-radius: 2em;
+  -moz-border-radius: 2em;
+  border-radius: 2em;
+}
+/*滚动条移上去的背景*/
+
+.architecture .RuleLeft:hover::-webkit-scrollbar-thumb {
+  overflow-x: none;
+  background-color: rgba(144, 147, 153, 0.3);
+}
+.architecture .RuleRight:hover::-webkit-scrollbar-thumb {
+  background-color: rgba(115, 118, 124, 0.3);
+}
+
+.architecture .RuleLeft .company_name {
+  position: relative;
+  display: block;
+  font-family: 'Microsoft YaHei';
+  text-align: left;
+  padding: 15px 28px 17px;
+  cursor: pointer;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  border-bottom: 1px #f8f8f8 solid;
+}
+.architecture .RuleLeft .company_name img {
+  position: relative;
+  display: inline-block;
+  top: 2px;
+  width: 18px;
+  height: 18px;
+  margin-right: 4px;
+}
+.architecture .RuleLeft ::v-deep .el-button {
+  margin-bottom: 16px !important;
+}
+.architecture .RuleRight {
+  position: relative;
+  display: table-cell;
+  text-align: left;
+  padding: 20px;
+}
+.architecture .RuleRight .title span .sapn {
+  display: inline-block;
+  vertical-align: middle;
+  max-width: 600px;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+.architecture .RuleRight:after {
+  content: ' ';
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  width: 1px;
+  background: #ebeef5;
+}
+.architecture .RuleRight .list_box {
+  width: 100%;
+  background: #fff;
+}
+.architecture .RuleRight .list_box ::v-deep table {
+  font-family: 'Microsoft YaHei';
+  width: 100% !important;
+}
+::v-deep .el-radio .el-radio__label {
+	display: none;
+}
+.tips {
+	background: #dcdfe6;
+	border-radius: 50%;
+	width: 14px;
+	height: 14px;
+	color: #fff;
+	display: inline-block;
+	font-size: 12px;
+	line-height: 14px;
+	text-align: center;
+}
+.groupsName {
+	font-size: 18px;
+	margin-right:20px
+}
+.groupsName span{
+	margin-left:5px
+}
+
+.user_text {
+	font-size: 12px;
+}
+.cursor_pointer {
+	cursor: pointer;
+}
+.terr-left button{
+    margin: 0 auto;
+    display: block;
+    margin-bottom: 20px;
+}
+::v-deep .el-menu-item{
+	padding:0 10px !important;
+}
+.rule_class_box {
+	::v-deep .el-tree-node {
+		border-bottom: 1px #f8f8f8 solid;
+	}
+	::v-deep .el-tree-node__content {
+		padding: 10px 0;
+		// border-bottom: 1px #f8f8f8 solid;
+	}
+	::v-deep .el-tree-node__content:hover {
+		background: #ecf5ff;
+		border-radius: 4px;
+	}
+	::v-deep .is-current .el-tree-node__content .el-icon-caret-right {
+		color: #409eff !important;
+	}
+	::v-deep .is-current .el-tree-node__content .el-tree-node__label {
+		color: #409eff !important;
+	}
+	::v-deep .is-current .el-tree-node__children .el-icon-caret-right {
+		color: #c0c4cc !important;
+	}
+	::v-deep .is-current .el-tree-node__children .el-tree-node__label {
+		color: #606266 !important;
+	}
+	::v-deep .el-tree-node__label {
+		overflow: hidden;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+	}
+}
+</style>

File diff suppressed because it is too large
+ 1007 - 720
src/views/ranking/custom_rank.vue


+ 3 - 3
src/views/ranking/manager_statistics.vue

@@ -27,8 +27,8 @@
               <el-date-picker
                 class="date-picker-width"
                 v-model="condition.month"
-                clearable
-				size="medium"
+                :clearable="false"
+				        size="medium"
                 width="100%"
                 type="month"
                 placeholder="请选择月份"
@@ -143,7 +143,7 @@
               <el-date-picker
                 class="date-picker-width"
                 v-model="formData.month"
-                clearable
+                :clearable="false"
                 width="100%"
                 type="month"
 				size="medium"

Some files were not shown because too many files changed in this diff