'use strict';
$(function(){
//读取链接参数
function getUrlParam(name, link){
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var search;
if (link) {search = link.substr(link.indexOf("?"),link.length);}
else { search = window.location.search;}
var r = search.substr(1).match(reg);
if (r != null)
return decodeURI(r[2]);
return null;
}
//给任务名和任务处理人默认值
if ($('input[name="name"]').val() == "") {
$('input[name="name"]').val(getUrlParam('name'));
}
if(getUrlParam('resourcename')) {
showDefault(getUrlParam('resourcename'));
}
// 默认需要回复
$('input[name="type"]').trigger('click');
// 输入框右侧图标点击使输入框获得焦点
$('.weui_cell_input .weui_cell_ft').on('click', function(){
$('input', $(this).parent()).trigger('focus');
});
// 已选择指定人的容器
var checkedUsers = [];
// Loading框,封装了show 和 hide 方法
var Loading = function(){
var loading = $('#loadingToast');
return {
show: function(){loading.css('display', 'block')},
hide: function(){loading.css('display', 'none')}
};
}();
//系统默认时间
Date.prototype.Format = function (fmt) { //author: meizz
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
// dialog对话框
var dialog = function(title, content, footer, fn){
$('#dialog .weui_dialog .weui_dialog_title').text(title);
$('#dialog .weui_dialog .weui_dialog_bd').text(content);
if(footer) {// 如果传了按钮字符,设置按钮字符
$('#dialog .weui_dialog .primary').text(footer);
}
$('#dialog .weui_dialog .weui_dialog_ft').on('click', function() {
$('#dialog').css('display', 'none');
if(fn) {// 如果传了回调函数,调用回调函数
fn.call(null);
}
});
$('#dialog').css('display', 'block');
};
// 检验用户是否已经被选中,未被选中返回-1,选中返回index
function checked(em) {
var r = -1;
$.each(checkedUsers, function(k, v) {
if(v.em_code == em.em_code) {
r = k;
return r;
}
});
return r;
};
// 打开指定人的页面
function openUserTab(){
$('#userTab').addClass('open');
//初始化数据
var rootData = [];
//节点层级数 最多10层
var leafNumber = ['containerFirst','containerTwo','containerThree','containerFour','containerFive','containerSix','containerSeven','containerEight','containerNine','containerTen']
var parentEle = 'containerFirst';
function spanNumConvert(num) {
var str = num.slice(0,num.indexOf('span'));
var lenfNum = 'container' + str.replace(/(^|\s+)\w/g,function(s){return s.toUpperCase();});
return lenfNum;
}
function StrConvert(str){
switch(str)
{
case 'First':
return 'twospan';
break;
case 'Two':
return 'threespan';
break;
case 'Three':
return 'fourspan';
break;
case 'Four':
return 'fivespan';
break;
case 'Five':
return 'sixspan';
break;
case 'Six':
return 'sevenspan';
break;
case 'Seven':
return 'eightspan';
break;
case 'Eight':
return 'ninespan';
break;
case 'Nine':
return 'tenspan';
break;
default:
return str;
break;
}
}
function NumConvert(str) {
switch(str)
{
case 'containerFirst':
return 1;
break;
case 'containerTwo':
return 2;
break;
case 'containerThree':
return 3;
break;
case 'containerFour':
return 4;
break;
case 'containerFive':
return 5;
break;
case 'containerSix':
return 6;
break;
case 'containerSeven':
return 7;
break;
case 'containerEight':
return 8;
break;
case 'containerNine':
return 9;
break;
default:
return str;
break;
}
}
var leafInfo = {
or_id: null,
page: 1,
pageSize: 100
};
//查看根节点
function getRoot(str) {
$('#userTab .firstdepto .'+ str +' .uas-seft').on('click', function(e) {
parentEle = $(this).parent('div').attr('class');
$('.'+ parentEle).css('display', 'none');
$('#userTab .uas span').removeClass('active');
var v_id = $(this).attr('id');
var hrorg = {};
//第几层数据
var num = NumConvert(str);
if(rootData[num-1].hasOwnProperty('hrorgs')) {
$.each(rootData[num-1].hrorgs, function(k, v){
if(v.or_code == v_id) {
hrorg = v;
}
});
}
// 获取对应层级
var spanNumber = StrConvert(parentEle.substr(9));
var parentNumber = parentEle.substr(9).toLowerCase() + "span"
var html = ''+ hrorg.or_name +'';
$('#userTab .uas #' + parentNumber).next('span').remove();
$(html).insertAfter('#userTab .uas #' + parentNumber);
leafInfo.or_id = hrorg.or_id;
getLeaf(parentEle);
$('#userTab .uas #' + spanNumber).on('click', function(event) {
$('#' + spanNumber).addClass('active');
$('.'+ spanNumConvert(spanNumber)).css('display', 'block');
if($(this).next('span').length >= 1) {
rootData.splice(NumConvert(spanNumConvert(spanNumber)),rootData.length);
}
while($('.' + spanNumConvert(spanNumber)).next('div') && $('.' + spanNumConvert(spanNumber)).next('div').length != 0) {
$('.' + spanNumConvert(spanNumber)).next('div').remove();
}
while($(this).next('span') && $(this).next('span').length != 0) {
$(this).next('span').remove();
}
event.stopPropagation(); // 阻止事件冒泡
});
});
}
//查询叶子节点目录
function getLeaf(str) {
function getNextContainer(str) {
for (var i=0;i<=leafNumber.length;i++) {
if(leafNumber[i] == str){
return leafNumber[i+1];
}
}
}
Loading.show();
$.ajax({
url: 'mobile/getLeafHrorg.action',
type: 'GET',
data: leafInfo,
success: function(data) {
if(data.hrorgs.length == 0 && data.employees.length == 0) {
dialog('提示', '未查询到数据,请返回上一层');
}
if(rootData.length == NumConvert(str)) {
rootData.push(data);
}
var nextContainer = getNextContainer(str);
var htmlTwo = '
';
$('#userTab .firstdepto').append(htmlTwo);
$.each(data.hrorgs,function(k,v) {
if(data.hrorgs.length == k+1) {
var html3 = '' +
'' +
'

' +
'
' +
''+ v.or_name +
'
' +
'';
}else {
var html3 = '' +
'' +
'

' +
'
' +
''+ v.or_name +
'
' +
' ';
}
$('#userTab .firstdepto .' + nextContainer).append(html3);
})
if(data.hasOwnProperty('employees')) {
$('#userTab .firstdepto .' + nextContainer).append('')
var html = '';
$.each(data.employees, function(k, v){
html += userLabel(v);// 增加一个指定人选中项
});
$('#userTab .firstdepto .' + nextContainer +' .weui_cells_checkbox').append(html);
// 绑定点击列表添加到指定人的事件
$('#userTab .firstdepto .' + nextContainer +' .userLabel input').on('change', function(e){
var em_name = $('.em_name', $(this).parent().parent()).text();// 用户编号
var em_code = $(this).attr('name');// 用户名
checkUserName({em_code: em_code, em_name: em_name});// 改变已选择的人
});
}
Loading.hide();
getRoot(nextContainer);
},
error: function(data){
Loading.hide();// 关闭加载框
dialog('系统错误', '任务添加失败,请联系系统管理员');
}
})
}
//查询顶级目录
Loading.show();
$.ajax({
url: 'mobile/getRootHrorg.action',
type: 'POST',
data: {master: 'UAS'},
success: function(data){
if (!$('#userTab .firstdepto div').hasClass('containerFirst')) {
var htmlFirst = '';
$('#userTab .firstdepto').append(htmlFirst);
$.each(data.hrorgs, function(k, v){
if(data.hrorgs.length == k+1) {
var html2 = '' +
'' +
'

' +
'
' +
''+ v.or_name +
'
' +
'';
} else {
var html2 = '' +
'' +
'

' +
'
' +
''+ v.or_name +
'
' +
'';
}
$('#userTab .firstdepto .containerFirst').append(html2);
});
if(data.hasOwnProperty('employees')) {
$('#userTab .firstdepto .containerFirst').append('')
var html = '';
$.each(data.employees, function(k, v){
html += userLabel(v);// 增加一个指定人选中项
});
$('#userTab .firstdepto .containerFirst .weui_cells_checkbox').append(html);
// 绑定点击列表添加到指定人的事件
$('#userTab .firstdepto .containerFirst .userLabel input').on('change', function(e){
var em_name = $('.em_name', $(this).parent().parent()).text();// 用户编号
var em_code = $(this).attr('name');// 用户名
checkUserName({em_code: em_code, em_name: em_name});// 改变已选择的人
});
}
if(rootData.length == 0) {
rootData.push(data);
}
getRoot('containerFirst');
$('#userTab .uas #firstspan').on('click', function(event) {
if(rootData.length > 0) {
rootData.splice(1,rootData.length);
}
$('#firstspan').addClass('active');
$('.containerFirst').css('display', 'block');
$('.containerFirst').siblings('div').remove();
while($(this).next('span') && $(this).next('span').length != 0){
$(this).next('span').remove();
}
event.stopPropagation(); // 阻止事件冒泡
});
Loading.hide();// 关闭加载框
}else {
Loading.hide();// 关闭加载框
}
},
error: function(data){
Loading.hide();// 关闭加载框
dialog('系统错误', '任务添加失败,请联系系统管理员');
}
})
};
// 关闭指定人的页面
function closeUserTab() {
$('#userTab').removeClass('open');
};
$('.openUserTab').on('click', openUserTab);
$('.closeUserTab').on('click', closeUserTab);
// 将用户转化为指定人选中Lebel
function userLabel(em) {
var em_position = em.em_position ? '[' + em.em_position + ']': '';
var em_name = em.em_name;
var em_code = em.em_code;
var em_checked = checked(em);// 是否已经选择了
var html = '';
return html;
};
// 将已选择的人转化为展示的按钮
function addUserButtonName(em) {
var html = ' ';
$('.checkedUsers .weui_cell_bd').append(html);
// 绑定点击按钮删除的事件
$('button[title="' + em.em_code + '"]').on('click', function(){
var inputs = $('.firstdepto input[name="' + $(this).attr('title') + '"]');
if(inputs.length > 0) {
inputs.trigger('click');
} else {
checkUserName({em_code: em.em_code, em_name: em.em_name});// 改变已选择的人
}
});
};
// 点击一个用户选择,添加或删除指定人
function checkUserName(em){
var i = checked(em);
if(i != -1) {// 已选择的,去掉
checkedUsers.splice(i, 1);
$('.checkedUsers .weui_cell_bd button[title="' + em.em_code + '"]').remove()
} else {// 未选择的,添加
checkedUsers.push(em);
addUserButtonName(em);
}
$('.checkedSize').text(checkedUsers.length);
};
// 将已选择的人转化为展示的按钮
function addUserButton(em) {
var html = ' ';
$('.checkedUsers .weui_cell_bd').append(html);
// 绑定点击按钮删除的事件
$('button[title="' + em.em_code + '"]').on('click', function(){
$('#searchResult input[name="' + $(this).attr('title') + '"]').trigger('click');
});
};
// 点击一个用户选择,添加或删除指定人
function checkUser(em){
var i = checked(em);
if(i != -1) {// 已选择的,去掉
checkedUsers.splice(i, 1);
$('.checkedUsers .weui_cell_bd button[title="' + em.em_code + '"]').remove()
} else {// 未选择的,添加
checkedUsers.push(em);
addUserButton(em);
}
$('.checkedSize').text(checkedUsers.length);
};
// 根据关键词查询用户结果
function showDefault(resourcename) {
var keyword = resourcename;
try {
$.ajax({
url: 'hr/employee/getEmployees.action',
type: 'POST',
data: {condition: "em_name like '%" + keyword + "%' and nvl(em_class,' ')<>'离职'"},
success: function(data, status) {
if(data.success) {
var html = '';
$.each(data.employees, function(k, v){
html += userLabel(v);// 增加一个指定人选中项
});
$('#searchResult .weui_cells_checkbox').html(html);
$('#searchResult .weui_cells_title').text('共找到' + data.employees.length + '个可选的指定人');
checkUser({em_code: data.employees[0].em_code, em_name: data.employees[0].em_name});
$('.userLabel input').attr('checked', 'checked');
// 绑定点击列表添加到指定人的事件
$('.userLabel input').on('change', function(e){
var em_name = $('.em_name', $(this).parent().parent()).text();// 用户编号
var em_code = $(this).attr('name');// 用户名
checkUser({em_code: em_code, em_name: em_name});// 改变已选择的人
});
}
Loading.hide();
},
error: function(xhr) {
Loading.hide();
if(xhr.response) {
var response = $.parseJSON(xhr.response);
if(response.exceptionInfo == 'ERR_NETWORK_SESSIONOUT') {
dialog('提示', '您还未登录,请先登录');
} else {
dialog('错误', response.exceptionInfo);
}
}
}
});
} catch(error) {
Loading.hide();
document.write(error.name + ' | ' + error.message);
}
};
// 根据关键词查询用户结果
function search() {
var keyword = $('#search_input').val();
if(!keyword) {// 没有输入关键词
dialog('提示', '未指定关键词,点击确定重新加载界面');
$('#searchResult .weui_cells_checkbox>label').remove();
return;
}
Loading.show();
try {
$.ajax({
url: 'hr/employee/getEmployees.action',
type: 'POST',
data: {condition: "em_name like '%" + keyword + "%' and nvl(em_class,' ')<>'离职'"},
success: function(data, status) {
if(data.success) {
var html = '';
$.each(data.employees, function(k, v){
html += userLabel(v);// 增加一个指定人选中项
});
$('#searchResult .weui_cells_checkbox').html(html);
$('#searchResult .weui_cells_title').text('共找到' + data.employees.length + '个可选的指定人');
// 绑定点击列表添加到指定人的事件
$('.userLabel input').on('change', function(e){
var em_name = $('.em_name', $(this).parent().parent()).text();// 用户编号
var em_code = $(this).attr('name');// 用户名
checkUser({em_code: em_code, em_name: em_name});// 改变已选择的人
});
}
Loading.hide();
},
error: function(xhr) {
Loading.hide();
if(xhr.response) {
var response = $.parseJSON(xhr.response);
if(response.exceptionInfo == 'ERR_NETWORK_SESSIONOUT') {
dialog('提示', '您还未登录,请先登录');
} else {
dialog('错误', response.exceptionInfo);
}
}
}
});
} catch(error) {
Loading.hide();
document.write(error.name + ' | ' + error.message);
}
};
// 成功提示
function showSuccess(form) {
$('#successPage .msg_title').text(form.name);
$('#successPage .msg_startdate').text(form.startdate);
$('#successPage .msg_continuetime').text(form.duration);
$('#successPage .msg_resourcename').text(form.resourcename);
if(form.type) {
$('#successPage .msg_type').text('需要');
} else {
$('#successPage .msg_type').text('不需要');
}
$('#successPage').css('display', 'block');
}
// 搜索框图标点击事件
$('#search_icon').on('click' , search);
//给开始时间默认值
if($('input[name="startdate"]').val() == "") {
$('input[name="startdate"]').val(new Date().Format("yyyy-MM-ddThh:mm"));
}
// 确定按钮事件
$('#commit').on('click', function(){
var form = {
name: $('input[name="name"]').val(),
duration: $('input[name="continuetime"]').val(),
startdate: $('input[name="startdate"]').val().replace('T', ' ').substring(0, 16) + ':00',
description: $('textarea[name="description"]').val()
};
// 是否需要回复
if($('input[name="type"]').attr('checked')) {
form.type = 1;
} else {
form.type = 0;
}
// 处理人
form.resourcename = '';
$.each(checkedUsers, function(k, v){
if(form.resourcename) form.resourcename += ',';
form.resourcename += v.em_name;
});
if(!form.name) {
dialog('提示', '任务名称未输入');
return;
}
if(form.startdate.length != 19) {
dialog('提示', '开始日期未输入');
return;
}
if(!form.resourcename) {
dialog('提示', '您还未指定任务处理人');
return;
}
if(!form.description) {
dialog('提示', '任务描述未输入');
return;
}
Loading.show();// 显示加载框
// 提交请求
$.ajax({
url: 'plm/task/addbilltask.action',
type: 'POST',
data: {formStore: JSON.stringify(form)},
success: function(data){
Loading.hide();// 关闭加载框
showSuccess(form);
},
error: function(data){
Loading.hide();// 关闭加载框
dialog('系统错误', '任务添加失败,请联系系统管理员');
}
});
});
});