def delete(r_id): if not g.user.is_admin(): return jsonify({'id': ''}) performance = PerformanceEvaluation.get(r_id) PerformanceEvaluationPersonnal.query.filter_by( performance=performance).delete() performance.delete() flash(u'删除成功!', 'success') return jsonify({'id': r_id})
def notice(r_id): report = PerformanceEvaluation.get(r_id) personnal_obj = report.user_preformance_evaluation_personnal_personnal for k in personnal_obj: if k.status == 1: apply_context = {} apply_context['report'] = report apply_context['user'] = k.user account_kpi_apply_signal.send(current_app._get_current_object(), apply_context=apply_context) return jsonify({'ret': True})
def info(r_id): report = PerformanceEvaluation.get(r_id) if not g.user.is_HR_leader() and not g.user.is_super_leader(): under_users = [k['uid'] for k in _get_all_under_users(g.user.id)] if report.creator == g.user: if report.status != 5: flash(u'对不起,您的绩效考核评分还没有完成!', 'danger') return redirect(url_for("account_kpi.index")) elif report.creator.id not in under_users: flash(u'对不起,您没有权限查看别人的绩效考核!', 'danger') return redirect(url_for("account_kpi.index")) report.now_report_obj = json.loads(report.now_report) report.future_report_obj = json.loads(report.future_report) if request.values.get('action') == 'excel': return write_report_excel(report) return tpl('/account/kpi/info.html', report=report, type=report.type)
def apply(r_id, status): report = PerformanceEvaluation.get(r_id) report.status = status report.save() apply_context = {} apply_context['report'] = report account_kpi_apply_signal.send(current_app._get_current_object(), apply_context=apply_context) if int(status) == 1: flash(u'绩效考核已被打回!', 'success') return redirect(url_for("account_kpi.underling")) elif int(status) == 2: flash(u'申请评分成功,请等待Leader回复!', 'success') if g.user.is_HR_leader(): return redirect(url_for("account_kpi.underling")) else: return redirect(url_for("account_kpi.index")) elif int(status) == 4: flash(u'提交给HR成功', 'success') return redirect(url_for("account_kpi.underling")) elif int(status) == 5: flash(u'归档成功', 'success') return redirect(url_for("account_kpi.underling"))
def check_apply(r_id): report = PerformanceEvaluation.get(r_id) if g.user not in report.creator.team_leaders: flash(u'对不起,您不是该绩效考核的Leader!', 'danger') return redirect(url_for("account_kpi.underling")) report.now_report_obj = json.loads(report.now_report) report.future_report_obj = json.loads(report.future_report) if request.method == 'POST': now_report = {} for k in range(1, 4): now_report['leader_kr_' + str(k) + '_s'] = float( request.values.get('leader_kr_' + str(k) + '_s', 0.00)) now_report['leader_up_' + str(k) + '_s'] = float( request.values.get('leader_up_' + str(k) + '_s', 0.00)) if report.type == 2: # 管理指标数据 now_report['leader_manage_' + str(k) + '_s'] = float( request.values.get('leader_manage_' + str(k) + '_s', 0.00)) # 胜任能力情况 now_report['leader_knowledge_s'] = float( request.values.get('leader_knowledge_s', 0.00)) now_report['leader_positive_s'] = float( request.values.get('leader_positive_s', 0.00)) now_report['leader_team_s'] = float( request.values.get('leader_team_s', 0.00)) now_report['leader_teach_s'] = float( request.values.get('leader_teach_s', 0.00)) now_report['leader_abide_s'] = float( request.values.get('leader_abide_s', 0.00)) # 自我总结 now_report['leader_summary'] = request.values.get('leader_summary', '') # 各项得分 KR_score = 0 upper_score = 0 manage_score = 0 ability_score = now_report['leader_knowledge_s'] * 0.04 + now_report[ 'leader_positive_s'] * 0.04 + now_report[ 'leader_team_s'] * 0.04 + now_report[ 'leader_teach_s'] * 0.04 + now_report[ 'leader_abide_s'] * 0.04 for k in range(1, 4): KR_score += report.now_report_obj['kr_' + str( k) + '_w'] * now_report['leader_kr_' + str(k) + '_s'] / 100 upper_score += report.now_report_obj['up_' + str( k) + '_w'] * now_report['leader_up_' + str(k) + '_s'] / 100 if report.type == 2: manage_score += report.now_report_obj[ 'manage_' + str(k) + '_w'] * now_report['leader_manage_' + str(k) + '_s'] / 100 total_score = KR_score + upper_score + manage_score + ability_score report.now_report_obj.update(now_report) report.upper_score = upper_score report.KR_score = KR_score report.manage_score = manage_score report.ability_score = ability_score report.status = 3 report.total_score = total_score report.now_report = json.dumps(report.now_report_obj) report.create_time = datetime.datetime.now() report.save() flash(u'绩效考核表审批成功,如果填写无误请申请HR备案!', 'success') return redirect(url_for("account_kpi.underling")) scores = [float(k) / 10 for k in range(1, 51)] scores.append(0.00) scores.reverse() return tpl('/account/kpi/apply.html', type=report.type, scores=scores, report=report)
def check_apply_v2(r_id): report = PerformanceEvaluation.get(r_id) if g.user not in report.creator.team_leaders: flash(u'对不起,您不是该绩效考核的Leader!', 'danger') return redirect(url_for("account_kpi.underling")) report.now_report_obj = json.loads(report.now_report) report.future_report_obj = json.loads(report.future_report) if request.method == 'POST': now_report = {} for k in range(1, 4): now_report['leader_kr_' + str(k) + '_s'] = float( request.values.get('leader_kr_' + str(k) + '_s', 0.00)) now_report['leader_up_' + str(k) + '_s'] = float( request.values.get('leader_up_' + str(k) + '_s', 0.00)) if report.type == 2: # 管理指标数据 now_report['leader_manage_' + str(k) + '_s'] = float( request.values.get('leader_manage_' + str(k) + '_s', 0.00)) # 胜任能力情况 now_report['leader_knowledge_s'] = float( request.values.get('leader_knowledge_s', 0.00)) now_report['leader_positive_s'] = float( request.values.get('leader_positive_s', 0.00)) now_report['leader_team_s'] = float( request.values.get('leader_team_s', 0.00)) now_report['leader_teach_s'] = float( request.values.get('leader_teach_s', 0.00)) now_report['leader_abide_s'] = float( request.values.get('leader_abide_s', 0.00)) # 自我总结 now_report['leader_summary'] = request.values.get('leader_summary', '') # 各项得分 KR_score = 0 upper_score = 0 manage_score = 0 ability_score = now_report['leader_knowledge_s'] * 0.04 + now_report[ 'leader_positive_s'] * 0.04 + now_report[ 'leader_team_s'] * 0.04 + now_report[ 'leader_teach_s'] * 0.04 + now_report[ 'leader_abide_s'] * 0.04 for k in range(1, 4): KR_score += report.now_report_obj['kr_' + str( k) + '_w'] * now_report['leader_kr_' + str(k) + '_s'] / 100 upper_score += report.now_report_obj['up_' + str( k) + '_w'] * now_report['leader_up_' + str(k) + '_s'] / 100 if report.type == 2: manage_score += report.now_report_obj[ 'manage_' + str(k) + '_w'] * now_report['leader_manage_' + str(k) + '_s'] / 100 total_score = KR_score + upper_score + manage_score + ability_score try: users = User.gets(request.values.getlist('personnals')) if len(users) != 5: flash(u'请选择五个同事为您的下属评分!', 'danger') return redirect( url_for("account_kpi.check_apply_v2", r_id=r_id)) except: flash(u'请选择五个同事为您的下属评分!', 'danger') return redirect(url_for("account_kpi.check_apply_v2", r_id=r_id)) # 先删除之前选的员工 if report.status != 6: PerformanceEvaluationPersonnal.query.filter_by( performance=report).delete() report.now_report_obj.update(now_report) report.upper_score = upper_score report.KR_score = KR_score report.manage_score = manage_score report.ability_score = ability_score report.status = 6 report.total_score = total_score report.now_report = json.dumps(report.now_report_obj) report.create_time = datetime.datetime.now() report.save() if not PerformanceEvaluationPersonnal.query.filter_by( performance=report).first(): for user in users: PerformanceEvaluationPersonnal.add(user=user, performance=report) apply_context = {} apply_context['report'] = report apply_context['user'] = user account_kpi_apply_signal.send( current_app._get_current_object(), apply_context=apply_context) flash(u'绩效考核表审批成功,已分配员工评分!', 'success') return redirect(url_for("account_kpi.underling")) performance_personnals = PerformanceEvaluationPersonnal.query.filter_by( performance=report) p_users = [k.user.id for k in performance_personnals] scores = [float(k) / 10 for k in range(1, 51)] scores.append(0.00) scores.reverse() return tpl('/account/kpi/apply_v2.html', type=report.type, scores=scores, report=report, users=User.all_active(), p_users=p_users)
def update(r_id): report = PerformanceEvaluation.get(r_id) if report.creator != g.user: flash(u'对不起,该绩效考核不是您的!', 'danger') return redirect(url_for("account_kpi.index")) if int(report.status) != 1: flash(u'对不起,您的绩效考核在审批中暂时不能修改!', 'danger') return redirect(url_for("account_kpi.index")) if request.method == 'POST': now_report = {} future_report = {} for k in range(1, 4): # KR指标数据 now_report['kr_' + str(k) + '_key'] = request.values.get( 'kr_' + str(k) + '_key', '') now_report['kr_' + str(k) + '_value'] = request.values.get( 'kr_' + str(k) + '_value', '') now_report['kr_' + str(k) + '_res'] = request.values.get( 'kr_' + str(k) + '_res', '') now_report['kr_' + str(k) + '_w'] = int( request.values.get('kr_' + str(k) + '_w', 0)) now_report['kr_' + str(k) + '_s'] = float( request.values.get('kr_' + str(k) + '_s', 0.00)) # 改进提升指标数据 now_report['up_' + str(k) + '_key'] = request.values.get( 'up_' + str(k) + '_key', '') now_report['up_' + str(k) + '_value'] = request.values.get( 'up_' + str(k) + '_value', '') now_report['up_' + str(k) + '_res'] = request.values.get( 'up_' + str(k) + '_res', '') now_report['up_' + str(k) + '_w'] = int( request.values.get('up_' + str(k) + '_w', 0)) now_report['up_' + str(k) + '_s'] = float( request.values.get('up_' + str(k) + '_s', 0.00)) if report.type == 2: # 管理指标数据 now_report['manage_' + str(k) + '_key'] = request.values.get( 'manage_' + str(k) + '_key', '') now_report['manage_' + str(k) + '_value'] = request.values.get( 'manage_' + str(k) + '_value', '') now_report['manage_' + str(k) + '_res'] = request.values.get( 'manage_' + str(k) + '_res', '') now_report['manage_' + str(k) + '_w'] = int( request.values.get('manage_' + str(k) + '_w', 0)) now_report['manage_' + str(k) + '_s'] = float( request.values.get('manage_' + str(k) + '_s', 0.00)) # 管理指标数据 future_report['next_manage_' + str(k) + '_key'] = request.values.get( 'next_manage_' + str(k) + '_key', '') future_report['next_manage_' + str(k) + '_value'] = request.values.get( 'next_manage_' + str(k) + '_value', '') future_report['next_manage_' + str(k) + '_w'] = int( request.values.get('next_manage_' + str(k) + '_w', 0)) # KR指标数据 future_report['next_kr_' + str(k) + '_key'] = request.values.get( 'next_kr_' + str(k) + '_key', '') future_report['next_kr_' + str(k) + '_value'] = request.values.get( 'next_kr_' + str(k) + '_value', '') future_report['next_kr_' + str(k) + '_w'] = int( request.values.get('next_kr_' + str(k) + '_w', 0)) # 改进提升指标数据 future_report['next_up_' + str(k) + '_key'] = request.values.get( 'next_up_' + str(k) + '_key', '') future_report['next_up_' + str(k) + '_value'] = request.values.get( 'next_up_' + str(k) + '_value', '') future_report['next_up_' + str(k) + '_w'] = int( request.values.get('next_up_' + str(k) + '_w', 0)) # 胜任能力情况 now_report['knowledge_res'] = request.values.get('knowledge_res', '') now_report['positive_res'] = request.values.get('positive_res', '') now_report['team_res'] = request.values.get('team_res', '') now_report['teach_res'] = request.values.get('teach_res', '') now_report['abide_res'] = request.values.get('abide_res', '') now_report['knowledge_s'] = float( request.values.get('knowledge_s', 0.00)) now_report['positive_s'] = float(request.values.get( 'positive_s', 0.00)) now_report['team_s'] = float(request.values.get('team_s', 0.00)) now_report['teach_s'] = float(request.values.get('teach_s', 0.00)) now_report['abide_s'] = float(request.values.get('abide_s', 0.00)) # 自我总结 now_report['self_summary'] = request.values.get('self_summary', '') # 各项得分 KR_score = 0 upper_score = 0 manage_score = 0 ability_score = now_report['knowledge_s'] * 0.04 + now_report[ 'positive_s'] * 0.04 + now_report['team_s'] * 0.04 + now_report[ 'teach_s'] * 0.04 + now_report['abide_s'] * 0.04 for k in range(1, 4): KR_score += now_report['kr_' + str(k) + '_w'] * now_report['kr_' + str(k) + '_s'] / 100 upper_score += now_report['up_' + str(k) + '_w'] * now_report['up_' + str(k) + '_s'] / 100 if report.type == 2: manage_score += now_report['manage_' + str( k) + '_w'] * now_report['manage_' + str(k) + '_s'] / 100 total_score = KR_score + upper_score + manage_score + ability_score report.self_upper_score = upper_score report.self_KR_score = KR_score report.self_manage_score = manage_score report.self_ability_score = ability_score report.self_total_score = total_score report.now_report = json.dumps(now_report) report.future_report = json.dumps(future_report) report.creator = g.user report.create_time = datetime.datetime.now() report.save() flash(u'绩效考核表修改成功,如果填写无误请申请Leader评分!', 'success') return redirect(url_for("account_kpi.index")) report.now_report_obj = json.loads(report.now_report) report.future_report_obj = json.loads(report.future_report) scores = [float(k) / 10 for k in range(1, 51)] scores.append(0.00) scores.reverse() weights = [k for k in range(1, 41)] weights.append(0) weights.reverse() return tpl('/account/kpi/update.html', type=report.type, scores=scores, weights=weights, report=report)
def create_v2(): if PerformanceEvaluation.query.filter_by(version=3, creator=g.user).count() > 0: flash(u'您已经填写过绩效考核表了!', 'danger') return redirect(url_for("account_kpi.index")) if g.user.is_kpi_leader: type = 2 else: type = 1 if request.method == 'POST': if PerformanceEvaluation.query.filter_by(version=3, creator=g.user).count() > 0: flash(u'您已经填写过绩效考核表了!', 'danger') return redirect(url_for("account_kpi.index")) now_report = {} future_report = {} for k in range(1, 4): # KR指标数据 now_report['kr_' + str(k) + '_key'] = request.values.get( 'kr_' + str(k) + '_key', '') now_report['kr_' + str(k) + '_value'] = request.values.get( 'kr_' + str(k) + '_value', '') now_report['kr_' + str(k) + '_res'] = request.values.get( 'kr_' + str(k) + '_res', '') now_report['kr_' + str(k) + '_w'] = int( request.values.get('kr_' + str(k) + '_w', 0)) now_report['kr_' + str(k) + '_s'] = float( request.values.get('kr_' + str(k) + '_s', 0.00)) # 改进提升指标数据 now_report['up_' + str(k) + '_key'] = request.values.get( 'up_' + str(k) + '_key', '') now_report['up_' + str(k) + '_value'] = request.values.get( 'up_' + str(k) + '_value', '') now_report['up_' + str(k) + '_res'] = request.values.get( 'up_' + str(k) + '_res', '') now_report['up_' + str(k) + '_w'] = int( request.values.get('up_' + str(k) + '_w', 0)) now_report['up_' + str(k) + '_s'] = float( request.values.get('up_' + str(k) + '_s', 0.00)) if type == 2: # 管理指标数据 now_report['manage_' + str(k) + '_key'] = request.values.get( 'manage_' + str(k) + '_key', '') now_report['manage_' + str(k) + '_value'] = request.values.get( 'manage_' + str(k) + '_value', '') now_report['manage_' + str(k) + '_res'] = request.values.get( 'manage_' + str(k) + '_res', '') now_report['manage_' + str(k) + '_w'] = int( request.values.get('manage_' + str(k) + '_w', 0)) now_report['manage_' + str(k) + '_s'] = float( request.values.get('manage_' + str(k) + '_s', 0.00)) # 管理指标数据 future_report['next_manage_' + str(k) + '_key'] = request.values.get( 'next_manage_' + str(k) + '_key', '') future_report['next_manage_' + str(k) + '_value'] = request.values.get( 'next_manage_' + str(k) + '_value', '') future_report['next_manage_' + str(k) + '_w'] = int( request.values.get('next_manage_' + str(k) + '_w', 0)) # KR指标数据 future_report['next_kr_' + str(k) + '_key'] = request.values.get( 'next_kr_' + str(k) + '_key', '') future_report['next_kr_' + str(k) + '_value'] = request.values.get( 'next_kr_' + str(k) + '_value', '') future_report['next_kr_' + str(k) + '_w'] = int( request.values.get('next_kr_' + str(k) + '_w', 0)) # 改进提升指标数据 future_report['next_up_' + str(k) + '_key'] = request.values.get( 'next_up_' + str(k) + '_key', '') future_report['next_up_' + str(k) + '_value'] = request.values.get( 'next_up_' + str(k) + '_value', '') future_report['next_up_' + str(k) + '_w'] = int( request.values.get('next_up_' + str(k) + '_w', 0)) # 胜任能力情况 now_report['knowledge_res'] = request.values.get('knowledge_res', '') now_report['positive_res'] = request.values.get('positive_res', '') now_report['team_res'] = request.values.get('team_res', '') now_report['teach_res'] = request.values.get('teach_res', '') now_report['abide_res'] = request.values.get('abide_res', '') now_report['knowledge_s'] = float( request.values.get('knowledge_s', 0.00)) now_report['positive_s'] = float(request.values.get( 'positive_s', 0.00)) now_report['team_s'] = float(request.values.get('team_s', 0.00)) now_report['teach_s'] = float(request.values.get('teach_s', 0.00)) now_report['abide_s'] = float(request.values.get('abide_s', 0.00)) # 自我总结 now_report['self_summary'] = request.values.get('self_summary', '') # 各项得分 KR_score = 0 upper_score = 0 manage_score = 0 ability_score = now_report['knowledge_s'] * 0.04 + now_report[ 'positive_s'] * 0.04 + now_report['team_s'] * 0.04 + now_report[ 'teach_s'] * 0.04 + now_report['abide_s'] * 0.04 for k in range(1, 4): KR_score += now_report['kr_' + str(k) + '_w'] * now_report['kr_' + str(k) + '_s'] / 100 upper_score += now_report['up_' + str(k) + '_w'] * now_report['up_' + str(k) + '_s'] / 100 if type == 2: manage_score += now_report['manage_' + str( k) + '_w'] * now_report['manage_' + str(k) + '_s'] / 100 total_score = KR_score + upper_score + manage_score + ability_score PerformanceEvaluation.add( type=type, version=3, self_upper_score=upper_score, self_KR_score=KR_score, self_manage_score=manage_score, self_ability_score=ability_score, self_total_score=total_score, now_report=json.dumps(now_report), future_report=json.dumps(future_report), creator=g.user, create_time=datetime.datetime.now(), ) flash(u'绩效考核表添加成功,如果填写无误请申请Leader评分!', 'success') return redirect(url_for("account_kpi.index")) last_performance = PerformanceEvaluation.query.filter_by( version=2, creator=g.user).first() if last_performance: future_report = json.loads(last_performance.future_report) else: future_report = None scores = [float(k) / 10 for k in range(1, 51)] scores.append(0.00) scores.reverse() weights = [k for k in range(1, 41)] weights.append(0) weights.reverse() return tpl('/account/kpi/create_v2.html', type=type, scores=scores, weights=weights, future_report=future_report)