first commit

This commit is contained in:
2026-01-16 14:13:44 +08:00
commit 903ff8d495
34603 changed files with 8585054 additions and 0 deletions

View File

@ -0,0 +1,78 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>导入人员</title>
<jsp:include page="/jsp/inc.jsp"></jsp:include>
<script>
var uploader,state;
$(function() {
var $ = jQuery,
$list = $('#thelist'),
state = 'pending';
uploader = WebUploader.create({
// swf文件路径
swf: ext.contextPath+'/JS/webuploader-0.1.5/Uploader.swf',
// 文件接收服务端。
server: ext.contextPath+'/activiti/auto/saveImportActiviti.do',
// 选择文件的按钮。可选。
// 内部根据当前运行是创建可能是input元素也可能是flash.
pick: {
id: '#picker',
multiple: false
},
// 不压缩image, 默认如果是jpeg文件上传前会压缩一把再上传
resize: false,
accept: {
title: 'Excel',
extensions: 'xls,xlsx',
mimeTypes: 'excel/*'
}
});
//当有文件被添加进队列的时候
uploader.on( 'fileQueued', function( file ) {
$list.append( '<div id="' + file.id + '" class="item">' +
'<h4 class="info">' + file.name + '</h4>' +
'<p class="state">等待上传...</p>' +
'</div>' );
});
});
var doimport = function(dialog, grid){
//执行上传功能
if ( state === 'uploading' ) {
alert("文件正在上传中,请稍等");
} else {
uploader.upload();
}
uploader.on( 'uploadError', function( file ) {
$( '#'+file.id ).find('p.state').text('上传出错');
});
uploader.on( 'uploadSuccess', function( file,response ) {
$( '#'+file.id ).find('p.state').text('已上传');
if(response=="1"){
grid.datagrid('reload');
alert("导入成功!");
dialog.dialog('destroy');
}else{
alert("导入未完成!");
dialog.dialog('destroy');
}
});
}
</script>
</head>
<body>
<div id="uploader" class="wu-example">
<div class="btns">
<div id="picker">选择文件</div>
</div>
<!--用来存放文件信息-->
<div id="thelist" class="uploader-list"></div>
</div>
</body>
</html>

View File

@ -0,0 +1,78 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>导入人员</title>
<jsp:include page="/jsp/inc.jsp"></jsp:include>
<script>
var uploader,state;
$(function() {
var $ = jQuery,
$list = $('#thelist'),
state = 'pending';
uploader = WebUploader.create({
// swf文件路径
swf: ext.contextPath+'/JS/webuploader-0.1.5/Uploader.swf',
// 文件接收服务端。
server: ext.contextPath+'${param.dest}?param=${param.param}',
// 选择文件的按钮。可选。
// 内部根据当前运行是创建可能是input元素也可能是flash.
pick: {
id: '#picker',
multiple: false
},
// 不压缩image, 默认如果是jpeg文件上传前会压缩一把再上传
resize: false,
accept: {
title: 'Excel',
extensions: 'xls,xlsx',
mimeTypes: 'excel/*'
}
});
//当有文件被添加进队列的时候
uploader.on( 'fileQueued', function( file ) {
$list.append( '<div id="' + file.id + '" class="item">' +
'<h4 class="info">' + file.name + '</h4>' +
'<p class="state">等待上传...</p>' +
'</div>' );
});
});
var doimport = function(dialog, grid){
//执行上传功能
if ( state === 'uploading' ) {
alert("文件正在上传中,请稍等");
} else {
uploader.upload();
}
uploader.on( 'uploadError', function( file ) {
$( '#'+file.id ).find('p.state').text('上传出错');
});
uploader.on( 'uploadSuccess', function( file,response ) {
$( '#'+file.id ).find('p.state').text('已上传');
if(response.res=="1"){
grid.datagrid('reload');
top.$.messager.alert('导入成功!', "以下工序:"+response.unmatch+",未查询到匹配工序,若需要,请手动编辑模型添加工序!");
dialog.dialog('destroy');
}else{
alert("导入未完成!");
dialog.dialog('destroy');
}
});
}
</script>
</head>
<body>
<div id="uploader" class="wu-example">
<div class="btns">
<div id="picker">选择文件</div>
</div>
<!--用来存放文件信息-->
<div id="thelist" class="uploader-list"></div>
</div>
</body>
</html>

View File

@ -0,0 +1,96 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page language="java" import="java.util.*" 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"%>
<html>
<head>
<title></title>
<jsp:include page="../inc.jsp"></jsp:include>
<script type="text/javascript">
function dosave(dialog,grid) {
if ($(".form").form('validate')) {
var g = $('#leaveDefinition').combogrid('grid'); // get datagrid object
var r = g.datagrid('getSelected'); // get the selected row
if(r){
$.post(ext.contextPath + "/activiti/leavew/start.do?processId="+r.id, $(".form").serialize(), function(data) {
if (data.res == 1) {
top.$.messager.alert('提示', "保存成功", 'info', function() {
grid.datagrid('reload');
dialog.dialog('destroy');
});
}else if(data.res == 0){
top.$.messager.alert('提示', "保存失败", 'info');
}else{
top.$.messager.alert('提示', data.res, 'info');
}
},'json');
}else{
alert("请选择请假流程");
}
}
}
$(function() {
$('#leaveDefinition').combogrid({
panelWidth: 400,
idField: 'id',
textField: 'id',
url: ext.contextPath +'/activiti/workflow/getProcessListForSelect.do',
columns: [[
{field:'id',title:'流程ID',width:50},
{field:'name',title:'名称',width:50},
{field:'description',title:'描述',width:80},
{field:'revision',title:'版本号',width:30}
]],
fitColumns: true
});
});
</script>
</head>
<body>
<form method="post" class="form">
<table class="table">
<tr>
<td>请假流程:</td>
<td>
<select id="leaveDefinition" name="leaveDefinition" class="easyui-combogrid" >
</select>
<input name="processDefinitionId" type="hidden" value=""/>
</td>
</tr>
<tr>
<td>请假类型:</td>
<td>
<select id="leaveType" name="leaveType" class="easyui-combobox" data-options="panelHeight:'auto'">
<option>公休</option>
<option>病假</option>
<option>调休</option>
<option>事假</option>
<option>婚假</option>
</select>
</td>
</tr>
<tr>
<td>开始时间:</td>
<td><input id="startTime" name="startTime" class="Wdate"
value="" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})"
readonly/></td>
</tr>
<tr>
<td>结束时间:</td>
<td><input id="endTime" name="endTime" class="Wdate"
value="" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})"
readonly/></td>
</tr>
<tr>
<td>请假原因:</td>
<td>
<input id="reason" name="reason" class="easyui-textbox" style="width:100%;height:100px" value=""
data-options="multiline:true" validtype="length[0,250]" invalidMessage="有效长度0-250" />
</td>
</tr>
</table>
</form>
</body>
</html>

View File

@ -0,0 +1,140 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" 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"%>
<%String contextPath = request.getContextPath();%>
<html>
<head>
<title></title>
<jsp:include page="../inc.jsp"></jsp:include>
<script type="text/javascript" src="json2.js"></script>
<script src="<%=contextPath%>/JS/activiti/leave-complete.js" type="text/javascript"></script>
<script type="text/javascript">
function dosave(dialog,grid) {
}
function doreject(dialog,taskId) {
// 设置流程变量
$.messager.prompt('提示', '请填写驳回原因', function(r){
if (r){
complete(dialog,taskId, [{
key: 'deptLeaderPass',
value: false,
type: 'B',
comment:r
}]);
}
});
}
function docomplete(dialog,taskId) {
// 设置流程变量
complete(dialog,taskId, [{
key: 'deptLeaderPass',
value: true,
type: 'B'
}]);
}
function docompleteToSub(dialog,taskId) {
// 设置流程变量
var list=["dept1","dept2"];
var liststr="";
$.each(list, function() {
if (liststr != "") {
liststr += "-";
}
liststr += this;
});
complete(dialog,taskId, [{
key: 'deptLeaderPass',
value: true,
type: 'B'
},{
key: 'CodeList',
value: liststr,
type: 'A'
}]);
}
function doreApply(dialog,taskId) {
// 设置流程变量
complete(dialog,taskId, [{
key: 'reApply',
value: true,
type: 'B'
}]);
}
function dounApply(dialog,taskId) {
// 设置流程变量
complete(dialog,taskId, [{
key: 'reApply',
value: false,
type: 'B'
}]);
}
function doPass(dialog,taskId) {
// 设置流程变量
complete(dialog,taskId, null);
}
function docompleteToCA(dialog,taskId,leaveid) {
complete(dialog,taskId, [{
key: 'deptLeaderPass',
value: true,
type: 'B'
},{
key: 'leaveId',
value: leaveid,
type: 'S'
}]);
}
var advicestr="hrpass";//除了comment其它地方含中文会产生乱码
function docompleteFinishCA(dialog,taskId,advice) {
complete(dialog,taskId, [{
key: 'advice',
value: advicestr,
type: 'S'
}]);
}
$(function() {
});
</script>
</head>
<body>
<form method="post" class="form">
<input name="id" type="hidden" value="${leave.id}"/>
<table class="table">
<tr>
<th>请假类型</th>
<td>
${leave.leaveType}
</td>
</tr>
<tr>
<th>请假开始时间</th>
<td>
${leave.startTime}
</td>
</tr>
<tr>
<th>请假结束时间</th>
<td>
${leave.endTime}
</td>
</tr>
<tr>
<th>请假人员</th>
<td>
${leave.userId}
</td>
</tr>
<tr>
<th>请假原因</th>
<td>
${leave.reason}
</td>
</tr>
</table>
</form>
</body>
</html>

View File

@ -0,0 +1,86 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page language="java" import="java.util.*" 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"%>
<%String contextPath = request.getContextPath();%>
<html>
<head>
<title></title>
<jsp:include page="../inc.jsp"></jsp:include>
<script type="text/javascript" src="json2.js"></script>
<script src="<%=contextPath%>/JS/activiti/leave-complete.js" type="text/javascript"></script>
<script type="text/javascript">
function doreApply(dialog,taskId) {
// 设置流程变量
complete(dialog,taskId, [{
key: 'reApply',
value: true,
type: 'B'
}],$(".form").serialize());
}
function dounApply(dialog,taskId) {
// 设置流程变量
complete(dialog,taskId, [{
key: 'reApply',
value: false,
type: 'B'
}]);
}
$(function() {
$('#leaveType').combobox("setValue",'${leave.leaveType}');
});
</script>
</head>
<body>
<form method="post" class="form">
<input name="id" type="hidden" value="${leave.id}"/>
<div class="easyui-panel" title="审批信息" style="padding:10px;">
<table class="table">
<tr>
<th>领导意见</th>
<td>
${leave.comments[0].message}
</td>
</tr>
</table>
</div>
<br/>
<div class="easyui-panel" title="请假信息" style="padding:10px;">
<table class="table">
<tr>
<td>请假类型:</td>
<td>
<select id="leaveType" name="leaveType" class="easyui-combobox" data-options="panelHeight:'auto'">
<option>公休</option>
<option>病假</option>
<option>调休</option>
<option>事假</option>
<option>婚假</option>
</select>
</td>
</tr>
<tr>
<td>开始时间:</td>
<td><input id="startTime" name="startTime" class="Wdate"
value="${leave.startTime}" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})"
readonly/></td>
</tr>
<tr>
<td>结束时间:</td>
<td><input id="endTime" name="endTime" class="Wdate"
value="${leave.endTime}" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})"
readonly/></td>
</tr>
<tr>
<td>请假原因:</td>
<td>
<input id="reason" name="reason" class="easyui-textbox" style="width:100%;height:100px" value="${leave.reason}"
data-options="multiline:true" validtype="length[0,250]" invalidMessage="有效长度0-250" />
</td>
</tr>
</table>
</div>
</form>
</body>
</html>

