Files
SIPAIIS_WMS_JSSW/WebRoot/jsp/kpi/planStaffDetailListMarkFinal.jsp
2026-01-16 14:13:44 +08:00

636 lines
30 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<%@page import="com.sipai.entity.base.ServerObject" %>
<%@ page language="java" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://www.springsecurity.org/jsp" prefix="security" %>
<!DOCTYPE html>
<!-- <html lang="zh-CN"> -->
<!-- BEGIN HEAD -->
<head>
<title><%= ServerObject.atttable.get("TOPTITLE")%>
</title>
<!-- 引用页头及CSS页-->
<jsp:include page="/jsp/inc.jsp"></jsp:include>
<style type="text/css">
/*.main-header{display:none;}*/
/* .content-header{display:none;}*/
/* .main-footer{display:none;}*/
/* .select2-container .select2-selection--single{*/
/* height:34px;*/
/* line-height: 34px;*/
/* }*/
/* .select2-selection__arrow{*/
/* margin-top:3px;*/
/* }*/
a {
text-decoration: none;
border: 0;
outline: none;
display: block;
width: 100%;
height: 100%;
text-align: center;
color: black;
}
.emptyEditView {
color: black;
}
.t_tab {
display: inline-block;
margin: 0;
}
.t_back:link {
color: black;
text-decoration: none
}
.t_back:visited {
color: black;
text-decoration: none
}
.t_back:hover {
color: #3c8dbc;
text-decoration: underline
}
</style>
<script type="text/javascript">
var planStaffId
// var viewFun = function(id) {
// $.post(ext.contextPath + '/work/mpoint/showHistory.do', {id:id} , function(data) {
// $("#subDiv").html(data);
// openModal('subModal');
// });
// };
var treeData = []
var dosearch = function () {
$("#table2").bootstrapTable('refresh');
};
var curCell = {};
var applyBizId = '${applyBizId}'
$(function () {
// 控制从菜单进入时的页面展示
if (('${kpiApplyBiz.status}' === '3' && '${taskId}' === '')
||('${kpiApplyBiz.createUserId}' === '${loginUserId}')
|| ('${kpiApplyBiz.status}' === '4')) {
$('#tab').show();
$('#auditDiv').show();
$("#singleDiv").show();
if ('${kpiApplyBiz.createUserId}' === '${loginUserId}') {
$('#singleIndicatorName').removeAttr("disabled");
$('#singleIndicatorPoint').removeAttr("disabled");
}else {
$('#singleIndicatorName').attr("disabled","disabled");
$('#singleIndicatorPoint').attr("disabled","disabled");
}
}
if (('${kpiApplyBiz.status}' === '4' && '${taskId}' === '')) {
$('#tab').show();
$('#auditDiv').show();
}
// 控制从代办页面进入时的页面展示
else if ('${kpiApplyBiz.status}' === '4' && '${taskId}' !== '') {
$('#auditDiv').show();
} else {
// 从待办菜单进入
if ('${backToKpiTaskList}' !== '1') {
$('#auditDiv').show();
$('#tab').show();
}
}
if ('${hasNextAuditor}' === '1') {
$('#nextAuditDiv').show();
} else if ('${taskId}' === '') {
$('#nextAuditDiv').show();
}
$("#table2").bootstrapTable({ // 对应table标签的id
url: ext.contextPath + '/kpi/KpiResultIndicator/getListFinal.do', // 获取表格数据的url
cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
striped: true, //表格显示条纹默认为false
pagination: true, // 在表格底部显示分页组件默认false
onlyInfoPagination: false,
sidePagination: 'server', // 设置为服务器端分页
// pageList: [10, 20, 50], // 设置页面可以显示的数据条数
pageSize: 100, // 页面数据条数
pageNumber: 1, // 首页页码
toolbar: "#toolbar",
idField: "Id",
// showRefresh: true,
// search: true,
clickToSelect: true,
queryParams: function (params) { // 请求服务器数据时发送的参数可以在这里添加额外的查询参数返回false则终止请求
return {
rows: params.limit, // 每页要显示的数据条数
page: params.offset / params.limit + 1, // 每页显示数据的开始页码
// sort: params.sort, // 要排序的字段
// order: params.order, // 排序规则
planStaffId: planStaffId
}
},
columns: [
{
field: 'dimensionName', // 返回json数据中的name
title: '考核维度', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle', // 上下居中
},
{
field: 'indicatorName', // 返回json数据中的name
title: '考核指标', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle' // 上下居中
},
{
field: 'contentA', // 返回json数据中的name
title: 'A级', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle' // 上下居中
},
{
field: 'contentB', // 返回json数据中的name
title: 'B级', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle' // 上下居中
}, {
field: 'contentC', // 返回json数据中的name
title: 'C级', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle' // 上下居中
}, {
field: 'contentD', // 返回json数据中的name
title: 'D级', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle' // 上下居中
}, {
field: 'indicatorDetail', // 返回json数据中的name
title: '指标解释', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle' // 上下居中
}, {
field: 'indicatorWeight', // 返回json数据中的name
title: '权重', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle'
}, {
field: 'completionStatus',
title: "完成情况",
align: 'center',
valign: 'middle'
}, {
field: 'auditor',
title: "评价人",
align: 'center',
valign: 'middle',
formatter: function (value, row, index) {
var labels = "";
labels += '<div>' + row.auditor1 + '</div>';
labels += '<hr style="border-top:1px dashed #987cb9;" width="100%" color="#987cb9" size=1>';
if (row.auditor2 == "") {
labels += '<div>-</div>';
} else {
labels += '<div>' + row.auditor2 + '</div>';
}
labels += '<hr style="border-top:1px dashed #987cb9;" width="100%" color="#987cb9" size=1>';
if (row.auditor3 == "") {
labels += '<div>-</div>';
} else {
labels += '<div>' + row.auditor3 + '</div>';
}
labels = '<div class="btn-group" >' + labels + '</div>';
return labels;
}
}, {
field: 'resultPoint',
title: "完成结果得分",
align: 'center',
valign: 'middle',
formatter: function (value, row, index) {
var labels = "";
<%--if (row.dimensionName === "内部客户" && '${kpiApplyBiz.status}' !== '3') {--%>
<%-- // return "内部客户维度由直接上级打分";--%>
<%-- labels += '<div>内部客户维度由直接上级打分</div>'--%>
<%-- labels += '<hr style="border-top:1px dashed #987cb9;" width="100%" color="#987cb9" size=1>'--%>
<%-- labels += '<div>内部客户维度由直接上级打分</div>'--%>
<%-- labels += '<hr style="border-top:1px dashed #987cb9;" width="100%" color="#987cb9" size=1>'--%>
<%-- labels += '<div>内部客户维度由直接上级打分</div>'--%>
<%--} else {--%>
// return initCell(row.id, "processPoint", "text", "过程表现得分", value);
labels += '<div>' + Number(row.resultPoint1).toFixed(2) + '</div>';
labels += '<hr style="border-top:1px dashed #987cb9;" width="100%" color="#987cb9" size=1>';
if (row.resultPoint2 == 0) {
labels += '<div>-</div>';
} else {
labels += '<div>' + Number(row.resultPoint2).toFixed(2) + '</div>';
}
labels += '<hr style="border-top:1px dashed #987cb9;" width="100%" color="#987cb9" size=1>';
if (row.resultPoint3 == 0) {
labels += '<div>-</div>';
} else {
labels += '<div>' + Number(row.resultPoint3).toFixed(2) + '</div>';
}
// }
labels = '<div class="btn-group" >' + labels + '</div>';
return labels;
}
}, {
field: 'processPoint',
title: "过程表现得分",
align: 'center',
valign: 'middle'
,
formatter: function (value, row, index) {
var labels = "";
<%--if (row.dimensionName === "内部客户" && '${kpiApplyBiz.status}' !== '3') {--%>
<%-- // return "内部客户维度由直接上级打分";--%>
<%-- labels += '<div>内部客户维度由直接上级打分</div>'--%>
<%-- labels += '<hr style="border-top:1px dashed #987cb9;" width="100%" color="#987cb9" size=1>'--%>
<%-- labels += '<div>内部客户维度由直接上级打分</div>'--%>
<%-- labels += '<hr style="border-top:1px dashed #987cb9;" width="100%" color="#987cb9" size=1>'--%>
<%-- labels += '<div>内部客户维度由直接上级打分</div>'--%>
<%--} else {--%>
// return initCell(row.id, "processPoint", "text", "过程表现得分", value);
labels += '<div>' + Number(row.processPoint1).toFixed(2) + '</div>';
labels += '<hr style="border-top:1px dashed #987cb9;" width="100%" color="#987cb9" size=1>';
if (row.processPoint2 == 0) {
labels += '<div>-</div>';
} else {
labels += '<div>' + Number(row.processPoint2).toFixed(2) + '</div>';
}
labels += '<hr style="border-top:1px dashed #987cb9;" width="100%" color="#987cb9" size=1>';
if (row.processPoint3 == 0) {
labels += '<div>-</div>'
} else {
labels += '<div>' + Number(row.processPoint3).toFixed(2) + '</div>'
}
// }
labels = '<div class="btn-group" >' + labels + '</div>';
return labels;
}
}
],
onClickRow: function (cell, $element) {
curCell = cell;
let view = $('.editable-input').find('input');
if (curCell[$element.find('a').attr('name')] === '' || curCell[$element.find('a').attr('name')] === 0) {
view.attr('placeholder', view.val());
view.val('');
// console.log('1111111')
view.on('change', (e) => {
curCell[$element.find('a').attr('name')] = view.val()
})
}
},
onLoadSuccess: function () {
$("#table2 a").editable({
emptytext: '点击开始填写',
emptyclass: 'emptyEditView',
url: function (params) {
var sName = $(this).attr("name");
curCell[sName] = params.value;
var id = curCell["id"];
// if (sName ==='resultPoint'||sName ==='processPoint' ){
// if (params.value < 0 ||params.value >100 ){
// alert('请填写0~100范围内的数字。');
//
// return ;
// }
// }
$.ajax({
type: 'POST',
url: ext.contextPath + '/kpi/KpiResultIndicator/save.do?planStaffDetailId=' + id + "&" + sName + "=" + params.value,
dataType: 'JSON',
success: function (data, textStatus, jqXHR) {
// alert('保存成功!');
},
error: function (res) {
// alert("error");
if (res.status == 400) {
showAlert('d', '输入有误,请检查输入', 'mainAlertdiv')
}
}
});
},
type: 'text'
});
},
// onLoadSuccess: function () { //加载成功时执行
// adjustBootstrapTableView("table");
// },
onLoadError: function () { //加载失败时执行
console.info("加载数据失败");
}
})
loadTreeData()
var choiceFun = function (row) {
planStaffId = row.id;
console.log(planStaffId)
$('#periodName').html('<label>' + row.periodTypeName + '</lable>');
$('#userName').html('<label>' + row.text + '</lable>');
$('#userCardId').html('<label>' + row.cardId + '</lable>');
$('#jobName').html('<label>' + row.jobName + '</lable>');
$('#statusName').html('<label>' + row.statusName + '</lable>');
$('#deptName').html('<label>' + row.deptName + '</lable>');
$("#table2").bootstrapTable('refresh');
danLieZhiBiao(row.id)
};
var danLieZhiBiao = function (planStaffId) {
$.post(ext.contextPath + "/kpi/KpiResultIndicator/getSingleIndicator.do?planStaffId=" + planStaffId, $("#auditForm").serialize(), function (data) {
if (data.result) {
$('#singleIndicatorName').val(data.result.singleIndicatorName)
$('#singleIndicatorPoint').val(data.result.singleIndicatorPoint)
}
}, "json")
}
function loadTreeData() {
$.post(ext.contextPath + '/kpi/KpiPlanStaff/getListNonPage.do?applyBizId=' + applyBizId, {}, function (data) {
let temp = data.result;
let list = [];
temp.forEach(item => {
list.push({
id: item.id,
text: item.objUserName,
cardId: item.cardId,
jobName: item.jobName,
periodTypeName: item.periodName,
statusName: item.statusName,
deptName: item.deptName
})
});
$("#tree").treeview({data: list});
$("#tree").on('nodeSelected', function (event, data) {
choiceFun(data);
});
choiceFun(list[0]);
}, 'json');
}
});
// 编辑表格
function initCell(id, name, dataTyp, dataTitle, value) {
if (value === undefined || value == null || value == "") {
value = '';
}
return '<a href="#" name="' + name + '" data-type="' + dataTyp + '" data-pk="' + id + '" data-title="' + dataTitle + '" style="text-decoration: none;border: none;outline: none;line-height: 47px">' + value + '</a>'
// return "<a href=\"#\" name=\""+name+"\" data-type=\""+dataType+"\" data-pk=\"" + id + "\" data-title=\""+dataTitle+"\">" + value + "</a>"
}
function initCells(id, name, dataType, dataTitle, value) {
if (value === undefined || value == null || value == "") {
value = '';
// value =(placeholder='点击这里开始评价');
}
return "<a href=\"#\" name=\"" + name + "\" data-type=\"" + dataType + "\" data-pk=\"" + id + '" data-title="' + dataTitle + '" style="text-decoration: none;border: none;outline: none;line-height: 47px">' + value + '</a>'
// return "<a href=\"#\" name=\""+name+"\" data-type=\""+dataType+"\" data-pk=\"" + id + "\" data-title=\""+dataTitle+"\">" + value + "</a>"
}
function initCellText(id, name, dataType, dataTitle, value) {
return value;
}
// 新增按钮
function addFun() {
$.post(ext.contextPath + '/kpi/KpiPlanStaffDetail/add.do?planStaffId=${planStaffId}', {}, function (data) {
$("#subDiv").html(data);
openModal('subModal');
});
}
// 编辑按钮
function editFun(id) {
$.post(ext.contextPath + '/kpi/KpiPlanStaffDetail/edit.do', {id: id}, function (data) {
$("#subDiv").html(data);
openModal('subModal');
});
}
// 提交审批(1:通过0不通过)
function markSubmitFunc(status) {
$('#pass').val(status);
var singleName = $('#singleIndicatorName').val();
var singlePoint = $('#singleIndicatorPoint').val();
// 如果是直接上级评分,则需要填写单列指标
if ('${taskId}' === '') {
if (singleName === '' && singlePoint !== '') {
alert('请填写单列指标名称!');
return;
} else if (singleName !== '' && singlePoint === '') {
alert('请填写单列指标评分!');
return;
} else if (singlePoint < 0 || singlePoint > 100) {
alert('分数范围应该在0~100分');
return;
}
}
if (status == 1) {
if (($('#nextAuditorId').val() === '' && '${hasNextAuditor}' === '1')
|| ($('#nextAuditorId').val() === undefined && '${hasNextAuditor}' === '1')
|| ($('#nextAuditorId').val() === null && '${hasNextAuditor}' === '1')) {
alert("请选择下一级打分人!");
return;
}
if (($('#nextAuditorId').val() === '' && '${taskId}' === '')
|| ($('#nextAuditorId').val() === undefined && '${taskId}' === '')
|| ($('#nextAuditorId').val() === null && '${taskId}' === '')) {
alert("请选择下一级打分人!");
return;
}
}
$('#unitId').val(unitId);
$.post(ext.contextPath + "/kpi/KpiResultIndicator/markSubmit.do"
, $("#auditForm").serialize(), function (data) {
if ('${taskId}' === '') {
if (data.code === 1) {
window.location.href = ext.contextPath
+ "/kpi/KpiPeriodInstance/showList.do";
} else {
showAlert('d', data.msg, 'mainAlertdiv');
}
} else {
if (data.code === 1) {
$("#table").bootstrapTable('refresh');
// 如果是从菜单进来的,就回到菜单页面去
if ('${backToKpiTaskList}' === '1') {
window.location.href = ext.contextPath
+ "/kpi/KpiTask/showList.do";
} else {
$("#kpiDiv").html('');
}
} else {
showAlert('d', data.msg, 'mainAlertdiv');
}
}
}, 'json');
}
// 跳转到考核人员列表
function gotoSecondTab(periodInstanceId) {
window.location.href = ext.contextPath
+ "/kpi/KpiPlanStaff/showList.do?periodInstanceId=" + periodInstanceId;
}
// 选择下一级审核人员
function selectNextAuditFun() {
$.post(ext.contextPath + '/user/userForOneSelect.do',
{formId: "auditForm", hiddenId: "nextAuditorId", textId: "nextAuditorName"},
function (data) {
$("#user4SelectDiv").html(data);
openModal('user4SelectModal');
});
}
</script>
</head>
<body>
<div class="wrapper">
<!-- 引用top -->
<%-- <jsp:include page="/jsp/top.jsp"></jsp:include> --%>
<!-- 菜单栏 -->
<%-- <jsp:include page="/jsp/left.jsp"></jsp:include> --%>
<div class="content-wrapper">
<!-- Content Header (Page header) -->
<section class="content-header">
<h3 id="head_title2" class="t_tab t_back">考核评分</h3>
</section>
<!-- Main content -->
<section class="content container-fluid">
<div id="subDiv"></div>
<div id="mainAlertdiv"></div>
<div id="user4SelectDiv"></div>
<div id="menu4SelectDiv"></div>
<div class="box-body no-padding" style="float: left;width: 20%">
<div id="tree" style="height:550px;overflow:auto; "></div>
</div>
<div style="float: right;width:80%">
<div class="form-group form-inline">
<span class="col-md-2">被考核人:<label id="userName"></label></span>
<span class="col-md-2">部门:<label id="deptName"></label></span>
<span class="col-md-2">岗位:<label id="jobName"></label></span>
<span class="col-md-2">考核周期:<label id="periodName"></label></span>
<span class="col-md-2">状态:<label id="statusName"></label></span>
</div>
<hr style="border-top:1px dashed #987cb9;" width="100%" color="#987cb9" size=1>
<br>
<table id="table2"></table>
<br>
<form id="auditForm">
<div class="form-group" id="singleDiv" style="display: none">
<div class="form-group inline pull-left">
<label class="col-sm-5 control-label pull-left">单列指标名称:</label>
<div class="col-sm-5">
<input type="text" name="singleIndicatorName" id="singleIndicatorName"
class="form-control"
placeholder="请输入文本"/>
</div>
</div>
<div class="form-group inline pull-left">
<label class="col-sm-5 control-label">单列指标评分:</label>
<div class="col-sm-5">
<input type="number" name="singleIndicatorPoint" id="singleIndicatorPoint"
class="form-control"
placeholder="请输入文本"/>
</div>
</div>
</div>
<hr style="border-top:1px dashed #987cb9;" width="100%" color="#987cb9" size=1>
<div class="col-md-12" id="auditDiv" style="display:none">
<input type="hidden" id="taskId" name="taskId" value="${taskId}"/>
<input type="hidden" id="bizId" name="bizId" value="${applyBizId}"/>
<div class="form-group">
<label class="control-label" style="float: left;width: 80px;line-height: 54px;">审核意见:</label>
<div class="col-sm-4">
<textarea type="text" name="auditComment" class="form-control"
placeholder="请输入文本">${kpiApplyBiz.rejectionComment}</textarea>
</div>
</div>
<div class="form-inline">
<div class="form-group pull-left" id="nextAuditDiv" style="display: none">
<label class="col-sm-5 control-label">指定下一级打分人:</label>
<div class="col-sm-3">
<input type="text" name="auditorName" id="nextAuditorName" class="form-control"
onclick="selectNextAuditFun()" placeholder="请输入文本"/>
<input type="hidden" name="auditorId" id="nextAuditorId" class="form-control"/>
<input type="hidden" name="unitId" id="unitId" class="form-control"/>
</div>
</div>
<div class="form-group pull-left">
<div class="col-sm-12 col-sm-offset-4">
<input type="hidden" name="pass" id="pass" value="1" class="form-control"/>
<button type="button" class="btn btn-primary" onclick="markSubmitFunc(1)">同意
</button>
<button onclick="markSubmitFunc(0)" class="btn btn-danger" type="button">驳回
</button>
</div>
</div>
</div>
</div>
</form>
</div>
</section>
<!-- /.content -->
</div>
<%-- <jsp:include page="/jsp/bottom.jsp"></jsp:include> --%>
<%-- <jsp:include page="/jsp/side.jsp"></jsp:include> --%>
</div>
</body>
<!-- 引入daterangepicker-->
<link rel="stylesheet" href="<%=request.getContextPath()%>/plugins/bootstrap-daterangepicker/daterangepicker.css"/>
<script type="text/javascript" src="<%=request.getContextPath()%>/plugins/bootstrap-daterangepicker/moment.min.js"
charset="utf-8"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/plugins/bootstrap-daterangepicker/daterangepicker.js"
charset="utf-8"></script>
</html>