123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421 |
- /**
- * 请假流程任务办理
- */
- $(function() {
- // 签收
- $('.claim').button({
- icons: {
- primary: 'ui-icon-person'
- }
- });
-
- // 办理
- $('.handle').button({
- icons: {
- primary: 'ui-icon-comment'
- }
- }).click(handle);
-
- // 跟踪
- $('.trace').click(graphTrace);
-
- });
- // 用于保存加载的详细信息
- var detail = {};
- /**
- * 加载详细信息
- * @param {Object} id
- */
- function loadDetail(id, withVars, callback) {
- var dialog = this;
- $.getJSON(ctx + '/oa/leave/detail/' + id, function(data) {
- detail = data;
- $.each(data, function(k, v) {
-
- // 格式化日期
- if (k == 'applyTime' || k == 'startTime' || k == 'endTime') {
- $('.view-info td[name=' + k + ']', dialog).text(new Date(v).format('yyyy-MM-dd hh:mm'));
- } else {
- $('.view-info td[name=' + k + ']', dialog).text(v);
- }
-
- });
- if ($.isFunction(callback)) {
- callback(data);
- }
- });
- }
- /**
- * 加载详细信息,同时读取流程任务变量
- * @param {Object} id
- */
- function loadDetailWithTaskVars(leaveId, taskId, callback) {
- var dialog = this;
- $.getJSON(ctx + '/oa/leave/detail-with-vars/' + leaveId + "/" + taskId, function(data) {
- detail = data;
- $.each(data, function(k, v) {
- // 格式化日期
- if (k == 'applyTime' || k == 'startTime' || k == 'endTime') {
- $('.view-info td[name=' + k + ']', dialog).text(new Date(v).format('yyyy-MM-dd hh:mm'));
- } else {
- $('.view-info td[name=' + k + ']', dialog).text(v);
- }
- });
- if ($.isFunction(callback)) {
- callback(data);
- }
- });
- }
- /**
- * 完成任务
- * @param {Object} taskId
- */
- function complete(taskId, variables) {
- var dialog = this;
-
- // 转换JSON为字符串
- var keys = "", values = "", types = "";
- if (variables) {
- $.each(variables, function() {
- if (keys != "") {
- keys += ",";
- values += ",";
- types += ",";
- }
- keys += this.key;
- values += this.value;
- types += this.type;
- });
- }
-
- $.blockUI({
- message: '<h2><img src="' + ctx + '/images/ajax/loading.gif" align="absmiddle"/>正在提交请求……</h2>'
- });
-
- // 发送任务完成请求
- $.post(ctx + '/oa/leave/complete/' + taskId, {
- keys: keys,
- values: values,
- types: types
- }, function(resp) {
- $.unblockUI();
- if (resp == 'success') {
- alert('任务完成');
- location.reload();
- } else {
- alert('操作失败!');
- }
- });
- }
- /*
- * 使用json方式定义每个节点的按钮
- * 以及按钮的功能
- *
- * open:打开对话框的时候需要处理的任务
- * btns:对话框显示的按钮
- */
- var handleOpts = {
- deptLeaderAudit: {
- width: 300,
- height: 300,
- open: function(id) {
-
- // 打开对话框的时候读取请假内容
- loadDetail.call(this, id);
- },
- btns: [{
- text: '同意',
- click: function() {
- var taskId = $(this).data('taskId');
-
- // 设置流程变量
- complete(taskId, [{
- key: 'deptLeaderPass',
- value: true,
- type: 'B'
- }]);
- }
- }, {
- text: '驳回',
- click: function() {
- var taskId = $(this).data('taskId');
-
- $('<div/>', {
- title: '填写驳回理由',
- html: "<textarea id='leaderBackReason' style='width: 250px; height: 60px;'></textarea>"
- }).dialog({
- modal: true,
- open: function() {
-
- },
- buttons: [{
- text: '驳回',
- click: function() {
- var leaderBackReason = $('#leaderBackReason').val();
- if (leaderBackReason == '') {
- alert('请输入驳回理由!');
- return;
- }
-
- // 设置流程变量
- complete(taskId, [{
- key: 'deptLeaderPass',
- value: false,
- type: 'B'
- }, {
- key: 'leaderBackReason',
- value: leaderBackReason,
- type: 'S'
- }]);
- }
- }, {
- text: '取消',
- click: function() {
- $(this).dialog('close');
- $('#deptLeaderAudit').dialog('close');
- }
- }]
- });
- }
- }, {
- text: '取消',
- click: function() {
- $(this).dialog('close');
- }
- }]
- },
- hrAudit: {
- width: 300,
- height: 300,
- open: function(id) {
- // 打开对话框的时候读取请假内容
- loadDetail.call(this, id);
- },
- btns: [{
- text: '同意',
- click: function() {
- var taskId = $(this).data('taskId');
-
- // 设置流程变量
- complete(taskId, [{
- key: 'hrPass',
- value: true,
- type: 'B'
- }]);
- }
- }, {
- text: '驳回',
- click: function() {
- var taskId = $(this).data('taskId');
-
- $('<div/>', {
- title: '填写驳回理由',
- html: "<textarea id='hrBackReason' style='width: 250px; height: 60px;'></textarea>"
- }).dialog({
- modal: true,
- buttons: [{
- text: '驳回',
- click: function() {
- var hrBackReason = $('#hrBackReason').val();
- if (hrBackReason == '') {
- alert('请输入驳回理由!');
- return;
- }
-
- // 设置流程变量
- complete(taskId, [{
- key: 'hrPass',
- value: false,
- type: 'B'
- }, {
- key: 'hrBackReason',
- value: hrBackReason,
- type: 'S'
- }]);
- }
- }, {
- text: '取消',
- click: function() {
- $(this).dialog('close');
- $('#deptLeaderAudit').dialog('close');
- }
- }]
- });
- }
- }, {
- text: '取消',
- click: function() {
- $(this).dialog('close');
- }
- }]
- },
- modifyApply: {
- width: 500,
- height: 470,
- open: function(id, taskId) {
- var dialog = this;
-
- $('#startTime,#endTime', this).datetimepicker({
- stepMinute: 5
- });
-
- // 打开对话框的时候读取请假内容
- loadDetailWithTaskVars.call(this, id, taskId, function(data) {
- // 显示驳回理由
- $('.info').show().html("<b>领导:</b>" + (data.variables.leaderBackReason || "") + "<br/><b>HR:</b>" + (data.variables.hrBackReason || ""));
-
- // 读取原请假信息
- $('#modifyApplyContent #leaveType option[value=' + data.leaveType + ']').attr('selected', true);
- $('#modifyApplyContent #startTime').val(new Date(data.startTime).format('yyyy-MM-dd hh:mm'));
- $('#modifyApplyContent #endTime').val(new Date(data.endTime).format('yyyy-MM-dd hh:mm'));
- $('#modifyApplyContent #reason').val(data.reason);
- });
-
- // 切换状态
- $("#radio").buttonset().change(function(){
- var type = $(':radio[name=reApply]:checked').val();
- if (type == 'true') {
- $('#modifyApplyContent').show();
- } else {
- $('#modifyApplyContent').hide();
- }
- });
- },
- btns: [{
- text: '提交',
- click: function() {
- var taskId = $(this).data('taskId');
- var reApply = $(':radio[name=reApply]:checked').val();
-
- // 提交的时候把变量
- complete(taskId, [{
- key: 'reApply',
- value: reApply,
- type: 'B'
- }, {
- key: 'leaveType',
- value: $('#modifyApplyContent #leaveType').val(),
- type: 'S'
- }, {
- key: 'startTime',
- value: $('#modifyApplyContent #startTime').val(),
- type: 'D'
- }, {
- key: 'endTime',
- value: $('#modifyApplyContent #endTime').val(),
- type: 'D'
- }, {
- key: 'reason',
- value: $('#modifyApplyContent #reason').val(),
- type: 'S'
- }]);
- }
- },{
- text: '取消',
- click: function() {
- $(this).dialog('close');
- }
- }]
- },
- reportBack: {
- width: 400,
- height: 400,
- open: function(id, taskId) {
- // 打开对话框的时候读取请假内容
- loadDetail.call(this, id, taskId);
- $('#realityStartTime,#realityEndTime').datetimepicker({
- stepMinute: 5
- });
- },
- btns: [{
- text: '提交',
- click: function() {
- var realityStartTime = $('#realityStartTime').val();
- var realityEndTime = $('#realityEndTime').val();
-
- if (realityStartTime == '') {
- alert('请选择实际开始时间!');
- return;
- }
-
- if (realityEndTime == '') {
- alert('请选择实际结束时间!');
- return;
- }
-
- var taskId = $(this).data('taskId');
- complete(taskId, [{
- key: 'realityStartTime',
- value: realityStartTime,
- type: 'D'
- }, {
- key: 'realityEndTime',
- value: realityEndTime,
- type: 'D'
- }]);
- }
- },{
- text: '取消',
- click: function() {
- $(this).dialog('close');
- }
- }]
- }
- };
- /**
- * 办理流程
- */
- function handle() {
- // 当前节点的英文名称
- var tkey = $(this).attr('tkey');
-
- // 当前节点的中文名称
- var tname = $(this).attr('tname');
-
- // 请假记录ID
- var rowId = $(this).parents('tr').attr('id');
-
- // 任务ID
- var taskId = $(this).parents('tr').attr('tid');
-
- // 使用对应的模板
- $('#' + tkey).data({
- taskId: taskId
- }).dialog({
- title: '流程办理[' + tname + ']',
- modal: true,
- width: handleOpts[tkey].width,
- height: handleOpts[tkey].height,
- open: function() {
- handleOpts[tkey].open.call(this, rowId, taskId);
- },
- buttons: handleOpts[tkey].btns
- });
- }
- Date.prototype.format = function(format) {
- var o = {
- "M+": this.getMonth() + 1, //month
- "d+": this.getDate(), //day
- "h+": this.getHours(), //hour
- "m+": this.getMinutes(), //minute
- "s+": this.getSeconds(), //second
- "q+": Math.floor((this.getMonth() + 3) / 3), //quarter
- "S": this.getMilliseconds() //millisecond
- }
- if (/(y+)/.test(format))
- format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
- for (var k in o)
- if (new RegExp("(" + k + ")").test(format))
- format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
- return format;
- }
|