View File

@ -0,0 +1,119 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page language="java" import="java.util.*" 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"%>
<html>
<head>
<title></title>
<jsp:include page="../inc.jsp"></jsp:include>
<script type="text/javascript">
function dosave(dialog,grid) {
if ($(".form").form('validate')) {
$.post(ext.contextPath + "/work/group/update.do", $(".form").serialize(), function(data) {
if (data.res == 1) {
top.$.messager.alert('提示', "保存成功", 'info', function() {
grid.datagrid('reload');
dialog.dialog('destroy');
});
}else if(data.res == 0){
top.$.messager.alert('提示', "保存失败", 'info');
}else{
top.$.messager.alert('提示', data.res, 'info');
}
},'json');
}
}
$(function() {
$('#deptid').combotree({
url : ext.contextPath + '/user/getUnitsJson.do?random=' + Math.random(),
parentField : 'pid',
method:'get',
onBeforeSelect:function(node){
if(node.id=="-1"){
$("#deptid").tree("unselect");
}
},
onLoadSuccess:function(){
$('#deptid').combotree('setValue','${group.deptid}');
}
});
var leadernames="",leaderids="",membernames="",memberids="";
<c:forEach var="obj" items="${group.groupmembers}">
if("${obj.usertype}"=="leader"){
leadernames+="${obj.username}"+",";
leaderids+="${obj.userid}"+",";
}
if("${obj.usertype}"=="member"){
membernames+="${obj.username}"+",";
memberids+="${obj.userid}"+",";
}
</c:forEach>
leadernames=leadernames.substring(0,leadernames.length-1);
membernames=membernames.substring(0,membernames.length-1);
$('#leadername').textbox({
required:true,
editable:false,
value:leadernames
});
$('#leadername').textbox('textbox').bind("click",function(){
selectUsers("leadername","leaderid","${param.iframeId}");
});
$('#leaderid').val(leaderids);
$('#membername').textbox({
required:true,
editable:false,
value:membernames
});
$('#membername').textbox('textbox').bind("click",function(){
selectUsers("membername","memberid","${param.iframeId}");
});
$('#memberid').val(memberids);
});
</script>
</head>
<body>
<form method="post" class="form">
<input name="id" type="hidden" value="${group.id}"/>
<table class="table">
<tr>
<th>班组名称</th>
<td><input name="name" class="easyui-textbox"
data-options="required:true,validType:'isBlank'" value="${group.name}" />
</td>
</tr>
<tr>
<th>所属车间</th>
<td><input id="deptid" name="deptid" class="easyui-combobox"
data-options="required:true,validType:'isBlank'" value="" />
</td>
</tr>
<tr>
<th>组长</th>
<td>
<input id="leadername" name="leadername" class="easyui-textbox"/>
<input id="leaderid" name="leaderid" type="hidden"/>
</td>
</tr>
<tr>
<th>组员</th>
<td>
<textarea id="membername" name="membername" class="easyui-textbox" data-options="multiline:true"
style="height:100px;width:100%"></textarea>
<input id="memberid" name="memberid" type="hidden"/>
</td>
</tr>
<tr>
<th>备注</th>
<td>
<textarea name="remark" class="easyui-textbox" data-options="multiline:true" style="height:100px;width:100%"
validtype="length[0,250]" invalidMessage="有效长度0-250">${group.remark}</textarea>
</td>
</tr>
</table>
</form>
</body>
</html>

View File

@ -0,0 +1,223 @@
<%@page import="org.apache.poi.ss.usermodel.Row"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.sipai.tools.SessionManager"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%
SessionManager sessionManager = new SessionManager();
%>
<%String contextPath = request.getContextPath();%>
<!DOCTYPE html>
<html>
<head>
<title></title>
<jsp:include page="/jsp/inc.jsp"></jsp:include>
<script src="<%=contextPath%>/JS/activiti/workflow.js" type="text/javascript"></script>
<script type="text/javascript">
var grid;
var addFun = function() {
var dialog = parent.ext.modalDialog({
iframeId:'iframeadd',
title : '添加班组',
url : ext.contextPath + '/activiti/leavew/add.do',
buttons : [ {
text : '保存',
handler : function() {
dialog.find('iframe').get(0).contentWindow.dosave(dialog, grid);
}
} ]
});
};
var editFun = function(id) {
var dialog = parent.ext.modalDialog({
iframeId:'iframeedit',
title : '编辑班组',
url : ext.contextPath + '/work/group/edit.do?iframeId=iframeedit&id=' + id,
buttons : [ {
text : '保存',
handler : function() {
dialog.find('iframe').get(0).contentWindow.dosave(dialog, grid);
}
} ]
});
};
var viewFun = function(pid,ppid) {
/* var dialog = parent.ext.modalDialog({
title : '查看用户信息',
url : ext.contextPath + '/work/group/view.do?id=' + id
}); */
//alert(pid+","+ppid);
graphTrace("",pid,ppid);
};
var suspendFun = function(id,status) {
var tip="";
if(status=="active"){
tip="激活";
}else{
tip="挂起";
}
parent.$.messager.confirm('提示', '您确定要'+tip+'此记录?', function(r) {
if (r) {
$.post(ext.contextPath + '/activiti/workflow/processinstance/update.do', {processInstanceId : id,state:status}, function(data) {
if(data==1){
parent.$.messager.alert('提示',tip+'成功','info',function(){
grid.datagrid('reload');
});
}else{
parent.$.messager.alert('提示',tip+'失败','info');
}
});
}
});
};
var deletesFun = function() {
var checkedItems = $('#grid').datagrid('getChecked');
var datas="";
$.each(checkedItems, function(index, item){
datas+=item.id+",";
});
//alert(datas);
if(datas==""){
top.$.messager.alert('提示', '请先选择要删除的记录','info');
}else{
parent.$.messager.confirm('提示', '您确定要删除此记录?', function(r) {
if (r) {
$.post(ext.contextPath + '/work/group/deletes.do', {ids:datas} , function(data) {
if(data>0){
parent.$.messager.alert('提示','成功删除'+data+'条记录','info',function(){
grid.datagrid('reload');
grid.datagrid('clearChecked');
});
}else{
parent.$.messager.alert('提示','删除失败','info');
}
});
}
});
}
};
$(function() {
grid = $('#grid').datagrid({
title : '',
url : ext.contextPath + '/activiti/leavew/getlist.do',
striped : true,
rownumbers : true,
pagination : true,
singleSelect: false,
ctrlSelect:true,
selectOnCheck: false,
checkOnSelect: false,
idField : 'id',
pageSize : 50,
pageList : [ 20, 50, 100],
columns : [ [
{checkbox:true , field : 'ck'},
{width : '100', title : '请假类型', field : 'leaveType', sortable : true, halign:'center'},
{width : '180', title : '申请时间', field : 'applyTime', sortable : true, halign:'center'},
{width : '280', title : '申请原因', field : 'reason', sortable : false, halign:'center'},
{width : '80', title : '用户名', field : 'userId', sortable : true, halign:'center'},
{width : '150', title : '流程ID', field : 'processDefinitionId', sortable : true, halign:'center',formatter : function(value, row) {
return row.processDefinition.id;
}},
{width : '150', title : '是否挂起', field : 'suspended', sortable : true, halign:'center',formatter : function(value, row) {
var suspend=row.processInstance.suspended;
if(suspend=='2'){
return "已挂起";
}else{
return "未挂起";
}
}},
{title : '操作', field : 'action', width : '120', halign:'center', align:'center', formatter : function(value, row) {
var str = '';
<%if (sessionManager.havePermission(session,"activiti/leavew/showlist.do?scope=all")) {%>
//alert(!row.task.assignee);
str += '<img class="iconImg ext-icon-table" title="查看" onclick="viewFun(\''+row.processInstanceId+'\',\''+row.processDefinition.id+'\');"/>';
<%}%>
<%if (sessionManager.havePermission(session,"activiti/leavew/edit.do")) {%>
if(row.processInstance.suspended=="2")
str += '<img class="iconImg ext-icon-table_lightning" title="激活" onclick="suspendFun(\''+row.processInstanceId+'\',\'active\');"/>';
else
str += '<img class="iconImg ext-icon-table_link" title="挂起" onclick="suspendFun(\''+row.processInstanceId+'\',\'suspend\');"/>';
<%}%>
return str;
}
}
] ],
toolbar : '#toolbar',
onLoadSuccess : function(data) {
$('.iconImg').attr('src', ext.pixel_0);
}
});
//var pi;
var pager = grid.datagrid('getPager'); // get the pager of datagrid
pager.pagination({
beforePageText: '第', //页数文本框前显示的汉字
afterPageText: '页 共 {pages} 页',
displayMsg: '显示 {from}到{to},共 {total} 条记录',
});
$('#search_pid').combotree({
url : ext.contextPath + '/user/getUnitsJson.do?random=' + Math.random(),
parentField : 'pid',
method:'get',
width:200,
onBeforeSelect:function(node){
if(node.id=="-1"){
$("#search_pid").tree("search_pid");
}
},
editable:false
});
});
</script>
</head>
<body class="easyui-layout" data-options="fit:true,border:false">
<div id="toolbar" style="display: none;">
<table>
<tr>
<td>
<table>
<tr>
<%if (sessionManager.havePermission(session,"work/group/add.do")) {%>
<td>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'icon-add',plain:true"
onclick="addFun();">添加</a>
</td>
<%}%>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<form id="searchForm">
<table class="tooltable">
<tr>
<td>班组名称</td>
<td><input name="search_name" class="easyui-textbox" /></td>
<td>所属车间</td>
<td><input id="search_pid" name="search_pid" class="easyui-combotree"/></td>
<td>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'ext-icon-search',plain:true"
onclick="grid.datagrid('load',ext.serializeObject($('#searchForm')));">搜索</a>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'icon-reload',plain:true"
onclick="$('#searchForm').form('clear');grid.datagrid('load',{});">重置</a>
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div>
<div data-options="region:'center',fit:true,border:false">
<table id="grid" data-options="fit:true,border:false"></table>
</div>
</body>
</html>

View File

