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

622 lines
28 KiB
Plaintext
Raw 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 danLieZhiBiaoSave() {
var singleName = $('#singleIndicatorName').val();
var singlePoint = $('#singleIndicatorPoint').val();
if ('${taskId}' === '') {
// alert(singleName)
// if (singleName === '') {
// alert('请填写单列指标名称!');
// return;
// } else if (singlePoint === '') {
// alert('请填写单列指标评分!');
// return;
// } else
if (singlePoint < 0 || singlePoint > 100) {
alert('分数范围应该在0~100分');
return;
}
}
$.post(ext.contextPath + "/kpi/KpiResultIndicator/saveSingleIndicator.do?planStaffId=" + planStaffId, $("#auditForm").serialize(), function (data) {
// $("#auditForm").serialize()
})
}
$(function () {
// alert("0");
// 控制从菜单进入时的页面展示
if (('${kpiApplyBiz.status}' === '3' && '${taskId}' === '')
|| ('${kpiApplyBiz.createUserId}' === '${loginUserId}')
|| ('${kpiApplyBiz.status}' === '4')) {
$('#tab').show();
$('#auditDiv').show();
$("#singleDiv").show();
// alert("1");
if ('${kpiApplyBiz.createUserId}' === '${loginUserId}') {
// alert("2");
$('#singleIndicatorName').removeAttr("disabled");
$('#singleIndicatorPoint').removeAttr("disabled");
} else {
// alert("3");
$('#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();
$('#QRRShow').show();
} else if ('${taskId}' === '') {
$('#nextAuditDiv').show();
$('#PFRShow').show();
}
$("#table2").bootstrapTable({ // 对应table标签的id
url: ext.contextPath + '/kpi/KpiResultIndicator/getList.do', // 获取表格数据的url
cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
striped: true, //表格显示条纹默认为false/kpi/KpiResultIndicator/getListFinal.do
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'
,
formatter: function (value, row, index) {
if ('${kpiApplyBiz.status}' === '3') {
// console.log("completionStatus" + value);
return initCells(row.id, "completionStatus", "text", "完成情况", value);
} else {
return initCellText(row.id, "completionStatus", "text", "完成情况", value);
}
}
}, {
field: 'resultPoint',
title: "完成结果得分",
align: 'center',
valign: 'middle'
,
formatter: function (value, row, index) {
if (row.dimensionName === "内部客户" && '${kpiApplyBiz.status}' !== '3') {
return "内部客户维度由直接上级打分";
} else {
return initCell(row.id, "resultPoint", "text", "完成结果得分", value);
}
}
}, {
field: 'processPoint',
title: "过程表现得分",
align: 'center',
valign: 'middle'
,
formatter: function (value, row, index) {
if (row.dimensionName === "内部客户" && '${kpiApplyBiz.status}' !== '3') {
return "内部客户维度由直接上级打分";
} else {
return initCell(row.id, "processPoint", "text", "过程表现得分", value);
}
}
}
],
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');
$('#singleIndicatorName').val("");
$('#singleIndicatorPoint').val("");
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) {
danLieZhiBiaoSave();
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);
danLieZhiBiaoSave();
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 selectNextAuditFun() {
$.post(ext.contextPath + '/user/userForOneSelect.do',
{formId: "auditForm", hiddenId: "nextAuditorId", textId: "nextAuditorName"},
function (data) {
$("#user4SelectDiv").html(data);
openModal('user4SelectModal');
});
}
function showHisScore() {
$.post(ext.contextPath + '/kpi/KpiResultIndicator/showHisScore.do', {planStaffId: planStaffId}, function (data) {
console.log(data)
$("#showHisScoreDiv").html(data);
openModal('showHisScoreModal');
});
}
//选人
var showUser4Handle = function () {
var userIds = $("#nextAuditorId").val();
var jobIds = $("#targetjobs").val();
$.post(ext.contextPath + '/user/userForSelectByCompany.do', {
formId: "auditForm",
hiddenId: "nextAuditorId",
textId: "nextAuditorName",
userIds: userIds,
jobIds: jobIds
}, 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 id="showHisScoreDiv"></div>
<input type="hidden" name="unitId" id="unitId" class="form-control"/>
<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>
<button type="button" class="btn pull-left" onclick="showHisScore();">历史评分</button>
<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" style="width: 420px;">
<label class="col-sm-4 control-label pull-left">单列指标名称:</label>
<div class="col-sm-8">
<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-inline">
<div class="form-group" id="nextAuditDiv" style="display: none;width: 100%;">
<label class="control-label" id="PFRShow" style="float: left;width: 150px;line-height: 54px;display: none;">
指定下一级评分人:
</label>
<label class="control-label" id="QRRShow" style="float: left;width: 150px;line-height: 54px;display: none;">
指定下一级确认人:
</label>
<div style="float: left;width: 230px;padding-top: 10px;">
<input type="text" name="auditorName" id="nextAuditorName" class="form-control"
onclick="showUser4Handle()" placeholder="请输入文本" autocomplete="off"/>
<input type="hidden" name="auditorId" id="nextAuditorId" class="form-control"/>
<input class="form-control" id="targetjobs" name="targetjobs" type="hidden"
value=""/>
</div>
<label class="control-label"
style="float: left;width: 80px;line-height: 54px;">审核意见:</label>
<div style="float: left;width: 250px;">
<textarea type="text" name="auditComment" class="form-control" style="width: 240px;"
placeholder="请输入文本">${kpiApplyBiz.rejectionComment}</textarea>
</div>
<div style="float: left;width: 200px;padding-left: 50px;padding-top: 10px;">
<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>