@ -0,0 +1,341 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.sipai.tools.SessionManager"%>
<%
SessionManager sessionManager = new SessionManager();
%>
<%String contextPath = request.getContextPath();%>
<!DOCTYPE html>
<html>
<head>
<title></title>
<jsp:include page="/jsp/inc.jsp"></jsp:include>
<%-- <script src="<%=contextPath%>/JS/activiti/leave-todo.js" type="text/javascript"></script> --%>
<script type="text/javascript">
var grid;
var addFun = function() {
var dialog = parent.ext.modalDialog({
iframeId:'iframeadd',
title : '添加班组',
url : ext.contextPath + '/activiti/leavew/add.do',
buttons : [ {
text : '保存',
handler : function() {
dialog.find('iframe').get(0).contentWindow.dosave(dialog, grid);
}
} ]
});
};
var completeFun = function(leaveid,taskId,tdkey,name) {
switch(tdkey)
{
case 'deptLeaderAudit':
deptLeaderAuditFun(leaveid,taskId);
break;
case 'deptLeaderAuditToSub':
deptLeaderAuditFunToSub(leaveid,taskId);
break;
case 'deptLeaderAuditToCA':
deptLeaderAuditFunToCA(leaveid,taskId);
break;
case 'modifyApply':
modifyApplyFun(leaveid,taskId,'deptLeaderAudit');
break;
case 'hrAudit':
hrAuditFun(leaveid,taskId);
break;
case 'hrAuditCA':
hrAuditCAFun(leaveid,taskId);
break;
default:
alert("未查询到“"+tdkey+"”任务模块!");
}
};
var deptLeaderAuditFunToSub = function(leaveid,taskId) {
var dialog = top.ext.modalDialog({
title : '任务办理',
width : 500,
height : 300,
resizable:true,
url : ext.contextPath + '/activiti/leavew/getleavedetail.do?id='+leaveid,
buttons : [ {
text : '通过',
handler : function() {
dialog.find('iframe').get(0).contentWindow.docompleteToSub(dialog, taskId);
}
},{
text : '驳回',
handler : function() {
dialog.find('iframe').get(0).contentWindow.doreject(dialog,taskId);
}
},{
text : '取消',
handler : function() {
dialog.dialog('destroy');
}
} ]
});
dialog.dialog({
onDestroy:function(){
grid.datagrid('reload');
grid.datagrid('clearChecked');
}
});
};
var deptLeaderAuditFunToCA = function(leaveid,taskId) {
var dialog = top.ext.modalDialog({
title : '任务办理',
width : 500,
height : 300,
resizable:true,
url : ext.contextPath + '/activiti/leavew/getleavedetail.do?id='+leaveid,
buttons : [ {
text : '通过',
handler : function() {
dialog.find('iframe').get(0).contentWindow.docompleteToCA(dialog, taskId,leaveid);
}
},{
text : '驳回',
handler : function() {
dialog.find('iframe').get(0).contentWindow.doreject(dialog,taskId);
}
},{
text : '取消',
handler : function() {
dialog.dialog('destroy');
}
} ]
});
dialog.dialog({
onDestroy:function(){
grid.datagrid('reload');
grid.datagrid('clearChecked');
}
});
};
var deptLeaderAuditFun = function(leaveid,taskId) {
var dialog = top.ext.modalDialog({
title : '任务办理',
width : 500,
height : 300,
resizable:true,
url : ext.contextPath + '/activiti/leavew/getleavedetail.do?id='+leaveid,
buttons : [ {
text : '通过',
handler : function() {
dialog.find('iframe').get(0).contentWindow.docomplete(dialog, taskId);
}
},{
text : '驳回',
handler : function() {
dialog.find('iframe').get(0).contentWindow.doreject(dialog,taskId);
}
},{
text : '取消',
handler : function() {
dialog.dialog('destroy');
}
} ]
});
dialog.dialog({
onDestroy:function(){
grid.datagrid('reload');
grid.datagrid('clearChecked');
}
});
};
var modifyApplyFun = function(leaveid,taskId,taskKey) {
var dialog = top.ext.modalDialog({
title : '任务办理',
width : 500,
height : 500,
resizable:true,
url : ext.contextPath + '/activiti/leavew/detail-with-vars.do?id='+leaveid+'&taskId='+taskId+'&taskKey='+taskKey,
buttons : [ {
text : '调整申请',
handler : function() {
dialog.find('iframe').get(0).contentWindow.doreApply(dialog, taskId);
}
},{
text : '取消申请',
handler : function() {
dialog.find('iframe').get(0).contentWindow.dounApply(dialog,taskId);
}
},{
text : '取消',
handler : function() {
dialog.dialog('destroy');
}
} ]
});
dialog.dialog({
onDestroy:function(){
grid.datagrid('reload');
grid.datagrid('clearChecked');
}
});
};
var hrAuditFun = function(leaveid,taskId) {
var dialog = top.ext.modalDialog({
title : 'HR审批',
width : 500,
height : 500,
resizable:true,
url : ext.contextPath + '/activiti/leavew/getleavedetail.do?id='+leaveid,
buttons : [ {
text : '通过',
handler : function() {
dialog.find('iframe').get(0).contentWindow.doPass(dialog, taskId);
}
},{
text : '取消',
handler : function() {
dialog.dialog('destroy');
}
} ]
});
dialog.dialog({
onDestroy:function(){
grid.datagrid('reload');
grid.datagrid('clearChecked');
}
});
};
var hrAuditCAFun = function(leaveid,taskId) {
var dialog = top.ext.modalDialog({
title : 'HR审批',
width : 500,
height : 500,
resizable:true,
url : ext.contextPath + '/activiti/leavew/getleavedetail.do?id='+leaveid,
buttons : [ {
text : '通过',
handler : function() {
dialog.find('iframe').get(0).contentWindow.docompleteFinishCA(dialog, taskId);
}
},{
text : '取消',
handler : function() {
dialog.dialog('destroy');
}
} ]
});
dialog.dialog({
onDestroy:function(){
grid.datagrid('reload');
grid.datagrid('clearChecked');
}
});
};
var claimFun = function(id) {
$.post(ext.contextPath + '/activiti/leavew/task/claim.do', {taskId : id}, function(data) {
if(data==1){
parent.$.messager.alert('提示','签收成功','info',function(){
grid.datagrid('reload');
});
}else{
parent.$.messager.alert('提示','签收失败','info');
}
});
};
$(function() {
grid = $('#grid').datagrid({
title : '',
url : ext.contextPath + '/activiti/leavew/gettasklist.do',
striped : true,
rownumbers : true,
pagination : true,
singleSelect: false,
ctrlSelect:true,
selectOnCheck: false,
checkOnSelect: false,
idField : 'id',
pageSize : 50,
pageList : [ 20, 50, 100],
columns : [ [
{checkbox:true , field : 'ck'},
{width : '100', title : '请假类型', field : 'leaveType', sortable : true, halign:'center'},
{width : '180', title : '申请时间', field : 'applyTime', sortable : true, halign:'center'},
{width : '280', title : '申请原因', field : 'reason', sortable : false, halign:'center'},
{width : '180', title : '任务下发时间', field : 'createTime', sortable : false, halign:'center', formatter : function(value, row) {
return row.task.createTime;
}},
{width : '180', title : '任务节点', field : 'taskName', sortable : false, halign:'center', formatter : function(value, row) {
return row.task.name;
}},
{width : '80', title : '用户名', field : 'userId', sortable : true, halign:'center'},
{title : '操作', field : 'action', width : '120', halign:'center', align:'center', formatter : function(value, row) {
var str = '';
<%if (sessionManager.havePermission(session,"activiti/leavew/edit.do")) {%>
if(!row.task.assignee){
str += '<img class="iconImg ext-icon-table_edit" title="签收" onclick="claimFun(\''+row.task.id+'\');"/>';
}else{
str += '<img class="iconImg ext-icon-table_go" title="办理" onclick="completeFun(\''+row.id+'\',\''+row.task.id+'\',\''+row.task.taskDefinitionKey+'\',\''+row.task.name+'\');"/>';
}
<%}%>
return str;
}
}
] ],
toolbar : '#toolbar',
onLoadSuccess : function(data) {
$('.iconImg').attr('src', ext.pixel_0);
}
});
$('#search_pid').combotree({
url : ext.contextPath + '/user/getUnitsJson.do?random=' + Math.random(),
parentField : 'pid',
method:'get',
width:200,
onBeforeSelect:function(node){
if(node.id=="-1"){
$("#search_pid").tree("search_pid");
}
},
editable:false
});
});
</script>
</head>
<body class="easyui-layout" data-options="fit:true,border:false">
<div id="toolbar" style="display: none;">
<table>
<tr>
<td>
</td>
</tr>
<tr>
<td>
<form id="searchForm">
<table class="tooltable">
<tr>
<td>班组名称</td>
<td><input name="search_name" class="easyui-textbox" /></td>
<td>所属车间</td>
<td><input id="search_pid" name="search_pid" class="easyui-combotree"/></td>
<td>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'ext-icon-search',plain:true"
onclick="grid.datagrid('load',ext.serializeObject($('#searchForm')));">搜索</a>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'icon-reload',plain:true"
onclick="$('#searchForm').form('clear');grid.datagrid('load',{});">重置</a>
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div>
<div data-options="region:'center',fit:true,border:false">
<table id="grid" data-options="fit:true,border:false"></table>
</div>
<!-- 部门领导审批 -->
<div id="deptLeaderAudit" style="display: none">
<!-- table用来显示信息方便办理任务 -->
<%@include file="view-form.jsp" %>
</div>
</body>
</html>

View File

@ -0,0 +1,66 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page language="java" import="java.util.*" 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"%>
<html>
<head>
<title></title>
<jsp:include page="../inc.jsp"></jsp:include>
<script type="text/javascript">
function dosave(fdialog,grid) {
if ($(".form").form('validate')) {
$.post(ext.contextPath + '/activiti/workflow/model/create.do', $(".form").serialize(), function(data) {
if(data!=''){
var dialog = parent.ext.modalDialog({
iframeId:'iframeedit',
title : '编辑模型',
url : ext.contextPath + '/modeler.html?modelId='+data,
buttons : [ {
text : '关闭',
handler : function() {
grid.datagrid('reload');
dialog.dialog('destroy');
fdialog.dialog('destroy');
}
} ]
});
}else{
parent.$.messager.alert('提示','未查询到模型Id','info');
}
});
}
}
$(function() {
});
</script>
</head>
<body>
<form method="post" class="form">
<table class="table">
<tr>
<th>流程模型名称</th>
<td><input name="name" class="easyui-textbox"
data-options="required:true,validType:'isBlank'" value="" />
</td>
</tr>
<!-- <tr>
<th>流程模型代码</th>
<td><input name="key" class="easyui-textbox"
data-options="required:true,validType:'isBlank'" value="" />
</td>
</tr> -->
<tr>
<th>描述</th>
<td>
<input name="description" class="easyui-textbox" style="width:100%;height:100px" value=""
data-options="multiline:true" validtype="length[0,250]" invalidMessage="有效长度0-250" />
</td>
</tr>
</table>
</form>
</body>
</html>

View File

@ -0,0 +1,325 @@
<%@page import="org.apache.poi.ss.usermodel.Row"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.sipai.tools.SessionManager"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%
SessionManager sessionManager = new SessionManager();
%>
<%String contextPath = request.getContextPath();%>
<!DOCTYPE html>
<html>
<head>
<title></title>
<jsp:include page="/jsp/inc.jsp"></jsp:include>
<script src="<%=contextPath%>/JS/activiti/workflow.js" type="text/javascript"></script>
<script type="text/javascript">
var grid;
var addFun = function() {
var dialog = parent.ext.modalDialog({
iframeId:'iframeedit',
title : '新增模型',
width: 500,
height:250,
url : ext.contextPath + '/activiti/workflow/model/addModel.do',
buttons : [ {
text : '保存',
handler : function() {
dialog.find('iframe').get(0).contentWindow.dosave(dialog,grid);
grid.datagrid('reload');
}
} ]
});
};
var editFun = function(id) {
var dialog = parent.ext.modalDialog({
iframeId:'iframeedit',
title : '编辑模型',
width:1000,
url : ext.contextPath + '/modeler.html?modelId=' + id,
buttons : [ {
text : '关闭',
handler : function() {
grid.datagrid('reload');
dialog.dialog('destroy');
}
} ]
});
};
var copyFun = function(id) {
parent.$.messager.confirm('提示', '您确定要为该模型生成副本?', function(r) {
if (r) {
$.post(ext.contextPath + '/activiti/workflow/model/copycreat.do', {id : id}, function(data) {
if(data==1){
parent.$.messager.alert('提示','生成成功','info',function(){
grid.datagrid('reload');
grid.datagrid('clearChecked');
});
}else{
parent.$.messager.alert('提示','生成失败','info');
}
});
}
});
};
var deployFun = function(id) {
$.post(ext.contextPath + '/activiti/workflow/model/deploy.do',{modelId:id}, function(data) {
if(data.res=="1"){
if(data.restr!=""){
parent.$.messager.alert('部署成功',data.restr,'info');
}else{
parent.$.messager.alert('提示','部署成功','info');
}
}else{
parent.$.messager.alert('提示','部署失败','info');
}
},'json');
};
var viewFun = function(id) {
var dialog = parent.ext.modalDialog({
iframeId:'iframeedit',
title : '模型管控',
url : ext.contextPath + '/activiti/workflow/model/showProcessTechnicsList.do?modelid=' + id,
buttons : [ {
text : '关闭',
handler : function() {
//grid.datagrid('reload');
dialog.dialog('destroy');
}
} ]
});
};
var deleteFun = function(id) {
parent.$.messager.confirm('提示', '您确定要删除此模型?', function(r) {
if (r) {
$.post(ext.contextPath + '/activiti/workflow/model/delete.do', {id : id}, function(data) {
if(data==1){
parent.$.messager.alert('提示','删除成功','info',function(){
grid.datagrid('reload');
grid.datagrid('clearChecked');
});
}else{
parent.$.messager.alert('提示','删除失败','info');
}
});
}
});
};
var deletesFun = function() {
var checkedItems = $('#grid').datagrid('getChecked');
var datas="";
$.each(checkedItems, function(index, item){
datas+=item.id+",";
});
//alert(datas);
if(datas==""){
top.$.messager.alert('提示', '请先选择要删除的记录','info');
}else{
parent.$.messager.confirm('提示', '您确定要删除此记录?', function(r) {
if (r) {
$.post(ext.contextPath + '/work/group/deletes.do', {ids:datas} , function(data) {
if(data>0){
parent.$.messager.alert('提示','成功删除'+data+'条记录','info',function(){
grid.datagrid('reload');
grid.datagrid('clearChecked');
});
}else{
parent.$.messager.alert('提示','删除失败','info');
}
});
}
});
}
};
var suspendFun = function(id,status) {
var tip="";
if(status=="active"){
tip="激活";
}else{
tip="挂起";
}
parent.$.messager.confirm('提示', '您确定要'+tip+'此记录?', function(r) {
if (r) {
$.post(ext.contextPath + '/activiti/workflow/processdefinition/update.do', {processDefinitionId : id,state:status}, function(data) {
if(data==1){
parent.$.messager.alert('提示',tip+'成功','info',function(){
grid.datagrid('reload');
});
}else{
parent.$.messager.alert('提示',tip+'失败','info');
}
});
}
});
};
function FormatDate (strTime) {
var date = new Date(strTime);
return date.Format("yyyy-MM-dd hh:mm:ss");
}
$(function() {
grid = $('#grid').datagrid({
title : '',
url : ext.contextPath + '/activiti/workflow/model/getModelList.do',
striped : true,
rownumbers : true,
pagination : true,
singleSelect: false,
ctrlSelect:true,
selectOnCheck: false,
checkOnSelect: false,
idField : 'id',
pageSize : 50,
pageList : [ 20, 50, 100],
columns : [ [
{checkbox:true , field : 'ck'},
{width : '100', title : '模型ID', field : 'id', sortable : false, halign:'center'},
{width : '180', title : '模型名称', field : 'name', sortable : false, halign:'center'},
{width : '200', title : '模型key', field : 'key', sortable : false, halign:'center'},
{width : '180', title : '创建时间', field : 'createTime', sortable : false, halign:'center', formatter : function(value, row) {
return FormatDate(value.time);
}},
/* {width : '180', title : '流程描述', field : 'description', sortable : true, halign:'center'}, */
{width : '100', title : '版本号', field : 'version', sortable : false, halign:'center'},
{title : '操作', field : 'action', width : '160', halign:'center', align:'center', formatter : function(value, row) {
var str = '';
<%if (sessionManager.havePermission(session,"activiti/workflow/model/showlist.do?scope=all")) {%>
str += '<img class="iconImg ext-icon-table_sort" title="查看管控内容" onclick="viewFun(\''+row.id+'\');"/>';
<%}%>
<%if (sessionManager.havePermission(session,"activiti/workflow/model/edit.do")) {%>
str += '<img class="iconImg ext-icon-table_edit" title="编辑" onclick="editFun(\''+row.id+'\');"/>';
str += '<img class="iconImg ext-icon-table_multiple" title="复制" onclick="copyFun(\''+row.id+'\');"/>';
<%}%>
<%if (sessionManager.havePermission(session,"activiti/workflow/model/edit.do")) {%>
str += '<img class="iconImg ext-icon-table_go" title="部署" onclick="deployFun(\''+row.id+'\');"/>';
<%}%>
<%if (sessionManager.havePermission(session,"activiti/workflow/model/delete.do")) {%>
str += '<img class="iconImg ext-icon-table_delete" title="删除" onclick="deleteFun(\''+row.id+'\');"/>';
<%}%>
return str;
}
}
] ],
toolbar : '#toolbar',
onLoadSuccess : function(data) {
$('.iconImg').attr('src', ext.pixel_0);
}
});
});
var importFun = function() {
var dest='/activiti/workflow/model/saveImportModel.do';
var dialog = parent.ext.modalDialog({
title : '选择文件',
width: 600,
height:300,
closeOnEscape:true,
url : ext.contextPath + '/activiti/workflow/model/doimportExcel.do?dest='+dest,
buttons : [ {
text : '上传',
handler : function() {
dialog.find('iframe').get(0).contentWindow.doimport(dialog, grid);
}
} ]
});
};
//同步
var synchroFun = function() {
var dialog = parent.ext.modalDialog({
title : '选择产品',
closeOnEscape:true,
url : ext.contextPath + '/material/materialinfo/showPLMProducts.do',
buttons : [ {
text : '确认',
handler : function() {
var data =dialog.find('iframe').get(0).contentWindow.selectOK(dialog, grid);
//console.log(data.materialcode)
dialog.dialog("destroy");
$.post(ext.contextPath + '/activiti/workflow/model/savePLMProcess.do', {code : data.materialcode}, function(data) {
if(data.res=="1"){
if(data.unmatch==""){
parent.$.messager.alert('提示','同步成功','info',function(){
grid.datagrid('reload');
});
}else{
top.$.messager.alert('导入成功!', "以下工序:"+data.unmatch+",未查询到匹配工序,若需要,请手动编辑模型添加工序!");
grid.datagrid('reload');
}
}else{
if(data.reason!=null && data.reason!=""){
parent.$.messager.alert('同步失败',data.reason,'info');
}else{
parent.$.messager.alert('提示','同步失败','info');
}
}
},'json');
}
} ]
});
};
</script>
</head>
<body class="easyui-layout" data-options="fit:true,border:false">
<div id="toolbar" style="display: none;">
<table>
<tr>
<td>
<table>
<tr>
<td>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'icon-add',plain:true"
onclick="addFun();">新增</a>
</td>
<td>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'ext-icon-table_add',plain:true"
onclick="importFun();">导入</a>
</td>
<td>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'ext-icon-table_save',plain:true"
onclick="synchroFun();">同步</a>
</td>
<%--
<%if (sessionManager.havePermission(session,"work/group/delete.do")) {%>
<td>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'icon-remove',plain:true"
onclick="deletesFun();">删除</a>
</td>
<%}%> --%>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<form id="searchForm">
<table class="tooltable">
<tr>
<td>模型名称</td>
<td><input name="search_name" class="easyui-textbox" /></td>
<td>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'ext-icon-search',plain:true"
onclick="grid.datagrid('load',ext.serializeObject($('#searchForm')));">搜索</a>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'icon-reload',plain:true"
onclick="$('#searchForm').form('clear');grid.datagrid('load',{});">重置</a>
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div>
<div data-options="region:'center',fit:true,border:false">
<table id="grid" data-options="fit:true,border:false"></table>
</div>
</body>
</html>

View File

@ -0,0 +1,103 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.sipai.tools.SessionManager"%>
<%
SessionManager sessionManager = new SessionManager();
%>
<!DOCTYPE html>
<html>
<head>
<title></title>
<jsp:include page="/jsp/inc.jsp"></jsp:include>
<script type="text/javascript">
var grid;
$(function() {
grid = $('#grid').datagrid({
title : '',
url : ext.contextPath + '/activiti/workflow/getProcessDefinitionListForSelect.do',
striped : true,
rownumbers : true,
pagination : true,
selectOnCheck: true,
checkOnSelect: true,
singleSelect:true,
idField : 'id',
pageSize : 50,
pageList : [ 20, 50, 100],
columns : [ [
{checkbox:true , field : 'ck'},
{width : '100', title : '流程名称', field : 'name', sortable : true, halign:'center',formatter:function(value, row){
return row.processDefinition.name;
}},
{width : '180', title : '流程描述', field : 'description', sortable : true, halign:'center',formatter:function(value, row){
return row.processDefinition.description;
}},
{width : '180', title : '流程ID', field : 'id', sortable : false, halign:'center',formatter:function(value, row){
return row.processDefinition.id;
}},
{width : '180', title : '部署时间', field : 'deploymentTime', sortable : true, halign:'center',formatter:function(value, row){
return row.deployment.deploymentTime;
}},
{width : '100', title : '版本号', field : 'revision', sortable : true, halign:'center',formatter:function(value, row){
return row.processDefinition.revision;
}}
] ],
toolbar : '#toolbar',
onLoadSuccess : function(data) {
$('.iconImg').attr('src', ext.pixel_0);
}
});
});
function selectOK() {
//以json格式返回数据
var jsonstr = "";
var idstr = "";
var idname = "";
var rows = $('#grid').datagrid('getSelections');
for(var i=0; i<rows.length; i++){
idstr += rows[i].processDefinition.id+",";
idname+= rows[i].processDefinition.name+",";
}
if(idstr.length>0){
idstr = idstr.substring(0,idstr.length-1);
idname = idname.substring(0,idname.length-1);
}
jsonstr = '{"id":"'+idstr+'","name":"'+idname+'"}';
var dataset = $.parseJSON(jsonstr);
return dataset;
}
function datagridload() {
$('#searchForm').serialize() // alert(弹出提示框)
grid.datagrid('load',ext.contextPath + '/activiti/workflow/getProcessDefinitionListForSelect.do?'+$('#searchForm').serialize());
}
</script>
</head>
<body class="easyui-layout" data-options="fit:true,border:false">
<div id="toolbar" style="display: none;">
<table>
<tr>
<td>
<form id="searchForm">
<table class="tooltable">
<tr>
<td>流程名称</td>
<td><input id="search_name" name="search_name" class="easyui-textbox" /></td>
<td>流程ID</td>
<td><input id="search_code" name="search_code" class="easyui-textbox" /></td>
<td>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'ext-icon-search',plain:true"
onclick="datagridload();">搜索</a>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'icon-reload',plain:true"
onclick="$('#searchForm').form('clear');grid.datagrid('load',{});">重置</a>
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div>
<div data-options="region:'center',fit:true,border:false">
<table id="grid" data-options="fit:true,border:false"></table>
</div>
</body>
</html>

View File

@ -0,0 +1,344 @@
<%@page import="com.sipai.service.plan.DailyPlanService"%>
<%@page import="com.sipai.entity.plan.DailyPlanTaskDemand"%>
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="com.sipai.tools.SessionManager"%>
<%
SessionManager sessionManager = new SessionManager();
%>
<%String contextPath = request.getContextPath();%>
<% request.setAttribute("Type_Produce", DailyPlanService.processDefKey);%>
<%request.setAttribute("Flag_Start",DailyPlanTaskDemand.Flag_Start);%>
<%request.setAttribute("Flag_Report",DailyPlanTaskDemand.Flag_Report);%>
<%request.setAttribute("Flag_CarryOver",DailyPlanTaskDemand.Flag_CarryOver);%>
<!DOCTYPE html>
<html>
<head>
<title></title>
<jsp:include page="/jsp/inc.jsp"></jsp:include>
<%-- <script src="<%=contextPath%>/JS/activiti/leave-todo.js" type="text/javascript"></script> --%>
<script src="<%=contextPath%>/JS/activiti/workflow.js" type="text/javascript"></script>
<script type="text/javascript">
var grid;
var addFun = function() {
var dialog = parent.ext.modalDialog({
iframeId:'iframeadd',
title : '添加班组',
url : ext.contextPath + '/activiti/leavew/add.do',
buttons : [ {
text : '保存',
handler : function() {
dialog.find('iframe').get(0).contentWindow.dosave(dialog, grid);
}
} ]
});
};
var completeFun = function(leaveid,taskId,tdkey,name) {
switch(tdkey)
{
case 'deptLeaderAudit':
deptLeaderAuditFun(leaveid,taskId);
break;
case 'deptLeaderAuditToSub':
deptLeaderAuditFunToSub(leaveid,taskId);
break;
case 'deptLeaderAuditToCA':
deptLeaderAuditFunToCA(leaveid,taskId);
break;
case 'modifyApply':
modifyApplyFun(leaveid,taskId,'deptLeaderAudit');
break;
case 'hrAudit':
hrAuditFun(leaveid,taskId);
break;
case 'hrAuditCA':
hrAuditCAFun(leaveid,taskId);
break;
default:
alert("未查询到“"+tdkey+"”任务模块!");
}
};
var gotoTaskFun = function(type,tdkey,taskId) {
if(type=='${Type_Produce}'){
switch(tdkey)
{
case 'DrawDailyPlan':
doLook();
break;
case 'deptLeaderAudit':
doLookOperate();
break;
case 'IssueWorkOrder':
showWorkOrders();
break;
case 'StartWork':
dostart(taskId);
break;
case 'HandUp':
doreport(taskId);
break;
case 'CarryOver':
docarryover(taskId);
break;
default:
alert("未查询到任务模块!");
}
}else{
alert("未查询到任务模块!");
}
};
var doLook = function() {
var nowdate = new Date();
var dt=nowdate.Format('yyyy-MM-dd');//月日必须都是两位
var dialog = parent.ext.modalDialog({
id:'viewDialog',
iframeId:'view',
title : '查看计划',
height:"90%",
width:"90%",
url : ext.contextPath + '/plan/dailyplansummary/showlist.do?dt='+dt,
onDestroy:function(){
grid.datagrid('reload');
}
});
};
var doLookOperate = function() {
var nowdate = new Date();
var dt=nowdate.Format('yyyy-MM-dd');//月日必须都是两位
var dialog = parent.ext.modalDialog({
id:'viewDialog',
iframeId:'view',
title : '查看计划',
height:"90%",
width:"90%",
url : ext.contextPath + '/plan/dailyplansummary/showlistoperate.do?dt='+dt,
onDestroy:function(){
grid.datagrid('reload');
}
});
};
var showWorkOrders = function() {
var dialog = parent.ext.modalDialog({
id:'viewDialog',
iframeId:'view',
title : '任务调度',
height:"90%",
width:"90%",
url : ext.contextPath + '/work/workorder/showlist.do',
onDestroy:function(){
grid.datagrid('reload');
}
});
};
//开工 taskId为activiti的taskid
var dostart = function(taskId) {
$.post(ext.contextPath + '/work/workorder/doupdate_taskdemand.do', {taskId : taskId,status:'${Flag_Start}'}, function(data) {
if(data==1){
parent.$.messager.alert('提示','开工成功','info',function(){
grid.datagrid('reload');
grid.datagrid('unselectAll');
});
}else{
parent.$.messager.alert('提示','开工失败','info');
}
});
};
//报工
var doreport=function(taskId){
var dialog = parent.ext.modalDialog({
title : '工单报工',
width: 400,
height:500,
url : ext.contextPath + '/work/workorder/showworkorder_carryover.do?taskId='+taskId+'&status=${Flag_Report}',
buttons : [{
text : '确定',
iconCls:'icon-ok',
handler : function() {
dialog.find('iframe').get(0).contentWindow.dosave(dialog,grid);
grid.datagrid('unselectAll');
}
},
{
text : '取消',
iconCls:'icon-cancel',
handler : function() {
dialog.dialog('destroy');
}
}
]
});
};
//工单结转
var docarryover=function(taskId){
var dialog = parent.ext.modalDialog({
title : '工单结转',
width: 400,
height:500,
url : ext.contextPath + '/work/workorder/showworkorder_carryover.do?taskId='+taskId+'&status=${Flag_CarryOver}',
buttons : [{
text : '确定',
iconCls:'icon-ok',
handler : function() {
dialog.find('iframe').get(0).contentWindow.dosave(dialog,grid);
grid.datagrid('unselectAll');
}
},
{
text : '取消',
iconCls:'icon-cancel',
handler : function() {
dialog.dialog('destroy');
}
}
]
});
};
var claimFun = function(id) {
$.post(ext.contextPath + '/activiti/leavew/task/claim.do', {taskId : id}, function(data) {
if(data==1){
parent.$.messager.alert('提示','签收成功','info',function(){
grid.datagrid('reload');
grid.datagrid('unselectAll');
});
}else{
parent.$.messager.alert('提示','签收失败','info');
}
});
};
var viewFun = function(pid,ppid,taskId) {
graphTrace(pid,ppid,taskId);
};
var deleteFun = function(id) {
parent.$.messager.confirm('提示', '您确定要删除此记录?流程删除后将无法恢复。', function(r) {
if (r) {
$.post(ext.contextPath + '/activiti/workflow/process/delProcessInstance.do', {id : id}, function(data) {
if(data==1){
top.$.messager.alert('提示','删除成功','info');
grid.datagrid('reload');
grid.datagrid('unselectAll');
}else{
top.$.messager.alert('提示','删除失败','info');
}
});
}
});
};
var searchgrid = function() {
grid.datagrid('reload',ext.contextPath + '/activiti/workflow/getAllProcessInstaces.do?type='+$('#key').combobox('getValue'));
};
$(function() {
$("#key").combobox({
url : ext.contextPath + '/activiti/workflow/getProcessTypes4Combo.do',
valueField : 'id',
textField : 'name',
method:'get',
panelHeight:'auto',
onSelect:function(){
//var value= $('#key').combobox('getValue');
grid = $('#grid').datagrid({
title : '',
url : ext.contextPath + '/activiti/workflow/getAllProcessInstaces.do?type='+$('#key').combobox('getValue'),
striped : true,
rownumbers : true,
pagination : true,
singleSelect: false,
ctrlSelect:true,
nowrap:false,
selectOnCheck: false,
checkOnSelect: false,
idField : 'id',
pageSize : 50,
pageList : [ 20, 50, 100],
columns : [ [
{checkbox:true , field : 'ck'},
{width : '150', title : '流程名称', field : 'name', sortable : false, halign:'center'},
{width : '180', title : '最新任务处理时间', field : 'createTime', sortable : false, halign:'center', formatter : function(value, row) {
return row.task.createTime;
}},
{width : '180', title : '最新任务节点', field : 'taskName', sortable : false, halign:'center', formatter : function(value, row) {
return row.task.name;
}},
{width : '180', title : '流程定义Id', field : 'processDefinitionId', sortable : false, halign:'center', formatter : function(value, row) {
return row.processDefinition.id;
}},
{title : '操作', field : 'action', width : '120', halign:'center', align:'center', formatter : function(value, row) {
var str = '';
str += '<img class="iconImg ext-icon-table" title="查看" onclick="viewFun(\''+row.processInstance.id+'\',\''+row.processDefinition.id+'\',\''+row.task.id+'\');"/>';
/* if(!row.task.assignee){
str += '<img class="iconImg ext-icon-table_edit" title="签收" onclick="claimFun(\''+row.task.id+'\');"/>';
}else{
str += '<img class="iconImg ext-icon-table_go" title="办理" onclick="gotoTaskFun(\''+row.type+'\',\''+row.task.taskDefinitionKey+'\',\''+row.task.id+'\');"/>';
} */
str += '<img class="iconImg ext-icon-table_delete" title="删除" onclick="deleteFun(\''+row.processInstance.id+'\');"/>';
return str;
}
}
] ],
toolbar : '#toolbar',
onLoadSuccess : function(data) {
$('.iconImg').attr('src', ext.pixel_0);
}
});
},
onLoadSuccess : function() {
var data = $('#key').combobox('getData');
if (data.length > 0) {
$('#key').combobox('select', data[0].id);
}
}
});
});
</script>
</head>
<body class="easyui-layout" data-options="fit:true,border:false">
<div id="toolbar" style="display: none;">
<table>
<tr>
<td>
</td>
</tr>
<tr>
<td>
<form id="searchForm">
<table class="tooltable">
<tr>
<td>流程类型</td>
<td><input id="key" name="key" class="easyui-combobox" data-options="required:false" style="width: 180px;" /></td>
<td>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'ext-icon-search',plain:true"
onclick="searchgrid();">搜索</a>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'icon-reload',plain:true"
onclick="$('#searchForm').form('clear');searchgrid();">重置</a>
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div>
<div data-options="region:'center',fit:true,border:false">
<table id="grid" data-options="fit:true,border:false"></table>
</div>
<!-- 部门领导审批 -->
<div id="deptLeaderAudit" style="display: none">
<!-- table用来显示信息方便办理任务 -->
<%@include file="view-form.jsp" %>
</div>
</body>
</html>

View File

@ -0,0 +1,259 @@
<%@page import="org.apache.poi.ss.usermodel.Row"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.sipai.tools.SessionManager"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%
SessionManager sessionManager = new SessionManager();
%>
<%String contextPath = request.getContextPath();%>
<!DOCTYPE html>
<html>
<head>
<title></title>
<jsp:include page="/jsp/inc.jsp"></jsp:include>
<script src="<%=contextPath%>/JS/activiti/workflow.js" type="text/javascript"></script>
<script src="<%=contextPath%>/JS/qtip/jquery.qtip.min.js" type="text/javascript"></script>
<%-- 引入CSS --%>
<link rel="stylesheet" href="<%=contextPath%>/JS/qtip/jquery.qtip.min.css" type="text/css">
<link rel="stylesheet" href="<%=contextPath%>/CSS/style-activiti.css" type="text/css">
<script type="text/javascript">
var grid;
var addFun = function() {
$.post(ext.contextPath + '/activiti/auto/autoCreat.do', {} , function(data) {
if(data>0){
parent.$.messager.alert('提示','自动导入成功','info',function(){
grid.datagrid('reload');
grid.datagrid('clearChecked');
});
}else{
parent.$.messager.alert('提示','自动导入失败','info');
}
});
};
var editFun = function(id) {
var dialog = parent.ext.modalDialog({
iframeId:'iframeedit',
title : '编辑班组',
url : ext.contextPath + '/work/group/edit.do?iframeId=iframeedit&id=' + id,
buttons : [ {
text : '保存',
handler : function() {
dialog.find('iframe').get(0).contentWindow.dosave(dialog, grid);
}
} ]
});
};
var viewFun = function(ppid) {
/* var dialog = parent.ext.modalDialog({
title : '查看用户信息',
url : ext.contextPath + '/work/group/view.do?id=' + id
}); */
//alert(pid+","+ppid);
graphTrace("",ppid,"");
};
var viewTechnicsFun = function(id) {
var dialog = parent.ext.modalDialog({
iframeId:'iframeedit',
title : '模型管控',
url : ext.contextPath + '/activiti/workflow/model/showProcessTechnicsList.do?processid=' + id,
buttons : [ {
text : '关闭',
handler : function() {
//grid.datagrid('reload');
dialog.dialog('destroy');
}
} ]
});
};
var deleteFun = function(id) {
parent.$.messager.confirm('提示', '删除此记录会将该流程关联的所有记录删除,您确定要删除此记录?', function(r) {
if (r) {
$.post(ext.contextPath + '/activiti/workflow/process/delete.do', {deploymentId : id}, function(data) {
if(data==1){
parent.$.messager.alert('提示','删除成功','info',function(){
grid.datagrid('reload');
grid.datagrid('clearChecked');
});
}else{
parent.$.messager.alert('提示','删除失败','info');
}
});
}
});
};
/* var deletesFun = function() {
var checkedItems = $('#grid').datagrid('getChecked');
var datas="";
$.each(checkedItems, function(index, item){
datas+=item.id+",";
});
//alert(datas);
if(datas==""){
top.$.messager.alert('提示', '请先选择要删除的记录','info');
}else{
parent.$.messager.confirm('提示', '您确定要删除此记录?', function(r) {
if (r) {
$.post(ext.contextPath + '/work/group/deletes.do', {ids:datas} , function(data) {
if(data>0){
parent.$.messager.alert('提示','成功删除'+data+'条记录','info',function(){
grid.datagrid('reload');
grid.datagrid('clearChecked');
});
}else{
parent.$.messager.alert('提示','删除失败','info');
}
});
}
});
}
}; */
var suspendFun = function(id,status) {
var tip="";
if(status=="active"){
tip="激活";
}else{
tip="挂起";
}
parent.$.messager.confirm('提示', '您确定要'+tip+'此记录?', function(r) {
if (r) {
$.post(ext.contextPath + '/activiti/workflow/processdefinition/update.do', {processDefinitionId : id,state:status}, function(data) {
if(data==1){
parent.$.messager.alert('提示',tip+'成功','info',function(){
grid.datagrid('reload');
});
}else{
parent.$.messager.alert('提示',tip+'失败','info');
}
});
}
});
};
$(function() {
grid = $('#grid').datagrid({
title : '',
url : ext.contextPath + '/activiti/workflow/getProcessList.do',
striped : true,
rownumbers : true,
pagination : true,
singleSelect: false,
selectOnCheck: true,
checkOnSelect: true,
idField : 'id',
pageSize : 50,
pageList : [ 20, 50, 100],
columns : [ [
{checkbox:true , field : 'ck'},
{width : '100', title : '工艺名称', field : 'name', sortable : true, halign:'center',formatter:function(value, row){
return row.processDefinition.name;
}},
{width : '180', title : '工艺描述', field : 'description', sortable : true, halign:'center',formatter:function(value, row){
return row.processDefinition.description;
}},
{width : '180', title : '工艺ID', field : 'id', sortable : false, halign:'center',formatter:function(value, row){
return row.processDefinition.id;
}},
{width : '180', title : '部署时间', field : 'deploymentTime', sortable : true, halign:'center',formatter:function(value, row){
return row.deployment.deploymentTime;
}},
{width : '100', title : '版本号', field : 'revision', sortable : true, halign:'center',formatter:function(value, row){
return row.processDefinition.revision;
}},
{title : '操作', field : 'action', width : '160', halign:'center', align:'center', formatter : function(value, row) {
var str = '';
<%if (sessionManager.havePermission(session,"activiti/workflow/showlist.do?scope=all")) {%>
str += '<img class="iconImg ext-icon-table" title="查看" onclick="viewFun(\''+row.processDefinition.id+'\');"/>';
str += '<img class="iconImg ext-icon-table_sort" title="查看管控内容" onclick="viewTechnicsFun(\''+row.processDefinition.id+'\');"/>';
<%}%>
<%if (sessionManager.havePermission(session,"activiti/workflow/edit.do")) {%>
if(row.processDefinition.suspended=="2")
str += '<img class="iconImg ext-icon-table_lightning" title="激活" onclick="suspendFun(\''+row.processDefinition.id+'\',\'active\');"/>';
else
str += '<img class="iconImg ext-icon-table_link" title="挂起" onclick="suspendFun(\''+row.processDefinition.id+'\',\'suspend\');"/>';
<%}%>
<%if (sessionManager.havePermission(session,"activiti/workflow/delete.do")) {%>
str += '<img class="iconImg ext-icon-table_delete" title="删除" onclick="deleteFun(\''+row.processDefinition.deploymentId+'\');"/>';
<%}%>
return str;
}
}
] ],
toolbar : '#toolbar',
onLoadSuccess : function(data) {
$('.iconImg').attr('src', ext.pixel_0);
}
});
});
var importFun = function() {
var dialog = parent.ext.modalDialog({
title : '选择文件',
width: 600,
height:300,
closeOnEscape:true,
url : ext.contextPath + '/activiti/auto/doimport.do',
buttons : [ {
text : '上传',
handler : function() {
dialog.find('iframe').get(0).contentWindow.doimport(dialog, grid);
}
} ]
});
};
</script>
</head>
<body class="easyui-layout" data-options="fit:true,border:false">
<div id="toolbar" style="display: none;">
<table>
<tr>
<td>
<table>
<tr>
<br/>请从模型“配置界面”部署工艺路线
<!--
<td>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'ext-icon-table_add',plain:true"
onclick="importFun();">自动添加</a>
</td> -->
<%--
<%if (sessionManager.havePermission(session,"work/group/delete.do")) {%>
<td>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'icon-remove',plain:true"
onclick="deletesFun();">删除</a>
</td>
<%}%> --%>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<form id="searchForm">
<table class="tooltable">
<tr>
<td>工艺名称</td>
<td><input name="search_name" class="easyui-textbox" /></td>
<td>工艺ID</td>
<td><input id="search_code" name="search_code" class="easyui-textbox"/></td>
<td>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'ext-icon-search',plain:true"
onclick="grid.datagrid('load',ext.serializeObject($('#searchForm')));">搜索</a>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'icon-reload',plain:true"
onclick="$('#searchForm').form('clear');grid.datagrid('load',{});">重置</a>
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div>
<div data-options="region:'center',fit:true,border:false">
<table id="grid" data-options="fit:true,border:false"></table>
</div>
</body>
</html>

View File

@ -0,0 +1,221 @@
<%@page import="org.apache.poi.ss.usermodel.Row"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.sipai.tools.SessionManager"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%
SessionManager sessionManager = new SessionManager();
%>
<%String contextPath = request.getContextPath();%>
<!DOCTYPE html>
<html>
<head>
<title></title>
<jsp:include page="/jsp/inc.jsp"></jsp:include>
<script src="<%=contextPath%>/JS/activiti/workflow.js" type="text/javascript"></script>
<script type="text/javascript">
var grid;
var addFun = function() {
$.post(ext.contextPath + '/activiti/auto/autoCreat.do', {} , function(data) {
if(data>0){
parent.$.messager.alert('提示','自动导入成功','info',function(){
grid.datagrid('reload');
grid.datagrid('clearChecked');
});
}else{
parent.$.messager.alert('提示','自动导入失败','info');
}
});
};
var editFun = function(id) {
var dialog = parent.ext.modalDialog({
iframeId:'iframeedit',
title : '编辑班组',
url : ext.contextPath + '/work/group/edit.do?iframeId=iframeedit&id=' + id,
buttons : [ {
text : '保存',
handler : function() {
dialog.find('iframe').get(0).contentWindow.dosave(dialog, grid);
}
} ]
});
};
var viewFun = function(ppid) {
/* var dialog = parent.ext.modalDialog({
title : '查看用户信息',
url : ext.contextPath + '/work/group/view.do?id=' + id
}); */
//alert(pid+","+ppid);
graphTrace("","",ppid);
};
var deleteFun = function(id) {
parent.$.messager.confirm('提示', '删除此记录会将该流程关联的所有记录删除,您确定要删除此记录?', function(r) {
if (r) {
$.post(ext.contextPath + '/activiti/workflow/process/delete.do', {deploymentId : id}, function(data) {
if(data==1){
parent.$.messager.alert('提示','删除成功','info',function(){
grid.datagrid('reload');
grid.datagrid('clearChecked');
});
}else{
parent.$.messager.alert('提示','删除失败','info');
}
});
}
});
};
var deletesFun = function() {
var checkedItems = $('#grid').datagrid('getChecked');
var datas="";
$.each(checkedItems, function(index, item){
datas+=item.id+",";
});
//alert(datas);
if(datas==""){
top.$.messager.alert('提示', '请先选择要删除的记录','info');
}else{
parent.$.messager.confirm('提示', '您确定要删除此记录?', function(r) {
if (r) {
$.post(ext.contextPath + '/work/group/deletes.do', {ids:datas} , function(data) {
if(data>0){
parent.$.messager.alert('提示','成功删除'+data+'条记录','info',function(){
grid.datagrid('reload');
grid.datagrid('clearChecked');
});
}else{
parent.$.messager.alert('提示','删除失败','info');
}
});
}
});
}
};
var suspendFun = function(id,status) {
var tip="";
if(status=="active"){
tip="激活";
}else{
tip="挂起";
}
parent.$.messager.confirm('提示', '您确定要'+tip+'此记录?', function(r) {
if (r) {
$.post(ext.contextPath + '/activiti/workflow/processdefinition/update.do', {processDefinitionId : id,state:status}, function(data) {
if(data==1){
parent.$.messager.alert('提示',tip+'成功','info',function(){
grid.datagrid('reload');
});
}else{
parent.$.messager.alert('提示',tip+'失败','info');
}
});
}
});
};
$(function() {
grid = $('#grid').datagrid({
title : '',
url : ext.contextPath + '/activiti/workflow/model/getProcessTechnicsList.do?modelid=${param.modelid}&processid=${param.processid}',
striped : true,
rownumbers : true,
pagination : true,
singleSelect: false,
ctrlSelect:true,
selectOnCheck: false,
checkOnSelect: false,
nowrap:false,
idField : 'id',
pageSize : 50,
pageList : [ 20, 50, 100],
columns : [ [
{width : '100', title : '主流程', field : 'mainprocedure', sortable : true, halign:'center'},
{width : '100', title : '分工序', field : 'subprocedure', sortable : true, halign:'center'},
{width : '50', title : '序号', field : 'contentno', sortable : false, halign:'center'},
{width : '180', title : '管控项目', field : 'subject', sortable : true, halign:'center'},
{width : '180', title : '管控规格', field : 'specifications', sortable : true, halign:'center'},
{width : '100', title : '管控方式', field : 'mode', sortable : true, halign:'center'},
{width : '100', title : '管控工具', field : 'tool', sortable : true, halign:'center'},
{width : '100', title : '管控频率', field : 'frequency', sortable : true, halign:'center'},
{width : '100', title : '管控人员', field : 'people', sortable : true, halign:'center'},
{width : '100', title : '不良品管制', field : 'rejects', sortable : true, halign:'center'},
{width : '100', title : '管控文件/规范', field : 'filename', sortable : true, halign:'center'},
{width : '100', title : '管控表单', field : 'formname', sortable : true, halign:'center'},
{width : '100', title : '备注', field : 'remark', sortable : true, halign:'center'}
] ],
toolbar : '#toolbar',
onLoadSuccess : function(data) {
$('.iconImg').attr('src', ext.pixel_0);
}
});
$('#search_pid').combotree({
url : ext.contextPath + '/user/getUnitsJson.do?random=' + Math.random(),
parentField : 'pid',
method:'get',
width:200,
onBeforeSelect:function(node){
if(node.id=="-1"){
$("#search_pid").tree("search_pid");
}
},
editable:false
});
if('${param.processid}'!=''){
//alert($('#import'))
document.getElementById('import').style.display = "none";;
}
});
var importFun = function() {
var severaddr='/activiti/workflow/model/saveImportTechnics.do';
var dialog = parent.ext.modalDialog({
title : '选择文件',
width: 600,
height:300,
closeOnEscape:true,
url : ext.contextPath + '/base/doimportExcel.do?dest='+severaddr+'&param=${param.modelid}',
buttons : [ {
text : '上传',
handler : function() {
dialog.find('iframe').get(0).contentWindow.doimport(dialog, grid);
}
} ]
});
};
</script>
</head>
<body class="easyui-layout" data-options="fit:true,border:false">
<div id="toolbar" style="display: none;">
<table>
<tr>
<td>
<form id="searchForm">
<table class="tooltable">
<tr>
<td>主流程</td>
<td><input name="mainprocedure" class="easyui-textbox" /></td>
<td>分工序</td>
<td><input id="subprocedure" name="subprocedure" class="easyui-textbox"/></td>
<td>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'ext-icon-search',plain:true"
onclick="grid.datagrid('load',ext.serializeObject($('#searchForm')));">搜索</a>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'icon-reload',plain:true"
onclick="$('#searchForm').form('clear');grid.datagrid('load',{});">重置</a>
<a id ="import" name ="import" href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'ext-icon-table_add',plain:true"
onclick="importFun();">导入</a>
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div>
<div data-options="region:'center',fit:true,border:false">
<table id="grid" data-options="fit:true,border:false"></table>
</div>
</body>
</html>

View File

@ -0,0 +1,367 @@
<%@page import="com.sipai.service.plan.DailyPlanService"%>
<%@page import="com.sipai.entity.plan.DailyPlanTaskDemand"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.sipai.tools.SessionManager"%>
<%
SessionManager sessionManager = new SessionManager();
%>
<%String contextPath = request.getContextPath();%>
<% request.setAttribute("Type_Produce", DailyPlanService.processDefKey);%>
<%request.setAttribute("Flag_Start",DailyPlanTaskDemand.Flag_Start);%>
<%request.setAttribute("Flag_Report",DailyPlanTaskDemand.Flag_Report);%>
<%request.setAttribute("Flag_CarryOver",DailyPlanTaskDemand.Flag_CarryOver);%>
<!DOCTYPE html>
<html>
<head>
<title></title>
<jsp:include page="/jsp/inc.jsp"></jsp:include>
<%-- <script src="<%=contextPath%>/JS/activiti/leave-todo.js" type="text/javascript"></script> --%>
<script src="<%=contextPath%>/JS/activiti/workflow.js" type="text/javascript"></script>
<script type="text/javascript">
var grid;
var addFun = function() {
var dialog = parent.ext.modalDialog({
iframeId:'iframeadd',
title : '添加班组',
url : ext.contextPath + '/activiti/leavew/add.do',
buttons : [ {
text : '保存',
handler : function() {
dialog.find('iframe').get(0).contentWindow.dosave(dialog, grid);
}
} ]
});
};
var completeFun = function(leaveid,taskId,tdkey,name) {
switch(tdkey)
{
case 'deptLeaderAudit':
deptLeaderAuditFun(leaveid,taskId);
break;
case 'deptLeaderAuditToSub':
deptLeaderAuditFunToSub(leaveid,taskId);
break;
case 'deptLeaderAuditToCA':
deptLeaderAuditFunToCA(leaveid,taskId);
break;
case 'modifyApply':
modifyApplyFun(leaveid,taskId,'deptLeaderAudit');
break;
case 'hrAudit':
hrAuditFun(leaveid,taskId);
break;
case 'hrAuditCA':
hrAuditCAFun(leaveid,taskId);
break;
default:
alert("未查询到“"+tdkey+"”任务模块!");
}
};
var gotoTaskFun = function(type,tdkey,taskId) {
if(type=='${Type_Produce}'){
switch(tdkey)
{
case 'DrawDailyPlan':
doLook(taskId);
break;
case 'deptLeaderAudit':
doLookOperate();
break;
case 'IssueWorkOrder':
showWorkOrders();
break;
case 'StartWork':
dostart(taskId);
break;
case 'HandUp':
doreport(taskId);
break;
case 'CarryOver':
docarryover(taskId);
break;
default:
alert("未查询到任务模块!");
}
}else{
alert("未查询到任务模块!");
}
};
var doLook = function(taskId) {
/* var nowdate = new Date();
var dt=nowdate.Format('yyyy-MM-dd');//月日必须都是两位
*/
var dialog = parent.ext.modalDialog({
id:'viewDialog',
iframeId:'view',
title : '查看计划',
height:"90%",
width:"90%",
url : ext.contextPath + '/plan/dailyplansummary/showlist.do?taskId='+taskId,
onDestroy:function(){
grid.datagrid('reload');
}
});
};
var doLookOperate = function() {
var nowdate = new Date();
var dt=nowdate.Format('yyyy-MM-dd');//月日必须都是两位
var dialog = parent.ext.modalDialog({
id:'viewDialog',
iframeId:'view',
title : '查看计划',
height:"90%",
width:"90%",
url : ext.contextPath + '/plan/dailyplansummary/showlistoperate.do?dt='+dt,
onDestroy:function(){
grid.datagrid('reload');
}
});
};
var showWorkOrders = function() {
var dialog = parent.ext.modalDialog({
id:'viewDialog',
iframeId:'view',
title : '任务调度',
height:"90%",
width:"90%",
url : ext.contextPath + '/work/workorder/showlist.do',
onDestroy:function(){
grid.datagrid('reload');
}
});
};
//开工 taskId为activiti的taskid
var dostart = function(taskId) {
$.post(ext.contextPath + '/work/workorder/doupdate_taskdemand.do', {taskId : taskId,status:'${Flag_Start}'}, function(data) {
if(data==1){
parent.$.messager.alert('提示','开工成功','info',function(){
grid.datagrid('reload');
grid.datagrid('unselectAll');
});
}else{
parent.$.messager.alert('提示','开工失败','info');
}
});
};
//报工
var doreport=function(taskId){
var dialog = parent.ext.modalDialog({
title : '工单报工',
width: 400,
height:500,
url : ext.contextPath + '/work/workorder/showworkorder_carryover.do?taskId='+taskId+'&status=${Flag_Report}',
buttons : [{
text : '确定',
iconCls:'icon-ok',
handler : function() {
dialog.find('iframe').get(0).contentWindow.dosave(dialog,grid);
grid.datagrid('unselectAll');
}
},
{
text : '取消',
iconCls:'icon-cancel',
handler : function() {
dialog.dialog('destroy');
}
}
]
});
};
//工单结转
var docarryover=function(taskId){
var dialog = parent.ext.modalDialog({
title : '工单结转',
width: 400,
height:500,
url : ext.contextPath + '/work/workorder/showworkorder_carryover.do?taskId='+taskId+'&status=${Flag_CarryOver}',
buttons : [{
text : '确定',
iconCls:'icon-ok',
handler : function() {
dialog.find('iframe').get(0).contentWindow.dosave(dialog,grid);
grid.datagrid('unselectAll');
}
},
{
text : '取消',
iconCls:'icon-cancel',
handler : function() {
dialog.dialog('destroy');
}
}
]
});
};
var claimFun = function(id) {
$.post(ext.contextPath + '/activiti/leavew/task/claim.do', {taskId : id}, function(data) {
if(data==1){
parent.$.messager.alert('提示','签收成功','info',function(){
grid.datagrid('reload');
grid.datagrid('unselectAll');
});
}else{
parent.$.messager.alert('提示','签收失败','info');
}
});
};
var viewFun = function(pid,ppid,taskId) {
graphTrace(pid,ppid,taskId);
};
var deleteFun = function(id) {
parent.$.messager.confirm('提示', '您确定要删除此记录?流程删除后将无法恢复。', function(r) {
if (r) {
$.post(ext.contextPath + '/activiti/workflow/process/delProcessInstance.do', {id : id}, function(data) {
if(data==1){
top.$.messager.alert('提示','删除成功','info');
grid.datagrid('reload');
}else{
top.$.messager.alert('提示','删除失败','info');
}
});
}
});
};
function loadworkorders(date){
$("#workorderno").combobox({
url : ext.contextPath + '/work/workorder/getList4Select.do?nowdate='+date,
valueField : 'workorderno',
textField : 'workorderno',
method:'get',
panelHeight:'auto',
onSelect: function () {
var datas=$("#workorderno").combobox('getData');
var workorderno = $("#workorderno").combobox('getValue');
var wforderid ="";
for(var i=0;i<datas.length;i++){
if(datas[i].workorderno==workorderno){
wforderid=datas[i].wforderid;
break;
}
}
$("#processInstanceId").val(wforderid);
$("#procedureno").combobox({
url : ext.contextPath + '/work/workorder/getProcedurelist4Select.do?workorderno='+workorderno,
valueField : 'id',
textField : 'name',
method:'get',
panelHeight:'auto',
onLoadSuccess: function(record){
if($("#procedureno").combobox('getData').length>0){
$("#procedureno").combobox('select','${sessionScope.procedure}');
}
},
onSelect: function () {
}
});
},
onLoadSuccess : function() {
}
});
}
var searchgrid = function() {
grid.datagrid('reload',ext.contextPath + '/activiti/workflow/getProduceTaskList.do?'+$('#searchForm').serialize());
};
$(function() {
var nowdate = new Date();
var dt=nowdate.Format('yyyy-MM-dd');//月日必须都是两位
loadworkorders(dt);
grid = $('#grid').datagrid({
title : '',
url : ext.contextPath + '/activiti/workflow/getProduceTaskList.do',
striped : true,
rownumbers : true,
singleSelect: false,
ctrlSelect:true,
selectOnCheck: false,
checkOnSelect: false,
idField : 'id',
pageSize : 50,
pageList : [ 20, 50, 100],
columns : [ [
{checkbox:true , field : 'ck'},
{width : '150', title : '流程名称', field : 'name', sortable : false, halign:'center'},
{width : '180', title : '任务下发时间', field : 'createTime', sortable : false, halign:'center', formatter : function(value, row) {
return row.task.createTime;
}},
{width : '180', title : '任务节点', field : 'taskName', sortable : false, halign:'center', formatter : function(value, row) {
return row.task.name;
}},
{title : '操作', field : 'action', width : '120', halign:'center', align:'center', formatter : function(value, row) {
var str = '';
str += '<img class="iconImg ext-icon-table" title="查看" onclick="viewFun(\''+row.processInstance.id+'\',\''+row.processDefinition.id+'\',\''+row.task.id+'\');"/>';
if(!row.task.assignee){
str += '<img class="iconImg ext-icon-table_edit" title="签收" onclick="claimFun(\''+row.task.id+'\');"/>';
}else{
str += '<img class="iconImg ext-icon-table_go" title="办理" onclick="gotoTaskFun(\''+row.type+'\',\''+row.task.taskDefinitionKey+'\',\''+row.task.id+'\');"/>';
}
//str += '<img class="iconImg ext-icon-table_delete" title="删除" onclick="deleteFun(\''+row.processInstance.id+'\');"/>';
return str;
}
}
] ],
toolbar : '#toolbar',
onLoadSuccess : function(data) {
$('.iconImg').attr('src', ext.pixel_0);
}
});
});
</script>
</head>
<body class="easyui-layout" data-options="fit:true,border:false">
<div id="toolbar" style="display: none;">
<table>
<tr>
<td>
</td>
</tr>
<tr>
<td>
<form id="searchForm">
<table class="tooltable">
<tr>
<td>工单</td>
<td><input id="workorderno" name="workorderno" class="easyui-combobox" data-options="required:false" style="width: 180px;" />
<input id="processInstanceId" name="processInstanceId" type="hidden" value=""/></td>
<td>工序</td>
<td><input id="procedureno" name="procedureno" class="easyui-combobox" style="width: 180px;" panelMaxHeight="400px" data-options="panelHeight:'auto'" value=""/></td>
<td>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'ext-icon-search',plain:true"
onclick="searchgrid();">搜索</a>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'icon-reload',plain:true"
onclick="$('#searchForm').form('clear');searchgrid();">重置</a>
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div>
<div data-options="region:'center',fit:true,border:false">
<table id="grid" data-options="fit:true,border:false"></table>
</div>
<!-- 部门领导审批 -->
<div id="deptLeaderAudit" style="display: none">
<!-- table用来显示信息方便办理任务 -->
<%@include file="view-form.jsp" %>
</div>
</body>
</html>

View File

@ -0,0 +1,348 @@
<%@page import="com.sipai.service.plan.DailyPlanService"%>
<%@page import="com.sipai.entity.plan.DailyPlanTaskDemand"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.sipai.tools.SessionManager"%>
<%
SessionManager sessionManager = new SessionManager();
%>
<%String contextPath = request.getContextPath();%>
<% request.setAttribute("Type_Produce", DailyPlanService.processDefKey);%>
<%request.setAttribute("Flag_Start",DailyPlanTaskDemand.Flag_Start);%>
<%request.setAttribute("Flag_Report",DailyPlanTaskDemand.Flag_Report);%>
<%request.setAttribute("Flag_CarryOver",DailyPlanTaskDemand.Flag_CarryOver);%>
<script src="<%=contextPath%>/JS/activiti/workflow.js" type="text/javascript"></script>
<script type="text/javascript">
var grid_task;
var addFun = function() {
var dialog = parent.ext.modalDialog({
iframeId:'iframeadd',
title : '添加班组',
url : ext.contextPath + '/activiti/leavew/add.do',
buttons : [ {
text : '保存',
handler : function() {
dialog.find('iframe').get(0).contentWindow.dosave(dialog, grid_task);
}
} ]
});
};
var completeFun = function(leaveid,taskId,tdkey,name) {
switch(tdkey)
{
case 'deptLeaderAudit':
deptLeaderAuditFun(leaveid,taskId);
break;
case 'deptLeaderAuditToSub':
deptLeaderAuditFunToSub(leaveid,taskId);
break;
case 'deptLeaderAuditToCA':
deptLeaderAuditFunToCA(leaveid,taskId);
break;
case 'modifyApply':
modifyApplyFun(leaveid,taskId,'deptLeaderAudit');
break;
case 'hrAudit':
hrAuditFun(leaveid,taskId);
break;
case 'hrAuditCA':
hrAuditCAFun(leaveid,taskId);
break;
default:
alert("未查询到“"+tdkey+"”任务模块!");
}
};
var gotoTaskFun = function(type,tdkey,taskId) {
if(type=='${Type_Produce}'){
switch(tdkey)
{
case 'DrawDailyPlan':
doLook(taskId);
break;
case 'deptLeaderAudit':
doLookOperate();
break;
case 'IssueWorkOrder':
showWorkOrders();
break;
case 'StartWork':
dostart(taskId);
break;
case 'HandUp':
doreport(taskId);
break;
case 'CarryOver':
docarryover(taskId);
break;
default:
alert("未查询到任务模块!");
}
}else{
alert("未查询到任务模块!");
}
};
var doLook = function(taskId) {
/* var nowdate = new Date();
var dt=nowdate.Format('yyyy-MM-dd');//月日必须都是两位 */
var dialog = parent.ext.modalDialog({
id:'viewDialog',
iframeId:'view',
title : '查看计划',
height:"90%",
width:"90%",
url : ext.contextPath + '/plan/dailyplansummary/showlist.do?taskId='+taskId,
onDestroy:function(){
grid_task.datagrid('reload');
}
});
};
var doLookOperate = function() {
var nowdate = new Date();
var dt=nowdate.Format('yyyy-MM-dd');//月日必须都是两位
var dialog = parent.ext.modalDialog({
id:'viewDialog',
iframeId:'view',
title : '查看计划',
height:"90%",
width:"90%",
url : ext.contextPath + '/plan/dailyplansummary/showlistoperate.do?dt='+dt,
onDestroy:function(){
grid_task.datagrid('reload');
}
});
};
var showWorkOrders = function() {
var dialog = parent.ext.modalDialog({
id:'viewDialog',
iframeId:'view',
title : '任务调度',
height:"90%",
width:"90%",
url : ext.contextPath + '/work/workorder/showlist.do',
onDestroy:function(){
grid_task.datagrid('reload');
}
});
};
//开工 taskId为activiti的taskid
var dostart = function(taskId) {
$.post(ext.contextPath + '/work/workorder/doupdate_taskdemand.do', {taskId : taskId,status:'${Flag_Start}'}, function(data) {
if(data==1){
parent.$.messager.alert('提示','开工成功','info',function(){
grid_task.datagrid('reload');
grid_task.datagrid('unselectAll');
});
}else{
parent.$.messager.alert('提示','开工失败','info');
}
});
};
//报工
var doreport=function(taskId){
var dialog = parent.ext.modalDialog({
title : '工单报工',
width: 400,
height:500,
url : ext.contextPath + '/work/workorder/showworkorder_carryover.do?taskId='+taskId+'&status=${Flag_Report}',
buttons : [{
text : '确定',
iconCls:'icon-ok',
handler : function() {
dialog.find('iframe').get(0).contentWindow.dosave(dialog,grid_task);
grid_task.datagrid('unselectAll');
}
},
{
text : '取消',
iconCls:'icon-cancel',
handler : function() {
dialog.dialog('destroy');
}
}
]
});
};
//工单结转
var docarryover=function(taskId){
var dialog = parent.ext.modalDialog({
title : '工单结转',
width: 400,
height:500,
url : ext.contextPath + '/work/workorder/showworkorder_carryover.do?taskId='+taskId+'&status=${Flag_CarryOver}',
buttons : [{
text : '确定',
iconCls:'icon-ok',
handler : function() {
dialog.find('iframe').get(0).contentWindow.dosave(dialog,grid_task);
grid_task.datagrid('unselectAll');
}
},
{
text : '取消',
iconCls:'icon-cancel',
handler : function() {
dialog.dialog('destroy');
}
}
]
});
};
var claimFun = function(id) {
$.post(ext.contextPath + '/activiti/leavew/task/claim.do', {taskId : id}, function(data) {
if(data==1){
parent.$.messager.alert('提示','签收成功','info',function(){
grid_task.datagrid('reload');
grid_task.datagrid('unselectAll');
});
}else{
parent.$.messager.alert('提示','签收失败','info');
}
});
};
var viewFun_task = function(pid,ppid,taskId) {
graphTrace(pid,ppid,taskId);
};
function loadworkorders(date){
$("#workorderno").combobox({
url : ext.contextPath + '/work/workorder/getList4Select.do?nowdate='+date,
valueField : 'workorderno',
textField : 'workorderno',
method:'get',
panelHeight:'auto',
onSelect: function () {
var datas=$("#workorderno").combobox('getData');
var workorderno = $("#workorderno").combobox('getValue');
var wforderid ="";
for(var i=0;i<datas.length;i++){
if(datas[i].workorderno==workorderno){
wforderid=datas[i].wforderid;
break;
}
}
$("#processInstanceId").val(wforderid);
$("#procedureno").combobox({
url : ext.contextPath + '/work/workorder/getProcedurelist4Select.do?workorderno='+workorderno,
valueField : 'id',
textField : 'name',
method:'get',
panelHeight:'auto',
onLoadSuccess: function(record){
if($("#procedureno").combobox('getData').length>0){
$("#procedureno").combobox('select','${sessionScope.procedure}');
}
},
onSelect: function () {
}
});
},
onLoadSuccess : function() {
}
});
}
var searchgrid = function() {
grid_task.datagrid('reload',ext.contextPath + '/activiti/workflow/getProduceTaskList.do?'+$('#searchForm_task').serialize());
};
$(function() {
var nowdate = new Date();
var dt=nowdate.Format('yyyy-MM-dd');//月日必须都是两位
loadworkorders(dt);
grid_task = $('#grid_task').datagrid({
title : '',
url : ext.contextPath + '/activiti/workflow/getProduceTaskList.do',
striped : true,
rownumbers : true,
singleSelect: false,
ctrlSelect:true,
selectOnCheck: false,
checkOnSelect: false,
idField : 'id',
pageSize : 50,
pageList : [ 20, 50, 100],
columns : [ [
/* {checkbox:true , field : 'ck'}, */
{width : '80', title : '流程名称', field : 'name', sortable : false, halign:'center'},
{width : '120', title : '任务下发时间', field : 'createTime', sortable : false, halign:'center', formatter : function(value, row) {
return row.task.createTime;
}},
{width : '80', title : '任务节点', field : 'taskName', sortable : false, halign:'center', formatter : function(value, row) {
return row.task.name;
}},
{title : '操作', field : 'action', width : '70', halign:'center', align:'center', formatter : function(value, row) {
var str = '';
str += '<img class="iconImg ext-icon-table" title="查看" onclick="viewFun_task(\''+row.processInstance.id+'\',\''+row.processDefinition.id+'\',\''+row.task.id+'\');"/>';
if(!row.task.assignee){
str += '<img class="iconImg ext-icon-table_edit" title="签收" onclick="claimFun(\''+row.task.id+'\');"/>';
}else{
str += '<img class="iconImg ext-icon-table_go" title="办理" onclick="gotoTaskFun(\''+row.type+'\',\''+row.task.taskDefinitionKey+'\',\''+row.task.id+'\');"/>';
}
//str += '<img class="iconImg ext-icon-table_delete" title="删除" onclick="deleteFun(\''+row.processInstance.id+'\');"/>';
return str;
}
}
] ],
toolbar : '#toolbar_task',
onLoadSuccess : function(data) {
$('.iconImg').attr('src', ext.pixel_0);
}
});
});
</script>
<div class="easyui-layout" data-options="fit:true,border:false">
<%if (sessionManager.havePermission(session,"activiti/workflow/searchForm")) {%>
<div id="toolbar_task" style="display: none;">
<table>
<tr>
<td>
</td>
</tr>
<tr>
<td>
<form id="searchForm_task">
<table class="tooltable">
<tr>
<td>工单</td>
<td><input id="workorderno" name="workorderno" class="easyui-combobox" data-options="required:false" style="width: 100px;" />
<input id="processInstanceId" name="processInstanceId" type="hidden" value=""/></td>
<td>工序</td>
<td><input id="procedureno" name="procedureno" class="easyui-combobox" style="width: 80px;" panelMaxHeight="400px" data-options="panelHeight:'auto'" value=""/></td>
<td>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'ext-icon-search',plain:true"
onclick="searchgrid();">搜索</a>
<a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'icon-reload',plain:true"
onclick="$('#searchForm').form('clear');searchgrid();">重置</a>
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div>
<%}%>
<div data-options="region:'center',fit:true,border:false">
<table id="grid_task" data-options="fit:true,border:false"></table>
</div>
<!-- 部门领导审批 -->
<%-- <div id="deptLeaderAudit" style="display: none">
<!-- table用来显示信息方便办理任务 -->
<%@include file="view-form.jsp" %>
</div> --%>
</div>

View File

@ -0,0 +1,28 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<table class='view-info'>
<tr>
<td width="100" class="label">申请人:</td>
<td name="userId"></td>
</tr>
<tr>
<td class="label">假种:</td>
<td name="leaveType"></td>
</tr>
<tr>
<td class="label">申请时间:</td>
<td name="applyTime"></td>
</tr>
<tr>
<td class="label">请假<font color="red">开始</font>时间:</td>
<td name="startTime"></td>
</tr>
<tr>
<td class="label">请假<font color="red">结束</font>时间:</td>
<td name="endTime"></td>
</tr>
<tr>
<td class="label">请假事由:</td>
<td name="reason"></td>
</tr>
</table>